2015-09-24 4 views
0

Отказ от ответственности: Я очень ранний студент и изо всех сил пытаюсь изучить Java. Пожалуйста, скажите мне, не оставляю ли я какую-либо важную информацию.java - найти максимальное значение из связанного списка

Я пишу программу, предлагающую пользователю выполнять различные операции в связанном списке (добавлять, удалять, изменять значение и т. Д.), Но вместо хранения строки или некоторого примитивного типа данных я храню объекты типа Student (который в основном содержит строку для имени ученика и целое число для их теста), и я застрял в том, как найти максимальную оценку теста, так как я не могу просто найти самого высокого ученика.

Любая помощь будет оценена по достоинству.

ответ

0

Ну, у вас могут быть две переменные: одна как currentScore, а другая как newScore. Затем пройдите через каждый объект-ученик, получите тестовое значение, а затем сравните. Если новый балл меньше, то сохраняйте текущий. Если новый балл выше, замените текущий счет новым счетом и продолжайте движение. Когда вы проходите список, у вас есть самый высокий балл

0

Вы можете перечислить список, как описано в других ответах, или вы можете использовать метод Collections.max. Чтобы использовать этот метод, ваш класс Student должен реализовать интерфейс comperable.

public class Student implements Comparable<Student> 

и вам нужно добавить метод CompareTo к классу:

@Override 
public int compareTo(Student student) 
{ 
    if (this.score > student.score) 
    { 
     return 1; 
    } 
    if (this.score < student.score) 
    { 
     return -1; 
    } 
    else 
    { 
     return 0; 
    } 
} 

Теперь, когда вы пишете Collections.max(list) вы получите Студент с наибольшим количеством очков.

0

Я написал простую программу, которая соответствовала вашему делу.

Главный класс:

import java.util.*; 
import java.lang.Math; 

public class FindHighestScore 
{ 
    public static void main(String[] args) 
    { 
    LinkedList<Student> studentLinkedlist = new LinkedList<Student>(); 

    studentLinkedlist.add(new Student("John",1)); // Adding 5 students for testing 
    studentLinkedlist.add(new Student("Jason",5)); 
    studentLinkedlist.add(new Student("Myles",6)); 
    studentLinkedlist.add(new Student("Peter",10)); // Peter has the highest score 
    studentLinkedlist.add(new Student("Kate",4)); 

    int temp = 0; // To store the store temporary for compare purpose 
    int position = 0; // To store the position of the highest score student 

    for(int i = 0; i < studentLinkedlist.size(); i ++){ 
     if(studentLinkedlist.get(i).getScore() > temp){ 
     temp = studentLinkedlist.get(i).getScore(); 
     position = i; 
     } 
    } 

    System.out.println("Highest score is: " + studentLinkedlist.get(position).getName()); 
    System.out.println("Score: " + studentLinkedlist.get(position).getScore()); 


    } 
} 


Класс студент конструктор:

public class Student 
{ 
    String name; 
    int score; 

    Student(){ 
    } 

    Student(String name, int score){ 
    this.name = name; 
    this.score = score; 
    } 

    String getName(){ 
    return this.name; 
    } 

    int getScore(){ 
    return this.score; 
    } 
} 


выше программа результата производят следующим образом:

Highest score is: Peter 
Score: 10 
Смежные вопросы