Java 我的申请有什么问题?你能给我一个很好的解释吗
我找不到代码有什么问题。请你给我解释一下。我正在调试这个。我找不到这个问题。我正在尝试修复整个代码如果在Java 我的申请有什么问题?你能给我一个很好的解释吗,java,Java,我找不到代码有什么问题。请你给我解释一下。我正在调试这个。我找不到这个问题。我正在尝试修复整个代码如果在testname中找不到空格字符,此代码没有考虑到posBlank可以是-1。如果它是-1,则仍执行此行: public class PersonName { int NumberNames(String wholename) { // store the name passed in to the method String testname=who
testname
中找不到空格字符,此代码没有考虑到posBlank
可以是-1
。如果它是-1
,则仍执行此行:
public class PersonName {
int NumberNames(String wholename)
{ // store the name passed in to the method
String testname=wholename;
// initialize number of names found
int numnames=0;
// on each iteration remove one name
while (testname.length()>0)
{ // take the "white space" from the beginning and end
testname = testname.trim();
// determine the position of the first blank
// .. end of the first word
int posBlank= testname.indexOf(' ');
// cut off word
testname=testname.substring(posBlank+1,testname.length());
// System.out.println(numnames);
// System.out.println(testname);
numnames++;
}
return numnames;
}
public static void main(String args[])
{
PersonName One= new PersonName();
System.out.println(One.NumberNames("Bobby"));
System.out.println(One.NumberNames("Bobby Smith"));
System.out.println(One.NumberNames("Bobby L. Smith"));
System.out.println(One.NumberNames(" Bobby Paul Smith Jr. "));
}
}
表达式posBlank+1
为0
,因此字符串不变。这将导致无限循环
如果
posBlank
是-1
,则在循环时计算最后一个单词并中断。问题是如果未找到空格,它将返回-1
testname=testname.substring(posBlank+1,testname.length());
posBlank将变为-1,导致posBlank+1=0
,并使while循环变为无限循环
您可以这样尝试:
int posBlank= testname.indexOf(' ');
请解释为什么你认为你的代码是错误的。你期望得到什么?这个程序是用一个循环编写的,该循环试图一次从字符串中提取一个名称,并在过程中计算名称。当它删除所有名称时,循环停止。。。但是循环不会停止。。。但是它不
我不知道这意味着什么。那么,如果posBlank是-1,会发生什么呢?这会发生吗?;)您对所有4种情况的预期输出是多少?正确。但我想知道,当涉及到像这样的琐事时,给出答案是否始终是w.r.t.教学的最佳选择:/你知道在这件事上有任何官方的指导方针/立场吗?@DiegoMartinoia对于看起来像家庭作业的问题,我引导OP找到正确的解决方案,但我没有给出实际的代码解决方案。我明白了。试图找到最佳策略来应用自己:)
int NumberNames(String wholename)
{
wholename = wholename.trim();
String[] names = wholename.split(" ");
int numNames = 0;
for(String name : names){
if(!name.equals("")){
numNames++;
}
}
return numNames;
}