Использование цикла for для печати чисел - PullRequest
0 голосов
/ 11 июня 2011

Я пытаюсь написать программу, которая печатает все числа от 0 до 1000, где число мод 5 = 3. Это то, что я до сих пор

public class NewMain {
public static void modNumbers(int i)
{

}

public static void main(String[] args) {

    for(int i = 0; i > 1000; i++)
    {
        if(i%5 = 3)
        {
        System.out.println(i);
        }
    }

 }
}

Я не получаю никакого вывода, поэтому я знаю, что делаю что-то не так. Должен ли я иметь тип возвращаемого значения в методе?

Ответы [ 9 ]

9 голосов
/ 11 июня 2011

Измените его с:

for (int i = 0; i > 1000; i++)

до

for (int i = 0; i < 1000; i++)

По сути, цикл никогда не начинается, потому что инвариант цикла равен false (так как i меньше 1000), а оператор print никогда не достигается, потому что цикл никогда не инициализируется.

Кроме того, как упоминалось в WTP, используйте == для числовых сравнений (важно отметить, что вы используете string1.equals (string2) или CompareTo со строками, просто для справки в будущем).

5 голосов
/ 11 июня 2011

Вот что вам нужно сделать:

  1. Изменить i > 1000 на i <= 1000, как i начинается с 0 и увеличивается до 1000.
  2. Изменить i%5 = 3на i%5 == 3, поскольку первый выполняет задание, а второй сравнивает на равенство.
5 голосов
/ 11 июня 2011

for(int i = 0; i < 1000; i++)

3 голосов
/ 11 июня 2011
if(i%5 == 3)

single = для назначения

2 голосов
/ 11 июня 2011

Это:

if(i%5 = 3)

Должно быть так:

if(i%5 == 3)

Вы пытаетесь установить что-то, а не сравнивать.

0 голосов
/ 14 июня 2011

У вас есть две проблемы:

1

for(int i = 0; i > 1000; i++)

Цикл for начинается только тогда, когда i больше 1000, но начальное значение i меньше одной тысячи. Код не будет работать.

2.

if(i%5 = 3)

Вам нужно, чтобы это было два знака равенства, чтобы оно стало утверждением, которое возвращает значение true или false. Ваш код будет выглядеть следующим образом после внесения исправлений:

for(int i = 0; i < 1000; i++)
{
    if(i%5 == 3)
    {
    System.out.println(i);
    }
}
0 голосов
/ 11 июня 2011

для (int i = 0; i <</strong> 1000; i ++)

0 голосов
/ 11 июня 2011

Необходимо заменить> в вашем операторе for на <, а также = в вашем операторе if является оператором присваивания. Используйте оператор сравнения == или === ... Надеюсь, это поможет. :) </p>

0 голосов
/ 11 июня 2011

Еще одна маленькая деталь:

i%5 = 3

должно быть

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