2017-09-21 16 views
0

Je suis vraiment nouvelle en programmation. J'essaie d'utiliser une simple calculatrice moyenne et d'obtenir une force proche, c'est ce que montre le logcat. Je courais version studio Android 2.3.3Calculatrice moyenne Exception fatale

FATAL EXCEPTION: main 
Process: com.vu.gradingapp, PID: 6312 
java.lang.NumberFormatException: For input string: "" 
    at java.lang.Integer.parseInt(Integer.java:620) 
    at java.lang.Integer.valueOf(Integer.java:794) 
    at com.vu.gradingapp.AverageActivity$1.onClick(AverageActivity.java:37) 
    at android.view.View.performClick(View.java:6219) 
    at android.view.View$PerformClick.run(View.java:24482) 
    at android.os.Handler.handleCallback(Handler.java:769) 
    at android.os.Handler.dispatchMessage(Handler.java:98) 
    at android.os.Looper.loop(Looper.java:164) 
    at android.app.ActivityThread.main(ActivityThread.java:6540) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767) 

Le code que je utilise est le suivant

public class AverageActivity extends AppCompatActivity { 
EditText editmanner, editinstances, editshortstance, editstrikes, editboxingskills, editknocks, editkicks, editResults; 
Button btnResults; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.average_page); 
    editmanner =(EditText)findViewById(R.id.editText8); 
    editinstances = (EditText)findViewById(R.id.editText9); 
    editshortstance = (EditText)findViewById(R.id.editText10); 
    editstrikes = (EditText)findViewById(R.id.editText11); 
    editboxingskills = (EditText)findViewById(R.id.editText12); 
    editknocks = (EditText)findViewById(R.id.editText13); 
    editkicks = (EditText)findViewById(R.id.editText14); 
    editResults = (EditText)findViewById(R.id.editText15); 
    btnResults = (Button) findViewById(R.id.button10); 
    btnResults.setOnClickListener(new View.OnClickListener(){ 
@Override 
public void onClick(View v) { 
    int first, second, third, fourth, fifth, sixth, seventh, results; 
    first=Integer.valueOf(editmanner.getText().toString()); 
    second=Integer.valueOf(editinstances.getText().toString()); 
    third=Integer.valueOf(editshortstance.getText().toString()); 
    fourth=Integer.valueOf(editstrikes.getText().toString()); 
    fifth=Integer.valueOf(editboxingskills.getText().toString()); 
    sixth=Integer.valueOf(editknocks.getText().toString()); 
    seventh=Integer.valueOf(editkicks.getText().toString()); 
    results=(first+second+third+fourth+fifth+sixth+seventh)/7; 
    editResults.setText(String.valueOf(results)); 
} 
    }); 


} 
public void knowtheresults (View view) { 
    String button_text; 
    button_text = ((Button) view).getText().toString(); 
    if (button_text.equals("Summary")) { 
     Intent intent = new Intent(this, ResultActivity.class); 
     startActivity(intent); 
    } else if (button_text.equals("Back")) { 
     Intent intent = new Intent(this, MainActivity.class); 
     startActivity(intent); 

ce que je fais mal: D

Merci les gars

+0

L'erreur indique que vous ne pouvez pas convertir la valeur '" "' en nombre. Donc, utilisez '0' à la place du nombre est vide. –

+0

Je finis votre problème est que vous faites le 'Integer.valueOf()' sur une chaîne vide. – Ivan

+0

Je vous suggère d'apprendre au moins les bases de Java avant de commencer avec Android, sinon vous aurez des problèmes comme ça tout le temps. – taurelas

Répondre

0

erreur indique vous ne pouvez pas convertir la valeur "" en nombre C'est java.lang.NumberFormatException. Il faut donc utiliser 0 au lieu du numéro est le premier chèque en blanc si edittext est vide de définir sa valeur à 0

int first; 
if(editmanner.getText().toString().equals("")){ 
first = 0 
}else{ 
first = Integer.valueOf(editmanner.getText().toString()); 
} 

faire pour vos variables tout int.

-1

java.lang.NumberFormatException pour indiquer que Jeté l'application a tenté de convertir une chaîne à l'un des types numériques, mais que la chaîne n'a pas le format approprié.

Le logcat a déjà indiqué quelle était la cause de l'accident. Tout ou partie de votre EditText a une chaîne vide. Pour convertir une chaîne en entier, la chaîne doit être numérique (0,1,2 etc.). Vous devez définir EditText avec une valeur numérique (par exemple: 0).

0

Mettez à jour votre code avec une telle vérification pour chaque int variable:

if (editmanner().toString().isEmpty()) 
    first = 0; 
else 
    first = Integer.parseInt(editmanner().toString()); 

Puisque vous avez int variables (non Integer), il est préférable d'utiliser parseInt au lieu valueOf

0

Merci les gars, je viens Complété le textedits avec (0) et travaille maintenant. Veuillez m'excuser pour mes questions stupides.

Y a-t-il un moyen de masquer ces zéros sur la vue de texte afin qu'elle affiche des blancs.

+0

Vous n'avez pas besoin de remplir edittexts avec 0. Il suffit de le laisser vide et faire la vérification, j'ai fourni un échantillon dans ma réponse –