Java程序运行时错误ArrayIndexOutofBounds

时间:2015-06-22 00:26:49

标签: java

继承我的代码。我不确定什么是错的。我的项目是创建一个程序,检查一个单词是否是回文。

import java.util.Scanner;

public class PalindromeChecker {
    public static void main(String[] args) {
        // Open Scanner
        Scanner input = new Scanner(System.in);
        // Prompt User for word
        System.out.println("Enter word to check if it is a Palindrome:");
        // Scan in the word
        String word = input.nextLine();
        int a = 0; // used to extract word from array (small)
        int b = 0; // used to extract word from array (large)
        int c = 0; // used to stop when
        int d = (word.length());
        int e = d / 2;
        int f = e - 2;
        int x = word.length(); // set cap of array pulling
        char[] array = word.toCharArray(); // create array of chars
        if (array[a] == array[x] && c != f) {
            a++;
            x--;
            c++;
        } else {
            b = 1;
        }
        if (b == 1) {
            System.out.println("This word is not a Palindrome!");
        } else if (b == 0) {
            System.out.println("This word is a Palindrome!");
        }
    }
}

错误发生在

if (array[a] == array[x] && c!=f)

我不确定出了什么问题但是当你放入非回文时它会跳过。对于在这种情况下该怎么做,我很乐意提供一些建议。

1 个答案:

答案 0 :(得分:4)

因为数组是从0开始的,所以最后一个条目的索引是长度-1。

var i = 0xFF0110, // 16711952
    rgb = {
        r: (i >> 16) & 0xFF,        // or `(i & 0xFF0000) >> 16`
        g: (i >>  8) & 0xFF,        // or `(i & 0x00FF00) >>  8`
        b:  i        & 0xFF         // or ` i & 0x0000FF       `
    }; // {r: 255, g: 1, b: 16}, same as before

您还缺少一个用于检查单词中所有字符的循环。最后,你似乎有很多冗余变量。以下是修改代码的方法:

int x = word.length() - 1