0

私の Java の割り当てでは、いくつかの異なる配列の値やインデックスを比較する必要があります。この割り当てでは、ユーザーに 5 文字 (大文字または小文字) を入力するように求め、それらを配列「lettersArray」に格納する必要があります。他にも 2 つの配列があります。すべての大文字と小文字を含む「asciiArray」と呼ばれる char 配列 (つまり 52 個のインデックス) と、英語の文字の対応する 10 進数値を含む「decimalArray」と呼ばれる int 配列 (これも 52 個のインデックス)。

次に、それらを 2 番目のメソッドに渡すことになっています。この 2 番目の方法では、ユーザーが入力した文字の 10 進値を判別する必要があります。これは私が混乱しているところです。今日、これを100回疑似コード化しましたが、どこが間違っているのかわかりません。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 を見てください。これらの記号は、'characters' 配列では考慮されていません。

    "ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz"

これはあなたが望むものです。

1 つは Az の間の文字用で、もう 1 つはその整数値用です。

ユーザーの文字入力を「int」に簡単にキャストできます。

    int val = (int) letters[i];

個別のルックアップを行う必要はありません。(ユーザー入力の文字も文字であることを確認する必要があります)。

于 2013-10-12T04:39:37.983 に答える