扫描程序和java中的循环问题

时间:2015-08-06 11:32:27

标签: java

我一直在尝试创建一个程序,现在我在java中遇到了Scanner的问题,因为在程序中用户可以输入一个String并按Enter键输入它,如果用户输入“exit”,那么扫描仪将关闭,循环停止,但它只适用于第一个输入并且每次都输出一条黑线,如果你输入exit,它会写出退出但是继续。

这是一个代码snippit:

    public static void main(String[] args) {
    int i = 0;
    Scanner input = new Scanner(System.in);
    while(input.hasNext() && i<1){  
        System.out.println(input.nextLine());
        if(input.nextLine() == "exit"){
            i++;
        }
    }
    input.close();
}

2 个答案:

答案 0 :(得分:0)

这有效

public static void main(String[] args) {
    int i = 0;
    Scanner input = new Scanner(System.in);
    while(input.hasNext() && i<1){  
        String nextLine = input.nextLine();
        System.out.println(nextLine);
        if(nextLine.equals("exit")){
            i++;
        }
    }
    input.close();
}

问题是你首先做了System.out.println(input.nextLIne())然后在你的if语句中再次做了(因此读取下两行而不是一行)。

当输入“exit”时,循环没有停止,因为您要将字符串与==进行比较,您必须使用equals方法比较字符串。

答案 1 :(得分:0)

我会说使用break代替i++,因此在您退出后不会等到下一个输入。

public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    String s;
    while (input.hasNext()) {
        s = input.nextLine(); // input.nextLine(); read single line once.
                              // So you need to assign it to some variable so that you can use it in your if condition.
        System.out.println(s);

        if (s.equals("exit")) { // use equals instead of == also use variable
            break; // so it will not wait for next input to check in while condition hasNext.
        }
    }
    input.close();
}