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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2014, 22:28   #1
_lev
Пользователь
 
Регистрация: 16.06.2014
Сообщений: 11
По умолчанию найти минимальную и среднюю зарплату

как найти минимальную суммарную и минимальную среднюю зарплаты?
Код:
package zadanie_2;
import java.io.IOException;

public class Zadanie_2 {
    public static void main(String[] args) {        
        try
        {
            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());
            String fio[] = new String[n];
            int kol[] = new int[n];
            int spisok_zp[][] = new int[n][];
            for(int i=0; i<n; i++) 
            {
                System.out.println("\nВведите ФИО:");
                str = new StringBuffer();
                while( (ch = (char)System.in.read()) != '\n')
                    str.append(ch);
                fio[i] = new String(str.toString());
                System.out.println("Введите кол-во рабочих мест:");
                str = new StringBuffer();
                while( (ch = (char)System.in.read()) != '\n')
                    str.append(ch);
                kol[i] = Integer.parseInt(str.toString());
                int m = kol[i];
                spisok_zp[i] = new int[m];
                for(int j=0; j<m; j++)
                {
                    System.out.println("Введите размер " + (j+1) + "-й зарплаты: ");
                    str = new StringBuffer();
                    while( (ch = (char)System.in.read()) != '\n')
                        str.append(ch);
                    spisok_zp[i][j] = Integer.parseInt(str.toString());
                }
            }
            System.out.println("#  ФИО     Кол-во раб. мест.   Список зарплат");
            for(int i=0; i<n; i++)
            {
                System.out.print("\n" + (i+1) + "  " + fio[i] + "            " + kol[i] + "            ");
                for(int j=0; j<kol[i]; j++)
                    System.out.print(spisok_zp[i][j] + "  ");
            }
            System.out.println();
            for(int i=0; i<n; i++)
            {
                int sum = 0;
                for(int j=0; j<kol[i]; j++)
                    sum += spisok_zp[i][j];
                System.out.println("Сумма в " + (i+1) + "-й строке " + sum);
            }
        }
        catch(IOException e)
        {
            System.out.println(e.toString());
        }
    }
}
_lev вне форума Ответить с цитированием
Старый 23.09.2014, 11:18   #2
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Вы извините меня конечно, но ваш код выглядит ужасно. Лучше опишите задание полностью.
По вашему коду у меня сложилось впечатление, что у сотрудника может быть хоть сколько рабочих мест и каждое рабочее место оплачивается отдельно.
А вообще я бы вам порекомендовал для начала хотя бы прочитать первый том "Java. Библиотека профессионала." авторов: Хорстманн К., Корнелл Г.
ultimatet41 вне форума Ответить с цитированием
Старый 23.09.2014, 18:45   #3
_lev
Пользователь
 
Регистрация: 16.06.2014
Сообщений: 11
По умолчанию

Цитата:
Сообщение от ultimatet41 Посмотреть сообщение
По вашему коду у меня сложилось впечатление, что у сотрудника может быть хоть сколько рабочих мест и каждое рабочее место оплачивается отдельно.
да именно! у сотрудника может быть хоть 100 тыс рабочих мест и каждое рабочее место будет оплачиваться отдельно. И на выводе будет выводиться весь список зарплат. так задумано задание
_lev вне форума Ответить с цитированием
Старый 23.09.2014, 18:55   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Я добавлю: прежде чем вывалить километр бажного кода в паблик, нашпиговывай его по максимуму комментами. Его ж живые люди читать будут, а не компиляторы, ёмаё! Я прав или чо?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 23.09.2014, 20:28   #5
_lev
Пользователь
 
Регистрация: 16.06.2014
Сообщений: 11
По умолчанию

я новичок в джаве и мне кажется что тут все элементарно понятно.
_lev вне форума Ответить с цитированием
Старый 24.09.2014, 12:30   #6
ultimatet41
Форумчанин
 
Аватар для ultimatet41
 
Регистрация: 08.04.2012
Сообщений: 104
По умолчанию

Если я вас правильно понял то это то, что Вам нужно.
Код:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

/**
 * Created by ultimatet41 on 24.09.14.
 */
public class Work {
    private static ArrayList<Employee> employees = new ArrayList<Employee>();

    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("Для начала ввод нажмите Enter");
        String end = null;
        while (!(end = reader.readLine()).equals("end")) {
            System.out.print("Введите ФИО: ");
            String fio = reader.readLine();
            System.out.print("Введите кол-во рабочих мест: ");
            int workplace = Integer.parseInt(reader.readLine());
            Employee employee = new Employee(fio, workplace, reader);
            employees.add(employee);
            System.out.print("Для окончания ввода введите end: ");
        }
        printEmploees();
        System.out.println();
        System.out.println("минимальное суммарное: " + getMinSum());
        System.out.println("минимальное среднее: " + getMean());
        reader.close();
    }

    public static void printEmploees() {
        String n = "#";
        String fio = "ФИО";
        String workplaces = "Кол-во раб. мест. ";
        String salary = "Список зарплат";
        for (int i = n.length(); i <=String.valueOf(employees.size()).length(); i++) {
            n += " ";
        }

        for (int i = fio.length(); i <= getMaxlenghtFio(); i++) {
            fio = fio + " ";
        }

        System.out.println(n + fio + workplaces + salary);

        for (int i = 0; i < employees.size(); i++) {
            String em = String.valueOf(i + 1);
            String fioem = employees.get(i).getFio();
            String wem = String.valueOf(employees.get(i).getWorkplace());
            for (int s = em.length(); s < n.length(); s++) {
                em += " ";
            }
            for (int s = fioem.length(); s < fio.length(); s++) {
                fioem += " ";
            }
            for (int s = wem.length(); s < workplaces.length(); s++) {
                wem += " ";
            }

            String result = em + fioem + wem + " ";
            double salaryem[] = employees.get(i).getSalary();
            System.out.println(result + salaryem[0]);
            for (int s = 1; s < salaryem.length; s++) {
                for (int g = 0; g < result.length(); g++) {
                    System.out.print(" ");
                }
                System.out.println(salaryem[s]);
            }
        }

    }

    public static int getMaxlenghtFio(){
        int length = 0;
        for (Employee employee : employees) {
            if (length < employee.getFio().length()) {
                length = employee.getFio().length();
            }
        }
        return length;
    }

    public static double getMinSum() {
        double sum = employees.get(0).getSumSalary();
        for (Employee employee : employees) {
            if (employee.getSumSalary() < sum) {
                sum = employee.getSumSalary();
            }
        }
        return sum;
    }

    public static double getMean() {
        double mean = employees.get(0).getSumSalary() / employees.get(0).getWorkplace();
        for (Employee employee : employees) {
            double temp = employee.getSumSalary() / employee.getWorkplace();
            if (temp < mean) {
                mean = temp;
            }
        }
        return mean;
    }


    public static class Employee {
        private String fio;
        private int workplace;
        private double salary[];
        private BufferedReader reader;

        public Employee(String fio, int workplace, BufferedReader reader) throws IOException {
            this.fio = fio;
            this.workplace = workplace;
            salary = new double[workplace];
            this.reader = reader;
            addSalary();
        }

        public String getFio() {
            return fio;
        }

        public int getWorkplace() {
            return workplace;
        }

        public double[] getSalary() {
            return salary;
        }

        public double getSumSalary() {
            double sum = 0;
            for (double d : salary) {
                sum += d;
            }
            return sum;
        }

        private void addSalary() throws IOException {
            for (int i = 0; i < salary.length; i++) {
                System.out.print("Введите размер " + (i + 1) + "-й зарплаты: ");
                salary[i] = Double.parseDouble(reader.readLine());
            }
        }

    }
}
ultimatet41 вне форума Ответить с цитированием
Ответ


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

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

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