Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Задача на JAVA. Къде греша?

Featured Replies


Здравейте на всички.

Нуждая се от помощ за тази задача:

 

 

JAVA.png

До момента написах следния код:

public class Students {
    private String specialty;
    private double averagesuccess;

    public Students(String specialty, double averagesuccess) {
        this.specialty = specialty;
        this.averagesuccess = averagesuccess;
    }

    public double getAverageSuccess() {
        return averagesuccess;
    }

    public String getSpecialty() {
        return specialty;
    }

    public void setAverageSuccess(double averagesuccess) {
        this.averagesuccess = averagesuccess;
    }

    public void setSpecialty(String specialty) {
        this.specialty = specialty;
    }
}

 

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.Scanner;

public class StudentsMain {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        HashMap<Integer, Students> map = new HashMap<Integer, Students>();
        int selection = 0;
        while (selection != 6) {
            System.out.println("SELECT: ");
            System.out.println("1.Add Student");
            System.out.println("2.Print everybody Student");
            System.out.println("3.Change Average Success");
            System.out.println("4.Deletes Student");
            System.out.println("5.Print the specialties of which there are students");
            selection = in.nextInt();

            switch (selection) {
            case 1:
                addStudent(map, in);
                break;
            case 2:
                print(map);
                break;
            case 3:
                changeAverageSuccess(map, in);
                break;
            case 4:
                deletesStudent(map, in);
                break;
            case 5:
                printEverybodySpecialty(map, in);
                break;
            }
        }
    }

    // Добавя информация за нов студент:
    public static void addStudent(HashMap<Integer, Students> map, Scanner in) {
        in.nextLine();
        Integer facultyNumber = in.nextInt();
        while (!facultyNumber.equals(6)) {
            if (!map.containsKey(facultyNumber)) {
                String specialty = in.nextLine();
                double averagesuccess = in.nextDouble();
                in.nextLine();
                Students s = new Students(specialty, averagesuccess);
                map.put(facultyNumber, s);
                facultyNumber = in.nextInt();
            } else {
                facultyNumber = in.nextInt();
            }
        }
    }

    // Печата всички студенти (факултетен номер, специалност, среден успех):
    public static void print(HashMap<Integer, Students> map) {
        Iterator<Entry<Integer, Students>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Entry<Integer, Students> item = it.next();
            Students s = item.getValue();
            System.out.printf("%d - %s%n", item.getKey(), s.getSpecialty(), s.getAverageSuccess());
        }
    }

    // По даден факултетен номер променя средният успех на студента:
    public static void changeAverageSuccess(HashMap<Integer, Students> map, Scanner in) {
        in.nextLine();
        System.out.print("Enter the Faculty Number: ");
        Integer facultyNumber = in.nextInt();
        if (map.containsKey(facultyNumber)) {
            System.out.print("specialty: ");
            String specialty = in.nextLine();
            System.out.print("averagesuccess: ");
            double averagesuccess = in.nextDouble();
            Students s = new Students(specialty, averagesuccess);
            map.put(facultyNumber, s);
        }
    }

    // По даден факултетен номер изтрива информацията за студента:
    public static void deletesStudent(HashMap<Integer, Students> map, Scanner in) {
        in.nextLine();
        System.out.print("Enter the Faculty Number: ");
        Integer facultyNumber = in.nextInt();
        if (map.containsKey(facultyNumber)) {
            map.remove(facultyNumber);
        }
    }

    // Извежда специалностите, от които има студенти:
    public static void printEverybodySpecialty(HashMap<Integer, Students> map, Scanner in) {
        in.nextLine();
        System.out.print("Specialty: ");
        String specialty = in.nextLine();
        Iterator<Entry<Integer, Students>> it = map.entrySet().iterator();
        while (it.hasNext()) {
            Entry<Integer, Students> item = it.next();
            Students s = item.getValue();
            if (s.getSpecialty().equals(specialty)) {
                System.out.printf("%s %n", item.getKey());
            }
        }
    }
}

 

Със сигурност има грешки в кода. Ще се радвам ако ми покажете как да ги поправя.

 

Разрешен от Raze

  • Решение

Нещо такова е според мен:

import java.util.*;
import java.util.Map.Entry;

public class Main {
    private static List<Student> students = new ArrayList<Student>();
    private static Scanner in = new Scanner(System.in);

    public static void main(String[] args) {
        int selection = 0;
        boolean error = false;
        while (!error) {
            System.out.println("SELECT: ");
            System.out.println("1.Add Student");
            System.out.println("2.Print all students");
            System.out.println("3.Change Average Grades for student");
            System.out.println("4.Deletes Student");
            System.out.println("5.Print the specialties for added students");
            selection = in.nextInt();

            switch (selection) {
                case 1:
                    addStudent();
                    break;
                case 2:
                    printStudents();
                    break;
                case 3:
                    changeAverageGrade();
                    break;
                case 4:
                    deletesStudent();
                    break;
                case 5:
                    printSpecialties();
                    break;
                default:
                    System.out.println("Wrong selection!");
                    error = true;
                    break;
            }
        }
    }

    // Добавя информация за нов студент:
    public static void addStudent() {
        Student student = new Student();
        System.out.print("Enter faculty number:");
        int facultyNumber = in.nextInt();
        student.setFacultyNumber(facultyNumber);

        System.out.print("Enter specialty:");
        String specialty = in.next();
        student.setSpecialty(specialty);

        System.out.print("Enter average grade:");
        double averageGrades = in.nextDouble();
        student.setAverageGrades(averageGrades);
        students.add(student);
        System.out.println("Student added.");
    }

    // Печата всички студенти (факултетен номер, специалност, среден успех):
    public static void printStudents() {
        for (Student s: students) {
            System.out.print("Student: ");
            System.out.println(s.toString());
            System.out.println();
        }
    }

    // По даден факултетен номер променя средният успех на студента:
    public static void changeAverageGrade() {
        System.out.print("Enter Faculty Number: ");
        int facultyNumber = in.nextInt();
        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getFacultyNumber() == facultyNumber) {
                System.out.println("Enter new average grades: ");
                double averageGrades = in.nextDouble();
                Student student = new Student();
                student = students.get(i);
                student.setAverageGrades(averageGrades);
                students.set(i, student);
                System.out.println("Average grades changed.");
                break;
            }
        }
    }

    // По даден факултетен номер изтрива информацията за студента:
    public static void deletesStudent() {
        System.out.print("Enter Faculty Number: ");
        int facultyNumber = in.nextInt();
        for (Student s : students) {
            if (s.getFacultyNumber() == facultyNumber) {
                students.remove(s);
                System.out.println("Student deleted.");
                break;
            }
        }
    }

    // Извежда специалностите, от които има студенти:
    public static void printSpecialties() {
        for (Student s : students) {
            System.out.print("Specialties: " + s.getSpecialty());
        }
    }
}

Последното за извеждане на специалностите не го разбрах какво точно значи 'ако има студенти' - то си ги има или няма данни, извеждам всички специалности.

Ами....не се бях събудил още :) Метода става така:

Цитат
    // По даден факултетен номер променя средният успех на студента:
    public static void changeAverageGrade() {
        System.out.print("Enter Faculty Number: ");
        int facultyNumber = in.nextInt();
        for (int i = 0; i < students.size(); i++) {
            if (students.get(i).getFacultyNumber() == facultyNumber) {
                System.out.println("Enter new average grades: ");
                double averageGrades = in.nextDouble();
                students.get(i).setAverageGrades(averageGrades);
                System.out.println("Average grades changed.");
                break;
            }
        }
    }

 

 

Аз не виждам много грешки или нещо подобно, но най-добре си направи unit тестове. Или ако не знаеш как, то най-малкото в notepad за всеки метод си направи тестове с крайни ситуации и след това виж дали в конзолата резултата е същия.

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.