当用户输入Y继续执行程序时,我试图从随机数数组中获取最大值和最小值。我要用随机数方法测试min和max还是将max和max设置为自己的方法?
我已经尝试研究,并且已经为此工作了几个小时。
package lab10p1;
import java.util.*;
import java.util.Random;
public class Lab10p1 {
public static final int ROW = 5;
public static final int COL = 6;
public static final int MIN = 0;
public static final int MAX = 100;
/**
* @param args the command line arguments
*/
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
System.out.println("Do you want to start Y/N?");
char c =scan.next().charAt(0);
while(c=='y'||c=='Y')
{
int[][] a = new int[ROW][COL];
randArray(a, ROW, COL, MIN, MAX);
int smallest;
System.out.println(min);
c=scan.next().charAt(0);
}
}
public static int randArray(int[][] matrix, int row, int col, int low, int up)
{
Random rand = new Random();
int min = matrix[0][0];
for (int r = 0; r < row; r++)
{
for (int c = 0; c < col; c++)
{
if(matrix[r][c] < min) {
min = matrix[r][c];}
int random=matrix[r][c] = rand.nextInt(up - low + 1) + low;
System.out.print(" "+random);
}
System.out.println();
}
return min;
}
}
预期输出为
12 13 53 23 53 42
34 56 65 34 23 45
2 64 23 42 11 13
87 56 75 34 56 92
23 45 23 42 32 12
The difference between the max value 94 and the min value 2 = 92
Do you want to continue(Y/N): y
答案 0 :(得分:0)
您可以为此使用Arrays.stream()
,IntStream.min()
和IntStream.max()
:
分钟:
private static int arrayMin(int[][] a) {
return Arrays.stream(a)
.mapToInt(r -> IntStream.of(r).min().getAsInt())
.min().getAsInt();
}
最大:
private static int arrayMax(int[][] a) {
return Arrays.stream(a)
.mapToInt(r -> IntStream.of(r).max().getAsInt())
.max().getAsInt();
}
这两种方法都查找每行的最小值/最大值,然后将结果映射到另一个数组,并获取其最小值/最大值。