如何在Java中从CSV文件中查找素数?

如何在Java中从CSV文件中查找素数?,java,csv,primes,Java,Csv,Primes,我需要创建一个程序,从文件中读取任意数量的逗号分隔整数并处理这些数字 它还必须指定每个数字是否为素数;如果数字不是素数,程序将按降序显示其唯一因子 我在显示primeOrNot.csv文件中的素数时遇到问题 这是我迄今为止的代码,非常感谢您的帮助: import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException;

我需要创建一个程序,从文件中读取任意数量的逗号分隔整数并处理这些数字

它还必须指定每个数字是否为素数;如果数字不是素数,程序将按降序显示其唯一因子

我在显示primeOrNot.csv文件中的素数时遇到问题

这是我迄今为止的代码,非常感谢您的帮助:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

public class PrimeFactors {

public static boolean checkForPrime(int number) {
    boolean isItPrime = true;
    if(number <= 1) {
        isItPrime = false;
        return isItPrime;
    } else {
        for(int i = 2; i <= number/2; i++ ) {
            if ((number % i) == 0) {
                isItPrime = false; 
                break;
            }
        }
        return isItPrime;
    }
}

public static void main(String[] args) {
    String path = "/Users/benharrington/Desktop/primeOrNot.csv";
    String line = "";
    try {
        BufferedReader br = new BufferedReader(new FileReader(path));
        while((line = br.readLine()) != null) {
            int i = Integer.parseInt(line);
            boolean isItPrime = checkForPrime(i);
            System.out.println(i);
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}
}
导入java.io.BufferedReader;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
公共类因素{
公共静态布尔checkForPrime(整数){
布尔isItPrime=true;

如果(编号使用此代码,则它按要求工作:

public class PrimeFactors   {

public static void findFactor(int n) {
    System.out.print("Factors for the number " + n + " is : ");
    for (int i = n; i >= 1; i--) {
        if (n % i == 0)
            System.out.print(i + " ");
    }
}

public static boolean checkForPrime(int number) {

    boolean isItPrime = true;

    if (number <= 1) {
        isItPrime = false;
        return isItPrime;
    } else {
        for (int i = 2; i <= number / 2; i++) {
            if ((number % i) == 0) {
                isItPrime = false;
                break;
            }
        }

        return isItPrime;
    }

}

public static void main(String[] args) {

    String path = "/Users/benharrington/Desktop/primeOrNot.csv";
    String line = "";

    try {
        BufferedReader br = new BufferedReader(new FileReader(path));
        ArrayList<Integer> list = new ArrayList<Integer>();

        while ((line = br.readLine()) != null) {
            String[] values = line.split(",");

            for (String str : values) {
                int i = Integer.parseInt(str);
                boolean isItPrime = checkForPrime(i);

                if (isItPrime)
                    System.out.println(i + " is Prime");
                else
                    System.out.println(i + " is not Prime");

                if (isItPrime == false) {
                    list.add(i);

                }

            }
            for (int k : list) {
                System.out.println(" ");
                findFactor(k);

            }

        }

    } catch (FileNotFoundException e) {

        e.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    }

}
}
公共类元素{
公共静态无效findFactor(int n){
系统输出打印(“数字“+n+”的系数为:”;
对于(int i=n;i>=1;i--){
如果(n%i==0)
系统输出打印(i+“”);
}
}
公共静态布尔checkForPrime(整数){
布尔isItPrime=true;

如果(数字和问题是什么?现在你正在打印你读到的所有数字。你不只是打印素数。到底是什么问题?好像你读了整行并将其传递给
parseInt
,你必须拆分字符串或使用
扫描仪。另外,检查上面的注释,你似乎完全没有看到任务要点。任务不是检查一个数字是否是素数。任务是找到并打印该数字的唯一因子。如果没有因子,那么它就是一个素数。所以忘掉素数部分吧,因为你可以免费得到它,然后努力找到给定数的因子,因为这是真正需要的部分我一直收到这个错误:线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:“11,25,17,30,50,3”位于java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)位于java.base/java.lang.Integer.parseInt(Integer.java:658)位于java.base/java.lang.Integer.parseInt(Integer.java:776)在PrimeFactors.main(PrimeFactors.java:48)现在它可以工作了,这是一个文件格式问题。我更新了代码,请再次检查。@bean