现在试图让它工作一个小时,我似乎无法弄明白。看了几个网上的地方,我无法发现我做错了什么。
显然,Scanner
无法找到该文件存在问题。
这是我的代码:
package week07;
import java.io.File;
import java.util.Random;
import java.util.Scanner;
public class FrequencyGenerator implements WordGenerator {
private Random random;
public FrequencyGenerator(Random r) {
File file = new File("letter-frequencies.txt");
Scanner fileScan = new Scanner(file);
double[] frequencyArray = new double[22];
for (double d : frequencyArray) {
d = Double.valueOf(fileScan.nextLine());
System.out.println(d);
}
fileScan.close();
}
public String nextWord(int n) {
return "";
}
}
以下是例外:
File: C:\Users\USER8\Desktop\cosc241\07\week07... [line: 17]
Error: Unhandled exception type java.io.FileNotFoundException
答案 0 :(得分:3)
问题不在于找不到文件,而是您的代码存在编译错误。
另一个问题是你似乎想用数字填充你的数组,除非它不会发生。
此外,由于这是2015年,您希望使用java.nio.file而不是File:
private static final Charset UTF8 = StandardCharsets.UTF_8;
private static final int LEN = 22;
// ...
public FrequencyGenerator(final Random r)
throws IOException
{
final Path path = Paths.get("letter-frequencies.txt");
try (
final BufferedReader reader = Files.newBufferedReader(path, UTF8);
) {
final double[] array = new double[LEN];
for (int i = 0; i < LEN; i++) {
array[i] = Double.valueOf(reader.readLine());
System.out.println(array[i]);
}
}
}
还有其他问题(例如,在打开文件时没有指定字符集; r
构造函数参数未使用;您的数组从不使用;如果文件将会出错有少于22行;等等),但是代码的意图没有明确说明,所以很难解决所有问题。
最后,如果您使用Java 8,则可以进一步简化代码。
答案 1 :(得分:1)
该文件应存在于您的类文件所在的同一目录中。或者在创建File对象时输入文件的相对或绝对路径作为参数。
答案 2 :(得分:-1)
尝试使用:
File file = new File("\\letter-frequencies.txt");