所以我会尽我所能。我的实验室需要一个java控制台应用程序,用户可以在其中输入1到9之间的任何数字。然后计算机将打印每个数字平方的三角形,并且三角形必须在屏幕的右侧对齐。这是一个例子:
1
4 1
9 4 1
16 9 4 1.
到目前为止,这是我的代码:
import java.util.Scanner;
public class Triangle {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter a number between 1 and 9 inclusive:");
int n = input.nextInt();
for (int i = 1 ; i <=n; i++) {
for (int j = n-i; j >=1; j--) {
System.out.print(" ");
}
for (int k = i; k <=i; k++ ) {
System.out.print(" " + i * i);
}
System.out.println(" ");
}
}
}
这是我的输出:
1
4
9
16
我的问题是我可以在每一行重复每个数字并完全填充三角形,但我无法弄清楚如何打印每个先前计数的sqrt而不写一百万个嵌套循环。 我能得到的任何帮助都将不胜感激。
答案 0 :(得分:0)
问题在于第二个循环的循环限制
for (int k = i; k <=i; k++ ) {
您将 k 初始化为 i ,然后在 k&gt;时停止循环I 即可。这只能在&#34;标准下执行一次&#34;增量。您需要将 k 运行到该行的末尾:
for (int k = i; k <=n; k++ ) {
答案 1 :(得分:0)
只需稍微调整第二个内循环(粗体更改):
for (int k = i; k >= 1; k--) { System.out.printf(" %2d", k * k); }
缩进的第一个内部循环运行n-i
次,因此第二个内部循环必须执行其余操作:i..1
。
你必须打印内部循环变量k
的平方而不是外部循环变量i
(在内部循环中不会改变)。
答案 2 :(得分:0)
我必须在外部循环之前调整并添加一些增量变量,并在外部循环中减去内部循环的每个循环的总计数和增量。
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please enter a number between 1 and 9 inclusive:");
int n = input.nextInt();
int num = 0, temp = 0;
for (int i = 1 ; i <=n; i++) {
int l = 0;
num++;
temp = num * num;
for (int j = n-i; j >=1; j--) {
System.out.print(" ");
}
for (int k = 1; k <=i; k++ ) {
System.out.print(" " + temp);
l++;
temp = i -l;
temp = (int)Math.pow(temp, 2);
}
System.out.println(" ");
}
}
}