gpt4 book ai didi

java - 如何调用 readStudents 方法?

转载 作者:行者123 更新时间:2023-11-30 01:43:48 25 4
gpt4 key购买 nike

import java.io.*;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Probability {
public static void main(String[] args)throws FileNotFoundException {

String fileName;

Scanner input = new Scanner(System.in);

System.out.println("Please enter the file name: ");
fileName = input.nextLine();

System.out.println("How many students do you have listed in the file?");
int numStudents = input.nextInt();

input.close();

Student[] students = new Student[numStudents];

//readStudents(students, numStudents, fileName);
// calls the readStudents method

//Student myStudent = new Student(name, gpa);
//System.out.println(myStudent);
// creates and prints an object of the Student class

for(int i = 0; i < students.length; i++){
System.out.println("students [" + i + "] = " + students[i]);
} // for

} // main

public static void readStudents(Student[] students, int numStudents, String fileName)throws FileNotFoundException {

Scanner fin = new Scanner(new File(fileName));

while(fin.hasNext()){
String name = fin.next();
double gpa = fin.nextDouble();
students[0] = new Student(name, gpa);
} // while

fin.close();

} // readStudents

} // class

我正在尝试从此数据文件中读取:datafile.txt

艾米3.5

史蒂文3.2

奥斯卡3.8

蒂姆2.7

安2.1

吉米3.9

我也在使用这个程序:

public class Student {

private String name;
private double gpa;

public Student(String name, double gpa){

this.name = name;
this.gpa = gpa;

} //Student

public String getName(){
return name;
}
public double getGPA(){
return gpa;
}

public void setName(){
this.name = name;
}
public void setGPA(){
this.gpa = gpa;
}

public String toString(){
return("The student's name is " + name + "\n" + "The student's grade point average is " + gpa);
}

} //class

你可以看到我尝试过//readStudents(students, numStudents, fileName);

Student myStudent = new Student(name, gpa);
System.out.println(myStudent);

但两者都不起作用。

当我尝试 //readStudents(students, numStudents, fileName); 时,这是我收到的错误消息:

Exception in thread "main" java.io.FileNotFoundException: datafile (The system cannot find the file specified)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:220)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:158)
at java.base/java.util.Scanner.<init>(Scanner.java:639)
at Probability.readStudents(Probability.java:44)
at Probability.main(Probability.java:29)

当我尝试时

Student myStudent = new Student(name, gpa);
System.out.println(myStudent);

这是我收到的错误消息:

Probability.java:32: error: cannot find symbol
Student myStudent = new Student(name, gpa);
^
symbol: variable name
location: class Probability
Probability.java:32: error: cannot find symbol
Student myStudent = new Student(name, gpa);
^
symbol: variable gpa
location: class Probability
2 errors

这就是我的教授希望我完成的任务:

实现一个名为“Student”的类,具有以下属性:

名称:字符串类型

gpa:双倍型

以及以下方法:

一个构造函数Student(String name, double gpa)

每个属性的 getter 和 setter

toString():在屏幕上打印类的属性(每行一个属性)

在单独的类中编写一个 main 方法,其中包含以下方法:

public static void readStudents(Student[] Students, int numStudents, String fileName):接受学生数据文件的名称,并返回包含文件中学生的一维数组。

主要方法应该:

询问用户有多少学生(1分)和数据文件的名称,然后调用readStudents从数据文件中获取学生列表。显示数组。

最佳答案

好吧,您的文件未找到异常可能是由于您尝试打​​开的文件没有正确的文件路径。您正在尝试打开“datafile.txt”,但它在目录结构中的位置?如果它位于项目的根目录,那么意味着“./datafile.txt”的“datafile.txt”(即在当前目录中查找 datafile.txt)就可以工作。

但是,假设您的项目根目录中有一个名为“data”的文件夹,并且您的 datafile.txt 位于此文件夹中。现在要打开此文件,您需要项目根目录的相对路径,即“data/datafile.txt”(与“./data/datafile.txt”相同)。

您的其他错误“无法找到 name 和 gpa 的符号”是由于您没有在 main 中定义变量 name 和 gpa 以在 Student 构造函数中引用。你需要这样的东西:

String name = "the_name_you_want";
double gpa = 4.0;

构造函数之前能够像这样使用 name 和 gpa。

您也可以像这样调用构造函数:

Student a = new Student("a", 4.0);

或者,如果您提供默认的 Student 构造函数,则可以在默认的 Student 对象上设置这些成员:

将默认学生构造函数添加到您的学生类(class),即

public Student(){}

^^注意,这将是对当前构造函数的补充,由于名为构造函数重载的功能而支持当前构造函数。

现在你可以让学生像这样:

Student a = new Student();
a.name = "a";
a.gpa = 4.0;

另外:你的 readStudents 循环只会给你一个包含一个学生的数组,因为你只将 array[0] 设置为一个新学生。试试这个:

int i = 0;
while (fin.hasNext()) {
String name = fin.next();
double gpa = fin.nextDouble();
students[i++] = new Student(name, gpa);
}

关于java - 如何调用 readStudents 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58943778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com