我更新了代码,但它在
中引发了一个新错误List<String> temps = new LinkedList<String>();
错误是:
错误:类型列表不带参数 列表temps = new LinkedList();
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if (selectedFile == null) {
return; // no file selected. Get out of here
}
String token1 = "";
Scanner inFile1 = null;
try {
inFile1 = new Scanner(selectedFile);
List<String> temps = new LinkedList<String>();
// while loop
while(inFile1.hasNext()){
// find next line
token1 = inFile1.next();
// initialize temps
temps.add(token1);
}
// close inFile1
inFile1.close();
// create array
String[] tempsArray = temps.toArray(new String[0]);
// for-each loop
String ArabicWord="";
for(String s : tempsArray){
ArabicWord = ArabicWord + " " + s;
}
String finalResult="";
for (String retval: ArabicWord.split(" ")){
ArabicStemmer Stemmer=new ArabicStemmer();
finalResult= finalResult + " " + String.valueOf(Stemmer.stemWord(retval));
}
jTextArea1.setText(finalResult);
}
catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
}
答案 0 :(得分:1)
我可以为我的班级提供所选文件的文件字段,比如称为选定文件:
private File selectedFile = null;
然后在第一个动作侦听器中,为该字段分配一个值:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser chooser=new JFileChooser();
int returnVal = chooser.showOpenDialog(null);
if (returnVal == JFileChooser.APPROVE_OPTION) {
selectedFile = chooser.getSelectedFile();
String filename=F.getName();
jTextField1.setText(filename);
}
}
然后在下一位代码中使用selectedFile。 Java抱怨您尝试在不捕获异常的情况下初始化扫描程序,因此您应该遵循错误消息的建议:捕获您的异常。
例如:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
if (selectedFile == null) {
return; // no file selected. Get out of here
}
String token1 = "";
Scanner inFile1 = null;
try {
inFile1 = new Scanner(selectedFile);
} catch (FileNotFoundException e) {
e.printStackTrace();
return;
}
// .....
你绝对需要阅读一两篇关于如何处理异常的教程。 Google会帮您找到这些。
修改强>
您在评论中说明:
错误:类型List不带参数List temps = new LinkedList();
我担心这可能是由于您导入java.awt.*
。如果你的代码有这一行:
import java.awt.*;
删除它,因为您将编译器混淆为您尝试使用的List类型。您正在尝试使用java.util.List
,但编译器可能认为您使用的是java.awt.List
。解决此问题的最佳方法是导入您正在使用的特定awt类,而不是使用通配符*
进行导入。有时您必须完全放弃导入,只需在代码中使用完全指定的类名。例如,有时您必须走这条路线:
java.util.List<String> myList = new java.util.LinkedList<String>();