system.out.println()

f3temu5u  于 2021-07-08  发布在  Java
关注(0)|答案(1)|浏览(331)

这个问题在这里已经有答案了

如何在java中以scanner方法hasnext为条件跳出while循环(9个答案)
上个月关门了。

import java.util.Scanner;
public class testFixedCapacityStack {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        FixedCapacityStack<String> s;
        s = new FixedCapacityStack<String>(100);

       while(sc.hasNext()) {

           String item = sc.next();
           if(!item.equals("-")) {
               s.push(item);
           } else if (!s.isEmpty()) {
               System.out.print(s.pop() + " ");
           }
       }
        System.out.println(s.size());
    }

}

我不知道为什么最后一行没有被执行。有人请指出我哪里做错了。谢谢您。

odopli94

odopli941#

您的代码请求一个新字符串作为输入,如果它不是空的,则继续循环。这使你的while循环成为一个永无止境的循环。这就是最后一行没有执行的原因。可以在循环中为退出字符串插入if语句。

import java.util.Scanner;
public class testFixedCapacityStack {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        FixedCapacityStack<String> s;
        s = new FixedCapacityStack<String>(100);

       while(sc.hasNext()) {

           String item = sc.next();
           if(item.equals("/")) {
               break;
           }
           if(!item.equals("-")) {
               s.push(item);
           } else if (!s.isEmpty()) {
               System.out.print(s.pop() + " ");
           }
       }
        System.out.println(s.size());
    }

}

现在,当您输入值“/”作为输入时,它将退出while循环,最后一行将执行。

相关问题