当前位置:   article > 正文

Java实验2

Java实验2

实验内容

(1)有理数四则运算

编写一个Java应用程序,实现两个有理数的四则运算,要求操作数用分子和分母的形式表示。结果要求最简形式,用“分子/分母”的形式表示、如果分母为1,则结果以整数表示。

(2)最终得分

声明一个Average接口,其中约定求平均值的方法(参数为一个数组,该数组元素是无序的)void avg(int[] score);声明First、Second类实现Average接口,分别给出求平均值的方法实现。

A.类First中的功能为全部数值相加后求平均值。

B.类Second中的功能为去掉一个最高分和一个最低分,再将总分求平均值。

注:数据是整数类型,有可能是负数,且数据至少为3个,但计算结果要求保留小数点2位。

实验结果

有理数四则运算

最终得分

源代码

有理数四则运算

Lab.java

  1. package lab2;
  2. import java.util.Scanner;
  3. public class Lab
  4. {
  5. public static void main(String[] args)
  6. {
  7. Calculate ans = new Calculate();
  8. Scanner t = new Scanner(System.in);
  9. System.out.println("输入第一个数的分子和分母(形式:分子 分母)");
  10. ans.x1=t.nextInt();
  11. ans.y1=t.nextInt();
  12. System.out.println("输入第二个数的分子和分母(形式:分子 分母)");
  13. ans.x2=t.nextInt();
  14. ans.y2=t.nextInt();
  15. t.close();
  16. ans.Add();
  17. ans.Sub();
  18. ans.Mul();
  19. ans.Div();
  20. }
  21. }

Calculate.java

  1. package lab2;
  2. public class Calculate
  3. {
  4. public int x1,y1,x2,y2;
  5. int fun(int a,int b)//求最大公约数
  6. {return b!=0 ? fun(b, a % b) : a;}
  7. void Add()
  8. {
  9. int fz=x1*y2+x2*y1;
  10. int fm=y1*y2;
  11. int yue=fun(fz,fm);
  12. fz/=yue;
  13. fm/=yue;
  14. if(fm<0)
  15. {
  16. fm=-fm;
  17. fz=-fz;
  18. }
  19. if(fm==1)
  20. System.out.println("加法结果是:"+fz);
  21. else
  22. System.out.println("加法结果是:"+fz+"/"+fm);
  23. }
  24. void Sub()
  25. {
  26. int fz=x1*y2-x2*y1;
  27. int fm=y1*y2;
  28. int yue=fun(fz,fm);
  29. fz/=yue;
  30. fm/=yue;
  31. if(fm<0)
  32. {
  33. fm=-fm;
  34. fz=-fz;
  35. }
  36. if(fm==1)
  37. System.out.println("减法结果是:"+fz);
  38. else
  39. System.out.println("减法结果是:"+fz+"/"+fm);
  40. }
  41. void Mul()
  42. {
  43. int fz=x1*x2;
  44. int fm=y1*y2;
  45. int yue=fun(fz,fm);
  46. fz/=yue;
  47. fm/=yue;
  48. if(fm<0)
  49. {
  50. fm=-fm;
  51. fz=-fz;
  52. }
  53. if(fm==1)
  54. System.out.println("乘法结果是:"+fz);
  55. else
  56. System.out.println("乘法结果是:"+fz+"/"+fm);
  57. }
  58. void Div()
  59. {
  60. int fz=x1*y2;
  61. int fm=y1*x2;
  62. int yue=fun(fz,fm);
  63. fz/=yue;
  64. fm/=yue;
  65. if(fm<0)
  66. {
  67. fm=-fm;
  68. fz=-fz;
  69. }
  70. if(fm==1)
  71. System.out.println("除法结果是:"+fz);
  72. else
  73. System.out.println("除法结果是:"+fz+"/"+fm);
  74. }
  75. }

最终得分

Grade.java

  1. package lab2;
  2. import java.util.Scanner;
  3. interface Average
  4. {
  5. public float avg(int[] score);
  6. }
  7. class First implements Average
  8. {
  9. int x=0;
  10. float sum=0;
  11. public float avg(int[] score)
  12. {
  13. for(int arr : score)
  14. {
  15. sum+=arr;
  16. x++;
  17. }
  18. return sum/x;
  19. }
  20. }
  21. class Second implements Average
  22. {
  23. int max=-1000;
  24. int min=1000;
  25. int x=0;
  26. float sum=0;
  27. public float avg(int[] score)
  28. {
  29. for(int arr : score)
  30. {
  31. if(arr>max)
  32. max=arr;
  33. if(arr<min)
  34. min=arr;
  35. sum+=arr;
  36. x++;
  37. }
  38. x-=2;
  39. sum=sum-min-max;
  40. return sum/x;
  41. }
  42. }
  43. public class Grade
  44. {
  45. public static void main(String[] args)
  46. {
  47. Scanner scanner=new Scanner(System.in);
  48. First F = new First();
  49. Second S = new Second();
  50. System.out.println("请输入分数的个数:");
  51. int i=scanner.nextInt();
  52. int[] score=new int[i];
  53. System.out.println("请输入对应的分数:");
  54. for (int j = 0; j < i; j++) {
  55. score[j]=scanner.nextInt();
  56. }
  57. System.out.println();
  58. float a = F.avg(score);
  59. float b = S.avg(score);
  60. System.out.printf("First类计算结果:%.2f\n",a);
  61. System.out.printf("Second类计算结果:%.2f",b);
  62. }
  63. }

感谢大家的观看

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/839225
推荐阅读
相关标签
  

闽ICP备14008679号