-5

見つけ方:

  1. Javaの2D配列の行の最大値。
  2. Javaの2D配列の行の最小値。
  3. Javaの2D配列の列の最大値。
  4. Javaの2D配列の列の最小値。

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];
    }

}

上記のコードは、指定された 2 次元配列から行のみで最小値と最大値を見つけます。列に同様のコードを書いてみてください。

于 2013-02-11T06:21:45.967 に答える