我正在尝试对一组随机生成的值进行排序,但我想我可能将这个arrays.sort放在错误的位置,或者它没有正确的语法。
有人可以向我解释我需要做些什么才能让它正常工作吗?
这是代码。
package name;
import java.util.*;
public class name {
public static void main(String[] args) {
int years = isValidInput();
Random generator = new Random();
float[] monthsArray = new float[12];
for (int i = 1; i <= years; i++){
System.out.println("\nYear " + i + ": ");
for (int months = 1; months <= 12; months++){
System.out.println("Month " + months + ": " + generator.nextFloat() * 100);
Arrays.sort(monthsArray);
}
}
}
public static int isValidInput(){
Scanner keyboard = new Scanner(System.in);
System.out.print("Enter the desired number of years: ");
int years = keyboard.nextInt();
while (years <= 1 || years >= 80){
System.out.print("Please enter a number that is greater than 1 and less than 80: ");
years = keyboard.nextInt();
System.out.println();
}
return years;
}
}
答案 0 :(得分:1)
目前您实际上并未在monthsArray
变量中存储任何内容。你使用new float[12]
构造它,但你的随机数只是打印然后扔掉。我怀疑你想要的东西:
float[] monthsArray = new float[12];
for (int i = 0; i < 12; i++)
monthsArray[i] = generator.nextFloat() * 100;
Arrays.sort(monthsArray);
请注意,如果您使用的是Java 8,那么这可以更加简单:
double[] monthsArray = Random.doubles(12, 0, 100).sorted().toArray();
答案 1 :(得分:0)
您可以使用for循环浓缩设置monthsArray
。 Arrays.sort()位置错误,您甚至没有使用monthsArray
,但在打印月份时会生成更多随机数。这应该更多地用于查看last question的目标:每年生成随机浮点数,对它们进行排序,打印出来。
for(int i = 1; i <= years; i++) {
for(int i=0; i<monthsArray.length; i++)
monthsArray[i] = generator.nextFloat()*100;
Arrays.sort(monthsArray);
System.out.println("\nYear " + i + ": ");
for(int month = 1; month <= 12; month++){
System.out.println("Month " + month + ": " + monthsArray[month]);
}
要更改此选项以符合您的评论:
int[][] randFloats = new int[years][12];
int[] monthsArray = new int[12];
for(int i = 1; i <= years; i++) {
for(int i=0; i<monthsArray.length; i++)
monthsArray[i] = generator.nextFloat()*100;
Arrays.sort(monthsArray);
for(int i=0; i<monthsArray.length; i++)
randFloats[year-1][i] = monthsArray[i];
System.out.println("\nYear " + i + ": ");
for(int month = 1; month <= 12; month++){
System.out.println("Month " + month + ": " + monthsArray[month]);
}