2012-03-23 6 views
0

Ich entwickle eine Anwendung wo Spinner enthält hinzufügen, sub, mul & div ... aber das Ergebnis gibt immer Null. Wie ich die App entwickle, wenn die Schaltfläche geklickt wird, hängt von dem gewählten Wert des Spinner ab. Der Code ist unter ::ergebnislos android app..calculator gibt immer 0

public void Select(View view) 
    { 
     TextView txt1=(TextView)findViewById(R.id.editText1); 
     TextView txt2=(TextView)findViewById(R.id.editText2); 

     int x=Integer.parseInt(txt1.getText().toString()); 
     int y=Integer.parseInt(txt2.getText().toString()); 

     Spinner spin1=(Spinner)findViewById(R.id.spinner1); 
     String spin_value= spin1.getItemAtPosition(spin1.getSelectedItemPosition()).toString(); 

     if(spin_value=="Add") 
     { 
      int z=x+y; 
      String addvalue=String.valueOf(z); 
      Toast.makeText(this, addvalue, Toast.LENGTH_LONG).show(); 
     } 
     else if (spin_value=="Sub") 
     { 
      int p=x-y; 
      String subvalue=String.valueOf(p); 
      Toast.makeText(this, subvalue, Toast.LENGTH_LONG).show(); 
     } 
     else if (spin_value=="Mul") 
     { 
      int k=x*y; 
      String mulvalue=String.valueOf(k); 
      Toast.makeText(this, mulvalue, Toast.LENGTH_LONG).show(); 
     } 
     else 
     { 
      int g=x/y; 
      String divvalue=String.valueOf(g); 
      Toast.makeText(this, divvalue, Toast.LENGTH_LONG).show(); 
     } 
    } 
} 
+0

Haben Sie versucht, es in einem Debugger zu betrachten? – Tim

+1

Haben Sie dies in einem Debugger versucht? Meine Annahme wäre, dass Sie zu der else-Klausel übergehen und die Division immer zu Null führt, weil sie eine ganzzahlige Division durchführt. –

+0

Bitte fügen Sie den gesamten Code ein, der nicht ausreichend ist. Bitte deklarieren und verweisen Sie Widgets in oncreate nicht onButton click event –

Antwort

0

Bob Kaufmans Kommentar ist korrekt. Sie fallen zu Ihrer else Aussage aufgrund der Vergleiche, die Sie machen. Um Strings in Java zu vergleichen, sollten Sie die Methoden equals(Object o) oder verwenden, nicht ==, es sei denn, Sie möchten feststellen, ob die verglichenen Strings das gleiche Objekt sind.

Darüber hinaus ist es nicht wirklich klar, was von getItemAtPosition zurückgegeben wird, da wir nicht sehen können, welche Art von SpinnerAdapter Sie verwenden. Also ist es vielleicht nicht einmal angebracht, die String Vergleiche in erster Linie zu tun.

Wie, Bob, ich vermute, Sie erhalten 0 wegen Integer-Division. Wenn Sie sagen, 100 in txt1 und sagen wir 40 in txt2, würde ich schätzen, dass Ihr Toast 2 lesen würde.

Verwandte Themen