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

Java:空时停止输入

Java:空时停止输入

慕村9548890 2022-01-06 17:53:12
在我的程序中,我正在读取数字和符号,直到用户给我们空行。编辑:基本上程序应该模拟从堆栈(10 个元素的数组)中添加/删除数字,并且有两个基本操作(添加:+ 并在下一行中添加一个数字并起飞:对于每个成功添加的数字程序应该打印:)是不可能的(超出数组范围)打印::(并且为了可能的删除打印数字;(如下)*SAMPLE:*INPUT:+1+2+3+4+5+6+7+8+9+0+1-----------OUTPUT::):):):):):):):):):):(0987654321:(import java.util.*;public class Zadanie3 {public static void main(String[] args) {    // TODO Auto-generated method stub     Scanner input = new Scanner(System.in);     String znak;          char helper;     int stack[]=new int[10];          int i =-1;     List<String> outcome = new ArrayList<>();             while (input.hasNext()){            znak=input.nextLine();        if(znak.isEmpty()){            break;        }                if(znak.charAt(0)=='+' && i<9){            znak=input.nextLine();            if(znak.isEmpty()){                break;            }        i++;        stack[i]=Integer.parseInt(znak);        outcome.add(":)");                }else if(znak.charAt(0)=='-' && i>=0 && i<=9){        outcome.add(String.valueOf(stack[i]));        i--;        }        else{            outcome.add(":(");                    }        znak=input.nextLine();                if(znak.isEmpty()){            break;        }                if(znak.charAt(0)=='+' && i<9){            znak=input.nextLine();            if(znak.isEmpty()){                break;            }        i++;        stack[i]=Integer.parseInt(znak);        outcome.add(":)");                }else if(znak.charAt(0)=='-' && i>=0 && i<=9){        outcome.add(String.valueOf(stack[i]));                i--;                }                else{            outcome.add(":(");        }                }              for(String s: outcome) {        System.out.println(s);    }                                    }}输入空行后仍然没有停止 - 我试过在 while 和 if 中使用 input.isEmpty() 但它也不起作用。我给了一些空白空间。从 while 中删除 hasNext() 并用 isEmpty() 替换它,Equals() 给出了相同的结果。)
查看完整描述

2 回答

?
蓝山帝景

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

使小的工作示例考虑


Scanner input = new Scanner(System.in);


    while (input.hasNextLine()){   // test for new input


       String znak=input.nextLine();  // get input

       if(znak.isEmpty()){      // see if empty

           break;

       }           

       System.out.println(znak);

    }


查看完整回答
反对 回复 2022-01-06
?
慕慕森

TA贡献1856条经验 获得超17个赞

从更改代码if(znak.equals(""))到if(znak.isEmpty())内循环的同时在多个地方,从循环,取消条件打破&& !input.equals("")在while循环中,我不认为这是有道理有这个条件。


试试下面


import java.util.*;

public class Zadanie3 {

public static void main(String[] args) {

        // TODO Auto-generated method stub

         Scanner input = new Scanner(System.in);

         String znak = input.nextLine();

         if(znak.isEmpty()){                               

                System.exit(0);                     

            }

         char helper;

         int stack[]=new int[10];


         int i =-1;

         List<String> outcome = new ArrayList<>();



        while (input.hasNext() ){


            znak=input.nextLine();

            if(znak.isEmpty()){

                break;

            }


            if(znak.charAt(0)=='+' && i<9){

                znak=input.nextLine();

            if(znak.isEmpty()){

                break;

            }

            i++;

            stack[i]=Integer.parseInt(znak);

            outcome.add(":)");


            }else if(znak.charAt(0)=='-' && i>=0 && i<=9){

            outcome.add(String.valueOf(stack[i]));

            i--;

            }

            else{

                outcome.add(":(");


            }

            znak=input.nextLine();


            if(znak.isEmpty()){

                break;

            }


            if(znak.charAt(0)=='+' && i<9){

                znak=input.nextLine();

            if(znak.isEmpty()){

                break;

            }

            i++;

            stack[i]=Integer.parseInt(znak);

            outcome.add(":)");


            }else if(znak.charAt(0)=='-' && i>=0 && i<=9){

            outcome.add(String.valueOf(stack[i]));


            i--;


            }


            else{

                outcome.add(":(");

            }


            }



        for(String s: outcome) {

            System.out.println(s);

        }




    }


}


查看完整回答
反对 回复 2022-01-06
  • 2 回答
  • 0 关注
  • 292 浏览

添加回答

举报

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