C# Programm-Problem

Computer Forum

Zurück   Computer Forum - PC Forum - ModernBoard.de > Computerprobleme > Webmaster Hilfe / Programmierer Forum

Sie betrachten gerade: C# Programm-Problem


Antwort
Alt 25.05.2011, 18:55 C# Programm-Problem #1
08/15 User
 
Benutzerbild von weltbesiedler
 
Registriert seit: 19.07.2010
Ort: Bayern
Beiträge: 2.827
weltbesiedler eine Nachricht über Skype™ schicken
Standard C# Programm-Problem

Hab ein kleines Problem. Ich möchte das er in ein Label einen Text schreibt, wenn die Eingabe vom Typ String ist, also ein Wort, keine Zahl. Ich hab versucht das Problem so zu lösen:
Code:
namespace Taschenrechner
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            
            int Zahl1 = Convert.ToInt16(textBox1.Text);
            int Zahl2 = Convert.ToInt16(textBox2.Text);
            int ergebnis = Zahl1 + Zahl2;
            ergebnis = Zahl1 + Zahl2;
            textBox3.Text = Convert.ToString(ergebnis);
            if (textBox3.Text == string)
                label2.Text = "Nur Zahlen";
          
        }

        private void button2_Click(object sender, EventArgs e)
        {
            int Zahl1 = Convert.ToInt16(textBox1.Text);
            int Zahl2 = Convert.ToInt16(textBox2.Text);
            int ergebnis = Zahl1 + Zahl2;
            ergebnis = Zahl1 - Zahl2;
            textBox3.Text = Convert.ToString(ergebnis);
            if (textBox3.Text == string)
                label2.Text = "Nur Zahlen";

        }
    }
}
Allerdings scheint das Wort "string" nicht zulässig zu sein:
Zitat:
Ungültiger Ausdruck "string".

Alt 25.05.2011, 19:58 C# Programm-Problem #2
C8H10N4O2 - Geniesser
 
Benutzerbild von xandros
 
Registriert seit: 05.07.2007
Ort: Nordamerika, CA, NB
Beiträge: 18.694
xandros eine Nachricht über MSN schicken xandros eine Nachricht über Yahoo! schicken xandros eine Nachricht über Skype™ schicken
Standard AW: C# Programm-Problem

String ist ein Keyword, welches in der verwendeten Form als Variable betrachtet wird..... und die Variable wurde nirgends definiert! (waere auch ziemlich ungluecklich, einer Variablen die Bezeichnung eines Keywords zu geben!)

Ich gehe davon aus, dass du in den betreffenden Zeilen lediglich ueberpruefen willst, ob der String eine Zeichenkette oder eine Zahl ist.

Entweder verwendest du dafuer TryParse() oder du bindest z.B. die Bibliothek Microsoft.VisualBasic.dll ein, mit der du dann auf die VB-Funktion IsNumeric() zugreifen kannst.Damit waere es dann z.B. moeglich, die Abfrage auf != IsNumeric umzustellen.
Alt 27.05.2011, 12:54 C# Programm-Problem #3
08/15 User
Themenstarter
 
Benutzerbild von weltbesiedler
 
Registriert seit: 19.07.2010
Ort: Bayern
Beiträge: 2.827
weltbesiedler eine Nachricht über Skype™ schicken
Standard AW: C# Programm-Problem

Danke schon einmal für deine Hilfe.
Den Code hab ich nun völlig verworfen und hab versucht einen Taschenrechner zu Programmieren.
Es gibt einen Button und 3 Text Boxen. In 2 Text Boxen gibt man zwei Zahlen ein und in die dritte die Rechenart ( Division, Subtraktion, Multiplikation, Addition ), wenn man etwas anderes eingibt, soll die Meldung erscheinen: "Bitte eine Rechenart eingeben".
Ich hab versucht das bis jetzt so zu lösen:
Code:
  
            int a = Convert.ToInt16 (textBox1.Text);
            int b = Convert.ToInt16(textBox2.Text);
            int c = Convert.ToInt16(textBox3.Text);
            int ergebnis;
            if (textBox3.Text == "Division")
                ergebnis = a / b;
            if (textBox3.Text == "Multiplikation")
                ergebnis = a * b;
            if (textBox3.Text == "Subtraktion")
                ergebnis = a - b;
            if (textBox3.Text == "Addition")
                ergebnis = a + b;
            textBox3.Text = Convert.ToString (ergebnis);
Dann erscheint aber die Fehlermeldung:
Zitat:
Verwendung der nicht zugewiesenen lokalen Variable "ergebnis"
Das kommt wahrscheinlich davon, dass der Variable ergebnis erst ein Wert zugeordnet wird, wenn eine If-Anweisung zutrifft. Und wie programmiere ich, dass, wenn keine Rechenart eingegeben wurde, ein Fenster aufgeht mit der oben genannten Meldung?
Try - Catch hab ich schon probiert, aber das geht nicht.
Edit: Keine Ahnung wieso Zeile, wo die Variable a zugewiesen wird, verschoben ist.
Edit:
Hier mal ein zweiter Versucht, der funktioniert aber auch nicht:

Code:
  int a = Convert.ToInt16 (textBox1.Text);
            int b = Convert.ToInt16(textBox2.Text);
            int c = Convert.ToInt16(textBox3.Text);
            int ergebnis;
            int rechenart = Convert.ToInt16(textBox3.Text);
            ergebnis = a + rechenart + b;
            ergebnis = Convert.ToInt16 (textBox4.Text);
            textBox4.Text = Convert.ToString (ergebnis);
Fehlermeldung:
Zitat:
Format Exception wurde nicht behandelt
Alt 27.05.2011, 14:31 C# Programm-Problem #4
C8H10N4O2 - Geniesser
 
Benutzerbild von xandros
 
Registriert seit: 05.07.2007
Ort: Nordamerika, CA, NB
Beiträge: 18.694
xandros eine Nachricht über MSN schicken xandros eine Nachricht über Yahoo! schicken xandros eine Nachricht über Skype™ schicken
Standard AW: C# Programm-Problem

Zitat:
int ergebnis;
Du verwendest hier C# und nicht VB, daher solltest du die Variablen schon korrekt deklarieren und initialisieren.


Code:
int ergebnis = 0;
Zitat:
int rechenart = Convert.ToInt16(textBox3.Text):
Du konvertierst hier ein Character in eine Zahl, was voellig in die Hose gehen muss, wenn dieses Zeichen nicht numerisch ist.....
Zitat:
ergebnis = Convert.ToInt16 (textBox4.Text);
textBox4.Text = Convert.ToString (ergebnis);

Hier nimmst du den Inhalt aus der Textbox4, konvertierst diesen in ein Integer und speicherst es in der Variablen ergebnis. Dann nimmst du den Inhalt aus der Variablen ergebnis, konvertierst ihn in einen String und weist diesen der Textbox4 zu....
Ziemlich ueberfluesig.
Alt 27.05.2011, 18:46 C# Programm-Problem #5
08/15 User
Themenstarter
 
Benutzerbild von weltbesiedler
 
Registriert seit: 19.07.2010
Ort: Bayern
Beiträge: 2.827
weltbesiedler eine Nachricht über Skype™ schicken
Standard AW: C# Programm-Problem

So jetzt mal ein Versuch ganz ohne GUI:

Code:
static void Main(string[] args)
        {
            Console.Write("Hallo, welche Rechenart bevorzugen sie? ");
            string name = Console.ReadLine();
            Console.Write("Welche Zahl1: ");
            string Zahl1 = Console.ReadLine();
            Console.Write("Welche zahl2: ");
            string Zahl2 = Console.ReadLine();
            int ergebnis;
            ergebnis = Convert.ToInt16(Zahl1) + Convert.ToInt16(Zahl2);
            if (name == "Division")
                ergebnis = Convert.ToInt16(Zahl1) / Convert.ToInt16(Zahl2);
                Console.WriteLine(ergebnis);
            if (name == "Subtraktion")
                ergebnis = Convert.ToInt16(Zahl1) - Convert.ToInt16(Zahl2);
                Console.WriteLine(ergebnis);
            if (name == "Multiplikation")
                ergebnis = Convert.ToInt16(Zahl1) * Convert.ToInt16(Zahl2);
                Console.WriteLine(ergebnis);
            if (name == "Addition")
                ergebnis = Convert.ToInt16(Zahl1) + Convert.ToInt16(Zahl2);
                Console.WriteLine(ergebnis);
             Console.ReadLine();
                
        }
    }
Bietet C# so etwas wie "elif" in Python? Weil wenn ich eine Rechnung eingebe, erscheint das Ergebnis immer viermal.
Edit: "else if " gibt es anscheined allerdings wirft das bei mir eine Fehlermeldung aus:
Code:
if (name == "Division")
                ergebnis = Convert.ToInt16(Zahl1) / Convert.ToInt16(Zahl2);
                Console.WriteLine(ergebnis);
            else if (name == "Subtraktion")
                ergebnis = Convert.ToInt16(Zahl1) - Convert.ToInt16(Zahl2);
                Console.WriteLine(ergebnis);
Zitat:
Ungültiger Ausdruck "else".
; erwartet
Nur assignment-, call-, increment-, decrement- und "new object"-Ausdrücke können als Anweisungs verwendet werden.
Alt 28.05.2011, 02:41 C# Programm-Problem #6
C8H10N4O2 - Geniesser
 
Benutzerbild von xandros
 
Registriert seit: 05.07.2007
Ort: Nordamerika, CA, NB
Beiträge: 18.694
xandros eine Nachricht über MSN schicken xandros eine Nachricht über Yahoo! schicken xandros eine Nachricht über Skype™ schicken
Standard AW: C# Programm-Problem

#elif als Preprozessoranweisung (ist aber nicht das was du suchst!)
#if (C# Reference)
Zitat:
Weil wenn ich eine Rechnung eingebe, erscheint das Ergebnis immer viermal.
Weil du die Ausgabeanweisung auch viermal in deinem Code hast und JEDE davon ausgefuehrt wird! Und das geschieht, weil dein Code nicht sauber ist.... da fehlen jede Menge Klammern!
Code:
if (Condition1){
     .....;
     .....;
}
if (condition2){
     .....;
     .....;
}
....
Code:
if (Condition1){
     Anweisung;
     Anweisung;
}
else if (Condition2){
     Anweisung;
     .....
}
else {
     Anweisung;
     .....
}
Schoener als die If-Abfragen ist aber Switch.
Code:
.....
switch(name)
{
    case "Division":
          ......Berechnung;
          break;
    case "....":
          ......Berechnung;
          break;
    case "....":
         ...........
}
Console.WriteLine("Ergebnis :{0}", ergebnis);
hier mal ein Beispiel mit Switch....
Code:
static void Main(string[] args)
        {
            int ergebnis=0; 
            Console.WriteLine("erste Zahl");
            string erste = Console.ReadLine(); 
            Console.WriteLine("zweite Zahl");
            string zweite = Console.ReadLine(); 
            Console.WriteLine("Rechenart (+ - * /)");
            string zeichen = Console.ReadLine(); 
            int ierste=Convert.ToInt16(erste);
            int izweite=Convert.ToInt16(zweite);
            

            switch (zeichen)
            {
                case "+":
                    ergebnis = ierste + izweite;
                    break;
                case "-":
                    ergebnis = ierste - izweite;
                    break;
                case "*":
                    ergebnis = ierste * izweite;
                    break;
                case "/":
                    ergebnis = ierste / izweite;
                    break;
            }
            Console.WriteLine("Ergebnis: {0}", ergebnis);
            string pause = Console.ReadLine();/* dient nur als Warteeingabe, damit das Konsolenfenster nicht geschlossen wird. */
        }
Alt 28.05.2011, 11:09 C# Programm-Problem #7
08/15 User
Themenstarter
 
Benutzerbild von weltbesiedler
 
Registriert seit: 19.07.2010
Ort: Bayern
Beiträge: 2.827
weltbesiedler eine Nachricht über Skype™ schicken
Standard AW: C# Programm-Problem

Ok danke, hab das jetzt gelöst. Es haben nur die geschweiften Klammern gefehlt.
Alt 28.05.2011, 17:08 C# Programm-Problem #8
C8H10N4O2 - Geniesser
 
Benutzerbild von xandros
 
Registriert seit: 05.07.2007
Ort: Nordamerika, CA, NB
Beiträge: 18.694
xandros eine Nachricht über MSN schicken xandros eine Nachricht über Yahoo! schicken xandros eine Nachricht über Skype™ schicken
Standard AW: C# Programm-Problem

Dann solltest du (rein vom Stil her!) deinen Code noch dahingehend abaendern, dass in den IF-Teilen lediglich die Berechnung durchgefuehrt wird und die Ausgabe einmalig erst am Ende der Ueberpruefungen erfolgt.
Das spart dir dann drei Zeilen Code....
Alt 28.05.2011, 18:01 C# Programm-Problem #9
08/15 User
Themenstarter
 
Benutzerbild von weltbesiedler
 
Registriert seit: 19.07.2010
Ort: Bayern
Beiträge: 2.827
weltbesiedler eine Nachricht über Skype™ schicken
Standard AW: C# Programm-Problem

Ok. Jetzt sieht der Code so aus:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Hallo, welche Rechenart bevorzugen sie? ");
            string name = Console.ReadLine();
            Console.Write("Welche Zahl1: ");
            string Zahl1 = Console.ReadLine();
            Console.Write("Welche zahl2: ");
            string Zahl2 = Console.ReadLine();
            float ergebnis;
            ergebnis = Convert.ToInt16(Zahl1) + Convert.ToInt16(Zahl2);
            if (name == "Division")
            {
                ergebnis = Convert.ToInt16(Zahl1) / Convert.ToInt16(Zahl2);
                
            }
            else if (name == "Subtraktion")
            {
                ergebnis = Convert.ToInt16(Zahl1) - Convert.ToInt16(Zahl2);
                
            }
            else if (name == "Multiplikation")
            {
                ergebnis = Convert.ToInt16(Zahl1) * Convert.ToInt16(Zahl2);
                
            }
            else if (name == "Addition")
            {
                ergebnis = Convert.ToInt16(Zahl1) + Convert.ToInt16(Zahl2);
                
            }
            Console.WriteLine(ergebnis);
            Console.ReadLine();

        }
    }
}
Alt 28.05.2011, 18:10 C# Programm-Problem #10
C8H10N4O2 - Geniesser
 
Benutzerbild von xandros
 
Registriert seit: 05.07.2007
Ort: Nordamerika, CA, NB
Beiträge: 18.694
xandros eine Nachricht über MSN schicken xandros eine Nachricht über Yahoo! schicken xandros eine Nachricht über Skype™ schicken
Standard AW: C# Programm-Problem

AH! Dir ist etwas aufgefallen.....
Zitat:
float ergebnis;
Divisionen ergeben sehr haeufig keine Integer-Ergebnisse.
Antwort

RB

Thema: C# Programm-Problem


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen für: C# Programm-Problem
Thema Autor Forum Antworten Letzter Beitrag
Problem mit einem Programm
Hallo zusammen, ich habe mir ein Programm names XNA runtergeladen (Spiel entwicklungssoftware für PC und Xbox 360) Nun wollte ich dieses bei mir...
jannik Software Probleme 7 23.04.2011 18:52
Problem mit Audio Programm
Guten Tag! Da mein Audio Programm mir unerwartet Probleme bereitet hat, habe ich es gelöscht und neu installiert. Hatte es zuerst mit einer...
Outboard5 Software Probleme 3 10.02.2010 14:55
Problem mit Programm
Hallo ich habe kein anderes Forum gesehen deswegen dchte ich mir das ich hier reinschreibe. also Ich habe mit magix eine fotodiahow gemacht. diese...
Robert19936 Spiele Probleme 8 11.06.2008 13:54
Programm, Spiele problem
Hi Leute Nach dem Update auf software 12xxx habe meine daten von der speicherkarte auf das Tel zurückgespielt. Dabei wurde mir angezeigt das ein...
Lowraider Nokia N95 Forum 3 13.07.2007 02:47
Problem mit einem Programm!
Hi Leute, ich habe ein Problem mit einem Latein-Programm namens "Auxilium light". Unter XP ist es noch einwandfrei gelaufen und jetz kommen...
bootz03 Windows Vista Probleme 1 18.04.2007 16:34

Zurück   Computer Forum - PC Forum - ModernBoard.de > Computerprobleme > Webmaster Hilfe / Programmierer Forum

Besucher kamen mit folgenden Begriffen auf die Seite

c# case ungültiger ausdruck

,

ungültiger ausdruck string

Powered by vBadvanced CMPS v3.2.2


Sie betrachten gerade: C# Programm-Problem