为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

MMMHUHU 2021-11-24 20:16:38
我现在正在尝试学习输入/输出,但我真的很难做到。目前,我被困在我的学习书中的一个特定练习上,我应该编写一个程序来读取包含两列浮点数的文件,提示用户输入文件名,然后打印每列的平均值.主要是用最简单的方法做这一切,还是应该把它安排成方法?这是我到目前为止想出的:/** * @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 的方法,我该如何让它工作?
查看完整描述

2 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

把这些线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 对象将用于获取文件的行。


查看完整回答
反对 回复 2021-11-24
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

这应该工作


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();

    }

   }

}


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 281 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信