Что не так с этим циклом For? - PullRequest
       0

Что не так с этим циклом For?

1 голос
/ 26 сентября 2010

Я не могу заставить эту программу подсчитать пробелы, у меня такое чувство, что в цикле есть логическая ошибка, но я слишком неопытен, чтобы понять это сам.Любые советы?

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;

}

Ответы [ 4 ]

9 голосов
/ 26 сентября 2010

Я вижу несколько ошибок:

Точка с запятой в конце цикла 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;
    }
}
3 голосов
/ 26 сентября 2010

sequence >= length произносится вслух, поскольку «sequence больше или равно length». Инициализируется до нуля. Когда оно будет больше или равно length?

1 голос
/ 26 сентября 2010

В дополнение к ошибкам, указанным другими, здесь есть нарушения конвенции;Вы вычисляете длину как n - 1, а затем сравниваете <= (хорошо,> =, но должно быть <=).Как правило, если нет очень веских причин, наши циклы for выглядят так: </p>

for (int i = 0; i < n; i++) {
    ...
}

В вашем случае это будет выражаться как:

for (int i = 0; i < myString.length(); i++) {
    ...
}

Также обычно придерживатьсяс «i» в качестве переменной цикла, если нет веской причины использовать другую;в вашем случае «последовательность» просто сбивает с толку.

0 голосов
/ 26 сентября 2010

Первый выпуск:

изменение

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...