2015-12-06 5 views
0
Scanner input = null; 
    try { 
     input = new Scanner (new File(filename)); 
    } catch (FileNotFoundException ex) { 
     Logger.getLogger(Puzzle.class.getName()).log(Level.SEVERE, null, ex); 
    } 
    int m = 4; 
    int n = 4; 
    Puzzle = new String [m][n]; 
    while (input.next()!=null){ 
     for (int i=0;i<m;i++){ 
      for (int j=0;j<n;j++){ 
       Puzzle[i][j]= input.next(); 
       System.out.println(Puzzle[i][j]); 
      } 
     } 

    } 

У меня есть небольшая проблема с этим куском кода. поскольку я просматриваю ввод, чтобы поставить мой массив головоломок, он пропускает первую строку. например, в первой строке, допустим, что 4 буквы «A B C D» включены. Он пропускает «A» и продолжает «B». Я знаю, может быть, это слишком легко для вас, ребята, но, как нищий, мне нужна ваша помощь.Сканирование 2D Строковый массив из файла

ответ

0

Вы потребляете несколько маркеров в каждой итерации цикла в то время - один, когда вы звоните next() в условиях цикла (который не используется) и несколько других, когда вы звоните next() внутри для петель (которые вам магазин).

Вы должны изменить логику своего кода. Вам не нужен цикл while.

Например:

boolean done = false; 
    for (int i=0;i<m && !done;i++){ 
     for (int j=0;j<n && !done;j++){ 
      Puzzle[i][j]= input.next(); 
      if (Puzzle[i][j] == null) 
       done = true; 
      System.out.println(Puzzle[i][j]); 
     } 
    } 
Смежные вопросы