Java程序反转大写和小写

时间:2013-05-22 11:04:44

标签: java

我必须编写一个程序来输入String str并将大写更改为小写,反之亦然。例如:

输入 “ABCD”

输出: “ABCD”

这就是我所拥有的:

l - 是字符串的长度

for(int b=0;b < l;b++)

             {

               char let=str.charAt(b);

               if(let>97 && let<122)

               {char nlet=let-32;

               System.out.print(nlet);

            }
            else if(let>65 && let<90)
             { char t=let+32;
              System.out.print(t);
            }
           }
           break; 
        }

此行的错误:“char nlet=let-32;”是: 需要:炭;实测值:INT;

我该如何解决这个问题?

4 个答案:

答案 0 :(得分:5)

问题是32是一个整数,let是一个字符。 Java会在遇到let时将let-32值转换为int,结果是int值(对于'a')96或其他任何内容。

您需要将结果转换回char:

(char)(let+32)

答案 1 :(得分:3)

尝试使用以下更新的for循环:

 for(int b=0;b < l;b++)

             {

               char let=str.charAt(b);

               if (Character.isLowerCase(let))
               {
                   char nlet=Character.toUpperCase(let);

               System.out.print(nlet);

              } else if(Character.isUpperCase(let))
             { char t=Character.toLowerCase(let);
              System.out.print(t);
            }
           }
           break; 
        }

答案 2 :(得分:1)

没有任何其他类(如显然你不能使用它的角色),你需要转换为char:

for(int b=0;b < l;b++)
{
    char let=str.charAt(b);

    if(let>97 && let<122)
    {
        char nlet=(char) let-32;
        System.out.print(nlet);
    }
    else if(let>65 && let<90)
    {
        char t=(char)let+32;
        System.out.print(t);
    }
}

你的编译器在这里告诉你答案:

required:char;found:int

这意味着你的操作,这里它是变量赋值有一个错误的参数。 当你有

 char nlet = xxx

编译器希望xxx可以转换为char。在这里,您可以使用intlet-32为其提供let+32值。 因此,您需要转换为char或使用从char输出int的函数;那就是你看到这里的所有人告诉你使用Character类给你所有辅助功能来完成你的功课(这也比手动添加/ sub 32更好)

小心,有时你可以看到String str = "A string from int: " + 2000之类的东西 这意味着您的编译器会自动将2000强制转换为"2000",因为+的{​​{1}}操作需要2个字符串参数。

答案 3 :(得分:0)

问题在于你的let-32;它将返回一个整数,因此你需要隐式地将它强制转换为char变量。

将您的代码更改为char nlet=(char) (let-32);

另外还有一个问题是你的if条件你编程不会给出正确的输出,因为你没有检查字母'a'和'z'。更改你的if -else来检查边界条件。< / p>

if(let>=97 && let<=122)
{
}else (let>=65 && let<=90){ 
}