[英]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.