Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Java] ребуется составить программу, которая реализует вв 
V
    Опции темы
mycodeurnightmare
Дата 27.10.2014, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.10.2014

Репутация: нет
Всего: нет



Доброго времени суток, есть вот такое задание.
Каждая строка таблицы содержит следующую информацию : ФИО выпускника, количество дипломов, название образовательного учреждения, год окончания.
Ко всему этому, каждая строка должна быть представлена в виде объекта и нужно переопределить метод 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());
            }
        }
    }
  }

        

PM MAIL   Вверх
LSD
Дата 28.10.2014, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



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

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
justas
Дата 31.10.2014, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 13
Регистрация: 21.12.2009

Репутация: нет
Всего: нет



Можете попробовать так(минимум изменений и не делал проверок):

Код

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());
            }
        }
    }
}


Это сообщение отредактировал(а) justas - 31.10.2014, 18:56
PM MAIL   Вверх
mycodeurnightmare
Дата 31.10.2014, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.10.2014

Репутация: нет
Всего: нет



Как же сильно я Вам благодарен.
Оно работает. 
Спасибо огромное. 
PM MAIL   Вверх
justas
Дата 31.10.2014, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 13
Регистрация: 21.12.2009

Репутация: нет
Всего: нет



Только добавте еще фикс на getCountdiplom, а то пропустил.
Код

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

PM MAIL   Вверх
mycodeurnightmare
Дата 31.10.2014, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 26.10.2014

Репутация: нет
Всего: нет



Ещё раз огромное спасибо.  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0954 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.