7-2 手机按价格排序、查找 分数 20 作者 吴光生 单位 新余学院 编写手机类(MobilePhone),含有type(型号,String类型)、price(价格,int类型)属性,要求该类实现Comparable接口,重写compareTo方法,实现按照price的大小来确定两个手机对象的大小关系。 在链表中添加三个手机对象(从键盘输入),通过Collections类的sort方法对链表中的对象按照price升序排序。输入第四个手机对象的信息,并查找它的price是否与链表中某个对象的price相同。 输入格式: 先输入三部手机的型号、价格信息 再输入要查找的第四部手机的型号、价格信息 每部手机信息的格式如:Redmi9A 599 输出格式: 先输出三部手机排序前的信息 再输出三部手机排序后的信息 最后输出第四部手机是否与前面某部手机价格相同 具体格式参考输出样例
时间: 2024-04-22 20:28:57 浏览: 329
以下是一个可能的解题思路,供参考:
```java
import java.util.*;
class MobilePhone implements Comparable<MobilePhone> {
private String type;
private int price;
public MobilePhone(String type, int price) {
this.type = type;
this.price = price;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public int compareTo(MobilePhone other) {
// 按照价格升序排序
return this.price - other.price;
}
@Override
public String toString() {
return type + " " + price;
}
}
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 创建一个链表用于存储MobilePhone对象
List<MobilePhone> list = new LinkedList<>();
// 输入三部手机的信息,并添加到链表中
for (int i = 0; i < 3; i++) {
String type = scanner.next();
int price = scanner.nextInt();
MobilePhone mobilePhone = new MobilePhone(type, price);
list.add(mobilePhone);
}
// 输出三部手机排序前的信息
System.out.println("排序前:");
for (MobilePhone mobilePhone : list) {
System.out.println(mobilePhone);
}
// 使用Collections类的sort方法对链表中的MobilePhone对象按照价格升序排序
Collections.sort(list);
// 输出三部手机排序后的信息
System.out.println("排序后:");
for (MobilePhone mobilePhone : list) {
System.out.println(mobilePhone);
}
// 输入第四部手机的信息
String type = scanner.next();
int price = scanner.nextInt();
MobilePhone mobilePhone = new MobilePhone(type, price);
// 在链表中查找是否存在价格相同的MobilePhone对象
boolean found = false;
for (MobilePhone mp : list) {
if (mp.getPrice() == mobilePhone.getPrice()) {
found = true;
break;
}
}
// 输出是否找到相同价格的MobilePhone对象
if (found) {
System.out.println("找到了相同价格的手机");
} else {
System.out.println("没有找到相同价格的手机");
}
}
}
```
输入样例:
```
Redmi9A 599
iPhone12 6799
Mate40 8999
Mi10 3999
```
输出样例:
```
排序前:
Redmi9A 599
iPhone12 6799
Mate40 8999
排序后:
Redmi9A 599
Mi10 3999
iPhone12 6799
Mate40 8999
没有找到相同价格的手机
```
阅读全文