调用方法并返回数组

时间:2018-03-07 04:44:52

标签: java arrays methods

我正在研究一个程序,它涉及到数组。我是新手,所以我一直在编写代码并一遍又一遍地删除它。

我需要让用户输入1到99之间的数字。

他们的输入应该分配单个dim数组的大小。

然后我必须将该数组发送到一个方法,该方法从55到100随机选择DOUBLES并将它们放入数组中。

这就是我现在正在玩的东西。我开始迷惑自己了!

public static void main(String[] args) {

    int scores = 0;
    int numberOfGrades;

    Scanner input = new Scanner(System.in);


    System.out.println("Please enter a number of grades from 1 to 99: ");
    numberOfGrades = input.nextInt();

    int[] amountOfGrades = new int[numberOfGrades];

    randomGrades(amountOfGrades);

    System.out.print("The letter grades for each score are: ");

} //End Method


   /**
    * 
    * @param array
    * @return
    */
    public static int randomGrades(int[] array) {
        for (int cntr = 55; cntr < 100; cntr++) {
            int rndm = new Random().nextInt(array.length);
            return array[rndm];

        }//End Main Method

2 个答案:

答案 0 :(得分:0)

请尝试以下代码:

package eu.webfarmr;

import java.util.Random;

public class DoubleArray {
    public static void main(String[] args) {
        int numberOfGrades = 10;
        int[] grades = generateRandomGrades(numberOfGrades);
        for (int grade : grades){
            System.out.println(grade);
        }
    }

    private static int[] generateRandomGrades(int numberOfGrades) {
        int[] grades = new int[numberOfGrades];
        for (int i = 0; i < numberOfGrades; i++){
            grades[i] = new Random().nextInt(45)+55;
        }
        return grades;
    }
}

它生成一个大小为10的数组,并在数组的每个元素内存储一个介于55和100之间的新随机值。

答案 1 :(得分:0)

解决方案:

public static double[] randomGrades(double[] array) {
    Random rndm = new Random(); // creating Random outside of the for loop, not in each iteration in for-loop to save memory
    for (int i = 0; i < array.length; i++) { // for each element of an array
        array[i] = (double) (rndm.nextInt(45) + rndm.nextDouble() + 55);
    }
    return array; // return array of doubles
}

同时更改main()方法中的以下行:

int[] amountOfGrades = new int[numberOfGrades];

为:

double[] amountOfGrades = new double[numberOfGrades];

正如您所说的那样,您希望存储double值而不是int s。

for循环的说明:

array[i] = (double) (rndm.nextInt(45) + rndm.nextDouble() + 55);

rndm.nextInt(45)int从0(包括)返回到45(不包括),

rndm.nextDouble()double从0.0(包括)返回到1.0(不包括)

最低可能值:0 + 0.0 + 55 = 55

最大可能值:44 + 1.0 + 55 = 100(请注意,随机double不完全是1.0,因为它是独占的,但它是任何其他可能的double值关闭由于巨大的double精度

而导致1.0

编辑:

使用行randomGrades(amountOfGrades);,您可以创建随机双精度值并将它们存储在数组中,但您既不会将这些值打印到控制台,也不会将这些值分配给数组: 您可能需要考虑更改此行:

randomGrades(amountOfGrades);

为:

amountOfGrades = randomGrades(amountOfGrades); // that way you have access to result doubke values later
System.out.println(Arrays.toString(amountOfGrades));

整个工作计划:

好的,我为了您的方便而包含整个解决方案,但请尽量不要盲目复制,尝试了解这里发生了什么(如果您需要将int值传递给randomGrades()而不是{{1作为参数,取消注释我包含的所有注释并删除不必要的部分:

double[]