结束while循环条件

时间:2018-10-30 02:44:46

标签: java while-loop java.util.scanner

我正在尝试制作一个简单的程序,该程序使用扫描仪进行输入,并具有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() + " ");


 }
}

3 个答案:

答案 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() + " ");


 }
}