Окно Cmd зависает, и JOption показывает Msg не отображается - PullRequest
0 голосов
/ 12 февраля 2012

Я пытаюсь попросить пользователя ввести полное имя, после чего я извлеку первый символ из имени и второго имени. Я также буду спрашивать у пользователя его адрес, по которому я буду извлекать номер жилой единицы из адреса.

План состоит в том, чтобы пользователь вводил что-то вроде: Джон Смит. Адрес: 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 Ответ

1 голос
/ 12 февраля 2012

Ваши циклы while вызывают бесконечный цикл, когда первый символ не является пробелом. Вы никогда не увеличите счетчики цикла, пока не получите пробел, поэтому он будет висеть на любом пробеле.

Также для этого вида анализа вы можете использовать String.split () или regexp.

...