자바 문자열 구분하고 배열에 저장을 했는데 뜨는 오류 좀 도와주세요..

nature1711의 이미지

텍스트파일을 불러와서 stringTokenizer로 문자열 구분을 하였구요,
book클래스의 arraylist를 생성해서 구분한 문자열들을 저장했습니다
근데 값이 이상하게 나와서요ㅜㅜ
왜이런거죠?

public class Manager{
public static void main(String[] args) {
File datafile = new File("D:/Booklist(1).txt");
String readData;
StringTokenizer st;
ArrayList arr[] = new ArrayList[50436];
int i=0;

try {
BufferedReader br = new BufferedReader(new FileReader(datafile));
while((readData = br.readLine())!=null) {
st = new StringTokenizer(readData,"/");
String number = st.nextToken();
String rNum = st.nextToken();
String name = st.nextToken();
String author = st.nextToken();
String pHouse = st.nextToken();
String pYear = st.nextToken();
String bKind = st.nextToken();
int x = Integer.parseInt(number);
int y = Integer.parseInt(pYear);
while(st.hasMoreTokens()) {
arr[i] = new ArrayList();
arr[i].add(new Book(number,rNum,name,author,pHouse,pYear,bKind));
i++;
}
System.out.println(arr);
}

----------------------------------------------------------------------------------
오류부분

[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922
[Ljava.util.ArrayList;@7852e922

정상적인 출력은

50428/DM107801/정여립의 생애와 사상 :미증유의 사상 혁명가/배동수/나무미디어/2017/일반도서
50429/DM107802/제주 탐닉 :조금 더 깊은 가이드북/문신기/디스커버리미디어/2017/일반도서
50430/DM107803/조선을 새롭게 하라 :권경률의 역사다큐/권경률/앨피/2017/일반도서
50431/DM107804/"지금, 괌"/오상용/플래닝북스/2017/일반도서
50432/DM107805/(바다의 선물!) 크루즈여행 길라잡이/김종생/나눔사/2017/일반도서
50433/DM107806/통치와 광기 :세계사를 바꾼 정복자와 독재자들/류광철/말글빛냄/2017/일반도서
50434/DM107807/(프렌즈) 독일 :Season3 '17~18'/유상현/중앙Books/2017/일반도서
50435/DM107808/(프렌즈) 홍콩·마카오 =Hongkong Macau/전명윤/중앙Books/2017/일반도서
50436/DM107809/하루 3분 세계사 :매일 한 단어로 대화의 품격을 높이는 방법/김동섭/시공사/2017/일반도서

File attachments: 
첨부파일 크기
Image icon dfdfdfd.PNG37.77 KB
김정균의 이미지

<code lang="cpp"> ~ </code> 를 이용해서 코드를 감싸 주세요.
보기 힘듭니다. 보기 힘든 코드는 답변도 받기 힘듭니다.

code tag 를 사용하면 이렇게 보입니다:

#include <stdio.h>
 
int main (void) {
    printf ("Hello World!\n");
    exit 0;
}
raymundo의 이미지

문제가 여럿 있는데...

일단 arr 이 ArrayList 의 배열이고 그걸 print 하려 하니까 저렇게 나온 거고,
원하는 출력을 내려면 Book 객체를 출력해야죠.

그리고 입력파일이 어떻게 생겼는지 질문글에 포함되어 있지 않아서 확실치는 않지만 아마 희망 출력 결과랑 똑같이 생겼을 것 같은데, 저 while 루프 안으로 정말로 진입할 수 있는지도 의문이고요.

그 다음, 최종적으로 Book 데이터들이 어떤 형태로 저장되어 있기를 원하시는지요? 아마도 하나의 리스트에 줄줄이 담겨 있길 원할 것 같은데, 지금 만든 건 하나의 리스트가 아니라 리스트의 배열이네요.

// 리스트 만들고
ArrayList<Book> arr = new ArrayList<>();
 
...
 
while (한줄씩 읽으면서) {
  지금처럼 number, rNum 등을 nextToken으로 뽑아낸 후
  arr.add(new Book(...))  // 방금 뽑아낸 정보로 Book 객체 만들어 리스트에 담음
}
 
// 리스트를 순회하며 출력
for (Book b : arr) {
   System.out.println(b);  // Book에 toString()이 적절히 구현되어 있다면
}

좋은 하루 되세요!

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.