我遇到一些String方法有问题。在下面的代码中,用户输入其全名,代码将其分为姓氏和地址。
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循环的要求是什么,正如我读到的那样,x被赋予if语句中的name.length,它将设置x == name.length()意味着循环只会跑一次???
有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
我不知道为什么你必须在代码中使用,也许你可以使用name.split(&#34;&#34;)如果你能确定这个名字,使用&#34; &#34;分隔名字和姓氏,您可以轻松地将其分为名字和姓氏。
答案 1 :(得分:0)
将x
设置为name.length()
会将while
条件x < name.length()
变为false
,所以它绝对可以解决问题:您将摆脱循环。< / p>
但是,代码并未明确将x
设置为name.length()
的目的:即使是经验丰富的编码人员也会花几秒钟来确定您要执行的操作。更好的方法是使用break
语句,它专门用于结束循环:
if(name.charAt(x) == ' ')
{
firstName = name.substring(0, x);
familyName = name.substring(x + 1, name.length());
break;
}
请注意,您的代码还有两个问题:
firstName
和familyName
仍未设置,答案 2 :(得分:0)
这是逻辑的细分:
这将从x = 0
(假设这是初始化的内容)循环到name
字符串的长度。
while(x < name.length())
在找到第一个space
字符后输入此部分。
if(name.charAt(x) == ' ')
这会分配firstName
和familyName
。 firstName
是从name
字符串的开头到第一个space
之前的字符,familyName
是从space
之后的第一个字符到name
的结尾1}}字符串。例如。对于Jane Doe
,firstName
设置为Jane,familyName
设置为Doe。
firstName = name.substring(0, x);
familyName = name.substring(x + 1, name.length());
分配后,x
设置为下次不执行while
循环的条件。
x = name.length();
如果未遇到space
,则x
会递增,以便可以评估name
字符串中的下一个字符。
++x;
更好的方法是编写break
语句,而不是设置x = name.length()
。这将在找到第一个while
字符后以及space
和firstName
名称设置后退出familyName
循环。
if(name.charAt(x) == ' ') {
firstName = name.substring(0, x);
familyName = name.substring(x + 1, name.length());
break;
}
++x;