使用 bufferedreader 获取输入
Taking input using bufferedreader
我想接受以下格式的输入:-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
其中第二个参数也是一个字符串时,它会提示我输入另一个来自用户的输入键,而不是显示相应的消息。请告诉我我遗漏了什么以及我应该如何更正它。
你的条件很糟糕,因为你将 while(true) 作为循环条件,而且你正在接受一个输入,循环将永远持续下去,缓冲区 reader 等待下一行分裂。
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(" ");
}
我想接受以下格式的输入:-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
其中第二个参数也是一个字符串时,它会提示我输入另一个来自用户的输入键,而不是显示相应的消息。请告诉我我遗漏了什么以及我应该如何更正它。
你的条件很糟糕,因为你将 while(true) 作为循环条件,而且你正在接受一个输入,循环将永远持续下去,缓冲区 reader 等待下一行分裂。
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(" ");
}