需要 FileReader class、接口或枚举

FileReader class, interface, or enum expected

我正在尝试将文本文件的不同行相加,但是,并非所有行都是双精度值(某些行具有特殊字符),我必须将所有双精度值相加。但是,我一直收到这个

ERROR:class, interface, or enum expected

用于 isDouble 方法。任何帮助将不胜感激!

import java.util.*;
import java.io.*;

public class quiz4
{
    public static void main(String[] args)
    {
        File input = new File("mystery.txt");
        try
        {
            double answer = 0;
            FileReader fr = new FileReader(input);
            BufferedReader br = new BufferedReader(fr);
            String currentLine = br.readLine();
            while (currentLine != null)
            {
                currentLine = br.readLine();
                if (isDouble(currentLine))
                {
                    double temp = Double.parseDouble(currentLine);
                    answer = currentLine + temp;
                }
                else
                {
                    continue;
                }
            }
        }
        catch (Exception e)
        {
        }
    }

    public static boolean isDouble(String cu)
    {
        try
        {
            double value = Double.parseDouble(cu);
            return true;
        }
        catch (NumberFormatException e)
        {
            return false;
       }
    }
}

您的 isDouble(String cu) 方法不在 class 中:

catch(Exception e){}
    } //closing brace for main method
} //closing brace for the class
public static boolean isDouble(String cu){

只要确保在这个方法之后右括号是平衡的。

这将解决您的问题

import java.util.*;
import java.io.*;

public class quiz4{
    public static void main(String[] args){
        File input = new File("mystery.txt");
        try{
            double answer = 0;
            FileReader fr = new FileReader(input);
            BufferedReader br = new BufferedReader(fr);
            String currentLine = null;
            while((currentLine = br.readLine()) != null){
                if(isDouble(currentLine)){
                    double temp = Double.parseDouble(currentLine);
                    answer = Double.parseDouble(currentLine) + temp;
                }
                else{
                    continue;
                }
            }
        }catch(Exception e){

        }
    }

        public static boolean isDouble(String cu){
            try {
            double value = Double.parseDouble(cu);
            return true;
        } catch (NumberFormatException e) {
            return false;
        }
    }

}

首先,我真的建议你使用IDE,比如IntelliJ IDEA, Eclipse,等等。他们会帮你检查你的语法错误并给出你的建议很准确。

正如其他答案所暗示的,您的程序有几个问题。

  1. 您的 class 姓名首字母应大写;
  2. 您不能将 String 分配给 Double
  3. 由于大括号不平衡,您的 isDouble 方法在 class
  4. 外部

下面的代码应该可以解决您的问题。

    public class Quiz4 {
        public static void main(String[] args) {
            File input = new File("mystery.txt");
            try {
                double answer = 0;
                FileReader fr = new FileReader(input);
                BufferedReader br = new BufferedReader(fr);
                String currentLine = br.readLine();
                while (currentLine != null) {
                    currentLine = br.readLine();
                    Double curDouble = tryParseDouble(currentLine);
                    if (curDouble != null) {
                        answer += curDouble;
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public static Double tryParseDouble(String str) {
            try {
                return Double.parseDouble(str);
            } catch (Exception e) {
                return null;
            }

        }
    }