【问题标题】:Java: Storing numbers in vector, transfer to array, then take primes from array and store in another vectorJava:将数字存储在向量中,转移到数组,然后从数组中取素数并存储在另一个向量中
【发布时间】:2012-12-26 19:12:37
【问题描述】:

我将发布问题,然后发布我目前完成的代码。我觉得我非常接近它,但我被困在一个我似乎无法弄清楚的部分。如下:

问题:创建一个存储 N 个数字的向量。通过控制台将 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 方法运行,然后如果为真则添加到 primeVc 向量中,但我很确定这就是我遇到问题的地方。

你们看到了什么??我肯定错过了一些东西,而且我这辈子都无法弄清楚。

【问题讨论】:

  • 你真的要使用矢量吗?
  • 问题是“创建一个存储N个数字的向量。通过控制台将N个非负数输入到数组中......”这个要求表明您需要从控制台读取数字并将它们存储在数组中(读取向量)。在提取素数之前,您不需要从向量复制到数组。只需读入每个数字并将其推送到 Vector 上。
  • 听起来像是我的家庭作业。
  • 你没有调用 isPrime() 函数..
  • 如果你的老师真的要你使用 Vector 类,告诉他我们已经不是 1998 年了。 14 年了,我们不应该再使用 Vector。

标签: java arrays vector primes


【解决方案1】:

执行以下操作:

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

您还可以创建while(true) 循环并在获得0 时简单地break

【讨论】:

  • 非常感谢!考虑到我错过了这么简单的事情,我真的应该走开放松一下。圣诞快乐,新年快乐!
  • 没问题。你也是! :) 但也要考虑您的 isPrime 方法,因为它不正确。
【解决方案2】:

首先你必须调用你的函数isPrime然后如果返回值为真然后将它添加到你的第二个列表 其他的,你的函数isPrime不起作用,你的'i'的初始值为2,然后你将它增加2,所以它会为每个奇数返回值true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-02
    相关资源
    最近更新 更多