2017-10-05 75 views
-2

我是Java的新手,我一直在尋找2天如何實現這一點,但仍然沒有弄清楚。在我的if語句中,我需要確保如果用戶只是按下輸入而不輸入值,則消息會提示重新輸入,如果用戶輸入的值小於1。下面是我的代碼片段。 我看了,除了空的INT着,我已經試過的整數,但我的代碼不會與給int類型變量賦一個空值

int numberOfCars = -1 
while (numberOfCars == null || numberOfCars < 1) 
{ 
    numberOfCars = (JOptionPane.showInputDialog("Enter number of cars.")); 
    if(numberOfCars == null || numberOfCars < 1) 
    { 
     JOptionPane.showMessageDialog(null, "Please enter a value."); 
    } 
} 
+0

的可能性有多大是一個明確的'int'等於空字符串或'null'? – tadman

+1

「numberOfCars」沒有任何方法等於空字符串_or_等於null。完全沒有辦法,對於任何'int'變量。 –

+0

相關 - https://stackoverflow.com/questions/7504064/does-java-allow-nullable-types – Eric

回答

1
int numberOfCars = -1; 
do { 
    String answer = JOptionPane.showInputDialog("Enter number of cars."); 
    if (answer != null && answer.matches("-?[0-9]+")) { 
     numberOfCars = Integer.parseInt(answer); 
     if (numberOfCars < 1) { 
      JOptionPane.showMessageDialog(null, "Value must be larger than 1."); 
     } 
    } else { 
     JOptionPane.showMessageDialog(null, "Value not a number."); 
    } 
} while (numberOfCars < 1); 

這確實驗證(matches)另有parseInt會拋出一個NumberFormatException運行。

正則表達式String.matches(String)

.matches("-?[0-9]+") 

此模式匹配:

  • -? =負,任選的(?
  • [0-9]+ =來自[ ... ]一個字符,其中0-9是範圍,數字,並且一次或多次(+

另請參閱Pattern瞭解正則表達式的信息。

Integer.parseInt(string) 

給出一個int值取自字符串。像零除零 可以引發一個錯誤,NumberFormatException。

這裏有一個do-while循環會適合(它很少會這樣做)。正常的while循環也可以。

+0

如果你解釋'Integer.parseInt()'和'matches()'與應用正則表達式一起對OP會更有幫助,因爲他/她是一名初學者。或提供一個有信譽的資源鏈接 – eshirima

+0

@eshirima感謝您的提示;多一點解釋。 –

1

JOptionPane.showInputDialog()將返回一個String。您可以使用try-catch語句檢查輸入值是否正確,當您嘗試使用Integer.parseInt()將其解析爲int時。這將適用於您的所有情況。

所以這可能是工作:

int numberOfCars = -1; 

while(numberOfCars < 1){ 
    try{ 
    numberOfCars = JOptionPane.showInputDialog("Enter number of cars."); 

    if(numberOfCars < 1){ 
     JOptionPane.showMessageDialog(null, "Please enter a value."); 
    } 

    }catch(NumberFormatException e){ 
     JOptionPane.showMessageDialog(null, "Please enter numeric value."); 
    } 
} 
+0

這工作完美!缺少例外是導致錯誤的原因 –

相關問題