2012-10-25 103 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

相关问题