[英]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
,其中第二個參數也是一個字符串,它提示我從用戶輸入另一個輸入鍵,而不是顯示相應的消息。 請告訴我我錯過了什么,我應該如何糾正它。
當你正在接受(true)作為一個循環條件時,你的條件就是你的狀態,並且你正在接受一個輸入,其中循環將永遠存在,並且緩沖讀取器等待下一行被分割。
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(" ");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.