Java 计算文本文件
我是编程新手,在我的课堂上,我们被分配了一个任务,在JavaEclipse中,我们必须编写一个程序来选择一个文本文件(记事本),该文件有四个数字并计算其平均值。我们被要求使用不同的方法,我被卡住了,我到处都在研究,什么也找不到,这是我得到的,我不知道我是否接近,我的问题是“getheaverage”方法Java 计算文本文件,java,file,text,Java,File,Text,我是编程新手,在我的课堂上,我们被分配了一个任务,在JavaEclipse中,我们必须编写一个程序来选择一个文本文件(记事本),该文件有四个数字并计算其平均值。我们被要求使用不同的方法,我被卡住了,我到处都在研究,什么也找不到,这是我得到的,我不知道我是否接近,我的问题是“getheaverage”方法 import java.io.BufferedReader; import java.io.IOException; import java.io.FileReader; import java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileReader;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
public class Week04 {
public static void main(String[] args) throws IOException {
String theFile;
theFile = getTheFileName();
double theAverage;
theAverage = getTheAverage(theFile);
displayTheResult(theAverage,"The average is; ");
}
public static String getTheFileName(){
String theFile;
JFileChooser jfc = new JFileChooser();
jfc.showOpenDialog(null);
return theFile = jfc.getSelectedFile().getAbsolutePath();
}
public static double getTheAverage(String s) throws IOException{
double theAverage = 0;
FileReader fr = new FileReader(s);
BufferedReader br = new BufferedReader(fr);
String aLine;
while ( (aLine = br.readLine()) != null) {
theAverage = Double.parseDouble(s);
}
return theAverage;
}
public static void displayTheResult(double x, String s){
JOptionPane.showMessageDialog(null,s + x);
}
}
尝试改用扫描仪对象。看起来你让这件事变得更加困难了
// Get file name from user.
Scanner scnr = new Scanner(System.in);
System.out
.println("Please enter the name of the file containing numbers to use?");
String fileName = scnr.next();
scnr.close();
// Retrieve File the user entered
// Create File object
File file = new File(fileName);
try {
// Create new scanner object and pass it the file object from above.
Scanner fileScnr = new Scanner(file);
//Create values to keep track of numbers being read in
int total = 0;
int totalNumbers = 0;
// Loop through read in file and average values.
while (fileScnr.hasNext()) {
total += fileScnr.nextInt();
totalNumbers++;
}
//Average numbers
int average = total/totalNumbers;
// Close scanner.
fileScnr.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
// Quit Program if file input is bad.
System.exit(0);
}
假设“average”表示值,则需要将所有解析的值相加,然后除以找到的值的数目。在这方面,您的代码至少有4个问题:
- Double.parseDouble()正在读取未初始化变量
,而不是刚刚读取的行(在s
中)的值aLine
- 您没有对找到的值求和
- 您没有记录找到的值的数量
- 你不是在用总数除以总数
import java.io.BufferedReader;
import java.io.IOException;
import java.io.FileReader;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import java.util.ArrayList;
public class Week04 {
public static void main(String[] args) throws IOException {
String theFile;
theFile = getTheFileName();
double theAverage;
theAverage = getTheAverage(theFile);
displayTheResult(theAverage,"The average is; ");
}
public static String getTheFileName() {
String theFile;
JFileChooser jfc = new JFileChooser();
jfc.showOpenDialog(null);
return theFile = jfc.getSelectedFile().getAbsolutePath();
}
public static double getTheAverage(String s) throws IOException {
double value = 0, numValues = 0;
FileReader fr = new FileReader(s);
BufferedReader br = new BufferedReader(fr);
String aLine;
while ( (aLine = br.readLine()) != null) {
if (aLine.equals("")) continue;
value += Double.parseDouble(aLine);
numValues++;
}
if (numValues > 1) {
return value/numValues;
} else {
return value;
}
}
public static void displayTheResult(double x, String s){
JOptionPane.showMessageDialog(null,s + x);
}
}
也许作业要求你计算不同类型的平均值,如平均值、模式、中位数等。。。1) 张贴你的实际任务。2) 发布一个明确而直接的问题,说明是什么让你困惑。