Wieso bekommt die Variabel einen anderen Wert?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Du wandelst hier einen Char implizit in einen int um und erhältst daher den Fehler.

Der Char 5 entspricht der Zahl 53 im Ascii Code.

int tief = Integer.parseInt(Console.Read());

damit sollts gehn.


NIleis 
Beitragsersteller
 19.10.2019, 19:57

das ist in c# geschrieben.

und die rückgabe von console.read() ist ein int32.

PeterKremsner  19.10.2019, 19:59
@NIleis

Ja aber das ist der Ascii Code des Zeichens und nicht die Zahl die du eigegeben hast.

Mach ein:

int tief = int.Parse(Console.ReadLine());

draus.

NIleis 
Beitragsersteller
 19.10.2019, 20:03
@PeterKremsner

danke :)

jetzt geht es, ich dachte das würde die Zahl zurückgeben.

Du solltest die Eingabe überprüfen und wenn es möglich in einen Integer umwandeln:

    static void Main(string[] args)
    {
      int tief = IntegerEingabe("Bitte geben sie die breite an: ");
      Console.WriteLine(tief);
      int tiefe = tief + 2;
      Console.WriteLine(tiefe + " " + tief);
      StringBuilder dreieck = new StringBuilder(string.Empty);
      char[] form = new char[tiefe];
      for (int i = 0; i < tiefe; i++)
      {
        form[i] = ' ';
      }
      for (int it = 0; it <= tiefe / 2 - 1; it++)
      {
        try
        {
          form[(tiefe / 2 + 1) - it] = '#';
          form[(tiefe / 2 + 1) + it] = '#';
        }
        catch
        {
          //abbrechen
        }
        dreieck.AppendFormat(new String(form) + "\n");
      }
      Console.WriteLine(dreieck);
    }

    private static int IntegerEingabe(string Text)
    {
      int Zahl = 0;
      while (true)
      {
        Console.Write(Text);
        if (int.TryParse(Console.ReadLine(), out Zahl))
          return Zahl;
      }
    }
Woher ich das weiß:Berufserfahrung – Studium der Informatik + Softwareentwickler seit 25 Jahren.

ThoraxL  21.08.2020, 16:44

Hast du den Code mit hastebin bearbeitet?
LG Thorax

Besser ? Oder wo liegt das Problem?

Console.Write("Bitte geben sie die breite an: ");
            int tief = Console.Read();
            int tiefe = tief + 2;
            StringBuilder dreieck = new StringBuilder(string.Empty);
            char[] form = new char[tiefe];
            for (int i = 0; i < tiefe; i++)
            {
                form[i] = ' ';
            }
            for (int it = 0; it <= tiefe/2-1; it++)
            {
                    try
                    {
                        form[(tiefe / 2 + 1) - it] = '#';
                        form[(tiefe / 2 + 1) + it] = '#';
                    }
                    catch
                    {
                        //abbrechen
                    }
                  dreieck.AppendFormat(new String(form)+ "\n");
              }
              Console.WriteLine(dreieck);
Woher ich das weiß:Studium / Ausbildung – Informatikstudent

NIleis 
Beitragsersteller
 19.10.2019, 20:06

du hast nichts geändert am code?!

der fehler waren nicht die ausgaben, sondern der wert der Variabel.

Frage: zu welchem Package gehört deine Klasse Console?

In https://docs.oracle.com/javase/7/docs/api/java/io/Console.html

sind die Methoden Read(), Write und WriteLine() nicht definiert.


NIleis 
Beitragsersteller
 19.10.2019, 19:55

das ist in c# geschrieben.

gogogo  19.10.2019, 19:58
@NIleis

OK, dann verstehe ich das. C# ist nicht mein Gebiet.

Java ist meine Welt.