while循环跳过if语句?

时间:2016-01-17 18:28:54

标签: java if-statement while-loop

这是一个运行Conways Game of Life模拟的程序。 主要方法是:

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语句并返回循环的开头。

据我所知,它与语句的实际内容无关,但它可能与布尔表达式有关。

3 个答案:

答案 0 :(得分:3)

您应该使用.equals()来比较<而不是[someFaceThingy doSomethingHere:@"/path/user/bobdobbs" completionHandler:^(NSDictionary *results, NSError *error ){ if (!results) { .... process error and return ....} ... process results ... dispatch_async(dispatch_get_main_queue(), ^{ ... apply results to table view ... }); }]; ... don't process anything here because there'll be nothing to process ... Strings用于检查对象引用,==检查==值 使用:.equals()你应该是金色的 已经非常彻底地解释了here

答案 1 :(得分:0)

字符串也可以与==进行比较,只要它们是内化的。用双引号初始化的字符串已经内化。

所以,在你的情况下,你可以做到这一点。

answer = input.nextLine().intern();

答案 2 :(得分:0)

我建议这样做:

if ("new".equals(answer)) {
   cellState = newCells(cellState);
} else if ("stop".equals(answer)) {
   break;
} else {
   System.out.println("Not an option yet");
}