Java使用for循环生成一系列数字

时间:2015-10-28 02:53:17

标签: java eclipse acm-java-libraries

我正在尝试编写一系列for循环,这些循环在下面生成以下一系列数字。我正在尝试调整我的循环以在同一行上打印每个系列,每个术语之间有空格。我是java新手,对于我究竟能做到什么感到非常困惑。在右侧是我增加计数的数字。

 1. 4  5  6  7  8  9  10                (+1)
 2. 6  5  4  3  2  1                    (-1)
 3. 2  4  6  8  10  12  14  16          (+2)  
 4. 19  17  15  13  11  9  7  5         (-2)
 5. 7  15  23  31  39                   (+8)
 6. 2  4  8  16  32  64                 (*2)

这是我尝试完成它的方式的代码。我得到了第一排工作,但我想知道天气有一个简单的方法我可以创建其余的,而无需重新复制程序。

import acm.program.*;

public class ppLoop extends ConsoleProgram {
    public void run()
    {
        {

        for(int row = 1; row < 2; row++)
        {
        print(" " + row + ". ");

        for (int col = 4; col < 11; col++)

            {
            print(row*col + " ");
            } //col values

            println( );
            } //row values

        }

    }
}

我是java的新手,现在正在讨论for循环并尝试在for循环中完成此操作。如果有人可以帮助我,我会非常感激。 谢谢! 编辑: 以下是增加行数时会发生的情况。

enter image description here

编辑: 这是我尝试完成的解决方案。感谢所有帮助过我的人。

import acm.program.*;
public class ppLoop extends ConsoleProgram
{
    public void run()
    {
        {
        for(int i = 1; i < 2; i++) // One iteration of outer loop
             {
               print(i + ". "); // print row number 1

                for (int j = 4; j < 11; j++) // loop for row 1   
                {
                   print(j + " ");
                } 
                println( );
                print((i + 1) + ". ");

                for (int j = 6; j > 0; j--) // loop for row 2
                {
                   print(j + " ");
                }
                println();
                print((i + 2) + ". ");

                for (int j = 2; j < 17; j = j + 2) // loop for row 3
                {
                   print(j + " ");
                }
                 println();
                print((i + 3) + ". ");

                for (int j = 19; j > 4; j = j - 2) // loop for row 4
                {
                  print(j + " ");
                }
                 println();
                print((i + 4) + ". ");

                for (int j = 7; j < 40; j = j + 8) // loop for row 5
                {
                  print(j + " ");
                }
                println();
                print((i + 5) + ". ");

                for (int j = 2; j < 65; j = j * 2) // loop for row 6
                {
                print(j + " ");
                }
                println();
             } 
        } //close outer loop
    } //close public run
} //close console program

3 个答案:

答案 0 :(得分:4)

您可以使用一系列嵌套循环执行此程序。我做了前三行。我拿出你的包并使用了一个主要的方法。而且,你的缩进非常令人困惑。由于你的增量会改变每一行,我不知道如何使用for循环来缩短它。

public class ppLoop{
   public static void main(String[] args)
   {
      {

         for(int i = 1; i < 2; i++) // One iteration of outer loop
         {
            System.out.print(i + ". "); // print row number

            // you can use the same variable for each inner loop    
            for (int j = 4; j < 11; j++) // loop for row 1   
            {
               System.out.print(j + " ");
            } 

            System.out.println( );
            System.out.print((i + 1) + ". ");
            for (int j = 6; j > 0; j--) // loop for row 2
            {
               System.out.print(j + " ");
            }

            System.out.println();
            System.out.print((i + 2) + ". ");
            for (int j = 2; j < 17; j = j + 2) // loop for row 3
            {
               System.out.print(j + " ");
            }
         } 
      }
   }
}

答案 1 :(得分:0)

您可以创建一个方法: 1.开始编号
2.要执行的数学运算(加,减或乘) 3.增加/减少或乘以的数字 4.结束号

看起来与此类似:

public void formattedFor(int startNum, String operation, int num, int endNum) {
    if (operation.equals("add")) {
        for (int i = startNum; i < endNum; i += num) {
            System.out.print(i + " ");
        }
    }
    if (operation.equals("sub")) {
        for (int i = startNum; i > endNum; i -= num) {
            System.out.print(i + " ");
        }
    }
    else if (operation.equals("mult")) {
        for (int i = startNum; i < endNum; i *= num) {
            System.out.print(i + " ");
        }  
    }
    System.out.println( );   
}

答案 2 :(得分:0)

如果我理解了这个问题,你想要打印六个系列,每个系列都以不同的数字开头,并按该值增加/减少该数字。由于我发现初始值与增量/减量之间没有关系,因此您将不得不编写六个单独的for循环。

如果您对此完全不满意,可以将初始值,增量/减量和最终值存储在数组中,并使用for循环,if语句(处理乘法)迭代它们和一个循环。数组看起来像这样:

int[][] values = new int[][] {
        {4, 6, 2, 19, 7, 2},
        {1, -1, 2, -2, 8, 2},
        {10, 1, 16, 5, 39, 64}
    };

我可以根据这个来写出来源,但这不是你要求的。

我强烈怀疑,如果这是一项家庭作业并且您已经修改了问题,那么您可能无法理解问题本身。如果这意味着有一个使用for循环的简单解决方案,那么应该有一些将行绑定在一起的逻辑,除非你被允许使用数组/ while循环/ for循环/对象和方法。

另外请注意,您应该以不同方式格式化代码。现在有点难以阅读。通常,缩进在循环,类或函数内发生的事情。例如:

import acm.program.*;

public class ppLoop extends ConsoleProgram {
    public void run() {
        for(int row = 1; row < 2; row++) {
            print(" " + row + ". ");

            for (int col = 4; col < 11; col++) {
                print(row*col + " ");
            } //col values

            println( );
        } //row values
    }
}