Java 使用while循环分离字符串
我在使用一些字符串方法时遇到问题。在下面的代码中,用户输入其全名,代码将其分为名字和姓氏Java 使用while循环分离字符串,java,Java,我在使用一些字符串方法时遇到问题。在下面的代码中,用户输入其全名,代码将其分为名字和姓氏 while(x < name.length()) { if(name.charAt(x) == ' ') { firstName = name.substring(0, x); familyName = name.substring(x + 1, name.length()); x = name.length();
while(x < name.length())
{
if(name.charAt(x) == ' ')
{
firstName = name.substring(0, x);
familyName = name.substring(x + 1, name.length());
x = name.length();
}
++x;
}
我很难理解while循环的要求是什么,正如我读到的,在if语句中x被分配给name.length,这将设置x==name.length,这意味着循环只运行一次
有人能帮我解决这个问题吗?将x设置为name.length会发生变化,而条件xif(name.charAt(x) == ' ')
{
firstName = name.substring(0, x);
familyName = name.substring(x + 1, name.length());
break;
}
请注意,您的代码还有两个问题:
如果输入不包含空格,则firstName和familyName保持未设置状态,并且
如果输入包含空格作为最后一个字符,代码将抛出异常。
这是逻辑的分解:
这将从x=0开始循环,假设这是它初始化为的名称字符串长度
这将指定firstName和familyName。firstName是从名称字符串的开头到第一个空格前的字符,familyName是从空格后的第一个字符到名称字符串的结尾。例如,对于Jane Doe,firstName设置为Jane,familyName设置为Doe
firstName = name.substring(0, x);
familyName = name.substring(x + 1, name.length());
赋值后,x被设置为下次不会执行while循环的条件
x = name.length();
如果未遇到空格,则x将递增,以便可以计算名称字符串中的下一个字符
++x;
更好的方法是编写break语句,而不是设置x=name.length。在找到第一个空格字符并设置firstName和familyName后,将退出while循环
if(name.charAt(x) == ' ') {
firstName = name.substring(0, x);
familyName = name.substring(x + 1, name.length());
break;
}
++x;
我不知道为什么您必须在编写代码时使用,也许您可以使用name.split。如果您可以确保name,using将名字和姓氏分开,您可以很容易地将其分为名字和姓氏。字符串名称[]=name.split如何?通过逐个字符遍历名称字符来查找空格字符。如果第一个字符是空格,则循环只运行一次,这是糟糕的编程。x=name.length应该用一个中断来代替,以使事情更清楚,因为这本质上就是它所起的作用。这是作为课程材料提供给我的代码,中断对我来说更有意义,if语句一次只测试一个字符吗?是的charAt函数只查看一个字符可能是你可以使用indexOf来获取空间索引,然后是你知道的其他字符..啊,谢谢,我很困惑地认为if语句中的代码块每次都在运行,当然不是!谢谢你,休息会更有意义的。
while(x < name.length())
{
if(name.charAt(x) == ' ')
{
firstName = name.substring(0, x);
familyName = name.substring(x + 1, name.length());
x = name.length();
}
++x;
}
if(name.charAt(x) == ' ') {
firstName = name.substring(0, x);
familyName = name.substring(x + 1, name.length());
break;
}
++x;