带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))代码>谢谢!这回答了我的问题:)谢谢!这就回答了我的问题:)