2016-11-02 5 views
0

Ich möchte zwei Zeichenfolge-Eingabe von Benutzer in C# nehmen, und dann konvertieren sie in Ganzzahl von ihrer Position in Array und fügen Sie sie dann hinzu. Mein Code ist der folgende.Konvertieren von Zeichen in Zeichenfolge in int in C# zu Paaren von Ziffern aus zwei Zeichenfolgen

Dieser Code zeigt falsche Ausgabe wie "99 99" für den Eingang "12 21". Ich wollte c + d hinzufügen und dann die Summe in j setzen. Letztendlich möchte ich einen Code für großes Summenproblem schreiben. Wo mache ich Fehler?

Erwartet: für die Strings "12" und "34" Ausgabe als "46" (1 + 3 und 2 + 4).

+0

was Ausgang für String erwartet bis "12 21", wie in Ihrer Frage erwähnt? –

+0

Angenommen, 12 weitere 34, dann sollte Ausgabe (1 + 3) 4 und (2 + 4) 6. JohnG Lösung funktioniert. Ich muss Convert.Toint32 (a [i] .ToString()) verwenden, um in Ganzzahl zu konvertieren, oder es nimmt den ASCII-Wert. –

Antwort

0

Wenn Sie die Zeichenfolge (Array) wie ein [i] verwenden Sie nicht bekommen, was Sie wollen ...

die Art und Weise Sie die Zeichenfolge verweisen das Problem ist. Auch wenn "a" eine Zeichenkette ist ... wenn Sie es wie c = Convert.ToInt32(a[i]); referenzieren, wird [i] etwas anderes zurückgeben. Sie möchten den Wert von [i] erhalten.

c = Convert.ToInt32(a[i].ToString()); 
d = Convert.ToInt32(b[i].ToString()); 
+0

Thnx Kumpel. Es funktionierte nach dem Hinzufügen von .ToString(). Kannst du mir etwas über ".ToString()" erklären? –

+0

@Himura Da Battosuai ToString() ist eine Methode, die mit den meisten Klassen kommt. Wenn du nicht weißt, was ein Kurs ist ... Google ist dein Freund hier ... und es gibt eine Menge Hilfe zu diesem Thema. Grundsätzlich gibt ToString() jedoch eine String-Repräsentation des Objekts (Klasse) zurück. Freut mich zu sehen, dass es funktioniert hat. – JohnG

1

Ihre Schleifenlogik macht keinen Sinn.

Sie Schleifen für die Länge der Zeichenfolge eingegeben in einem? Wenn es immer nur 2 Nummern gibt, warum schleifen Sie an erster Stelle?

Warum nicht versuchen, nur:

string a = Console.ReadLine(); 
string b = Console.ReadLine(); 

int c = Int.Parse(a); 
int d = Int.Parse(b); 

int j = c + d 
+0

Es wären nicht immer 2 Nummern. Ich bin am Anfang. Versucht nur zu sehen, ob es funktioniert, dann wird die Schleife angepasst. –

0

Schleife macht keinen Sinn machen, da Sie in integer.In Ihren Code analysieren müssen, wird die Variable c und d den ASCII-Wert von Alphabeten bekommen, statt versuchen

int c=Int.Parse(a); 
int d=Int.Parse(b); 
0

Neben einem [i] und b zu konvertieren [i] zu String zuerst (ToString-Methode), können Sie eher Int32.TryParse verwenden sollten. Es kann verhindern, dass unerwartete Ausnahmen später erscheinen.

Eine grundlegende Implementierung wäre:

int num;

bool Ergebnis = Int32.TryParse (a [i] .ToString(), out num);

if (Ergebnis) // eine Aktion

else // eine andere Aktion

See: https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx

Verwandte Themen