【问题标题】:ending a while loop condition结束一个while循环条件
【发布时间】:2018-10-30 02:44:45
【问题描述】:

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


 }
}

【问题讨论】:

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


【解决方案1】:

你应该改用nextLine

while (scan.hasNextLine()) {
    String nextInput = scan.nextLine();
    stack.push(nextInput );
    if (nextInput.equals(" ")) {
        break;
    }
}

【讨论】:

  • 这行得通。我尝试了其他方法,但它们都不起作用。
  • 我投了赞成票。我不知道为什么,但以前有人出于某种原因对它投了反对票。接受为正确答案谢谢。
【解决方案2】:
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。

【讨论】:

【解决方案3】:

你在做,

if (scan.equals(" ")) {
    break;
}

这意味着您将 Scanner 对象 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() + " ");


 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2012-12-23
    • 1970-01-01
    相关资源
    最近更新 更多