我一直在尝试创建一个程序,现在我在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();
}
答案 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();
}