Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建类文件时出现问题_Java_Class_Text_Methods_Java 7 - Fatal编程技术网

Java 创建类文件时出现问题

Java 创建类文件时出现问题,java,class,text,methods,java-7,Java,Class,Text,Methods,Java 7,我正在创建一个程序来读取和输出棒球统计数据。我试图创建一个类文件,读取txt文件,该文件由球队名称和20次击球平均数组成 我需要帮助确保我使用的代码正确读取文本文件,以及如何创建最后3个方法 迄今为止的代码: import java.util.Scanner; public class BaseballStats { private String fileName; private String teamName; private double[] battingAv

我正在创建一个程序来读取和输出棒球统计数据。我试图创建一个类文件,读取txt文件,该文件由球队名称和20次击球平均数组成

我需要帮助确保我使用的代码正确读取文本文件,以及如何创建最后3个方法

迄今为止的代码:

import java.util.Scanner;

public class BaseballStats {

    private String fileName;
    private String teamName;
    private double[] battingAverage = new double[20];

    public BaseballStats(String fileName) {
        this.fileName = fileName;
        boolean firstLine = true;
        Scanner input = new Scanner(fileName);
        while (input.hasNextLine()) {
            String line = input.nextLine();
            if (firstLine) {
                setTeamName(line);
                firstLine = false;
                continue;
            }
            int i = 0;
            while (input.hasNext()) {
                battingAverage[i] = input.nextDouble();
                i++;
            }
        }
    }

    public String getTeamName() {
        return teamName;
    }

    public void setTeamName(String newTeamName) {
        teamName = newTeamName;
    }

    public double findMaxAverage() {
        double max = battingAverage[0];
        for (int i = 1; i < battingAverage.length; i++) {
            if (battingAverage[i] > max)
                max = battingAverage[i];
        }
        return max;
    }

    public double findMinAverage() {
        double min = battingAverage[0];
        for (int i = 1; i < battingAverage.length; i++) {
            if (battingAverage[i] < min)
                min = battingAverage[i];
        }
        return min;
    }
}
公共双差价()

返回最高和最低击球平均值之间的差值

公共玩家()

返回平均值大于.300的玩家数

公共字符串toString()


返回一个字符串,该字符串包含球队名称,后跟格式化为小数点后三位的所有击球平均值。

如果尚未创建文件对象,则只需读取字符串文件名

this.fileName = fileName;
boolean firstLine = true;

try {
    File file = new File(fileName);     // you need to create a File object
    Scanner input = new Scanner(file);  // then pass that File to the scanner
catch(FileNotFoundException ex) {
    ex.printStackTrace())
}

while (input.hasNextLine()) {
    ...
}
通过所做的操作,您将读取字符串文件名,例如“file.txt”

所以扫描仪只是读取字符串“file.txt”,而不是文件

读取字符串后,什么都没有了。因此数组中的所有值都保持为0。这就是为什么你总是得到0.0的结果

编辑:

导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.Scanner;
公共类BaseBallStats{
私有字符串文件名;
私有字符串teamName;
私人双人[]击球平均数=新双人[20];
公共BaseBallStats(字符串文件名){
this.fileName=文件名;
布尔第一行=真;
扫描仪输入=空;
试一试{
File File=新文件(fileName);//您需要创建一个File对象
输入=新扫描仪(文件);//然后将该文件传递给扫描仪
}捕获(FileNotFoundException ex){
例如printStackTrace();
}
while(input.hasNextLine()){
String line=input.nextLine();
如果(第一线){
设置名称(行);
firstLine=false;
}
int i=0;
while(input.hasNext()){
battingAverage[i]=input.nextDouble();
i++;
}
}
}
公共字符串getTeamName(){
返回团队名称;
}
public void setTeamName(字符串newTeamName){
团队名称=新团队名称;
}
公共双findMaxAverage(){
双倍最大值=击球平均[0];
对于(int i=1;i最大值){
最大值=击球平均数[i];
}
}
返回最大值;
}
公共双findMinAverage(){
双最小值=击球平均值[0];
对于(int i=1;i
您可以使用上面的构造函数来代替您使用过的构造函数。为了让扫描仪对象读取文件,需要将文件作为参数传递。你在传递一根绳子。您需要像上面那样创建一个file对象。此外,您可以使用hasNextDouble()代替input.hasNextLine(),因为您的文件中只有两个值

对于最后3种方法

public double spread()--您已经有了最小和最大平均值的方法。您可以将每个变量(最小和最大)的两个变量声明为全局变量,并在此方法中使用它们来计算价差

public int goodPlayers()--遍历数组并获取平均值高于.300的玩家数,就像您在min和max average方法中进行迭代一样


公共字符串toString()--您可以使用StringBuilder类并在字符串中附加所需的值。检查

某个人编辑代码的文档。请接受它。没有人编辑它,他们只是删除了一个标记?你能提供一个你试图阅读的文件的示例吗?好的,上面列出的文本文件你在问题中谈论的最后3种方法是什么?我把它放进去,发现了19个错误:错误:“try”而不是“catch”,“finally”或“resource declarations FSee My edit”。它适用于最大平均位,而不是最小位。您可能必须修复逻辑才能找到我在编辑中输入的minok,并且它编译时没有错误,但当我运行它时:java.io.FileNotFoundException:tars.txt(系统找不到指定的文件)无需将文件放在同一文件夹中,max确实工作,但我仍在处理minI找到了解决方案。到0.0。您需要删除
继续
。我运行了它,它运行得很好。
this.fileName = fileName;
boolean firstLine = true;

try {
    File file = new File(fileName);     // you need to create a File object
    Scanner input = new Scanner(file);  // then pass that File to the scanner
catch(FileNotFoundException ex) {
    ex.printStackTrace())
}

while (input.hasNextLine()) {
    ...
}
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class BaseBallStats {

    private String fileName;
    private String teamName;
    private double[] battingAverage = new double[20];

    public BaseBallStats(String fileName) {
        this.fileName = fileName;
        boolean firstLine = true;
        Scanner input = null;
        try {
            File file = new File(fileName);     // you need to create a File object
            input = new Scanner(file); // then pass that File to the scanner
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        }

        while (input.hasNextLine()) {
            String line = input.nextLine();
            if (firstLine) {
                setTeamName(line);
                firstLine = false;
            }
            int i = 0;
            while (input.hasNext()) {
                battingAverage[i] = input.nextDouble();
                i++;
            }
        }
    }

    public String getTeamName() {
        return teamName;
    }

    public void setTeamName(String newTeamName) {
        teamName = newTeamName;
    }

    public double findMaxAverage() {
        double max = battingAverage[0];
        for (int i = 1; i < battingAverage.length; i++) {
            if (battingAverage[i] > max) {
                max = battingAverage[i];
            }
        }
        return max;
    }

    public double findMinAverage() {
        double min = battingAverage[0];
        for (int i = 1; i < battingAverage.length; i++) {
            if (battingAverage[i] < min) {
                min = battingAverage[i];
            }
        }
        return min;
    }

    public static void main(String[] args) {
        BaseBallStats stats = new BaseBallStats("file.txt");
        System.out.println(stats.findMaxAverage());
        System.out.println(stats.findMinAverage());
    }

}
public BaseballStats (String fileName) throws FileNotFoundException {
   this.fileName = fileName;
   File f = new File (fileName);
   Scanner input = new Scanner (f);
   String line = input.nextLine ();
   setTeamName (line);
   int j = 0;
   while (input.hasNextDouble ()) {
       battingAverage[j] = input.nextDouble ();
       j++;
   }
}