我是来自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)
答案 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;