Вот полный код, предполагающий, что вы хотите прочитать с 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;
}