我正在尝试制作一个简单的程序,该程序使用扫描仪进行输入,并具有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() + " ");
}
}
答案 0 :(得分:0)
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是一个扫描程序,它不是字符串,scan.equals(" ")
始终返回false。
答案 1 :(得分:0)
您应该改用nextLine
while (scan.hasNextLine()) {
String nextInput = scan.nextLine();
stack.push(nextInput );
if (nextInput.equals(" ")) {
break;
}
}
答案 2 :(得分:-1)
您正在做
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() + " ");
}
}