2012-05-14 92 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"); 
} 
相关问题