Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Java] ребуется составить программу, которая реализует вв


Автор: mycodeurnightmare 27.10.2014, 21:09
Доброго времени суток, есть вот такое задание.
Каждая строка таблицы содержит следующую информацию : ФИО выпускника, количество дипломов, название образовательного учреждения, год окончания.
Ко всему этому, каждая строка должна быть представлена в виде объекта и нужно переопределить метод toString() для вывода объектов.
И ещё кое-что:
1)определить выпускника с максимальным количеством дипломов.
2)определить выпускников заданного года.
Это я вроде бы сделал.
Но преподаватель требует, чтобы каждому диплому соответствовал разный вуз и выводилось это всё в строчку, например:
Vasiliy 2 MGU 2005 MIFI 2012
т.е., сначала имя, потом количество дипломов, а потом учреждение и год окончания.  
Заранее огромное спасибо. 
Вот имеющийся код. 
Код

package lol3.last;

import javax.swing.JOptionPane;


public class Student {
    private String surname;
    private int countdiplom;
    private String institute;
    private int year;
    
    public Student(String surname, int countdiplom, String institute, int year) {
        this.surname = surname;
        this.countdiplom = countdiplom;
        this.institute = institute;
        this.year = year;
    }

    Student(String institute, int year) {
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
    }
    
    public String getSurname() {
        return surname;
    }
    
    public int getCountdiplom() {
        return countdiplom;
    }
    
    public String getInstitute() {
        return institute;
    }
    
    public int getYear() {
        return year;
    }
    
    
    @Override
    public String toString() {
        return "Фамилия: " + getSurname() + " "
                + "Количество дипломов: " + getCountdiplom() + " "
                + "Название ВУЗА: " + getInstitute() + " "
                + "Год выпуска: " + getYear() + " ";
    }
 
}


Код

package lol3.last;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import javax.swing.JOptionPane;

public class Lol3Last {

    /**
     * @param args the command line arguments
     */
     public static void main(String[] args) throws IOException {
        int n;
     
        n=Integer.parseInt(JOptionPane.showInputDialog("Задайте год"));
        ArrayList<Student> students = new ArrayList<Student>();

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

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

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

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

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

            Student student = new Student(surname, countdiplom, institute, year);
            students.add(student);
            System.out.print("Вы хотите добавить нового студента (y-да|n-нет):");
        
        }
        reader.close();
        
           
        
        for (Student st : students) {
            System.out.println(st.toString());
        }
        
            // Выводим выпускников 2011
        System.out.println("Выпускник "+n+" года: ");
        for(int i = 0; i < students.size(); i++){
            if(students.get(i).getYear() == n){
                System.out.println(students.get(i).getSurname());
            }
            }
        
        
        // Ищем студента с самым большим числом дипломов
        int max = students.get(0).getCountdiplom();
        for(int i = 0; i < students.size(); i++){
            if(students.get(i).getCountdiplom() > max){
                max = students.get(i).getCountdiplom();
            }
        }
        
        System.out.println();
        
        // Выводим студентов с самым большим кол-вом дипломов
        System.out.println("Самое большое число дипломов: ");
        int search = max;
        for(int i = 0; i < students.size(); i++){
            if(students.get(i).getCountdiplom() == search){
                System.out.println(students.get(i).getSurname());
            }
        }
    }
  }

        

Автор: LSD 28.10.2014, 15:27
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: justas 31.10.2014, 18:26
Можете попробовать так(минимум изменений и не делал проверок):

Код

package lol3.last;

import java.util.*;

public class Student {

    private final String surname;
    private final Map<Integer, List<String>> diplomas = new HashMap<Integer, List<String>>();

    public Student(String surname, Map<Integer, List<String>> diplomas) {
        this.surname = surname;
        this.diplomas.putAll(diplomas);
    }

    public String getSurname() {
        return surname;
    }

    public int getCountdiplom() {
        return diplomas.values().size();
    }

    public boolean getYear(int year) {
        return diplomas.containsKey(year);
    }

    @Override
    public String toString() {
        return "Фамилия: " + getSurname() + " "
                + "Количество дипломов: " + getCountdiplom() + " "
                + "Дипломы: " + print();
    }

    public String lightPrint() {
        return surname + " " + getCountdiplom() + " " + print();
    }

    private String print() {
        StringBuilder sb = new StringBuilder();
        String sep = " ";
        for(Map.Entry<Integer, List<String>> entry : diplomas.entrySet()) {
            for(String inst: entry.getValue()) {
                sb.append(sep).append(inst).append(sep);
            }
            sb.append(entry.getKey()).append(sep);
        }
        return sb.toString();
    }
}


Код

package lol3.last;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
import javax.swing.JOptionPane;

public class Lol3Last {
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        int n;

        n = Integer.parseInt(JOptionPane.showInputDialog("Задайте год"));
        List<Student> students = new ArrayList<Student>();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Вы хотите добавить нового студента (y-да|n-нет):");
        while (!reader.readLine().equals("n")) {
            System.out.print("Введите ФИО:");
            String surname = reader.readLine();
            System.out.print("Введите количество дипломов:");
            int countdiplom = Integer.parseInt(reader.readLine());
            Map<Integer, List<String>> dimplomas = new HashMap<Integer, List<String>>();
             for (int i = 0; i < countdiplom; i++) {
                    System.out.print("Введите год окончания:");
                    int year = Integer.parseInt(reader.readLine());
                    if(!dimplomas.containsKey(year)) {
                        dimplomas.put(year, new ArrayList<String>());
                    }
                    System.out.print("Введите названия образовательных учреждений:");
                    String institute = reader.readLine();
                    if(!dimplomas.get(year).contains(institute)) {
                        dimplomas.get(year).add(institute);
                    }
             }
            Student student = new Student(surname, dimplomas);
            students.add(student);
            System.out.print("Вы хотите добавить нового студента (y-да|n-нет):");

        }
        reader.close();


        for (Student st : students) {
            System.out.println(st.toString());
            System.out.println(st.lightPrint());
        }

        // Выводим выпускников 2011
        System.out.println("Выпускник " + n + " года: ");
        for (Student student2 : students) {
            if (student2.getYear(n)) {
                System.out.println(student2.getSurname());
            }
        }


        // Ищем студента с самым большим числом дипломов
        int max = students.get(0).getCountdiplom();
        for (Student student1 : students) {
            if (student1.getCountdiplom() > max) {
                max = student1.getCountdiplom();
            }
        }

        System.out.println();

        // Выводим студентов с самым большим кол-вом дипломов
        System.out.println("Самое большое число дипломов: ");
        int search = max;
        for (Student student : students) {
            if (student.getCountdiplom() == search) {
                System.out.println(student.getSurname());
            }
        }
    }
}

Автор: mycodeurnightmare 31.10.2014, 19:00
Как же сильно я Вам благодарен.
Оно работает. 
Спасибо огромное. 

Автор: justas 31.10.2014, 19:18
Только добавте еще фикс на getCountdiplom, а то пропустил.
Код

    public int getCountdiplom() {
        int qty = 0;
        for(List<String> insts: diplomas.values()) {
            qty = qty + insts.size();
        }
        return qty;
    }

Автор: mycodeurnightmare 31.10.2014, 19:22
Ещё раз огромное спасибо.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)