data内容文件如:
T,2,8,3,5,1,8,13,0,6,6,10,8,0,8,0,8
I,5,12,3,7,2,10,5,5,4,13,3,9,2,8,4,10
D,4,11,6,8,6,10,6,2,6,10,3,7,3,7,3,9
N,7,11,6,6,3,5,9,4,6,4,4,10,6,10,2,8
G,2,1,3,1,1,8,6,6,6,6,5,9,1,7,5,10
S,4,11,5,8,3,8,8,6,9,5,6,6,0,8,9,7
B,4,2,5,4,4,8,7,6,6,7,6,6,2,8,7,10
A,1,1,3,2,1,8,2,2,2,8,2,8,1,6,2,7
J,2,2,4,4,2,10,6,2,6,12,4,8,1,6,1,7
M,11,15,13,9,7,13,2,6,2,12,1,9,8,1,1,8
X,3,9,5,7,4,8,7,3,8,5,6,8,2,8,6,7
...
共有20000个字母识别的数据,请教怎让把他们读入一个int abc[20000][17]的二维数组里(T,D,N...这些字母可以换成int1-26),用什么方法读入?非常感谢!

解决方案 »

  1.   

    public class Test2 { public static void main(String[] args) throws Exception {
    Test2 hand = new Test2();
    Conica.pl(hand.readFromData("D:\\06 June\\kevins.data"));
    } public int[][] readFromData(String fileName) throws Exception {
    int[][] ret = null;
    BufferedReader fr = new BufferedReader(new FileReader(fileName));
    int count = 0;
    String record = fr.readLine();
    while (record != null) {
    count++;
    record = fr.readLine();
    }
    fr.close();
    ret = new int[count][17]; fr = new BufferedReader(new FileReader(fileName));
    count = 0;
    record = fr.readLine();
    while (record != null) {
    writeData(ret[count], record);
    count++;
    record = fr.readLine();
    }
    fr.close();
    return ret;
    } public void writeData(int[] ints, String val) {
    String[] srs = val.split(",");
    for (int i = 0; i < srs.length; i++) {
    int value;
    String curr = srs[i];
    char c = curr.charAt(0);
    if(Character.isUpperCase(c) || Character.isUpperCase(c)){
    if(Character.isUpperCase(c))
    value = c - 'A';
    else
    value = c - 'a';
    } else {
    value = Integer.parseInt(curr);
    }
    ints[i] = value;
    }
    }
    }