Java, бесконечный цикл - кратно только 2 - PullRequest
0 голосов
/ 25 мая 2011

Меня просят напечатать кратные 2 только с бесконечным циклом.

Попытка:

import java.util.Scanner;

public class Infiniteloop {

    public static void main (String [] args) 
    {
        Scanner input=new Scanner (System.in);
        int number,x;
        System.out.print("Enter a number");

        number=input.nextInt();
        if(number%2==0)
        {
            while(number>=0)
            {
                x= (++number);
                System.out.println(x);
            }
        }
    }
}

Я могу использовать только цикл while.Поэтому я попытался установить остаток от 2 равным нулю.Я попытался использовать счетчик, но он не увеличивает его.Продолжает распечатывать нули.Мне нужна помощь.Спасибо.

Ответы [ 6 ]

5 голосов
/ 25 мая 2011

Предположим, что вы хотите запросить у пользователя начальный номер, а затем распечатать все следующие четные числа:

number = input.nextInt(); //read the input
number += number % 2; //if input is odd, add 1
while (true)
{
   System.out.println (number);
   number += 2;
}

Предположим, вы хотите проверить четные числа:

while (true)
{
  number = input.nextInt();
  if (number % 2 == 0) System.out.println (number);
}

Или, если вас не интересуют пустые строки:

while (true) System.out.println (input.nextInt () % 2 == 0 ? "even" : "");

РЕДАКТИРОВАТЬ: То же самое для степеней двух:

public static void main (String [] args)
{
    Scanner input = new Scanner (System.in);
    int number;
    while (true)
    {
        System.out.print ("Enter a number");
        number = input.nextInt ();
        while ( (number & 1) == 0) number >>= 1;
        if (number == 1) System.out.println ("Perfect divisor.");
    }
0 голосов
/ 30 июля 2013
class Fordemo
{


public static void main(String args[])
{

int k,x=0;

for(k=1;k<=10;k++)
{

x=k*2;

System.out.println("multiple of 2 is "+x);

}}}
0 голосов
/ 25 мая 2011

Я предполагаю, что это вопрос домашнего задания, поэтому, возможно, объяснение методологии поможет вам больше, чем полный ответ.

Во-первых, вы можете использовать цикл while, чтобы гарантировать, что ваш код получитвыполняется более одного раза:

в то время как цикл

Цикл while будет продолжать выполнять код внутри него , пока данное логическое условие оценивается как истинное .Таким образом, вы можете заключить ваш код в код:

while(true) {
//...
}

, и все, что в скобках, будет выполняться постоянно (строка за строкой) вечно.

Если вы получите число от пользователя наВ начале цикла цикл прекратит выполнение любого дополнительного кода, пока пользователь не введет что-то (это будет заблокировано, ожидая ввода-вывода).

Как только вы получите число, цикл начнет выполнять оставшуюся частькод, прежде чем вернуться в начало цикла и повторить процесс.

while (true) {
//ask user for number

//print out the number

// check that it is even

// print whether it is even or odd
}
0 голосов
/ 25 мая 2011

Вопрос не очень понятен, но может быть что-то вроде этого поможет вам:

Scanner input=new Scanner (System.in);
int number;
do {
    System.out.print("Enter a number: ");
    number=input.nextInt();
    if(number%2==0)
       System.out.println(number);
} while (number > 0);
0 голосов
/ 25 мая 2011

Я удивлен, что это компилируется.

x= (++number)

не имеет точки с запятой в конце.

также, переместите оператор if внутри while. Если вы проверяете наличие кратных 2, вы захотите эту проверку после каждой итерации цикла

изменить: вы изменили свой исходный код. Пожалуйста, скопируйте / вставьте из вашего источника вместо повторного набора.

0 голосов
/ 25 мая 2011

Бесконечный цикл не нуждается в счетчике.Это можно записать так:

if((number % 2) != 0) {
    number++;
}

while(true) {
    System.out.println(number);
    number = number + 2;
}

edit: Добавлено бесконечное нахождение кратных 2

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