Java 如何使用scanner类将值获取到字符数组中?

Java 如何使用scanner类将值获取到字符数组中?,java,java.util.scanner,Java,Java.util.scanner,我试图使用scanner类将文件内容读入字符数组,我不断从代码中得到一个字符串索引越界错误,我不确定出了什么问题 File fileName = null; if(0<args.length) { fileName = new File(args[0]); } Scanner s = null; try { s = new Scanner(fileName); s.useDelimiter(",");

我试图使用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);
        }
    }
文件名=null;

如果(0在for循环中,您试图访问[26],但声明的内存为26个字符。因此,您只能访问[0]到[25]。

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

据我所知,您的代码相当于以下代码,没有越界异常

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);
}

无论如何,我建议

据我所知,您的代码相当于以下代码,没有越界异常

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);
}

在任何情况下,我都建议你好奇为什么要把分隔符设为逗号。你的文件是什么样子的?你期望得到什么输出?我的文件是这样的:a,b,c,d,e,f,g,h,I,j,k,l,m,n,o,p,g,r,s,t,u,v,w,x,y,Zan我正试图把字符放到一个没有逗号的字符数组中,你真的需要一个字符数组吗?你可以读这个使用CSV解析器将行转换为字符串数组库里为什么要将分隔符设置为逗号。您的文件是什么样子的?您希望得到什么输出?我的文件是这样的:a、b、c、d、e、f、g、h、i、j、k、l、m、n、o、p、g、r、s、t、u、v、w、x、y、zan我正在尝试将字符放入一个没有逗号的字符数组中,您真的需要字符数组吗?您可以重新设置将使用CSV解析器的一行添加到字符串数组中。错误出现在[1]之后,我应该clarified@Josh嗯,是的,26是在1之后,错误是在[1]之后出现的,我本应该这样做的clarified@Josh嗯,是的,26是1之后