需要 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,等等。他们会帮你检查你的语法错误并给出你的建议很准确。
正如其他答案所暗示的,您的程序有几个问题。
- 您的
class
姓名首字母应大写;
- 您不能将
String
分配给 Double
;
- 由于大括号不平衡,您的
isDouble
方法在 class 的 外部
下面的代码应该可以解决您的问题。
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;
}
}
}
我正在尝试将文本文件的不同行相加,但是,并非所有行都是双精度值(某些行具有特殊字符),我必须将所有双精度值相加。但是,我一直收到这个
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,等等。他们会帮你检查你的语法错误并给出你的建议很准确。
正如其他答案所暗示的,您的程序有几个问题。
- 您的
class
姓名首字母应大写; - 您不能将
String
分配给Double
; - 由于大括号不平衡,您的
isDouble
方法在 class 的 外部
下面的代码应该可以解决您的问题。
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;
}
}
}