Вы можете рассмотреть следующий код
public static Scanner scan;
public static void main(String[] args) {
ArrayList<String> shd = new ArrayList<>();
scan = new Scanner(System.in);
String line = scan.nextLine();
int lines = Integer.parseInt(line);
//Loop scanner for each line
for (int i=0;i<lines;i++){
String currentLine = scan.nextLine().trim().replaceAll("-", "");
String [] words = currentLine.split(" ");
for (String word:words){
shd.add(word);
}
}
System.out.println(shd);
}
Я изменил способ чтения строки int в Scanner, так как nextInt () читает следующий целочисленный токен, а не nextLine, так что кто-то можетвведите 4 3. В этом случае 4 читается как Int, а 3 - как следующая строка. NextLine () прочитает всю строку, а затем проанализирует ее в целое число, чтобы решить эту проблему.
Позже вы зацикливаетесь на столько строк, а код читает строку, обрезает ее, удаляя начальные и конечные пробелыи, наконец, заменяет - на пустую строку.
Затем код разбивает строку на части слов в каждом символе пробела и добавляет каждое слово в ArrayList.
Пример:
4
sali est p-o-s-t try tset luf
set boo ins pick too let sim
set post sho kim lack
flu est test soo tick
[sali, est, post, try, tset, luf, set, boo, ins, pick, too, let, sim, set, post, sho, kim, lack, flu, est, test, soo, tick]