2017-02-17 14 views
0

Я начинаю java, (простите мой плохой английский). Я хочу сравнить объекты студента, которые имеют (имя, оценка). и вернуть имя студента с наивысшим результатом. У меня есть getScore и getName в классе моих учеников.java сравнить атрибуцию в разных ojbect

public String tallest() { 

    //set a defaut value 
    int score = 0; 
    for(Student student: this.student) { 
     // compare which student has highest score 
     if(student.getScore() < score) { 
      score = student.getScore(); 
      String name = ((String)student.getName()); 
     } 
    } 
    return name; 
} 

другой вопрос о том, как вернуть все студенческий объект с (имя, оценка), которые выше 80.

public ArraryList<student>goodStudent<int level> { 
    int level = 80; 
    for(Student student: this.student) { 
    if(student.getScore > 80) { 
    (don't know how to do here >.<) 

    return list; 
} 
+0

Если вы хотите высокий балл, вы должны проверить, 'если (student.getScore()> балл) {' не '<' – alfasin

+0

Что касается второго, вы должны создать пустой список и добавить ему любой студент, который имеет уровень> = с заданного уровня. – alfasin

ответ

3
public String tallest() { 
    return Collections.max(students, 
      Comparator.comparingInt(Student::getScore)).getName(); 
} 

public List<Student> goodStudent(int level) { 
    return student.stream() 
      .filter(s -> s.getScore() > level) 
      .collect(Collectors.toList()); 
} 
0

Для вашего 1-й вопрос, вы можете использовать Java Comparator, построить ScoreComparator, которые сравнивают Student на основе их результатов. Затем с помощью Collections.sort(students, new ScoreComprator()) сортировки списка, и вы можете получить высокий балл от него (в зависимости от того, как сортировать его ли в порядке возрастания или decresing заказ)

Для 2-й вопрос, вы можете создать еще одну ArrayList, а затем перебирать список students, если student.getScore() > 80 добавьте его в новый список создания.

+0

Несмотря на то, что OP говорит «сравнить объекты-ученики», он действительно не сравнивает их, а пытается «фильтровать» их по критериям оценки – alfasin

0

Надеюсь, что эта помощь. Любой вопрос не стесняйтесь спрашивать.

import java.util.ArrayList; 

class Student{ 
    private String name; 
    private int score; 

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

    public int getScore() { 
     return score; 
    } 

    public void setScore(int score) { 
     this.score = score; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

public class Test{ 

    public static void main(String[] argv) throws Exception { 
    Student[] students = {new Student("Jhon", 78), new Student("Kevin", 90), new Student("Max", 100)}; 

    Student maxScore = GetMaxScore(students); 
    System.out.println("Max Score:"); 
    System.out.println(maxScore.getScore()); 

    ArrayList<Student> studentsOverVal = GetScoreOverVal(students, 80); 
    System.out.println("Students with score over 80: "); 
    for(Student student: studentsOverVal) { 
     System.out.println(student.getName()); 
     } 

    } 

    private static Student GetMaxScore(Student[] students) { 
    Student max = students[0]; 
    for(Student student: students) { 
     if(student.getScore() > max.getScore()) 
      max = student; 

     } 
    return max; 
    } 

    private static ArrayList<Student> GetScoreOverVal(Student[] students, int val) { 
    ArrayList<Student> overVal = new ArrayList<>(); 
    for(Student student: students) { 
     if(student.getScore() >= val) 
      overVal.add(student); 
     } 
    return overVal; 
    } 

}