使用Nested For Loop在java中显示1-99之间的所有奇数

时间:2014-10-28 12:41:51

标签: java loops for-loop nested

目前我只能显示奇数1 3 5 7 9.但是,我想显示1到99的所有奇数,包括9行和5列。我可以知道如何从11开始显示,而不仅仅是9行1 3 5 7 9。

下面是我坚持使用的代码。

public static void main(String args[])
{
    for (int i=1; i<=9; i++)
    {
        for (int j=1; j<=10; j++)
        {
            if (j%2 !=0)
            System.out.print(j + " " );
        }
        System.out.println();
    }
}

8 个答案:

答案 0 :(得分:1)

首先你需要计算你的号码,试试

for (int i=0; i<=9; i++)
    {
        for (int j=1; j<=10; j++)
        {
            int number = j+i*10
            if (number%2 !=0)
            System.out.print(number + " " );
        }
        System.out.println();
    }

但是你可以通过单循环解决这个问题

 for (int i=1; i<=99; i++)
 {
      if (number%2 !=0)
          System.out.print(number + " " );

      if (number%10 ==0)
          System.out.println();
 }

答案 1 :(得分:1)

for ( i = 1; i < 100; i+=2 ) {
    System.out.print(i);
}
System.out.println();

答案 2 :(得分:0)

也许这会有所帮助:

public static void main(String args[])
{
    for (int j = 0; j < 10; j++)
    {
        for (int i = 1; i <= 9; i++)
        {
            int c = j * 10 + i;
            if (c % 2 !=0)
                System.out.print(c + " " );
        }
        System.out.println();
    }
}

只有一个循环的其他替代方案:

public static void main(String args[]) {
    for (int j = 1; j <= 99; j += 2) {
        System.out.print(j + " ");
        if ((j + 1) % 10 == 0) {
            System.out.println();
        }
    }
}

答案 3 :(得分:0)

您的代码现在打印了9行:

1 3 5 7 9 

这种情况正在发生,因为你的内部循环总是在1到9之间循环。

你应该尝试类似的东西:

int counter = 0;
for(int i=1; i<=99; i++) {
    if(i%2 != 0) {
        System.out.print(i + " ");
        counter++;
    }
    if(counter == 5) {
        System.out.println();
        counter = 0;
    }
}

这将打印:

1 3 5 7 9 
11 13 15 17 19 
21 23 25 27 29 
31 33 35 37 39 
41 43 45 47 49 
51 53 55 57 59 
61 63 65 67 69 
71 73 75 77 79 
81 83 85 87 89 
91 93 95 97 99 

答案 4 :(得分:0)

public static void main(String args[])
{
    for (int i=1; i<=99; i++)
    {
        if (i%2 !=0)
        System.out.print(i + " " );
        if(i%10 == 0)
        System.out.println();
    }
}

此代码允许您使用1循环执行所需操作,这比使用嵌套循环更有效。

这将循环显示1-99中的每个数字,如果是奇数则打印。如果数字是10的倍数,那么它将打印一个新行。

答案 5 :(得分:0)

如果要使用嵌套的forloop,则必须使用两个迭代变量来构建数字。在内部for循环中你根本不使用i。因此,只有1 3 5 7 9被打印9次。对于修补程序尝试使用类似的东西

System.out.print(i + j + " " );
而不是

System.out.print(j + " " );
注意i + j在这里不计算加法。 无论如何,在评论中指出你在这里真的不需要2个循环。

答案 6 :(得分:0)

我们作弊:

for (int i = 1; i <= 99; i += 2)
    System.out.printf("%d%s", i, i % 10 == 9 ? "\n" : " ");

我们检查:

int c =0;
for (int i = 1; i <= 99; i++)
    if ((i & 1) == 1) {
        c++;
        System.out.printf("%d%s", i, c % 5==0 ? "\n" : " ");
    }

两个输出相同,连续5个奇数,没有尾随空格。

答案 7 :(得分:0)

使用此功能,您可以根据需要轻松设置列数。

我们使用单个循环。

<强>代码:

int columns = 5;
int start   = 1;
int end     = 99;

// iterate through every seconds i.
for (int i = start; i <= end; i += 2) {
    System.out.printf("%-4d", i);

    // if we have displayed enough words, start a new line
    if (i % (2 * columns) == 0) {
        System.out.println();
    }
}

<强>输出:

1   3   5   7   9   
11  13  15  17  19  
21  23  25  27  29  
31  33  35  37  39  
41  43  45  47  49  
51  53  55  57  59  
61  63  65  67  69  
71  73  75  77  79  
81  83  85  87  89  
91  93  95  97  99

但是,如果我正确理解你的问题,你想显示5列9行的数字?如果我们只打印1到99之间的数字,这是不可能的。有5列,数字1到99,你将获得10行。