Avatar
Ondrca
Redaktor
Avatar
Ondrca:

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):

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ý:
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
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:

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ý:

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:

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:

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ý:

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:

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ý:

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:

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ý:

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:

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ý:

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:

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.