带char的Java递归

带char的Java递归,java,recursion,char,Java,Recursion,Char,我想使用递归打印两个字母之间的所有字母,我就是这样做的: 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); } }

我想使用递归打印两个字母之间的所有字母,我就是这样做的:

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

如何使其打印字母?

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);
    }
}
public static void介于(字符a、字符b)之间{
系统输出打印项次(a);
if(a
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);
    }
}
public static void介于(字符a、字符b)之间{
系统输出打印项次(a);
if(a
当您在
系统输出打印LN(a+1)中执行
a+1
它有效地将字符转换为int,因此正在打印int


将其更改为:-
System.out.println((char)(a+1))

当您在
系统输出打印LN(a+1)中执行
a+1
它有效地将字符转换为int,因此正在打印int


将其更改为:-
System.out.println((char)(a+1))

谢谢!这回答了我的问题:)谢谢!这就回答了我的问题:)