实现有理数类(Java)

 
 
  1. /*Java中没有提供表示有理数的类。
  2. 有理数类
  3. */
  4. public class Rational {
  5. private long numerator = 0; //分子
  6. private long denominator = 1; //分母
  7. //构造函数
  8. public Rational() {
  9. this(0,1);
  10. }
  11. public Rational(long numerator, long denominator) {
  12. long gcd = gcd(numerator,denominator);
  13. this.numerator= ((denominator>0)? 1 : -1)*numerator / gcd;
  14. this.denominator=Math.abs(denominator)/gcd;
  15. }
  16. //求最大公约数,便于简化有理数
  17. public static long gcd(long n,long d){
  18. long n1=Math.abs(n);
  19. long n2=Math.abs(d);
  20. int gcd=1;
  21. for(int k=1;k<=n1&&k<=n2;k++){
  22. if(n1%k==0&&n2%k==0){
  23. gcd=k;
  24. }
  25. }
  26. return gcd;
  27. }
  28. //生成器
  29. public long getNumerator(){
  30. return numerator;
  31. }
  32. public long getDenominator(){
  33. return denominator;
  34. }
  35. //实现加法
  36. public Rational add(Rational secondRational){
  37. long n=numerator*secondRational.getDenominator()+
  38. denominator*secondRational.getNumerator();
  39. long d=denominator*secondRational.getDenominator();
  40. return new Rational(n,d);
  41. }
  42. //实现减法
  43. public Rational subtract(Rational secondRational){
  44. long n=numerator*secondRational.getDenominator()-
  45. denominator*secondRational.getNumerator();
  46. long d=denominator*secondRational.getDenominator();
  47. return new Rational(n,d);
  48. }
  49. //实现乘法
  50. public Rational multiply(Rational secondRational){
  51. long n=numerator*secondRational.getNumerator();
  52. long d=denominator*secondRational.getDenominator();
  53. return new Rational(n,d);
  54. }
  55. //实现除法
  56. public Rational divide(Rational secondRational){
  57. long n=numerator*secondRational.getDenominator();
  58. long d=denominator*secondRational.numerator;
  59. return new Rational(n,d);
  60. }
  61. //重写toString类
  62. public String toString(){
  63. if(denominator==1){
  64. return numerator+"";
  65. }else{
  66. return numerator+"/"+denominator;
  67. }
  68. }
  69. public boolean equals(Object praml){
  70. if((this.subtract((Rational)(praml))).getNumerator()==0){
  71. return true;
  72. }else{
  73. return false;
  74. }
  75. }
  76. public int intValue(){
  77. return (int)doubleValue();
  78. }
  79. public float floatValue(){
  80. return (float)doubleValue();
  81. }
  82. public double doubleValue(){
  83. return numerator*1.0/denominator;
  84. }
  85. public long longValue(){
  86. return (long)doubleValue();
  87. }
  88. //实现Comparable接口,compare方法
  89. public int compareTo(Object o){
  90. if((this.subtract((Rational)o)).getNumerator()>0){
  91. return 1;
  92. }else{
  93. return 0;
  94. }
  95. }
  96. }




转载于:https://www.cnblogs.com/zeroves/p/4517791.html

Java Swing是Java平台提供的一套GUI组件库,可以用于创建各种图形用户界面。要实现有理数排序界面,首先要有一个可以输入有理数的文本框和一个按钮用于执行排序操作。 1. 首先,使用Java Swing创建一个窗口,并设置宽度和高度以及布局。可以使用JFrame创建窗口对象,并设置setLayout方法设置布局。 2. 在窗口中添加一个文本框,使用户可以在其中输入有理数。可以使用JTextField创建文本框对象,并使用add方法将其添加到窗口中。 3. 添加一个按钮,用于触发排序操作。可以使用JButton创建按钮对象,并使用add方法将其添加到窗口中。 4. 添加事件监听器,以便在用户点击按钮时执行排序操作。可以使用ActionListener接口创建一个监听器,并在按钮上调用addActionListener方法将其添加到按钮上。 5. 实现有理数排序算法。可以使用Collections.sort方法对有理数列表进行排序。在该方法中,可以使用Comparator接口创建一个比较器,以便以用户指定的顺序排序有理数。 6. 在排序操作完成后,将排序结果显示在窗口中。可以使用JOptionPane中的showMessageDialog方法显示一个弹出窗口,其中包含有理数的排序结果。 7. 运行程序并测试功能。将有理数输入到文本框中,并点击按钮执行排序操作,然后在弹出窗口中显示排序结果。 以上是用Java Swing实现有理数排序界面的基本步骤。可以根据自己的需要对界面进行进一步的美化和功能扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值