有理数: 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 getNumerator(){
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.getNumerator();//返回有理数r的分子
int b=r.getDenominator();//返回有理数r的分母
int newNumerator=numerator*b+denominator*a;//计算出新分子
int newDenominator=denominator*b;//计算出新分母
Rational result=new Rational();
result.setNumerator(newNumerator);
result.setDenominator(newDenominator);
return result;
}
Rational sub(Rational r){//减法运算
int a=r.getNumerator();
int b=r.getDenominator();
int newNumerator=numerator*b-denominator*a;
int newDenominator=denominator*b;
Rational result=new Rational();
result.setNumerator(newNumerator);
result.setDenominator(newDenominator);
return result;
}
Rational muti(Rational r){//乘法运算
int a=r.getNumerator();
int b=r.getDenominator();
int newNumerator=numerator*a;
int newDenominator=denominator*b;
Rational result=new Rational();
result.setNumerator(newNumerator);
result.setDenominator(newDenominator);
return result;
}
Rational div(Rational r){//除法运算
int a=r.getNumerator();
int b=r.getDenominator();
int newNumerator=numerator*b;
int newDenominator=denominator*a;
Rational result=new Rational();
result.setNumerator(newNumerator);
result.setDenominator(newDenominator);
return result;
}
}
public class Test {
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.getNumerator();
int b=result.getDenominator();
System.out.println("1/5+3/2="+a+"/"+b);
result=r1.sub(r2);
a=result.getNumerator();
b=result.getDenominator();
System.out.println("1/5-3/2="+a+"/"+b);
result=r1.muti(r2);
a=result.getNumerator();
b=result.getDenominator();
System.out.println("1/5×3/2="+a+"/"+b);
result=r1.div(r2);
a=result.getNumerator();
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.getNumerator();
int fenmu=item.getDenominator();
item.setNumerator(fenzi+fenmu);
item.setDenominator(fenzi);
}
a=sum.getNumerator();
b=sum.getDenominator();
System.out.println("用分数表示:");
System.out.println(a+"/"+b);
double doubleResult=(a*1.0)/b;
System.out.println("用小数表示:");
System.out.println(doubleResult);
}
}
评委评分:
package Pipeline;
public class ComputerAver {
public void giveAver(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);
}
}
package Pipeline;
public class DelScore {
ComputerAver computer;
DelScore(ComputerAver computer){
this.computer=computer;
}
public void doDelete(double []a){
java.util.Arrays.sort(a);//数组a从小到大排序
System.out.print("去掉一个最高分 :"+a[a.length-1]+",");
System.out.print("去掉一个最低分:"+a[0]+"。");
double []b=new double[a.length-2];
for(int i=1;i<a.length-1;i++){//去掉最高分和最低分
b[i-1]=a[i];
}
computer.giveAver(b);
}
}
package Pipeline;
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);
}
}
package Pipeline;
public class Line {
InputScore one;
DelScore two;
ComputerAver three;
Line(){
three=new ComputerAver();
two=new DelScore(three);
one=new InputScore(two);
}
public void givePersonScore(){
one.inputScore();
}
}
package Pipeline;
public class SingGame {
public static void main(String[] args){
Line line=new Line();
line.givePersonScore();
}
}
运行结果: