-5

怎么找:

  1. Java中二维数组的行中的最大值。
  2. Java中二维数组的行中的最小值。
  3. Java中二维数组的列中的最大值。
  4. 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();
        }

    }
}
4

2 回答 2

2

因为这听起来很像家庭作业,所以我不会详细说明,但这就是我的做法:

  1. 我会有数组,一个用于最大值,一个用于每一行和每列的最小值。
  2. 用非常大的正数初始化要存储最小值的数组,并用非常大的负数初始化要存储最大值的数组。
  3. 我将遍历我拥有的所有行,并将这些数组中的值设置为每行的最大值和最小值。这可以使用嵌套循环轻松完成。和应该Math.max(double a, double b)派上Math.min(double a, double b)用场。

编辑:根据您的评论,经过仔细检查,您似乎在byte整个应用程序中都在使用。对于此类问题,这不是合适的数据类型。我建议使用double并更改从用户那里获取数据的方式,方法是使用nextDouble()而不是nextByte().

于 2013-02-11T06:17:05.533 回答
1
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];
    }

}

上面的代码将仅在一行中从给定的二维数组中找到最小值和最大值。尝试自己为列编写类似的代码。

于 2013-02-11T06:21:45.967 回答