2017-01-07 14 views
1

不會撒謊,這是我在大學工作的一個項目。現在,特定部分需要來自用戶的輸入來提供關於需要長度爲11個字符的regestration編號的細節。索引上的字符(8)和(10)需要是字母,其餘的則需要是數字。如果用戶輸入了錯誤的字符,則需要再次輸入,直到輸入正確。我感到非常麻煩,我覺得應該是非常容易的事情,我只是沒有看到。下面是我玩的周圍到目前爲止(請注意這個代碼是殘暴和使用非常基本的Java功能,因爲我們還沒有學會任何比這更多的在我的課程)如何檢查和驗證字符串索引的多個字符?

String regiNum; 
    boolean validRegi = true; 

    System.out.print("Enter registration num: "); 
    regiNum = keyboard.nextLine(); 

    char firstChar = regiNum.charAt(8), secChar = regiNum.charAt(10); 
    while(validRegi == true){ 
     if(!(firstChar >= 'A' && firstChar <= 'z' && secChar >= 'A' && secChar <= 'z')){ 
      System.out.print("Enter registration num again: "); 
      regiNum = keyboard.nextLine(); 
      validRegi = false; 
     } 
    } 

我還沒有得到檢查其他字符的驗證以確定它們是否是數字。什麼會最適合?也許做一個while循環?對於這個令人難以置信的愚蠢問題抱歉。

+1

可能不是最優雅的解決方案,但'string.matches(「\\ d \\ d \\ d \\ d \\ d \\ d \\ d [a-zA-Z] \\ d [a-zA-Z] \\ d「)'應該可以工作:P – Moira

+0

我不認爲正則表達式對這個問題是一個有用的解決方案--Daniel說他在做基本的Java,並用while循環。這可能是他的項目預計要做的。 – DaveyDaveDave

回答

0

這種方法做你想做的工作!

boolean isValid(String reg) { 
    //check if length is 11, return false if not 
    if(reg.length <11){ 
     for(int i=0;i<11;i++) { 
      if(i==8 || i==10) { 
       if(!Character.isLetter(reg.charAt(i))){ 
        return false; 
       } 
      }else{ 
       //check if its a number, return false if not 
       if(!Character.isDegit(reg.charAt(i))){ 
        return false; 
       } 
      } 
     } 
    } 

    return true; 
} 
+0

我會如何讓這個循環,直到給出正確的字符?也許是一段時間? –

+0

是的!從一個做的時候開始。寫下這個方法,當你給它打電話時,在做某事的時候或點擊某個東西時按鈕!注意!你的滿意答案將非常apprecaited。 :) –

2

最簡單的做法是使用for循環,並檢查字符是否一一有效。你可以嘗試這樣的:

boolean isValid(String regiNum) { 
    //check if length is 11, return false if not 
    for(int i=0;i<11;i++) { 
     if(i==8 || i==10) { 
     //check if its letter, return false if not 
     }else{ 
     //check if its a number, return false if not 
     } 
    } 
    return true; 
}