Java 创建类文件时出现问题
我正在创建一个程序来读取和输出棒球统计数据。我试图创建一个类文件,读取txt文件,该文件由球队名称和20次击球平均数组成 我需要帮助确保我使用的代码正确读取文本文件,以及如何创建最后3个方法 迄今为止的代码: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
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++;
}
}