我必须编写一个程序来输入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;
我该如何解决这个问题?
答案 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
。在这里,您可以使用int
或let-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){
}