程序在if语句之前终止

时间:2014-02-12 03:18:43

标签: java

我在此程序中初始化if语句时遇到问题。程序在每次运行if语句之前终止。谁能告诉我究竟是什么问题?

import java.util.Scanner;

public class attempt1 {

    public static void main (String [] args) {
        Scanner console = new Scanner(System.in);
        String userInput;
        boolean done=false;
        System.out.println("say something");
        userInput=console.nextLine();

        if (userInput.equals("stop")) {
            done=true;
        }
        while(done=false) {
            System.out.println("it worked!");
        }
    }
}

6 个答案:

答案 0 :(得分:7)

我想你想要这样的东西:

public static void main (String [] args) {
    Scanner console = new Scanner(System.in);
    String userInput;
    boolean done=false;

    while(done==false) {
        System.out.println("say something");
        userInput=console.nextLine();
        if (userInput.equals("stop")) {
        done=true;
    }

    }
     System.out.println("it worked!");
}

此代码要求用户继续说些什么,直到他们说停止在哪一点打印出来“它有效!”

每次拨打userInput=console.nextLine();时,程序都会等待你的输入。它没有终止,只是在等待输入。

此外,您希望在比较时使用==。 ==比较值= =分配

答案 1 :(得分:1)

而不是这个构造

    if (userInput.equals("stop")) {
        done=true;
    }
    while(done=false) {
        System.out.println("it worked!");
    }

我想你想说:

    done = userInput.equals("stop")
    if (!done) {
        System.out.println("it worked!");
    }

我不确定while的目的是什么,但你肯定不想在这种情况下使用循环。

答案 2 :(得分:1)

在这里使用do-while,会更容易:

Scanner console = new Scanner(System.in);
String userInput;
do {
    System.out.println("say something");
    userInput=console.nextLine();
    if(userInput.equals("stop"))
        break;
} while(console.hasNextLine());

答案 3 :(得分:0)

您正在使用扫描仪。如果用户没有输入任何数据,该程序将无法运行。尝试使用预设字符串或int或您需要的任何内容运行它。代码看起来很好

答案 4 :(得分:0)

我在这里看到了几个问题。

你确定有下一行吗?可以肯定:

System.out.println(console.hasNextLine())

另外,你的布尔值不正确。请记住,单个'='是一个赋值,'=='表示“等于”。

答案 5 :(得分:-1)

你有一个无限循环。

while(done=false) {
System.out.println("it worked!");
}

这会导致程序崩溃。只需将while(done = false)更改为“else if(!done)”。