Моят текущ код отпечатва, че последният студент, вписан с техния резултат, е най-високият, дори ако е по-нисък от процеса. Имам нужда от него, за да отпечатам най-високото от всички включени студенти.
(Намерете двата най-високи резултата) Напишете програмакоето подканва потребителя да въведе броя на учениците и името и резултата на всеки ученик и накрая показва студента с най-висок резултат и ученика с втория най-висок резултат.
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 );
}
}
}
}
Отговори:
1 за отговор № 1Проблемът ви е, че определяте максималната стойност в цикъла, така че при всяка итерация на цикъла той да се нулира
Опитайте това вместо това:
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 за отговор № 2
Декларирайте най-високите и най-високитеScoreName променливи преди цикъл for, като променливите вътре в цикъла с всяка итерация стойността му ще бъде нулирана.