Как получить и разделить несколько строк строк, введенных по пробелу, а затем добавить их в arrayList в Java? - PullRequest
0 голосов
/ 04 ноября 2019

Как я могу получить несколько строк String и разделить их по пробелам, а затем добавить в ArrayList в Java?

первая строка ввода - это целое число, которое указывает, сколько строк нужно просканировать. Этот ввод будет использоваться для проверки анаграммных слов, а затем для печати антианаграммных слов. слова должны быть просто разделены пробелом и дефис (-) должен быть удален.

Пример ввода:

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
public static Scanner scan;
public static void main(String[] args) {
     scan = new Scanner(System.in);
     int l = scan.nextInt();
     scan.nextLine();
     String[][] arr = new String[][];
     List<String> ss1 = new ArrayList<String>();
     for (int i=0; i<l; i++) {
       arr[i] = scan.nextLine().replaceAll("\\-", "").split("\\ |\\n");
            String[] dd = arr[i];
            String ddd = dd[i];
            ss1.add(ddd);
         }
      } 
      ...
}

Или это:

public static Scanner scan;
public static void main(String[] args) {
    scan = new Scanner(System.in);
    int line = scan.nextInt();
    scan.nextLine();
    String str = "";
    ArrayList<String> shd = new ArrayList<String>();
    for (int i=0; i<line; i++) {
        str += scan.nextLine();
        shd.add(str);
     }
}

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

он должен быть разделен пробелом как ([sali, est, post, ...]

Фактический вывод:

[sali est p-o-s-t try tset luf, 
sali est p-o-s-t try tset lufset boo ins pick too let sim, 
sali est p-o-s-t try tset lufset boo ins pick too let simset post sho kim lack, 
sali est p-o-s-t try tset lufset boo ins pick too let simset post sho kim lackflu est test soo tick]

Ответы [ 2 ]

0 голосов
/ 04 ноября 2019

Вы можете рассмотреть следующий код

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]
0 голосов
/ 04 ноября 2019

Вы имеете в виду?

Scanner io = new Scanner(System.in);
int n = io.nextInt();
io.nextLine();
List<String> list = new ArrayList<>();
for (int i = 1; i <= n; i++) {
    String str = io.nextLine();
    String join = String.join("", list) + str;
    list.add(join);
}
...