2016-09-24 7 views
0

Я делаю метод для перевода символов в их соответствующие числа, например. a = 1, b = 2 ...Ошибки массива символов Java

Я получаю flak из IDE о моем объявлении массива словаря. Я прочитал документацию и до сих пор не знаю, как бы улучшить это.

Спасибо за все ваши ответы заранее! : D

EDIT: '' Форматирование

public static int charNumTrans(char toBeTranslated){ 
    //Variable init 
    int translated = 0; 
    char guessedVariable; 

    //Checking if between a and i 
    if(toBeTranslated == 'a' || toBeTranslated == 'b' || toBeTranslated == 'c' || toBeTranslated == 'd' || toBeTranslated == 'e' 
    || toBeTranslated == 'f' || toBeTranslated == 'g' || toBeTranslated == 'h' || toBeTranslated == 'i'){ //Checking to see which array to use 

     char[] dictionary; 
     dictionary = new char {'0','.','1','a','2','b','3','c','4','d','5','e','6','f','7','g','8','h','9','i'}; 

     //chekcing between j and s 
    }else if(toBeTranslated == 'j' ||toBeTranslated == 'k' ||toBeTranslated == 'l' ||toBeTranslated == 'm' ||toBeTranslated == 'n' || 
      toBeTranslated == 'o' ||toBeTranslated == 'p' ||toBeTranslated == 'q' ||toBeTranslated == 'r' || toBeTranslated == 's'){//Checking to see if in between 
     dictionary[10] = {'0','j','1','k','2','l','3','m','4','n','5','o','6','p','7','q','8','r','9','s'}; 
    }else{//Everything else will be in this data set. 
     char[] dictionary = {'0','t','1','u','2','v','3','w','4','x','5','y','6','z'}; 
    } 

    guessedVariable = dictionary[1]; 
    while(dictionary[guessedVariable] != toBeTranslated){ 
     guessedVariable +=2; 
     } 

    // Assigns letter minus one of array. e.g. b = dictionary[5]. This will then assign dictionary[4] to translated. 
    translated = Character.getNumericValue(dictionary[guessedVariable-1]); 
    return translated; 
} 
+0

Ваш обугленного [] словарь имеет размер блока, как он может быть доступен снаружи во время инструкции – mhasan

+0

Я начинал java ... –

ответ

0

Прежде всего, вы не инициализируя ваши массивы вне операторов if, то есть ваш код в конце не сможет вызвать массив словарей. Во-вторых, проблема с использованием массивов в вашем сценарии, когда у вас разные массивы. В-третьих, с точки зрения того, как вы инициализируете массивы, как указывали люди, вам нужно создать новый объект, который подходит для вашего набора данных, например. new char[] {...}.

Чтобы полностью решить вашу проблему, вы можете рассмотреть что-то вроде этого (я инициализируются все массивы самым простым способом можно, используя тот же метод, чтобы избежать путаницы):

public static int charNumTrans(char toBeTranslated){ 
    //Variable init 
    int translated = 0; 
    char guessedVariable; 

    //Checking if between a and i 
    if(toBeTranslated == 'a' || toBeTranslated == 'b' || toBeTranslated == 'c' || toBeTranslated == 'd' || toBeTranslated == 'e' 
|| toBeTranslated == 'f' || toBeTranslated == 'g' || toBeTranslated == 'h' || toBeTranslated == 'i'){ //Checking to see which array to use 

     char[] dictionary = {'0','.','1','a','2','b','3','c','4','d','5','e','6','f','7','g','8','h','9','i'}; 
     return findValue(dictionary); 

    //checking between j and s 
    }else if(toBeTranslated == 'j' ||toBeTranslated == 'k' ||toBeTranslated == 'l' ||toBeTranslated == 'm' ||toBeTranslated == 'n' || 
     toBeTranslated == 'o' ||toBeTranslated == 'p' ||toBeTranslated == 'q' ||toBeTranslated == 'r' || toBeTranslated == 's'){//Checking to see if in between 

     char[] dictionary = {'0','j','1','k','2','l','3','m','4','n','5','o','6','p','7','q','8','r','9','s'}; 
     return findValue(dictionary); 

    }else{//Everything else will be in this data set. 

     char[] dictionary = {'0','t','1','u','2','v','3','w','4','x','5','y','6','z'}; 
     return findValue(dictionary); 

    } 

} 

public static int findValue(char[] dictionary){ 
    guessedVariable = dictionary[1]; 
    while(dictionary[guessedVariable] != toBeTranslated){ 
     guessedVariable +=2; 
    } 

    // Assigns letter minus one of array. e.g. b = dictionary[5]. This will then assign dictionary[4] to translated. 
    translated = Character.getNumericValue(dictionary[guessedVariable-1]); 
    return translated; 
} 
0

Изменить словаре = новый символ { '0', '1', 'а', '2', 'B', '3' , 'с', '4', 'd', '5', 'е', '6', 'е', '7', 'G', '8', 'ч', '9',» я'};

в

dictionary = new char[] {'0','.','1','a','2','b','3','c','4','d','5','e','6','f','7','g','8','h','9','i'}; 
0

Для Вашего объявления массива, вам не хватает [] при присвоении значения объекта массива, который вы создаете, - так, например, изменить свои объявления на это:

char[] dictionary = new char[]{'0','t','1','u','2','v','3','w','4','x','5','y','6','z'}; 

Кроме того, если вы пытаетесь преобразовать буквы в числовые эквиваленты, могу ли я предложить вам указать char, что вы передали функцию в int, а затем вычитаете 61 из этого значения? Причина в том, что 61 соответствует положению символа «в» на таблице символов Unicode, и значительно упростило бы присваивать номер в письме, которое вы передаете в.

+0

Большое спасибо! Я предполагаю, что я программировал половину синтаксиса C++ и половину Java. –

 Смежные вопросы

  • Нет связанных вопросов^_^