2016-12-18 6 views
0

У меня есть этот код, где я хочу добавить значение 97 для переменной char, но вместо этого получить в соответствии с таблицей ASCII окончательное число 98 для буквы «b 'выход 205.Как добавить числовое значение для char в Java

Что не так в моем коде?

public class MyTest { 

    public static void main(String[] args) { 

     char result; 
     String input = "blablab"; 

     result = charCounter(input); 

    } 

    private static char charCounter(String input) { 

     int[] array = new int[26]; 

     for (int i = 0; i < input.length(); i++) { 
      char ch = input.charAt(i); 

      array[ch - 97]++; 

     } 

     int max = array[0]; 
     for (int i = 1; i < array.length; i++) { 

      if (array[i] > max) { 
       max = array[i]; 
       char frequent = input.charAt(i); 

       System.out.println(frequent + 97); 

      } 

     } 

     return 45; 
    } 

} 

Благодарим за помощь.

+1

В вашей второй 'for' цикла, что заставляет вас думать,' i' должен быть индекс во входной строке? Например, если я вхожу в 'f', я ввожу односимвольную строку. Но 'array' имеет длину 26 записей, и ваш цикл проходит намного дальше этой точки, поэтому' input.charAt (i) 'будет терпеть неудачу. –

+0

, потому что я получаю более частую букву 'l' –

+0

Нет, вы этого не делаете. Подумайте логику более тщательно. Возможно, даже нарисуйте массив и строку ввода на бумаге, чтобы понять, что 'i' будет делать в этом втором цикле, если входная строка является просто' f'. –

ответ

1

заменить

System.out.println(frequent + 97); 

с

System.out.println((char)(i + 97)); 

потому

char + Integer = Integer 

поэтому вы должны преобразовать его в char и ascii из соответствующего полукокса должен быть

i + 97 

, а не

frequent + 97 
+0

'Integer' =>' int' –

+0

@cainiaofei: звучит хорошо, теперь код работает правильно. Таким образом, я исправляю даже проблему с одной буквой в качестве входных данных. Спасибо –

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

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