Java 使用 for 循环生成数字序列

Java using for-loop to produce series of numbers

我正在尝试编写一组 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 循环中完成此操作。如果有人可以帮助我,我将不胜感激。 谢谢! 编辑: 这是我增加行数时发生的情况。

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

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

您可以创建一个采用以下方法的方法:
1.起始号码
2. 要执行什么数学运算(加、减或乘)
3. increment/decrement 或乘以
什么数 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( );   
}

您可以使用一系列嵌套循环来执行此程序。我已经完成了前三行。我把你的包拿出来,用了一个main方法。另外,您的缩进非常混乱。由于您的增量改变了每一行,我不知道有什么方法可以使用 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 + " ");
            }
         } 
      }
   }
}

如果我理解这个问题,您想打印六个系列,每个系列都以不同的数字开头,然后 increment/decrement 该数字的某个值。因为我看不出初始值和 increment/decrement 之间有任何关系,所以你将不得不编写六个单独的 for 循环。

如果您绝对反对这样做,您可以将初始值、increments/decrements 和最终值存储在一个数组中,然后使用 for 循环、if 语句(处理与乘法)和一个 while 循环。该数组将如下所示:

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

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

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

另一方面,您应该以不同的方式格式化您的代码。现在读起来有点困难。通常,缩进循环、类 或函数内部发生的事情。例如:

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
    }
}