gpt4 book ai didi

java - 循环内变量的初始化

转载 作者:行者123 更新时间:2023-12-01 22:11:49 25 4
gpt4 key购买 nike

class Spaces {
public static void main(String args[])
throws java.io.IOException{

char ch;
int space = 0;

do {

ch = (char) System.in.read();
if (ch == ' ') space++;

} while (ch != '.'); //Stop if fullstop is provided

System.out.println("No. of spaces: " + space);
}

上面的以下代码是完全正确的,并且正在执行其预期的操作。(读取字符直到按下句点,然后告诉用户已输入了多少个空格)。尽管如果我在 do-while 循环之外初始化变量,如以下代码所示:

class Spaces {
public static void main(String args[])
throws java.io.IOException{

char ch = (char) System.in.read();
int space = 0;

do {

if (ch == ' ') space++;

} while (ch != '.'); //Stop if fullstop is provided

System.out.println("No. of spaces: " + space);
}

程序拒绝停止。当我输入句号时,程序并没有停止。我确实知道在循环内声明变量意味着它在循环外的其他地方不可用。但是在循环外部声明的变量(如第二组代码中)应该在循环和其他地方工作。所以我不明白为什么第二组代码无效(程序运行,没有编译错误,但是当输入句号时它继续运行)。

我也知道与这里提出的问题相比,这是一个非常基本的问题。但老实说我找不到答案。预先感谢您。

最佳答案

第二个程序不起作用,因为您只接受一次输入,并且由于 ch != '.' 的值始终为 true,因此循环永远不会停止。您应该将 System.in.read() 放在循环内,以便在每次迭代中,程序都会停止以等待用户输入,将其与条件进行比较,然后决定是否应该进行下一次迭代是否执行。

关于java - 循环内变量的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31682150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com