java中字符的算法
我正在学习Java 我应该写一个程序,将所有大写字母转换为小写字母,并将所有小写字母转换为大写字母。书中说我只需要从大写字母中减去32,在小写字母中加上32 这是我的密码java中字符的算法,java,compiler-errors,Java,Compiler Errors,我正在学习Java 我应该写一个程序,将所有大写字母转换为小写字母,并将所有小写字母转换为大写字母。书中说我只需要从大写字母中减去32,在小写字母中加上32 这是我的密码 class Caseconv { public static void main(String args[]) throws java.io.IOException { char ch; do { ch = (char) Syst
class Caseconv {
public static void main(String args[])
throws java.io.IOException {
char ch;
do {
ch = (char) System.in.read();
if (ch >= 97 & ch <= 122) ch = ch - 32;
if (ch >= 65 & ch <= 90) ch = ch + 32;
System.out.print(ch);
} while (ch != '\n');
}
}
但是编译器不想这样做,我得到了这个错误
Caseconv.java:13: error: possible loss of precision
if (ch >= 97 & ch <= 122) ch = ch - 32;
^
required: char
found: int
Caseconv.java:14: error: possible loss of precision
if (ch >= 65 & ch <= 90) ch = ch + 32;
^
required: char
found: int
2 errors
我应该怎么做才能从字符中减去?字符和int之间的算术结果是int,如果没有显式的类型转换,就不能在字符中存储int-通过它,你告诉编译器我知道我在做什么,现在帮我做吧
因此,您需要进行类型转换:-
char ch = 'a';
if (ch >= 97 & ch <= 122) {
ch = (char)(ch - 32);
}
System.out.println(ch); // Prints `A`
一个字符和一个int之间的算术结果是一个int,如果没有显式的类型转换,你就不能在一个字符中存储一个int,通过它你告诉编译器我知道我在做什么,现在为我做吧
因此,您需要进行类型转换:-
char ch = 'a';
if (ch >= 97 & ch <= 122) {
ch = (char)(ch - 32);
}
System.out.println(ch); // Prints `A`
试一试
如果您确定ch+32不会大于一个字符所能容纳的容量。试试看
如果您确定ch+32不会大于字符的容量。需要类型转换,请尝试以下代码:
if (ch >= 97 & ch <= 122)
ch = (char) (ch - 32);
if (ch >= 65 & ch <= 90)
ch = (char) (ch + 32);
如果需要类型转换,请尝试以下代码:
if (ch >= 97 & ch <= 122)
ch = (char) (ch - 32);
if (ch >= 65 & ch <= 90)
ch = (char) (ch + 32);
您需要添加类型转换来将表达式的结果转换为char。比如说
ch = (char)(ch + 32)
注:
之所以需要这样做,是因为32是一个int文本,而char和int的加法是使用int算术执行的,并给出int结果
将int赋值给char可能会导致截断。添加类型转换有效地对编译器说:是。我知道。没关系。就这么做吧
+子表达式周围的括号是必需的,因为类型转换的优先级高于+。如果不使用它们,则类型转换没有任何区别,因为它将一个字符转换为一个字符
您需要添加类型转换来将表达式的结果转换为char。比如说
ch = (char)(ch + 32)
注:
之所以需要这样做,是因为32是一个int文本,而char和int的加法是使用int算术执行的,并给出int结果
将int赋值给char可能会导致截断。添加类型转换有效地对编译器说:是。我知道。没关系。就这么做吧
+子表达式周围的括号是必需的,因为类型转换的优先级高于+。如果不使用它们,则类型转换没有任何区别,因为它将一个字符转换为一个字符
这是因为您试图为字符分配一个int值Ascii值。但是您需要显式地将结果值int转换为char。只需将int转换为char
ch= (char) (ch+32);
ch= (char) (ch-32);
它将在没有任何异常的情况下工作。这是因为您试图为字符分配一个int值Ascii值。但是您需要显式地将结果值int转换为char。只需将int转换为char
ch= (char) (ch+32);
ch= (char) (ch-32);
它可以正常工作。请参阅下面的链接。请参阅下面的链接。