我想采用以下格式输入:-prize 45

这是我的代码

static double prize_input(String list[]) throws IOException{
    boolean flag=false;
    double p=0;
    while(true){
        if(list.length!=2 || ( list[0].compareTo("-prize")!=0 ) ){
            System.out.println("usage: -prize <Itemprize>");
            flag=true;
        }
        else
        {
                try{
                    p=Double.parseDouble(list[1]);
                    flag=false;
                }
                catch(Exception e){
                    flag=true;
                }
        }
        if(!flag)
            return p;
        else
            list=br.readLine().split(" ");
    }
  }


当我输入:-prize abc其中第二个参数也是一个字符串时,它提示我输入用户的另一个回车键,而不显示适当的消息。请告诉我我想念的东西以及应该如何纠正。

最佳答案

仅当此条件失败时,才会打印usage: -prize <Itemprize>

if (list.length != 2 || (list[0].compareTo("-prize") != 0))


所以只有


用户未提供两个元素,
如果第一个元素不是-prize


由于对于-price aaa都满足两个条件,因此用户将看不到此信息,但是在解析第二个参数失败时,表示数据正确性的flag将设置为false

else
    list = br.readLine().split(" ");


程序将等待新的数据表格

为了改善用户体验,您应该在从用户读取新数据之前立即打印使用情况信息,因此请尝试移动行

System.out.println("usage: -prize <Itemprize>");


就在br.readLine()之前

else{
    System.out.println("usage: -prize <Itemprize>");
    list = br.readLine().split(" ");
}

09-11 17:49