创建一个填充了Random double并找到Maximum和Average的数组

时间:2015-07-08 16:54:22

标签: java

我需要帮助这个程序,我需要

  1. 要求用户使用scanner
  2. 输入行和列大小
  3. 如果列大小超过4 + 5,则需要重新输入
  4. 我需要使用随机对象填充4.0,11.0范围内的所有数组元素
  5. 找到上面的数组并调用两个方法,
  6. 方法一,我需要找到并打印二维数组中最大的列数
  7. 方法二,我需要找到数组中所有元素的平均值并返回平均值。
  8. 这是我的代码,它有点完成它,但它也有点混乱,我很困惑。

    import java.util.Arrays;
    import java.util.Random;
    import java.util.Scanner;
    public class Test1 {
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        System.out.println("Please enter row size");
        int rows = input.nextInt();
        System.out.println("Please enter column size");
        int columns = input.nextInt();
        double n = 4.0;
        if (columns < n+5.0){
        } else{
            System.out.println("The column size is too large, please enter a smaller integer");
        }
        Random rand = new Random();
        int[][] array = new int[rows][columns];
        for(int a = 0; a<rows; a++)
            for(int b = 0; b<columns; b++)
                array[a][b] = rand.nextInt(11-4) + 4;
    
        for(int i = 0; i<rows; i++){
            double sum = 0;
            int sum2 = 0;
            for(int j = 0; j<columns; j++){
                sum += array[j][i];
                sum2 = sum2 + array[i][j];
                 System.out.println(Arrays.deepToString(array));
            }           
    
            double average = sum/array.length;
            System.out.println("largest sum of the columns is " + sum);
            System.out.println("The average of all elements in the array is " + average);
        }
      }
    }
    

1 个答案:

答案 0 :(得分:0)

你可以使用while循环来检查输入是否是一个有效的整数,然后如果列数大于4 + 5(我只假设为9)。我使程序流程更加结构化,并使输出整齐。基本上你只需将System.out.println移出Loop就像@Codebender指出的那样。

package array;

import java.util.Random;
import java.util.Scanner;

public class ArrayUtil {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    int columns;
    int rows;

    Scanner input = new Scanner(System.in);

    System.out.println("Please enter row size :");

    while (!input.hasNextInt()) {
        System.out.println("That is not a valid Number! Try again.");
        input.next();
    }

    rows = input.nextInt();

    System.out.println("Please enter column size :");

    while (!input.hasNextInt()) {
        System.out.println("That is not a valid Number! Try again.");
        input.next();
    }

    columns = input.nextInt();

    while (columns > 9) {
        System.out.println("The column size is too large, please enter a smaller integer!");
        columns = input.nextInt();
    }



    Random rand = new Random();

    int[][] array = new int[rows][columns];
    for (int a = 0; a < rows; a++) {
        for (int b = 0; b < columns; b++) {
            array[a][b] = rand.nextInt(11 - 4) + 4;
        }
    }

    for (int[] arr : array) {
        StringBuilder sb = new StringBuilder();

        for (int i : arr) {
            sb.append("[");
            sb.append(i);
            sb.append("]");
        }
        System.out.println("Array :" + sb.toString());
        System.out.println("Average : " + average(arr));
        System.out.println("Max : " + max(arr));
    }

}

public static double average(int[] values) {
    double d = 0;

    for (double value : values) {
        d = value + d;
    }

    return (d / values.length);
}

public static double max(int[] values) {
    double d = 0;
    for (double value : values) {
        if (value > d) {
            d = value;
        }
    }

    return d;
}

}