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

Problem z programem C#

Object Storage Arubacloud
0 głosów
90 wizyt
pytanie zadane 14 kwietnia 2018 w C# przez kamil98u Nowicjusz (220 p.)

Witam, mam problem z moim programem w C#, z racji tego, że zaczynam dopiero naukę tego języka, nie wiem jak sobie poradzić. Pierwszy problem jest związany z konwersją typów zmiennych, w C++ nie miałem problemów w tym miejscu programu. Natomiast co do drugiego błędu, to nie wiem zupełnie, co zrobić.

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

namespace GraTeleturniejowa
{
    public class Obiekt
    {
        public string Pytanie { get; private set; }
        public string Odpowiedz1 { get; private set; }
        public string Odpowiedz2 { get; private set; }
        public string Odpowiedz3 { get; private set; }
        public string Odpowiedz4 { get; private set; }
        public int Poprawna { get; private set; }

        public Obiekt(string Pyt, string Odp1, string Odp2, string Odp3, string Odp4, int Popr)
        {
            Pytanie = Pyt;
            Odpowiedz1 = Odp1;
            Odpowiedz2 = Odp2;
            Odpowiedz3 = Odp3;
            Odpowiedz4 = Odp4;
            Poprawna = Popr;
        }

        public void Wyswietlaj()
        {
            Console.WriteLine(Pytanie);
            Console.WriteLine(Odpowiedz1);
            Console.WriteLine(Odpowiedz2);
            Console.WriteLine(Odpowiedz3);
            Console.WriteLine(Odpowiedz4);
        }
    }

    class Program
    {   
        

        public static int PozycjeMenu=5;

        static void menu(int PozycjaMenu) {
            Console.Clear();
            Console.WriteLine("Menu:");
            Console.WriteLine("\t1"+((PozycjaMenu == 1) ? ">" : ":")+"Graj");
            Console.WriteLine("\t2"+((PozycjaMenu == 2) ? ">" : ":")+"Zasady");
            Console.WriteLine("\t3"+((PozycjaMenu == 3) ? ">" : ":")+"Autor");
            Console.WriteLine("\t4"+((PozycjaMenu == 4) ? ">" : ":")+"Wyniki");
            Console.WriteLine("\tEsc"+((PozycjaMenu == 5) ? ">" : ":")+"Koniec");
        }



        static void Graj() {
            List<Obiekt> Teleturniej = new List<Obiekt>();
            Console.Clear();
            int liczba;
            int ile_wylosowac = 8;
            int ile_juz_wylosowano = 0;
            int[] wylosowane = new int[9];
            Random przedzial = new Random();
            bool losowanie_ok;
            for (int i = 1; i <= ile_wylosowac; i++)
            {
                do
                {
                    liczba = przedzial.Next(1, 40);
                    losowanie_ok = true;

                    for (int j = 1; j <= ile_juz_wylosowano; j++)
                    {
                        if (liczba == wylosowane[j]) losowanie_ok = false;
                    }

                    if (losowanie_ok == true)
                    {
                        ile_juz_wylosowano++;
                        wylosowane[ile_juz_wylosowano] = liczba;
                    }
                } while (losowanie_ok != true);
            }

            for (int z = 1; z <= 8; z++) { Console.WriteLine(wylosowane[z]); }
            Console.ReadKey();
            FileStream plik = new FileStream("teleturniej.txt", FileMode.Open);
            StreamReader str_odczyt = new StreamReader(plik);

             string odczyt;

             do
             {
                odczyt = str_odczyt.ReadLine();
                
                
                 if (odczyt == null)
                     break;

                string[] split = odczyt.Split(new Char[] { ' ' });


                 string Pytanie = split[0];
                 string Odpowiedz1 = split[1];
                 string Odpowiedz2 = split[2];
                 string Odpowiedz3 = split[3];
                 string Odpowiedz4 = split[4];
                 int Poprawna = Int32.Parse(split[5]);


                 Teleturniej.Add(new Obiekt(Pytanie, Odpowiedz1, Odpowiedz2, Odpowiedz3, Odpowiedz4, Poprawna));

             } while (odczyt != null);
            str_odczyt.Close();
            plik.Close();
            Console.ReadKey();
        }


        static void Zasady () {
            Console.Clear();
            Console.WriteLine("ZASADY GRY:");
            Console.WriteLine("Na wstepie dostajesz 40 paczek, kazda zawiera 25000zl.");
            Console.WriteLine("Musisz odpowiedziec na 8 prostych pytan, kazde ma 4 odpowiedzi.");
            Console.WriteLine("Wybierasz prawidlowa odpowiedz.");
            Console.WriteLine("Jesli odpowiesz zle, tracisz polowe pieniedzy.");
            Console.WriteLine("Jesli pomylisz sie w ostatnim pytaniu, to stracisz wszystko");
            Console.WriteLine("POWODZENIA!");
            Console.ReadKey();
        }




        static void Autor  () {
            Console.Clear();
            Console.WriteLine("AUTOR: ");
            Console.WriteLine("xyzx");
            Console.WriteLine("fgh");
            Console.WriteLine("iop");
            Console.ReadKey();
        }





        static void Wyniki () {
            Console.Clear();
            Console.WriteLine("WYNIKI:");
            Console.WriteLine("|IMIE| KWOTA |CZAS|");
            string sTmp = File.ReadAllText("wyniki.txt");
            Console.WriteLine(sTmp);
            Console.ReadKey();
        }





        static int Main(string[] args)
        {
        
        int iPozycjaMenu = 1;
        menu(iPozycjaMenu);
            for(; ; )
            {

                if (Console.KeyAvailable)
                {
                    char znak = Console.ReadKey().KeyChar;
                ePowtorz:
                    switch (znak)
                    {
                        case '1':
                            Graj();
                            menu(iPozycjaMenu);
                            break;
                        case '2':
                            Zasady();
                            menu(iPozycjaMenu);
                            break;
                        case '3':
                            Autor();
                            menu(iPozycjaMenu);
                            break;
                        case '4':
                            Wyniki();
                            menu(iPozycjaMenu);
                            break;
                        case (char)13:
                            znak ='0'+(char)iPozycjaMenu;
                            goto ePowtorz;
                        case (char)27:
                            return 0;
                        case (char)-32:
                            znak = Console.ReadKey().KeyChar;
                            
                            switch (znak)
                            {
                                case (char)71:
                                    iPozycjaMenu = 1;
                                    menu(iPozycjaMenu);
                                    break;
                                case (char)79:
                                    iPozycjaMenu = PozycjeMenu;
                                    menu(iPozycjaMenu);
                                    break;
                                case (char)72:
                                    if (iPozycjaMenu > 1) iPozycjaMenu--;
                                    menu(iPozycjaMenu);
                                    break;
                                case (char)80:
                                    if (iPozycjaMenu < PozycjeMenu) iPozycjaMenu++;
                                    menu(iPozycjaMenu);
                                    break;
                                default:
                                    Console.WriteLine("-32."+(int)znak+":"+znak);
                                    break;
                            }
                            break;
                        default:
                            Console.WriteLine((int)znak + ":" + znak);
                            break;
                    }
                }
            };
        }
    }
}

1 odpowiedź

0 głosów
odpowiedź 14 kwietnia 2018 przez adrian17 Ekspert (344,860 p.)

string Odpowiedz3 = split[3];

Najwyraźniej po prostu `split` nie ma tylu elementów. Spójrz w debuggerze, jaka jest zawartość stringa który splitujesz i tablicy będącej wynikiem .split().

Pierwszy problem jest związany z konwersją typów zmiennych

Um... co to jest za znak `(char)-32`? Co to ma sprawdzać? Czemu używasz liczby zamiast znaków?

 

Podobne pytania

0 głosów
0 odpowiedzi 109 wizyt
pytanie zadane 17 kwietnia 2018 w C# przez Vaxiris Początkujący (260 p.)
+5 głosów
3 odpowiedzi 292 wizyt
0 głosów
1 odpowiedź 202 wizyt

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...