前提・実現したいこと
始めに4桁の数字を入力してもらい、その後合計値にしたい数字を入力、入力された数値になるように初めに入力された数字を四則演算し、合計値になる式を見つけたらリストに追加し、すべてのパターンで検証したのちに答えに合致する式をすべて表示するプログラムを作っています
4つの数字を四則演算する際に、下記のコードのようなすべての計算を各プログラムではコードが見づらくわかりにくくなると感じ、for文でできる限り短いコードを作ろうと考えているのですが、乗算だけの繰り返しや、加算だけの繰り返しの記事を見つけることはできたものの、四則演算すべての繰り返しを見つけることができませんでした。
forによる繰り返しで四則演算すべてを行うのは難しいでしょうか?
また、for以外により分かりやすくきれいなコードになるやり方があれば教えていただけると幸いです
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
Java
1import java.util.ArrayList; 2import java.util.InputMismatchException; 3import java.util.List; 4import java.util.NoSuchElementException; 5import java.util.Scanner; 6public class Main { 7 public static void main (String[]args) throws Exception{ 8 //数字を抜き取り、それぞれの数字を入れ替え、計算処理を施し、次に指定する数になるか調べる 9 int number; 10 System.out.println("4桁の数字を入力してください"); 11 while(true) { 12 try { 13 number = new Scanner(System.in).nextInt(); 14 String str = String.valueOf(number); 15 if(str.length()!=4) { 16 throw new InputMismatchException (); 17 } 18 break; 19 } catch (InputMismatchException e) {} 20 catch (NoSuchElementException e) {} 21 } 22 23 int totalNumber; 24 System.out.println("合計値にしたい数字を入力してください"); 25 while(true) { 26 try { 27 28 totalNumber = new Scanner(System.in).nextInt(); 29 break; 30 } catch (InputMismatchException e) {} 31 catch (NoSuchElementException e) {} 32 } 33 34 String str = String.valueOf(totalNumber); 35 System.out.println(Calculation(str,number)); 36 } 37 38 private static String Calculation(String totalNumber,int number) { 39 List<String> numberList = new ArrayList<String>(); 40 List<StringBuilder> formulaList = new ArrayList<StringBuilder>(); 41 StringBuilder sb = new StringBuilder(); 42 43 for(int i = 0;i< String.valueOf(number).length();i++){ 44 numberList.add(String.valueOf(number).substring(i,i+1)); 45 } 46 int num1 = Integer.parseInt(numberList.get(0)); 47 int num2 = Integer.parseInt(numberList.get(1)); 48 int num3 = Integer.parseInt(numberList.get(2)); 49 int num4 = Integer.parseInt(numberList.get(3)); 50 51 //ここで四則演算 52 if(num1+num2+num3+num4==number) { 53 sb.append(num1); 54 sb.append("+"); 55 sb.append(num2); 56 sb.append("+"); 57 sb.append(num3); 58 sb.append("+"); 59 sb.append(num4); 60 formulaList.add(sb); 61 } 62 if(num1+num2+num3-num4==number) { 63 sb.append(num1); 64 sb.append("+"); 65 sb.append(num2); 66 sb.append("+"); 67 sb.append(num3); 68 sb.append("-"); 69 sb.append(num4); 70 formulaList.add(sb); } 71 //以下同じ処理をすべての四則演算で行う 72 73 74 return formulaList.toString(); 75 }
試したこと
もう一つListを作り、中に"+-*/"を入れ、for文で活用しようとしたものの文字列としてしか利用できませんでした(計算に使えるやり方を調べたものの把握できませんでした)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー