类中的基本数组方法 - JAVA

时间:2016-01-19 22:56:26

标签: java arrays

好的,所以我创建了一个类型为int的数组,大小为10。

我已将其初始化为1-100之间的随机值。

现在我的任务是编写一个名为output的方法,它将int数组作为参数,并在列中显示数组的所有元素,如下所示:

输出

arr[0] : 17

arr[1] : 42
等等,但是当我在eclipse中这样做时,它说

i cannot be resolved to a variable, 

所以我想在我的方法中重新初始化它,但不会给我一整套不同的数字吗?

private int [] nums;

public UsingArrays(){
    nums  = new int [10];
    for (int i = 0; i <nums.length; i++){
        nums[i] = (int)(Math.random()*100)+1;
    }
}

public String Output(){
    String string;
    string = "Arr[" + i + "]:" + nums[i];
    return string;

}




}

3 个答案:

答案 0 :(得分:1)

  

我无法解析为变量

你忘了用for循环围绕整个事物,这个循环将声明&amp; 使用 i变量:

public void Output(int[] array){
    String string = "";

    for(int i = 0; i < array.length; i++) {
        string += "Arr[" + i + "]:" + array[i] + "\n"; // not recommended
    }

    System.out.println(string);
}

在这种情况下,如果使用StringBuilder会更好,以避免在每次迭代时创建新的String实例:

public void Output(int[] array){
    StringBuilder sb = new StringBuilder();

    for(int i = 0; i < array.length; i++) {
        sb.append("Arr[" + i + "]:" + array[i] + "\n"); // Accumulate results
    }

    System.out.println(sb.toString()); // print final result
}

答案 1 :(得分:0)

我不知道你为什么要在构造函数中初始化int []并将这个数组作为全局变量保留,当你说这个名为output的方法将把int数组作为一个参数&#39; 。 根据您的要求,这是一个合适的解决方案:

public static void main(String[] args) {
    final int sizeOfArray = 10;
    final int[] nums = new int[sizeOfArray];
    //JAVA 7
    for(int i = 0; i < sizeOfArray; i++){
        nums[i] = (int)(Math.random() * 100) + 1;
    }
    //JAVA 8
    IntStream.range(0,sizeOfArray)
        .forEach(i -> nums[i] = (int)(Math.random() * 100) + 1);

    output(nums);
}

private static void output(final int[] arrayToDisplay){
    //JAVA 7
    for(int i = 0; i < arrayToDisplay.length; i++){
        System.out.printf("arr[%d] : %d \n",i,arrayToDisplay[i]);
    }
    //JAVA 8
    IntStream.range(0,arrayToDisplay.length)
        .forEach(i -> System.out.printf("arr[%d] : %d \n",i,arrayToDisplay[i]));
}

您应始终确保所有变量都已初始化并且已为其分配了适当的类型(至少在Java中)。如果我是你,我会坚持上面代码的Java 7版本

答案 2 :(得分:0)

这个问题不会得到遵守,因为没有定义输出法中“我”的含义。

另一种解决方案可以是:

public String Output(){
    StringBuffer sb = new StringBuffer();
    int i=0;
    while(i<nums.length){
        sb.append("Arr[" + i + "]:" + nums[i]);
        System.out.println(sb.toString());
        sb.clear();
    }
}