Чтение нескольких значений в несколько строк из файла (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
Другие вопросы по тегам