它返回句子中的大写字母总数。 JAVA递归

时间:2015-12-29 09:20:52

标签: java

此代码中的错误是什么?

public static int buyuk(String a,int w,int q) {             
    for (int j = 65; j <=90 ; j++) {
       if(a.charAt(w)==j)           
           return buyuk(a,w+1,q+1);  
       else
           return buyuk(a,w+1,q); 
    }
    return q;
}

public static void main(String[] args) {
    System.out.println(buyuk("AlpERen",0,0));
}

1 个答案:

答案 0 :(得分:1)

你的代码中有一些错误。例如:for循环永远不会运行!它将始终在第一次迭代中返回!

您正在尝试检查字符是否在65到90之间(大写字母),您应该使用比较来执行此操作:

public static int buyuk(String a,int w,int q){
    if (w == a.length())               // Stop the recursion when the end of the String is reached
        return q;
    char ch = a.charAt(w);
    if (65 <= ch && ch <= 90)          // Check if the character is an uppercase letter
        return buyuk(a, w+1, q+1);
    else
        return buyuk(a, w+1, q);
}