Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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