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
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