Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
30 / 0 / 0
Регистрация: 27.02.2017
Сообщений: 10
1

Как рационально подойти к сокращению и упрощению кода?

08.03.2017, 17:07. Просмотров 998. Ответов 6
Метки нет (Все метки)


Добрый день!

Прошу подсказать новичку как рационально подойти к сокращению и упрощению (приведение к компактности) в данном ниже коде? Вообще возможно ли это здесь? Быть может, я и так сделал всего по минимуму. Однако, шансы, как мне кажется, на это крайне малы.

Подозреваю, что выглядит очень стрёмно всё это, но прошу без насмешек

Если у кого глаза не вытекут от сего творения, то вот суть программы:
"Определение ближайшей сравнительной величины до ориентировочной." Запрос на ввод пользователем ориентира и величин, которые нужно сравнить. Затем, определить ближайшую из них до ориентира.

Хотелось бы научиться рационально реализовывать подобные простейшие программы. Пока получается только этот ужас бездны.


Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package mypackage;
 
import java.util.Scanner;
 
public class Main
{
    public static void main(String[] args) {
        System.out.println("Определение ближайшей сравнительной величины до ориентировочной.");
        System.out.println("Можно использовать только вещественные знакопеременные числа.");
        System.out.print("Ориентировочная величина: ");
        Scanner oriental = new Scanner(System.in);
        if (oriental.hasNextInt())
        {
            final int orientalint = oriental.nextInt();
 
            System.out.print("Величина для переменной a: ");
            Scanner entereda = new Scanner(System.in);
            if (entereda.hasNextInt())
            {
                int a = entereda.nextInt();
                int resulta = Math.abs(a - orientalint);
 
                System.out.print("Величина для переменной b: ");
                Scanner enteredb = new Scanner(System.in);
                if (enteredb.hasNextInt())
                {
                    int b = enteredb.nextInt();
                    int resultb = Math.abs(b - orientalint);
 
                    System.out.print("Величина для переменной c: ");
                    Scanner enteredc = new Scanner(System.in);
                    if (enteredc.hasNextInt())
                    {
                        int c = enteredc.nextInt();
                        int resultc = Math.abs(c - orientalint);
 
                        System.out.print("Величина для переменной d: ");
                        Scanner enteredd = new Scanner(System.in);
                        if (enteredd.hasNextInt())
                        {
                            int d = enteredd.nextInt();
                            int resultd = Math.abs(d - orientalint);
 
                            int resultab = Math.min(resulta, resultb);
                            int resultcd = Math.min(resultc, resultd);
                            int resultabcd = Math.min(resultab, resultcd);
 
                            if (resultab == resulta && resultabcd == resultab)
                                System.out.println("Ближайшее значение к ориентировочному ("+orientalint+") в переменной a: "+a);
                            else if (resultab == resultb && resultabcd == resultab)
                                System.out.println("Ближайшее значение к ориентировочному ("+orientalint+") в переменной b: "+b);
                            else if (resultab == resultc && resultabcd == resultcd)
                                if (resultcd == resultc)
                                    System.out.println("Ближайшее значение к ориентировочному ("+orientalint+") в переменной c: "+c);
                            else
                                System.out.println("Ближайшее значение к ориентировочному ("+orientalint+") в переменной d: "+d);
                            else
                                System.out.println("Два или более значений равноудалены от ориентировочного.");
                        }
                    }
                }
            }
        }
        else
        {
            System.out.println("ОШИБКА! Введенные данные не являются вещественным числом!");
        }
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2017, 17:07
Ответы с готовыми решениями:

Советы по сокращению кода
Я только начал изучать c++ скажите пожалуйста, есть ли в коде лишние движения? Функция кода...

Как подойти к созданию дизайна и разметки до написания кода ?
Собственно, какие этапы предшествуют ?

Советы по упрощению кода. Количество слов в строке
Доброго времени суток! Подскажите, пожалуйста, пути упрощения сией простой программки на подсчет...

Как рационально применять if
когда идет несколько условий подряд зависимых от первого условия (если первое исполнится другие не...

__________________
Помогаю в написании студенческих работ здесь.
Записывайтесь на профессиональные курсы Java-разработчиков
6
2973 / 2515 / 778
Регистрация: 05.07.2013
Сообщений: 12,178
08.03.2017, 17:24 2
сканнеров слишком мало, нужно добавить больше.
а теперь измени этот код так, чтобы пользователь вводил 50 величин.
1
3279 / 2341 / 425
Регистрация: 28.04.2012
Сообщений: 7,830
08.03.2017, 17:40 3
Цитата Сообщение от xoraxax Посмотреть сообщение
сканнеров слишком мало, нужно добавить больше.

Не по теме:

Пора заводить свои плашки, по аналоги с лурком =)

2
$ su
1603 / 518 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
09.03.2017, 01:21 4

Не по теме:

Цитата Сообщение от korvin_ Посмотреть сообщение
Пора заводить свои плашки, по аналоги с лурком =)
И тут все заверте....



Добавлено через 1 минуту
По теме считывайте все одним сканером, зачем на каждый ввод вы создаете новый экземпляр? Если все можно сделать одним?
2
30 / 0 / 0
Регистрация: 27.02.2017
Сообщений: 10
10.03.2017, 14:43  [ТС] 5
ntlinuxnt, спасибо за единственный разумный ответ. Вопрос в том, как считывать сразу все одним?
Могли бы простой пример привести с 2мя-3мя запросами, пожалуйста?

del
 Комментарий модератора 
Общение в таком ключе - верная дорога в бан.
0
$ su
1603 / 518 / 97
Регистрация: 18.11.2010
Сообщений: 2,807
Записей в блоге: 2
10.03.2017, 15:04 6
Лучший ответ Сообщение было отмечено timdeygun как решение

Решение

Цитата Сообщение от timdeygun Посмотреть сообщение
с 2мя-3мя запросами, пожалуйста?
Не вводится имя в консоль второй раз
Недавно помогал человеку, у него в коде вы увидите как применить один сканер несколько раз.
1
30 / 0 / 0
Регистрация: 27.02.2017
Сообщений: 10
10.03.2017, 15:40  [ТС] 7
ntlinuxnt, Благодарю Вас за помощь. Разобрался, понял )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.03.2017, 15:40

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как рационально обрабатывать большие V mp3?
Здравствуйте. Делаю музыкальный сайт, и как вы понимаете он не возможен без музыки. Подскажите как...

Как использовать оперативную память рационально?
Здравствуйте. Есть код программы, где я сравниваю 2 текстовых файла, и если n-строка в первом не...

Как подойти к решению задачи
Кода и готового решения не прошу!!! Есть задачка грубо говоря звучит так: есть аудитория в...

как подойти к решению задачи?
привет всем! очередная проблема, но на этот раз даже не знаю с какой стороны подкрасться к ее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.