Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2020, 23:51   #1
Владос96
Новичок
Джуниор
 
Регистрация: 10.12.2020
Сообщений: 2
Сообщение Объясните код

Прокомментируйте и объясните код. Можно ли этот код сделать намного проще и понятней?

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

Код:
import java.util.Scanner;
import java.util.stream.Stream;
import java.util.Comparator;
public class Main {
    
    public static Scanner scan = new Scanner(System.in);
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int N = scan.nextInt();
        scan.nextLine();
        Person[] arr = fill(N);
        System.out.println(solve(arr));
    }
    
    public static Person[] fill(int N) {
        Person[] arr = new Person[N];
        for(int i = 0; i < arr.length; i++) {
            String str = scan.nextLine();
            arr[i] = new Person(str.split(" ")[0], Integer.valueOf(str.split(" ")[1]));     
        }
        return arr;
    }
    
    public static Person solve(Person[] arr) {
        Stream<Person> stream = Stream.of(arr);
        return stream.max(new PersonComparator()).get();
    }
}
 
class Person {
    
    String name;
    int res;
    
    public Person(String name, int res) 
        {this.name = name;
        this.res = res;}
    
    public String getName()
        {return name;}
 
    public void setName(String name) 
        {this.name = name;}
 
    public void setRes(int res) 
        {this.res = res;}
 
    public int getRes() 
        {return res;}
 
    @Override
    public String toString() {
        return "Самый результативный игрок: " + name + " " + "Результат: " + res;}
    }
    
class PersonComparator implements Comparator<Person> 
    {  
    public int compare(Person a, Person b)
    {return Integer.compare(a.getRes(), b.getRes());}
    }

Последний раз редактировалось Владос96; 11.12.2020 в 02:13.
Владос96 вне форума Ответить с цитированием
Старый 16.12.2020, 22:35   #2
Vladimirhn
Новичок
Джуниор
 
Регистрация: 15.12.2020
Сообщений: 2
По умолчанию

Здравствуйте! Вы пишите:
Цитата:
Прокомментируйте и объясните код.
Но тут же сами всё и объясняете:
Цитата:
Вводится число игроков, имена игроков и их очки, выводится самый результативный игрок.
Код делает именно это))

Цитата:
Можно ли этот код сделать намного проще и понятней?
В целом код хорошо читается. Эту строчку:
Код:
 arr[i] = new Person(str.split(" ")[0], Integer.valueOf(str.split(" ")[1]));
Я бы расписал на несколько, чтобы было более читаемо.

Плюс, совершенно непонятно, почему в этой строке и далее:
Код:
int N = scan.nextInt();
имя локальной переменной состоит из одной заглавной буквы. Так не принято. Не экономьте символы. "Количество" по-английски amount или number, не ленитесь писать полностью.
Vladimirhn вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
прокомментируйте код mocoxogof Помощь студентам 1 14.10.2019 14:02
Прокомментируйте код stenl1 C# (си шарп) 4 18.10.2012 06:52
Прокомментируйте код Nicolas_C++ Общие вопросы C/C++ 4 03.08.2012 13:45
Прокомментируйте код ArmanPrestige Общие вопросы C/C++ 3 10.07.2012 08:21
Прокомментируйте код ZyaT-OK Помощь студентам 11 17.01.2011 21:48