如何使用扫描仪类将值转换为字符数组?

时间:2018-07-24 03:22:04

标签: java java.util.scanner

我正在尝试使用扫描程序类将文件内容读取到字符数组中,并且不断从代码中获取超出范围的字符串索引错误,而且我不确定这是怎么回事

    File fileName = null;
    if(0<args.length) {
        fileName = new File(args[0]);
    }
    Scanner s = null;
    try {
        s = new Scanner(fileName);
        s.useDelimiter(",");
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }

    char[]array = new char[26];
    while(s.hasNext()) {
        for(int i=0; i<27; i++) {
            array[i] = s.next().charAt(i);
        }
    }

2 个答案:

答案 0 :(得分:2)

据我所知,您的代码与以下代码等效,没有超出范围的异常

char[]array;
while(s.hasNext()) {
    array = s.next().toCharArray();
}

但是,在while循环之后,您的数组将仅等于最后扫描的值。

如果您使用单个逗号分隔的字符,则可以使用以下字符。您不需要现有循环中的循环

char[]array = new char[26];
int i = 0;
while(s.hasNext()) {
    array[i++] = s.next().charAt(0);
}

无论如何,我建议使用using StringTokenizer rather than a Scanner

答案 1 :(得分:1)

在您的for循环中,您尝试访问a [26],但是您声明了26个字符的内存。因此,您只能访问a [0]到a [25]。