Wątek przeniesiony 2015-06-10 16:44 z C# i .NET przez somekind.

Dlaczego string sam wykonuje funkcje?

0

Moje pytanie brzmi. Dlaczego ten string powoduje "readline" i jak temu zapobiec tak żeby był tylko do odczytu a nie funkcjonował mi w programie... Mianowicie chciałbym żeby funkcja konsoli była wykorzystana tylko wtedy gdy ja wskażę.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication4
     
{



        class Program
    {   
        static void Main(string[] args)
        {   
            int num1;
            int num2;
            Random RandomGenerator = new Random();
            string odpowiedzPierwsza = Console.ReadLine();  // TEN fragment powoduje console.readline
            string odpowiedzDruga = Console.ReadLine();     // no i ten też
2

tak przeczytalam pare razy i sie usmiechnelam :) tym razem nawet nie podejrzewam o co moze chodzic, komentarze w kodzie niszcza system.
sprobuj na przykladzie wyjasnic o co ci chodzi.

edit:
jak chcesz wczytac dwie odpowiedzi z jednej linii to zrob tak:

var odpowiedzi = Console.ReadLine().Split();
var odpowiedz1 = odpowiedzi[0];
var odpowiedz2 = odpowiedzi[1];

nie zapomnij o obsludze bledow (np jak nie bedzie dokladnie 2 odpowiedzi lub beda mialy zly format)

0

Chciałbym żeby to

 Console.ReadLine();  

Było sobie zwyczajną wartością w string'u i aby ta wartość była wywołana tylko gdy podam odwołanie do odpowiedzPierwsza.
Sorry dopiero się uczę.

edit:

Bo aktualnie te dwa stringi aktywują mi Readline a tego nie chce

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication4
     
{



        class Program
    {   
        static void Main(string[] args)
        {   
            int num1;
            int num2;
            Random RandomGenerator = new Random();
            string odpowiedzPierwsza = Console.ReadLine();
            string odpowiedzDruga = Console.ReadLine();
            Console.WriteLine("Witaj w kalkulatorze, chcesz +,-,* czy / ?");

            if (odpowiedzPierwsza == "+") 
0

tzn chcesz aby Console.ReadLine() wywolywalo sie przy pierwszym odwolaniu do zmiennej string? nie zrobisz tego przy uzyciu wylacznie zmiennej typu string. co wlasciwie chcesz osiagnac?

1

Jeżeli masz zapis typu:
pole = wyrażenie
To najpierw obliczana jest wartość wyrażenia, a potem następuje przypisanie do pola.

Możesz zrobić coś takiego:
string odpowiedź;
Wtedy będziesz miał niezainicjalizowane pole, które będziesz sobie mógł potem wypełnić za pomocą poprzedniego zapisu.

0

ciołek ze mnie, mogłem po prostu

if (Console.ReadLine() == "+")  

ale robię to w ramach nauki więc chciałem to zrobić jak najbardziej rozszerzone aby więcej się nauczyć, przekombinowałem. tak czy inaczej dziękuje :)

edit:

problem nie ustąpił, "if" także powoduje inicjacje kodu z biegu. chciałbym żeby sprawdził mi tylko "if" a jeśli nie będzie pasować przeszedł od razu do "else if" i sprawdził czy pasuje :X

cały kod:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication4
     
{



        class Program
    {   
        static void Main(string[] args)
        {   
            int num1;
            int num2;
            Random RandomGenerator = new Random();
            Console.WriteLine("Witaj w kalkulatorze, chcesz +,-,* czy / ?");

            if (Console.ReadLine() == "+") 
            
            {   
                int RozneOdpowiedzi = RandomGenerator.Next(1,3);
                switch (RozneOdpowiedzi) 
                {
                        case 1:
                Console.WriteLine("Okej zatem podaj liczbe którą chcesz dodać");
                        break;              
                        case 2:
                Console.WriteLine("Dobra, a teraz liczbę ktora chcesz dodac");
                        break;
                }
                num1 = Int32.Parse(Console.ReadLine());
                Console.WriteLine("A teraz podaj drugą cyfre");
                num2 = Int32.Parse(Console.ReadLine());
                Console.WriteLine(num1 + num2);
                Console.ReadKey();

            }

            else if (Console.ReadLine() == "-")
            {
                Console.WriteLine("Odejmujemy");
                Console.ReadKey();
            };
        }
    }
}

to załatwiło sprawę.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication4
     
{



        class Program
    {   
        static void Main(string[] args)
        {   
            int num1;
            int num2;
            string read;
            
            Random RandomGenerator = new Random();
            Console.WriteLine("Witaj w kalkulatorze, chcesz +,-,* czy / ?");
            read = Console.ReadLine();
            if (read == "+")  

temat do zamknięcia :)
dzięki Wibowit

1 użytkowników online, w tym zalogowanych: 0, gości: 1