在尝试查看String是否以特定字符结尾时,为什么会出现不兼容的类型错误?

时间:2011-05-04 16:50:40

标签: java string char

我正在研究java的一个极小的代码,我必须创建一个程序:1)大写输入句子的第一个单词,2)大写单词“I”,3)标点句子如果没有正确的标点符号。我很容易编写代码,但它有点乱。具体来说,我想知道如何使用特殊字符作为条件。

例如,

String sentence = IO.readString(); /* IO.readstring is irrelevant here, it's just a           scanning class that reads a user input*/
int length = sentence.length();
char punctuation = sentence.charAt(length - 1);
if (punctuation != "." || punctuation != "?" || punctuation != "!")
    {
        sentence = sentence + ".";
    }

当我尝试编译它时,这给了我一个不兼容的类型错误(不兼容的类型:char和java.lang.string)

我将如何编写此条件?

4 个答案:

答案 0 :(得分:9)

使用隐含字符串的""时。 对于字符,请使用'.'(单引号)。

答案 1 :(得分:1)

对java中的字符使用单引号:

if (punctuation != '.' || punctuation != '?' || punctuation != '!')

我没有检查过你的逻辑,因为我的问题并不完全清楚。

答案 2 :(得分:0)

字面字符由单引号分隔:'x'

文字字符串由双引号分隔:"x"

字符是基元,而字符串是对象(java.lang.String类),并且您无法将基元与对象进行比较。

答案 3 :(得分:0)

检查多个字符的简写是使用String.indexOf

if (".?!".indexOf(punctuation) < 0)
    sentence += '.';