前提
ここに質問の内容を詳しく書いてください。
Javaで読み込んだ以下のようなCSVファイルを値を読み込み、その中身を後記法のリストに変換するクラスを作っているのですが、なぜか一番最初の行だけ変換がうまくいきません。
push,1 push,1 push,3 add mul
実現したいこと
- 以下のようになれば正解ですが...
[1, 1, 3, +, *]
発生している問題・エラーメッセージ
- なぜか最初の行だけeになってしまいます。
[e, 1, 3, +, *]
該当のソースコード
java
1import java.io.*; 2import java.util.ArrayList; 3import java.util.Objects; 4 5/** 6 * CSVファイルを読み込むクラス 7 */ 8 9public class ImportCSV { 10 11 ArrayList<String> orderList = new ArrayList<>(); 12 13 BufferedReader br = null; 14 public ImportCSV(String filename) throws IOException { 15 File file = new File(filename); 16 br = new BufferedReader(new FileReader(file)); 17 try { 18 // CSVファイルの読み込み 19 String line; 20 while ((line = br.readLine()) != null) { 21 String[] data = line.split(","); 22 Move move = new Move(); 23 System.out.println(data[0]); //1列目は問題なく読み込めています 24 String order = move.move(data[0]); //ここで問題が起きています 25 if (Objects.equals(order, "push")) order = data[1]; //もしdata[0]がpushなら次の列の数字をリストに入れる 26 orderList.add(order); 27 } 28 } catch (IOException e) { 29 System.out.println("ファイル読み込みに失敗"); 30 } 31 } 32} 33 34/** 35*pushの際は数字を返すためにそのまま返して、その他は演算子に変換 36**/ 37class Move{ //これがおかしい? 38 String move(String order){ 39 return switch (order) { 40 case "push" -> "push"; 41 case "add" -> "+"; 42 case "sub" -> "-"; 43 case "mul" -> "*"; 44 case "div" -> "/"; 45 default -> "e"; 46 }; 47 } 48 49} 50
試したこと
Moveクラス(CSVファイルの最初の行をケースにより変換するクラス)のmoveメソッドに問題がありそうです。
回答1件
あなたの回答
tips
プレビュー