[英]Calling a method and returning to an array
我正在开发一个程序,它涉及数组。 我是新手,所以我一直在编写代码并一遍又一遍地删除它。
我需要让用户输入一个从 1 到 99 的数字。
他们的输入应该分配单个暗数组的大小。
然后我必须将该数组发送到一个从 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
试试下面的代码:
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 之间的新随机值。
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。
array[i] = (double) (rndm.nextInt(45) + rndm.nextDouble() + 55);
rndm.nextInt(45)
返回从 0(包含)到 45(不包含)的int
,
rndm.nextDouble()
从 0.0(包含)到 1.0(不包含rndm.nextDouble()
返回double
rndm.nextDouble()
值
最小可能值:0 + 0.0 + 55 = 55
最大可能的值:44 + 1.0 + 55 = 100(注意,随机double
不完全是1.0,因为它是独特的,但它是任何其他可能的double
值接近1.0,由于巨大的double
精度
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()
而不是double[]
作为参数,请取消注释我包含的所有注释并删除不需要的部分):
import java.util.*;
public class Test {
public static void main(String[] args) {
int scores = 0;
int numberOfGrades;
Scanner input = new Scanner(System.in);
System.out.println("Enter amount:");
numberOfGrades = input.nextInt();
double[] amountOfGrades = new double[numberOfGrades];
amountOfGrades = randomGrades(amountOfGrades /* or: amountOfGrades.length */);
System.out.println(Arrays.toString(amountOfGrades));
System.out.println("Letter grades...");
}
public static double[] randomGrades(double[] array /* or: int amount */) {
Random rndm = new Random();
// add this line if you use int argument: double[] array = new double[amount];
for(int i = 0; i < array.length; i++) {
array[i] = (double)(rndm.nextInt(45) + rndm.nextDouble() + 55);
}
return array;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.