下面是我编写的java代码,用于读取信息并通过创建各种类和方法来打印以下信息。
Name:…… (name of student)
Current GPA:…..
Current grade average:…..
通过将所有类组合在一个程序中,即不创建不同的类,可以将其简化为单个程序/类吗?
学生班:
public class Student
{
private String name;
private double gpa;
//methods
public Student(){}
public Student(String n,double g)
{
name=n;
gpa=g;
}
//set the first name
public void setName(String n)
{
name=n;
}
public void setGpa(double g)
{
gpa=g;
}
//get methods
public String getName(){return name;}
public double getGpa(){return gpa;}
}
标记课程:
public class Marks extends Student
{
//data
private int grade[];
//methods
public Marks()
{
super();
grade=new int[0];
}
public Marks(String n,double g, int k[])
{
super(n,g);
grade=new int[k.length];
for(int i=0;i<k.length;i++)
grade[i]=k[i];
}
//average method
public double average()
{
double sum=0;
for(int i=0;i<grade.length;i++)
sum+=grade[i];
return sum/grade.length;
}
}
主要课程:
import java.io.*;
import java.util.Scanner;
public class Lab
{
public static void main(String args[]) throws Exception
{
//data
Student list[];
String name;
double gpa;
int k[], i,j;
File toRead= new File("input.txt");
Scanner get=new Scanner(toRead);
//read input
list=new Student[get.nextInt()];
for(i=0;i<list.length;i++)
{
get.nextLine();
name=get.nextLine();
gpa=get.nextDouble();
int gn=get.nextInt();
k=new int[gn];
for(j=0;j<k.length;j++)
k[j]=get.nextInt();
list[i]=new Marks(name,gpa,k);
}
//print all the name
for(i=0;i<list.length;i++)
System.out.printf("Name:%s\nGpa:%.2f\n",list[i].getName(),list[i].getGpa());
//print average grades for student
for(i=0;i<list.length;i++)
{
if(list[i] instanceof Marks)
{
Marks s=(Marks)list[i];
System.out.printf("average: %s- %.2f\n", s.getName(),s.average());
}
}
}
}
input.txt中
3
Mark antony
3.4
10
100 100 90 80 34 56 78 90 89 80
Alex Smith Jr.
2.9
5
100 95 98 78 80
Mary J. John
3.4
12
35 56 100 100 90 98 87 89 88 77 67 95
答案 0 :(得分:0)
您可以进行类的嵌套。但更好的方法是将单个类声明为Student并编写与执行计算的Marks相关的函数。方法调用总是可以从类中调用。这将最小化代码。