初心者です。
入力された1~999の2つの整数を繰り上がりのない足し算をして、計算結果を出力するプログラムを作っています。
例)27+84 の場合
1>1の位の 7+4=11
2>10の位の 2+8=10
3>各計算結果の1の位を出力する 答え:01 ※先頭の計算結果が0の場合でも表示すること。
調べたりしながら、自分なりにコーディングしましたが長くなりました。
もう少し簡単にできそうといろいろ試しましたが、うまくいかず
いいやり方や省略できるところなどあると思います。
アドバイスを頂けると幸いです。
よろしくお願いいたします。
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String num1 = sc.next(); //整数取得 String num2 = sc.next(); //整数取得 String num3 = ""; char[] cNum1 = num1.toCharArray(); //char型にキャストして1桁ずつの数字に分ける char[] cNum2 = num2.toCharArray(); //char配列数=数字の桁数 int len1 = cNum1.length; int len2 = cNum2.length; Integer sum1 = 0; Integer sum2 = 0; Integer sum3 = 0; //入力値が2桁と3桁の場合がある if(len1 == 2 && len2 == 2){ //[0]10の位、[1]1の位 sum1 = Character.getNumericValue(cNum1[1]) + Character.getNumericValue(cNum2[1]); //同じ桁数で計算 sum2 = Character.getNumericValue(cNum1[0]) + Character.getNumericValue(cNum2[0]); }else if(len1 == 3 && len2 == 3){ //[0]100の位、[1]10の位、[2]1の位 sum1 = Character.getNumericValue(cNum1[2]) + Character.getNumericValue(cNum2[2]); //同じ桁数で計算 sum2 = Character.getNumericValue(cNum1[1]) + Character.getNumericValue(cNum2[1]); sum3 = Character.getNumericValue(cNum1[0]) + Character.getNumericValue(cNum2[0]); num3 = sum3.toString(); }else if(len1 == 3 && len2 == 2){ sum1 = Character.getNumericValue(cNum1[2]) + Character.getNumericValue(cNum2[1]); //同じ桁数で計算 sum2 = Character.getNumericValue(cNum1[1]) + Character.getNumericValue(cNum2[0]); sum3 = Character.getNumericValue(cNum1[0]) ; num3 = sum3.toString(); }else if(len1 == 2 && len2 == 3){ sum1 = Character.getNumericValue(cNum2[2]) + Character.getNumericValue(cNum1[1]); //同じ桁数で計算 sum2 = Character.getNumericValue(cNum2[1]) + Character.getNumericValue(cNum1[0]); sum3 = Character.getNumericValue(cNum2[0]) ; num3 = sum3.toString(); } num1 = sum1.toString(); //String型にキャスト num2 = sum2.toString(); cNum1 = num1.toCharArray(); //char型にキャスト cNum2 = num2.toCharArray(); char[] cNum3 = num3.toCharArray(); //計算結果の1の位のみ表示 if(cNum3.length == 1){ //3桁の場合 System.out.print(cNum3[0]); }else if(cNum3.length != 0){ System.out.print(cNum3[1]); } if(cNum2.length == 1){ System.out.print(cNum2[0]); }else{ System.out.print(cNum2[1]); } if(cNum1.length == 1){ System.out.print(cNum1[0]); }else{ System.out.print(cNum1[1]); } } }
回答1件
あなたの回答
tips
プレビュー