我正在尝试制作一个用星星制作三角形的程序,比如这个:
* ** *** **** ***** ****** *******
我以为我拥有它但是在我的代码中的某个地方我做了一个逻辑错误,而不是减少星星之前的空格数,让它们保持在前面所以看起来像这样
* ** *** **** ***** ****** *******
我的代码:
System.out.print("Give a positive odd integer: ");
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int cnt1 = 0;
int cnt2 = 0;
int cnt3 = 0;
int line = N - 1;
char c1 = '*';
char c2 = ' ';
StringBuilder sb = new StringBuilder();
if (N > 0 && N % 2 == 1) {
while (cnt1 < N){
while (cnt2 < N-line){
while (cnt3 < line){
sb.append(c2);
cnt3++;
}
sb.append(c1);
cnt2++;
}
line--;
cnt1++;
System.out.println(sb.toString());
}
}
答案 0 :(得分:2)
我的回答:
System.out.print("Give a positive odd integer: ");
Scanner s = new Scanner(System.in);
int N = s.nextInt();
System.out.print("\n");
char c1=' ';
char c2='*';
if(N>0 && N%2==1) {
for(int i=0; i<N; i++) {
for(int x=0; x<N-i; x++) {
System.out.print(c1);
}
for(int x=0; x<i+1; x++) {
System.out.print(c2);
}
System.out.print("\n");
}
}
使用7输出样本:
*
**
***
****
*****
******
*******
如果您想使用while
,请将if(N>0 ...
之间的代码替换为:
int i=0, x=0;
while(i<N) {
while(x<N-i) {
System.out.print(c1);
x++;
}
x=0;
while(x<i+1) {
System.out.print(c2);
x++;
}
i++;
System.out.print("\n");
}
答案 1 :(得分:0)
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("How many rows: ");
int rows = input.nextInt();
for (int i = 0 ; i < rows ; i++) {
for (int x = 0 ; x < rows - i ; x++) {
System.out.print(" ");
}
for (int x = 0 ; x < i + 1 ; x++) {
System.out.print("*");
}
System.out.print("\n");
}
}
<强>输出强>
How many rows: 10
*
**
***
****
*****
******
*******
********
*********
**********
答案 2 :(得分:0)
你非常接近,我的代码在下面进行了一些小修改:(我只是在循环中移动了一些行):
System.out.print("Give a positive odd integer: ");
Scanner s = new Scanner(System.in);
int N = s.nextInt();
int cnt1 = 0;
int line = N - 1;
char c1 = '*';
char c2 = ' ';
if (N > 0 && N % 2 == 1) {
while (cnt1 < N){
StringBuilder sb = new StringBuilder(); // CHANGED
int cnt2 = 0; // CHANGED
int cnt3 = 0; // CHANGED
while (cnt2 < N-line){
while (cnt3 < line){
sb.append(c2);
cnt3++;
}
sb.append(c1);
cnt2++;
}
line--;
cnt1++;
System.out.println(sb.toString());
}
}
如果输入为7,则会打印以下内容:
*
**
***
****
*****
******
*******
您的问题是某些变量未被重置。我的红旗是因为我看到cnt3
变量从未被重置为0,所以它只进入该循环一次。 StringBuilder
未被重置导致这些空格每次都具有相同的长度。