带循环的字符串/字符大写/小写转换出错

时间:2014-10-23 11:02:29

标签: java loops

我一直在做任务,而且我被困住了。如果我输入字母:ahb,它只打印最后一个字母b而不是整个字母:

public void run() 
{
    String value;
    while (true) {
        try {
            value = (String) conB.remove();
            if(value != null) { {
                for(int i=0; i < value.length(); i++) {
                    if(Character.isDigit(value.charAt(i))) {
                        int x = Integer.parseInt(value);
                        bConWin.setData(" "+(x*2));
                    }
                    if(Character.isLowerCase(value.charAt(i))) {
                        char x = value.toUpperCase().charAt(i);
                        //changed.append(Character.toUpperCase(x));
                        bConWin.setData(" " +x);
                    }
                    if(Character.isUpperCase(value.charAt(i))) {
                        char x = value.toLowerCase().charAt(i);
                        bConWin.setData(" "+x);
                    }
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

您只需将一个字符指定为bConWin的数据。这是一个修复以及一些整理:

public static void main(String args[]) {
    String value = "HaaaOppSaN";
    if(value != null) {
        StringBuilder newValue = new StringBuilder();

        for(int i = 0; i < value.length(); i++) {
            char x = value.charAt(i);

            if(Character.isLowerCase(x)) {
                x = Character.toUpperCase(x);
            } else {
                x = Character.toLowerCase(x);
            }

            newValue.append("" + x);
        }

        bConWin.setData(newValue.toString());
    }
}

答案 1 :(得分:0)

不需要外部无限循环。尝试没有catch块。

看看这个:

public static void main(String[] args) {
    String switched = switchCharacterCase("Hello World!");

    bConWin.setData(switched);

    System.out.println(switched);
}  

public static String switchCharacterCase(final String input) {
    StringBuilder switched = new StringBuilder();

    if(input != null) { // nothing to do here, return switched

        for(int i = 0; i < input.length(); i++) {

            Character c = input.charAt(i);

            if(Character.isLowerCase(c)) {
                c = Character.toUpperCase(c);
            } else {
                c = Character.toLowerCase(c);
            }

            switched.append(c);
        }
    }

    return switched.toString();
}