猿问

编写一个程序,提示输入文件名后读取文件

我现在正在尝试学习输入/输出,但我真的很难做到。目前,我被困在我的学习书中的一个特定练习上,我应该编写一个程序来读取包含两列浮点数的文件,提示用户输入文件名,然后打印每列的平均值.


主要是用最简单的方法做这一切,还是应该把它安排成方法?这是我到目前为止想出的:


/**

 * @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 的方法,我该如何让它工作?


MMMHUHU
浏览 282回答 2
2回答

有只小跳蛙

把这些线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,它生成从指定文件扫描的值。(来自 Scanner.java)因此inScanner 对象将用于获取文件的行。

慕姐4208626

这应该工作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();    }   }}
随时随地看视频慕课网APP

相关分类

Java
我要回答