ошибка: неверные типы операндов для бинарного оператора '=='

Просто хотел выполнить задачу в своей книге, но я не понимаю, почему это неправильно. Следует сказать, что отрицательные числа не являются положительными, а положительные не являются отрицательными с логическим значением. Это мой код:

import javax.swing.JOptionPane;

public class Zahlentest {
    public static void main(String[] args) {

        String eingabe;
        char Zahl;
        boolean istVokal;
        eingabe = JOptionPane.showInputDialog("Geben Sie eine Zahl ein: ");
        if (Zahl == "- && Zahl") {
            istVokal = false;
        } else {
            istVokal = true;
        }
        if (istVokal == true) {
            JOptionPane.showMessageDialog(null, "Die Zahl ist nicht negativ!");
        } else {
            JOptionPane.showMessageDialog(null, "Die Zahl ist negativ!");
        }
    }
}

Я не знаю, что я делаю неправильно ... пожалуйста, помогите. Это код ошибки:

Zahlentest.java:10: error: bad operand types for binary operator '=='
            if (Zahl == "- && Zahl") {
             ^
      first type:  char
      second type: String
    1 error

person Julian Queisser    schedule 11.02.2018    source источник
comment
Обратите внимание, что Zahl должно быть в нижнем регистре, так как это переменная; и istVokal не имеет смысла, если вас беспокоит, будет ли zahl отрицательным или положительным.   -  person luk2302    schedule 11.02.2018
comment
Ну, ошибка довольно ясно говорит вам, что char == String недействительна, хотя не совсем понятно, что вы хотите, чтобы эта строка делала. Вы также не присвоили эту переменную чему-либо.   -  person Bernhard Barker    schedule 11.02.2018


Ответы (3)


Zahl — это символ, который вы пытаетесь сравнить со строкой. В java это запрещено, хотя есть и другие языки, где это действительно разрешено.

if(Zahl == '-') 

Может быть, то, что вы ищете, но я все еще сомневаюсь в этом, потому что Zahl не инициализирован на этом этапе. Я думаю, что вы действительно ищете

if (eingabe.equals("- && Zahl"))

В качестве примечания позвольте мне отметить, что мы не начинаем имена полей или имена переменных с символов верхнего регистра. Обычно для этого мы используем camelCase.

person e4c5    schedule 11.02.2018
comment
спасибо за ответ, это было правильно ... я приму ваш ответ через 6 минут, потому что сейчас не могу :) - person Julian Queisser; 11.02.2018

Вы сравниваете char со String, поэтому ошибка. Операнды бинарного оператора '==' должны быть одного типа.

person Community    schedule 11.02.2018

Вы не можете сравнить строку - && Zahl с символом в переменной Zahl с оператором ==, потому что в java char является примитивным типом, а String является объектом.

Кстати: вы не присвоили значение Zahl, я не понимаю, каково ваше намерение, сравнивая его со строкой.

person sn42    schedule 11.02.2018