0

Whenever I try to use anything higher than eq[0], I end up with an ArrayIndexOutOfBoundsException.

My code:

import java.util.Scanner;

public class Calc{
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        String[] eq=in.next().split(" ");

        double a=Double.parseDouble(eq[0]);
        double b=Double.parseDouble(eq[-1]);

        if(eq[1]=="+"){
            System.out.println(">>"+String.valueOf(a+b));
        }else if(eq[1]=="-"){
            System.out.println(">>"+String.valueOf(a-b));
        }else if(eq[1]=="/"){
            System.out.println(">>"+String.valueOf(a/b));
        }else if(eq[1]=="*"){
            System.out.println(">>"+String.valueOf(a*b));
        }
    }
}
Tunaki
  • 116,530
  • 39
  • 281
  • 370
Valkyrie
  • 801
  • 8
  • 20

2 Answers2

1

eq[-1] -1 index is problem

eq[1]=="+" // logical error use equals() method to compare String.

           Scanner in=new Scanner(System.in);
            String[] eq=in.nextLine().split(" "); // use nextLine() instead of next().
        
            double a=Double.parseDouble(eq[0]);// 1st operand
            double b=Double.parseDouble(eq[2]);// 3rd operand

            if(eq[1].equals("+")){ //operator // compare string with equals method not with (==).
                System.out.println(">>"+String.valueOf(a+b));
            }else if(eq[1].equals("-")){
                System.out.println(">>"+String.valueOf(a-b));
            }else if(eq[1].equals("/")){
                System.out.println(">>"+String.valueOf(a/b));
            }else if(eq[1].equals("*")){
                System.out.println(">>"+String.valueOf(a*b));
            }
Community
  • 1
  • 1
Rustam
  • 6,307
  • 1
  • 21
  • 25
0

Firstly, eq[-1] the index should not be valid. I think it is only valid for Python. Secondly, when you want to compare 2 strings, you should not use ==. .equals function will help.

Li Junbo
  • 1
  • 1