Java:将不同类的重写方法中的值更改为在该类中计算的值
如何使重写的方法calculateResult在StudentTest类中正常工作?我需要calculateResult中的total是在StudentTest中根据用户输入计算的总数。或者我的用户输入代码是否在错误的类中 学生班 研究生班Java:将不同类的重写方法中的值更改为在该类中计算的值,java,overriding,Java,Overriding,如何使重写的方法calculateResult在StudentTest类中正常工作?我需要calculateResult中的total是在StudentTest中根据用户输入计算的总数。或者我的用户输入代码是否在错误的类中 学生班 研究生班 这与代码没有保存总数的值有关 我建议 您有一个用于examResults的int数组 然后在calculateResult方法中,将总数相加以确定平均值 请注意整数除法问题 无法理解你想要实现的目标。你是想计算每个学生的平均分数还是所有学生的平均分数? 在没
这与代码没有保存总数的值有关 我建议 您有一个用于examResults的int数组 然后在calculateResult方法中,将总数相加以确定平均值 请注意整数除法问题
无法理解你想要实现的目标。你是想计算每个学生的平均分数还是所有学生的平均分数? 在没有引用的情况下,您也不能从您的类学生和所有重写的类外部访问变量总计 以下是我的建议:
public class Student {
// Data Members
private String name;
private int idNumber;
private List<Integer> examResults;
// Constructor
public Student() {
name = "Unassigned";
idNumber = 0;
examResults = new ArrayList<Integer>(5);
}
// Getters
public String getName(){
return name;
}
public int getIdNumber(){
return idNumber;
}
public void addResult(Integer result){
examResults.add(result);
}
// Setters
public void setName(String name){
this.name = name;
}
public void setIdNumber(int idNumber){
this.idNumber = idNumber;
}
// Calculate Result
protected Integer calculateResult() {
Integer total = 0;
for(Integer result : examResults){
total += result;
}
return total / examResults.size();
}
public void showResultText(){
Integer result = calculateResult();
// Check if Student passed or failed
if (result < 0) {
System.out.println("Overall Result: " + result + " (Fail)");
} else {
System.out.println("Overall Result: " + result + " (Pass)");
}
}
}
public class Undergraduate extends Student {
@Override
public void showResultText() {
Integer result = calculateResult();
if (result < 50) {
System.out.println("Overall Result: " + result + " (Fail)");
} else {
System.out.println("Overall Result: " + result + " (Pass)");
}
}
}
public class Postgraduate extends Student {
@Override
public void showResultText() {
Integer result = calculateResult();
if (result < 40) {
System.out.println("Overall Result: " + result + " (Fail)");
} else {
System.out.println("Overall Result: " + result + " (Pass)");
}
}
}
public class StudentTest {
public static void main(String [] args){
// Declaration & Creation of Scanner object
Scanner input = new Scanner(System.in);
// Create Array of Undergrad and Postgrad Students
Student[] students = new Student[5];
students[0] = new Undergraduate();
students[1] = new Postgraduate();
students[2] = new Undergraduate();
students[3] = new Postgraduate();
students[4] = new Undergraduate();
// Get Input for Name
for (Student student : students) {
System.out.println();
System.out.print("Enter Student Name: ");
student.setName(input.nextLine());
// Get Input for Id Number
System.out.print("Enter Student ID Number: ");
student.setIdNumber(input.nextInt());
input.nextLine();
// Initialise Variables
int examsEntered = 0;
// Get Input for Exam Result and add to total
while (examsEntered < 5) {
System.out.print("Enter Exam Result (0-100): ");
Integer result = input.nextInt();
input.nextLine();
if (result >= 0 && result <= 100) {
student.addResult(result);
examsEntered++;
} else {
System.out.println("Please Enter a Valid Number 0-100");
}
}
}
for (Student student : students) {
// Display Student Info and Results
System.out.println();
System.out.println("Student Name: " + student.getName());
System.out.println("Student ID: " + student.getIdNumber());
student.showResultText();
System.out.println();
}
} // end main
}
在问题中,它规定所有这些信息必须保存在一个集合中。有一个数组用于考试结果会改变这一点吗?我指的是在学生课堂上有这个数组,而不是在学生测试课堂上,我试图得到每个学生的平均数。谢谢你的帮助。
public class Undergraduate extends Student {
public Undergraduate(){
super();
}
// Method to Calculate Result
@Override
public void calculateResult() {
int total = 0; // Want this total to be the total in StudentTest
int result = (total / 5);
// Check if Student passed or failed
if (result < 50) {
System.out.println("Overall Result: " + result + " (Fail)");
} else {
System.out.println("Overall Result: " + result + " (Pass)");
}
} // end method
} // end class
public class Postgraduate extends Student{
public Postgraduate(){
super();
}
// Method to Calculate Result
@Override
public void calculateResult() {
int total = 0; // Want this total to be the total in StudentTest
int result = (total / 5);
// Check if Student passed or failed
if (result < 40) {
System.out.println("Overall Result: " + result + " (Fail)");
} else {
System.out.println("Overall Result: " + result + " (Pass)");
}
} // end method
} // end class
import java.util.Scanner;
public class StudentTest {
public static void main(String [] args){
// Declaration & Creation of Scanner object
Scanner input = new Scanner(System.in);
// Create Array of Undergrad and Postgrad Students
Student[] students = new Student[5];
students[0] = new Undergraduate();
students[1] = new Postgraduate();
students[2] = new Undergraduate();
students[3] = new Postgraduate();
students[4] = new Undergraduate();
// Get Input for Name
for (int i = 0; i < students.length; i++) {
System.out.println();
System.out.print("Enter Student Name: ");
students[i].setName(input.nextLine());
// Get Input for Id Number
System.out.print("Enter Student ID Number: ");
students[i].setIdNumber(input.nextInt());
input.nextLine();
// Initialise Variables
int examsEntered = 0;
int total = 0;
// Get Input for Exam Result and add to total
while (examsEntered < 5) {
System.out.print("Enter Exam Result (0-100): ");
students[i].setExamResult(input.nextInt());
input.nextLine();
if (students[i].getExamResult() >= 0 && students[i].getExamResult() <= 100) {
total = total + students[i].getExamResult(); // This is the total I want in my calculateResult method
examsEntered = examsEntered + 1;
} else {
System.out.println("Please Enter a Valid Number 0-100");
}
}
}
for (int i = 0; i < students.length; i++) {
// Display Student Info and Results
System.out.println();
System.out.println("Student Name: " + students[i].getName());
System.out.println("Student ID: " + students[i].getIdNumber());
students[i].calculateResult();
System.out.println();
}
} // end main
} // end class
public class Student {
// Data Members
private String name;
private int idNumber;
private List<Integer> examResults;
// Constructor
public Student() {
name = "Unassigned";
idNumber = 0;
examResults = new ArrayList<Integer>(5);
}
// Getters
public String getName(){
return name;
}
public int getIdNumber(){
return idNumber;
}
public void addResult(Integer result){
examResults.add(result);
}
// Setters
public void setName(String name){
this.name = name;
}
public void setIdNumber(int idNumber){
this.idNumber = idNumber;
}
// Calculate Result
protected Integer calculateResult() {
Integer total = 0;
for(Integer result : examResults){
total += result;
}
return total / examResults.size();
}
public void showResultText(){
Integer result = calculateResult();
// Check if Student passed or failed
if (result < 0) {
System.out.println("Overall Result: " + result + " (Fail)");
} else {
System.out.println("Overall Result: " + result + " (Pass)");
}
}
}
public class Undergraduate extends Student {
@Override
public void showResultText() {
Integer result = calculateResult();
if (result < 50) {
System.out.println("Overall Result: " + result + " (Fail)");
} else {
System.out.println("Overall Result: " + result + " (Pass)");
}
}
}
public class Postgraduate extends Student {
@Override
public void showResultText() {
Integer result = calculateResult();
if (result < 40) {
System.out.println("Overall Result: " + result + " (Fail)");
} else {
System.out.println("Overall Result: " + result + " (Pass)");
}
}
}
public class StudentTest {
public static void main(String [] args){
// Declaration & Creation of Scanner object
Scanner input = new Scanner(System.in);
// Create Array of Undergrad and Postgrad Students
Student[] students = new Student[5];
students[0] = new Undergraduate();
students[1] = new Postgraduate();
students[2] = new Undergraduate();
students[3] = new Postgraduate();
students[4] = new Undergraduate();
// Get Input for Name
for (Student student : students) {
System.out.println();
System.out.print("Enter Student Name: ");
student.setName(input.nextLine());
// Get Input for Id Number
System.out.print("Enter Student ID Number: ");
student.setIdNumber(input.nextInt());
input.nextLine();
// Initialise Variables
int examsEntered = 0;
// Get Input for Exam Result and add to total
while (examsEntered < 5) {
System.out.print("Enter Exam Result (0-100): ");
Integer result = input.nextInt();
input.nextLine();
if (result >= 0 && result <= 100) {
student.addResult(result);
examsEntered++;
} else {
System.out.println("Please Enter a Valid Number 0-100");
}
}
}
for (Student student : students) {
// Display Student Info and Results
System.out.println();
System.out.println("Student Name: " + student.getName());
System.out.println("Student ID: " + student.getIdNumber());
student.showResultText();
System.out.println();
}
} // end main
}