我试图将一个文本文件的不同行加起来,但是,并非所有的行都是双打(某些行具有特殊字符),我必须将所有的double值加起来。但是,我不断得到这个


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


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

最佳答案

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

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


您的class名称的首字母应为大写;
您不能将String分配给Double
由于花括号不平衡,因此您的isDouble方法不在类之外


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

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

        }
    }

10-06 12:51