###問題
1+a=3
a+2=3
1+2=a
のように、足し算か引き算の3つの数字のうち1つだけaに置き換えたような虫食い算を作ります。
aに代入すべき値を出力させます。
(1つめなら2、2つめなら1、3つめなら3)
以下のコードを書いたのですが、エラーは出ないのですが0になってしまいます。
このコードの問題点と、恐らく余りにも醜いこのコードを改良していただけたらと思います。
どちらかでも構いませんので、お教えくだされば幸いです。
lang
1import java.util.*; 2 3public class Main { 4 public static void main(String[] args) { 5 6 Scanner sc = new Scanner(System.in); 7 String line = sc.nextLine(); 8 String[] strarray1 = line.split(" ");//分割したつもり 9 int num[] = new int[2];//数字のための配列 10 String kigou[] = new String [3];//記号のための配列 11 int ans = 0 ; 12 13// 数字と記号を分けたつもり 14 for(int i=0;i<5;i++){ 15 if(isNum(strarray1[i])==true){ 16 try{ 17 kigou[i]=strarray1[i]; 18 }catch(NumberFormatException e) { 19 e.printStackTrace(); 20 } 21 }else{ 22 23 } 24 } 25 26 27//記号の位置によって場合分けしてxを求めたつもり 28 if("a".equals(kigou[0])){ 29 if("+".equals(kigou[1])){ 30 ans = num[0]-num[1]; 31 }else if("-".equals(kigou[1])){ 32 ans = num[0] + num[1]; 33 34 35 }else if("+".equals(kigou[0])){ 36 ans = num[0]+num[1]; 37 } 38 39 }else{ 40 if("+".equals(kigou[0])){ 41 ans = num[0]+num[1]; 42 }else if("-".equals(kigou[0])){ 43 ans = num[0]-num[1]; 44 } 45 } 46 47 System.out.println(ans); 48 } 49 50 //文字列が整数か判定するメソッドのつもり 51 public static boolean isNum(String number){ 52 try { 53 Integer.parseInt(number); 54 return true; 55 } catch (NumberFormatException e) { 56 return false; 57 } 58} 59} 60
醜いと思う部分はどこでしょうか?いきなり模範解答をだされても参考にならなかったりするので、ポイントを絞った方がわかりやすい回答が得られると思います。
その通りですね。次回から訂正いたします。
回答1件
あなたの回答
tips
プレビュー