2012-04-04 55 views
-3

我在java编码方面很新颖。我很难找到如何将我的main方法与确定值是否为素数的方法相关联。当我在eclipse中运行下面的代码时,该方法似乎根本没有执行。有谁知道我做错了什么?如何调用java方法

此外,对于最后一部分,我正在考虑让System.out打印输入值是否为素数。即truefalse会很好。

import java.util.*; 

class IsPrime { 
    public boolean isprime(int n) { 
     Scanner input1= new Scanner(System.in); 
     System.out.println("input single integer?"); 

     int n1 = input1.nextInt(); 

     int i,c=0; 

     for(i=1;i<=n1;i++) { 
      if(n1%i==0){ 
       c++; 
      } 
     } 
     if(c==2) { 
      return true; 
     } else { 
      return false; 
     } 
     System.out.println("Your number is:") 
    } 
} 
+0

我们不能告诉你什么你,除非你告诉我们症状做了错事的一个实例。你有没有得到某种错误信息? – 2012-04-04 23:30:03

+2

我可以看到你做错了一件事,你试着在方法返回后调用'System.out.println'。 – joshuahealy 2012-04-04 23:32:45

+0

您没有主要方法。 'if(c == 2)return ... else return ...''System.out.println(“你的号码是:”)''永远不会到达' – jahroy 2012-04-04 23:38:16

回答

2

线

System.out.println("Your number is:") 

不可达,你有一个

else { 
return false; 
} 

+0

的理解和感谢!所以我必须创建一个新的方法来输出输入整数是否为素数? – user1313137 2012-04-04 23:36:46

+0

你必须有一个主要方法......参见@Alonso Dominguez的答案。 – Martin 2012-04-04 23:37:48

+0

@ user1313137,你有问题的一些答案,想想[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)其中之一,如果它帮助你解决问题。 – 2012-04-05 00:44:43

2

首先,草莓和appclay说的是对的。

另一方面,你的方法isprime是一个实例方法,而你的main(我想你谈论你的主类的方法)是一个类(静态)方法。

尝试以下操作:

public static void main(String[] args) { 
    int possiblePrime = // initialise your parameter 
    IsPrime isPrime = new IsPrime(); 
    boolean primeOrNot = isPrime.isprime(possiblePrime); 
    System.out.println("Your number is prime: " + primeOrNot); 
} 
0

如果我理解你正在寻找的就是实现一个isprime方法并调用它的主。

class IsPrime { 
    public boolean isPrime(int n) { 
     int i,c=0; 

     for(i=1;i<=n;i++) { 
      if(n%i==0){ 
       c++; 
      } 
     } 
     if(c==2) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
    public static void main(String[] args) { 
     Scanner input1= new Scanner(System.in); 
     System.out.println("input single integer?"); 

     int n = input1.nextInt(); 
     IsPrime isPrime = new IsPrime(); 
     System.out.println("Your number is prime: " + isPrime.isPrime(n)); 
    } 
} 

这应该做你想做的事情。但是,您的代码中存在一个错误。 你拥有的所有数字都将返回true,而不仅仅是素数。我将留给你来发现错误和修复。

编辑:没有错误。见下面的评论。

+1

该方法确实有效,但无论如何它都没有效率。我只是编码它(修复语法),并用5,13,​​10,25,91,97和100运行它,它适用于所有这些。 – twain249 2012-04-04 23:47:30

+0

感叹!我是个白痴。我认为循环必须从2到n-1,如果if语句检查c> 0,情况就是这样。 – 2012-04-05 00:40:59

0

你的方法更改为静态的,你可以参考它,而无需创建该类

public static boolean isprime(int n) {