Member 13807118 Ответов: 3

Почему я получаю "незаконное начало выражения" в java?


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




/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package calculators;

import java.util.Scanner;

/**
 *
 * @author barnia data entry
 */
public class Calculators {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("enter 1st number");
        int a = scanner1.nextInt();
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("enter 2nd number");
        int b = scanner2.nextInt();
        Scanner operation = new Scanner(System.in);
        System.out.println("enter operation sign");
        String op = operation.next();
        if (op == -){
            System.out.println(a-b);
        }
        else if (op = +){
        
        System.out.println(a+b);
        }
        else if (op == *){
            System.out.println(a*b);
        }
        else if (op == /){
            System.out.println(a/b);
        }
        else {
            System.out.println(" error in operation");
        }
        
            
        
    }
    
}


Что я уже пробовал:

Я пытаюсь построить простой калькулятор.

3 Ответов

Рейтинг:
2

raddevus

Вам нужно обернуть каждое из значений, с которыми вы сравниваете op, в двойные кавычки:

Например:

if (op == -)

подлежащий:
if (op == "-")


Это говорит компилятору, что вы сравниваете строковую переменную op со Строковой константой в двойных кавычках.

В вашем коде компилятор думает, что вы пытаетесь вычесть что-то из чего-то другого-таким образом, "незаконное начало выражения", как в выражении вычитания.

Вам нужно будет исправить все эти операторы сравнения.

И для сравнения строк вы не должны использовать == в Java.
Вместо этого вы должны использовать метод equals объекта string.

Каждое из ваших утверждений должно выглядеть следующим образом (очевидно, заменяя символ, который вы пытаетесь проверить):

if (op.equals("-"))


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

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

C:\dev\tools\JavaProjects>..\JavaJDK17\bin\javac first.java
first.java:4: error: illegal start of expression
        if (op == -){
                   ^
1 error


первая строка-это то, где я запустил javac (компилятор java).
Вторая строка дает вам точную строку, где произошла ошибка в исходном файле (first.java) строка 4 - смотрите :4? Вот что это значит.
Также обратите внимание, что есть каретка^, указывающая вверх на то место, где компилятор считает, что возникла проблема. Мы знаем, что он находится рядом, так что это действительно начинает помогать вам догадываться.

Включение такого рода информации об ошибках значительно облегчает для кого-то другого помощь в поиске проблемы.


Рейтинг:
1

Bryian Tan

Основываясь на том, что опубликовано здесь, вам нужно обновить код для использования тестов .equals() для равенства значений и символа (-+*/) строкового типа, вам нужно обновить код, чтобы обернуть его двойной кавычкой. Смотреть ниже.

Как сравнить строки в Java? - переполнение стека[^]

public static void main(String args[]) {
        Scanner scanner1 = new Scanner(System.in);
        System.out.println("enter 1st number");
        int a = scanner1.nextInt();
        Scanner scanner2 = new Scanner(System.in);
        System.out.println("enter 2nd number");
        int b = scanner2.nextInt();
        Scanner operation = new Scanner(System.in);
        System.out.println("enter operation sign");
        String op = operation.next();
        if (op.equals("-") ){
            System.out.println(a-b);
        }
        else if (op.equals("+")){
        
        System.out.println(a+b);
        }
        else if (op.equals("*")){
            System.out.println(a*b);
        }
        else if (op.equals("/")){
            System.out.println(a/b);
        }
        else {
            System.out.println(" error in operation");
        }
    }


Рейтинг:
1

Gustavo Ramirez

Hello!!
you get that error because the validations of the operations are wrong:
  if (op == -) {
             System.out.println (a-b);
         }
         else if (op = +) {
        
         System.out.println (a + b);
         }
         else if (op == *) {
             System.out.println (a * b);
         }
         else if (op == /) {
             System.out.println (a / b);
         }

The correct form should be:
  if (op == "-") {
             System.out.println (a-b);
         }
         else if (op = "+") {
        
         System.out.println (a + b);
         }
         else if (op == "*") {
             System.out.println (a * b);
         }
         else if (op == /) {
             System.out.println (a / b);
         }

Also, I suggest that instead of using if, you use a switch to avoid the accumulation of nested ifs and else ifs.

regards