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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2016, 20:08   #1
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию ЯП Java. ArrayList. Определение самой длинной строки и вывод её или всех строк, если их несколько

Код:
package com.*

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;

/* Самая длинная строка
1. Создай список строк.
2. Считай с клавиатуры 5 строк и добавь в список.
3. Используя цикл, найди самую длинную строку в списке.
4. Выведи найденную строку на экран.
5. Если таких строк несколько, выведи каждую с новой строки.
*/
public class Solution
{
    public static void main(String[] args) throws Exception
    {
        //напишите тут ваш код
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        ArrayList<String> list1 = new ArrayList<String>();
        ArrayList<String> list2 = new ArrayList<String>();

        for (int i = 0; i < 5 ; i++)
        {
            String s = reader.readLine();
            list1.add(i,s);
        }
        int n =0;
        String max=list1.get(0);
        for (int i = 0; i <list1.size() ; i++)
        {
            String a = list1.get(i);
            if (max.length() <= a.length())
            {
                max = a;
                list2.set(n,a);
                n=n+1;
            }
        }

        if (n >= 2)
        {

            for (int i = 0; i <n ; i++)
            {
                System.out.println(list2.get(i));
            }
        }
        else System.out.println(max);
    }
}
nevender вне форума Ответить с цитированием
Старый 19.02.2016, 20:18   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И что? Вопрос-то в чем?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.02.2016, 20:41   #3
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию

Программа запускается, но после введения значений массива выдает ошибку. С названием пакета все нормально, это здесь я отредактировал
nevender вне форума Ответить с цитированием
Старый 19.02.2016, 20:43   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Какую ошибку?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 19.02.2016, 20:46   #5
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию

1
2
3
4
5
Exception in thread "main" java.lang.IndexOutOfBoundsException : Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(Arra yList.java:653)
at java.util.ArrayList.set(ArrayList.j ava:444)
at com.javarush.test.level07.lesson06. task02.Solution.main(Solution.java: 36)
at sun.reflect.NativeMethodAccessorImp l.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImp l.invoke(NativeMethodAccessorImpl.j ava:62)
at sun.reflect.DelegatingMethodAccesso rImpl.invoke(DelegatingMethodAccess orImpl.java:43)
at java.lang.reflect.Method.invoke(Met hod.java:497)
at com.intellij.rt.execution.applicati on.AppMain.main(AppMain.java:144)

Process finished with exit code 1
nevender вне форума Ответить с цитированием
Старый 19.02.2016, 20:58   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну смотрите где вы обращаетесь к несуществующему индексу в массиве.

По идее должно было и номер строки написать или выделить ее если в IDE запускали.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.02.2016, 06:42   #7
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Ну у вас же даже номер строки есть. Смотрим описание функции
Код:
public E set(int index,
    E element)
Replaces the element at the specified position in this list with the specified element.
Specified by:
set in interface List<E>
Overrides:
set in class AbstractList<E>
Parameters:
index - index of the element to replace
element - element to be stored at the specified position
Returns:
the element previously at the specified position
Throws:
IndexOutOfBoundsException - if the index is out of range (index < 0 || index >= size())
А теперь вопрос: у вас в листе нет ниодного элемента вы что собрались заменять?
p51x вне форума Ответить с цитированием
Старый 20.02.2016, 21:49   #8
nevender
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 59
По умолчанию

Alex11223, где обращаюсь к несуществующему индексу??

p51x, почему ни одного? Я же ввожу данные. Они что не сохраняются? Должны же.
Я абсолютно согласен с Вашей подписью, но дайте пжл намек, данных Вами сведений не дает мне достаточной информации.

Последний раз редактировалось nevender; 20.02.2016 в 21:52.
nevender вне форума Ответить с цитированием
Старый 21.02.2016, 02:42   #9
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Вы вводите в list1, а заменяете в list2. Программа их сама никуда не переносит.
p51x вне форума Ответить с цитированием
Старый 21.02.2016, 08:04   #10
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

Попытался решать Вашу задачу....
Правда... Ввод не реализовывал, но с этим проблем быть не должно.
Небольшой совет... Избавляйтесь от этой привычки именовать переменные n, k, m.... Не удивительно, понять где что трудно
P.S. Я сам не идеал.... Иногда как назову так назову

Код:
import java.util.List;
import java.util.ArrayList;

public class Solution {
  	public static void main(String[] args) {
  		List<String> inputList = new ArrayList<>();
    	        List<String> outputList = new ArrayList<>();
    
    	        inputList.add("Hello");
    	        inputList.add("World");
    	        inputList.add("inputList");
    	        inputList.add("outputLis");
    	        inputList.add("List");
      	        inputList.add("outputArr");
    	
    	        out(inputList, "Input Array: ");
    
    	        outputList = findWords(inputList);
    	
    	        out(outputList, "Result Array: ");
  	}
  
  	private static void out(final List<String> list, final String message) {
      	        System.out.println(message);
    	        for(String value : list) {
    		         System.out.println(value);
    	        }
  	}
  
  	private static List<String> findWords(final List<String> list) {
      	        List<String> resultList = new ArrayList<>();

      	        int lengthResult = 0;
      
      	        for(String value : list) {
          	         if(value.length() >= lengthResult) {
              	                   if(value.length() != lengthResult) {
              		                   resultList.clear();	
              		                   lengthResult = value.length();
              	                   }
              	         resultList.add(value);             	
                         } 
                }      
      	        return resultList;
  	}
}
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 21.02.2016 в 09:09.
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить длину самой длинной подстроки(СИ) morclab Помощь студентам 4 25.02.2015 15:00
Выровнять слова в строках по ширине самой длинной строки роло Помощь студентам 1 18.02.2013 20:53
Выровнять слова в строках по ширине самой длинной строки регинa Помощь студентам 2 08.01.2013 19:42
Нахождение самой длинной последовательности ARV.net C# (си шарп) 7 03.11.2012 13:06
Порядковый номер самой длинной строки в файле tshen Помощь студентам 5 10.06.2010 14:44