2012-03-28 20 views
-1

私は自分の状況に苦労しており、助言が必要です。私は2つのStringを整数に変換しようとしているので、それらを数式に使うことができます。ここで私が試したことですが、それは私にアプリケーションでエラーが発生します。文字列を整数に変換するには?

'  equals.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

          num1 = edit.getText().toString(); 
      num2 = edit.getText().toString(); 

      int first = Integer.parseInt(num1); 
      int second = Integer.parseInt(num2); 

      edit.setText(first + second); 

     } 
    }); 

私が間違っていることはありますか? ありがとうございました。

編集: はいこれはJavaです。 num1とnum2は私が以前に命名した文字列です。トリムはどういう意味ですか?

+0

これは何語ですか? 'num1'はどこで設定しますか? Javaを仮定すると、それらの文字列を解析する前にこれらの文字列をトリムするようにしてください。 – Perception

+0

エラーは何ですか? 'Integer.parseInt(String)'は 'NumberFormatException'をスローします - 文字列に解析可能な整数が含まれていない場合。 –

+0

どのようなエラーが表示されますか? edit.setText(...)内にある場合は、edit.setText(String.valueOf(first + second))に変更する必要があります。 – LazyCubicleMonkey

答えて

1

ユーザーが入力したテキストの妥当性を確認してください。つまり、入力されたテキストが実際には整数であることを検証する必要があります。

//trim function will remove leading or trailing blank spaces. 
num1 = edit.getText().toString().trim(); 
num2 = edit.getText().toString().trim(); 

num1を印刷し、それが実際の数であるかどうかをチェックするためにSysoutを使用しています。

+1

'Sysout'を使用する代わりに、整数変換が機能しない場合にスローされる' NumberFormatException'をキャッチします。 – charlemagne

2

あなたが間違っていることは、.setText()の整数値を指定することです。 それ以外はすべて正しいです。 これを試してみてください -

edit.setText(""+(first+second));

EDIT:数値がEditText.Otherwiseに入力された場合にのみ、それは文句を言わない整数として解析され、あなたがエラーを取得する場合

上記の答えは動作します。

これで、数字を入力としてのみ使用できるように、EditTextを制限することもできます。

はこのためには、のいずれかを行うことができます以下の -

<EditText android:inputType="number".....> 

これは、数値をポップアップ表示されます - main XMLファイル1.In

は、あなたがのEditTextのプロパティとしてこれを含めることができますキーパッドの代わりにキーパッドを使用します。あなたは、Javaファイルでプログラムこれを行うにあなたの文字列変数のいずれかの末尾のスペース場合

EditText et = new EditText(this); 
et.setInputType(InputType.TYPE_CLASS_NUMBER); 
+0

数字を入力として制限する場合は、編集を参照してください。 – Exorcist

3

この

num1 = edit.getText().toString(); 
    num2 = edit.getText().toString(); 
    num1=num1.trim(); 
    num2=num2.trim(); 
    int first = Integer.parseInt(num1); 
    int second = Integer.parseInt(num2); 

のようなあなたのコードを置き換える、ということにしたい2.Ifは

int型またはfloat型にキャストする際に数値書式例外が発生します。

0

conve RT文字列

edit.setText(Integer.toString(first + second)); 
0

に整数ここにかなり確実ではなくないから、あなたの結果は私の試みです:

equals.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      num1 = edit.getText().toString().trim(); 
      num2 = edit.getText().toString().trim(); // same as num1 why??? 

      int first = Integer.parseInt(num1); 
      int second = Integer.parseInt(num2); // same as first why??? 

      // convert to text after add them together 
      edit.setText("" + (first + second)); 

     } 
    }); 
関連する問題