Почему я получаю сообщение о несовместимых типах при попытке увидеть, заканчивается ли строка определенным символом? - PullRequest
2 голосов
/ 04 мая 2011

Я работаю над dinky-кодом для 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 ]

9 голосов
/ 04 мая 2011

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

1 голос
/ 04 мая 2011

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

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

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

0 голосов
/ 04 мая 2011

Короткая рука для проверки нескольких символов должна использовать String.indexOf

if (".?!".indexOf(punctuation) < 0)
    sentence += '.';
0 голосов
/ 04 мая 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...