2013-02-11 5 views
-3

Как найти:Как найти максимальное и минимальное значение строки и столбца отдельно в двумерном массиве в Java?

  1. Максимальное значение в строке из 2D массива в Java.
  2. Минимальное значение в строке 2D-массива в Java.
  3. Максимальное значение в столбце двумерного массива в Java.
  4. Минимальное значение в столбце 2D-массива в Java.

import java.util.*; 
class Example{ 
    public static void main(String args[]){ 
     Scanner input=new Scanner(System.in); 
     System.out.print("Enter Number of Students : "); 
     byte a=input.nextByte(); 
     System.out.print("Enter Number of Subjects : "); 
     byte b=input.nextByte(); 
     System.out.println(); 

     byte[][] st=new byte[a][b]; 

     //Input Marks for Subjects for different Students 
     for(byte i=0;i<a;i++){ 
      System.out.println("Enter Subject Marks for Student "+(i+1)+" :- "); 
      for(byte x=0;x<b;x++){ 
       System.out.print("\tEnter Marks % for Subject "+(x+1)+" : "); 
       st[i][x]=input.nextByte(); 
      } 
      System.out.println(); 
     } 

     //Find Student Total 
     int[] studTotal=new int[a]; 
     for(byte i=0;i<a;i++){ 
      for(byte x=0;x<b;x++){ 
       studTotal[i]=studTotal[i]+st[i][x]; 
      } 
     } 

     //Find Student Average 
     float[] studAvg=new float[a]; 
     for(byte i=0;i<a;i++){ 
      for(byte x=0;x<b;x++){ 
       studAvg[i]=(float)studTotal[i]/b; 
       studAvg[i]=Math.round(studAvg[i]*100)/(float)100; 
      } 
     } 

     //Find Student Grade 
     char[] studGrade=new char[a]; 
     for(byte i=0;i<a;i++){ 
      if(studAvg[i]>=75){ 
       studGrade[i]='A'; 
      }else if(studAvg[i]>=65){ 
       studGrade[i]='B'; 
      }else if(studAvg[i]>=55){ 
       studGrade[i]='C'; 
      }else if(studAvg[i]>=35){ 
       studGrade[i]='D'; 
      }else{ 
       studGrade[i]='F'; 
      } 
     } 

     //Find Student Maximum 
     byte[] studMax=new byte[a]; 
     for(byte i=0;i<a;i++){ 
     studMax[i]=st[i][0];//<<==Problem-Solved==>> 
      for(byte x=0;x<b;x++){ 
       if(st[i][x]>studMax[i]){ 
        studMax[i]=st[i][x]; 
       } 
      } 
     } 

     //Find Student Minimum 
     byte[] studMin=new byte[a]; 
     for(byte i=0;i<a;i++){ 
     studMin[i]=st[i][0];//<<==Problem-Solved==>> 
      for(byte x=0;x<b;x++){ 
       if(st[i][x]<studMin[i]){ 
        studMin[i]=st[i][x]; 
       } 
      } 
     } 

     //Display Information in a Table 
     for(byte i=0;i<a;i++){ 
      for(byte x=0;x<b;x++){ 
       System.out.print(st[i][x]+"\t"); 
      } 
      //Display Student's Total, Average, Grade, Maximum, Minimum 
      System.out.print(studTotal[i]); 
      System.out.print("\t"+studAvg[i]); 
      System.out.print("\t"+studGrade[i]); 
      System.out.print("\t"+studMax[i]); 
      System.out.print("\t"+studMin[i]); 
      System.out.println(); 
     } 

    } 
} 
+1

Похоже, вы просите нас сделать домашнее задание. Не могли бы вы рассказать о том, что вы пробовали, и о какой конкретной проблеме вы столкнулись. Поиск максимальных/минимальных звуков так же просто, как итерация и сохранение промежуточного значения max/min для меня – gerrytan

+0

показать некоторые усилия для того, чтобы указать, с какими проблемами вы столкнулись при этом – exexzian

+0

Пожалуйста, @gerrytan & sansix, помогите мне в моей проблеме, скромный запрос, plz guyz, –

ответ

2

Поскольку это звучит очень похоже на домашнее задание, я не буду вдаваться в подробности, но это, как я хотел бы сделать это:

  1. Я бы массивы, один для максимума и один для минимального значения каждой строки и столбца.
  2. Инициализация массивов, которые должны хранить самые низкие значения с очень большими положительными числами, и инициализировать массивы, которые должны хранить самые высокие значения с очень большими отрицательными числами.
  3. Я бы прошел все строки, которые у меня есть, и задал значения в этих массивах с максимальными и минимальными значениями каждой строки. Это можно легко сделать с помощью вложенных циклов. Math.max(double a, double b) и Math.min(double a, double b) должны пригодиться.

EDIT: Согласно вашему комментарию, при ближайшем рассмотрении кажется, что вы используете byte во всем своем приложении. Это не подходящий тип данных для такого рода проблем. Я бы рекомендовал использовать double и внести изменения в свой способ получения данных от пользователя с помощью nextDouble() вместо nextByte().

+0

Я не знаю этих утилов и качелей, cn. u plz скажите мне, как это сделать ref. выше code, plz, plz, я бы очень благодарен u, –

+0

@ user2060289: Пожалуйста, см. мое редактирование. – npinti

+0

plz скажите мне, что это ?, я много рассматриваюсь в распределении памяти, это байт использования yi, –

0
public static void main(String[] args) { 
    int[][] matrix = { { 2, 1, 4, 5 }, { 3, 9, 8, 43 } }; 

    for (int i = 0; i < matrix.length; i++) { 
     int minInRow = matrix[i][0]; 
     int maxInRow = matrix[i][0]; 
     for (int j = 0; j < matrix[i].length; j++) { 
      if (minInRow > matrix[i][j]) { 
       minInRow = matrix[i][j]; 
      } 

      if (maxInRow < matrix[i][j]) { 
       maxInRow = matrix[i][j]; 
      } 
     } 
     System.out.println("Maximum in row is" + maxInRow); 
     System.out.println("Minimum in row is " + minInRow); 
     minInRow = matrix[i][0]; 
     maxInRow = matrix[i][0]; 
    } 

} 

Приведенный выше код найдет min и max из данного 2d массива только в строке. Попробуйте yourselt написать аналогичный код для столбца.

+0

tnx, 4 ответ, позвольте мне попробовать это, во всяком случае, tnx vry much. –

+0

tnx, я попробовал это, bt, у меня возникли проблемы с применением моего кода, если бы я мог помочь мне в этом, plz –

+0

tnx vry much, проблема решена, tnx, в отличие от других, u help , в любом случае спасибо, я постараюсь узнать, как найти max и min в строке и опубликовать его, tnx –

Смежные вопросы