2012-04-04 56 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) {