如何确定String中的某个字符是否为大写

时间:2015-12-07 00:13:28

标签: java android if-statement break continue

我检查了所有关于我的问题的所有其他stackoverflow链接,但那里的答案没有用。所以我问了一个类似的问题,希望得到一个不同的答案。 这是来自类的代码:

public String pozisyonHazirla(String param) {

        String oynananHamle = param;   

        for (int n = 0; n < oynananHamle.length(); n++) {
            if (oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {

                String donothing="";

            } else if (oynananHamle.substring(n, 1) == oynananHamle.substring(n, 1).toUpperCase()) {

             sonuc = "Figür Hamlesi Yapıldı";
                break;

            } else {

                sonuc = "Piyon hamlesi yapıldı";
            break;
            }

                         }

            return sonuc;  
        }

问题是代码的这一部分不起作用,并且在100%的情况下,迭代返回else结果,该结果是sonuc变量的赋值。

 } else if (oynananHamle.substring(n, 1) == oynananHamle.substring(n, 1).toUpperCase()) {

             sonuc = "Figür Hamlesi Yapıldı";
                break;

我没有打开另一个帖子的第二个问题是,在第一种情况下有一个部分,如果“if”语句可行,我想要什么都不做,所以我放了像“String donothing =”“;” 。反正有没有改进这段代码? 感谢您在advanace的答案和评论......

3 个答案:

答案 0 :(得分:2)

使用isUpperCase()

char c = 'A';
boolean upper = Character.isUpperCase(c); // true

关于未使用的doNothing代码块,请更改:

if (oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
    String donothing="";
} else if (oynananHamle.substring(n, 1) == oynananHamle.substring(n, 1).toUpperCase()) {
    sonuc = "Figür Hamlesi Yapıldı";
    break;
} else {
    sonuc = "Piyon hamlesi yapıldı";
    break;
}

if (oynananHamle.substring(n, 1).equals(oynananHamle.substring(n, 1).toUpperCase())) {
    sonuc = "Figür Hamlesi Yapıldı";
    break;
}

if (!(oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
    sonuc = "Piyon hamlesi yapıldı";
    break;
}

编辑:

(完整代码)

public String pozisyonHazirla(String param) {
    String oynananHamle = param;
    String sonuc = "";

    for (int n = 0; n < oynananHamle.length(); n++) {
        if (oynananHamle.substring(n, 1).equals(oynananHamle.substring(n, 1).toUpperCase())) {
            sonuc = "Figür Hamlesi Yapıldı";
            break;
        }

        if (!(oynananHamle.substring(n, 1).matches("[0-9]") || oynananHamle.substring(n, 1).matches(".")) {
            sonuc = "Piyon hamlesi yapıldı";
            break;
        }
    }

    return sonuc;
}

答案 1 :(得分:1)

问题是==没有比较字符串的内容,只是检查它是否是同一个对象引用。您需要使用.equals()来比较实际字符串。

然而,您甚至不需要这样做,因为您可以简单地测试单个字符,这比制作子字符串更有效。

for (int i = 0; i < param.length(); i++) {
    char c = param.charAt(i);
    if ((c >= '0' && c <= '9') || c == '.') {
        continue; // go to next character
    } else if (Character.isUppercase(c)) {
        return "Figür Hamlesi Yapıldı";
    } else {
        return "Piyon hamlesi yapıldı";
    }
}

答案 2 :(得分:1)

您好我感谢你们两位。答案是两种想法的混合,如下:

 for (int i = 0; i < oynananHamle.length(); i++) {
            char c = oynananHamle.charAt(i);
            //if ((c >= '0' && c <= '9') || c == '.') {
               // continue; // go to next character
             if (Character.isUpperCase(c)) {
                sonuc = "Figür Hamlesi Yapıldı :" + c + " "+i;
                 break;
            }
            if (!(c >= '0' && c <= '9' || c == '.')) {
                sonuc = "Piyon hamlesi yapıldı :" + c + " "+i;
                break;
            }
        }

当然最后会有一条回复的声明声明。再次感谢你。