我无法让这个程序计算空间,我觉得循环中存在逻辑错误,但我太缺乏经验,无法自己解决。有什么提示吗?
System.out.print("Enter a string: ");
String myString = keyboard.next();
int numBlanks = 0;
//find string length
int length = myString.length() - 1;
System.out.println("length " + length);
for(int sequence = 0; sequence >= length; ++sequence);
{
if(myString.charAt(length)==' ')
{
numBlanks += 1;
length -= length;
}
else
length -= length;
}
答案 0 :(得分:9)
我可以看到很少的错误:
for循环结束时的分号。删除它。
下一步
sequence >= length
应该是
sequence <= length
和
if(myString.charAt(length)==' ')
应该是
if(myString.charAt(sequence)==' ')
,您需要更改length
,因为您已经在更改sequence
。
所以我们得到:
for(int sequence = 0; sequence <= length; ++sequence) {
if(myString.charAt(sequence)==' ') {
numBlanks += 1;
}
}
答案 1 :(得分:3)
sequence >= length
,因为“sequence
大于或等于length
。”它被初始化为零。什么时候它会大于或等于length
?
答案 2 :(得分:1)
除了其他人指出的错误外,这里还有违反惯例的行为;你将长度计算为n - 1,然后比较&lt; =(嗯,&gt; =,但应该是&lt; =)。通常,除非有很好的理由,否则我们的for循环看起来像这样:
for (int i = 0; i < n; i++) {
...
}
在您的情况下,这将表示为:
for (int i = 0; i < myString.length(); i++) {
...
}
除非有充分的理由使用另一个,否则坚持使用“i”作为循环变量也是常规的;在你的情况下,“序列”只是令人困惑。
答案 3 :(得分:0)
第一期:
更改
for(int sequence = 0; sequence >= length; ++sequence);
到
for(int sequence = 0; sequence <= length; ++sequence); //flipped >= to <=
第二期:
变化
I am too inexperienced to figure it out myself.
到
This will be some good practice for debugging. //int confidence should never be negative
:d