2012-02-11 42 views
0

我想要求用戶輸入全名,我將從第一個名稱和第二個名稱中提取第一個字符。我還會要求用戶提供他們的街道地址,我將從地址中提取住房單元號碼。Cmd窗口掛起和JOption顯示消息不顯示

該計劃供用戶輸入如下內容:John Smith。地址:1234 Main St.
經過處理後,輸出結果爲JS1234。

我編譯並通過前兩個對話框 正確執行,但命令窗口將掛起,並且不會產生具有預期輸出的最終的 showMessageDialog框。我必須按Ctrl + C 來中斷執行。我想我需要 涉及StringBuilder莫名其妙地但不知道如何與JOption。

感謝,

傑里米

import java.util.*; 
    import java.lang.*; 
    import javax.swing.*; 
    public class ConstructID 
    { 
      public static void main(String[] args) 
     { 
      String name; 
      String aInitial = ""; 
      String bInitial = ""; 
      String sAdd; 
      String unit = ""; 
      int i; 
      int j; 

      name = JOptionPane.showInputDialog(null, 
          "Please enter your full name. "); 
      sAdd = JOptionPane.showInputDialog(null, 
          "Please enter your street address. "); 

      i = 0; 
      while(i < name.length()) 
      { 
       if(name.charAt(i) == ' ') 
       { 
        aInitial = name.substring(0, i); 
        bInitial = name.substring(i + 1, name.length()); 
        i = name.length(); 
        ++i; 
       } 
      } 
      j = 0; 
      while(j < sAdd.length()) 
      { 
       if(sAdd.charAt(j) == ' ') 
       { 
        unit = sAdd.substring(0, j); 
        j = sAdd.length(); 
        ++j; 
       } 
      } 
      JOptionPane.showMessageDialog(null, "Your unique ID is " + 
         aInitial + bInitial + unit); 
     } 
    } 

回答

1

你的while循環是造成無限循環當第一個字符是沒有空間。除非獲得空格字符,否則永不增加循環計數器,因此它將掛在任何空格字符上。

也可以使用String.split()或regexp進行這種解析。

+0

我甚至不確定String.split()或regexp是什麼......爲了消除基於charAt()中的''的無限循環問題,我將名稱String分隔爲兩個:firstName和secondName。這樣我就不用擔心從一個輸入中提取字符。但是,即使刪除了空格字符,我仍然留下了一個懸掛終端。 – user1204262 2012-02-12 23:46:59