###前提・実現したいこと
16進数または10進数の2つの整数の和を16進数と10進数で求めるコードを書いています。
ただし、16進数は「0x」を頭につけて、「0xabcd」のように入力します。
###発生している問題・エラーメッセージ
実行するとコンソールで以下のようなエラーが表示されて困っています。
どのように修正すべきでしょうか。
2つの整数の和を求めます。 aの値: 0xaabb bの値: 0xaabb 0xaabb+0xaabb Exception in thread "main" java.lang.NumberFormatException: For input string: "0xaabb" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at javaalgorithm.trial12_14.main(trial12_14.java:20)
###該当のソースコード
java
1import java.util.Scanner; 2 3public class trial12_14 { 4 5 public static void main(String[] args) { 6 Scanner stdIn = new Scanner(System.in); 7 System.out.println("2つの整数の和を求めます。"); 8 //入力はa,b共に16進数かa,b共に10進数のどちらかと仮定する 9 System.out.println("aの値:"); String a = stdIn.next(); 10 System.out.println("bの値:"); String b = stdIn.next(); 11 System.out.println(a + "+" + b); 12 13 int result_dec = 0; 14 15 // 入力された値aとbが16進数かどうかを判断 16 if(a.contains("0x") && b.contains("0x")){ 17 //16進数を10進数に変更 18 int a_dec = Integer.parseInt(a, 16); 19 int b_dec = Integer.parseInt(b, 16); 20 result_dec = a_dec + b_dec; 21 }else{ 22 //String型で入力された値をint型に変更する 23 int a_dec = Integer.parseInt(a); 24 int b_dec = Integer.parseInt(b); 25 result_dec = a_dec + b_dec; 26 } 27 28 String result_hex = Integer.toHexString(result_dec); 29 System.out.print(result_hex); 30 System.out.print("(" + result_dec + ")"); 31 } 32 33}
###補足情報(言語/FW/ツール等のバージョンなど)
Eclipse Java EE IDE for Web Developers.
Version: Neon.3 Release (4.6.3)
Build id: 20170314-1500
###試したこと
java
1import java.util.Scanner; 2 3public class trial12_14 { 4 5 public static void main(String[] args) { 6 Scanner stdIn = new Scanner(System.in); 7 System.out.println("2つの整数の和を求めます。"); 8 9 System.out.println("aの値:"); String a = stdIn.next(); 10 System.out.println("bの値:"); String b = stdIn.next(); 11 System.out.println(a + "+" + b); 12 13 int a_dec = Integer.decode(a); 14 int b_dec = Integer.decode(b); 15 int result_dec = a_dec + b_dec; 16 17 String result_hex = Integer.toHexString(result_dec); 18 System.out.print(result_hex); 19 System.out.print("(" + result_dec + ")"); 20} 21}
ご回答を受けて上記のように書き換えたところ、
2つの整数の和を求めます。 aの値: ab bの値: ab ab+ab Exception in thread "main" java.lang.NumberFormatException: For input string: "ab" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) at java.lang.Integer.parseInt(Integer.java:580) at java.lang.Integer.valueOf(Integer.java:740) at java.lang.Integer.decode(Integer.java:1197) at javaalgorithm.trial_16sum.main(trial_16sum.java:15)
とエラーが表示されてしまいました。
回答3件
あなたの回答
tips
プレビュー