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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2014, 22:37   #1
V-alterman
Пользователь
 
Регистрация: 07.12.2013
Сообщений: 26
По умолчанию Найти в таблице человека с максимальным количеством дипломов

Доброго времени суток.
Есть программа, вводится некая таблица такого вида: ФИО выпускника | количество дипломов | название вуза | год окончания, причём последних двух колонок может быть множество.
А теперь надо найти человека, с наибольшим количеством дипломов, голову ломаю, как это сделать...
И ещё найти всех выпускников заданного года.
Заранее огромное спасибо.
Вот имеющийся код.
Код:
package lol3;
 
import java.io.IOException;
public class Students {
    String fio;
    int diploms;
    String vuz[];
    int god[];
 
 
public void vvod()
    {
        try {
            StringBuffer str=new StringBuffer();
            char ch;
            System.out.println("Введите ФИО выпускника:");
                        str=new StringBuffer();
                        while((ch=(char)System.in.read())!='\n')
                        str.append(ch);
            fio = new String(str.toString());
            
            System.out.println("Введите количество дипломов:");
                        str=new StringBuffer();
                        while((ch=(char)System.in.read())!='\n')
                        str.append(ch);
            int t = Integer.parseInt(str.toString());
            diploms=t;
                        vuz=new String[t];
                        god=new int[t];
            
            for (int i = 0; i<t; i++)
            {
                System.out.println("Введите название учебного учреждения:");
                                str=new StringBuffer();
                                while((ch=(char)System.in.read())!='\n')
                                str.append(ch);
                vuz[i] = new String(str.toString());
                System.out.println("Введите год окончания");
                                str=new StringBuffer();
                                while((ch=(char)System.in.read())!='\n')
                                str.append(ch);
                god[i] = Integer.parseInt(str.toString());
                
            }
        } catch (IOException e)
        {
            System.out.println(e.toString());
        }
    
    }
@Override
    public String toString()
    {
        String res = new String();
        int t = diploms;
        res += fio+" "+t+" ";
        for (int i = 0; i<t; i++)
            res+=vuz[i]+" "+god[i]+" ";
        return res;
    }
}
Код:
package lol3;
 
import java.io.IOException;
 
 
public class Lol3 {
    
 
    public static void main(String[] args) {
        // TODO code application logic here
    try{
            Students data[];
            StringBuffer str=new StringBuffer();
            char ch;
            int n;
            System.out.println("Введите количество выпускников");
            while((ch=(char)System.in.read())!='\n')
                        str.append(ch);
            n=Integer.parseInt(str.toString());
            data = new Students[n];
            for (int i = 0; i  < n; i++)
            {
                data[i]=new Students();
                data[i].vvod();
            }
            System.out.println("");
            System.out.println("Введенная таблица");
            for (int i = 0; i  < n; i++)
            {
                System.out.println(data[i].toString());
            }
V-alterman вне форума Ответить с цитированием
Старый 20.11.2014, 10:52   #2
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Вопрос по поводу "найти человека, с наибольшим количеством дипломов", а если таких студентов несколько?

Класс ввода и поиска
Код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

public class Main {

    public static void main(String[] args) throws IOException {
        ArrayList<Student> students = new ArrayList<Student>();

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Вы хотите добавить нового студента (y-да|n-нет):");

        while (reader.readLine().equals("y")){
            System.out.print("Введите ФИО:");
            String surname = reader.readLine();

            System.out.print("Введите количество дипломов:");
            int countdiplom = Integer.parseInt(reader.readLine());

            ArrayList<Student.University> universities = new ArrayList<Student.University>();

            do {
                System.out.print("Введите названия образовательных учреждений:");
                String name = reader.readLine();

                System.out.print("Введите год окончания:");
                int year = Integer.parseInt(reader.readLine());
                universities.add(new Student.University(name, year));

                System.out.print("Добавить ещё одно образовательное учреждение (y-ДА/n-Нет)?: ");
            }while (reader.readLine().equals("y"));

            Student student = new Student(surname, countdiplom, universities);
            students.add(student);

            System.out.print("Вы хотите добавить нового студента (y-да|n-нет):");
        }

        System.out.print("Студентов какого года выпуска вы хотите найти?: ");
        ArrayList<Student> list = getFromYear(students, Integer.parseInt(reader.readLine()));

        for (Student student : list) {
            System.out.println(student.getFio());
        }


        System.out.println("Выводим на экран всех студентов:");
        for (Student student : students) {
            System.out.println(student.getFio());
            System.out.println(student.getDiplomas());
            for (Student.University university : student.getUniversities()) {
                System.out.println(university.getName() + " " + university.getYear());
            }
        }

        reader.close();
    }

    public static ArrayList<Student> getFromYear(ArrayList<Student> students,int year) {
        ArrayList<Student> list = new ArrayList<Student>();

        for (Student student : students) {
            for (Student.University university : student.getUniversities()) {
                if (year == university.getYear()) {
                    list.add(student);
                    break;
                }
            }
        }
        return list;
    }
}
Класс студента и учреждения
Код:
import java.util.ArrayList;

/**
 * Created by ultimatet41 on 20.11.2014.
 */
public class Student {
    private String fio;
    private int diplomas;
    private ArrayList<University> universities = new ArrayList<University>();

    public Student(String fio, int diplomas, ArrayList<University> universities) {
        this.fio = fio;
        this.diplomas = diplomas;
        this.universities = universities;
    }

    public ArrayList<University> getUniversities() {
        return universities;
    }

    public String getFio() {
        return fio;
    }

    public int getDiplomas() {
        return diplomas;
    }

    public static class University {
        private String name;
        private int year;

        public University(String name, int year) {
            this.name = name;
            this.year = year;
        }

        public String getName() {
            return name;
        }

        public int getYear() {
            return year;
        }
    }
}

Последний раз редактировалось ultimatet41; 20.11.2014 в 10:55.
ultimatet41 вне форума Ответить с цитированием
Старый 20.11.2014, 12:33   #3
V-alterman
Пользователь
 
Регистрация: 07.12.2013
Сообщений: 26
По умолчанию

Спасибо огромное. :3
V-alterman вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти человека танюш Свободное общение 1 02.07.2013 14:33
emu8086: заменить слова с максимальным и минимальным количеством букв «а» smoke-by Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 12.04.2011 22:25
Найти пару точек с максимальным расстоянием между ними. MTIR Помощь студентам 2 11.03.2011 17:30
Найти байт максимальным количестов единиц и байт с максмальным количеством нулей и разность (ассемблер) Beren42 Помощь студентам 0 15.12.2010 20:32
Двумерный массив,номер столбца с максимальным количеством четных элементов nondeadlollipop Помощь студентам 4 01.11.2010 07:32