• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

CS0029 C# Cannot implicitly convert type 'string' to 'int'

0 głosów
66 wizyt
pytanie zadane 9 sierpnia w C# i .NET przez mariola1167 Nowicjusz (140 p.)

Cześć wszystkim,

Mam taki mały problem, który nie wiem jak rozwiązać. 

Prosty program, w którym pytam o imię, wiek  idt. Gdy użytkownik nic nie wpisze, pojawia się informacja o tym i szansa na ponowne wpisanie informacji.

Ze string nie ma problemu, pojawia się dopiero przy wieku; chciałabym użyć int zamiast var. Pojawia się niestety błąd. 

Wklejam kod i będę bardzo wdzięczna za podpowiedzi, jak to naprawić oraz za wyjaśnienie, dlaczego metoda ze zwracaniem wartości została użyta (chodzi mi o te ostatnie 'return question', nie wiem czy dobrze  to rozumiem. Uczę się z lynda.com gdzie na video nie zostało to dokładnie wytłumaczone.  :) 

static void Main(string[] args)
        {
            Console.WriteLine("What's your name?");
            string name = TryAnswer();

            Console.WriteLine("How old are you?");
            var age = TryAnswer();

            Console.WriteLine("What month were you born in?");
            string month = TryAnswer();

            Console.WriteLine("----------------------------");

            Console.WriteLine("Your name: {0} Your age: {1} Your birth month: {2}", name, age, month );

            if(month == "january")
            {
                Console.WriteLine("You are an Aquarius");
            }
            else if(month == "may")
            {
                Console.WriteLine("You are a Gemini");
            }
            else if (month=="august")
            {
                Console.WriteLine("You are a Leo");
            }
        }
        static string TryAnswer()
        {
            string question = Console.ReadLine();
            if(question == "")
            {
                Console.WriteLine("You didn't write anything, please try again:");
                return Console.ReadLine();
            }
            return question;
        }
    }
}

 

2 odpowiedzi

+2 głosów
odpowiedź 9 sierpnia przez adrian17 VIP (137,080 p.)

dlaczego metoda ze zwracaniem wartości została użyta (chodzi mi o te ostatnie 'return question', nie wiem czy dobrze  to rozumiem

Jeśli chcesz żeby metoda miała jakaś "wynik" (w tym przypadku chcesz, bo metoda prosząca o tekst ma wynik w postaci tego tekstu), tą wartość zazwyczaj się zwraca przez `return`.

 chciałabym użyć int zamiast var. Pojawia się niestety błąd.

Metoda prosi użytkownika o tekst i zwraca tekst - nie liczbę. Jeśli chcesz liczbę, musisz przekonwertować ten tekst na nową liczbę. Można to zrobić na przykład metodą Int.Parse(tekst).

+1 głos
odpowiedź 9 sierpnia przez Antero00 Bywalec (2,990 p.)

Możesz również użyć taką konstrukcję:

Console.WriteLine("Podaj liczbe: ");
int liczba;
bool isTrue = int.TryParse(Console.ReadLine(), out liczba);

Gdy zamiast liczby wpiszesz jakiś tekst nie dostaniesz wyjątku, o nieprawidłowym formacie. Jeśli zaś podasz liczbę to wartość zostanie zapisana w zmiennej "liczba".

 

Podobne pytania

0 głosów
2 odpowiedzi 282 wizyt
+1 głos
2 odpowiedzi 98 wizyt
pytanie zadane 13 marca 2016 w C# i .NET przez boyeo Obywatel (1,140 p.)
0 głosów
2 odpowiedzi 295 wizyt
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.Najlepsza odpowiedź

54,400 zapytań

98,269 odpowiedzi

202,119 komentarzy

26,715 pasjonatów

Przeglądających: 277
Pasjonatów: 26 Gości: 251

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...