0

对于我的 Java 作业,我必须比较几个不同数组中的值和/或索引。该任务要求提示用户输入五个字母(大写或小写),并将它们存储在数组“lettersArray”中。我还有另外两个数组;一个名为“asciiArray”的char数组,包含所有大写和小写字符(因此有52个索引)和一个名为“decimalArray”的int数组,其中包含英文字符的相应十进制值(也有52个索引)。

然后我应该将它们传递给第二种方法。第二种方法需要确定用户输入的字母的十进制值。这就是我感到困惑的地方。我今天已经伪编码了一百次,只是看不出我哪里出错了。我需要将 lettersArray 中的每个值与 asciiArray 中的所有值进行比较以找到匹配项,然后从对应的 decimalArray 索引中获取值。当我打印 decimalArray 以检查值时,它们到处都是。

例如,当我输入字符 a、s、d、f 和 g 时,我得到 91、109、94、96 和 97。这些值对我来说似乎完全随机,我无法弄清楚在哪里我的程序搞砸了。如果你能帮忙的话,我会把所有的啤酒都给你买!

public class AverageLetter {
public static void main(String [] args) {
    Scanner read = new Scanner(System.in);
    char letterArray[] = new char[5];
    System.out.println("Enter 5 English letters (a-z or A-Z): ");

    for(int i = 0; i < 5; i++) {
        System.out.print("Letter " + (i+1) + ": ");
        letterArray[i] = read.next().charAt(0);
    }

    String characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
    char[] asciiArray = characters.toCharArray();
    int[] decimalArray = new int[52];

    for (int i=0; i<decimalArray.length; i++ ) {
        decimalArray[i] = 65+i;
    }

    getAverage(letterArray, asciiArray, decimalArray);
}

public static void getAverage(char[] letter, char[] ascii, int[] decimal) {
    for(int i = 0; i < letter.length; i++) {
        for(int j = 0; j < ascii.length; j++) {
            if(letter[i] == ascii[j]) {
                     System.out.print(decimal[j] + " ");
            }
        }
    }
}
4

1 回答 1

3

看一下 ASCII 值 91 到 96。这些符号未在您的“字符”数组中考虑。

    "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz"

这就是你想要的。

我不确定您为什么要使用单独的数组,一个用于 Az 之间的字符,一个用于整数值。

您可以轻松地将用户的字符输入转换为“int”。

    int val = (int) letters[i];

无需单独查找。(您还应该确保用户输入的字符也是字母)。

于 2013-10-12T04:39:37.983 回答