Почему я получаю ошибку несовместимых типов при попытке увидеть, заканчивается ли строка определенным символом?

#java #string #char

#java #строка #символ

Вопрос:

Я работаю над сложным кодом для 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)

Как бы мне написать это условие?

Ответ №1:

Когда вы используете "" , это подразумевает строку. Для символов используйте '.' (одинарную кавычку).

Ответ №2:

Используйте одинарные кавычки для символов в java:

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

Я не проверял вашу логику, поскольку вопрос был мне не совсем понятен.

Ответ №3:

Литеральные символы заключены в одинарные кавычки: 'x' .

Строки литералов заключены в двойные кавычки: "x" .

Символы являются примитивами, в то время как строки являются объектом ( java.lang.String класса), и вы не можете сравнивать примитивы с объектами.

Ответ №4:

Короткий способ проверки нескольких символов — использовать String.indexOf

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