簡體   English   中英

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

您可以使用一系列嵌套循環來執行此程序。 我已經完成了前三行。 我拿出您的包裹,並使用了一種主要方法。 另外,您的縮進非常令人困惑。 由於您的增量會改變每一行,因此我不知道一種使用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.起始號碼
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( );   
}

如果我了解問題所在,則要打印六個系列,每個系列以不同的數字開頭,然后以某個值遞增/遞減該數字。 由於我看不到初始值與增量/減量之間的關系,因此您將不得不編寫六個單獨的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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM