我正在尝试编写一系列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
答案 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
}
}