State
}
public class Exams {
private int score1 = 0;
private int score2 = 0;
private int score3 = 0;
public void setScore1(int sc){
score1 = sc;
}
public void setScore2(int sc){
score2 = sc;
}
public void setScore3(int sc){
score3 = sc;
}
public int getScore1(){
return score1;
}
public int getScore2(){
return score2;
}
public int getScore3(){
return score3;
}
public String toString(){
return String.format("%-10s %-10s %4.2f\n", score1, score2, score3);
}
}
public class Student {
private String fName;
private String lName;
private Exams scores;
Student(String fn, String ln) {
fName = fn;
lName = ln;
scores = new scores();
}
public void setScore1(int sc) {
scores.setScore1(sc);
}
public void setScore2(int sc) {
scores.setScore2(sc);
}
public void setScore3(int sc) {
scores.setScore3(sc);
}
public String toSring(){
return String.format("%-10s %-10s %4.2f\n", fName, lName, scores);
}
public double getAverage(){
}
public int compareTo(Student s){
String name1 = lName + " " + fName;
String name2 = s.lName + " " + s.fName;
return ((lName + " " + fName).compareTo(s.lName + " " + s.fName));
}
}
我有一个包含几个不同类的程序。在我声明私有变量之后的classroll类中,我必须创建一个classroll构造函数" ClassRoll(String f)"那是假设......
从输入文件f中读取类卷数据,为每个学生创建Student对象,并将它们添加到学生的ArrayList中。输入文件包含第一行的课程标题。每个学生的数据显示在一个单独的行上,该行由名字,姓氏,得分1,得分2和得分3组成,由至少一个空格分隔。
我尽力开始,但我很困惑,并且不知道正确的做法。有人可以帮忙吗
谢谢
答案 0 :(得分:0)
从输入文件f中读取类卷数据,创建Student 每个学生的对象,并将它们添加到ArrayList中 生。
好的,基本上,我们必须从某个文件中获取学生的信息并将其添加到某个ArrayList中。好吧,让我们先创建一个ArrayList来存储东西。
ArrayList<Student> studentInfo = new ArrayList<Student>();
您已从此文件中读取此代码:
Scanner kb = new Scanner(System.in);
String inpFileName = kb.next();
File inpFile = new File(inpFileName);
让我们继续......
输入文件包含第一行的课程标题。
因此kb.nextLine()
中的第一个元素是课程标题。这意味着我们必须开始从第二行添加学生数据,也就是跳过第一行。好的....
每个学生的数据显示在一个单独的行中 名字,姓氏,得分1,得分2和得分3由at分隔 至少一个空间。
所以基本上,如果我们设法从space
个字符中拆分行,我们就会得到数据。现在实现这个:
让我们创建一个boolean
变量来检查它的第一行是否为:
boolean firstLine = true; // True - because it starts from first line
开始阅读行的时间......
String courseName = ""; //I'll just store in a string, use as you wish
while(kb.hasNextLine()){
if(firstLine){
courseName = kb.nextLine(); //Set courseName if its first line
firstLine = false; // We have moved past first line
}
else{ // Otherwise get student data
// Lets store the student data in a string. This is just one line.
// Something like: "FirstName LastName score1 score2 score3"
String studentData = kb.nextLine();
// Now time to split up data (so we get names/scores separately)
String[] stData = studentData.split("\\s"); //Remember they have spaces between them. \\s --> A pattern that matches one or more spaces
//So we can use those to separate data
// This is how String[] stData contains the student information:
// stData[0] = first name of student
// stData[1] = last name of student
// stData[2] = score1
// stData[3] = score2
// stData[4] = score3
// Use this data however you like
//Now that we have separated data, lets add the student object to ArrayList since we got all details.
studentInfo.add(new Student(stData[0], stData[1]);
// This last line of code is probably not going to do the trick.
// You may need to make changes to your code to do stuff
}
}
无论如何,我告诉过你如何阅读问题以及如何继续。你有所有的字符串,名字,姓氏和分数。现在由你决定如何使用它们。虽然最后一行代码可能不适用于您,但它的提示仍在继续。
休息你应该先尝试弄清楚自己,因为如果我做完所有的功课就没有乐趣;)
答案 1 :(得分:-1)
您已将SE
替换为scire1,2,3
当你得到一个var in setter方法时,它需要放在你的类的属性中。
只需替换为此代码:
public void setScore1(int sc){
score1=sc;
}
public void setScore2(int sc){
score2=sc;
}
public void setScore3(int sc){
score3=sc;
}