2012-10-08 153 views
1

僅供參考:我是初學者。此外,我明白,調用方法是一個新手概念,並且已經有幾個這樣的線程。我的情況有點不同,因爲我受到僞代碼的限制,我的程序必須鏡像相同。我無法從其他方法調用方法,包括從main中調用方法。下面是僞代碼後面是我寫的代碼:Java:調用方法main中的方法

僞代碼:

// The user enters an integer and the program calculates that many primes 
// It uses 3 methods, including the main. All the methods are in the same class 
// and should be declared as ‘public static.’ 

Project Print the First n Primes 
    Package printTheFirstNPrimesPackage 
     Class PrintTheFirstNPrimes 
      Method Main 
       Declare numberOfPrimes as integer 
Print 「How many prime numbers do you want?" 
       Read numberOfPrimes from the keyboard 
       Call the method: PrintNPrimes(numberOfPrimes) 
      end Method (Main) 

//   *********************************************************** 
//   This method accepts an integer and prints that many prime 
//   numbers, starting at 2. 2 is the lowest primt number. 
//   *********************************************************** 
      Method void PrintNPrimes(int n) 
       declare i as integer 
       declare myNum as integer 
       myNum = 2 // The first prime number 
       i = 0 
       loop while i < n // This could be a ‘for’ loop 
       if IsPrime(myNum) // Call the Isprime method, (see below) 
        i = i + 1 
        print myNum 
       End If 
       myNum = myNum + 1 
       end loop 
      end Method PrintNPrimes 
//   ********************************************************** 
//   This method accepts an integer and tests to see if it is 
//   a prime number. If it is prime, the method returns true, 
//    otherwise it returns false. 
//   ********************************************************** 
      Method boolean IsPrime(int number) 
       Declare result as boolean 
       result = true 
       declare i as integer 
       i = 2 
       loop while i < number 
        if ((number % i) == 0) 
         result = false 
         exit loop 
        end if 

       end loop 
       return result 
      end Method 

     end Class 
    End Package 
End Project 

Java代碼:

package printTheFirstNPrimesPackage; 
import java.util.*; 

public class PrintTheFirstNPrimes { 
    public static void main(String [] args) { 
     int numberOfPrimes; 
     Scanner primes = new Scanner(System.in); 
     System.out.println("How many prime numbers do you want?"); 
     numberOfPrimes = primes.nextInt(); 
     // Call the method PrintNPrimes(numberOfPrimes) 
    } 
    public static void PrintNPrimes(int n) { 
     int i; 
     int myNum; 
     myNum = 2; // The first prime number 
     i = 0; { 
     while (i < n) 
//  if IsPrime(myNum) // Call the IsPrime method (see below) { 
       i = i + 1; 
       System.out.println(myNum); 
     myNum = myNum + 1; 
     } 
    } 
    public static boolean IsPrime(int number) { 
     boolean result; 
     result = true; 
     int i = 2; 
     while (i < number) { 
      if ((number % 1) == 0) 
       result = false; 
      } 
     return result; 
     } 
    } 

我的主要問題是調用如果內使用isPrime方法聲明。我得到一個錯誤,說IsPrime不能從int轉換爲布爾值,但我知道這個僞代碼限制了我做其他事情。我還希望就如何在main方法中調用PrintNPrimes方法提供建議。謝謝。

+0

請複製並粘貼確切的錯誤消息。我相信一些重要細節已經在你的解釋中失去了。 –

+1

應該是'if(isPrime(number)){'instead? –

+1

這裏也有相當多的大括號在錯誤的地方。 'i = 0;'上的大括號應該在「while」之後向下移動一行。 'System.out.println(myNum)'後面還應該有一個大括號;'更不用說你需要在IsPrime內的循環中增加i(以及用I代替1)。寫一個真正的答案太累了,但這裏有一段代碼(http://ideone.com/drG9p)。 – Lalaland

回答

1

因爲您的PrintNPrimes是靜態方法,您可以通過傳遞numberofPrimes來調用該方法。

例子:

public static void main(String [] args) { 
     int numberOfPrimes; 
     Scanner primes = new Scanner(System.in); 
     System.out.println("How many prime numbers do you want?"); 
     numberOfPrimes = primes.nextInt(); 
     PrintNPrimes(numberOfPrimes); 
    } 
    .......... 

注:Java命名約定,建議使用首字母爲小寫字母,同時定義方法。

您可以按照相同的方法來調用其他方法。

+0

這很有幫助。謝謝 – user1727642

1

如果IsPrime(myNum的)

需求是

如果(IsPrime(myNum的))

此外,一定要恢復你的花括號。我看不出有什麼理由會導致錯誤。如果您仍有問題,請發佈確切的錯誤消息。

+0

這工作,謝謝。 – user1727642

+0

請務必接受關閉問題的答案,並對任何您認爲有用的信息進行up-vote(當您有足夠的代表時)。 –

1

更新,分辨率下面的代碼爲兩者(包括if語句)的編譯錯誤

printNPrimes(numberOfPrimes);

if (isPrime(myNum)) // Call the IsPrime method (see below) {

完全更新的代碼:

public static void main(String [] args) { 
    int numberOfPrimes; 
    Scanner primes = new Scanner(System.in); 
    System.out.println("How many prime numbers do you want?"); 
    numberOfPrimes = primes.nextInt(); 
    printNPrimes(numberOfPrimes); 
} 
public static void printNPrimes(int n) { 
    int i; 
    int myNum; 
    myNum = 2; // The first prime number 
    i = 0; { 
    while (i < n) 
    if (isPrime(myNum)) // Call the IsPrime method (see below) { 
      i = i + 1; 
      System.out.println(myNum); 
    myNum = myNum + 1; 
    } 
} 
public static boolean isPrime(int number) { 
    boolean result; 
    result = true; 
    int i = 2; 
    while (i < number) { 
     if ((number % 1) == 0) 
      result = false; 
     } 
    return result; 
} 

我沒不檢查邏輯。

+0

這工作,謝謝。 – user1727642

+0

@ user1727642 ..然後接受它作爲答案..選擇除答案之外的箭頭.. –