如何在Java中从CSV文件中查找素数?
我需要创建一个程序,从文件中读取任意数量的逗号分隔整数并处理这些数字 它还必须指定每个数字是否为素数;如果数字不是素数,程序将按降序显示其唯一因子 我在显示primeOrNot.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;
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