Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Почему выводит ошибку  [new]
nastyaa
Member

Откуда:
Сообщений: 332
Вот такую-
Matrix:
[ 9 27 38  ]
  23 9 30  ]
  35 12 15  ]
Enter the file name with extension : file.txt
3
3
9 27 38 
23 9 30 
35 12 15 
Exception in thread "main" java.lang.NullPointerException
	at matrix.Main.main(Main.java:27)
C:\Users\nastya\AppData\Local\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1
СБОРКА ЗАВЕРШЕНА СО СБОЕМ (общее время: 16 секунды)


package matrix;

import java.io.IOException;
import java.util.LinkedList;
import java.util.List;

public class Main {

    public static void main(String[] args) throws MatrixIndexException, IOException {
        Matrix m1 = new Matrix1D(3, 3);
        //Matrix m2 = new Matrix1D(100, 100);
        
        MatrixUtils.fillByRandom(m1);
        //MatrixUtils.fillByRandom(m2);
        
        //Matrix m = MatrixUtils.matrixMultiple(m1, m2);
        
        System.out.println(m1.toString());
        MatrixUtils.writeMatrixToFile(m1, "file.txt");
        
        Matrix m3 = MatrixUtils.loadMatrixFromFile("file.txt");
        System.out.println(m3.toString()); ---------------------------вот здесь говорят ошибка
    }


вот код-
 public static void writeMatrixToFile(Matrix m, String filename) {

        try (FileWriter writer = new FileWriter(filename, false)) {
            String strForWrite = "";

            writer.write(String.valueOf(m.getRowCount()));
            writer.write("\n");
            writer.write(String.valueOf(m.getColCount()));
            writer.write("\n");

            for (int i = 1; i <= m.getRowCount(); i++) {
                for (int j = 1; j <= m.getColCount(); j++) {

                    strForWrite += m.get(i, j) + " ";
                }
                strForWrite += "\n";
            }

            writer.write(strForWrite);
            writer.flush();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (MatrixIndexException e) {
            e.printStackTrace();
        }
    }

    public static Matrix loadMatrixFromFile(String filename) throws FileNotFoundException, IOException {

        try{
            System.out.print("Enter the file name with extension : ");

            Scanner input = new Scanner(System.in);

            File file = new File(input.nextLine());

            input = new Scanner(file);


            while (input.hasNextLine()) {
                String line = input.nextLine();
                System.out.println(line);
            }
            input.close();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
    

    }
}
10 авг 18, 09:21    [21637206]     Ответить | Цитировать Сообщить модератору
 Re: Почему выводит ошибку  [new]
Valentin Kolesnikov
Member

Откуда:
Сообщений: 3065
nastyaa,

Этот метод всегда возвращает null:

    public static Matrix loadMatrixFromFile(String filename) throws FileNotFoundException, IOException {

        try{
            System.out.print("Enter the file name with extension : ");

            Scanner input = new Scanner(System.in);

            File file = new File(input.nextLine());

            input = new Scanner(file);


            while (input.hasNextLine()) {
                String line = input.nextLine();
                System.out.println(line);
            }
            input.close();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return null;
^^^^^^^^^^^^^^^^^^^^^^    

    }


С уважением, Валентин
10 авг 18, 09:32    [21637225]     Ответить | Цитировать Сообщить модератору
 Re: Почему выводит ошибку  [new]
nastyaa
Member

Откуда:
Сообщений: 332
Valentin Kolesnikov,

как можно исправить ошибку(
10 авг 18, 09:35    [21637230]     Ответить | Цитировать Сообщить модератору
 Re: Почему выводит ошибку  [new]
Valentin Kolesnikov
Member

Откуда:
Сообщений: 3065
nastyaa
Valentin Kolesnikov,

как можно исправить ошибку(


Нужно после загрузки строк из файла создат Matrix:

Примерно такой код:

            String[] arr = strFromFile.split(" |\n");
            Matrix result = new Matrix1D(Integer.valueOf(arr[0]), Integer.valueOf(arr[1]));

            int row = 1;
            int col = 1;

            for (int i = 2; i < arr.length; i++){
                if (!arr[i].equals("")) {
                    result.put(row, col, Integer.valueOf(arr[i]));
                    col++;
                    if (col == result.getColCount() + 1){
                        col = 1;
                        row++;
                    }
                }
            }

            return result;


С уважением, Валентин
10 авг 18, 09:38    [21637235]     Ответить | Цитировать Сообщить модератору
 Re: Почему выводит ошибку  [new]
nastyaa
Member

Откуда:
Сообщений: 332
Valentin Kolesnikov,

Нужно создать новый класс? или просто добавить ваш код?
10 авг 18, 09:41    [21637239]     Ответить | Цитировать Сообщить модератору
 Re: Почему выводит ошибку  [new]
Valentin Kolesnikov
Member

Откуда:
Сообщений: 3065
nastyaa
Valentin Kolesnikov,

Нужно создать новый класс? или просто добавить ваш код?


Нужно изменить вызов для

        Matrix m3 = MatrixUtils.loadMatrixFromFile("file.txt");


На этот:

        System.out.print("Enter the file name with extension : ");

        Scanner input = new Scanner(System.in);

        String fileName = input.nextLine();
        Matrix m3 = MatrixUtils.loadMatrixFromFile(fileName);


С уважением, Валентин
10 авг 18, 10:05    [21637274]     Ответить | Цитировать Сообщить модератору
 Re: Почему выводит ошибку  [new]
nastyaa
Member

Откуда:
Сообщений: 332
Valentin Kolesnikov,

спасибо вам)))))
10 авг 18, 10:29    [21637307]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить