实验内容
(1)有理数四则运算
编写一个Java应用程序,实现两个有理数的四则运算,要求操作数用分子和分母的形式表示。结果要求最简形式,用“分子/分母”的形式表示、如果分母为1,则结果以整数表示。
(2)最终得分
声明一个Average接口,其中约定求平均值的方法(参数为一个数组,该数组元素是无序的)void avg(int[] score);声明First、Second类实现Average接口,分别给出求平均值的方法实现。
A.类First中的功能为全部数值相加后求平均值。
B.类Second中的功能为去掉一个最高分和一个最低分,再将总分求平均值。
注:数据是整数类型,有可能是负数,且数据至少为3个,但计算结果要求保留小数点2位。
实验结果
有理数四则运算
最终得分
源代码
有理数四则运算
Lab.java
package lab2;
import java.util.Scanner;
public class Lab
{
public static void main(String[] args)
{
Calculate ans = new Calculate();
Scanner t = new Scanner(System.in);
System.out.println("输入第一个数的分子和分母(形式:分子 分母)");
ans.x1=t.nextInt();
ans.y1=t.nextInt();
System.out.println("输入第二个数的分子和分母(形式:分子 分母)");
ans.x2=t.nextInt();
ans.y2=t.nextInt();
t.close();
ans.Add();
ans.Sub();
ans.Mul();
ans.Div();
}
}
Calculate.java
package lab2;
public class Calculate
{
public int x1,y1,x2,y2;
int fun(int a,int b)//求最大公约数
{return b!=0 ? fun(b, a % b) : a;}
void Add()
{
int fz=x1*y2+x2*y1;
int fm=y1*y2;
int yue=fun(fz,fm);
fz/=yue;
fm/=yue;
if(fm<0)
{
fm=-fm;
fz=-fz;
}
if(fm==1)
System.out.println("加法结果是:"+fz);
else
System.out.println("加法结果是:"+fz+"/"+fm);
}
void Sub()
{
int fz=x1*y2-x2*y1;
int fm=y1*y2;
int yue=fun(fz,fm);
fz/=yue;
fm/=yue;
if(fm<0)
{
fm=-fm;
fz=-fz;
}
if(fm==1)
System.out.println("减法结果是:"+fz);
else
System.out.println("减法结果是:"+fz+"/"+fm);
}
void Mul()
{
int fz=x1*x2;
int fm=y1*y2;
int yue=fun(fz,fm);
fz/=yue;
fm/=yue;
if(fm<0)
{
fm=-fm;
fz=-fz;
}
if(fm==1)
System.out.println("乘法结果是:"+fz);
else
System.out.println("乘法结果是:"+fz+"/"+fm);
}
void Div()
{
int fz=x1*y2;
int fm=y1*x2;
int yue=fun(fz,fm);
fz/=yue;
fm/=yue;
if(fm<0)
{
fm=-fm;
fz=-fz;
}
if(fm==1)
System.out.println("除法结果是:"+fz);
else
System.out.println("除法结果是:"+fz+"/"+fm);
}
}
最终得分
Grade.java
package lab2;
import java.util.Scanner;
interface Average
{
public float avg(int[] score);
}
class First implements Average
{
int x=0;
float sum=0;
public float avg(int[] score)
{
for(int arr : score)
{
sum+=arr;
x++;
}
return sum/x;
}
}
class Second implements Average
{
int max=-1000;
int min=1000;
int x=0;
float sum=0;
public float avg(int[] score)
{
for(int arr : score)
{
if(arr>max)
max=arr;
if(arr<min)
min=arr;
sum+=arr;
x++;
}
x-=2;
sum=sum-min-max;
return sum/x;
}
}
public class Grade
{
public static void main(String[] args)
{
Scanner scanner=new Scanner(System.in);
First F = new First();
Second S = new Second();
System.out.println("请输入分数的个数:");
int i=scanner.nextInt();
int[] score=new int[i];
System.out.println("请输入对应的分数:");
for (int j = 0; j < i; j++) {
score[j]=scanner.nextInt();
}
System.out.println();
float a = F.avg(score);
float b = S.avg(score);
System.out.printf("First类计算结果:%.2f\n",a);
System.out.printf("Second类计算结果:%.2f",b);
}
}
感谢大家的观看