none
CS1503 Argument Konvertierung von int in string nicht möglich

    Frage

  • Hallo, 

    ich wollte gerade wie ein Art BMI Rechner bauen mit Klassifizierungen usw. 
    Jetzt habe ich gerade das Problem, dass ich gerne die Eingaben des Nutzers in einer var. speichern möchte, um die dann unten in meinem eigentlichen Rechner anzuwenden. 

    Jetzt habe ich allerdings das genannte Problem das ich den int nicht in einen String bekomme. Hat jemand Ideen? 
    Wahrscheinlich sollte es doch mit Convert.ToString

    Hier mein Code: 

        class Program : BMI
        {
            static void Main()
            {
    
                
                
                Console.WriteLine("Geben Sie Körpergewicht ein: ");
                int bodyWeight = Console.Read();
                
    
                Console.WriteLine("Geben Sie Ihre Körpergröße in cm ein: ");
                int bodyHeight = Console.Read();
            
    
                Console.WriteLine(bodyWeight, bodyHeight);
                
    
    
    
    
            }    
        }
    
        class BMI
        {
            int BMIformula;
            int bodyWeight;
            int bodyHeight;
    
            void BMIcalculator(int bodyWeight, int bodyHeight)
            {
    
                BMIformula = bodyWeight / bodyHeight * bodyHeight;
                Console.WriteLine(BMIformula);
                
            }
    
            void BMIranking(int bodyWeight, int bodyHeight)
            {
                if (BMIformula <= 20)
                {
                    Console.WriteLine("Du bist im Untergewicht!");
                }
                else if (BMIformula >= 20 && BMIformula<=25)
                {
                    Console.WriteLine("Du bist im Normalgewicht");
                }
                else if (BMIformula >= 25 && BMIformula <= 30)
                {
                    Console.WriteLine("Du bist Übergewichtig");
                }
                else if (BMIformula >= 30 && BMIformula <= 40)
                {
                    Console.WriteLine("Du hast Adipositas");
                }
                else
                {
                    Console.WriteLine("Du hast Massive Adipositas");
                }
    
                Console.ReadKey();
            }
        }



    • Bearbeitet DevSlime Sonntag, 26. Mai 2019 12:41
    Sonntag, 26. Mai 2019 12:40

Antworten

  • int meinInt = 1;
    string meinString = meinInt.ToString();
    So wird aus einem int ein string.

    - Gruß Florian

    Montag, 27. Mai 2019 08:22
  • Hi André,
    Du hast natürlich Recht.

    Es gibt aber noch ein anderes Problem. Read liest den Wert (integer) eines eingegebenen Zeichens. Richtig wäre ReadLine, um auch wirklich eine eingegebene Zeichenkette zu konvertieren:

    int bodyWeight;
    if (!int.TryParse(Console.ReadLine(), out bodyWeight))
    {
         Console.WriteLine("keine Zahl eingegeben, 100 wird angenommen");
         bodyWeight = 100;
    }


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Mittwoch, 29. Mai 2019 19:34

Alle Antworten

  • Hi,
    Console.Read liefert eine Zeichenkette, die natürlich zu konvertieren ist. Es kann ja auch sein, dass keine konvertierbare Zahl eingegeben wurde. Probier mal folgendes:

    int bodyWeight = 100;
    if (!int.TryParse(Console.Read(), out bodyWeight))
    Console.WriteLine("keine Zahl eingegeben, 100 wird angenommen");

    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks


    Sonntag, 26. Mai 2019 15:17
  • int meinInt = 1;
    string meinString = meinInt.ToString();
    So wird aus einem int ein string.

    - Gruß Florian

    Montag, 27. Mai 2019 08:22
  • Kleine Ergänzung: so wird das mit der 100 als Default nicht funktionieren. Vorinitialisierung von out-Parameter bringen nichts, weil sie immer von der Methode selbst gesetzt werden müssen. In dem Fall setzt TryParse den Wert auf 0, aber generell würd ich mich nie bei out-Parametern darauf verlassen. So geht's besser:

    int bodyWeight;
    if (!int.TryParse(Console.Read(), out bodyWeight))
    {
         Console.WriteLine("keine Zahl eingegeben, 100 wird angenommen");
         bodyWeight = 100;
    }
    


    Mittwoch, 29. Mai 2019 13:46
  • Hi André,
    Du hast natürlich Recht.

    Es gibt aber noch ein anderes Problem. Read liest den Wert (integer) eines eingegebenen Zeichens. Richtig wäre ReadLine, um auch wirklich eine eingegebene Zeichenkette zu konvertieren:

    int bodyWeight;
    if (!int.TryParse(Console.ReadLine(), out bodyWeight))
    {
         Console.WriteLine("keine Zahl eingegeben, 100 wird angenommen");
         bodyWeight = 100;
    }


    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    Mittwoch, 29. Mai 2019 19:34