2016-07-15 8 views
0

私は自分のコードをもっとモジュール化しようとしています。私の質問は、一度getFileメソッドを呼び出すことによって入力を取得した場合、どのように配列などを言うためにそれを保存できますか?スキャナクラスmore modular

もっと明確にするには、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

あなたの質問やプログラムから、あなたがしようとしていることは明確ではありません。入力から 'String'を読み込み、それをパスとして解釈し、' File'を開き、そのファイルのために新しい 'Scanner'を作り、次にスキャナオブジェクトを(2回)印刷して、stdinの' 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 
    } 
} 

これはよりモジュラーなアプローチです。それぞれのメソッドは、明確に定義されたものを1つだけ実行します。

あなたの質問は本当に "どのようにファイルを配列に読み込むのですか?"

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()]); 
    }