Java 为什么这个程序会给我一个数组索引越界异常? 静态字符[]={'a','b','c','e','f',''}; 公共静态void main(字符串参数[]){ for(int i=0;i

Java 为什么这个程序会给我一个数组索引越界异常? 静态字符[]={'a','b','c','e','f',''}; 公共静态void main(字符串参数[]){ for(int i=0;i,java,while-loop,indexoutofboundsexception,Java,While Loop,Indexoutofboundsexception,Eclipse显示以下错误: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:8 在loopchecker.main(loopchecker.java:13) 第13行是while循环。但是我已经在检查j的值是否小于长度。您需要在语句中添加一些括号,而语句: static char characters[] = { 'a', 'b', ' ', 'c', ' ', 'e', 'f', ' ' }; public static void

Eclipse显示以下错误: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:8 在loopchecker.main(loopchecker.java:13)


第13行是while循环。但是我已经在检查
j的
值是否小于长度。

您需要在
语句中添加一些括号,而
语句:

static char characters[] = { 'a', 'b', ' ', 'c', ' ', 'e', 'f', ' ' };

public static void main(String args[]) {

    for (int i = 0; i < characters.length; i++) {
        int j = i + 1;

        if (characters[i] == ' ') {
            while (j < characters.length && characters[j] == ' ' || characters[j] == '\u0000') {
                j++;  // increment j till a non-space char is found
            }
        }
    }

    for (char character : characters) {
        System.out.print(character + " ");
    }
}

while(j这是因为
运算符

下面的条件是这样的

while ((j<characters.length && characters[j] == ' ') || characters[j] == '\u0000')

characters[j]='\u0000'
部分没有检查以确保j小于长度。将类似
j

的内容放在注释中,您想说
//在找到非空格字符之前增加j
,我想说您应该去掉:

while (j < characters.length && (characters[j] == ' ' || characters[j] == '\u0000'))

这在更方便地处理空白问题的同时解决了您的问题。

这是因为OR运算符。 下面是完整的解决方案

while (j<characters.length && Character.isWhitespace(characters[j]))
package com.java;
公共类数组示例
{
静态字符[]={a'、'b'、''、'c'、''、'e'、'f'、''};
公共静态void main(字符串参数[])
{
for(int i=0;i
静态字符[]={'a','b','c','e','f','s'};
公共静态void main(字符串参数[]){
for(int i=0;i
在java questionsOh中应该是操作员优先级的dup!明白了。非常感谢!
while (j < characters.length && (characters[j] == ' ' || characters[j] == '\u0000'))
while (j<characters.length && characters[j] == ' ' || characters[j] == '\u0000')
while (j<characters.length && Character.isWhitespace(characters[j]))
package com.java;

public class ArraySample 
{
    static char characters[]={'a','b',' ','c',' ','e','f',' '};
    public static void main (String args[])
    {
        for (int i = 0; i < characters.length; i++) {
            int j = i + 1;
            if (characters[i] == ' ') {
                while (j < characters.length && (characters[j] == ' ' || characters[j] == '\u0000')) {

                    j++;  //increment j till a non-space char is found

                }

            }
        }
        for(int i = 0; i< characters.length; i++)
        {
            System.out.print(characters[i]+" ");
        }
        }

}
static char characters[] = { 'a', 'b', ' ', 'c', ' ', 'e', 'f', 's' };

public static void main(String args[]) {

    for (int i = 0; i < characters.length; i++) {
        int j = i - 1 ; // The problem was here J was surpassing the characters length

        if (characters[i] == ' ') {
            while (j < characters.length && characters[j] == ' ' || characters[j] == '\u0000') {
                j++;  // increment j till a non-space char is found
            }
        }
    }

    for (char character : characters) {
        System.out.print(character + " ");
    }
}