2016-08-14 91 views
0
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.我在做什么错了?我找不到什么是方法

+0

我缩进你的代码。我看到'printTriangle'内有一个额外的开口支架。你可能想把它移动到它所围绕的'for'循环中。尽管如此,它对你的输出没有任何影响。 – 4castle

+0

我尝试在那里删除括号,没有任何变化 – Jone

+0

对printStars和printWhitespaces的'int'参数有什么作用?他们目前尚未使用。你打算在那里放一个循环吗? – 4castle

回答

0

我不知道你选择什么方式来实现三角形“作为提示:与控制台一起使用,你可以使用\\n”;该代码的概念可能是这样看的代码片段

检测过

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我编辑的代码;我不确定你为什么使用空格;你说的是直角三角形,所以我试图创建从左到右和从右到左的三角形(请参阅我的控制台输出);

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

如果您需要更多信息,请告诉我。

我希望这有助于一点:)

+0

不,如果需要换行符,他们会使用'System.out.println()' – 4castle

+0

原始问题仅包含'print';如果使用'print'有趣,他可以使用'\\ n'来描述 – cbhogf

+0

他们在他们的代码中使用了'println',但我也确信他们不需要那么多换行符。 – 4castle

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(); 
    } 

希望它能帮助!

+0

它创建了一个三角形,但它是颠倒的,它以7颗星开始,以1结尾我试图以相反的方式做到这一点 – Jone

+0

好吧,你的提示我设法让它正常工作'for(int k = i; k> = 1; k--)'这是工作线,但我仍然不明白为什么我的原始方法不工作,就像这样“for(int k = 1; k <= size; k ++)“如果任何人都可以解释 – Jone

+0

会导致每当你使用1来调整它的一个常数值时,每一行的空格都会减少,每次你将得到相同数量的空格。 –

0

您需要每行缩小的空格数,而每行增加的星的数量。所以在每一行中,空格的数量将是size - i,星号的数量是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); 
    } 
} 

Ideone Demo

相关问题