java - 从 fileScan 参数创建对象
问题描述
我正在努力正确执行此代码。一切似乎都有效,除了我调用 addBook 函数的地方。我正在尝试传入 CSV 并对其进行初始化。
public void addBook(Book book) {
books[currIndex] = book;
currIndex++;
}
public void setNumBooks(int num) {
//how many books
numBooks = num;
books = new Book[numBooks]; //init array
}
下一个功能是我遇到问题的地方
public void addBooksFromFile(String filename) {
File f = new File(filename);
try{
Scanner fileScan = new Scanner(f); //set semi colon delimiter
numBooks = fileScan.nextInt();
setNumBooks(numBooks);
String line;
while(fileScan.hasNextLine())
line = fileScan.nextLine();
String[] splitArray = line.split("; ");
for(int i = 0; i < splitArray.length; i++){
//addBook();
}
}
catch (IOException e) //input output exception
{
System.out.println(e);
}
}
当我尝试传递 splitArray[i] 时,它表明字符串与书不兼容,这是有道理的。我该如何解决这个问题才能正常工作?
解决方案
您的难题的具体解决方案高度依赖于Book
类的实现。
Java 是一种强类型语言,因此您必须遵守该方法期望作为参数的参数类型。
splitArray[i] // this return a String, which is not a Book
假设您的 Book 课程如下所示:
public class Book {
final String text;
public Book(String text) {
this.text = text;
}
}
您的 for 循环迭代应更改为以下内容:
for(int i = 0; i < splitArray.length; i++){
final Book book = new Book(splitArray[i]);
addBook(book);
}
推荐阅读
- image-processing - Three.js 中的 Inter_area 纹理 minFilter 是否像 opencv 中一样?
- java - java - 如何使用Java Swing手动控制哪个线程进入临界区?
- javascript - 对如何标记此内容感到困惑
- android - Android 清除 Back Stack 上的一些 Activity
- php - PHP月年日选择下拉列表在中间件laravel中生成日期格式
- python - 熊猫数据框添加数据框python
- android - 是否必须在 android 的主线程之外的房间中编写查询?
- python - 我想根据用户输入更新海龟
- android - 按下时升级到 dart 2.2.1 在图标按钮和凸起按钮中不起作用
- mysql - 解决 mysql 数据库中的 sequelize 布尔值