Ergebnis 1 bis 2 von 2

Thema: C# - Konsolenanwendung Fehler

  1. #1
    Neuer Benutzer
    Registriert seit
    08.10.2017
    Beiträge
    1

    Standard C# - Konsolenanwendung Fehler

    Hallo, ich bin noch ein Anfänger und hätte eine Frage.

    Das ist der Code für mein Programm (Konsolenprogramm):

    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace UbungK6
    {
        class Program
        {
            const int ab = 2;
            const int MAX = 15;
            static void Main(string[] args)
            {
                double[] Eingabedaten = new double[MAX];
                double[] klWerte = new double[ab];
                int j;
                double a, b, x;
                string k;
                bool Ausgabe;
                Ausgabe = Einlesen(Eingabedaten, out j);
                Console.WriteLine();
                for (int i = 0; i < j; i++)
                {
                    Console.WriteLine(Eingabedaten[i]);
                }
                Console.WriteLine();
                while (true)
                {
                    Console.Write("Geben Sie Zahl a ein: ");
                    k = Console.ReadLine();
                    try
                    {
                        a = Convert.ToDouble(k);
                        klWerte[ab] = a;
                        break;
                    }
                    catch
                    {
                        MessageBox.Show("Fehler! Geben Sie gültige Zahlen ein!");
                    }
                }
                while (true)
                {
                    Console.Write("Geben Sie Zahl b ein: ");
                    k = Console.ReadLine();
                    try
                    {
                        b = Convert.ToDouble(k);
                        klWerte[ab] = b;
                        break;
                    }
                    catch
                    {
                        MessageBox.Show("Fehler! Geben Sie gültige Zahlen ein!");
                    }
                }
                x = Kleiner(klWerte);
                Console.Write(Ausgabe);
                Console.WriteLine();
                Console.WriteLine(x);
                Console.ReadLine();
            }
            static bool Einlesen(double[] Einlesen, out int i)
            {
                double[] Eingebedaten = new double[MAX];
                string E;
                double A = 0;
                for (i = 0; i < MAX; i++)
                {
                    do
                    {
                        Console.Clear();
                        Console.Write("Geben Sie die " + (i + 1) + ". Zahl ein: ");
                        E = Console.ReadLine();
                        if (E == "Stopp")
                        {
                            break;
                        }
                        else
                        {
                            try
                            {
                                A = Convert.ToDouble(E);
                                Einlesen[i] = A;
                                break;
                            }
                            catch
                            {
                                MessageBox.Show("Fehler! Geben Sie gültige Zahlen ein!");
                            }
                        }
                    } while (true);
                    if (E == "Stopp")
                    {
                        break;
                    }
                }
                if (i == MAX)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
            static double Kleiner(double[]Werte)
            {
                if (Werte[0] >= Werte[1])
                {
                    return Werte[0];
                }
                else if (Werte[1] >= Werte[0])
                {
                    return Werte[1];
                }
                else
                {
                    return Werte[0];
                }
            }
        }
    }
    Das Problem ist, dass das Programm immer die MessageBox ausgiebt wenn ich eine Zahl eingebe (bzw abstürzt ohne try catch)

    Code:
    while (true)
                {
                    Console.Write("Geben Sie Zahl a ein: ");
                    k = Console.ReadLine();
                    try
                    {
                        a = Convert.ToDouble(k);
                        klWerte[ab] = a;
                        break;
                    }
                    catch
                    {
                        MessageBox.Show("Fehler! Geben Sie gültige Zahlen ein!");
                    }
                }
                while (true)
                {
                    Console.Write("Geben Sie Zahl b ein: ");
                    k = Console.ReadLine();
                    try
                    {
                        b = Convert.ToDouble(k);
                        klWerte[ab] = b;
                        break;
                    }
                    catch
                    {
                        MessageBox.Show("Fehler! Geben Sie gültige Zahlen ein!");
                    }
                }
    LG, Reox.

  2. #2
    CodePlanet Staff Avatar von StarShaper
    Registriert seit
    10.09.2005
    Beiträge
    52

    Standard

    Hallo!

    Ich weiß zwar nicht was du eigentlich vor hast, aber die Tatsache das dein Programm immer eine MessageBox aufzeigt bzw. durch das catch läuft liegt einfach daran, dass du diese Zeile schreibst:

    PHP-Code:
    klWerte[ab] = a
    Vorher hast du ab als Konstante 2 definiert. Das bedeutet, oben steht das hier:

    PHP-Code:
    klWerte[2] = a
    Das ist ein fehlerhafter/ungültiger Indexzugriff, da das Array nur mit der Größe 2 definiert wurde. Man kann also nur mit klWerte[0] oder klWerte[1] darauf zugreifen.

    Eine Änderung sieht so aus.

    PHP-Code:
                while (true)
                {
                    
    Console.Write("Geben Sie Zahl a ein: ");
                    
    Console.ReadLine();
                    try
                    {
                        
    Convert.ToDouble(k);
                        
    klWerte[0] = a;
                        break;
                    }
                    catch
                    {
                        
    MessageBox.Show("Fehler! Geben Sie gültige Zahlen ein!");
                    }
                }
                while (
    true)
                {
                    
    Console.Write("Geben Sie Zahl b ein: ");
                    
    Console.ReadLine();
                    try
                    {
                        
    Convert.ToDouble(k);
                        
    klWerte[1] = b;
                        break;
                    }
                    catch
                    {
                        
    MessageBox.Show("Fehler! Geben Sie gültige Zahlen ein!");
                    }
                } 
    Dein Programm ist ziemlich chaotisch, abgesehen davon dass du Konsole und Windows Forms mischt. Aber Übung macht bekanntlich den Meister...

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •