0

私がやろうとしているのは、「gradePsd」配列を検索して最高の成績を見つけ、同じ値の成績が 2 つある場合は、生徒の名前をコンソールに出力することです。

私が抱えている問題は、このメソッドが配列の最初のインデックス値を取得して出力していることです。これは、最初のパスで高い値であり、2 番目の値が最初の値よりも大きい場合にも出力されるなどです。 .

だから私の質問は、どうすれば学生を高学年で印刷することができるかということです。

public static void hiMarkMethod(String[] NamePsd, int[] gradePsd)
{
    String nameRtn = "";
    int num = gradePsd[0];

    System.out.println ("\n\nThe Student(s) with Hightest Mark(s) are:");

    for (int  i = 0; i < gradePsd.length;  i++)
    {
        if (gradePsd[i] >= num)
        {
            num = gradePsd[i];
            nameRtn = NamePsd[i]; 
        }

        System.out.print(nameRtn + ", ");
    }
}
4

2 に答える 2

0

num-1 で初期化しSystem.out、for ループから抜け出します。ただし、コードで特定できる生徒は 1 人だけです。複数の名前を保存nameRtnする場合は、 である必要があります。Collection

このようなもの:

public static void hiMarkMethod(String[] NamePsd, int[] gradePsd) {
    Collection<String> namesRtn = new ArrayList<String>();
    int num = -1;

    for (int  i = 0; i < gradePsd.length;  i++) {
        if (gradePsd[i] > num) {
            num = gradePsd[i];
            namesRtn.clear();  // clear name list as we have a new highest grade
            namesRtn.add(NamePsd[i]);  // store name in list
        } else if (gradePsd[i] == num) {
            namesRtn.add(NamePsd[i]);  // if a second student has the same grade store it to the list
        }

    }
    System.out.println ("\n\nThe Student(s) with Hightest Mark(s) are: " + namesRtn);
}
于 2012-12-06T12:13:25.617 に答える
0

最初に最大の数を見つけてから、その数の学生を出力します

public static void hiMarkMethod(String[] NamePsd, int[] gradePsd)
    {

    String nameRtn = "";
    int num = gradePsd[0];

     System.out.println ("\n\nThe Student(s) with Hightest Mark(s) are:");
    //find the highest number
    for (int  i = 0; i < gradePsd.length;  i++){
    if (gradePsd[i] >= num){
        num = gradePsd[i];
    }
    //print students with that number
    for (int  j = 0; j < NamePsd.length;  j++){
        if (gradePsd[j] == num)
        {
            nameRtn = NamePsd[j]; 
            System.out.print(nameRtn + ", "); 
        }
    }

可能な1000のソリューションの1つ。

于 2012-12-06T12:14:19.000 に答える