2016-07-15 3 views
0

Я пытаюсь сделать мой код более модульным. Мой вопрос заключается в том, как только вы получите ввод, вызвав метод getFile, как вы можете сохранить его, чтобы сказать массив и т. Д.?сканер класс более модульный

Чтобы быть более понятным, я хочу, чтобы иметь возможность вызвать метод getFileScanner, и он возвращает все, что находится в файле, который вводит пользователь. Затем в основном методе я хочу иметь возможность установить этот вход (независимо от файла .txt) в массив (для записи). Как я могу сохранить ввод в основном методе? В другом посте, отдельно от этого, пользователь предложил мне сделать мой код более модульным и предложил некоторые из приведенного ниже кода. Я просто пытаюсь понять, что пользователь намеревался и расколол часть кода.

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

public class scanTest { 

    public static void main(String[] args) throws FileNotFoundException { 

     System.out.println("Please enter the file"); 
     System.out.println(getFileScanner()); 

    } 

    public static Scanner getFileScanner() throws FileNotFoundException { 

     Scanner user_input = new Scanner(System.in); 
     String filepath = user_input.next(); 

     System.out.println("Filepath read: " + filepath); 
     // Read input file 
     Scanner input = new Scanner(new File(filepath)); 
     System.out.println(input); 
     return input; 
    } 

} 
+0

Из вашего вопроса или программы неясно, что именно вы пытаетесь сделать. Вы создаете «Scanner» для stdin, читаете «String» из ввода, интерпретируя это как путь, открывая этот «Файл», создавая новый «Scanner» для этого файла, а затем печатая объект сканера (дважды) , Любите помогать, но не знаете, что именно вы надеетесь достичь (пока). – AJNeufeld

+0

вы можете найти решение здесь http://stackoverflow.com/questions/13185727/reading-a-txt-file-using-scanner-class-in-java –

+0

@AJNeufeld отредактировал мой пост. Спасибо за ответ. – cfsprod

ответ

0

Выполнение кода более модульным способом разбивает код на более мелкие, самодостаточные, возможно многоразовые элементы. Что-то вроде:

public class ScanTest { 
    public static void main(String []args) throws FileNotFoundException { 
     Scanner user_input = new Scanner(System.in); 
     String filepath = getFilePath(user_input); 
     String[] all_lines = readAllLines(filepath); 
    } 

    public static String getFilePath(Scanner user_input) { 
     String filepath = user_input.next(); 
     System.out.println("Filepath read: " + filepath); 
     return filepath; 
    } 

    public static String[] readAllLines(String filepath) throws FileNotFoundException { 
     // TODO: implement 
    } 
} 

Это более «модульный» подход. Каждый метод делает одну четко определенную вещь.

Но ваш вопрос действительно «как я могу прочитать файл в массиве».

public static String[] readAllLines(String filepath) throws IOException { 
     List<String> lines = Files.readAllLines(Paths.get(filepath), StandardCharsets.UTF_8); 
     return lines.toArray(new String[list.size()]); 
    } 
Смежные вопросы