我试图要求用户输入全名,我将从第一个名字和第二个名字中提取第一个字符。我还将询问用户他们的街道地址,我将从该地址中提取住房单元号码。
该计划是让用户输入类似以下内容:John Smith。地址:主街1234号
处理后输出为JS1234。
我通过前两个对话框正确编译并执行 框,但命令窗口将挂起,并且不会生成最终的 显示具有预期输出的消息对话框。我必须按 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);
}
}
最佳答案
当第一个字符不是空格时,您的 while 循环会导致无限循环。除非获得空格字符,否则您永远不会增加循环计数器,因此它将卡在任何无空格字符上。
对于这种类型的解析,您可以使用 String.split() 或使用 regexp。
关于java - Cmd 窗口挂起且 JOption show Message 不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9243790/