我找不到其中一种方法中缺少的东西

时间:2016-08-14 15:04:39

标签: java methods

public class Main {
    private static void printStars(int amount) {
        System.out.print("*");
    }
    private static void printWhitespaces(int size2) {
        System.out.print(" ");
    }
    private static void printTriangle(int size) {
        for (int i=1; i<=size; i++) {
            {
                for (int j=size-i; j>=1; j--)
                    printWhitespaces(size);
            }
            for(int k=1; k<=size; k++) {
                printStars(size);
            }
            System.out.println("");
        }
    }
    public static void main(String[] args) {
        printTriangle(7);
    }
}

问题在于for(int k=1; k<=size; k++){printStars(size);} 这个函数不想在每次传递时打印1,2,3,4,5,6,7星,而不是每次打印每行中的星星总量,目前是7.我做错了什么?

3 个答案:

答案 0 :(得分:0)

我不确定您选择以何种方式实现三角形&#34;作为提示:要使用控制台,您可以使用\\n&#34; ;代码概念可能就像这样看代码片段

<强> TESTED

 public class Main{
    private void printStar() {
              System.out.print("*");
           }
           private void printLineBreak() {
               System.out.println();
           }
           private void printWhitespace() {
               System.out.print(" ");
           }
           private void printWhitespaces(int size) {
               for(int i=0; i<size; i++){
                   System.out.print("~");//replace with something else
                   this.printWhitespace();
               }
           }

       private void printLeftToRightTriangle(int size) {
           for(int i=0; i<size; i++){
               for(int j=0; j<i+1; j++){               
               printStar();
               printWhitespace();
       }    
               this.printWhitespaces(size-(i+1));
               this.printLineBreak();

       }
       }

       private void printRightToLeftTriangle(int size) {
           for(int i=0; i<size; i++){
               this.printWhitespaces(size-(i+1));   
               for(int j=0; j<i+1; j++){                                   
                   this.printStar();
                   this.printWhitespace();
       } printLineBreak();

       }
       }

       public Main(){
           this.printLeftToRightTriangle(7);
           this.printRightToLeftTriangle(7);
       }
       public static void main(String[] args) {
               new Main();
           }
}

修改 @Jone我编辑了我的代码;我不确定你为什么使用空格;你说关于直角三角形所以我试图创建从左到右和从右到左三角形(参见我的控制台输出);

* ~ ~ ~ ~ ~ ~ 
* * ~ ~ ~ ~ ~ 
* * * ~ ~ ~ ~ 
* * * * ~ ~ ~ 
* * * * * ~ ~ 
* * * * * * ~ 
* * * * * * * 
~ ~ ~ ~ ~ ~ * 
~ ~ ~ ~ ~ * * 
~ ~ ~ ~ * * * 
~ ~ ~ * * * * 
~ ~ * * * * * 
~ * * * * * * 
* * * * * * * 

如果您需要其他信息,请告诉我们。

我希望这有点帮助:)

答案 1 :(得分:0)

int i,j
    for (int y = 0; y < size; y++) { 

        for (i = y; i < size - 1; i++)

            System.out.print(' ');

        for (j = 0; j < y * 2 + 1; j++)
             System.out.print('*');

        System.out.println();
    }
希望它有所帮助!!

答案 2 :(得分:0)

每行需要减少空格数,而每行增加的星数要增加。因此,在每一行中,空格数将为i,星数将为size。使用您的代码,它始终打印i个星号,而不是k<=size个星号。

要修复代码,请将k<=i更改为public class Main { private static void printNTimes(char c, int n) { for (int i = 0; i < n; i++) { System.out.print(c); } } private static void printTriangle(int size) { for (int i = 1; i <= size; i++) { printNTimes(' ', size - i); printNTimes('*', i); System.out.println(); } } public static void main(String[] args) { printTriangle(7); } }

以下是您的代码的工作版本,修改了您的方法以便于阅读。

{{1}}

Ideone Demo