public class Printing {
public static void printStars(int amount) {
int i = 1;
while (i<amount) {
System.out.print("*");
i++;
if (i==amount) {
System.out.println("*");
}
}
}
public static void printTriangle(int size) {
int c = 1;
while (c<=size) {
printStars(c);
c++;
}
}
public static void main(String[] args) {
printStars(3);
System.out.println("\n---");
printSquare(4);
System.out.println("\n---");
printRectangle(5, 6);
System.out.println("\n---");
printTriangle(3);
System.out.println("\n---");
}
}
我目前正在学习Java的在线课程,在这个作业中,printTriangle(3)应该打印3行星,第一行有1颗星,第二行有2颗星,第三行有3颗星。
我无法弄清楚为什么它只打印2行星,第一行有2颗星,第二行有3颗星。
我编辑了我定义方法printSquare和printRectangle的部分,因为我认为它们并不重要。
我用来编码的程序是带有TMC 1.1.7的Netbeans
答案 0 :(得分:1)
摆脱if loop
并将while loop
中的条件更改为i<=amount
。你的while循环中现在发生了什么,你正在检查i
是否小于amount
( i < amount )
。在第一次迭代中,您将调用printStars(1),因此在这种情况下amount = 1
和i = 1
。在while循环中,比较变为1<1
,即false
。甚至没有达到if condition
(i==amount)
因为外部while循环本身坏了,方法执行结束而没有按预期打印1个星。如果您将while条件更改为i<=amount
,则比较为1<=1
条件为true
,因此它将打印1星。
public static void printStars(int amount) {
int i = 1;
while (i<=amount) {
System.out.print("*");
i++;
}
System.out.println("");
}
答案 1 :(得分:1)
也许我的代码很简单,但我可以用这些逻辑显示相同的结果。
public static void main(String[] args)
{
int i = 0; int o = 0;//initialize variables
while (i<3)//first counter -- line by line
{
while (o<i)//second counter -- describes how many @ sign
//(or in your case, use asterisk (*))
//should be printed on the same line
{
System.out.print("@");
o++;
}
o=0;
System.out.println("@");
i++;
}
}
输出如下:
@
@@
@@@
希望它有所帮助!
快乐的编码!
答案 2 :(得分:0)
将你的while循环更改为
while (i<=amount) {
if (i==amount) {
System.out.println("*");
}else{
System.out.print("*");
}
i++;
}
打印明星方法
答案 3 :(得分:0)
另一种选择是使用for
循环。
public static void printStars(int amount) {
for (int i = 1; i <= amount; i++) {
System.out.print("*");
}
System.out.println("");
}
答案 4 :(得分:0)
每当计数等于金额时,我们需要更改为新行,以便下次使用您的方法时,它会在下一行开始打印星星,或者您可以更改为在进入方法时始终插入新行第一次。
将您的方法更改为: -
public static void printStars(int amount) {
int i = 1;
while (i<=amount) {
System.out.print("*");
if (i==amount) {
System.out.println("");
}
i++;
}
}
答案 5 :(得分:0)
我选择嵌套 for loop
来实施。 内循环是打印行。 外循环是更改行。
public static void printStars(int amount) {
for (int i = 1; i <= amount; i++) {
for (int j = 1; j <= i; j++) {
System.out.print("*"); //to print row
}
System.out.println(""); //to change line
}
}