#java #java.util.scanner
#java #java.util.scanner
Вопрос:
Допустим, у меня есть ряд чисел, подобных…
1 2 3 4
5 6 7 8
9 0
Как я мог бы переходить по каждому int, но останавливаться, когда я достигаю новой строки? В настоящее время я использую, nextInt()
и я знаю, что это nextLine()
обнаружит новую строку, но я не уверен, как собрать это воедино. Лучше ли взять всю строку целиком и разобрать строку на отдельные целые числа? Или есть более гибкий способ сделать это?
Для моего примера я бы хотел, чтобы программа сохраняла 1 2 3 4
, 5 6 7 8
9 0
все в их собственном отдельном массиве.
Для получения дополнительной информации я использую java.util.Scanner
и читаю текстовый файл.
Комментарии:
1. «Более плавный» будет зависеть от того, что вы в конечном итоге собираетесь делать с данными и сколько их имеется. Добавьте еще несколько деталей о том, что вы пытаетесь сделать.
2. Вы имеете в виду, что хотите ‘1 2 3 4’ в одном массиве, ‘5 6 7 8’ в другом массиве и так далее?
3. @mahendraliya: Да, именно. Вот что я имел в виду :]
Ответ №1:
Если вы хотите использовать Scanner
, преобразуйте всю строку в строку, а затем создайте сканер на основе строки.
Комментарии:
1. Это фантастическая идея. Я бы никогда об этом не подумал! Слишком просто!
Ответ №2:
Вы можете открыть текстовый файл в режиме чтения и прочитать всю строку с помощью readLine()
метода.
Затем вы можете разделить прочитанную строку символом пробела ( ‘ ‘), который автоматически выдаст вам массив.
Вы можете делать это до конца файла.
import java.io.*;
class FileRead
{
public static void main(String args[])
{
try{
// Open the file
FileInputStream fstream = new FileInputStream("textfile.txt");
// Get the object of DataInputStream
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
delimiter = " ";
int myArr[];
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
myArr = strLine.split(delimiter);
// store this array into some global array or process it in the way you want.
}
//Close the input stream
in.close();
}catch (Exception e){//Catch exception if any
System.err.println("Error: " e.getMessage());
}
}
}
Надеюсь, это поможет.