2013-07-09 58 views
0

我在遇到以下程序時遇到問題。我希望輸入的形式爲「value」後跟一個double值,如果輸入不是這種形式,我想返回一條錯誤消息。基本上,我想檢查第一個單詞是「價值」(如果不是,返回「假」),那麼我想檢查是否有另一個令牌,並且這個令牌是雙精度(如果不是這樣,返回假)。但是,我遇到了麻煩,因爲如果我只是輸入「value」作爲輸入,程序只是等待我輸入另一個標記,而不是返回「預期值」。就像我想要的那樣。下面的代碼:Java - 如何掃描令牌並在令牌存在後檢查該令牌並且是雙倍令牌

import java.util.Scanner; 
public class scanCheck { 
    public static void main(String[] args) { 

Scanner kb = new Scanner(System.in); 
double a; 
String str; 

str = kb.next(); 
if (!str.equals("value")) 
    System.out.print("Invalid format."); 
else { 
    if (kb.hasNext()) 
     if (kb.hasNextDouble()) 
      a = kb.nextDouble(); 
     else 
      System.out.println("Value expected."); 
    else 
     System.out.println("Value expected."); 
    } 
    } 
} 

謝謝!

回答

1

由於您正在等待用戶命令,kb.hasNext()永遠不會真正計算爲false。所以這段代碼正在按照它應該如何行事。如果您希望在用戶類型值後出現「預期值」,請移動println語句。

else { 
    System.out.println("Value expected."); 
    if (kb.hasNextDouble()){ 
     a = kb.nextDouble(); 
    }else { 
     System.out.println("Value expected."); 
    } 
+0

好了,這使得很多更有意義,並可能更人性化的反正。非常感謝! – user2565646

+0

很高興能幫到您 –

0

試試這個:

str = kb.next(); 
    if (!str.equals("value")){ 
     System.out.print("Invalid format."); 
     System.exit(0); 
     } 
+0

這並不能解決OP的問題。如果輸入「值」,那麼你的回答沒有幫助。 – fvrghl