大写和小写转换时出错

时间:2018-06-29 10:03:42

标签: java if-statement

下面的代码是将大写转换为小写,反之亦然?

  if(s1.charAt(i)>=97 && s1.charAt(i)<=122){
     s1.charAt(i)=s1.charAt(i)-32;
  }
  else if(s1.charAt(i)>=65 && s1.charAt(i)<=90){
      s1.charAt(i)=s1.charAt(i)+32;
  }

请参考上面的内容,以帮助解决该程序的问题?

2 个答案:

答案 0 :(得分:2)

您在这里遇到问题:

 s1.charAt(i) = s1.charAt(i) - 32;
 ------------   -----------------
      1                2

这里有两个问题:

  • 第一件事,第二部分返回一个int,然后尝试将其分配给char
  • 第二,你不能这样分配

相反,我会使用:

String s1 = "AbCd";
//create a char array
char[] array = s1.toCharArray();
//loop over this array, and work just with it
for (int i = 0; i < array.length; i++) {
    if (array[i] >= 'a' && array[i] <= 'z') {
        array[i] = (char) (s1.charAt(i) - 32);//<--------------------------note this
    } else if (s1.charAt(i) >= 'A' && s1.charAt(i) <= 'Z') {
        array[i] = (char) (s1.charAt(i) + 32);
    }
}

//when you end, convert that array to the String
s1 = String.valueOf(array);//output of AbCd is aBcD

除了我想使用:

String result = "";
for (int i = 0; i < array.length; i++) {
    if (Character.isLowerCase(array[i])) {
        result += Character.toUpperCase(s1.charAt(i));
    } else {
        result += Character.toLowerCase(s1.charAt(i));
    }
}

答案 1 :(得分:0)

您的代码甚至无法编译,您无法执行s1.charAt(i) = 'x',因为s1.charAt不是变量,您不能只为其分配任何内容。

要通过字符串中的索引替换字符,请执行以下操作:

new StringBuilder(yourString).setCharAt(characterIndex, 'x')

我建议使用诸如Intellij或Eclipse之类的IDE,它将告诉您诸如此类的编译错误。