2012-03-31 11 views
0

Ich arbeite an einem Android-Projekt für persönliches Interesse. Ich arbeite mit mehreren EditText-Feldern und alle müssen in einer Nicht-Null-Dezimalzahl oder Integer gefüllt werden. Ich habe in meiner XML-Datei angegeben, dass es nur Zahlen oder Dezimalzahlen akzeptiert. Ich bin nicht vertraut mit Java, aber ich habe in die try/catch-Methode gelesen und wie es verwendet wird, wenn ich versuche, jeden der EditText-Werte als Doppel zu analysieren. Momentan läuft es gut, wenn alle Felder ausgefüllt sind, aber ich möchte eine Art der Ausnahmebehandlung hinzufügen, so dass die Anwendung eine Fehlermeldung anzeigt, wenn sie versehentlich ein Feld eingibt, anstatt zu stürzen. Das klingt nach viel, aber ich denke, es ist ziemlich unbedeutend. Hier ist meine Berechnungsmethode, die ich verwende. Vielen Dank für Ihre Bewertung :)Android: Nach leeren EditText Feldern suchen

public static void calculate() { 

    NumberFormat formatter1 = new DecimalFormat("#0.00"); 
    NumberFormat formatter2 = new DecimalFormat("#0.00000"); 

    Editable evG1F = etG1F.getText(); 
    Editable evG1U = etG1U.getText(); 
    Editable evG2F = etG2F.getText(); 
    Editable evG2U = etG2U.getText(); 
    Editable evG3F = etG3F.getText(); 
    Editable evG3U = etG3U.getText(); 
    Editable evWin = etWin.getText(); 

    double g1f = 0.0; 
    double g1u = 0.0; 
    double g2f = 0.0; 
    double g2u = 0.0; 
    double g3f = 0.0; 
    double g3u = 0.0; 
    double p1odds, p2odds, p3odds, p4odds, p5odds, p6odds, p7odds, p8odds; 
    double totalParlay, profit, finalOdds, risk; 

    win = 0.0; 

    g1f = Double.parseDouble(evG1F.toString()); 
    g1u = Double.parseDouble(evG1U.toString()); 
    g2f = Double.parseDouble(evG2F.toString()); 
    g2u = Double.parseDouble(evG2U.toString()); 
    g3f = Double.parseDouble(evG3F.toString()); 
    g3u = Double.parseDouble(evG3U.toString()); 
    win = Double.parseDouble(evWin.toString()); 

    p1odds = (1/(g1f * g2f * g3f)); 
    p2odds = (1/(g1f * g2f * g3u)); 
    p3odds = (1/(g1f * g2u * g3f)); 
    p4odds = (1/(g1f * g2u * g3u)); 
    p5odds = (1/(g1u * g2f * g3f)); 
    p6odds = (1/(g1u * g2f * g3u)); 
    p7odds = (1/(g1u * g2u * g3f)); 
    p8odds = (1/(g1u * g2u * g3u)); 

    totalParlay = (p1odds + p2odds + p3odds + p4odds + p5odds + p6odds 
      + p7odds + p8odds); 
    profit = 1 - totalParlay; 
    finalOdds = ((profit/totalParlay) + 1); 
    risk = (win/(finalOdds - 1)); 

    p1 = ((risk + win) * p1odds); 
    p2 = ((risk + win) * p2odds); 
    p3 = ((risk + win) * p3odds); 
    p4 = ((risk + win) * p4odds); 
    p5 = ((risk + win) * p5odds); 
    p6 = ((risk + win) * p6odds); 
    p7 = ((risk + win) * p7odds); 
    p8 = ((risk + win) * p8odds); 

    sRisk = risk; 
    sFinalOdds = finalOdds; 

    tvRisk.setText("$" + formatter1.format(Parlay.sRisk)); 
    tvOdds.setText("" + formatter2.format(Parlay.sFinalOdds)); 

} 
+0

Dieser Code fordert ein Array. – MByD

Antwort

1

Sie könnten Ihre parseDouble() Anweisungen in einem try/catch-Block wickeln:

try { 
     g1f = Double.parseDouble(evG1F.getText().toString()); 
     g1u = Double.parseDouble(evG1U.getText().toString()); 
     g2f = Double.parseDouble(evG2F.getText().toString()); 
     g2u = Double.parseDouble(evG2U.getText().toString()); 
     g3f = Double.parseDouble(evG3F.getText().toString()); 
     g3u = Double.parseDouble(evG3U.getText().toString()); 
     win = Double.parseDouble(evWin.getText().toString()); 
    } catch (NumberFormatException e) { 
     // Error handling here 
    } 

Die Ausnahme geworfen wird erhalten, wenn es kein gültiges Doppel ist, oder wenn die Zeichenfolge ist leer. Ich habe die getText() vor toString() bei jedem Aufruf hinzugefügt, weil Sie diese Editable Objekte wirklich nicht weiter deklarieren müssen (da Sie sowieso nur getText() auf ihnen verwenden).

+0

Danke! Ich wusste nicht, ob die Editierbaren Variablen deklariert werden müssen oder nicht. – user1055656

+0

Auch wenn ich nicht die deklarierten Editierbaren Variablen verwende, denke ich, dass es etG1F.getText() sein sollte. ToString() – user1055656

+0

Sie haben absolut Recht :) –