初学者Java代码问题

时间:2017-04-06 00:34:30

标签: java

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

6 个答案:

答案 0 :(得分:1)

摆脱if loop并将while loop中的条件更改为i<=amount。你的while循环中现在发生了什么,你正在检查i是否小于amount ( i < amount )。在第一次迭代中,您将调用printStars(1),因此在这种情况下amount = 1i = 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
  }

}