2017-07-25 13 views
-1

問題を解決して2つの入力整数を反転し、結果を加算しようとしました。これを行うための明白な方法は、モジューロを取って各桁を取得し、それを元に戻すことですが、整数を文字列に変換して、簡単に反転させてからintに変換し直したいそれと答えを返す。Integer.parseInt()の使用時に実行時エラーが発生しました

コード:

import java.util.*; 


    class TestClass { 
    public static void main(String args[]) throws Exception { 
    /* 
    * Read input from stdin and provide input before running 
    * Use either of these methods for input 

    //BufferedReader 
    BufferedReader br = new BufferedReader(new  InputStreamReader(System.in)); 
    String line = br.readLine(); 
    int N = Integer.parseInt(line); 
    */ 
    //Scanner 
    Scanner s = new Scanner(System.in); 
    int N = s.nextInt(); 
    String num1= " "; 
    String modnum1= " "; 
    String num2= " "; 
    String modnum2= " "; 
    int s1=0; 
    int s2=0; 
    while (N!=0) 
    { 
     int x=s.nextInt(); 
     int y=s.nextInt(); 
     //System.out.println(x+" "+y); 
     num1=Integer.toString(x); 
     num2=Integer.toString(y); 
     for (int i=(num1.length()-1); i>=0; i--) 
     { 
      modnum1=modnum1 + num1.charAt(i); 
     } 
     //System.out.println(modnum1); 
     // for (int j=(num1.length()-1); j>=0; j--) 
     //{ 
      // modnum2=modnum2 + num2.charAt(j); 
     //} 

     s1=Integer.parseInt(modnum1); 
     System.out.println(s1); 
     } 

     N--; 
    } 

    //System.out.println("Hello World!"); 
} 

これは私が取得していますエラーです:

Exception in thread "main" java.lang.NumberFormatException: For input string: " 543" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
    at java.lang.Integer.parseInt(Integer.java:569) 
    at java.lang.Integer.parseInt(Integer.java:615) 
    at chiller.main(chiller.java:40) 

ライン40私はparseIntを使用しているラインです。 .trim()ハックも使用しましたが、それでも動作しません。

+1

エラーとは何ですか? – Compass

+0

'modnum1'の内容は何ですか?私は最初にスペースを入れています。それを印刷しますが、 's1 = Integer.parseInt(modnum1.trim());'がそれを見つけられるかもしれないと思います。 –

+0

私は '' modnum1'を空白で初期化するのは賢明ではないと思っていますし、 '' 1234 ''のような文字列が有効な数字を表すことを望みます。 – Tom

答えて

0

Javaが先行する空白のためにをIntegerとして解析できなかったため、エラーが原因です。先頭の+または-記号はInteger.parseInt() documentationとして許可されています。

あなたは空の文字列としてmodnum1を宣言することで、あなたのコードでそれを修正することができます:

String modnum1 = ""; 
+0

私はそれを試みたが、まだ動作しません。 –

+0

新しいBigInteger(modnum1)で試してください –

+0

そしてあなたの新しい変更で質問を更新してください –

関連する問題