从方法返回特定的数组元素

时间:2015-12-02 08:56:59

标签: java

首先,最好首先看一下以下问题,让这个问题更有意义。 How can I reduce this long list of if statements?

数组int[] counterarray = new int[10];的值如下:

counterarray[0] is 3                                                                
counterarray[1] is 3                                                           
counterarray[2] is 0                                                             
counterarray[3] is 0                                                                  
counterarray[4] is 1                                                              
counterarray[5] is 5                                                               
counterarray[6] is 0                                                          
counterarray[7] is 0                                                             
counterarray[8] is 1                                                              
counterarray[9] is 2      

这段代码确定了数组中每个元素的上述值:

counterarray = new int[10];

for (int x = 14; x >= 0; x--) {
    if (anArray[x] >= 0 && anArray[x] < 101) {
        int idx = Math.min(anArray[x] / 10, 9);
        ++counterarray[idx];
    }
}

不应修改。

我试图从方法中返回数组中某些元素的值。

所以我希望能够在代码的给定行中仅返回数组的给定元素,当我想要以及我想要它时。我该怎么做?

当我编译代码时,在方法public static int[] countarraymethod中,上面指定的行上有一个错误。

Error: Syntax error, insert ". class" to complete Expression

当我在方括号内放一个数字时,会出现此错误:

Error: Type mismatch: cannot convert from int to int[]

顺便说一句,我将行// return only counterarray[9]作为注释的原因是因为我不知道如何创建一个只返回数组给定元素的命令。

import java.io.*;
import java.util.*;

public class GradesHistogram {         
    public static int[] countarraymethod (int[] counterarray, int[] anArray, int counterrepeat) {
        counterarray = new int[10];
        for (int x = 14; x >= 0; x--) {
            if (anArray[x] >= 0 && anArray[x] < 101) {
                int idx = Math.min(anArray[x] / 10, 9);
                ++counterarray[idx];
            }
        }
        for (counterrepeat = 0; counterrepeat < 10; counterrepeat++) {
            System.out.println("counterarray[" +counterrepeat+ "] is " +counterarray[counterrepeat]);
        }
        return counterarray[];  //error is here
    }
    public static void main(String[] args)throws java.io.IOException {
        ...
        ...
        int histogrammin = 0;
        int histogrammax = 0;
        x = readnumber;
        for (int histogramrows = 0; histogramrows < 10; histogramrows++) {

            histogrammin = histogramrows * 10;

            if (histogrammin == 90) {
                // return only counterarray[9]    
            } else {
                histogrammax = histogrammin + 9;

                // return counterarray[0]
                // return counterarray[1]
                // return counterarray[2]
                ...
                ...
                // return counterarray[8]
            }

        }
        ...
        ...
    }
}

2 个答案:

答案 0 :(得分:3)

您的方法的返回类型是int [],因此您必须返回一个整数数组。如果只想返回数组的一个元素,则应将方法的返回类型更改为int,并返回如下值:

return array[index];

您当前拥有的语法无效,因此编译错误。返回数组时,您不需要在变量名后添加方括号。

答案 1 :(得分:1)

int []数组中的一个特定项只是一个int。将返回类型更改为int,然后使用:

return counterarray[index];

此外,有点偏离主题,通常一个很好的做法是命名这样的变量:

return counterArray[index]; //First letter of every word in Uppercase (Except for the first one)