【问题标题】:How to find out if a certain character in a String is Uppercase如何找出字符串中的某个字符是否为大写
【发布时间】:2015-12-07 00:13:27
【问题描述】:

我检查了有关我的问题的所有其他 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 =”;” .有没有办法改进这段代码? 提前感谢您的回答和cmets...

【问题讨论】:

    标签: java android if-statement break continue


    【解决方案1】:

    使用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;
    }
    

    【讨论】:

    • 这甚至无法编译。
    • @EJP 你是对的,String 声明丢失,修复它。
    • 这还不是全部。看看你的前两行。
    • 谢谢。它现在可以工作了,请参阅我对 Karakuri 的说明...问候
    【解决方案2】:

    问题是==不比较字符串的内容,它只是检查它是否是同一个对象引用。您需要使用.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ı";
        }
    }
    

    【讨论】:

    • 谢谢。它就像上面一样工作。最好的问候
    【解决方案3】:

    你好,谢谢你们俩。答案是两种想法的混合,如下:

     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;
                }
            }
    

    当然最后还有return souc语句。再次感谢您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-24
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      相关资源
      最近更新 更多