Получение строки в arrayylist и возврат каждого алфавита

У меня есть код, который принимает строковый параметр с функцией nextLine() и передает к некоторой функции, которая возвращает самое длинное слово.

Я хочу знать, можно ли использовать ArrayList, а затем получить доступ к каждому алфавит с индексом, чтобы я мог сказать, сколько слов в строке и сравните их позже, чтобы я мог вернуть самое длинное слово.

Вот как я начал. Он отлично работает с типичным массивом, но для типичного массива требуется предопределенный размер.

package senay;
import java.util.*;

public class Test {

    static String LongestWord(String sen) {
     ArrayList test = new ArrayList();     
     test.add(sen);
     System.out.println(test.substring(0,1));
     \\ it doesn't recongnize substring 
    return sen;
}

public static void main(String args[]) {
    Scanner s = new Scanner(System.in);
    ArrayList testarray= new ArrayList();
    System.out.println(testarray.add("enter sentence"));    
    System.out.println(LongestWord(s.nextLine()));
}
test - это ArrayList, у него нет метода substring.
Arnaud 19.04.2018 10:02

Ваш код также не работает для массива на основе размера. Вы должны получить доступ к элементам по их индексам. например test.get(0).substring

Murat Karagöz 19.04.2018 10:02

ПОДСКАЗКА: начните с String[] words = sen.split("\\s+");, чтобы разбить предложение на слова.

Kevin Anderson 19.04.2018 10:16

Какая струна самая длинная: A или Z?

Grim 19.04.2018 10:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
167
3

Ответы 3

Вы должны написать так:

System.out.println(((String)test.get(0)).substring(0,1)); 

внутри метода LongestWord. Поскольку test.get(0) вернет первый объект в arraylist, который вам нужно привести к типу String, прежде чем вызывать его метод подстроки.

Array

// Split all words from input sentence
String[] array = string.split("\\s+");

// count the number of words
int total = array.length;

Можно получить самый длинный Stringздесь

ArrayList

// Split all words from input sentence
List<String> list = new ArrayList<>(Arrays.asList(string.split("\\s+")));

// count the number of words
int total = list.size();

Можно получить самый длинный Stringздесь

Как упоминалось Бергером в его комментарий и Муратом К. в его комментарий, ваш объект test является экземпляром ArrayList. Но в ArrayList нет метода subString(), поэтому он сообщает вам, что он не распознается.

subString() - это метод String. Итак, вам нужно сначала получить String, прежде чем вызывать для него subString. Строка, которой вы управляете, - это sen, поэтому вы можете вызвать sen.subString(). Или, если вы хотите вызвать его в другой строке, которая хранится в вашем ArrayList, используйте метод get(index), чтобы получить нужную строку и вызвать для нее Substring: test.get(index).subString()


Чтобы улучшить ваш код, ArrayList - это типизированный объект, это означает, что вы можете определить, какой тип объекта он будет содержать. Поэтому вы должны (рекомендуется) определить, что ваш ArrayList будет содержать String. ArrayList<String> test = new ArrayList<String>();

Другие вопросы по теме