-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Работа с массивами и файлами

Воскресенье, 08 Ноября 2020 г. 17:42 + в цитатник
iVovan1996: Добрый вечер! Нужно считать исходный массив из файла, составить массив с результатами и записать последний в файл.

Дана матрица А(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

https://forum.sources.ru/index.php?showtopic=420653&view=findpost&p=3841862

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку