注册 登录
编程论坛 J2EE论坛

帮我看下这个关于继承程序!

gdy 发布于 2010-11-08 16:32, 1206 次点击
import java.util.Scanner;
abstract class person
{
    String name;
  String sex;
  int age;
  
  protected void person()
  {
      Scanner reader=new Scanner(System.in);
      System.out.print("请输入姓名:");
         name=reader.nextLine();

         System.out.print("请输入性别:");
         sex=reader.nextLine();
         
         System.out.print("请输入年龄:");
    age=reader.nextInt();
    }
   
    abstract public void show1();
/*    abstract public void show2();*/
}

class student extends person
{
  String num;
  String classdry;
  /*double chinese;
  double math;
  double english;*/
  static String course;
  static double score;
  static double sum=0;
  
  public static double total(int m)
    {
     int i;
     for(i=0;i<m-1;i++)
     {sum=sum+score;
      //   System.out.print("\n总分:"+sum);
         }
    return(sum);
     
    }

  public static double average(int m)
   {
   
    double avg;
    avg=sum/m;
    //System.out.print("平均分:"+avg);
    return(avg);
  }
  
  protected void print1()
  {
      
       Scanner reader=new Scanner(System.in);
       System.out.println("请输入学生基本信息!");

       System.out.print("请输入学号:");
     num=reader.nextLine();
      
       super.person();
      
          System.out.print("请输入是否是班干部:");
          classdry=reader.nextLine();
         
          /*System.out.print("请输入语文成绩:");
          chinese=reader.nextInt();

          System.out.print("请输入数学成绩:");
          math=reader.nextInt();

          System.out.print("请输入外语成绩:");
     english=reader.nextInt();*/
     }
   
   public static void print2(student stu[],int m)
     {
         for(int j=0;j<m;j++)
         {
             Scanner reader=new Scanner(System.in);
             System.out.println("请输入课程名及其成绩:");
             course=reader.nextLine();
             score=reader.nextDouble();
             System.out.println(course+"的成绩"+score);
         }
    }
     
     public void show1()
     {
         System.out.print("学号:"+num+"  "+"姓名:"+name+"  "+"性别:"+sex+"  "+"年龄:"+age+"  "+"是否是班干:"+classdry);
    }
   
   /* public void show2()
    {
     System.out.print("\n"+course+"成绩"+score);
    }*/
  
   
 /* public static  void  sorting(student stu[],int n)
   {
    int i,j;
    student t;
    for(j=0;j<n-1;j++)
    for(i=0;i<n-1-j;i++)
    if(stu[i].total()<stu[i+1].total())
    {t=stu[i];stu[i]=stu[i+1];stu[i+1]=t;}
    for(i=0;i<n;i++)
    System.out.println("第"+(i+1)+"名为:"+stu[i].name+"总分为:"+stu[i].total());
  }*/
}


class computer extends student
{
 private String department;
// private double java;
 
 void comstudent(String dep)
 {
     department=dep;
     System.out.print("  系别:"+department);
 }
}
  
  
  
class allstudent
 {
      public static void main(String args[])
      {            
           int n,m;
     Scanner reader=new Scanner(System.in);
     System.out.print("请输入你想输入多少个学生资料:");
     n=reader.nextInt();
     System.out.print("请输入你想输入的课程数:");
     m=reader.nextInt();
           computer stu[];
     stu=new computer[n];
                 
     for(int i=0;i<n;i++)
     {
      stu[i]=new computer();
      stu[i].print1();
      computer.print2(stu,m);
      stu[i].show1();
      stu[i].comstudent("计算机科学系");
      //stu[i].show2();
      System.out.print("\n总分为"+student.total(m)+","+"平均分为"+student.average(m));
      System.out.println();
      }
      
               
         // computer.sorting(stu,n);
     }
}

其中算总分和平均分那里不知道怎么写!上面的程序就那里有问题!但找不出来!能运行,但算的总分错的!
11 回复
#2
gdy2010-11-08 16:37
请大家帮帮忙!急!
谢谢!
#3
javaccd2010-11-17 20:27
我叫你哥了,太长了 ,





我也是刚学java,请多指教
#4
maxliz2010-11-17 20:30
妈妈咪呀
你把注释的去掉 编辑下啊 这头痛啊
#5
gdy2010-11-18 21:33
import java.util.Scanner;
abstract class person   //声明一个抽象类person
{
    String name;
  String sex;
  int age;
  
  protected void person()
  {
      Scanner reader=new Scanner(System.in);
      System.out.print("请输入姓名:");
         name=reader.nextLine();

         System.out.print("请输入性别:");
         sex=reader.nextLine();
         
         System.out.print("请输入年龄:");
    age=reader.nextInt();
    }
   
    abstract public void show();//声明一个抽象方法show()

}

class student extends person  //声明一个student类继承person类
{
  String num;
  String classdry;
  static String course;
  static double score;
  static double sum=0,sum1=0,sum2=0;
  
  protected void print1()
  {
      
       Scanner reader=new Scanner(System.in);
       System.out.println("请输入学生基本信息!");

       System.out.print("请输入学号:");
     num=reader.nextLine();
      
       super.person();
      
          System.out.print("请输入是否是班干部:");
          classdry=reader.nextLine();

   }
   
   public void show()  //实现抽象方法show()
     {
         System.out.print("学号:"+num+"  "+"姓名:"+name+"  "+"性别:"+sex+"  "+"年龄:"+age+"  "+"是否是班干:"+classdry);
    }
   
   public static void print2(student stu[],int m) //输入课程名及课程成绩
     {
         for(int i=0;i<m;i++)
         {
             Scanner reader=new Scanner(System.in);
             System.out.println("请输入课程名及其成绩:");
             course=reader.nextLine();
             score=reader.nextDouble();
             sum1+=score;
        System.out.println(course+"成绩"+score);
       }
       }

    public double total() //计算总分
    {
     sum=sum1;
     sum1=0;
     return(sum);
     }

  public static double average(int m) //计算平均分
   {
    return(sum/m);
       }     
         
}  
   

class computer extends student  //声明一个计科系学生类继承学生类
{
 private String department;
 void comstudent(String dep)
 {
     department=dep;
     System.out.print("  系别:"+department);
 }
}
  
  
  
class allstudent
 {
      public static void main(String args[])
      {            
           int n,m;
     Scanner reader=new Scanner(System.in);
     System.out.print("请输入你想输入多少个学生资料:");
     n=reader.nextInt();
     System.out.print("请输入你想输入的课程数:");
     m=reader.nextInt();
           computer stu[];
     stu=new computer[n];
                 
     for(int i=0;i<n;i++)
     {
      stu[i]=new computer();
      stu[i].print1();
      computer.print2(stu,m);
      stu[i].show();
      stu[i].comstudent("计算机科学系");
      System.out.print("\n总分为"+stu[i].total()+","+"平均分为"+student.average(m));
      System.out.println();
      }
               
      computer temp=new computer();
    for(int j=1;j<n;j++)
    for(int k=0;k<n-j;k++)
        if(stu[k].total()>stu[k+1].total())
        {
        temp = stu[k+1];
        stu[k+1] = stu[k];
        stu[k] = temp;
        }
        
    for(int x=0;x<n;x++)
    System.out.println("第"+(x+1)+"名的姓名是"+stu[x].name+"总分"+stu.[x]total()) ;
   
    }
}


我的总分这个能算了  但就是不能排序啊    能帮我看下么!!

[ 本帖最后由 gdy 于 2010-11-18 21:35 编辑 ]
#6
gdy2010-11-18 21:36
我可是个女的,不要叫我哥好不、哈哈......
#7
maxliz2010-11-19 21:45
我没看完 越来越娇惯了 看别人的代码老看不下去
怎么排序 你试下一个sort方法 util包里的
#8
helin20102010-11-20 15:04
  好长的代码?
#9
gdy2010-11-20 20:35
不会啊0.0    我才是接触java  好多不明白的。
#10
刘易斯2010-11-29 01:05
大哥,我也是初学者,
我看见排序的冒泡法没问题,
加个括号不知行不?
    for(int j=1;j<n;j++)
      {  
          for(int k=0;k<n-j;k++)
            if(stu[k].total()>stu[k+1].total())
                {
                  temp = stu[k+1];
                  stu[k+1] = stu[k];
                  stu[k] = temp;
                 }
      }  
    for(int x=0;x<n;x++)
    System.out.println("倒数第"+(x+1)+"名的姓名是"+stu[x].name+"总分"+stu.[x]total()) ;
我也刚学不久,遇到这种情况听郁闷的!
#11
失眠的泪水2010-12-01 00:38
stu和temp都是一个类,一个类你怎么直接就用“=”赋值呢?一个类对象是在堆内存中分配地址空间的,对象的引用只是指向它的地址,不是值。除了八种基本类型和string就是可以这样用之处,类的赋值不能这样用的。
#12
吕东东2011-01-10 22:55
你的排序方法有问题
试试这个
不对的话还请海涵

/* public static  void  sorting(student stu[],int n)
   {
    int i,j;
    student t;
    for(j=0;j<n-1;j++)
    {
    for(i=j;i<n-1;i++){
    if(stu[i].total()<stu[i+1].total())
    {t=stu[i];stu[i]=stu[i+1];stu[i+1]=t;}
    }
    }
     for(i=0;i<n;i++)
    System.out.println("第"+(i+1)+"名为:"+stu[i].name+"总分为:"+stu[i].total());
  }*/
1