/ / Mój obecny kod drukuje, że ostatni uczeń wprowadzony z ich wynikiem jest najwyższy, nawet jeśli jest niższy niż postępowanie - java, eclipse, najwyższy, wprowadzenie

Mój obecny kod drukuje, że ostatni uczeń wpisany z wynikiem jest najwyższy, nawet jeśli jest niższy od postępowania - java, eclipse, najwyższy, wprowadzenie

Mój obecny kod drukuje, że ostatni uczeń wprowadzony z ich wynikiem jest najwyższy, nawet jeśli jest niższy niż postępowanie. Potrzebuję go, aby wydrukować jak najwięcej spośród wszystkich zgłoszonych studentów.

(Znajdź dwa najwyższe wyniki) Napisz programto zachęca użytkownika do wprowadzenia liczby uczniów oraz nazwiska i wyniku każdego ucznia, a na koniec wyświetla ucznia z najwyższym wynikiem i ucznia z drugim najwyższym wynikiem.

package chapter5;
import java.util.Scanner;

public class Number9 {
public static void main(String [] args){
Scanner input = new Scanner(System.in);



System.out.println("Enter number of students");
int numberOfStudents = input.nextInt();

System.out.println("Enter the name and score of each student:");
for (int i = 0; i < numberOfStudents; i++ ){
System.out.println("Student " + (i+1) + " name ");
String name = input.next();

System.out.println("Student " + (i+1) + " score ");
int score = input.nextInt();



int highestScore = 0;
String highestScoreName ="";

if (score > highestScore){
highestScore = score;
highestScoreName = name;

System.out.println("The student with the highest score is "
+ highestScoreName + " with a score of " + highestScore );

}
}


}
}

Odpowiedzi:

1 dla odpowiedzi № 1

Problem polega na tym, że definiujesz maksymalną wartość wewnątrz pętli, więc przy każdej iteracji pętli for resetuje się

Spróbuj zamiast tego:

package chapter5;
import java.util.Scanner;

public class Number9 {
public static void main(String [] args){
Scanner input = new Scanner(System.in);

int highestScore = 0;
String highestScoreName ="";

System.out.println("Enter number of students");
int numberOfStudents = input.nextInt();

System.out.println("Enter the name and score of each student:");
for (int i = 0; i < numberOfStudents; i++ ){
System.out.println("Student " + (i+1) + " name ");
String name = input.next();

System.out.println("Student " + (i+1) + " score ");
int score = input.nextInt();

if (score > highestScore){
highestScore = score;
highestScoreName = name;
}
}
System.out.println("The student with the highest score is "
+ highestScoreName + " with a score of " + highestScore );

}
}

0 dla odpowiedzi nr 2

Zadeklaruj najwyższe i najwyższe zmienneScoreName przed pętlą for, przy zmiennych wewnątrz pętli z każdą iteracją, jej wartość zostanie zresetowana.