我遇到了我的一项家庭作业问题,我认为我已经完成了所有工作,直到最后一部分是调用方法并将该方法写入输出文件。这是作业:
编写一个方法isPrime,该方法接受一个数字并确定是否 数字是素数还是不是素数。它返回一个布尔值。
编写一个主要方法,要求用户输入包含以下内容的输入文件 数字和一个输出文件名,它将在其中写入质数 至。
Main打开输入文件,并在每个数字上调用isPrime。主要 将质数写入输出文件。
修改main以抛出适当的异常以进行处理 文件。
我尝试了几种不同的方法来用输出文件编写该方法,但是我不确定该怎么做。
public static void main(String[] args) throws IOException {
Scanner keyboard = new Scanner(System.in);
System.out.println("What is the name of the input file?");
String inputfile = keyboard.nextLine();
File f = new File(inputfile);
System.out.println("What is the name of the output file?");
String outputfile = keyboard.nextLine();
Scanner inputFile = new Scanner(f);
FileWriter fw = new FileWriter(outputfile);
PrintWriter pw = new PrintWriter(new File(outputfile));
while (inputFile.hasNextLine()) {
pw.write(inputFile.nextLine().isPrime());
pw.write(System.lineSeparator());
}
pw.close();
inputFile.close();
}
public static void isPrime (int num) throws IOException {
boolean flag = false;
for (int i =2; i <= num/2; i++) {
if (num % i ==0) {
flag = true;
break;
}
}
if (!flag)
System.out.println(num + "is a prime number");
else
System.out.println(num + "is not a prime number");
}
我需要程序能够读取其他数字的输入文件,然后将这些数字中的哪一个作为质数写到输出文件中。
答案 0 :(得分:1)
您编写了“ inputFile.nextLine()。isPrime()”。但是inputFile.nextLine()会给您返回一个String。您无法在String上调用isPrime()方法,因此会出现编译错误。 您必须首先将其转换为整数,将其传递给您的方法,然后处理结果:
isPrime(Integer.parseInt(inputFile.nextLine()));
我建议您只从方法isPrime()返回一个消息字符串,而不是void,然后就可以正确处理它:
pw.write(isPrime(Integer.parseInt(inputFile.nextLine())));
附录: 我修改了您的代码,以便您可以看到在何处添加建议的行。我也省去了不必要的行。
public static void main(String[] args) throws IOException {
Scanner keyboard = new Scanner(System.in);
System.out.println("What is the name of the input file?");
String inputfile = keyboard.nextLine();
File f = new File(inputfile);
System.out.println("What is the name of the output file?");
String outputfile = keyboard.nextLine();
Scanner inputFile = new Scanner(f);
PrintWriter pw = new PrintWriter(new File(outputfile));
while (inputFile.hasNextLine()) {
String nextLine = inputFile.nextLine();
boolean isPrime = isPrime(Integer.parseInt(nextLine));
if (isPrime) {
pw.write(nextLine + System.lineSeparator());
}
}
pw.close();
inputFile.close();
}
public boolean isPrime (int num) {
for (int i = 2; i <= num / 2; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
TODO:将打开文件的代码放入try-catch-finally块中,并将close()命令放入其finally块中。 (如果您不知道为什么它最终应该放在里面,请询问)