2012-10-25 149 views
-3

我是Java的新手,請詳細解釋。它似乎根據Eclipse正確編譯,但沒有返回。我知道編碼不乾淨,可能不會返回正確的值。爲什麼沒有被返回?

import java.util.*; 

public class PrimesFactory 
{ 
/* 
Design a class called PrimesFactory. 
This class will calculate the prime factorization of any number, 
print a list of all prime numbers as well as 
state whether or not a given number is a prime number. 
*/ 
    public static void main(String[] args) 
    { 
     getPrimeFactors(10); 
     isPrime(10); 
     listPrimesUpTo(10); 
     //isSumOfPrimes(10); 
    } 
//@returns an ArrayList with all of the prime factors of num 
    public static ArrayList<Integer> getPrimeFactors(int num) 
    { 
     ArrayList<Integer> primeFacOfNum = new ArrayList<Integer>(); 
     for (int i = 1; i <= num; i++) 
     { 
      for (int i2 = 1; i2 <= num; i2++) 
      { 
       if (num % i == 0 && i % i2 == 0 && i2 != i && i2 != 1) 
       { 
        i += 0; 
       } 
       else 
       { 
        primeFacOfNum.add(i); 
       } 
      } 
     } 
     return primeFacOfNum; 
    } 
//@return true if num is a prime number 
    public static boolean isPrime(int num) 
    { 
     boolean prime = false; 
     for (int i = 1; i <= num; i++) 
     { 
      if (num % i == 0 && i != num && i != 1) 
      { 
       prime = false; 
      } 
      else 
      { 
       prime = true; 
      } 
     } 
     return prime; 
    } 
//@returns a comma separated list of all prime numbers less than num 
    public static ArrayList<Integer> listPrimesUpTo(int num) 
    { 
     ArrayList<Integer> primesUpTo = new ArrayList<Integer>(); 
     for (int i = 2; i < num; i++) 
     { 
      for (int i2 = 1; i2 <= i; i2++) 
      { 
       if (i % i2 == 0 && i2 != i && i2 != 1) 
       { 
        i += 0; 
       } 
       else 
       { 
        primesUpTo.add(i); 
       } 
      } 
     } 
     return primesUpTo; 
    } 
//EXTRA CREDIT 
//returns true if num is a sum of all prime numbers 
    //public boolean isSumOfPrimes(int num) 
    //{ 
    //} 
} 
+5

什麼方法返回什麼?不要讓人們閱讀這些混亂的代碼來弄清楚你的問題是什麼。如果返回的數組是空的,這意味着向數組添加值的條件永遠不會滿足。你假設太多了。調試器中的傳遞將比在這裏被動地提出問題並取決於其他人爲你做你的工作更快速,更明確地回答它。 – duffymo

+0

請注意,您的方法正在返回一些值,但您不會在變量中分配值,也不會打印任何內容以瞭解代碼的行爲方式。 –

+1

我們也可以問「爲什麼月亮是平方的?」 –

回答

-1

您必須使用函數print()或debug來查看是否返回值。

1

這讓我傻笑i += 0;嘿嘿

但現在是嚴重的,其他的一些評論說這些方法的返回值。在嘗試進入其他方面之前,你必須理解這些基本概念。每次你調用你定義的那些方法之一時,你就會得到一些值(對象),並且發生這種情況是因爲你有return something;報表。但是當你獲得這些價值後,你就不會對它們做任何事情,如果你想要展示它們,你將不得不調用一些知道如何在屏幕上顯示它們的方法。例如,你可以這樣做:在一行

ArrayList<Integer> result = getPrimeFactors(10); 
System.out.println(result); 

或者只是一切:

System.out.println(getPrimeFactors(10)); 

我希望讓你開始一點點。現在我會讓你工作,看看爲什麼你的代碼不起作用(因爲我可以告訴你它不);)

+0

感謝您的反饋。我意識到我一直試圖通過getPrimeFactors,isPrime和listPrimesUpTo方法而不是主要方法來打印值......對我來說多麼粗心。高中學生這幾天... – HoneyBadger

相關問題