Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Чтение из файла


Автор: Around 14.12.2018, 04:39
Всем привет. При попытке запуска с аргументом "-i" не происходит чтение и вывод информации.

Код

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import java.util.InputMismatchException;
import java.io.*;

public class Main {
    public static void main(String[] args) throws IOException {
        Scanner n;
        boolean fromFile = false;
        boolean toFile = false;
        String filename = "";
        String outfilename = "";
        for(int i = 0; i < args.length; i++) {
            if(args[i].compareTo("-i") == 0 && i < args.length - 1){
                fromFile = true;
                filename = args[i+1];
                i++;
            }
            if(args[i].compareTo("-o") == 0 && i < args.length - 1){
                toFile = true;
                outfilename = args[i+1];
                i++;
            }
        }
//--------------------------------------------------------------------
        Scanner in = new Scanner(System.in);
        if (fromFile) {
            try {
                in = new Scanner(new FileReader(filename));

            } catch(FileNotFoundException e) {
                System.err.println("Файл не найден");
                return;
            }
        }

        if (!fromFile) {
            System.out.println("Введите слово: ");
        }
        try {
            n = in;
        } catch(InputMismatchException e) {
            System.err.println("введите слово!");
        }
        PrintWriter out;
        if (toFile) {
            out = new PrintWriter(new File(outfilename));
        } else {
            out = new PrintWriter(System.out);
        }

        new Scanner(System.in).nextLine().chars().forEach(x -> {
                    out.println("=======================");
                    out.println("Буква: '" + (char) x + "'");
                    out.println("Десятичный код: " + x);
                    out.println("Двоичный код: " + Integer.toBinaryString(x));
                    out.println("Восьмеричный код: " + Integer.toOctalString(x));
        });
        out.close();
    }
}

Автор: LSD 27.12.2018, 13:53
Проблема в 53 строке. Ты всегда пытаешься читать из stdin независимо от аргументов.
Код

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) throws IOException {
        boolean fromFile = false;
        boolean toFile = false;
        String filename = null;
        String outfilename = null;
        for (int i = 0; i < args.length; i++) {
            if (args[i].equals("-i") && i < args.length - 1) {
                fromFile = true;
                filename = args[i + 1];
                i++;
            }
            if (args[i].equals("-o") && i < args.length - 1) {
                toFile = true;
                outfilename = args[i + 1];
                i++;
            }
        }
//--------------------------------------------------------------------

        if (!fromFile) {
            System.out.println("Введите слово: ");
        }

        try (PrintStream out = toFile ? new PrintStream(outfilename) : System.out;
             Scanner scanner = fromFile ? new Scanner(new FileReader(filename)) : new Scanner(System.in)) {
            scanner.nextLine().chars().forEach(x -> {
                out.println("=======================");
                out.println("Буква: '" + (char) x + "'");
                out.println("Десятичный код: " + x);
                out.println("Двоичный код: " + Integer.toBinaryString(x));
                out.println("Восьмеричный код: " + Integer.toOctalString(x));
            });
        } catch (FileNotFoundException ex) {
            System.err.println("Файл не найден: " + ex.getMessage());
        }
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)