2015-10-17 3 views
0

Я хочу напечатать все буквы между двумя буквами, используя рекурсию и это, как я сделал это:Java Рекурсия с полукокса

import java.util.*; 

public class q24 { 

    public static void between(char a, char b) { 
    if (a==b) { 
     System.out.println(b); 
    } 
    else { 
     System.out.println(a+1); 
     between((char)(a+1), b); 
    } 
    } 


    public static void main(String[] args) { 
    between('e','l'); 
    } 
} 

но это печать:

102 
103 
104 
105 
106 
107 
108 
l 

как я могу сделать он печатает письма?

ответ

4

При выполнении арифметических операций на char (например, a + 1) значение результата автоматически преобразуется в int.

Для того, чтобы иметь результат арифметической операции напечатанной в char, вам придется делать явное приведение:

System.out.println((char) (a+1)); 

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

public static void between(char a, char b) { 
    System.out.println(a); 
    if (a < b){ 
     between((char) (a+1), b); 
    } 
} 
+0

Спасибо! Это ответ на мой вопрос :) – eitanmayer

0

Когда вы делаете a+1 в System.out.println(a+1); это эффективно преобразовывать символ в целое, и поэтому он печатает Интс.

Изменить его следующим образом: - System.out.println((char)(a+1));

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