Как изменить / разделить инвидуальную строку в массиве - PullRequest
0 голосов
/ 15 ноября 2018

Как создать метод, отправив в array имен в форме « firstName lastName » (например, Анна Хейл).Метод возвращает имя (через оператор возврата) в форме «первый --- последний».Ниже мое полное имя массива

public static void readData(String file) throws FileNotFoundException {
    x = new Scanner(new File(file));

    n = 0;
    while(x.hasNextLine()) {
        n++;
        x.nextLine();
    }
    name = new String[n];
    Scanner x1 = new Scanner(new File(file));

    for(int i = 0; i < name.length; i++ ) 
        name[i] = x1.nextLine();
        System.out.println(Arrays.toString(name));
}

1 Ответ

0 голосов
/ 15 ноября 2018

Вот полный код, предполагающий, что вы хотите прочитать с file.Пожалуйста, исправьте ошибки времени компиляции в своем коде.Поскольку вы заранее не знаете длину массива, вы не можете инициализировать массив или изменить логику, чтобы получить количество строк, а затем инициализировать массив.

Содержимое файла выглядит следующим образом:

abc xyzzy
And sdff
Asdf sdfw

Вывод выглядит следующим образом

[abc--xyzzy, And--sdff, Asdf--sdfw]

В приведенном ниже коде name[i].replace(" ", "--"); заменяет пробел " " на --

Код:

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Post1 {

    public static void main(String[] args) throws FileNotFoundException {
         String[] transformedNames = readData("/Users/kuma/Desktop/post1.txt");
         System.out.println(Arrays.toString(transformedNames));
    }

    public static String[] readData(String file) throws FileNotFoundException {
        Scanner x = new Scanner(new File(file));
        List<String> list = new ArrayList<>();

        while(x.hasNextLine()) {
            list.add(x.nextLine());
        }
        x.close();
        String[] name = new String[list.size()];

        list.toArray(name);

        String[] transformedNames = new String[list.size()];

        for(int i = 0; i < name.length; i++ ) 
            transformedNames[i] = name[i].replace(" ", "--");

        return transformedNames;
    }

}

То же самое достигается в Java 8 с использованием stream API:

private static String[] readDataUsingJava8() {
        String[] transformedNames = null;
        try (Stream<String> stream = Files.lines(Paths.get( "/Users/kuma/Desktop/post1.txt"))) {
            transformedNames =
             stream.map(new Function<String, String>() {

                @Override
                public String apply(String t) {
                    // TODO Auto-generated method stub
                    return t.replace(" ", "--");
                }
            }).toArray(String[]::new);

        } catch (IOException e) {
            e.printStackTrace();
        }
        return transformedNames;
    }
...