java - Java-ArrayOutOfBoundsException帮助我

import java.util.*;

import java.util.Arrays;

public class ScoreCalc {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        char[] alphabet = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
        int[] score = {1,3,3,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10};
        System.out.println("Enter word: ");
        String word = in.nextLine();
        int totalScore = 0;
        char[] wordArray = word.toCharArray();
        for(int i=0; i<wordArray.length; i++) {
            System.out.println(wordArray[i]);
            int index = Arrays.asList(alphabet).indexOf(wordArray[i]);
            System.out.println(index);
            totalScore = totalScore + score[index];
        }
        System.out.println(totalScore);
    }
}

这会在线程“main”中不断抛出异常java.lang.ArrayIndexOutOfBoundsException:-1

因为找不到数组字母表中的任何字符,所以有人可以帮助plz!

最佳答案

indexOf(wordArray[i])返回-1。我怀疑这是由于大写字母和/或特殊字符引起的。首先执行此操作并添加错误检查:

word.toLowerCase().toCharArray()

无论如何,我会做这样的事情,因为它更干净:
String alphabet = "abcdefghijklmnopqrstuvwxyz";

接着
int index = alphabet.indexOf(wordArray[i]);
if(index == -1) {
    // handle the special character
} else {
    totalScore += score[index];
}

https://stackoverflow.com/questions/11443800/

相关文章:

haskell - Haskell语法错误

ant - javac错误使用-source 5或更高版本来启用泛型

java - Java-无效的方法声明;方法的返回类型

objective-c - 预期标识符 '('

vb.net - Git编译错误

java - 字符串预期错误?

java - 无缘无故的错误

java - 必需的: variable Found:value Error Java Text-B

c++ - 构建游泳池类时发生编译器错误

java - 参数数组字符串Jframe