2014-02-24 1 views
0

사용자로부터 텍스트를 읽고 FSM을 통해 실행할 수 있도록 문자가 포함 된 배열을 만들어야합니다. 그러나 버퍼링 된 독자가 문자열이 아닌 형식의 입력에 동의하는 것처럼 보이지는 않습니다. 어떤 충고? 나는 또한 배열을 사용해야하는지 모르거나 ArrayList를하지 않는char [] 배열 또는 arraylist로 파일 읽기

static ArrayList<Character> StringList = new ArrayList<Character>(); 
static char[] data; 
public static void main(String[] args){ 

    InputStreamReader ISR = new InputStreamReader (System.in); 
    BufferedReader BR = new BufferedReader(ISR); 
    try{ 
     String sCurrentChar; 
     while((sCurrentChar=BR.readLine())!=null){ 

      for(int i= 0; i<sCurrentChar.length(); i++) 
      StringList.add(sCurrentChar.charAt(i)); 


     } 
     for(int i =0; i<StringList.size(); i++){ 
      System.out.println(StringList.get(i)); 
     } 
    } catch(IOException e){ 
     e.printStackTrace(); 
    } 
} 
+0

목록 대신 char []를 사용하는 것이 더 좋습니다. – NFE

+0

가능한 복제본은 http://stackoverflow.com/questions/10006165/converting-string-to-character-array-in-java입니다. –

답변

0

어쩌면 같은 뭔가 어쩌면 문자로 나중에 사용하여, 당신은 원시 바이트 데이터를 읽으려면, 당신을 위해 일할 수있는 다음과 같습니다. 이것은 한 번에 입력 라인을 읽는 것보다 나은 접근법 일 수 있습니다.

import java.io.DataInputStream; 
import java.io.EOFException; 
import java.io.IOException; 
import java.util.Arrays; 

public class a { 
    public static void main(String[] args){ 
    DataInputStream d = new DataInputStream(System.in); 
    int[] bytes = new int[256]; 

    try { 
     int b; 
     int l = 0; 
     while((b = d.readByte()) > 0) { 
     bytes[l++] = b; 
     if((l % 256) == 0) 
      bytes = Arrays.copyOf(bytes, (l + 256)); 
     } 
    } catch(EOFException e) { 
     // end-of-file 
    } catch(IOException e) { 
     System.err.println("AIEEEE: " + e); 
     System.exit(-1); 
    } 

    for(int i = 0; bytes[i] > 0; i++) System.out.print((char)bytes[i]); 
    System.exit(0); 
    } 
} 

배열이 여기에 처리하는 방법은 아마도 사람이 그것을 할 방법 좋은 예입니다,하지만 다시,이 효율적으로 처리하는 배열보다 데이터의 바이트/부호없는 문자를 읽어 대한 자세한입니다.

관련 문제