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);
- }
- });
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д