Java,无限循环-仅2的倍数

Java,无限循环-仅2的倍数,java,if-statement,while-loop,Java,If Statement,While Loop,我被要求打印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");

我被要求打印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的余数设为0。我试着使用计数器,但它没有增加它。不断打印出零。我需要一些帮助。谢谢。

无限循环不需要计数器。可以这样写:

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

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

编辑:无限添加查找2的倍数

无限循环不需要计数器。可以这样写:

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

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

编辑:无限添加查找2的倍数

假设您希望提示用户输入起始编号,然后打印以下所有偶数:

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);
}
假设您要检查偶数:

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.");
    }

假设您希望提示用户输入起始编号,然后打印以下所有偶数:

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);
}
假设您要检查偶数:

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.");
    }

我很惊讶这一点

x= (++number)
结尾没有分号

另外,将if语句移动到while中。如果您正在检查2的倍数,那么您将希望在循环的每次迭代之后进行该检查


编辑:您更改了原始代码。请从您的源代码复制/粘贴,而不是重新键入。

我很惊讶这会编译

x= (++number)
结尾没有分号

另外,将if语句移动到while中。如果您正在检查2的倍数,那么您将希望在循环的每次迭代之后进行该检查


编辑:您更改了原始代码。请从您的来源复制/粘贴,而不是重新键入。

问题不是很清楚,但可能类似这样的问题会帮助您:

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);

这个问题不是很清楚,但可能类似这样的问题会对您有所帮助:

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);

我猜这是一个家庭作业问题,所以也许解释方法学会比完整的答案更有帮助

首先,您可以使用
while
循环来确保代码执行多次:

当给定的布尔条件计算为true时,while循环将继续执行其中的代码。因此,您可以使用以下内容来总结代码:

while(true) {
//...
}
括号中的任何内容都将永远(逐行)执行

如果在循环开始时从用户那里得到一个数字,循环将停止执行任何进一步的代码,直到用户键入某个代码(它将被阻止,等待IO)

一旦您获得了数字,循环将开始执行代码的其余部分,然后返回到循环的顶部并重复该过程

while (true) {
//ask user for number

//print out the number

// check that it is even

// print whether it is even or odd
}

我猜这是一个家庭作业问题,所以也许解释方法学会比完整的答案更有帮助

首先,您可以使用
while
循环来确保代码执行多次:

当给定的布尔条件计算为true时,while循环将继续执行其中的代码。因此,您可以使用以下内容来总结代码:

while(true) {
//...
}
括号中的任何内容都将永远(逐行)执行

如果在循环开始时从用户那里得到一个数字,循环将停止执行任何进一步的代码,直到用户键入某个代码(它将被阻止,等待IO)

一旦您获得了数字,循环将开始执行代码的其余部分,然后返回到循环的顶部并重复该过程

while (true) {
//ask user for number

//print out the number

// check that it is even

// print whether it is even or odd
}
class-Fordemo
{
公共静态void main(字符串参数[])
{
int k,x=0;
对于(k=1;k
class-Fordemo
{
公共静态void main(字符串参数[])
{
int k,x=0;


对于(k=1;k你能澄清一下代码应该做什么吗?@Alan,很清楚。但他/她已经尝试过了。所以,我觉得可以帮上忙。它需要打印整数2的倍数,比如2,4,16,32。@zrn,我知道它打印的是2的倍数。但是如何让数字检查是否可以被除数2?用户是否输入每个数字?或者用户是否输入一个起始数字,然后您在上面每隔两倍打印一次?@zrn您在注释中提供的整数序列(2,4,16,32)似乎表明你需要输出2的幂而不是倍数。这是正确的假设吗?你能澄清一下代码应该做什么吗?@Alan,很明显。但他/她已经做了一次很好的尝试。所以,我觉得这可以帮上忙。它需要打印整数2的倍数,比如2,4,16,32。@zrn,我知道了at打印2的倍数。但是如何让数字检查2的可整除性?用户是否输入每个数字?还是用户输入一个起始数字,然后再打印上面的每两个倍数?@zrn您在评论中提供的整数序列(2,4,16,32)似乎表明你需要输出2的幂而不是倍数。这是正确的假设吗?这是我对他的代码的另一种解释。我不确定哪一种是正确的(我的还是你的)因此,我偷了你的,也粘贴在这里。只需使用
系统切换
number+=2
。out
,这样数字就不会在一开始跳2的倍数。你要找的是哪一个?实际上有个问题。代码只需要执行2的倍数,比如2,4,8,16。这些是偶数e的倍数tc.所以任何奇数倍数都需要丢弃,例如2*3=6等。我尝试将if(数字%2==0)放在while(true)中,但它不起作用。这是我对他的代码的另一种解释。我不确定哪一个是正确的(我的还是你的)因此,我偷了你的,也把它贴在这里。只要用
系统切换
number+=2
,输出
,这样数字就不会在一开始跳2的倍数。你要找的是哪一个?实际上有个问题。代码是