2012-10-24 70 views
0

我正在運行一個我創建的用於存儲用戶輸入數據的java程序。具體來說有4個數組列表,分別是songName,songArtist,songYear & songAlbum。 我有一個「songYear」的用戶輸入,我只希望程序接受最多4位數的長度,否則會出錯,這怎麼能實現? Here's a screenshot將輸入的長度限制爲x位數

這裏是我有我的外接輸入方法的代碼:

 public void addEntry(){ 
     String newName = ui.getString("Enter the name of the track"); 
     songName.add(newName); 
     String newArtist = ui.getString("Who performs this track"); 
     songArtist.add(newArtist); 
     String newAlbum = ui.getString("What album is this track from"); 
     songAlbum.add(newAlbum); 
     System.out.print("What year was the track released? "); 
     int newYear=input.nextInt(4); 
     songYear.add(newYear); 

     System.out.println("\n" + "Thank you, " +songName.get(songName.size()-1) + " has been added to the library."); 
     System.out.println("\n" + "Press 2 to view your library." + "\n"); 
    } 
+0

這是哪一種語言? – IronMan84

+0

哦,道歉。這是java。 – RarkMowe

+0

它必須是CLI?如果是Swings UI,則可以使用事件輕鬆限制它們。 – agirish

回答

2

您可以使用正則表達式,如:^.{4}$

意味着只有當用戶輸入4位數字 - 返回true,否則返回false

要確保用戶使用的4號YYYY使用類似:

^(?=[1-9]+)\d{4}$ 

確保年份是1或2後跟三個數字;在這種情況下,有效範圍是1000至2999年

^(?=[1-2][0-9]+)\d{4}$ 

最後你的代碼應該是這樣的:

if(inputUserStr.matches("^(?=[1-2][0-9]+)\d{4}$")){ 
    // do some stuff 
} 
    else{ 
    // print error about valid input form [YYYY] 
    } 
+0

\ d或[0-9]可能會更好。 – paxdiablo

+0

匹配四個字符,但不檢查它們是數字。更改點\ d –

+0

@約翰瓦茨,右約翰,我正在編輯:) –

0

完全取決於語言,但有些方法是:

  • 檢查使用len函數的字符串輸入;或
  • 將其轉換爲整數並確保其小於10,000;或
  • 正則表達式,如^\d{1,4}

毫無疑問,還會有其他的驗證檢查,如確保字符串輸入是全數字的,你不是想輸入被寫入二十年以後的歌曲,但他們補充檢查你應該考慮。

0

1)接受用戶的輸入,並使用子方法,只保存了前四個字符(向用戶指定前四個字符被考慮)。

2)你可以要求用戶重新輸入值,如果不是4個字符:

Scanner sc = new Scanner(System.in); 

String a = sc.next(); 
     if (a.matches("....")) 
     { 
      System.out.print(a); 
     } 
      else 
     { 
      System.out.print("Input again:"); 
      a = sc.next(); 
     } 

我寫了一個樣本正則表達式爲4個字符。但你可以隨時改變它。

+0

@菲斯有正確的正則表達式。 – agirish