2015-03-30 4 views
0

У меня есть программа, которая читает txt-файл и отображает информацию в таблице. Я работал очень хорошо, но моя программа не присваивает значение позиции матрицы, когда цикл for достигает позиций 5 и 7. Но странно, что другие позиции работают нормально.Для присвоения пропусков цикла

Вот мой код

public class Main extends JPanel { 
private boolean DEBUG = false; 

public Main() throws IOException { 
    super(new GridLayout(1,0)); 

    String[] columnNames = {"Nome", 
          "CPF", 
          "Logradouro", 
          "Complemento", 
          "CEP", 
          "Cidade", 
          "Estado", 
          "Telefone 1", 
          "Telefone 2"}; 

    Object[][] data = { { "","","","","","","","",""} 

    }; 

    String segueLista = null; 
    //BufferedReader leDados = new BufferedReader(new FileReader("C:\\Teste\\lista.txt")); 
    // File lista1 = new File("C:\\Teste\\lista.txt"); 
    ArrayList<String> lista = new ArrayList<String>(); 
    //lista = (ArrayList<String>) Files.readAllLines(lista1.toPath()); 
    int i = 0; 
    int i2 = 0; 
    BufferedReader leDados = new BufferedReader(new FileReader("C:\\Teste\\072.612.516-40.txt")); 


    for(i = 0; i < 9; i++) { 
     if((segueLista = leDados.readLine()) != null) { 
      if(!segueLista.equals("")){ 
       JOptionPane.showMessageDialog(null, segueLista); 
       data[0][i] = segueLista; 
       i--; 
      } 
     } 

    } 



    final JTable table = new JTable(data, columnNames); 
    table.setPreferredScrollableViewportSize(new Dimension(900, 70)); 
    table.setFillsViewportHeight(true); 

    if (DEBUG) { 
     table.addMouseListener(new MouseAdapter() { 
      public void mouseClicked(MouseEvent e) { 
       printDebugData(table); 
      } 
     }); 
    } 

    //Create the scroll pane and add the table to it. 
    JScrollPane scrollPane = new JScrollPane(table); 

    //Add the scroll pane to this panel. 
    add(scrollPane); 
} 

private void printDebugData(JTable table) { 
    int numRows = table.getRowCount(); 
    int numCols = table.getColumnCount(); 
    javax.swing.table.TableModel model = table.getModel(); 

    System.out.println("Value of data: "); 
    for (int i=0; i < numRows; i++) { 
     System.out.print(" row " + i + ":"); 
     for (int j=0; j < numCols; j++) { 
      System.out.print(" " + model.getValueAt(i, j)); 
     } 
     System.out.println(); 
    } 
    System.out.println("--------------------------"); 
} 

/** 
* Create the GUI and show it. For thread safety, 
* this method should be invoked from the 
* event-dispatching thread. 
* @throws IOException 
*/ 
private static void createAndShowGUI() throws IOException { 
    //Create and set up the window. 
    JFrame frame = new JFrame("SimpleTableDemo"); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    //Create and set up the content pane. 
    Main newContentPane = new Main(); 
    newContentPane.setOpaque(true); //content panes must be opaque 
    frame.setContentPane(newContentPane); 

    //Display the window. 
    frame.pack(); 
    frame.setVisible(true); 
} 

public static void main(String[] args) { 
    //Schedule a job for the event-dispatching thread: 
    //creating and showing this application's GUI. 
    javax.swing.SwingUtilities.invokeLater(new Runnable() { 
     public void run() { 
      try { 
       createAndShowGUI(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    }); 
} 

}

И это информация, которую он читает из текстового файла

Tiago Кандид Borges

072.612.516-40

Av Niza Marq ЕЭС Guarita 1315

Bloco 35 Apto 204

38082-000

Убераба

М.Г.

(34) 3315-8807 (34) 9908-7502

ответ

1

Кажется, что ваш цикл переписывает элементы в массиве данных, поскольку всякий раз, когда вы назначаете значение data[0][i], вы также уменьшаете i, что означает, что данные могут быть перезаписаны на следующей итерации.

Возможно, вы имели в виду декрементировать i только тогда, когда входная строка пуста:

for(i = 0; i < 9; i++) { 
    if((segueLista = leDados.readLine()) != null) { 
     if(!segueLista.equals("")){ 
      JOptionPane.showMessageDialog(null, segueLista); 
      data[0][i] = segueLista; 
     } else { 
      i--; 
     } 
    } 

} 
+0

OMG! Отлично! Огромное спасибо. – Blackk

Смежные вопросы