Java 为什么这个程序会给我一个数组索引越界异常? 静态字符[]={'a','b','c','e','f',''}; 公共静态void main(字符串参数[]){ for(int i=0;i
Eclipse显示以下错误: 线程“main”java.lang.ArrayIndexOutOfBoundsException中的异常:8 在loopchecker.main(loopchecker.java:13)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
第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 + " ");
}
}