我需要一些帮助,无论我试图将其放入下面编写的代码中,它都无法正常工作。我希望它从文件Alice.txt中读取,然后将每个单词放入带有较低字母的数组ordArray中,然后使用程序的其余部分计算每个单词,每个单词的每个出现以及每个单独的单词。请帮忙!如果你能给我一些关于我可以做得更好的提示,或者我应该如何实现将信息写入文件Opplysning.txt的部分,请不要保持安静。
try {
File skrivFil = new File("Opplysning.txt");
FileWriter fw= new FileWriter(skrivFil);
BufferedWriter bw = new BufferedWriter(fw);
Scanner lesFil = new Scanner("Alice.txt");
int i=0;
int totalOrd=0;
int antUnikeOrd=0;
String[] ordArray = new String[5000];
int[] antallOrd = new int[5000];
String ord = lesFil.next().toLowerCase();
totalOrd++;
boolean ordFraFor=false;
int y=0;
int z=0;
for(i=0; i<ordArray.length; i++) {
if (ord.equals(ordArray[i])) {
antallOrd[i]++;
ordFraFor=true;
}
}
if(ordFraFor=false) {
antUnikeOrd++;
y=0;
boolean ordOpptelling=false;
while(ordOpptelling=false) {
if(ordArray[y] == null) {
ordArray[y] = ord;
antallOrd[y]++;
ordOpptelling=true;
}
y++;
}
}
for(String s: ordArray) {
System.out.println(s);
}
lesFil.close();
} catch (Exception e){
System.out.print(e);
}
}
}
编辑: 尝试添加文件,我想它工作,但我仍然无法写入数组。我真的很擅长这个,这就是为什么我必须在接下来的一周才能真正得到这些东西...... 无论如何,我试图将所有单词添加到一个arraylist中,我希望它能起作用。它没有,它给了我一个nosuchelementexception而不是。 代码的一部分:
File tekstFil = new File ("Alice.txt");
Scanner lesFil = new Scanner(tekstFil);
int i=0;
int totalOrd=0;
int antUnikeOrd=0;
ArrayList<String> liste = new ArrayList<String>();
while (lesFil.hasNext()){
liste.add(lesFil.next());
}
String[] ordArray =liste.toArray(new String[liste.size()]);;
int[] antallOrd = new int[5000];
答案 0 :(得分:2)
您的扫描程序正在尝试扫描字符串文字“Alice.txt”,而不是相应的文件。如果需要File,则先构造文件,然后将其传递给Scanner构造函数:
File textFile = new File("Alice.text"); // or file path variable
Scanner fileScanner = new Scanner(textFile);
// go to town with your Scanner
或,...
InputStream inStream = getClass().getResourceAsStream(someResourcePath);
Scanner myTextScanner = new Scanner(inStream);
接下来我们将讨论不使用ArrayList而是使用Map<String, Integer>
,例如HashMap<String, Integer>
。
修改强>
你说:
尝试添加文件,我猜它有用,但我仍然无法写入数组。我真的很擅长这个,这就是为什么我必须在接下来的一个星期才能真正得到这些东西...无论如何,我试图将所有的单词添加到一个arraylist中,我希望它能起作用。它没有,它给了我一个nosuchelementexception而不是。代码的一部分:
我建议您停止,暂停程序,并尝试单独解决程序的每个部分。首先看看你是否真的拿到了你的文件。
创建类似的东西,但当然要更改文件路径以使其有效:
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Foo {
// **** you will use a different String literal here!! ****
private static final String FILE_PATH = "src/foo/foo.txt";
public static void main(String[] args) throws FileNotFoundException {
File file = new File(FILE_PATH);
// check if file exits and if we're looking in the right place
System.out.println("File path: " + file.getAbsolutePath());
System.out.println("file exists: " + file.exists());
Scanner scan = new Scanner(file);
// scan through file to make sure that it holds the text
// we think it does, and that scanner works.
while (scan.hasNextLine()) {
String line = scan.nextLine();
System.out.println(line);
}
}
}
然后,只有在您完成此工作后,才能将文本读入ArrayList。
与往常一样,请努力改进代码格式,尤其是缩进。如果出现错误或异常,请在此处打印整个文本,并指出抛出异常的代码行。