Забудьте возиться с main
аргументами - и нет необходимости отслеживать maxLength. String.length () уже делает это за вас.
Не забудьте закрыть сканер. : ~ p
Редактировать: Если вы хотите распечатать связи, вы можете сохранить каждое слово в HashMap
длинах сопоставления -> слова.
Например:
3 -> "cat", "dog"
4 -> "door", "tree", "frog"
Теперь мы можем найти самый большой ключ (4) и вернуть список этих слов.
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Enter a list:");
ArrayList<String> list = new ArrayList<String>();
while(!in.hasNext("done") && !in.hasNext("Done")) {
list.add(in.next());
}
String longestString = getLongestString(list);
System.out.format("longest string: '%s'\n", longestString);
in.close();
}
public static String getLongestString(ArrayList<String> array) {
Map<Integer, List<String>> lengths = new HashMap<Integer, List<String>>();
// Put each word in the HashMap, mapped by its length
for (String s : array) {
if (lengths.get(s.length()) == null) {
lengths.put(s.length(), new ArrayList<String>());
lengths.get(s.length()).add(s);
} else {
lengths.get(s.length()).add(s);
}
}
// Store the entry with the longest length
Map.Entry<Integer, List<String>> maxEntry = null;
for (Map.Entry<Integer, List<String>> entry : lengths.entrySet()) {
if (maxEntry == null || entry.getKey() > maxEntry.getKey()) {
maxEntry = entry;
}
}
return maxEntry.getValue().toString().replace("[","").replace("]", "");
}
}