JAVA 类与对象 例题4

public class SingGame {

	public static void main(String[] args) {
      Line line=new Line();
      line.giverPersonScore();

	}

}
import java.util.Scanner;
public class InputScore {
   DelScore del;
   InputScore(DelScore del){
	   this.del=del;
   }
   public void inputScore() {
	System.out.println("请输入评委数");
	Scanner read=new Scanner(System.in);
	int count=read.nextInt();
	System.out.println("输入各个评委的分数");
	double []a=new double[count];
	for(int i=0;i<count;i++){
		a[i]=read.nextDouble();
	}
	del.doDelete(a);
}
}
public class DelScore {
	  ComputerAver computer;
	  public DelScore(ComputerAver computer) {
	     this.computer=computer;
	}
	  public void doDelete(double [] a) {
	     java.util.Arrays.sort(a);
	     System.out.println("去掉一个最高分:"+a[a.length-1]+",");
	     System.out.println("去掉一个最低分:"+a[0]+"。");
	     double b[]=new double[a.length-2];
	     for(int i=1;i<a.length-1;i++){
	    	 b[i-1]=a[i];
	     }
	     computer.giverAver(b);
	}
	}
public class ComputerAver {
      public void giverAver(double [] b) {
    	  double sum=0;
    	  for(int i=0;i<b.length;i++) {
    		  sum=sum+b[i];
    	  }
    	  double aver=sum/b.length;
    	  System.out.println("选手最后得分"+aver);
      }
}

public class Line {
   InputScore one;
   DelScore two;
   ComputerAver three;
   Line(){
	   three=new ComputerAver();
	   two=new DelScore(three);
	   one=new InputScore(two);
   }
   public void giverPersonScore() {
	   one.inputScore();
   }
}
以上程序放在同一个包里即可运行

public class rational {
   int numerator=1; //分子
   int denominator=1;//分母
   void setNumerator(int a){//设置分子
	   int c=f(Math.abs(a),denominator); //计算最大公约数
	   numerator=a/c;
	   denominator=denominator/c;
	   if(numerator<0&&denominator<0){
		   numerator=-numerator;
		   denominator=-denominator;
	   }
   }
   void setDenominator(int b){
	   int c=f(numerator,Math.abs(b));
	   numerator=numerator/c;
	   denominator=b/c;
	   if(numerator<0&&denominator<0){
		   numerator=-numerator;
		   denominator=-denominator;
	   }
   }
   int getNumberator(){
	   return numerator;
   }
   int getDenominator(){
	   return denominator;
   }
   int f(int a,int b){//求a和b的最大公约数
	   if(a==0)
		   return 1;
	   if(a<b){
		   int c=a;
		   a=b;
		   b=c;
	   }
	   int r=a%b;
	   while(r!=0){
		   a=b;
		   b=r;
		   r=a%b;
	   }
	   return b;
   }
   rational add(rational r){//加法运算
	   int a=r.getNumberator();//返回有理数r的分子
	   int b=r.getDenominator();//返回有理数r的分母
	   int newNumberator = numerator*b+denominator*a;//计算出新分子
	   int newDenominator= denominator*b;//计算出新分母
	   rational result  =new rational();
	   result.setNumerator(newNumberator);
	   result.setDenominator(newDenominator);
	   return result;	   
   }
rational sub(rational r){//加法运算
	   int a=r.getNumberator();//返回有理数r的分子
	   int b=r.getDenominator();//返回有理数r的分母
	   int newNumberator = numerator*a;//计算出新分子
	   int newDenominator= denominator*b;//计算出新分母
	   rational result  =new rational();
	   result.setNumerator(newNumberator);
	   result.setDenominator(newDenominator);
	   return result;	   
}
rational muti(rational r){//加法运算
	   int a=r.getNumberator();//返回有理数r的分子
	   int b=r.getDenominator();//返回有理数r的分母
	   int newNumberator = numerator*b;//计算出新分子
	   int newDenominator= denominator*a;//计算出新分母
	   rational result  =new rational();
	   result.setNumerator(newNumberator);
	   result.setDenominator(newDenominator);
	   return result;	   
}
rational div(rational r){//加法运算
	   int a=r.getNumberator();//返回有理数r的分子
	   int b=r.getDenominator();//返回有理数r的分母
	   int newNumberator = numerator*b;//计算出新分子
	   int newDenominator= denominator*a;//计算出新分母
	   rational result  =new rational();
	   result.setNumerator(newNumberator);
	   result.setDenominator(newDenominator);
	   return result;	   
}
}
public class exam {

	public static void main(String[] args) {
	 rational r1 =new rational();
	 r1.setNumerator(1);
	 r1.setDenominator(5);
	 rational r2 = new rational();
	 r2.setNumerator(3);
	 r2.setDenominator(2);
	 rational result=r1.add(r2);
	 int a=result.getNumberator();
	 int b=result.getDenominator();
	 System.out.println("1/5+3/2 = "+a+"/"+b);
	 
	 result=r1.sub(r2);
	 a=result.getNumberator();
	 b=result.getDenominator();
	 System.out.println("1/5-3/2 = "+a+"/"+b);
	 
	 result=r1.muti(r2);
	 a=result.getNumberator();
	 b=result.getDenominator();
	 System.out.println("1/5*3/2 = "+a+"/"+b);
	 
	 result=r1.div(r2);
	 a=result.getNumberator();
	 b=result.getDenominator();
	 System.out.println("1/5 / 3/2 = "+a+"/"+b);
     int n=10,k=1;
     System.out.println("计算2/1+3/2+5/3+8/5+13/8+...的前"+n+"项和.");
     rational sum=new rational();
     sum.setNumerator(0);
     rational item=new rational();
     item.setNumerator(2);
     item.setDenominator(1);
     while(k<=n){
    	 sum=sum.add(item);
    	 k++;
    	 int fenzi=item.getNumberator();
    	 int fenmu=item.getDenominator();
    	 item.setNumerator(fenzi+fenmu);
    	 item.setDenominator(fenzi);
     }
     a=sum.getNumberator();
     b=sum.getDenominator();
     System.out.println("用分子表示:");
     System.out.println(a+"/"+b);
     double doubleresult=(a*1.0)/b;
     System.out.println("用小数表示");
     System.out.println(doubleresult);
	}

}





  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值