首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建一个由随机双倍填充的数组并找到最大值和平均值

创建一个由随机双倍填充的数组并找到最大值和平均值
EN

Stack Overflow用户
提问于 2015-07-08 16:54:21
回答 1查看 73关注 0票数 0

我需要这个项目的帮助,我需要

  1. 要求用户使用扫描器输入行和列大小。
  2. 如果列大小大于4+5,则需要重新输入该列。
  3. 我需要使用随机对象填充范围为4.0,11.0的双倍数组元素
  4. 找到上面的数组并调用两个方法,
  5. 方法一,我需要在2D数组中找到并打印最大的列和。
  6. 方法二,我需要找到数组中所有元素的平均值并返回平均值。

这是我的代码,它可以实现它,但它也有点混乱,我很困惑。

代码语言:javascript
复制
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);
    }
  }
}
EN

回答 1

Stack Overflow用户

发布于 2015-07-08 18:04:02

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

代码语言:javascript
复制
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;
}

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31298952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档