Есть ли другой способ получить индекс без использования индекса массива? ех. Не использовать массив [5] - PullRequest
0 голосов
/ 10 ноября 2018

Итак, мне было интересно, есть ли способ получить Высшее Имя без использования Names[5]?

int[] points = { 68, 87, 91, 30, 56, 99, 91 };
        String[] Names = { "Billon", "Bob", "Barbie", "Beny", "Bardon", "Becks", "Benji" };

        showHighest(scores, Names);

        int a = findThatName(Names, "Benji");
        if (a == -1)
            System.out.print("\nBenji is not on the list");
        else
            System.out.printf("\nName: %s had %s points", Names[a], points[a]);

        a = findThatName(Names, "Fed");
        if (a == -1)
            System.out.print("\nFed was not on the list");
        else
            System.out.printf("\nName: %s had %s points", Names[a], points[a]);

    }

    public static void showHighest(int[] points, String[] Names) {
        int max = points[0];
        for (int a = 1; a < points.length; a++) {
            if (points[a] > max)
                max = points[a];
        }
        System.out.printf("Highest Name: %s Highest Points: %s", Names[5], max);

    }

    public static int findThatName(String[] Names, String name) {
        int index = -1;
        for (int a = 0; a < Names.length; a++) {
            if (Names[a].equals(name)) {
                index = a;
                break;
            }

        }
        return index;
    }

}

В частности, в методе showBest. Вместо использования Names[5] могу ли я получить что-то вроде Names[i]? Или, может быть, как бы я использовал индекс максимального балла для того же индекса имен? редактировать: Извините, мне пришлось изменить формулировку кода ...

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

мы должны сделать это Java-способом или объектно-ориентированным способом.

Для этого нам понадобится студенческий класс.

    public class Student implements Comparable<Student> {

    private Integer score;
    private String name;

    public Student() {
        super();
    }

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

    public Integer getScore() {
        return score;
    }

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

    public String getName() {
        return name;
    }

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

    @Override
    public int compareTo(Student o) {
        return this.score.compareTo(o.getScore());
    }

    @Override
    public String toString() {
        return "Student [score=" + score + ", name=" + name + "]";
    }
}

Тогда мы можем использовать этот класс учеников где угодно и поиграть со списком учеников, как мы хотим, как показано ниже.

       public class Driver {

        public static void main(String[] args) {
            Student s1 = new Student(67, "Billy");
            Student s2 = new Student(86, "Bobbi");
            Student s3 = new Student(90, "Barbara");
            Student s4 = new Student(20, "Beni");
            Student s5 = new Student(55, "Baron");
            Student s6 = new Student(98, "Becky");
            Student s7 = new Student(90, "Ben");

            List<Student> students = new ArrayList<>();
            students.add(s1);
            students.add(s2);
            students.add(s3);
            students.add(s4);
            students.add(s5);
            students.add(s6);
            students.add(s7);

    System.out.println("Minimum score student is :");
    System.out.println(getMinScoreSudent(students));

    System.out.println("\nMaximum score student is :");
    System.out.println(getMaxScoreSudent(students));

    System.out.println("\nAll Sudents :");
    printStudentsInConsole(students);
}

public static Student getMinScoreSudent(List<Student> students) {
    Collections.sort(students, Comparator.comparing(Student::getScore));
    return students.get(0);
}

public static Student getMaxScoreSudent(List<Student> students) {
    Collections.sort(students, Comparator.comparing(Student::getScore).reversed());
    return students.get(0);
}

public static void printStudentsInConsole(List<Student> students) {
    Collections.sort(students, Comparator.comparing(Student::getScore));
    students.stream().forEach(student -> System.out.println(student));
}

Это печатает ниже сообщение в консоли.

Minimum score student is :
Student [score=20, name=Beni]

Maximum score student is :
Student [score=98, name=Becky]

All Sudents :
Student [score=20, name=Beni]
Student [score=55, name=Baron]
Student [score=67, name=Billy]
Student [score=86, name=Bobbi]
Student [score=90, name=Barbara]
Student [score=90, name=Ben]
Student [score=98, name=Becky]
0 голосов
/ 10 ноября 2018

Вы можете хранить как максимальное значение, так и его индекс.

int index = 0;
int max = scores[0];
for (int i = 1; i < scores.length; i++) {
    if (scores[i] > max) {
        index = i;
        max = scores[i];
    }
}
System.out.printf("Max Name: %s Max Score: %s", sNames[index], max);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...