Java-Java.lang.ArrayIndexOutOfBoundsException是否在代码中发生? publicstaticvoidmain(字符串[]args){ BufferedReader br=null; 试一试{ 弦电流线; br=新的BufferedReader(新的文件阅读器(“E:\\QuickStart.txt”); int index1=0; int index2=0; int strlen=0; 布尔内块=真; 布尔不相容=真; 而((sCurrentLine=br.readLine())!=null){ index1=sCurrentLine.indexOf(“/”); index2=sCurrentLine.indexOf(“*”); char[]c=sCurrentLine.toCharArray(); 对于(int i=0;i
您一直运行到Java-Java.lang.ArrayIndexOutOfBoundsException是否在代码中发生? publicstaticvoidmain(字符串[]args){ BufferedReader br=null; 试一试{ 弦电流线; br=新的BufferedReader(新的文件阅读器(“E:\\QuickStart.txt”); int index1=0; int index2=0; int strlen=0; 布尔内块=真; 布尔不相容=真; 而((sCurrentLine=br.readLine())!=null){ index1=sCurrentLine.indexOf(“/”); index2=sCurrentLine.indexOf(“*”); char[]c=sCurrentLine.toCharArray(); 对于(int i=0;i,java,Java,您一直运行到i 或 int len=c.length-1; for(int i=0;i首先ArrayIndexOutOfBoundsException不是编译异常。它是运行时异常。 在for循环中,您正在检查变量i是否小于字符数组的大小。当您执行i+1时,在最后一个循环中i的值将是length-1,您正在检查数组大小的索引。我希望我有意义 ArrayIndexOutOfBoundsException-抛出以指示已使用非法索引访问数组。该索引为负数或大于或等于数组的大小 在您的代码中,我们从i=0
i
或
int len=c.length-1;
for(int i=0;i首先ArrayIndexOutOfBoundsException
不是编译异常。它是运行时异常。
在for循环中,您正在检查变量i
是否小于字符数组的大小。当您执行i+1
时,在最后一个循环中i
的值将是length-1
,您正在检查数组大小的索引。我希望我有意义
ArrayIndexOutOfBoundsException-抛出以指示已使用非法索引访问数组。该索引为负数或大于或等于数组的大小
在您的代码中,我们从i=0
迭代到i
。但是,我们尝试访问c[i+1]
,这将是c[c.length+1]
,这意味着数组索引超出边界异常
解决方案是将for循环条件更改为i
添加完整堆栈跟踪。同时发布E:\\QuickStart.txt
的内容。提示:c[i+1]
将超出数组索引范围。尝试修复该问题。当访问c[i+1]
,如果我是最后一个元素索引,你认为它会发生在哪里?想知道,程序员回答这个简单问题的速度有多快:P我想一个第一个答案就足够了。import java.util.Calendar;public class QuickStart{线程“main”中的Exception java.lang.ArrayIndexOutOfBoundsException:3 at exercise1.main(exercise1.java:31)@PramodKarandikar
public static void main(String[] args) {
BufferedReader br = null;
try {
String sCurrentLine;
br = new BufferedReader(new FileReader("E:\\QuickStart.txt"));
int index1=0;
int index2=0;
int strlen=0;
boolean inBlock=true;
boolean inComment=true;
while ((sCurrentLine = br.readLine()) != null) {
index1=sCurrentLine.indexOf("/");
index2=sCurrentLine.indexOf("*");
char[] c=sCurrentLine.toCharArray();
for(int i=0;i<c.length;i++){
if(c[i]=='"' && c[i+1]=='/'){
inBlock=true;
}
else if(c[i]=='/' && c[i+1]=='*'){
inComment=false;
continue;
}
else if(c[i]=='*' && c[i+1]=='/'){
inComment=true;
continue;
}
else if(c[i]=='/' && c[i+1]=='/'){
inComment=false;
continue;
}
if(inBlock && inComment){
System.out.print(c[i]);
}
}
}
}
catch (IOException e) {
e.printStackTrace();
}
finally {
try {
if (br != null){
br.close();
}
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
for(int i=0;i<c.length;i++){
if(c[i]=='"' && c[i+1]=='/'){
inBlock=true;
}
for(int i=0;i<c.length-1;i++){
if(c[i]=='"' && c[i+1]=='/'){
inBlock=true;
}
int len = c.length-1;
for(int i=0;i<len;i++){
if(c[i]=='"' && c[i+1]=='/'){
inBlock=true;
}