传递数组时发生错误

时间:2014-05-08 19:42:51

标签: java

我是来自c ++和C的java的新手。当我通过简单的arr = 4给出正确的输出但是当我通过arr [i] = 4时它给出了错误。有人能告诉我并纠正我吗?

代码:

包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 个答案:

答案 0 :(得分:2)

在Java中,数组索引从0开始:

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

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

答案 1 :(得分: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 :(得分:1)

你的数组arr []中只有一个元素

和你value of i is 1

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

当你做arr = 4时,这意味着你正在为arr [0]分配4。

当你宣布

  

int [] arr = new int [] {4},你已经推送并修复了1个元素   数组arr。

所以,

  

你不能将任何值推送或分配给arr [1],因为它不在数组中   /不能被推入阵列。

尝试将其更改为,

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

,注意:arraysize是一个int值,它是数组可以拥有的最大元素。

或更改i的值,

int i = 0;