Открыть файл, прочитать его, и вывести содержимое в виде массива - Java

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

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

Здравствуйте ! Я начинающий программист. пожалуйста подскажите в чём состоит ошибка. я подозреваю что неверно передаю массив из одного класса в другой, но не знаю как нужно. в Си для этого используются указатели а в Джаве указателей нет (. Программа простенькая по сути. открыть файл, прочитать его и вывести содержимое в виде массива. вот головной файл:
package file;
 
import javax.swing.JOptionPane;
 
public class MFile {
 
public static void main(String[] args) {
    int i, j;
    String i1, j1;
    String [][] array;
    OROut file = new OROut();
    i1=JOptionPane.showInputDialog("Введите количество строк массива");
    j1=JOptionPane.showInputDialog("Введите количество столбцов массива");
    i=Integer.parseInt(i1);
    j=Integer.parseInt(j1);
    file.fopen();
    array=file.fread(i, j);
    //file.fout(i,j);
    file.fout(array);//строка 19 - в которой выдает ошибку
}
}
вот файл с методами :
package file;
 
import java.io.File;
import java.util.Iterator;
import java.util.Scanner;
 
import javax.swing.JOptionPane;
 
public class OROut {
    Scanner scn;
    String z[][];
    
    public void fopen() {
        try {
            scn = new Scanner(new File("D:/Andrey/Краткие характеристики модели.docx"));
        } catch (Exception e) {JOptionPane.showMessageDialog(null, "Файл не найден", "ERROR", JOptionPane.ERROR_MESSAGE);
        }
        
    }
 
    public String [][] fread(int row, int col) {
        //String z = String[row][col];
        while (scn.hasNext())
        {
            for (int a=0;a<row;a++)
            {
                for (int b=0; b<col;b++)
                {
                    z[a][b]=scn.next();
                }
            }
        }
        return z;
        
    }
 
    public void fout(String[][] array) {
        for (String[] strings : array) { //строка 38 - в которой выдает ошибку
            System.out.println(strings);
        }
        
    }
    //вывод по этому циклу тоже не работает ( 
    /*public void fout(int row, int col) {
    for (int a=0; a<row; a++)
    {
        for (int b=0; b<col; b++)
        {
            System.out.print("     "+ z[a][b]);
        }
        
        System.out.println();
    }
    
}*/
    
}
вот какую выдает ошибку:
  Exception in thread "main" java.lang.NullPointerException
	at file.OROut.fout(OROut.java:38)
	at file.MFile.main(MFile.java:19)
изначально компилятор эти ошибки не подсвечивает... только на этапе выполнения программа падает. подскажите пожалуйста как реализуется данная задача в java ?

Решение задачи: «Открыть файл, прочитать его, и вывести содержимое в виде массива»

textual
Листинг программы
package file;
 
import javax.swing.JOptionPane;
 
public class MFile {
 
public static void main(String[] args) {
    int i, j;
    String i1, j1;
    OROut file = new OROut();
    i1=JOptionPane.showInputDialog("Введите количество строк массива");
    j1=JOptionPane.showInputDialog("Введите количество столбцов массива");
    i=Integer.parseInt(i1);
    j=Integer.parseInt(j1);
    file.fopen();
    OROut.z = new String[i][j];
    file.fread(i, j);
    file.fout(i,j);
    
 
}
}

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


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

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

13   голосов , оценка 3.923 из 5
Похожие ответы