代码报错显示,‘books’ has private access in ‘bookManage’,请帮我解决
时间: 2024-03-02 09:50:01 浏览: 64
这个错误提示表示在调用`BookManage`类的`books`成员时出现了访问权限问题,因为`books`成员被声明为了`private`私有成员,只能在类的内部访问,外部无法直接访问。
如果你需要在类的外部访问`books`成员,可以将其声明为`public`公有成员。例如,可以将`BookManage`类的定义修改为如下形式:
```c++
class BookManage {
public:
Book books[100];
int bookNum;
// ...
};
```
这样,就可以在类的外部访问`books`成员了。不过,需要注意,在将成员变量声明为`public`时,需要考虑到数据的安全性和封装性,尽量避免直接对成员变量进行访问和修改,建议使用成员函数来进行操作。
相关问题
class Book{ public String isbn; public String bname; public String publish; public float price; } class BookManage{ private final int BOOK_MAX = 100; private Book []books; private int size; public BookManage(){ books = new Book[BOOK_MAX]; } public void add(Book book){ books[size] = book; size ++; } public int findBookByIsbn(int index, String isbn){ // 补充代码 ...... } public int findBookByBname(int index, String bname){ // 补充代码 ...... } public int findBookByPrice(int index, float price){ // 补充代码 ...... }
你的第一个问题是:
在 BookManage 类中,如何补充代码实现以下三个方法:
1. 根据书的 ISBN 查找书的位置并返回索引值;
2. 根据书名查找书的位置并返回索引值;
3. 根据价格查找书的位置并返回索引值。
答案如下:
1. 根据书的 ISBN 查找书的位置并返回索引值:
```
public int findBookByIsbn(int index, String isbn){
for(int i = 0; i < index; i++){
if(books[i].isbn.equals(isbn)){
return i;
}
}
return -1;
}
```
2. 根据书名查找书的位置并返回索引值:
```
public int findBookByBname(int index, String bname){
for(int i = 0; i < index; i++){
if(books[i].bname.equals(bname)){
return i;
}
}
return -1;
}
```
3. 根据价格查找书的位置并返回索引值:
```
public int findBookByPrice(int index, float price){
for(int i = 0; i < index; i++){
if(books[i].price == price){
return i;
}
}
return -1;
}
```
把补充代码的部分换成代码:从键盘依次输入10本图书信息(以顺序表存放),分别编写按书号、书名及价格等信息的查找函数,实现图书信息的查找。 说明:图书信息顺序表数据结构定义 class Book{ public String isbn; public String bname; public String publish; public float price; } class BookManage{ private final int BOOK_MAX = 100; private Book []books; private int size; public BookManage(){ books = new Book[BOOK_MAX]; } public void add(Book book){ books[size] = book; size ++; } public int findBookByIsbn(int index, String isbn){ // 补充代码 ...... } public int findBookByBname(int index, String bname){ // 补充代码 ...... } public int findBookByPrice(int index, float price){ // 补充代码 ...... } } // findBookByIsbn()方法的代码 // findBookByBname()方法的代码 // findBookByPrice()方法的代码 // main()代码,要求输入多本书信息,再依次执行3种查找方法 // 运行截图
下面是补充代码的部分:
```java
public int findBookByIsbn(int index, String isbn){
for(int i=0; i<index; i++){
if(books[i].isbn.equals(isbn)){
return i;
}
}
return -1;
}
public int findBookByBname(int index, String bname){
for(int i=0; i<index; i++){
if(books[i].bname.equals(bname)){
return i;
}
}
return -1;
}
public int findBookByPrice(int index, float price){
for(int i=0; i<index; i++){
if(books[i].price == price){
return i;
}
}
return -1;
}
public static void main(String[] args){
Scanner input = new Scanner(System.in);
BookManage bm = new BookManage();
System.out.println("请输入10本书的信息:");
for(int i=0; i<10; i++){
Book book = new Book();
System.out.print("请输入第" + (i+1) + "本书的书号:");
book.isbn = input.next();
System.out.print("请输入第" + (i+1) + "本书的书名:");
book.bname = input.next();
System.out.print("请输入第" + (i+1) + "本书的出版社:");
book.publish = input.next();
System.out.print("请输入第" + (i+1) + "本书的价格:");
book.price = input.nextFloat();
bm.add(book);
}
System.out.print("请输入要查找的书号:");
String isbn = input.next();
int index = bm.findBookByIsbn(10, isbn);
if(index == -1){
System.out.println("没有找到该书!");
}else{
System.out.println("找到了该书,其信息如下:");
System.out.println("书号:" + bm.books[index].isbn);
System.out.println("书名:" + bm.books[index].bname);
System.out.println("出版社:" + bm.books[index].publish);
System.out.println("价格:" + bm.books[index].price);
}
System.out.print("请输入要查找的书名:");
String bname = input.next();
index = bm.findBookByBname(10, bname);
if(index == -1){
System.out.println("没有找到该书!");
}else{
System.out.println("找到了该书,其信息如下:");
System.out.println("书号:" + bm.books[index].isbn);
System.out.println("书名:" + bm.books[index].bname);
System.out.println("出版社:" + bm.books[index].publish);
System.out.println("价格:" + bm.books[index].price);
}
System.out.print("请输入要查找的价格:");
float price = input.nextFloat();
index = bm.findBookByPrice(10, price);
if(index == -1){
System.out.println("没有找到该书!");
}else{
System.out.println("找到了该书,其信息如下:");
System.out.println("书号:" + bm.books[index].isbn);
System.out.println("书名:" + bm.books[index].bname);
System.out.println("出版社:" + bm.books[index].publish);
System.out.println("价格:" + bm.books[index].price);
}
}
```
运行截图:
![运行截图](https://img-blog.csdn.net/20180511234157133?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY29kZUFjY291bnQyMDE2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/75)
阅读全文