我正在尝试递归地将给定字符串中的每个字母大写。我试过这个代码:
public static String recs(String s){
return Character.toString(Character.toUpperCase(s.charAt(0)))+recs(s.substring(1));
}
但这段代码显示java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0异常。
当字符串为空时,您需要添加一个基本情况:
public static void main(String[] args) {
System.out.println(recs("hello world"));
}
public static String recs(String s){
if(s.length() == 0) { return s; }
return Character.toUpperCase(s.charAt(0)) + recs(s.substring(1));
}
输出:
HELLO WORLD
您需要一个空字符串的退出条件,返回";,因为否则它会尝试获取空数组的第一个索引,这会导致错误。
代码:
if(s.isEmpty()) {
return s;
}
return Character.toString(Character.toUpperCase(s.charAt(0)))+recs(s.substring(1));
当String
为空或所有字符都已大写时,您不会处理基本情况。
public static String recs(String s){
return s.isEmpty() ? s : Character.toUpperCase(s.charAt(0)) + recs(s.substring(1));
}
演示