Ошибка [ expression illegal ]

37
0
Пытаюсь написать простецкий калькулятор через [ if ]. Intellij IDEA ругается на [ if ], но в чём проблема не говорит.
1515257140576.png
Подскажите что не так?
 
Решение
Java:
public static void main(String[] args) {
        double a, b, result = 0;
        String oper;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter first number:");
        a = scanner.nextDouble();
        System.out.println("Enter operator:");
        oper = scanner.next();
        System.out.println("Enter second number:");
        b = scanner.nextDouble();
        switch (oper){
            case "+":
                result = a + b;
                break;
            case "-":
                result = a - b;
                break;
            case "*":
                result = a * b;
                break;
            case "/":
                result = a / b;
                break...
37
0
oper у тебя имеет тип Scanner. Ты пытаешься сравнить Scanner с оператором. Это ж гениально!
Мне показалось, что я могу так ввести знак операции в систему, подобно числу. А как нужно?
 
5,018
47
783
37
0
Как по мне так лучше с нуля книгу почитать, а не отдельным статьями
Ну всё, я понял, что к операторам приравнивать нельзя. А как мне тогда распознавать операторы вводимые юзером?
 
5,018
47
783
мдэ) Почему ты не хочешь слушать добрых советов?
Sсanner в данном случае, класс, с помощью которого ты будешь ВВОДИТЬ данные в консоль. Цифры и операторы. Вообще все, что ты собираешься вводить, будет вводится через сканнер(в данном случае)
 
37
0
мдэ) Почему ты не хочешь слушать добрых советов?
Sсanner в данном случае, класс, с помощью которого ты будешь ВВОДИТЬ данные в консоль. Цифры и операторы. Вообще все, что ты собираешься вводить, будет вводится через сканнер(в данном случае)
Я так же рассуждаю. Поэтому я и написал такой код. Но всё же я не понимаю в чём моя ошибка...
 
7,099
324
1,509
Оператор == сравнивает два значения.
Операторы не являются значениями, значит, их нельзя сравнивать
 
  • Like
Реакции: u241
37
0
Оператор == сравнивает два значения.
Операторы не являются значениями, значит, их нельзя сравнивать
Не подскажешь как можно в таком случае определить математический оператор?
 

Eifel

Модератор
1,623
78
608
Java:
public static void main(String[] args) {
        double a, b, result = 0;
        String oper;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter first number:");
        a = scanner.nextDouble();
        System.out.println("Enter operator:");
        oper = scanner.next();
        System.out.println("Enter second number:");
        b = scanner.nextDouble();
        switch (oper){
            case "+":
                result = a + b;
                break;
            case "-":
                result = a - b;
                break;
            case "*":
                result = a * b;
                break;
            case "/":
                result = a / b;
                break;
            default:
                System.out.println("Unknown operator");
                break;
        }
        System.out.println("Result: " + result);
    }

К примеру. Можно сделать лучше, но это задание уже для тебя)
 
  • Like
Реакции: u241
37
0
Java:
public static void main(String[] args) {
        double a, b, result = 0;
        String oper;
        Scanner scanner = new Scanner(System.in);
        System.out.println("Enter first number:");
        a = scanner.nextDouble();
        System.out.println("Enter operator:");
        oper = scanner.next();
        System.out.println("Enter second number:");
        b = scanner.nextDouble();
        switch (oper){
            case "+":
                result = a + b;
                break;
            case "-":
                result = a - b;
                break;
            case "*":
                result = a * b;
                break;
            case "/":
                result = a / b;
                break;
            default:
                System.out.println("Unknown operator");
                break;
        }
        System.out.println("Result: " + result);
    }

К примеру. Можно сделать лучше, но это задание уже для тебя)
Надеюсь сегодня ночью разберу. Спасибо!
 

CMTV

Основатель
Администратор
1,304
4
601
Проблема в твоем коде в том, что ты пытаешься сравнить (==) символ оператора, введенный с клавиатуры (oper) с самим оператором (+...), а такого делать нельзя. Если ввел символ, то и сравнивай с символом оператора, как в примере от @Thunder.

Например, так:
Java:
if(oper == "+") {
    // Делаем сложение
}
 
Последнее редактирование:
  • Like
Реакции: u241

CMTV

Основатель
Администратор
1,304
4
601
Ну да... Как по мне Python нагляднее и удобнее.
Python:
def player_wins(self, char):
    for a,b,c in [
        (0,1,2), (3,4,5), (6,7,8), # Победы по горизонтали
        (0,3,6), (1,4,7), (2,5,8), # Победы по вертикали
        (0,4,8), (2,4,6)           # Победы по диагонали
    ]:
        if char == self.board[a] == self.board[b] == self.board[c]:
            return True

Хотя у каждого языка свои задачи.
 

CumingSoon

Местный стендапер
1,634
12
269
Ну да... Как по мне Python нагляднее и удобнее.
Python:
def player_wins(self, char):
    for a,b,c in [
        (0,1,2), (3,4,5), (6,7,8), # Победы по горизонтали
        (0,3,6), (1,4,7), (2,5,8), # Победы по вертикали
        (0,4,8), (2,4,6)           # Победы по диагонали
    ]:
        if char == self.board[a] == self.board[b] == self.board[c]:
            return True

Хотя у каждого языка свои задачи.
А так по мне, Хаскелл самый красочный. Вдобавок, его можно легко распараллелить
 
Сверху