Чтение нескольких значений в несколько строк из файла (Java)
Есть ли способ прочитать файл в Java построчно, каждая строка имеет ряд целых чисел (различное количество целых чисел в строке). Например:
2 5
1 3 4 5
2 4 8
2 3 5 7 8
и т.п.
Я буду читать номер строки и номера в каждой строке в двухмерном массиве.
Прямо сейчас вот код, который я имею:
int i=1, j;
try{
Scanner sc=new Scanner(new File("mapinput.txt"));
while(sc.hasNext()){
String line=sc.nextLine();
while(line!=null){
j=sc.nextInt();
Adj[i][j]=1;
}
i++;
}
} catch(Exception e){System.err.println(e);};
Проблема с этим кодом, я вижу, в том, что он читает целые числа через одну строку после строки String; Я хочу, чтобы он читал числа в этой самой строке. Есть ли способ прочитать числа из строки?
Обновить:
Я решил пойти по маршруту StringTokenizer; однако, когда он достигает последней строки моего файла, я получаю исключение java.util.NoSuchElementException: строка не найдена. Вот мой обновленный код:
try{
Scanner sc=new Scanner(new File("mapinput.txt"));
String line=sc.nextLine();
st=new StringTokenizer(line, " ");
do{
while(st.hasMoreTokens()){
j=Integer.parseInt(st.nextToken());
Adj[i][j]=1;
}
line=sc.nextLine();
st=new StringTokenizer(line, " ");
i++;
}while(st.hasMoreTokens());
} catch(Exception e){System.err.println(e);};
2 ответа
Прочитав строку, вы можете сделать следующее
String[] ar=line.split(" ");
и играть с массивом строк в соответствии с вашими требованиями
Посмотрите на класс #StringTokenizer в библиотеках Java.
Вы можете легко перебрать файл и вытащить integers
разграничены пробелами. Хорошо обрабатывает двузначные целые числа.
Чтобы ответить на ваш вопрос напрямую, есть способ получить номера от String
,
Заглянуть в
Integer.parseInt(String s);
Это возвращает integer
от String
,
Документация здесь
String s1 = "15 ";
String s2 = "03";
int answer = Integer.parseInt(s1.trim()) + Integer.parseInt(s2.trim());
System.out.println(answer);
Это распечатывает:
18