Java 如何使用scanner类将值获取到字符数组中?
我试图使用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(",");
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之后