簡體   English   中英

將所有課程合並為一個課程/課程

[英]Combining all classes under a single class/program

以下是我編寫的用於讀取信息並通過創建各種類和方法來打印以下信息的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

您可以嵌套類。 但是更好的方法可以是將一個類聲明為Student並針對Marks編寫一個函數來執行計算。 從類總是可以進行方法調用。 這將使代碼最少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM