我现在正在尝试学习输入/输出,我很难过。目前,我在学习书中进行一个特定的练习,我应该编写一个程序来读取包含两列浮点数的文件,提示用户输入文件名,然后打印每列的平均值。
这主要是最简单的方法吗,还是应该将其安排到方法中?到目前为止,这是我想出的:
/**
* @param args
*/
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter the File Name: ");
String fileNameReading = in.next();
in.close();
try {
getAverage(fileNameReading);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void getAverage(String fileNameReading1) throws IOException {
double firstColumnSum = 0; //Skapar summa för den första kolumnen
double secondColumnSum = 0; //Skapar summa för den andra kolumen
int allRows = 0; //Skapar summa för antalet rader
while (in.hasNextLine()) {
String[] row = in.nextLine().split("\\s+"); //Skapar arrayen rows
firstColumnSum += Double.parseDouble(row[0]);
secondColumnSum += Double.parseDouble(row[1]);
allRows++;
}
double row1 = firstColumnSum / allRows;
double row2 = secondColumnSum / allRows;
in.close();
System.out.printf("Medelvärdet på den första kolumnen är: %.2f\n",row1);
System.out.printf("Medelvärdet på den andra kolumnen är: %.2f\n", row2);
}
目前的问题是扫描仪无法工作,因为它使用的不是main方法,该如何使用?
答案 0 :(得分:0)
这应该有效
package org.test;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class readFile {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter the File Name: ");
String fileNameReading = in.next();
in.close();
try {
getAverage(fileNameReading);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void getAverage(String fileNameReading) throws IOException {
FileInputStream fis;
try {
fis = new FileInputStream(fileNameReading);
InputStreamReader input = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(input);
String data;
double avg = 0;
String[] doublearray = null;
while ((data = br.readLine()) != null) {
doublearray = data.split(" "); // assuming the file contains only one line like x y , x and y are doubles
}
if(doublearray!= null && doublearray.length>0){
avg = (Double.parseDouble(doublearray[0])+Double.parseDouble(doublearray[1]))/2;
}
System.out.println("The Average of Double values is : "+avg);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:0)
仅在getAverage()
循环之前将这些行放在while
中,以便您启动一个新的Scanner
来读取文件的内容:
File file = new File(fileNameReading1);
Scanner in = null;
try {
in = new Scanner(file);
} catch (FileNotFoundException e) {
System.out.println("File not found");
e.printStackTrace();
return;
}
编辑,此行:
in = new Scanner(file);
构建一个新的扫描仪,该扫描仪生成从 指定的文件。
(来自Scanner.java)
因此,in
扫描程序对象将用于获取文件的行。