2014-02-28 89 views
1

原文: 好了,所以我必須做出一個簡單的數字金字塔,但美中不足的是,它必須使用兩種方法。我的問題是,返回不斷給我「不兼容的類型」,我不知道爲什麼。 好了,所以我必須做出一個簡單的數字金字塔,但美中不足的是,它必須使用兩種方法。我的問題是,返回不斷給我「不兼容的類型」,我不知道爲什麼。回報不兼容的類型(JAVA)

public static void main(String[] args) 
{ 
System.out.println(NumPyramid(1,1)); 
} 
public static int NumPyramid(int i, int j) 
{ 
    for (;i <= 7; i++) 
{ 
    for (; j <= i; j++) 
{   
{  
    return System.out.print(j + " "); 
    } 
} 
} 

編輯:好了,所以現在我的新代碼不是一個金字塔的問題

public static void main(String[] args) 
{ 
    NumPyramid(1,1); 
} 
public static void NumPyramid(int i, int j) 
{ 
    for (;i <= 7; i++) 
    { 
     for (; j <= i; j++) 
     {  
      System.out.print(j + " "); 
     } 
     System.out.println(); 
    } 
} 

這種打印出

1 2 3 4 5 6 7

取出的println給1 2 3 4 5 6 7

輸出應該是 1 12 123

+2

什麼是System.out.print'(..)'做什麼和值(如果有的話),它解析爲? –

+0

你對'C'的'printf()'/'scanf()'函數感到困惑嗎? – asgs

+0

它應該實際打印值並返回到正確格式化的主要方法。 – user3326162

回答

2

好,因爲@makoto巧妙地指出,System.out.print是一個void方法,它返回莫不如是:

public static void main(String[] args) { 
    System.out.println(NumPyramid(1,1)); 
} 

也應該被改變。所以,你要作的

public static void NumPyramid(int i, int j) { 
    for (;i <= 7; i++) { 
    for (; j <= i; j++) {  
     System.out.print(j + " "); 
    } 
    } 
} 

一個void方法,以及:

public static void main(String[] args) { 
    NumPyramid(1,1); 
} 

沒有得到打印。

編輯

當你有一個新的問題,那就不應該編輯您的問題,在問題的帖子,使之成爲一個新的去除填充......但不是接受最好的答案,並作出崗位。在這裏,我們不僅要回答你,但我們正在建立一個知識庫。如果您有新的問題,請將其作爲新帖子!

這就是說,你的新的問題,你的算法是什麼了,應該改爲:

public static void NumPyramid(int max) { 
    for (int i=1; i<=max; ++i) { 
     for (int j=1; j<=i; ++j) 
      System.out.println(j + " "); 
     System.out.println(); 
    } 
} 
  • 有一個參數max指定的行數,和的寬度金字塔的「基地」;
  • 迭代使用imax回車輸出;
  • 使用iterator ji數字
  • 開始迭代爲1,所以我們不輸出0 1 2max = 31 2 3

這應該輸出,最大= 3

1 
1 2 
1 2 3 

HTH ,再次。請,請恢復您的原始問題。

+0

到底!這就是代碼 – Frakcool

4

System.out.printvoid方法;也就是說,它什麼都不返回。

你不能從一個void方法返回的東西。

只需從該行刪除return關鍵字,您的方法的簽名更改從intvoid

然後,在你的主要方法改變調用從中取出System.out.println

+1

它不會工作,因爲'NumPyramid'被聲明爲返回一個'int'。所以,該方法中必須有一個返回值,它返回一個值。 – Jesper

+0

很好,你抓住了兩個。做了修訂。 – Makoto

+2

它仍然不起作用,因爲在'main'方法中他正在打印'NumPyramid'方法的返回值。如果這個方法是'void',你會在'main'方法中出現編譯錯誤。 – Jesper

0

你想打印?

1 
1 2 
1 2 3 
1 2 3 4 
1 2 3 4 5 

你需要一個參數,它的方法:

public static void NumPyramid(int number) 
{ 
    for (int i = 1; i <= number; ++i) 
    { 
     for (int x = 1; x <= i; ++x) 
     { 
      System.out.print(x + " "); 
     } 

     System.out.println(); 
    } 
} 

我認爲這是不言自明的

0

我想你不問不兼容的返回類型了嗎?好吧,我想可以回答你現在的問題。

如果你想要的代碼是在一個金字塔,你不能做到這一點:

for (;i <= 7; i++) 
{ 
    for (; j <= i; j++) 
    {  
     System.out.print(j + " "); 
    } 
    System.out.println(); 
} 

什麼代碼正在做的是打印j的值,然後是一個空格,然後打印新線。一個解決方案是創建一個字符串,用於在for循環的每次迭代之後存儲數字。

for (;i <= 7; i++) 
{ 
    for (; j <= i; j++) 
    {  
     //System.out.print(j + " "); 
     //The string would take the place of this line 
    } 
    //Since println always prints on a new line, you 
    //could just print the string in this System.out 
    System.out.println(); 
}