2012-03-28 33 views
-1

So habe ich eine harte Zeit mit meiner Situation und brauche einen Rat. Ich versuche, meine zwei Strings, die ich habe, in ganze Zahlen zu konvertieren, damit ich sie in mathematischen Gleichungen verwenden kann. Hier ist was ich versucht habe, aber es bringt mir einen Fehler in der App.Wie konvertiert man String in Integer?

'  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); 

     } 
    }); 

Gibt es etwas, was ich falsch mache? Vielen Dank für Ihre Hilfe.

EDIT: Ja das ist Java. num1 und num2 sind Strings, die ich zuvor benannt habe. Was meinst du mit trimmen?

+0

Welche Sprache ist das? Wo stellst du 'num1' ein? Nehmen wir an, dass Java diese Zeichenfolgen trimmt, bevor Sie sie analysieren. – Perception

+0

Was ist der Fehler? 'Integer.parseInt (String)' löst 'NumberFormatException' aus - wenn die Zeichenfolge keine analysierbare Ganzzahl enthält. –

+0

Welchen Fehler bekommen Sie? Wenn es sich in edit.setText (...) befindet, müssen Sie möglicherweise edit.setText (String.valueOf (first + second)) ändern; – LazyCubicleMonkey

Antwort

1

Vergewissern Sie sich, dass Sie den vom Benutzer eingegebenen Text validiert haben. Ich meine, Sie müssen bestätigen, dass der eingegebene Text tatsächlich eine ganze Zahl ist.

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

Verwendung Sysoutnum1 zu drucken und prüfen, ob es tatsächlich eine Zahl ist.

+1

Alternativ zur Verwendung von 'Sysout', fangen Sie die' NumberFormatException' ab, die ausgelöst würde, wenn die Integer-Konvertierung nicht funktioniert. – charlemagne

2

Was Sie falsch machen, ist .setText() Funktion einen Integer-Wert geben. Alles ist richtig, außer das. Versuchen Sie, diese -

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

EDIT:

Die obige Antwort funktioniert, wenn und nur dann, wenn ein numerischer Wert im EditText.Otherwise eingegeben wird, es wird nicht als eine ganze Zahl analysiert werden und Sie erhalten eine Fehlermeldung .

Jetzt können Sie auch den EditText einschränken, so dass er nur Zahlen als Eingabe annehmen kann.

Dazu können Sie entweder die folgenden Möglichkeiten -

1.In der main XML-Datei, können Sie dies als eine Eigenschaft von EditText umfassen kann -

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

Diese numerische Pop-up wird Tastatur anstelle von QWERTY.

2. Wenn Sie diese programmatisch in Java Datei tun mögen,

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

Sehen Sie die Änderung, wenn Sie die Eingabe als Zahl einschränken möchten. – Exorcist

3

Ihren Code wie dieses

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

wenn alle Leerzeichen in Ihrem String-Variable ersetzen, dass wird eine Zahlenformat-Ausnahme verursachen, während es in int oder float umgewandelt wird.

0

conve rt Ihr Ergebnis aus integer in String

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

Nicht ganz sicher, aber hier ist mein Versuch:

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)); 

     } 
    }); 
Verwandte Themen