Java 배열 출력에 관해서 문제가 있습니다.

  • bookza93
    bookza93

    이번에 학교에서 진행하는 컴파일러 수업에서 Scanner를 만드는 과제 중 막히는 점이 있어서 질문 드립니다.

    아래는 Scanner와 관련한 코드입니다.

    import java.io.*;

    public class test {
    public static String str="";
    public static String temp;
    public static char[] array;
    static int idx = 0;

    public static char getch(){    // 다음문자를 불러오는 메소드
        idx++;  //인덱스 값을 하나 올린다.
    
        if (idx<array.length)   //인덱스값이 배열길이보다 작다면
            return array[idx-1];    //문자값을 리턴
        else return '\0';      //인덱스보다 길면 종결문자를 리턴
    }
    
    public static void fileReadLine(){            // 파일로부터                        문장을 읽어와서 char배열 Array에 저장함.
        File file;
        BufferedReader br;
    
        try{
            file = new File("miniC.txt");
            br = new BufferedReader(new FileReader(file));
    
            while((temp = br.readLine())!= null){   // 파일로부터  한문장씩 불러옴
                str += temp + "\r\n";               // newLine을 포함한 문장을 축적
            }
    
            array = str.toCharArray(); // char형 배열 array에 옮김.
            System.out.println(String.copyValueOf(array));
    
            br.close();
    
        }catch(Exception e){System.out.println("파일이 존재하지 않습니다.");}
    }
    public static void main(String[] args){
        fileReadLine();
    
        String temp="";
    
        char[] line = new char[8];
        char data=0;
    
        for(int i=0; i<=3; i++){
            data = getch();
            line[i] = data;
        }
    
        System.out.print(String.valueOf(line));
    }

    }

    이 코드는 테스팅용이기에 Scanner의 코드의 일부분을 가져온 것입니다

    fileReadLine() 메소드에서 array라는 char배열로 코드내용을 저장하고 getch()메소드로 읽은 코드의 한 단어 씩 메인 함수에 있는 line이라는 char배열에 저장을 한 다음, String.valueOf로 출력한 결과

    void□□□□ 이런 문장이 출력되었는데 문제는 저 네모모양이 null인지 모르겠습니다. 디버깅을 해본 결과 배열칸에는 아무런 값이 없어 null인 것 같은데 확신이 가지 않습니다. 만약에 저 □ 를 없앨 수 있는 방법이 있다면 알려주시면 감사하겠습니다.


    10년 전
0개의 댓글이 있습니다.
  • 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.