我需要生成如图所示的三角形:
***4
**34
*234
1234
我的代码是:
for(int i=3; i>0 ;i--)
for(int j=0; j < i; j++){
System.out.print("*");
}
for(int s3 = 5; s3 >= 0; s3 -- ){
for ( int n2 = s3 + 1; n2 <= 4; n2 ++){
System.out.print(n2);
}
System.out.println();
}
}
给了我这个:
***
4
34
234
1234
**
4
34
234
1234
*
4
34
234
1234
有人可以帮我吗?
答案 0 :(得分:2)
就这样做:
for(int i=3; i>=0 ;i--) {
for(int j=0; j < i; j++) {
System.out.print("*");
}
for ( int k = i+1; k < 5; k++ ) {
System.out.print(k);
}
System.out.println();
}
你只需要一个外环和2个内环。外环从3计数到0(此线的星数)。第一个内环打印出许多恒星。第二个用数字填充其余部分。
请注意,无论你是从3开始还是从4开始,然后使用+1或不使用-1和不使用-1都不重要。此外,第一个循环计数向前还是向后都不重要。
我刚从3开始,因为我发现如果我是该行中的星数,我会更容易理解。我在第一个循环中向前计数(从0到i-1),只是因为我自己发现在这个方向上计算比在反向计算中更直观。
答案 1 :(得分:0)
使用两级嵌套循环实现它。
for(int i=4;i>0;i--){
for(int j=i-1;j>0;j--){
System.out.print("*");
}
System.out.print(i);
for(int k =i+1;k<=4;k++){
System.out.print(k);
}
System.out.println();
}
答案 2 :(得分:0)
final int NUM = 4;
for (int i = NUM; i >= 1; i--) {
for (int star = 1; star < i; star++) {
System.out.print("*");
}
for (int j = i; j <= NUM; j++) {
System.out.print(j);
}
System.out.println();
}
答案 3 :(得分:0)
试试这个
for(int i=4; i>0; i--){
for(int j=i-1; j>0; j--){
System.out.print("*");
}
System.out.print(i);
for(int k=i+1; k<=4; k++){
System.out.print(k);
}
System.out.println();
}
答案 4 :(得分:0)
实际上我刚刚想到为什么我们甚至使用嵌套循环来解决这样的问题,尤其是在绘制像
这样的东西时*
**
***
****
为什么我们不能像以下那样建立字符串:
StringBuilder stars = new StringBuilder("****");
for (int i = 3; i >= 0; --i) {
stars.setCharAt(i, (char) (i + 49));
System.out.println(stars);
}
顺便说一句,上面的代码只有在9星或更少星的情况下才会起作用,但我只是想到你可以使用和练习的新想法:)
答案 5 :(得分:0)
你可以试试这个:
int valeur=5;
for(int i=valeur; i>0 ;i--) {
for (int j=1;j<=valeur;j++) {
System.out.print(j<i?"*":(j+""));
}
System.out.println("");
}