Задачу решил. Но вопрос про вывод с клавиатуры. Есть ли другие варианты, более компактные, чем у меня?
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String a1 = in.readLine();
String b1 = in.readLine();
String c1 = in.readLine();
int a = Integer.parseInt(a1);
int b = Integer.parseInt(b1);
int c = Integer.parseInt(c1);
Aleksei
10 уровень
Естъ ли возможность уменьшить код?
Обсуждается
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Jake Android Developer в Яндекс
28 октября 2019, 13:59
https://www.youtube.com/watch?v=Y2iB_DwdyfM&list=PLAma_mKffTOSUkXp26rgdnC0PicnmnDak&index=7
посмотри видео не пожалеешь
0
Jake Android Developer в Яндекс
28 октября 2019, 13:58
public class Solution {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
int a = scan.nextInt();
int b = scan.nextInt();
int c = scan.nextInt();
if ( a == b || b==c || a==c){
System.out.println("Треугольник существует." );
}
else{
System.out.println("Треугольник не существует." );
}
0
Maks Zhovna
26 октября 2019, 07:29
Можно использовать сканер, тогда и Parse не нужен и все короче выходит.
0
Justinian Judge в Mega City One Master
26 октября 2019, 06:37
А зачем тебе более компактный вариант?
В джаве, компактный часто выступает синонимом слова плохой. А вот компактный в смысле "хороший" практически никогда.
Твой код для данной задаче в самый раз, совместить ввод с клавиатуры и парсинг можно в одну строку, но это будет хуже, и нормальный программист так не напишет в большинстве случаев.
Мухи отдельно, котлеты отдельно.
0
Aleksei
26 октября 2019, 07:30
Я таких нюансов пока не знаю. И подумал так. Если какой-то блок кода можно уменьшить, то лучше это сделать, ведь в реальном программировании кода много и это будет лучше в дальнейшем. 🙂
0
Justinian Judge в Mega City One Master
26 октября 2019, 07:48
Можно сделать вот так:
или даже так:
Можно, но не нужно. На учебных програмках в две строки это может быть не очевидно.
Но в реальных проектах, когда ты такое увидишь примеры "компактного" кода, ты захочешь кому-то по лицу дать.
В джава читабельность кода стоит на первом месте, поскольку она прямо определяет насколько код гибок к изменению и может быть поддержан саппортом. Работоспособность на втором месте. Хорошо читабельную но неработающую программу можно отремонтировать легко. А с работающей, но плохо читабельной программой ничего не сделаешь - только заново переписать и это сумасшедшие убытки для бизнеса в десятки и сотни миллионов долларов. Это цена плохого кода. Я знаю реальные примеры когда даже десятки миллиардов долларов были выброшены в трубу. Понятно что это зона ответственности руководства на таких цифрах, но начинается все с малого.
В связи с этим, в джаве программисты о компактности думаю чуть реже чем никогда.
Поэтому первоначальный вариант, в самый раз, ни добавить, ни отнять. Ну можно разве что в отдельные методы вынести, но меньше код не станет, это уже структурные изменения.
Не нужно обращать внимания, когда на первых 10 уровнях будут задачи, где нужно будет одно и то же по 10-20 раз писать, это исключительно в учебных целях, потом это закончится.
Есть другая штука, дублирование кода, это решается дизайном программы, архитектурой, хелпер методами, но об этом ближе к второму, третьему квесту.
А до тех пор, нужно решать с точки зрения целесообразности, о компактности вообще не думать, этой категорией мыслят те, кто только начали изучать джаву.
У профессионального программиста код будет небольшим, компактным, но он никогда не будет осознанно стремиться к компактности, компактность будет побочным эффектом целесообразности. +1
Justinian Judge в Mega City One Master
26 октября 2019, 07:58
Поэтому, это неверная постановка вопроса.
Верная постановка вопроса:
Целесообразность, лаконичность, оптимальность, вот категории которыми нужно мыслить.
При этом обрати внимание, что твой код в посте, лаконичней более компактных вариантов. То есть лаконичность это почти всегда антоним к избыточности/раздутости/нецелесообразности, но лаконичный код не обязательно компактный. Он просто уместный и понятный. Хорошо структурированный. И чтобы быть понятным, иногда нужно и две строки вместо одной написать.
Поскольку:
лаконичней чем :
Три предложения лучше, читабельней, понятней, структурированней чем одно.
Не количеством предложений - строк оценивают качество текста (кода).
Это ни в коем случае не значит, что можно простые вещи писать программами на 1000 строк, нет, но стремится нужно к оптимальности, целесообразности, структурности, гармоничности, и результат тогда сам по себе будет лаконичным, уместным и занимающее то количество строк, которое нужно. +4
Tatyana Kotova
26 октября 2019, 01:36
int a = Integer.parseInt(in.readLine());
int b = Integer.parseInt(in.readLine());
int c = Integer.parseInt(in.readLine());
+1
Aleksei
26 октября 2019, 01:40
Точно. Спасибо.
0