【问题标题】:Exception while running condition?运行时异常?
【发布时间】:2013-12-06 09:25:10
【问题描述】:

它给出的答案没有问题,但有一个例外。
有人可以帮我理解为什么吗?

public static void main(String[] args) {
    int a = 0,k=0;
    Scanner obj = new Scanner(System.in);
    System.out.println("enter string");
    String s= obj.nextLine();
    int b[]={0};
    b= new int[10];
    char c[]= s.toCharArray();

    for(int i =0; i<s.length();i++){     
        if(c[i]=='a'|| c[i]=='i'|| c[i]=='o'||c[i]=='u'||c[i]=='e'){
            b[k]=i;
            k=k+1;
        }                       
    }
    for(int j=0;j<15;j++){
        if(b[j]!=0) {
            System.out.println("\n"+b[j]);       
        }
    }
}

我收到的异常是ArrayOutofbound exception at" if(b[j]!=0)"

【问题讨论】:

  • 什么异常,在哪里?请更具体。
  • 请格式化您的代码并告诉我们哪个异常发生在哪里,包括堆栈跟踪。
  • 另外,代码无法编译。 c 变量未在任何地方声明。
  • ArrayOutofbound 异常在“if(b[j]!=0)”
  • 为什么要以这种方式初始化数组 int b[]={0}; b= 新的 int[10];

标签: java arrays exception


【解决方案1】:

b= 新的 int[10]; b 数组大小被声明为 10,但您正在循环 15 个元素(在下面的代码中使用 j 变量)。

for(int j=0;j<15;j++){
if(b[j]!=0)
System.out.println("\n"+b[j]); 
}

将 for 循环更改为 10 会解决您的问题。

for(int j=0;j<10;j++){

}

有很多错误,例如未定义c变量。

【讨论】:

    【解决方案2】:

    这是正确的代码:...谢谢大家..

    public static void main(String[] args) {
    int a = 0,k=0;
    Scanner obj = new Scanner(System.in);
    System.out.println("enter string");
    String s= obj.nextLine();
    int b[]={0};
    b= new int[10];
    char c[]= s.toCharArray();
    
    for(int i =0; i<s.length();i++){     
        if(c[i]=='a'|| c[i]=='i'|| c[i]=='o'||c[i]=='u'||c[i]=='e'){
            b[k]=i;
            k=k+1;
        }                       
    }
    for(int j=0;j<10;j++){
        if(b[j]!=0) {
            System.out.println("\n"+b[j]);       
        }
    }
    }
    

    【讨论】:

      【解决方案3】:

      这里的c[] 数组是什么?如果您的代码就是这样,这将导致编译错误。如果还好。 你会在这里得到ArrayIndexOutOfBound 异常

         for (int i = 0; i < s.length(); i++) {
          if (c[i] == 'a' || c[i] == 'i' || c[i] == 'o' || c[i] == 'u' || c[i] == 'e'){
                  b[k] = i; // b[] size 10
                  k = k + 1; // k can have value >9 
              }
          }
      

      如果没有发生以下情况,则必须给出异常。

           for (int j = 0; j < 15; j++) {
              if (b[j] != 0)
                  System.out.println("\n" + b[j]); // b[] is size 10 
      
          }
      

      【讨论】:

        猜你喜欢
        • 2017-08-03
        • 2014-02-26
        • 2013-04-06
        • 2014-01-14
        • 2017-02-04
        • 2012-03-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多