打印箭头。 通过输入要绘制的总行数,让用户输入箭头的大小。 用户在下面的示例中输入了9。提示用户仅输入奇数。 它应该模仿这个:
*
**
***
****
*****
****
***
**
*
到目前为止,我的代码看起来像这样:
int i, j, numRows;
Scanner reader=new Scanner(System.in);
System.out.println("How many rows would you like the triangle to have?");
numRows=reader.nextInt();
//row
for(i=1;i<=numRows;i++){
//column
for(j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
}
}
}
这是上半部分。我可以通过改变嵌套循环来制作下半部分。我知道我需要让嵌套循环在到达中间列之后减少星数,或者(i / 2)+1,但我不知道如何做到这一点。我尝试在列循环中使用带有j--的if语句,但是这不正确或者我犯了错误。
答案 0 :(得分:0)
将这个用于下半部分:
for(i=numRows;i>=0;i--){
for(j=i-1;j>0;j--){
System.out.print("*");
}
System.out.println();
}
答案 1 :(得分:0)
您可以使用两个类似于现在的嵌套循环。想一想内循环应该使用什么起始值以及循环的条件应该是什么。
答案 2 :(得分:0)
int i, j, numRows;
int modifier=1;
Scanner reader=new Scanner(System.in);
System.out.println("How many rows would you like the triangle to have?");
numRows=reader.nextInt();
//row
for(i=1;i>0;){
//column
for(j=1;j<=i;j++){
System.out.print("*");
}
System.out.println();
if (i == numRows) {
modifier=-1;
}
i=i+modifier;
}
我真的不应该做你的作业......但是我总是被这些问题所吸引,因为他们很琐碎,对我来说很有趣......
我的教授总是认为我很奇怪,因为我从来没有以最直接的方式回答这个问题。 :)
答案 3 :(得分:0)
public static void printStarArrow() {
int i = 0;
int j = 0;
int numRows = 0;
Scanner reader = new Scanner(System.in);
System.out
.println("How many rows would you like the triangle to have?");
numRows = reader.nextInt();
if (numRows <= 0 || numRows % 2 != 1) {
System.out.println("Please enter an odd number only.");
return;
}
// row
for (i = 1; i <= numRows; i++) {
if (i <= (numRows / 2) + 1)
j = i;
else
j = --j;
printStar(j);
}
}
public static void printStar(int size) {
for (int i = 0; i < size; i++) {
System.out.print("*");
}
System.out.println("");
}