2015-09-29 26 views
0

每當我嘗試使用高於eq[0]的任何東西時,我最終會得到一個ArrayIndexOutOfBoundsException閱讀用戶輸入時發生Java ArrayIndexOutOfBoundsException

我的代碼:

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)); 
     } 
    } 
} 
+1

'eq [-1]'?這是一個錯字嗎? – Tunaki

+0

@Tunaki @sᴜʀᴇsʜᴀᴛᴛᴀ我試過'eq [2]'並得到相同的錯誤 – Valkyrie

+0

您的輸入是什麼? – Tunaki

回答

1

當量[-1] -1指數是問題

當量[1] == 「+」 //邏輯錯誤使用的equals()方法來比較串。

  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)); 
      } 
+0

作品。謝謝。 – Valkyrie

0

首先,當量[-1]的索引應該是無效的。我認爲它只對Python有效。 其次,當你想比較2個字符串時,你不應該使用==。 .equals函數將有所幫助。