我需要从用户那里读取文本并创建一个包含字符的数组,以便我可以通过FSM运行它们。但是,我似乎无法让缓冲的读者同意非字符串类型的输入。有什么建议?我也不知道我是否应该使用数组或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 :(得分: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);
}
}
这里处理数组的方式可能是一个很好的例子,一个人不应该这样做,但同样,这更多的是读取数据的字节/无符号字符而不是有效地处理数组。