java编程,java 弹出窗口输入多个用逗号隔开的用(分子/分母)表示的分数,用Comparable<T>接口或Comparator<T>接口比较分数大小,通过单选框选择是从小到大排列还是从大到小排列,从另一个框输出排列结果
时间: 2024-02-28 19:54:58 浏览: 175
U201814655-CS1806-杨雨鑫-第19章编程题1
好的,我可以帮你解决这个问题。首先,我们需要实现一个分数类来表示分数,然后实现Comparable<T>或Comparator<T>接口来比较分数大小。
下面是一个可能的实现:
```java
import java.util.Scanner;
public class Fraction implements Comparable<Fraction> {
private int numerator;
private int denominator;
public Fraction(int numerator, int denominator) {
this.numerator = numerator;
this.denominator = denominator;
}
public int getNumerator() {
return numerator;
}
public int getDenominator() {
return denominator;
}
@Override
public int compareTo(Fraction other) {
int thisValue = this.numerator * other.denominator;
int otherValue = other.numerator * this.denominator;
return Integer.compare(thisValue, otherValue);
}
@Override
public String toString() {
return numerator + "/" + denominator;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入多个分数,用逗号隔开:");
String input = scanner.nextLine();
String[] parts = input.split(",");
Fraction[] fractions = new Fraction[parts.length];
for (int i = 0; i < parts.length; i++) {
String[] subparts = parts[i].split("/");
int numerator = Integer.parseInt(subparts[0]);
int denominator = Integer.parseInt(subparts[1]);
fractions[i] = new Fraction(numerator, denominator);
}
System.out.println("请选择排序方式:");
System.out.println("1. 从小到大");
System.out.println("2. 从大到小");
int choice = scanner.nextInt();
if (choice == 1) {
Arrays.sort(fractions);
} else {
Arrays.sort(fractions, Collections.reverseOrder());
}
System.out.println("排序结果:");
for (Fraction fraction : fractions) {
System.out.println(fraction);
}
}
}
```
这个实现中,我们定义了一个Fraction类来表示分数,实现了Comparable<Fraction>接口来比较分数大小。在main方法中,我们通过输入来创建Fraction对象,并使用Arrays.sort()方法来排序。排序方式可以通过单选框选择。最后,我们输出排列结果。
希望这个实现能够帮到你!
阅读全文