Avatar
Ondrca
Redaktor
Avatar
Ondrca:18.4.2014 14:09

Ahoj, nevíte proč mi tento kód hlásí chybu ve VS?

class PCHrac
    {
        Dictionary<int, int> tah =new Dictionary<int, int>();
        tah.Add(9,0);
        tah.Add(10,0);
        tah.Add(11,0);
        tah.Add(12,0);
        tah.Add(13,0);
        tah.Add(14,0);
        tah.Add(15,0);
        tah.Add(16,0);
        tah.Add(17,0);
    }

Vyhazuje mi to toto:

Invalid token '(' in class, struct, or interface member declaration

Fakt nevím co s tím :(

Odpovědět 18.4.2014 14:09
Zase jsem o něco chytřejší
Avatar
Odpovídá na Ondrca
Michal Žůrek (misaz):18.4.2014 14:20

protože hodnoty do pole musíš přidat až v nějaké funkci/metodě/kon­struktoru. Nikoli v samotné třídě. Toto je (asi) zlozvyk z JavaScriptu.

Nahoru Odpovědět  +1 18.4.2014 14:20
Nesnáším {}, proto se jim vyhýbám.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Ondrca
Jan Vargovský:18.4.2014 14:26
class PCHrac
    {
        Dictionary<int, int> tah =new Dictionary<int, int>() { {9,0}, {10,0}, ... };
    }

Jinak platí i to co psal Misaz, jestli to chceš dělat skrz metodu, tak si to nahaž do konstruktoru.

Editováno 18.4.2014 14:27
 
Nahoru Odpovědět  +1 18.4.2014 14:26
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Jan Vargovský
Ondrca:18.4.2014 14:31

Díky moc

Nahoru Odpovědět 18.4.2014 14:31
Zase jsem o něco chytřejší
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Jan Vargovský
Ondrca:18.4.2014 14:36

Jo, tak už mi to chybu nehlásí, ale našeptávač to furt nevidí :(

Nahoru Odpovědět 18.4.2014 14:36
Zase jsem o něco chytřejší
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Ondrca
Jan Vargovský:18.4.2014 14:39

Co nevidí?

Buď to uděláš tím způsobem co jsem řekl, nebo ten skrz konstruktor

class PCHrac
    {
        Dictionary<int, int> tah =new Dictionary<int, int>();
public PCHrac()
{
        tah.Add(9,0);
        tah.Add(10,0);
        tah.Add(11,0);
        tah.Add(12,0);
        tah.Add(13,0);
        tah.Add(14,0);
        tah.Add(15,0);
        tah.Add(16,0);
        tah.Add(17,0);
}
    }
Editováno 18.4.2014 14:40
 
Nahoru Odpovědět 18.4.2014 14:39
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Jan Vargovský
Ondrca:18.4.2014 14:41

Už jsem to udělal tím tvým způsobem, jo, já jsem zase zkoušel najít tah v té třídě

Nahoru Odpovědět 18.4.2014 14:41
Zase jsem o něco chytřejší
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Jan Vargovský
Ondrca:18.4.2014 14:52

Hele, nevíš ještě, proč mi tento kód:

MessageBox.Show(tah.Max().ToString());

hlásí tohle:

Rozhraní IComparable musí být implementováno alespoň jedním objektem.

?
Díky

Nahoru Odpovědět 18.4.2014 14:52
Zase jsem o něco chytřejší
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Ondrca
Jan Vargovský:18.4.2014 14:58

Musíš programu říct, jestli je větší třeba 1,0 a nebo 0,1 :)

 
Nahoru Odpovědět 18.4.2014 14:58
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Jan Vargovský
Ondrca:18.4.2014 15:00

Jak říct, napíeš mi pls tenhle kus kódu?

Nahoru Odpovědět 18.4.2014 15:00
Zase jsem o něco chytřejší
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Ondrca
Jan Vargovský:18.4.2014 15:02

Já bych rád, ale číst myšlenky zatím neumím.

Třeba:

tah.Max(d => d.Key + d.Value);

... Nevím jakým způsobem to chceš porovnávat.

 
Nahoru Odpovědět 18.4.2014 15:02
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Jan Vargovský
Ondrca:18.4.2014 15:03

Já to nechci porovnávat, já chci najít největší prvek

Nahoru Odpovědět 18.4.2014 15:03
Zase jsem o něco chytřejší
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Ondrca
Jan Vargovský:18.4.2014 15:05

To je jak mluvit s ...

Nevím co je pro tebe největší prvek, prvek klíče, nebo hodnoty? Když bys tam měl inty třeba 0,1 a 1,0 => který z těchto dvou je větší? Je třeba si dát nějaké pravidla, programování není o náhodě...

 
Nahoru Odpovědět 18.4.2014 15:05
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Jan Vargovský
Ondrca:18.4.2014 15:12

Je to takhle:

MessageBox.Show(tah.Max(d => d.Value).ToString());

Takhle jsem to chtěl.
Promiň, se slovníkem pracuji poprvé

Nahoru Odpovědět 18.4.2014 15:12
Zase jsem o něco chytřejší
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Ondrca
Jan Vargovský:18.4.2014 15:14

Nevím proč hledáš maximum z 0, ale dobrý :D Jinak to tvoje je lepší napsat jako

tah.Values.Max()
 
Nahoru Odpovědět 18.4.2014 15:14
Avatar
Ondrca
Redaktor
Avatar
Odpovídá na Jan Vargovský
Ondrca:18.4.2014 15:16

Jo, díky, z nuly to nebude, tam šlo jenom o to najít maximum, ještě tam bude zapisovat

Nahoru Odpovědět 18.4.2014 15:16
Zase jsem o něco chytřejší
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 16 zpráv z 16.