[英]ending a while loop condition
我正在嘗試制作一個簡單的程序,該程序使用掃描儀進行輸入,並有一個while循環,該循環繼續接受輸入,直到輸入結束字符為止。 我希望掃描儀接受輸入並將字符串添加到堆棧列表中。 我試圖弄清楚為什么在鍵入空格時此代碼不會終止while循環。
import java.util.Scanner;
public class ReverseString<E> {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Stack<String> stack = new Stack();
//while(scan.hasNext() && !stack.equals(" ")){
// while(!scan.nextLine().equals("")){
while (scan.hasNext()) {
stack.push(scan.next());
if (scan.equals(" ")) {
break;
}
}
System.out.print(stack.pop() + " ");
}
}
while (scan.hasNext()) {
stack.push(scan.next());
if (scan.equals(" ")) {
break;
}
}
改成
while (scan.hasNextLine()) {
String value = scan.nextLine();
if (" ".equals(value)) {
break;
}
stack.push(value);
}
scan是一個Scanner,它不是String, scan.equals(" ")
始終返回false。
您應該改用nextLine
while (scan.hasNextLine()) {
String nextInput = scan.nextLine();
stack.push(nextInput );
if (nextInput.equals(" ")) {
break;
}
}
你在做,
if (scan.equals(" ")) {
break;
}
這意味着您正在將“掃描程序”對象scan
與一個空間進行比較。 請嘗試執行以下操作(您必須將scan.next()與空格進行比較):
import java.util.Scanner;
public class ReverseString<E> {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
Stack<String> stack = new Stack();
//while(scan.hasNext() && !stack.equals(" ")){
// while(!scan.nextLine().equals("")){
while (scan.hasNext()) {
String nextInput = scan.next();
stack.push(nextInput );
if (nextInput.equals(" ")) {
break;
}
}
System.out.print(stack.pop() + " ");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.