Benutzer mit den meisten Antworten
IndexOutOfrangeException wurde nicht behandelt

Frage
-
Hallo,
wenn ich 3 Bedingungen in if Schleife eingebe stürzt das Programm ab und zeigt: IndexOutOfrangeException wurde nicht behandelt. Woran liegt es bitte?
hier ist mein Code:
private void button1_Click(object sender, EventArgs e) { eingabe = textBox1.Text; if (eingabe[0] == eingabe[3] && eingabe[1] == eingabe[2] || eingabe[0] == eingabe[6] && eingabe[1] == eingabe[5] && eingabe[2] == eingabe[4] || eingabe[0] == eingabe[4] && eingabe[1] == eingabe[3]) { rechne(); } else { rechne1(); } }
- Bearbeitet indexOutOfRangeException wurde nich behandelt Mittwoch, 16. Januar 2019 12:46
Antworten
-
Hi,
hier mal eine Mini-Demo:var s = "Anna"; bool res = true; for (int i = 0; i < s.Length / 2; i++) res &= char.ToLower(s[i]) == char.ToLower(s[s.Length - i - 1]); Console.WriteLine(res);
--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. Januar 2019 09:52
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 1. Februar 2019 14:56
-
Hi,
hier noch eine kleine Demo mit Linq (using System.Linq;)
string deinString = "Anna"; bool result = deinString.ToLower().SequenceEqual(deinString.ToLower().Reverse());
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Florian Haupt Donnerstag, 17. Januar 2019 08:01
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 1. Februar 2019 14:56
-
es geht um Palindrom
Dann nimm die Strings.StrReverse (String) Method für den Vergleich
if (eingabe == Strings.StrReverse(eingabe)) { // Ist ein Palindrom ... }
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Florian Haupt Donnerstag, 17. Januar 2019 08:01
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 1. Februar 2019 14:56
-
Es geht auch Explizit:
bool bPalindrom = String.Equals(new string(meinString.Reverse().ToArray()), meinString, StringComparison.OrdinalIgnoreCase);
- Gruß Florian
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. Januar 2019 09:51
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 1. Februar 2019 14:56
Alle Antworten
-
Hallo,
mit welchem Datentyp ist die Variable "eingabe" deklariert; ich vermute als "string"? In der If Bedingung (nicht Schleife) verwendest Du es wie ein Array, wohl um an die einzelnen Zeichen zu kommen.
Hat die Eingabe nur 6 Buchstaben, schlägt eingabe[6] fehl, weil dieses 7te Zeichen nicht vorhanden ist.
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Mittwoch, 16. Januar 2019 12:54
-
Hallo,
mit welchem Datentyp ist die Variable "eingabe" deklariert; ich vermute als "string"? In der If Bedingung (nicht Schleife) verwendest Du es wie ein Array, wohl um an die einzelnen Zeichen zu kommen.
Hat die Eingabe nur 6 Buchstaben, schlägt eingabe[6] fehl, weil dieses 7te Zeichen nicht vorhanden ist.
genau das! vielen Dank für Deine schnelle Antwort.
Wie kann ich bitte das Problem lösen? Ich meine, damit die eingabe[6] nicht fehlschlägt, wenn weitere Zeichen nicht vorhanden sind?
- Bearbeitet indexOutOfRangeException wurde nich behandelt Mittwoch, 16. Januar 2019 13:25
-
Hi,
greif eben nicht auf Elemente zu, die es nicht gibt.
Soweit ich das verstanden habe, muss dein String genau bzw. mind. 7 Zeichen beinhalten? Falls ja, prüf das vorher.
eingabe = textBox1.Text; if( eingabe.Length >= 7 ) { ... }
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport -
Hi,
greif eben nicht auf Elemente zu, die es nicht gibt.
Soweit ich das verstanden habe, muss dein String genau bzw. mind. 7 Zeichen beinhalten? Falls ja, prüf das vorher.
eingabe = textBox1.Text; if( eingabe.Length >= 7 ) { ... }
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
- IT Beratung, Softwareentwicklung, RemotesupportHallo, vielen Dank für deine Antwort. Nein, es geht um Palindrom, aber Deine Lösung ist ein Denkstoß für meine Experiment zu hause.
Wenn in Input das Wort "Anna" steht, es wird geprüft, ob eingabe[0] == eingabe[4], also ob der erste Buchstabe "a" ist gleich die letzte "a" && eingabe[1] == eingabe[2], also ob (a=a und n=n) , Ausgabe soll("Palindrom ist richtig") sein… ich bin irgendwie überzeugt, dass meine Lösung passt nicht, denn die Indexe werden verglichen und in mehreren If Statements geprüft, was wahrscheinlich zu dem o.g. Fehler führen könnte?
-
Hi,
hier mal eine Mini-Demo:var s = "Anna"; bool res = true; for (int i = 0; i < s.Length / 2; i++) res &= char.ToLower(s[i]) == char.ToLower(s[s.Length - i - 1]); Console.WriteLine(res);
--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. Januar 2019 09:52
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 1. Februar 2019 14:56
-
Hi,
hier noch eine kleine Demo mit Linq (using System.Linq;)
string deinString = "Anna"; bool result = deinString.ToLower().SequenceEqual(deinString.ToLower().Reverse());
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Als Antwort vorgeschlagen Florian Haupt Donnerstag, 17. Januar 2019 08:01
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 1. Februar 2019 14:56
-
es geht um Palindrom
Dann nimm die Strings.StrReverse (String) Method für den Vergleich
if (eingabe == Strings.StrReverse(eingabe)) { // Ist ein Palindrom ... }
Olaf Helper
[ Blog] [ Xing] [ MVP]- Als Antwort vorgeschlagen Florian Haupt Donnerstag, 17. Januar 2019 08:01
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 1. Februar 2019 14:56
-
Hi,
hier mal eine Mini-Demo:var s = "Anna"; bool res = true; for (int i = 0; i < s.Length / 2; i++) res &= char.ToLower(s[i]) == char.ToLower(s[s.Length - i - 1]); Console.WriteLine(res);
--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks
so ein beautiful Code ^^ Danke schön -
Hi,
hier noch eine kleine Demo mit Linq (using System.Linq;)
string deinString = "Anna"; bool result = deinString.ToLower().SequenceEqual(deinString.ToLower().Reverse());
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
Der Code ist super. Vielen Dank dafür. -
es geht um Palindrom
Dann nimm die Strings.StrReverse (String) Method für den Vergleich
if (eingabe == Strings.StrReverse(eingabe)) { // Ist ein Palindrom ... }
Olaf Helper
[ Blog] [ Xing] [ MVP]
private void button1_Click(object sender, EventArgs e) { string ausgabe = "Palindrom ist richtig"; string eingabe = textBox1.Text; if (eingabe != Strings.StrReverse(eingabe)) { ausgabe = "Palindrom ist nicht richtig"; } textBox2.AppendText("ausgabe"); }
Leider funktioniert StrReverse nicht? :( -
Leider funktioniert StrReverse nicht? :(
Es funktioniert schon. Genau wie die anderen Lösungen berücksichtigt "StrReverse" auch die Groß/Kleinschreibung.
Wenn du es so änderst, liefert es das gleiche Ergebnis, wie die anderen:
if (deinString.ToLower() == Strings.StrReverse(deinString.ToLower())) { // Ist ein Palindrom }
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
-
Es geht auch Explizit:
bool bPalindrom = String.Equals(new string(meinString.Reverse().ToArray()), meinString, StringComparison.OrdinalIgnoreCase);
- Gruß Florian
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Mittwoch, 23. Januar 2019 09:51
- Als Antwort markiert Dimitar DenkovMicrosoft contingent staff, Administrator Freitag, 1. Februar 2019 14:56
-
namespace SequenceequelTest { public partial class Form1 : Form { string eingabe1; bool x; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { textBox2.ForeColor = Color.Green; string ausgabe = "Palindrom ist richtig!"; string eingabe = textBox1.Text.ToLower(); string meinTriming = eingabe.Replace(" ", ""); for (int i = 0; i < (meinTriming.Length / 2); i++) { if (eingabe == "") { textBox1.AppendText("please enter a palindrom word"); } if (meinTriming[i] != meinTriming[meinTriming.Length - i - 1]) { textBox2.ForeColor = Color.Red; ausgabe = "Palindrom ist nicht richtig!"; } } textBox2.AppendText(ausgabe); } } }
@ Florian:
eine schöne aber für einen Anfänger sehr komplizierte Lösung. Danke schön ^^
so sieht meine eigene Lösung jtzt aus
Leider erkannt c# den Schlüsselwort nicht :(
- Bearbeitet indexOutOfRangeException wurde nich behandelt Freitag, 18. Januar 2019 13:52
-
Hi,
ich habe deine Lösung mal überarbeitet. Deine Abfrage " if (eingabe == "") " wird nie erreicht, wenn meinTriming == "" ist, weil die Schleife dann nie durchlaufen wird.
Weiter habe ich auf "meinTriming" verzichtet.
Was ich auch nicht verstehe, warum nimmst du "AppendText" ?? Das fügt ein einen Text an.
private void button3_Click(object sender, EventArgs e) { textBox4.ForeColor = Color.Green; string ausgabe = "Palindrom ist richtig!"; string eingabe = textBox3.Text.Trim().ToLower(); if (eingabe != "") { for (int i = 0; i < (eingabe.Length / 2); i++) { if (eingabe[i] != eingabe[eingabe.Length - i - 1]) { textBox4.ForeColor = Color.Red; ausgabe = "Palindrom ist nicht richtig!"; } } textBox4.Text = ausgabe; } else { textBox3.Text = "please enter a palindrom word"; } }
PS: welches Schlüsselwort erkennt C# nicht?
Gruß
Freiberufler im Bereich Softwareentwicklung Von der PLC und Robotik zu VB.NET & C#, vorrangig WPF und UWP
- Bearbeitet Stefan Krömer Freitag, 18. Januar 2019 20:06
-
Hi Stefan,
ich würde noch ein break einfügen, da das erstmalige Auftreten einer Ungleichheit ausreichend ist für "Palindrom ist nicht richtig!".--
Viele Grüsse
Peter Fleischer (ehem. MVP für Developer Technologies)
Meine Homepage mit Tipps und Tricks