Возвращая минимум и максимум - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь получить максимальное и минимальное значение из массива случайных чисел, пока пользователь вводит Y, чтобы продолжить программу. Хотел бы я проверить минимальные и максимальные значения в моем методе случайных чисел или сделать минимальные и максимальные значения собственным методом?

Я пробовал исследования и работал над этим часами.

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

1 Ответ

0 голосов
/ 01 мая 2019

Для этого вы можете использовать Arrays.stream(), IntStream.min() и IntStream.max():

min :

private static int arrayMin(int[][] a) {
    return Arrays.stream(a)
            .mapToInt(r -> IntStream.of(r).min().getAsInt())
            .min().getAsInt();
}

max :

private static int arrayMax(int[][] a) {
    return Arrays.stream(a)
            .mapToInt(r -> IntStream.of(r).max().getAsInt())
            .max().getAsInt();
}

Оба метода ищут мин / макс каждой строки и отображают этот результат в другой массив и получают мин / макс этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...