前提・実現したいこと
何か文をコマンドプロンプトで入力し、それが事前に用意したword_input.txtのX行目と一致していれば、word_output.txtのX行目の言葉が出力される。かつ、endまたはexitと入力されるまでこの処理を繰り返せるようにしたいです。javaです。
発生している問題・エラーメッセージ
入力がinputのいずれかに一致、もしくは異なっていてもどちらもこの結果です。
Exception in thread "main" java.lang.NullPointerException at Mathmagic.checkEqualsLine(Mathmagic.java:31) at Mathmagic.baseTalk(Mathmagic.java:21) at Mathmagic.main(Mathmagic.java:14)
該当のソースコード
java
1import java.io.BufferedReader; 2import java.io.InputStreamReader; 3import java.io.IOException; 4import java.io.File; 5import java.util.Scanner; 6import java.io.FileNotFoundException; 7 8class Mathmagic { 9 public static void main(String []args){ 10 System.out.println("Please write here."); 11 String[] input = Scanner(library.file); 12 String[] output = Scanner(library.file2); 13 14 baseTalk(input,output); 15 16 } 17 private static void baseTalk(String[] input, String[] output){ 18 String str = ""; 19 while (!(str.equals("end")||str.equals("exit"))) { 20 str = BufferedReader(); 21 int Line = checkEqualsLine(input,output); 22 if (Line == -1) System.out.println("error:Not defined"); 23 else System.out.println(output[Line]); 24 } 25 } 26 private static int checkEqualsLine(String[] input,String[] output){ 27 int Line = -1; 28 if(!(input.length == output.length))return -1; 29 else{ 30 for (int i = 0;i < input.length;i++){ 31 if (input[i].equals(output[i])) { 32 Line = i; 33 break; 34 } 35 } 36 } 37 return Line; 38 } 39 private static String BufferedReader(){ 40 String str = null; 41 try { 42 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 43 str = br.readLine(); 44 }catch (IOException ignored){ 45 46 } 47 return str; 48 } 49 private static String[] Scanner(File file){ 50 String[] input = new String[library.limitInput]; 51 try(Scanner sc = new Scanner(file)){ 52 int i = 0; 53 while (sc.hasNextLine()){ 54 input[i] = sc.nextLine(); 55 i++; 56 } 57 }catch (FileNotFoundException e){ 58 e.printStackTrace(); 59 } 60 return input; 61 } 62} 63 64class library{ 65 static int limitInput = 1000; 66 static File file = new File("word_input.txt"); 67 static File file2 = new File("word_output.txt"); 68}
試したこと
どこからNullが現れているのか分からないので手も足も出ませんでした。
補足情報(FW/ツールのバージョンなど)
Java 12,OpenJDK,Windows 10
回答2件
あなたの回答
tips
プレビュー