Scanner файла в jFrame - Java
Формулировка задачи:
Подскажите пожалуйста, как можно считать данные из файла в массив? Делал тоже самое не в jFrame, а в "консоли", то все отлично работало. Буду очень сильно благодарен за ответ!
Делал вот так:
Это все добавил в кнопку. Но выдало ошибки:
Exception in thread "AWT-EventQueue-0" java.util.InputMismatchException
at java.util.Scanner.throwFor(Scanner.java:864)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at NewJFrame.jButton5ActionPerformed(NewJFrame.java:295)
at NewJFrame.access$300(NewJFrame.java:31)
at NewJFrame$5.actionPerformed(NewJFrame.java:234)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
int[][] arr=new int[5][5]; Scanner sc; sc = new Scanner("E:\\test.txt"); for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { arr[i][j] = sc.nextInt(); } }
Решение задачи: «Scanner файла в jFrame»
textual
Листинг программы
import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Scanner; public class FrameArray extends JFrame { JTextField jTextField; JButton jButton; JTextArea jTextArea; int[][] a; public FrameArray() throws HeadlessException { jTextField = new JTextField("D:\\test.txt"); jTextField.setPreferredSize(new Dimension(250, 20)); jTextArea = new JTextArea(); jTextArea.setPreferredSize(new Dimension(400, 200)); jButton = new JButton("Load "); jButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { File file = new File(jTextField.getText()); if (!file.exists()) { JOptionPane.showMessageDialog(null, " File not Found! "); return; } if(!loadArray(file)) { JOptionPane.showMessageDialog(null, " File not Found! "); return; } loadText(); // JOptionPane.showMessageDialog(null, "Load done! "); } }); JPanel jPanel = new JPanel(new FlowLayout()); jPanel.add(jTextField); jPanel.add(jButton); add(jPanel, BorderLayout.NORTH); add(jTextArea); } private boolean loadArray(File file) { Scanner in = null; try { in = new Scanner(new FileInputStream(file)); if (!in.hasNextInt()) { JOptionPane.showMessageDialog(null, " wrong format! "); } int n = in.nextInt(); // rows if (!in.hasNextInt()) { JOptionPane.showMessageDialog(null, " wrong format! "); } int m = in.nextInt(); // columns a = new int[n][m]; for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (!in.hasNextInt()) { JOptionPane.showMessageDialog(null, " wrong format! "); return false; } a[i][j] = in.nextInt(); } } in.close(); } catch (IOException e) { throw new RuntimeException(e); } return true; } private void loadText() { jTextArea.setText("array a["+a.length+"]["+a[0].length+"] values:\n"); for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { jTextArea.append("a[" + i + "][" + j + "]="+a[i][j]+"\n"); } } } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { JFrame frame = new FrameArray(); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setLocationRelativeTo(frame.getParent()); frame.setSize(800, 600); frame.setVisible(true); } }); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д