Java:在向量中存储数字,传输到数组,然后从数组中获取素数并存储在另一个向量中

时间:2012-12-26 19:12:37

标签: java arrays vector primes

我将发布问题,然后发布我目前所做的代码。我觉得我已经非常接近它,但我陷入了一个我似乎无法弄清楚的部分。这是:

问题:创建一个存储N个数字的Vector。通过控制台在阵列中输入N个非负数。然后创建另一个Vector,它只存储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向量,但我很确定这就是我遇到问题的地方。

你们看到了什么?我肯定错过了一些东西,不能为我的生活弄明白。

2 个答案:

答案 0 :(得分:2)

做类似的事情:

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

此外,您可以创建while(true)循环,只需break即可获得0

答案 1 :(得分:0)

首先你必须打电话给你的功能isPrime然后如果返回值为真,那么将它添加到你的第二个列表 等等,你的功能isPrime不会起作用,你的初始价值是{i}。是2,然后你将它递增2,所以它将为每个奇数返回值true