2016-12-17 69 views
1

我在那裏的一個免費網站上學習Java,我無法在這裏解決問題,該程序要我打印一個右側三角形。我似乎無法找到這個打印程序中的問題

public class PrintingLikeBoss { 

// copy or rewrite the method of Assignment 39.1 here 
public static void printStars(int amount) { 

    int i; 
    for (i = 0; i < amount; i++) { 
     System.out.print("*"); 
    } 
    System.out.println(""); 
} 

public static void printWhitespaces(int amount) { 
    // 40.1 
    int i; 
    for (i = 0; i < amount; i++) { 
     System.out.print(" "); 
    } 
} 

public static void printTriangle(int size) { 
    // 40.2 
    int j = size; 
    for (int i = 0; i <= size; i++) { 
     printWhitespaces(j); 
     printStars(i); 
     j -= 1; 
    } 
} 

public static void xmasTree(int height) { 
    // 40.3 
} 

public static void main(String[] args) { 
    // Tests do not use main, yo can write code here freely! 

    printTriangle(5); 
    System.out.println("---"); 
    xmasTree(4); 
    System.out.println("---"); 
    xmasTree(10); 
} 

}

我得到的輸出似乎不錯

compile: 
run: 

    * 
    ** 
    *** 
**** 
***** 
--- 
--- 

我得到的錯誤是「不要把多餘的空格在printTriangle行開始」

這是與本課有關的特定錯誤,程序運行沒有問題。

+1

你用'0開始你的循環',所以它會在第一次迭代中打印0顆星......你認爲這是什麼意思? – Tom

+0

提示:用破折號替換空格以查看發生了什麼([demo](http://ideone.com/0HOOjn))。 – dasblinkenlight

+0

謝謝,破折號真的有幫助。 – Budaika

回答

5

當您檢查傳遞給你的方法的實際值,你會發現,你的方法printTriangle()首先調用

printWhitespaces(5); 

然後

printStarts(0); 

左右;你首先打印5個空格;那麼星;然後換行。

因此,問題是:對於您的循環的第一次迭代,您不打印任何星號;只是空格+換行符。換句話說:您的三角形以空行行開始。

也許這就是分配檢查器所抱怨的。所以你可以嘗試改變你的循環printTriangle()以1開頭;不是0.因爲那麼你會在第一行打印至少一個*。

0

我想你不希望在拳線的空白只是做

public static void printTriangle(int size) { 
    // 40.2 
    int j = size; 
    for (int i = 1; i <= size; i++) { 
     printWhitespaces(j); 
     printStars(i); 
     j -= 1; 
    } 
} 

只是改變我從0到1 我希望我幫你

相關問題