Java 当循环跳过if语句时?
这是一个运行康威生命模拟游戏的程序。 主要方法如下:Java 当循环跳过if语句时?,java,if-statement,while-loop,Java,If Statement,While Loop,这是一个运行康威生命模拟游戏的程序。 主要方法如下: public static void main(String Args[]) { int x = 0; int y = 0; boolean cellState[][] = new boolean[][]{}; boolean newCellState[][] = new boolean[][]{}; String answer; Scanner input = new Scanner(Syst
public static void main(String Args[]) {
int x = 0;
int y = 0;
boolean cellState[][] = new boolean[][]{};
boolean newCellState[][] = new boolean[][]{};
String answer;
Scanner input = new Scanner(System.in);
while (true) {
System.out.print("\n Type anything for next generation, 'new' for new grid, or 'stop' to end>> ");
answer = input.nextLine();
if (answer == "new") {
cellState = newCells(cellState);
} else if (answer == "stop") {
break;
} else {
System.out.println("Not an option yet");
}
}
}
无论输入什么答案,它都将跳过if语句并返回到循环的开头
据我所知,它与语句的实际内容无关,但可能与布尔表达式有关。您应该使用它来比较字符串,而不是=
=
用于检查对象引用,而.equals()
用于检查字符串的值。
使用:if(answer.equals(“new”)
并且你应该是金色的。
这一点已经解释得非常透彻。字符串也可以与==进行比较,只要它们是内部化的。用双引号初始化的字符串已内部化
所以,在你的情况下,你可以这样做
answer=input.nextLine().intern()代码>我建议这样做:
if ("new".equals(answer)) {
cellState = newCells(cellState);
} else if ("stop".equals(answer)) {
break;
} else {
System.out.println("Not an option yet");
}
由于字符串在java中是不可变的,这是否意味着input.nextLine()
创建了一个新的String
对象,该对象与“new”或“stop”字符串对象的引用不同?input.nextLine()返回一个字符串对象,该对象与字符串文本“new”或“stop”的引用不同,而这将起作用,如果不知道其中的含义,我建议不要使用此选项。理想情况下,在任何对象上都应该使用equals进行比较。我是说字符串有一个特例,它可以与==进行比较,因为java维护了一个用于性能改进的值表。Eclipse999,如果答案解决了您的问题,请单击旁边的绿色复选标记接受它。非常感谢。