Cmd窗口挂起,JOption显示消息不显示

时间:2012-02-11 20:28:53

标签: java stringbuilder break hang joptionpane

我正在尝试要求用户输入全名,我将从第一个名称和第二个名称中提取第一个字符。我还会询问用户他们的街道地址,我将从地址中提取住房单位编号。

计划是让用户输入类似的内容: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 个答案:

答案 0 :(得分:1)

当第一个字符不是空格时,你的while循环会导致无限循环。除非得到空格字符,否则永远不会递增循环计数器,因此它会挂在任何空格字符上。

对于这种解析,您可以使用String.split()或使用regexp。