2012-05-14 112 views
0
private void addMember() { 
    while (true) { 
     String mNum = readLine("Please enter a membership number: "); 
     if (mNum == null) break; 
     Integer mNumAsInteger = Integer.parseInt(mNum); 
     String mName = readLine("Please enter the member's name: "); 
     members.put(mNumAsInteger, mName); 
    } 
} 

private Map<Integer, String> members = new HashMap<Integer, String>(); 

代碼的目的是不斷添加成員,直到用戶輸入一個空白的輸入。Java新手:有沒有更好的方法來寫這個簡單的代碼

有沒有辦法來改變第一線,像

Integer mNum = readInt("Please enter a membership number: "); 

不知怎麼檢測空白輸入?

+1

嘗試/代碼審查疊加。沒有像這樣的標準的一體化功能。另外,我會推薦使用'int',除非需要'Integer'。 – 2012-05-14 15:58:09

+1

使用掃描儀,或者簡單地將代碼重構爲實用程序方法。 –

+0

@pst 我以爲我必須使用整數,因爲HashMap只接受類型對象? – user1296058

回答

1

你可以使用Scanner,它提供了一個更簡單的API從流中讀取。

private static void addMember() { 
    Scanner sc = new Scanner(System.in).useDelimiter("\n"); 
    while (true) { 
     try { 
      System.out.println("Please enter a membership number: "); 
      int mNum = sc.nextInt(); 
      System.out.println("Please enter the member's name: "); 
      String mName = sc.next(); 
      members.put(mNum, mName); 
     } catch (Exception e) { 
      break; 
     } 
    } 
} 

http://ideone.com/jhN3j

0

不知道是否是最好的,但也許你正在尋找:

try{ 
Integer mNum = Integer.parseInt(readLine("Please enter a membership number: ")); 
}catch (NumberFormatException e){ 
System.out.println("Error parsing membership number"); 
} 
相關問題