実現したいこと
oやxを入力後リストに格納され、リストを配列に変換し、
最終的にはoの場合はxを、xの場合はoを出力するプログラムを作成しようとしています。
しかし、以下のように出力(エラーは出ていません)され、行き詰っています。
下記コードのどの部分が間違っているかご教示ください。
※o,xは自動で入力されます。
入力:oxoxox
期待値:xoxoxo
実際の出力:(何も表示されない)
試したこと
######▼java1のコード
・リストの中身を1行毎で取得することがわかっていなかった
・リスト生成メソッドのfor文内でindex番号に応じて出力結果が変わるようにしていた
######▼java2のコード
・メインメソッドで配列(元々リスト)内の要素を文字列に変換
・for文内でcharAtで一文字ずつ取得し、if文で出力結果が変化するように変更
java1
1package track; 2import java.util.Scanner; 3import java.util.ArrayList; 4 5public class App { 6 public static void main(String[] args) { 7 String[] lines = getStdin(); 8 for (int i = 0, l = lines.length; i < l; i++) { 9 String output = String.format("%s",lines[i]); 10 System.out.println(output); 11 } 12 } 13 private static String[] getStdin() { 14 Scanner scanner = new Scanner(System.in); 15 ArrayList<String> lines = new ArrayList<>(); 16 int i=0; 17 String o="o",x="x",str=lines.get(i); 18 while (scanner.hasNext()) { 19 lines.add(scanner.nextLine()); 20 if(lines.get(i).equals(o)) { lines.set(i,"x"); } 21 else if(lines.get(i).equals(x)) { lines.set(i,"o"); } 22 else { lines.set(i,""); } 23 i++; 24 } 25 return lines.toArray(new String[lines.size()]); 26 } 27} 28
java2
1package track; 2import java.util.Scanner; 3import java.util.ArrayList; 4 5public class App { 6 public static void main(String[] args) { 7 String[] lines = getStdin(); 8 String str = Arrays.toString(lines); 9 for (int i=0; i<str.length(); i++) { 10 str = str.charAt(i); 11 if(str=="o"){str=="x";} 12 else if(str=="x"){str=="o";} 13 else{str=="";} 14 System.out.print(str); 15 } 16 } 17 private static String[] getStdin() { 18 Scanner scanner = new Scanner(System.in); 19 ArrayList<String> lines = new ArrayList<>(); 20 int i=0; 21 while (scanner.hasNext()) { 22 lines.add(scanner.nextLine()); 23 } 24 return lines.toArray(new String[lines.size()]); 25 } 26}
回答1件
あなたの回答
tips
プレビュー