JavaRush
AI Academy
new
Акция
Университет
Java FullStack
Python FullStack
AI Native Developer
new
Web FullStack
Обучение
Курсы
Задачи
Опросы
Игры
Помощь
График пинков
Стажировка
Сообщество
Пользователи
Форум
Чат
Статьи
Истории успеха
Активности
Отзывы
Подписки
Светлая тема
Вопрос
  • Отзывы
  • О нас
  • CS50
Начать
Начать обучение
Начать обучение
  • Все вопросы
JavaRush/Помощь по Java задачам/Друзья, подскажите, как сделать так, чтобы на выходе была...
Иван Хардиков
22 уровень
  • 06.06.2018
  • 908просмотров
  • 14комментариев

Друзья, подскажите, как сделать так, чтобы на выходе была только одна строка, а не десять?

Вопрос по задаче Минимальное или максимальное
Java Syntax,  7 уровень,  6 лекция
Решен


1. Создай список строк.
2. Добавь в него 10 строчек с клавиатуры.
3. Узнай, какая строка в списке встретится раньше: самая короткая или самая длинная.
Если таких строк несколько, то должны быть учтены самые первые из них.
4. Выведи на экран строку из п.3. Должна быть выведена одна строка.

Требования:
  • Объяви переменную типа список строк и сразу проинициализируй ee.
  • Программа должна считывать 10 строк с клавиатуры и добавлять их в список.
  • Программа должна выводить на экран самую короткую строку, если она была раньше самой длинной.
  • Программа должна выводить на экран самую длинную строку, если она была раньше самой короткой.
  • Должна быть выведена только одна строка.
....
package com.javarush.task.task07.task0712; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Scanner; /* Самые-самые */ public class Solution { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); int minLength = 0; int maxLength = 0; ArrayList<String> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { String s = sc.nextLine(); list.add(s); } for (int i = 0; i < list.size(); i++) { if (list.get(i).length() < minLength) { minLength = list.get(i).length(); i = minLength; } else if (list.get(i).length() > maxLength) { maxLength = list.get(i).length(); i = maxLength; } } if (minLength < maxLength) { System.out.println(list.get(minLength)); } else System.out.println(list.get(maxLength)); } }
0
Комментарии (14)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Bendyug Dmitriy
Уровень 21
14 июня 2018, 10:06
1) 17. int minLength = 0; 29. if (list.get(i).length() < minLength) { Условие никогда не выполнится. Ни одна длина строки в массиве не будет меньше нуля. 2) 17-18. int minLength = 0; int maxLength = 0; 31. i = minLength; 35. i = maxLength; 39-42. if (minLength < maxLength) { System.out.println(list.get(minLength)); } else System.out.println(list.get(maxLength)); В строках 31 и 35 значения minLength и maxLength не меняются, они также остаются нулевыми от чего последнее условие сравнивает 0 с 0. И как нижу уже писали, ты меняешь счётчик цикла на длину (31 и 35). А лучше в данных строках использовать переменные не для обозначения длины, а для обозначения индекса - в самом конце ведь выводишь на экран по индексу (list.get(INDEX)).
0
Kate
Уровень 17
8 июня 2018, 17:50
17: minLength = 0; 27: i = 0 29: if (list.get(0).length() < 0) - ты сравниваешь длины элементов с нулем. Конечно они всегда будут больше.
0
Roman Java Developer Expert
7 июня 2018, 11:02
Ты чуть-чуть перепутал длины с индексами ) Обрати внимание на строку 39. Кроме того, ты изменяешь счетчик цикла (индекс элемента) на его длину (в чем смысл??).
+1
Сергей СудариковJava Developer в Valuetek (Пумб)
7 июня 2018, 10:16
начинай менять со строки 27-44
0
Сергей СудариковJava Developer в Valuetek (Пумб)
7 июня 2018, 10:15
суть программы тут такая , запихни все в 2 цикла, 1 циклом выбираешь 1 элемент из списка , 2м циклом сверяешь все которые есть в списке в начале 1го цикла объяви min, max проверкой цикла запихни туда предварительно можешь сохранить текущее положение слова. к примеру i или j. Или уже после проверки min, max получи индексы и сравни кто раньше.
0
Roman Java Developer Expert
7 июня 2018, 07:19
А что ты сравниваешь в строках 29 и 32 ?
+1
Иван Хардиков
Уровень 22
7 июня 2018, 07:57
Длину строки с размером списка.
0
Иван Хардиков
Уровень 22
7 июня 2018, 08:16
Исправил в блоках if. Теперь выводит верно, но все равно не засчитывается.
0
Roman Java Developer Expert
7 июня 2018, 09:31
Выложи окончательный код.
0
Иван Хардиков
Уровень 22
7 июня 2018, 10:04
Уже.
0
Стас ПасинковSoftware Developer в ZipyMaster
6 июня 2018, 18:46
нуу, не выводить их в цикле :)
0
Иван Хардиков
Уровень 22
6 июня 2018, 21:02
Не могу сообразить, каким образом? Есть еще наводящий совет? Если я выношу переменную s перед циклом, то не могу ввести более одной строки, компилятор сразу же выводит строку на консоль.
0
Стас ПасинковSoftware Developer в ZipyMaster
6 июня 2018, 23:38
я говорил про второй цикл: с 27й по 41ю строку :)
0
Иван Хардиков
Уровень 22
7 июня 2018, 00:09
Мозг ни в какую не хочет понимать. 37 - 40 вынес за пределы цикла, теперь в консоль выводится одна строка, но не то, что нужно. Что за..?
0
Обучение
  • Курсы программирования
  • Регистрация
  • Курс Java
  • Помощь по задачам
  • Цены
Сообщество
  • Пользователи
  • Статьи
  • Форум
  • Чат
  • Истории успеха
  • Активности
Компания
  • О нас
  • Контакты
  • Отзывы
  • FAQ
  • Поддержка
JavaRushJavaRush — это интерактивный онлайн-курс по изучению Java-программирования c нуля. Он содержит 1200 практических задач с проверкой решения в один клик, необходимый минимум теории по основам Java и мотивирующие фишки, которые помогут пройти курс до конца: игры, опросы, интересные проекты и статьи об эффективном обучении и карьере Java‑девелопера.
Подписывайтесь
Язык интерфейса
Русский
English Українська
"Программистами не рождаются" © 2026 JavaRush
MastercardVisa
"Программистами не рождаются" © 2026 JavaRush