将所有类组合在一个类/程序下

时间:2017-02-12 06:37:35

标签: java

下面是我编写的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

1 个答案:

答案 0 :(得分:0)

您可以进行类的嵌套。但更好的方法是将单个类声明为Student并编写与执行计算的Marks相关的函数。方法调用总是可以从类中调用。这将最小化代码。

相关问题