对12个随机生成的值进行排序

时间:2016-03-23 03:46:25

标签: java arrays sorting random

我正在尝试对一组随机生成的值进行排序,但我想我可能将这个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;
        }

    }

2 个答案:

答案 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]);
}