2014-05-08 96 views
0

我是新來的java來自c + +和C.當我通過簡單的arr = 4給出正確的輸入,但是當我通過arr [i] = 4它給出錯誤。有人能告訴我並糾正我嗎?傳遞數組時發生錯誤

code:

package GA;

import java.util.Scanner;

public class ReversedBinary { 
    public static void main(String[] args) { 
     int number = 0; 
     int i=1; 
     int[]arr = new int[]{4}; 
     // arr[i]4; 
    // number=arr[i]; 

     if (number <0) 
      System.out.println("Error: Not a positive integer"); 
     else { 

      System.out.print("Convert to binary is:"); 
      System.out.print(binaryform(arr[i])); // error occuring 
     } 
    } 

    private static Object binaryform(int arr) { 
     int remainder; 
     if (arr <=1) { 
      System.out.print(arr); 
      return null; // KICK OUT OF THE RECURSION 
     } 

     remainder= arr %2; 
     binaryform(arr >>1); 
     System.out.print(remainder); 
     return ""; 

    } 
} 

錯誤:

Convert to binary is:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1 
    at GA.ReversedBinary.main(ReversedBinary.java:18) 
+3

像C,Java數組的索引從0 =>'INT I = 0;' – assylias

+0

無關你的實際問題,但'binaryForm'沒有理由返回'Object',所以它的返回類型應該是'void',或者'String'(如果你想返回二進制而不是打印)。 – kviiri

回答

1
public class ReversedBinary { 
    public static void main(String[] args) { 
     int number = 0; 
     int i=0; // i is initialized to zero 
     int[]arr = new int[]{4}; 

     if (number <0) 
      System.out.println("Error: Not a positive integer"); 
     else { 

      System.out.print("Convert to binary is:"); 
      System.out.print(binaryform(arr[i])); // error occuring 
     } 
    } 

    private static Object binaryform(int arr) { 
     int remainder; 
     if (arr <=1) { 
      System.out.print(arr); 
      return null; // KICK OUT OF THE RECURSION 
     } 

     remainder= arr %2; 
     binaryform(arr >>1); 
     System.out.print(remainder); 
     return ""; 

    } 
} 

試試這個。

2

在Java中,數組下標從0開始:

int[] array = new int[]{4}; 
boolean valid = array[0] == 4; // Valid 
boolean invalid = array[1] == 4; // Invalid 

所以你需要做的是用值初始化我0

1

烏爾陣列ARR []只有1個元素在它

和UR value of i is 1

u are passing arr[1] to the method which doesn't exist for ur array arr. 

當U在做ARR = 4,這意味着UA重新分配4到arr [0]。

當U宣佈

int[] arr = new int[]{4}, u have pushed and fixed only 1 element in the array arr.

所以,

u cant push or assign any value to arr[1] , because it is not in array /cant be pushed in array.

嘗試改變它,

int arraysize = //some integer value 
int[] arr = new int[arraysize] 

,注意:ARRAYSIZE是一些int值是最大元素烏爾數組可以有。

或改變i的值,

int i = 0; 
+1

我正要編輯我的口譯來解釋,但是感謝nielarshi,我希望讀者能夠理解 – user3508182

+0

對你們雙方都是。這些初學者的小錯誤需要時間。和我一樣。 – user3440716

相關問題