Array auslesen C#?
Hallo, weiß jemand wie ich in einer Forms-Anwendung aus einer TextBox prüfen kann ob die Eingabe im Textfeld gleich mit dem wert in einem Array ist. Es geht hierbei um String Arrays.
LG
Ausschnitt aus dem Code:
namespace Arbeit_Vorbereitung
{
public partial class Form1 : Form
{
string[] Vokabel_Deutsch = { "Hallo", "Wie geht es dir?", "Was machst du?", "Kann ich dir helfen?", "Wie alt bist du?" };
string[] Vokabel_Englisch = { "Hello", "How are you?", "What are you doing?", "Can i help you?", "How old are you?" };
public Form1()
{
InitializeComponent();
}
private void label1_Click(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
Random rnd = new Random();
int Voc_Deutsch = rnd.Next(Vokabel_Deutsch.Length);
textBox1.Text = Vokabel_Deutsch[Voc_Deutsch];
}
private void button2_Click(object sender, EventArgs e)
{
//Prüfen
try
{
// Prüfe den Wert aus der TextBox mit dem Inhalt von
int index = Array.IndexOf(Vokabel_Deutsch, textBox1.Text);
textBox1.Text = index + "";
/*// Wenn der Wert gefunden wurde, prüfe, ob der Index-Wert mit dem Index-Wert von array2 übereinstimmt
if (index >= 0 && index < Vokabel_Englisch.Length && Vokabel_Deutsch[index] == Vokabel_Englisch[index])
{
// Der Index-Wert stimmt überein, zeige eine Nachricht an
MessageBox.Show("Der Index-Wert stimmt überein");
} */
if ()
{
}
else
{
}
}
catch (Exception q)
{
MessageBox.Show("Leider Falsch" + q.Message);
}
}
/*
// Prüfe den Wert aus der TextBox mit dem Inhalt von
array1 int index = Array.IndexOf(array1, textBox1.Text);
// Wenn der Wert gefunden wurde, prüfe, ob der Index-Wert mit // dem Index-Wert von array2 übereinstimmt
if (index >= 0 && index < array2.Length && array1[index] == array2[index])
{
// Der Index-Wert stimmt überein, zeige eine Nachricht an
MessageBox.Show("Der Index-Wert stimmt überein");
}
else {
// Der Index-Wert stimmt nicht überein, zeige eine Nachricht an
MessageBox.Show("Der Index-Wert stimmt nicht überein");
}
*/
4 Antworten
In Deinem Code könntest Du die Array.IndexOf()-Methode in der Klick-Ereignisbehandlung von Button2 verwenden, um den Index des Werts aus der TextBox im Vokabel_Deutsch-Array zu suchen. Hier ist ein Beispiel:
private void button2_Click(object sender, EventArgs e)
{
// Suche den Index des Werts aus der TextBox im Vokabel_Deutsch-Array
int index = Array.IndexOf(Vokabel_Deutsch, textBox1.Text);
// Wenn der Index gefunden wurde
if (index >= 0)
{
// Prüfe, ob der Index-Wert mit dem Index-Wert von Vokabel_Englisch übereinstimmt
if (Vokabel_Deutsch[index] == Vokabel_Englisch[index])
{
// Der Index-Wert stimmt überein, zeige eine Nachricht an
MessageBox.Show("Der Index-Wert stimmt überein");
}
else
{
// Der Index-Wert stimmt nicht überein, zeige eine Nachricht an
MessageBox.Show("Der Index-Wert stimmt nicht überein");
}
}
else
{
// Der Wert wurde im Array nicht gefunden, zeige eine Nachricht an
MessageBox.Show("Der Wert wurde im Array nicht gefunden");
}
}
Kaufe dir folgendes Lehrbuch (denn Du wirst noch viele Fragen dieser Art haben):
- C# und dieses Buch — der derzeit einfachste Weg, programmieren zu lernen. /Buch /M /MM
Ich würde zum prüfen ob ein wert in einem Array gefunden werden kann mit einer foreach schleife arbeiten bei der eine vorher angelegte Boolean-Variable bei einem treffer auf True gesetzt wird
Das würde dann ungefähr so aussehen:
bool gefunden = false;
foreach(string wert in array)
{
if(textbox.Text == wert)
{
gefunden = true;
}
}
Poste doch mal den Code, den du bereits hast und erkläre wo du genau nicht weiter kommst.
Also:
Ich versuche mal ein paar Möglichkeiten zu nennen:
Ich nehme mal an, du hast zwei TextBoxen. Eine in die der deutsche Text rein geschrieben wird und eine weitere in die der Anwender den englischen Text eintippen kann.
Mit diesem Code holst du dir ja bereits den Index des Deutschen Textes:
int index = Array.IndexOf(Vokabel_Deutsch, textBox1.Text);
Und so könntest du dir den Index des Englischen Texts holen:
int indexEngl = Array.IndexOf(Vokabel_Englisch, textBox2.Text);
Und so könntest du dann prüfen ob das ganze übereinstimmt:
if(index == indexEngl) { ....}
Was ich an deiner Stelle jedoch anders machen würde:
In der Methode button1_Click() holst du dir per Zufallszahl einen Deutschen Text und gibst diesen in einer TextBox aus. Ich würde statt einer Textbox jedoch eher ein Label verwenden. Damit kann der Anwender den Deutschen Text nicht mehr verändern, sondern nur einen Englischen Text eingeben.
Außerdem würde ich den Index der Vokabel sofort in einer Klassen-Variable speichern. Dann brauchst du die Deutsche Vokabel hinterher nicht mehr per IndexOf suchen, sondern du hast den Wert bereits.
Das könnte so aussehen:
private int index = -1;
private void button1_Click(object sender, EventArgs e)
{
Random rnd = new Random();
index = rnd.Next(Vokabel_Deutsch.Length);
label1.Text = Vokabel_Deutsch[index ];
}
Hab ich