2017-05-06 56 views
1

我需要兩個輸入一個int值。用戶可以在1月份寫入1或01。
所以它不工作了1 - 12,但如果我寫01它確實給了我自己的錯誤文本。
對我來說,它的importent,它是一個int值,我知道該字符串被很好地工作。驗證月份輸入01和1?

private static BufferedReader input= new BufferedReader(new InputStreamReader(System.in)); 
private Output output = new Output(); 


public static String inputText() throws Exception { 
    return input.readLine(); 
} 

public int monatInput(String text){ 
    String monthNumber= ""; 
    boolean again = true; 
    while (again) { 
     System.out.print(text); 
     again = false; 
     try { 
      monthNumber = inputText(); 
      int number= Integer.parseInt(monatZahl); 
      int monthLength = String.valueOf(monatZahl).length(); 


      if (number<=1 || number>=12) { 
       again = true; 
       throw new Exception(); 
      } else if (monthLength> 3) { 
       again = true; 
       throw new Exception(); 
      } 
     } catch (Exception e) { 
      this.output.monatWrongInput; 
     } 
    } 
    int converter = Integer.parseInt(monatZahl); 
    return converter; 

} 

我希望你們能幫我驗證這個問題。我看過很多關於for循環的文章,以生成01位數字,但這有點不同,然後驗證爲用戶輸入。

回答

1

,因爲你不使用正確輸入你得到自己的錯誤:

monthNumber = inputText(); 
int number = Integer.parseInt(monatZahl); 
//-----------------------------^^-----------this should be monthNumber 

另一件事,以驗證您輸入您只需要檢查,如果您的號碼是1和12之間,您不需要檢查lenght
如果您的月份是> 12< 1,您的月份是錯誤的,因爲1和12是一個月份(不要與或>=查詢)。

int number = Integer.parseInt(monthNumber); 

if (number < 1 || number > 12) { 
    again = true; 
    throw new Exception(); 
} 

編輯

注意兩個:

int i1 = Integer.parseInt("01"); 
int i2 = Integer.parseInt("1"); 

給1一個的Valide數

+0

我所需要的長度,因爲如果我嘗試鍵入01,它拋出我的新例外。對不起,我只是想翻譯我的程序。但它仍然不工作,我不能01 - 12。它適用於1-12,但我需要這兩個功能。我希望我能讓我的問題變得清晰。 –

+0

@ MonsterHunter.Dev它會讓你的例外,因爲你不使用正確的輸入另一件事檢查我的編輯 –

+0

閱讀我的答案仔細@ MonsterHunter.Dev你必須檢查與'如果(數<1張||數> 12){ '而不是用'如果(數量<= 1 ||數> = 12){'它將如果你使用'01'這是邏輯 –