2015-04-15 34 views
0

我想用方法找到前100個五邊形數字。下面是我的代碼,但是,我一直在失去return語句。我確定我沒有在適當的地方放置回覆聲明,除了我不知道這個過程是否正確。因此,我會欣賞指導。謝謝。 PS:還沒有學會陣列,這是沒有功課缺少return語句(Java):計算前100個五邊形數字)

public class PentagonNumber { 
    public static void main(String[] args) { 
     int numberperline = 10; 
     int n = 1; 
     int count = 0; 
     int pent = getpentagonnumber(n); 
     count++; 

     if (count % numberperline == 0) 
      System.out.println(); 
     else System.out.print(pent + "\t"); 
    } 

    public static int getpentagonnumber(int x) { 
     for (int count = 0; count < 100; count++) { 
      for (x = 1; x <= 100; x++) { 
       int result; 
       result = x * (3 * x - 1)/2; 
       return result; 
      } 
     } 
    } 
} 
+2

難看的代碼。可憐的,不一致的格式會減少理解,使你的代碼難以閱讀,並鼓勵這種錯誤。我建議更多關注格式。你的結果計算中也會遇到整數除法問題。這段代碼是錯誤的。 – duffymo

+0

如果你想得到100個數字,你需要調用一個產生100次數字的方法,或者調用一個方法返回存儲在列表或向量中的100個數字。 – 54l3d

+0

@ duffymo.Thank你的格式化評論。你能澄清「整數除法問題」嗎? – pumpin26

回答

-1

你只有for循環內的返回值。你可能意味着它是:

public static int getpentagonnumber(int x){ 
    int result = 0; 
    for (int count=0; count<100; count++){ 
     for (x=1;x<=100;x++){   
      result = x*(3*x-1)/2; 
     } 
    } //this was missing 
    return result; 
} 
+1

你需要定義結果的外部循環爲... – fge

+0

是的,我只是添加了缺少的'}',但我改變了它的原意可能是什麼。謝謝! –

+0

這不是全部;你也需要初始化它;) – fge

1

您的代碼應該這樣改變:

public class PentagonNumber { 
    public static void main(String[] args) { 
     int numberperline = 10; 
     //int n = 1; // you do not need N 
     //int count = 0; // you do not this either 
     for (x = 0; x < 100; x++) { // moved 
      int pent = getpentagonnumber(x+1); // +1 so it goes 1::100 
      //count++; 
      if (x % numberperline == 0) 
       System.out.println(); 
      //else // you were skipping every tenth result. 
      System.out.print(pent + "\t"); 
     }// close for 
    } 

    public static int getpentagonnumber(int x) { 
     //for (int count = 0; count < 100; count++) { // moved 
      //for (x = 1; x <= 100; x++) { // removed 
       int result; // no need to declare and then calculate 
       result = x * (3 * x - 1)/2; // but not wrong either. 
       return result; 
      //} 
     //} 
    } 
} 
+0

謝謝@Mindwin。它應該是(x + 1)而不是(n + 1) – pumpin26