Интелидж не пропускает строчку сравнения if (maxLength = strings.get(b).length())
package com.javarush.task.task07.task0708;
import sun.security.util.Length;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/*
Самая длинная строка
*/
public class Solution {
private static List<String> strings;
public static void main(String[] args) throws Exception {
//напишите тут ваш код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> strings = new ArrayList<String>();
int maxLength = 0;
for (int i = 0; i < 5; i++) {
String s = reader.readLine();
strings.add(s);
for (int a = 0; a < strings.size(); a++) {
if (maxLength < strings.get(i).length()) {
maxLength = strings.get(i).length();
} else { break;}
}
for (int b = 0; b < strings.size(); b++)
{
if (maxLength = strings.get(b).length()) {
System.out.println(strings.get(b));
}
}
}
}
}
Anastasia Kunitsyna
18 уровень
Помогите, пожалуйста, с корректной записью.
Архивный
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Игорь
15 сентября 2018, 16:46
Просто поставь там еще один оператор '='.
+1
Anastasia Kunitsyna
15 сентября 2018, 18:18
спасибо, теперь не могу пройти валидацию. Говорит, что "Нужно инициализировать существующее поле strings новым ArrayList." и "Программа должна считывать 5 строк с клавиатуры и записывать их в поле strings класса Solution."
0
Павел Корчагин
15 сентября 2018, 13:32
Так правильнее
То есть, все присваивание нужно обернуть в скобки и сравнить, что результат больше нуля.
Эти дополнительные скобки нужны для того, чтобы сначала выполнилось присваивание, а уже затем сравнение (без них работать не будет, т.к у оператора '>' приоритет выше чем у оператора присваивания '=') 0
--------Master
15 сентября 2018, 13:36
Это будет уже вывод всех непустых строк, а подразумевается только вывод строк, длина которых соответствует найденной
0
Павел Корчагин
15 сентября 2018, 13:38
а да? просто я в код особо не вглядывался, тогда
+1
--------Master
15 сентября 2018, 13:29
Так это у тебя не сравнение, а присваивание.
+1
Anastasia Kunitsyna
15 сентября 2018, 18:17
спасибо огромное за помощь, добавила присваивание и немного подправила код, чтобы он работал корректно. Стало норм, но валидацию не могу пройти с комментариями: "Нужно инициализировать существующее поле strings новым ArrayList." и "Программа должна считывать 5 строк с клавиатуры и записывать их в поле strings класса Solution." Эти arraylistы меня угнетают...
public class Solution {
private static List<String> strings;
public static void main(String[] args) throws Exception {
//напишите тут ваш код
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> strings = new ArrayList<String>();
int maxLength = 0;
for (int i = 0; i < 5; i++) {
String s = reader.readLine();
strings.add(s);}
for (int a = 0; a < strings.size(); a++) {
if (maxLength < strings.get(a).length()) {
maxLength = strings.get(a).length();
}
}
for (int b = 0; b < strings.size(); b++)
{
if (maxLength == strings.get(b).length()) {
System.out.println(strings.get(b));
}
}
}
}
0
Игорь
15 сентября 2018, 18:33
Подсказка находиться в самом требовании. Поле strings то уже об]явлено перед методом main. -> private static List<String> strings;. Это ну как я понимаю на примере с примитивными типами: объявляем переменную c именем а типа int и потом присваиваем ей значение.
int a;
a = 7;
Ну как то так) Думаю может поймете о чём идет речь и увидите где у вас ошибка.
+1
Anastasia Kunitsyna
18 сентября 2018, 10:59
:-) 3 дня думала, все-таки подсмотрела решение в интернете. Если честно, не догадалась бы, что лишний arraylist. В любом случае, еще раз спасибо огромное за помощь!
0