1

参考:私は初心者です。また、メソッドの呼び出しは初心者の概念であり、このようなスレッドがすでにいくつかあることを理解しています。私のプログラムが同じようにミラーリングしなければならない疑似コードによって非常に制限されているため、私の状況は少し異なります。メイン内からメソッドを呼び出すなど、他のメソッドからメソッドを呼び出すのに問題があります。ここに私が書いたコードが続く疑似コードがあります:

疑似コード:

// 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

ジャバコード:

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;
        }
    }

私の主な問題は、if ステートメント内で IsPrime メソッドを呼び出すことです。IsPrime を int から boolean に変換できないというエラーが表示されましたが、これは知っていましたが、疑似コードにより、他の多くのことを制限されています。また、main メソッド内で PrintNPrimes メソッドを呼び出す方法についてもアドバイスをお願いします。ありがとう。

4

3 に答える 3

1

if IsPrime(myNum)

する必要があります

if (IsPrime(myNum))

また、必ず中括弧を元に戻してください。これがエラーを引き起こす理由はわかりません。それでも問題が解決しない場合は、正確なエラー メッセージを投稿してください。

于 2012-10-08T03:39:19.870 に答える
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;
}

ロジックを確認していません。

于 2012-10-08T03:41:10.363 に答える
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 の命名規則では、メソッドを定義する際に最初の文字を小文字として使用することが推奨されています。

同じアプローチに従って、他のメソッドを呼び出すことができます。

于 2012-10-08T03:32:05.470 に答える