2016-04-06 2 views
1

Ich versuche, die Benutzereingabe in einer TextBox zu Zahlen hinzuzufügen. Die Bedienung ist ziemlich einfach, aber ich werde gebeten, den Code so gut wie möglich zu optimieren. Bisher habe ich eine Methode erstellt, bei der ich überprüfe, ob die TextBox leer ist oder nicht. Dann habe ich eine Methode, um die Strings von der textBox in "int" zu konvertieren. Jetzt weiß ich jedoch nicht, wie ich diese Zahlen erhalten und sie in meiner "Summen" -Methode verwenden soll. Vielleicht vergesse ich etwas Grundlegendes.C# Wie kann man eine einfache Summe optimieren?

Hier ist mein Code:

private void btnSum_Click(object sender, RoutedEventArgs e) 
{ 
    String num1 = txtNum1.Text; 
    String num2 = txtNum2.Text;  

    if(validate(num1,num2) == false) 
    { 
     MessageBox.Show("Empty fields"); 
    } 
    else 
    { 
     convertNum(num1, num2);  
     MessageBox.Show("The sum is: "); 
    } 
} 


public static Boolean validate(String n1, String n2) 
{ 
    if (n1 == null || n1.Equals("") || n2 == null || n2.Equals("")) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

public static void convertNum(String n1,String n2) 
{ 
    int num1 = 0; 
    int num2 = 0; 
    try 
    { 
     num1 = Int32.Parse(n1); 
     num2 = Int32.Parse(n2);  
    }catch(FormatException) 
    { 
     MessageBox.Show("Input only numbers."); 
    }     
} 

public static int sum(int n1, int n2) 
{ 
    int sum = n1 + n2; 
    return sum;  
} 
+3

Was meinen Sie mit "optimieren"? Du meinst "schneller machen" oder "Code reduzieren"? –

+2

Es ist besser, "int.TryParse" anstelle von "int.Parse" zu verwenden und die Ausnahme abzufangen. – juharr

+0

Die meisten Operationen in Methoden umwandeln. –

Antwort

3

Scheint, wie es viel Simpiler wäre nur die Logik alle in Ihrer Schaltfläche Click-Methode zu tun. Sie müssen nur überprüfen, ob die Textwerte in ganze Zahlen zerlegt werden können. int.TryParse gibt false für null, eine leere Zeichenfolge und eine Zeichenfolge zurück, die keine gültige Ganzzahl ist. Das ist also alles, was Sie wirklich brauchen.

private void btnSum_Click(object sender, RoutedEventArgs e) 
{ 
    int n1, n2; 
    if(int.TryParse(txtNum1.Text, out n1) && int.TryParse(txtNum2.Text, out n2)) 
    { 
     MessageBox.Show("The sum is: " + (n1 + n2)); 
    } 
    else 
    {  
     MessageBox.Show("Enter valid numbers"); 
    } 
} 
+0

Das ist nicht einfach testbar –

1
private void btnSum_Click(object sender, RoutedEventArgs e) 
{ 
String num1 = txtNum1.Text; 
String num2 = txtNum2.Text;  

if(validate(num1,num2) == false) 
{ 
    MessageBox.Show("Empty fields"); 
} 
else 
{ 
    var result = convertNum(num1, num2);  
    MessageBox.Show("The sum is: "+result); 
} 
} 

public static int convertNum(String n1,String n2) 
{ 
int num1 = 0; 
int num2 = 0;  
int result = 0; 
try 
{ 
    num1 = Int32.Parse(n1); 
    num2 = Int32.Parse(n2); 
    result = sum(num1,num2); 
    return result; 
} 
catch(FormatException) 
{ 
    MessageBox.Show("Input only numbers."); 
    return result; 
}  

} 

public static int sum(int n1, int n2) 
{ 
int sum = n1 + n2; 
return sum;  
} 
+1

Ergebnis wird nicht für jeden Teil der Methode zurückgegeben. Sollte es oben deklariert werden? –

+0

Ich habe bearbeitet, bitte überprüfen Sie –

+1

Wenn das Parsen fehlschlägt, wird dies ein Nachrichtenfeld aufstellen, das sagt: "Geben Sie nur Zahlen ein." und dann ein anderer, der sagt "Die Summe ist: 0". – juharr

3

Für den Anfang, Sie könnten Ihre "Validate" -Funktion von diesem ändern:

public static Boolean validate(String n1, String n2) 
{ 
    if (n1 == null || n1.Equals("") || n2 == null || n2.Equals("")) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

... dazu:

public static Boolean validate(String n1, String n2) 
{ 
    return ((!string.IsNullOrEmpty(n1)) && (!string.IsNullOrEmpty(n2))); 
} 

... und diese Zeile:

if(validate(num1,num2) == false) 

... könnte sein:

if (!validate(num1,num2)) 
+1

Dies sind sicherlich gute Vorschläge, aber Sie haben nicht die Kernfrage beantwortet, wie man die analysierten Ints oder die Summe bekommt. – juharr

Verwandte Themen