숙제를하고 있지만 문제가 발생했습니다. 내 코드는 txt 파일에서 책 (저자, 제목 등)에 대한 정보를 스캔 한 다음 인쇄합니다. 먼저 저자, 제목, ISBN 코드, 페이지 수, 그리고 15 * 페이지 수의 도서 가격을 인쇄하려고했습니다. 지금까지 작동하지만 각 책에 번호를 추가하려고 했으므로 목록과 같이 나타납니다. 그러나 코드를 수정하여 해당 숫자를 추가하면 코드에서 스캔하지 않으려 고합니다. 그것은Java - 하나의 parseInt는 오류를 표시하고 다른 하나는 오류를 표시하지 않습니다.
INT 내가 호기심 문자열로 숫자를 스캔하기 문자열
로 변환 할 수 없습니다 만, 다음 오류 메시지가
문자열로 변환 할 수 있다고 말한다 int로
내 예약 클래스 :
,536,913,632 10public class Book {
private int number;
private String author;
private String title;
private String code;
private int pages;
private static int multiplier = 15;
public Book(String author, String title, String code, int pages, int number) {
this.number = number;
this.author = author;
this.title = title;
this.code = code;
this.pages = pages;
}
@Override
public String toString() {
return author + " - " + title + ", ISBN:" + code + ", " + pages + " pages, Price: " + price() + "Ft";
}
public int price() {
return multiplier * pages;
}
public static int getMultiplier() {
return multiplier;
}
public static void setMultiplier(int multiplier) {
Book.multiplier = multiplier;
}
public int getNumber() {
return number;
}
public String getAuthor() {
return author;
}
public String getTitle() {
return title;
}
public String getCode() {
return code;
}
public int getPages() {
return pages;
}
}
그리고 내 "컨트롤러"클래스 :
public class Controller {
void start() {
scanning();
printing("Avilable books: ");
}
private List<Book> books = new ArrayList<>();
private void scanning() {
try {
Scanner fajlScanner = new Scanner(new File("books.txt"));
String row;
String data[];
while (fajlScanner.hasNextLine()) {
row = fajlScanner.nextLine();
data = row.split(";");
//1;J.K. Rowling;Harry Potter and the Philosopher's Stone;1782637594826;342
//this line below gives the error for the data[0]
books.add(new Book(Integer.parseInt(data[0]), data[1], data[2], data[3], Integer.parseInt(data[4])));
}
} catch (FileNotFoundException ex) {
Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void printing(String title) {
System.out.println(title);
for (Book book : books) {
System.out.println(book);
}
}
}
내 TXT의 내용 :
이1;J.K. Rowling;Harry Potter and the Philosopher's Stone;1782637594826;342
2;J.R.R. Tolkien;The Fellowship of the Ring;1827493762573;431
3;Stephen King;Needful Things;8274653821647;411
4;Eric Knight;Lassie Come-Home;7263845618293;138
5;Molnár Ferenc;A pál utcai fiúk;9283746192846;194
6;Winston Groom;Forrest Gump;0385231342;228
7;Antoine de Saint-Exupéry;The Little Prince;8362748172649;69
8;Stephen King;Cujo;2918467382914;362
나는 페이지가 좋은 검색 할 수 있지만,이 "수"로 약간의 문제가 있습니다.
행운? ** 파싱하기 전에 각 배열의 내용을 출력하여 자신을위한 변수를 테스트 해보십시오. 또는 디버거를 사용하십시오. –
잘못된 순서로 인수를 전달하려고하는 것 같습니다. – user2357112
디버깅을 쉽게하기 위해 각 구문 분석을 자체적 인 행에 두는 것을 고려하십시오. 파싱하기 전에 각 문자열을 출력하십시오.파싱하기 전에''trim()' '할 필요는 없는지 확인하십시오. –