为了账号安全,请及时绑定邮箱和手机立即绑定

结束 while 循环条件

结束 while 循环条件

守着星空守着你 2021-12-18 15:39:33
我正在尝试制作一个简单的程序,它使用扫描仪进行输入,并有一个 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 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

你应该nextLine改用


while (scan.hasNextLine()) {

    String nextInput = scan.nextLine();

    stack.push(nextInput );

    if (nextInput.equals(" ")) {

        break;

    }

}


查看完整回答
反对 回复 2021-12-18
?
慕沐林林

TA贡献2016条经验 获得超9个赞

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。


查看完整回答
反对 回复 2021-12-18
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

你在做,


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



 }

}


查看完整回答
反对 回复 2021-12-18
  • 3 回答
  • 0 关注
  • 350 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信