DennisKingsman
@DennisKingsman
Студент

Как считать матрицу из файла?

Как считать из файла матрицу с разными элементами(положительные и отрицательные)
в файле лежит число (размерность квадратной матрицы) и сама матрица и я пытался считать это побитово в двумерный массив , но проблема была в том, что отрицательные элементы переставали таковыми быть(тоесть считывалось только число без учета знака)
private static int currentIndex = -1;
    
    //String to matrix numbers
    private static Integer next(String numbers[]) {
        ++currentIndex;
        while (currentIndex < numbers.length
                && numbers[currentIndex].equals(""))
            ++currentIndex;
        return currentIndex < numbers.length ?
                Integer.parseInt(numbers[currentIndex]) :
                null;
    }

    public static void main(String args[]) throws IOException {
        FileInputStream in = new FileInputStream("getMatrix.txt");
        byte[] str = new byte[in.available()];
        in.read(str);
        String text = new String(str);

        String[] numbers = text.split("\\D");
        int i, j;
        int n = next(numbers);
        int[][] matr = new int[n][n];

        for (i = 0; i < n; ++i) {
            for (j = 0; j < n; ++j) {
                matr[i][j] = next(numbers);
            }
        }
        for (i = 0; i < n; ++i, System.out.println()) {
            for (j = 0; j < n; ++j) {
                System.out.print(matr[i][j] + " ");
            }
        }
    }


P.S. : элементы матрицы могут быть не целочисленными
  • Вопрос задан
  • 3779 просмотров
Решения вопроса 1
@Shiftuia
Java-программист
Как-то так
Размерность, думаю, сами распарсите, если будет нужно

BufferedReader br = new BufferedReader(new FileReader("matrix.txt"));

		List<String> lines = new ArrayList<>();
		while (br.ready()) {
			lines.add(br.readLine());
		}
		int matrixWidth = lines.get(0).split(" ").length;
		int matrixHeight = lines.size();

		Double[][] matrix = new Double[matrixHeight][matrixWidth];

		for (int i = 0; i < matrixHeight; i++) {
			for (int j = 0; j < matrixWidth; j++) {
				String[] line = lines.get(i).split(" ");
				matrix[i][j] = Double.parseDouble(line[j]);
			}
		}

		for (int i = 0; i < matrixHeight; i++) {
			System.out.println(Arrays.toString(matrix[i]));
		}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы