预期的FileReader类,接口或枚举

时间:2016-04-08 02:57:46

标签: java filereader

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

  

错误:预期的类,接口或枚举

用于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;
       }
    }
}

3 个答案:

答案 0 :(得分:1)

首先,我真的建议您使用IDE ,例如IntelliJ IDEAEclipse等。它们会帮助您检查语法错误并为您提供非常精确的帮助建议。

正如其他答案所示,您的计划有几个问题。

  1. class名称的第一个字母应为首都;
  2. 您无法将String分配给Double;
  3. 由于大括号不平衡,您的isDouble方法
  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;
                }
    
            }
        }
    

答案 1 :(得分:0)

您的isDouble(String cu)方法不在班级内:

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

请确保在此方法后平衡括号。

答案 2 :(得分:0)

这将解决您的问题

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;
        }
    }

}