Array auslesen C#?


12.12.2022, 09:23

LG


12.12.2022, 09:36

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):

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.

BobbyJoe987 
Fragesteller
 12.12.2022, 09:40

Hab ich

0
hi1its1me  12.12.2022, 10:22
@BobbyJoe987

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 ];
    }
0