Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 小错误我不知道';“我不知道如何修理,”他说;“不是一个陈述”;_Java_Syntax Error - Fatal编程技术网

Java 小错误我不知道';“我不知道如何修理,”他说;“不是一个陈述”;

Java 小错误我不知道';“我不知道如何修理,”他说;“不是一个陈述”;,java,syntax-error,Java,Syntax Error,我试图做的是从最终用户那里获取输入,并将其写入名为dictionary.txt的文件中。然后,我尝试检查最终用户输入的单词是否不在dictionary.txt文件中,因为我不希望重复。如果单词不在字典中,则它将存储在dictionary.txt中。我遇到的问题是一个编译错误,它告诉我Project3.java:81:nota语句FileWriter aDictionary=newfilewriter(“dictionary.txt”,true) public static void addNew

我试图做的是从最终用户那里获取输入,并将其写入名为dictionary.txt的文件中。然后,我尝试检查最终用户输入的单词是否不在dictionary.txt文件中,因为我不希望重复。如果单词不在字典中,则它将存储在dictionary.txt中。我遇到的问题是一个
编译错误
,它告诉我
Project3.java:81:nota语句FileWriter aDictionary=newfilewriter(“dictionary.txt”,true)

public static void addNewWord()引发IOException
{
字符串newWord=“”;
newWord=JOptionPane.showInputDialog(null,“输入要添加到词典中的单词”);
字符串aLineFromFile=“”;
字符串filename=“dictionary.txt”;
ArrayList字典=新的ArrayList();
文件结果文件=新文件(文件名);
扫描仪填充=新扫描仪(结果文件);
while(infle.hasNext())
aLineFromFile=infle.nextLine();
if(aLineFromFile.startsWith(newWord))
{
添加(aLineFromFile);
showMessageDialog(null,“单词已经是字典”);
addNewWord();
}
其他的
FileWriter aDictionary=新的FileWriter(“dictionary.txt”,true);
PrintWriter out=新的PrintWriter(词典);
out.println(newWord);
out.close();
aDictionary.close();
返回;
}
我已经导入了
java.io.*;javax.swing.*;java.awt.Dimension;java.util.*

如果有人能告诉我为什么会出现此错误,并告诉我如何修复此错误,我将不胜感激。

将其他代码放入此
{}
块中

像这样

else{
         FileWriter aDictionary = new FileWriter("dictionary.txt", true);
         PrintWriter out = new PrintWriter(aDictionary);
         out.println(newWord);
         out.close();
         aDictionary.close();
      }

别忘了缩进好,它有助于看到丢失的大括号和范围

这应该更好地发挥作用:

public static void addNewWord() throws IOException {
    String newWord = JOptionPane.showInputDialog(null, "Enter the word you want to add to your dictionary.");
    String filename = "dictionary.txt";
    File resultsFile = new File(filename);
    Scanner inFile = new Scanner(resultsFile);
    List<String> dictionary = new ArrayList<String>();
    while (inFile.hasNext()) {
        String aLineFromFile = inFile.nextLine();
        if (aLineFromFile.startsWith(newWord)) {
            dictionary.add(aLineFromFile);
            JOptionPane.showMessageDialog(null, "Word already is dictionary");
            addNewWord();
        } else {
            FileWriter aDictionary = new FileWriter("dictionary.txt", true);
            PrintWriter out = new PrintWriter(aDictionary);
            out.println(newWord);
            out.close();
            aDictionary.close();
        }
    }
}
public static void addNewWord()引发IOException{
String newWord=JOptionPane.showInputDialog(null,“输入要添加到词典中的单词”);
字符串filename=“dictionary.txt”;
文件结果文件=新文件(文件名);
扫描仪填充=新扫描仪(结果文件);
列表字典=新的ArrayList();
while(infle.hasNext()){
字符串aLineFromFile=infle.nextLine();
if(aLineFromFile.startsWith(newWord)){
添加(aLineFromFile);
showMessageDialog(null,“单词已经是字典”);
addNewWord();
}否则{
FileWriter aDictionary=新的FileWriter(“dictionary.txt”,true);
PrintWriter out=新的PrintWriter(词典);
out.println(newWord);
out.close();
aDictionary.close();
}
}
}

使用以下修改后的代码。你错过了while循环和else阻塞后的大括号

public static void addNewWord() throws IOException {
    String newWord = "";
    newWord = JOptionPane.showInputDialog(null, "Enter the word you want to add to your dictionary.");
    String aLineFromFile = "";
    String filename = "dictionary.txt";
    ArrayList<String> dictionary = new ArrayList<String>();
    File resultsFile = new File(filename);
    Scanner inFile = new Scanner(resultsFile);

    while (inFile.hasNext()) {
        aLineFromFile = inFile.nextLine();
        if (aLineFromFile.startsWith(newWord)) {
            dictionary.add(aLineFromFile);
            JOptionPane.showMessageDialog(null, "Word already is dictionary");
            addNewWord();
        } else {
            FileWriter aDictionary = new FileWriter("dictionary.txt", true);
            PrintWriter out = new PrintWriter(aDictionary);
            out.println(newWord);
            out.close();
            aDictionary.close();
        }
    }
}
public static void addNewWord()引发IOException{
字符串newWord=“”;
newWord=JOptionPane.showInputDialog(null,“输入要添加到词典中的单词”);
字符串aLineFromFile=“”;
字符串filename=“dictionary.txt”;
ArrayList字典=新的ArrayList();
文件结果文件=新文件(文件名);
扫描仪填充=新扫描仪(结果文件);
while(infle.hasNext()){
aLineFromFile=infle.nextLine();
if(aLineFromFile.startsWith(newWord)){
添加(aLineFromFile);
showMessageDialog(null,“单词已经是字典”);
addNewWord();
}否则{
FileWriter aDictionary=新的FileWriter(“dictionary.txt”,true);
PrintWriter out=新的PrintWriter(词典);
out.println(newWord);
out.close();
aDictionary.close();
}
}
}

这是您的代码,但这只是问题的开始:

    public static void addNewWord() throws IOException {
        String newWord;
        newWord = JOptionPane.showInputDialog(null, "Enter the word you want to add to your dictionary.");
        String aLineFromFile = "";
        String filename = "dictionary.txt";
        ArrayList<String> dictionary = new ArrayList<String>();
        File resultsFile = new File(filename);
        Scanner inFile = new Scanner(resultsFile);
        while (inFile.hasNext()) {
            aLineFromFile = inFile.nextLine();
            if (aLineFromFile.startsWith(newWord)) {
                dictionary.add(aLineFromFile);
                JOptionPane.showMessageDialog(null, "Word already is dictionary");
                addNewWord();
            } else {
                FileWriter aDictionary = new FileWriter("dictionary.txt", true);
                PrintWriter out = new PrintWriter(aDictionary);
                out.println(newWord);
                out.close();
                aDictionary.close();
            }
        }
    }
public static void addNewWord()引发IOException{
字符串新词;
newWord=JOptionPane.showInputDialog(null,“输入要添加到词典中的单词”);
字符串aLineFromFile=“”;
字符串filename=“dictionary.txt”;
ArrayList字典=新的ArrayList();
文件结果文件=新文件(文件名);
扫描仪填充=新扫描仪(结果文件);
while(infle.hasNext()){
aLineFromFile=infle.nextLine();
if(aLineFromFile.startsWith(newWord)){
添加(aLineFromFile);
showMessageDialog(null,“单词已经是字典”);
addNewWord();
}否则{
FileWriter aDictionary=新的FileWriter(“dictionary.txt”,true);
PrintWriter out=新的PrintWriter(词典);
out.println(newWord);
out.close();
aDictionary.close();
}
}
}
我认为这是个糟糕的构思。没有理由将这样的功能与UI/Swing类混为一谈。将两者分开,否则如果没有Swing UI,您将永远无法使用此方法。这称为关注点分层或分离。

更好的格式:

public static void addNewWord()throws IOException {

    String newWord = "";
    newWord = JOptionPane.showInputDialog(null, "Enter the word you want to add to your dictionary.");
    String aLineFromFile = "";
    String filename = "dictionary.txt";
    ArrayList<String> dictionary = new ArrayList<String>();
    File resultsFile = new File(filename);
    Scanner inFile = new Scanner(resultsFile);

    while (inFile.hasNext()) {
        aLineFromFile = inFile.nextLine();
        if (aLineFromFile.startsWith(newWord)) {
            dictionary.add(aLineFromFile);
            JOptionPane.showMessageDialog(null, "Word already is dictionary");
            addNewWord();
        }

        else {
            FileWriter aDictionary = new FileWriter("dictionary.txt", true);
            PrintWriter out = new PrintWriter(aDictionary);
            out.println(newWord);
            out.close();
            aDictionary.close();
        }
    }

    return;
}
public static void addNewWord()引发IOException{
字符串newWord=“”;
newWord=JOptionPane.showInputDialog(null,“输入要添加到词典中的单词”);
字符串aLineFromFile=“”;
字符串filename=“dictionary.txt”;
ArrayList字典=新的ArrayList();
文件结果文件=新文件(文件名);
扫描仪填充=新扫描仪(结果文件);
while(infle.hasNext()){
aLineFromFile=infle.nextLine();
if(aLineFromFile.startsWith(newWord)){
添加(aLineFromFile);
showMessageDialog(null,“单词已经是字典”);
addNewWord();
}
否则{
FileWriter aDictionary=新的FileWriter(“dictionary.txt”,true);
PrintWriter out=新打印
public static void addNewWord()throws IOException {

    String newWord = "";
    newWord = JOptionPane.showInputDialog(null, "Enter the word you want to add to your dictionary.");
    String aLineFromFile = "";
    String filename = "dictionary.txt";
    ArrayList<String> dictionary = new ArrayList<String>();
    File resultsFile = new File(filename);
    Scanner inFile = new Scanner(resultsFile);

    while (inFile.hasNext()) {
        aLineFromFile = inFile.nextLine();
        if (aLineFromFile.startsWith(newWord)) {
            dictionary.add(aLineFromFile);
            JOptionPane.showMessageDialog(null, "Word already is dictionary");
            addNewWord();
        }

        else {
            FileWriter aDictionary = new FileWriter("dictionary.txt", true);
            PrintWriter out = new PrintWriter(aDictionary);
            out.println(newWord);
            out.close();
            aDictionary.close();
        }
    }

    return;
}