我认为我的代码是正确的,但我一直都是零?

时间:2016-07-08 02:15:28

标签: java while-loop

我想要的输出:10 20 30 40 50 ..............    我得到的输出:0

public class HelloWorld
{
 public static void main(String[] args)
  {
   final int n = 50;
   int i= 0;
    while(i <= n && i % 10 == 0 )
    {
      System.out.println(i);
        i++;
    }
 }
}

4 个答案:

答案 0 :(得分:3)

while(i <= n && i % 10 == 0 )

这是继续条件,它是由逻辑 - 和&&连接的两个表达式。

这意味着两者必须为真,才能使整个事情成真。

现在计算i成为1时的两个子表达式。第一个是真的,但不是第二个(1不是10的倍数),这意味着循环将在该点退出。这就解释了为什么你只看到0

要修复它,您需要将两个子表达式分开,因为循环控制仅依赖于 。但是,您仍然只希望打印以10的倍数(第二个)发生。

因此,假设根据您所需的输出10 20 30 40 50,您希望0作为输出之一(尽管它毕竟是...的倍数10),以下伪代码将起作用:

set n to 50, i to 1
while i is less than or equal to n:
    if the remainder when i is divided by 10 is 0:
        output i
    increment i

如果 想要0包含在输出中,只需先将i设置为0,然后您就会看到0 10 20 30 40 50

我将上面的代码留作伪代码,假设这是一些描述的类作品 - 将它转换成任何过程语言应该相对容易。

答案 1 :(得分:1)

i % 10 == 0 

这将在第二个循环中评估为false,因此while不会继续。我想你想要这个...

    final int n = 50;
    int i= 0;
    while(i <= n)
    {
        if (i % 10 == 0) {
            System.out.println(i);
        }
        i++;
    }

这允许我一直增加到n,但它只会在i % 10 == 0

时打印结果

答案 2 :(得分:1)

您正在尝试使用View以及whilewhile。试试

if

答案 3 :(得分:0)

仅在i = 0时循环运行一次。就是这样。