Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.11.2020, 17:21   #1
VolodyaBuzin
Пользователь
 
Регистрация: 10.11.2017
Сообщений: 56
По умолчанию

Добрый вечер! Нужно считать исходный массив из файла, составить массив с результатами и записать последний в файл.

Дана матрица А(5Х5). Определить массив Х из 5 элементов, каждый из которых равен 1, если произведение элементов соответствующего столбца больше нуля, и –1 в противном случае.

При тестировании кода возникли проблемы: второй и третий элемент массива результатов почему-то заминусились, а при записи результатов в файл указатель не перешёл на новую строку, хотя символ переноса был дважды добавлен с помощью append. Укажите ошибки и способы их устранения. Работаю в eclipse.

Код класса:
Код:
package com.lab2;
 
import java.util.InputMismatchException;
import java.util.Scanner;
import java.io.*;
 
public class ReadWriteFile {
    private static int n;
    private static int m;
    
    public static int[][] inputSelect () {
        int[][] arr = null;
        int index = -1;
        Scanner scan = new Scanner(System.in);
        System.out.println("Выберите способ ввода массива:");
        System.out.println("0. Из файла");
        System.out.println("1. С клавиатуры");
        index = scan.nextInt();
        switch (index) {
        case 0:
            arr = inputFromFile("C:\\Users\\Владимир\\eclipse-workspace\\myMatrix.TXT");
            break;
        case 1:
            arr = inputFromKeyboard();
            break;
        default:
            System.out.println("Неверный ввод!");
        }
        scan.close();
        return arr;
    }
    
    public static int[][] inputFromFile(String path) {
        int[][] arr = null;
        try {
            try (Scanner in = new Scanner(new File(path))) {
                n = in.nextInt();
                m = in.nextInt();
                arr = new int[n][m];
                for (int i = 0; i < n; i++) {
                    for (int j = 0; j < m; j++) {
                        arr[i][j] = in.nextInt();
                    }
                }
                in.close();
            }
        } catch (FileNotFoundException e) {
        System.out.println("Ошибка " + e + "! файл " + path + " не найден!");
        } catch (InputMismatchException e) {
        System.out.println("Ошибка " + e + "! Несоответствие типов данных!");
        }
        return arr;
    }
    
    public static int[][] inputFromKeyboard() {
        int[][] arr = null;
        Scanner scan = new Scanner(System.in);
        System.out.println("Укажите количество строк массива:");
        n = scan.nextInt();
        System.out.println("Укажите количество столбцов массива:");
        m = scan.nextInt();
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                System.out.println("Введите элемент " + i + "-й строки " + j + "-го столбца:");
                arr[i][j] = scan.nextInt();
            }
        }
        scan.close();
        return arr;
    }
    
    public static void outArray(int[][] array) {
        System.out.println("Вывод исходного массива:");
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if(j == m-1) {
                    System.out.print(array[i][j] + "\n");
                } else {
                    System.out.print(array[i][j] + " ");
                }
            }
        }
    }
    
    public static int[] getResult(int[][] array) {
        int count;
        int[] X = new int[m];
        for (int i = 0; i < m; i++) {
            count = 1;
            for (int j = 0; j < n; j++) {
                count *= array[j][i];
            }
            X[i] = (count >= 0) ? 1 : -1;
        }
        return X;
    }
    
    public static void outResult(int[] X) {
        System.out.println("Вывод результата:");
        for (int i = 0; i < m; i++) {
            if (i == m-1) {
                System.out.print(X[i] + "\n");
            } else {
                System.out.print(X[i] + " ");
            }
        }
    }
    
    public static void writeResult(int[] X) throws Exception {
        System.out.println("Запись результата в файл");
        FileWriter writer = new FileWriter("C:\\Users\\Владимир\\eclipse-workspace\\myMatrix.TXT", true);
        writer.append('\n');
        writer.append('\n');
        for (int i = 0; i < m; i++) {
            if (i == m-1) {
                writer.append(X[i] + "\n");
            } else {
                writer.append(X[i] + " ");
            }
        }
        writer.close();
    }
}
Код основной функции:
Код:
package com.lab2;
 
import java.util.Scanner;
 
public class MainApp {
 
    public static void main(String[] args) throws Exception {
        ReadWriteFile myVar = new ReadWriteFile();
        int[][] myMatrix = myVar.inputSelect();
        myVar.outArray(myMatrix);
        int[] X = myVar.getResult(myMatrix);
        myVar.outResult(X);
        myVar.writeResult(X);
    }
 
}
Результат работы программы:
Код:
Выберите способ ввода массива:
0. Из файла
1. С клавиатуры
0
Вывод исходного массива:
11 24 323 7 2345
42 53 6 234 4
73 84 94 0 3432
45 673 34 98 3245
0 345 5546 4564 6565
Вывод результата:
1 -1 -1 1 1
Запись результата в файл
Файл после записи результатов:
Код:
5 5
11 24 323 7 2345
42 53 6 234 4
73 84 94 0 3432
45 673 34 98 3245
0 345 5546 4564 65651 -1 -1 1 1
VolodyaBuzin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делфи работа с файлами и массивами ProQsy Помощь студентам 14 19.07.2016 20:57
работа с массивами и файлами (Pascal) pakusya Помощь студентам 8 28.06.2012 10:08
Работа с массивами и файлами ksu04061992 Паскаль, Turbo Pascal, PascalABC.NET 0 16.01.2012 15:30
РАБОТА С ФАЙЛАМИ И МАССИВАМИ СТРОК таня1 Общие вопросы C/C++ 1 13.12.2010 15:34