0

質問を投稿してから、現在行っているコードを投稿します。私はそれを手に入れるのにかなり近いように感じますが、私は理解できないように見える部分で立ち往生しています。ここに行きます:

質問:N個の数値を格納するベクトルを作成します。コンソールを介してN個の非負の数をアレイに入力します。次に、N個の数からM個の素数のみを格納する別のベクトルを作成します。

これまでの私のコード:

import java.util.*;

public class VectorPrimes {

    public static Vector<Integer> inputVc = new Vector<Integer>();
    public static Vector<Integer> primeVc = new Vector<Integer>(inputVc);

    public static boolean isPrime(int n) {
        boolean prime = true;
        for (int i = 2; i * i <= n; i+= 2) {
            if (n % i == 0) {
                prime = false;
                break;
            }
        }

        return prime;
    }

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out
                .println("This program will take input of positive numbers and output"
                        + " prime numbers, if any, from the input numbers.");

        System.out
                .println("Input a positive number to check for prime numbers: ");



        boolean looping = true;

        while (looping) {
            System.out
                    .println("Input '0' to finish inputting numbers and print the primes.");
            String userin = scan.nextLine();
            int input = Integer.parseInt(userin);

            if (input != 0) {

                System.out.println("Enter next number: ");

                inputVc.add(input);
            } else if (input == 0) {
                //Integer[] inputArray = inputVc.toArray(new Integer[inputVc.size()]);
                looping = false;



                System.out.println(inputVc);
                System.out.print(primeVc);
                System.exit(0);
            }

        }

    }
}  

それが最善の方法ではないと確信していますが、それは私が今のところ持っていることです。明確にするために、入力ベクトル(inputVc)から入力された数値を配列(inputArray)に入れ、素数を素数ベクトル(primeVc)に格納して出力するのに問題があります。3つまたは4つの異なる方法を試しましたが、primeVcベクトルに格納するものが何も取得できず、印刷が空白のままになります。

私はコードを求めていません。私が理解しようとしているのは、primeVcベクトルに入力された素数を取得して印刷する方法です。もちろん、inputVc番号はisPrimeメソッドを介して実行し、trueの場合はprimeVcベクトルに追加する必要がありますが、ここで問題が発生していると確信しています。

何が見えますか?私は間違いなく何かが欠けていて、私の人生のためにそれを理解することはできません。

4

2 に答える 2

2

次のようなことをします:

//...
if (input != 0) {
    System.out.println("Enter next number: ");
    inputVc.add(input);
    if (isPrime(input))
        primeVc.add(input);
}
//...

また、ループを作成して、取得するときにwhile(true)単純にループを作成することもできます。break0

于 2012-12-26T19:18:39.057 に答える
0

最初に関数を呼び出す必要があります。isPrime次に、戻り値がtrueの場合、それを2番目のリストに追加します。関数は機能isPrimeせず、「i」の初期値は2です。次に、2ずつインクリメントします。true奇数ごとに値を返します

于 2012-12-26T19:25:44.710 に答える