Scanner файла в jFrame - Java

Узнай цену своей работы

Формулировка задачи:

Подскажите пожалуйста, как можно считать данные из файла в массив? Делал тоже самое не в jFrame, а в "консоли", то все отлично работало. Буду очень сильно благодарен за ответ! Делал вот так:
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();
            }
        }
Это все добавил в кнопку. Но выдало ошибки: 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)

Решение задачи: «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);
            }
        });
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5