Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建包含随机双精度的数组并查找最大值和平均值_Java - Fatal编程技术网

Java 创建包含随机双精度的数组并查找最大值和平均值

Java 创建包含随机双精度的数组并查找最大值和平均值,java,Java,我需要这个项目的帮助,我需要 要求用户使用扫描仪输入行和列的大小 如果列大小大于4+5,则需要重新输入 我需要使用random object在4.0和11.0范围内用double填充所有数组元素 找到上面的数组并调用两个方法 方法一,我需要找到并打印2D数组中最大的列和 方法二,我需要找到数组中所有元素的平均值并返回平均值 这是我的代码,它完成了,但也有点混乱,我很困惑 import java.util.Arrays; import java.util.Random; import java.u

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

  • 要求用户使用扫描仪输入行和列的大小
  • 如果列大小大于4+5,则需要重新输入
  • 我需要使用random object在4.0和11.0范围内用double填充所有数组元素
  • 找到上面的数组并调用两个方法
  • 方法一,我需要找到并打印2D数组中最大的列和
  • 方法二,我需要找到数组中所有元素的平均值并返回平均值
  • 这是我的代码,它完成了,但也有点混乱,我很困惑

    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);
        }
      }
    }
    
    导入java.util.array;
    导入java.util.Random;
    导入java.util.Scanner;
    公共类Test1{
    公共静态void main(字符串[]args){
    //TODO自动生成的方法存根
    扫描仪输入=新扫描仪(System.in);
    System.out.println(“请输入行大小”);
    int rows=input.nextInt();
    System.out.println(“请输入列大小”);
    int columns=input.nextInt();
    双n=4.0;
    如果(列对于(int a=0;a,您可以使用while循环检查输入是否为有效整数,然后检查列计数是否大于4+5(我刚才假设为9)。我使程序流更结构化,并生成了整洁的输出。基本上,您只需将System.out.println从循环中移出,就像@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;
    }
    
    }
    
    封装阵列;
    导入java.util.Random;
    导入java.util.Scanner;
    公共类ArrayUtil{
    /**
    *@param指定命令行参数
    */
    公共静态void main(字符串[]args){
    int列;
    int行;
    扫描仪输入=新扫描仪(System.in);
    System.out.println(“请输入行大小:”);
    而(!input.hasNextInt()){
    System.out.println(“这不是一个有效的数字!请重试”);
    input.next();
    }
    rows=input.nextInt();
    System.out.println(“请输入列大小:”);
    而(!input.hasNextInt()){
    System.out.println(“这不是一个有效的数字!请重试”);
    input.next();
    }
    columns=input.nextInt();
    而(列>9){
    System.out.println(“列大小太大,请输入较小的整数!”);
    columns=input.nextInt();
    }
    Random rand=新的Random();
    int[][]数组=新的int[行][列];
    对于(int a=0;ad){
    d=数值;
    }
    }
    返回d;
    }
    }
    
    但它也有点混乱,我很困惑到底是什么混乱?你期望什么,会发生什么?出于某种原因,它将所有内容打印三次,而不是一个包含我输入的列和行的数组编辑print是这样的,因为你在循环中给出了所有println语句。将所有这些语句移到loo之外P