package shiyan4_2; import java.util.*; public class MainClass { @SuppressWarnings("unchecked") public static void main(String args[]) { List<Book> bookList=new LinkedList<Book>(); String bookName[]={"C语言程序设计基础","计算机组成原理","JSP基础教程","C++程序设计", "J2ME编程","操作系统","数据库技术"}; double bookPrice[]={29,21,22,29,34,32,29}; Book book[]=new Book[bookName.length]; for(int k=0;k<book.length;k++) { book[k]=new Book(); book[k].setName(bookName[k]); book[k].setPrice(bookPrice[k]); bookList.add(book[k]); } Book newBook=new Book(); newBook.setPrice(29); newBook.setName("Java程序设计"); bookList.add(newBook); Collections.sort(bookList); int m=-1; System.out.println("经查询, "+newBook.getName()+"("+newBook.getPrice()+")与下列图书:"); while((m=Collections.binarySearch(bookList,newBook,null))>=0) { Book bk=bookList.get(m); System.out.println("\t"+bk.getName()+"("+bk.getPrice()+")"); 【代码4】 } System.out.println("价钱相同。"); } }
时间: 2023-07-16 15:16:23 浏览: 62
这段代码是一个关于图书的主程序,包含了以下步骤:
1. 创建一个LinkedList类型的图书列表bookList和两个数组bookName和bookPrice;
2. 遍历book数组,创建Book对象,设置其名称和价格,并将其添加到bookList中;
3. 创建一个新的Book对象newBook,设置其名称和价格,将其添加到bookList中;
4. 使用Collections.sort()方法对bookList进行排序;
5. 使用Collections.binarySearch()方法查找newBook在bookList中的位置;
6. 如果找到了newBook,则输出与newBook价格相同的图书名称和价格;
7. 如果没有找到newBook,则输出“没有找到与newBook价格相同的图书”。
【代码4】的实现应该是:
```
bookList.remove(m);
```
这行代码的作用是将找到的相同价格的图书从bookList中删除,以避免重复输出。
相关问题
package shiyan4_3; import java.util.TreeSet; public class Student implements TreeSet<Student> { String name; int score; Student(String name,int score) { this.name=name; this.score=score; } /** *补充代码[2],重写compareTo()方法 **/ public int getScore() { return score; } public String getName() { return name; } }
这段代码有问题,因为Java中的类不能直接实现 TreeSet 接口,而应该实现 Comparable 接口并重写 compareTo 方法。应该修改代码如下:
```java
package shiyan4_3;
import java.util.TreeSet;
public class Student implements Comparable<Student> {
String name;
int score;
Student(String name,int score) {
this.name=name;
this.score=score;
}
/**
* 重写 compareTo() 方法
**/
@Override
public int compareTo(Student other) {
return Integer.compare(this.score, other.score);
}
public int getScore() {
return score;
}
public String getName() {
return name;
}
}
```
在这个例子中,我们假设学生对象之间的比较是基于分数的。因此,compareTo 方法应该比较两个学生对象的分数,并返回一个 int 值,表示它们之间的大小关系。如果当前对象的分数小于 other 对象的分数,则返回负值;如果当前对象的分数等于 other 对象的分数,则返回 0;如果当前对象的分数大于 other 对象的分数,则返回正值。这个 compareTo 方法的实现中,使用了 Java 内置的 Integer.compare 方法,来比较两个 int 值的大小关系。
解释package shiyan2; import java.util. Scanner; public class student { public static void main(String[] args) { // TODO Auto-generated method stub 11从界面接收输入的信息 Scanner sc = new Scanner(@ System.in); Stu a = new Stu(sc.next,sc.next,sc.nextFloat a.show; a.calGpa); sc.close0!
这段代码是一个Java程序,它定义了一个名为`student`的类,其中包括一个名为`main`的方法。这个方法的作用是从用户输入中获取学生的信息(姓名、学号、成绩等),计算学生的GPA并输出。具体来说,这个程序使用了Java标准库中的Scanner类来获取用户输入,然后通过调用Stu类的show和calGpa方法来输出学生信息和计算GPA。在程序结尾处,使用了`sc.close()`来关闭Scanner对象,以释放资源。需要注意的是,这段代码有一些语法错误,例如缺少了括号、分号等。如果要让它能够编译通过,需要进行一些修正。