Как сопоставить Char с Int в Java - PullRequest
1 голос
/ 13 октября 2019

Я очень плохо знаком с программированием и не могу решить следующую проблему.

У меня есть список координат в типе char, который мне нужно перевести в числа (тип int). Так, например, char a должен быть int 0, char b - int 1 и т. Д. Поэтому я строю следующий код с помощью оператора switch. Я хочу вызвать его как метод, но продолжаю получать следующую ошибку: этот метод должен возвращать результат типа int. Может кто-нибудь объяснить, что я делаю не так? Я также попытался использовать return вместо int .. = 0;но это тоже не помогло.

    int x () {
        char ch = 'c';
        switch (ch)
        { 
        case 'a': 
            int a = 0;
            break; 
        case 'b': 
            int b = 1;
            break; 
        case 'c': 
            int c = 2;
            System.out.println(c); 
            break; 
        case 'd': 
            int d = 3;
            break; 
        case 'e': 
            int e = 4;
            break; 
        case 'f': 
            int f = 5;
            break; 
        case 'g': 
            int g = 6;
            break; 
        case 'h': 
            int h = 7;
            break; 
        }   
}

Ответы [ 2 ]

2 голосов
/ 13 октября 2019

Если ваши символы такие же, как вы упомянули, вы можете использовать что-то вроде этого.

static int toNumber(char chr) {
        return (chr - 97);
    }

Идея такова: символ кодируется в виде байта, который является числом. Посмотрите соответствующую таблицу ASCII , где вы можете видеть, что «a» имеет значение 97 (десятичное число), «b» имеет 98 ... Так что, если мы вычтем 97 из всех наших символов, мы сможем достичь желаемогоценности.


    char   byte(decimal)   char value -97
    a        97                  0
    b        98                  1
    ...      ...                ...
    z        122                 24

Но проблема с вашей функцией заключается в том, что оператор return отсутствует. Вы можете заставить его работать, изменив это на

int x() {
    char ch = 'c';
    int value = 0;
    switch (ch) {
        case 'a':
            value = 0;
            break;
        case 'b':
            value = 1;
            break;
        case 'c':
            value = 2;
            System.out.println(c);
            break;
        case 'd':
            value = 3;
            break;
        case 'e':
            value = 4;
            break;
        case 'f':
            value = 5;
            break;
        case 'g':
            value = 6;
            break;
        case 'h':
            value = 7;
            break;
    }
    return value;
}
0 голосов
/ 13 октября 2019

Вы можете получить его разными способами.

int x = Character.getNumericValue('a');  

или

char a = 'a';
int x = a;

или

int x = Integer.parseInt(String.valueOf('a')); 
...