我可以使用3个for循环绘制此模式三角形,但我想仅使用2个for循环绘制。
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
1 2 3 4 5 6
1 2 3 4 5
1 2 3 4
1 2 3
1 2
1
我的程序有3个循环
import java.util.Scanner;
class Isotrg {
public static void main(String[] args) {
int n;
System.out.println("Enter the No. Line:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
for (int i = 0; i < (2 * n) - 1; i++)
{
int d = 1;
if (i < n)
{
for (int j = 0; j <= i; j++)
{
System.out.print(d + " ");
d++;
}
System.out.println();
}
else
{
for(int j = 1; j < (2 * n) - i; j++)
{
System.out.print(d + " ");
d++;
}
System.out.println();
}
}
}
}
答案 0 :(得分:1)
int n=6;
for (int i=0; i<2*n+1; ++i)
{
int k=Math.min(i, 2*n+-i);
for (int j=0; j<=k; ++j)
{
System.out.print(j+1 + " ");
}
System.out.println();
}
答案 1 :(得分:0)
您给出的代码已经执行了正确打印三角形的所有正确步骤。这里关注的关键是你的for循环的停止条件。在i < n
(在这种情况下,i
小于7时),您不希望j
超过i
。当i
大于n
时,您不希望j
超过2n - i
。
因此,综合考虑这两个条件,您希望j
小于i
并且您希望它小于2n - i
。只需使用logical AND operator加入这两个条件即可。您还必须适当调整循环的边界,检查两端i
和j
的相对值,以确保它们正确排列:
public static void main(String[] args) {
int n;
System.out.println("Enter the No. Line:");
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
for (int i = 1; i < (2 * n); i++)
{
for (int j = 1; j <= i && j <= (2 * n) - i; j++)
{
System.out.print(j + " ");
}
System.out.println();
}
}
此外,请注意您可以删除不必要的中间变量d
。
答案 2 :(得分:0)
希望这有帮助!
int n=7;
for(int i=1;i<2*n;i++)
{
for(int j=1;j<=Math.min(i,2*n-i);j++)
System.out.print(j + " ");
System.out.println();
}