2013-10-12 64 views
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] + " "); 
      } 
     } 
    } 
} 
+0

正如未來代碼組織的註釋一樣,在代碼組之間留下空格(比如變量聲明和方法)可以幫助您查看哪個區域正在做什麼。不這樣做會讓它看起來非常混亂,在某些場合看起來有點難以閱讀。 – IHazABone

回答

3

看一看ASCII值91至96 這些符號是不是你的「角色」數組中考慮。

"ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz" 

這就是你想要的。

我不知道你爲什麼使用單獨的數組,一個用於A-Z和一個用於整數值的字符。

您可以輕鬆地將用戶的字符輸入轉換爲'int'。

int val = (int) letters[i]; 

無需做單獨的查找。 (你也應該確保用戶輸入的字符也是字母)。

+0

感謝您對我錯過的角色提示。我知道這不是最實際的方法,但是這個任務需要單獨的數組,這就是爲什麼我按照自己的方式進行操作的原因。 – Brad

+0

@Brad Ah ic,很高興我可以幫忙! :-) –