Vždy uloži pouze poslední hodnoty do seznamu (ArrayListu) a minulé se přepíšou (C# aplikace) – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Vždy uloži pouze poslední hodnoty do seznamu (ArrayListu) a minulé se přepíšou (C# aplikace) – .NET – Fórum – Programujte.comVždy uloži pouze poslední hodnoty do seznamu (ArrayListu) a minulé se přepíšou (C# aplikace) – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
lenochod0
Duch
15. 1. 2011   #1
-
0
-

Mám za domácí úkol vytvořit obchod, který bude data ukládat do Seznamu (ArrayListu) a z něho také zobrazovat. Ale vždy to uloži do seznamu pouze poslední hodnoty a ty minulé se přepíšou.

Dle mého za to může řádek:

obchod = new Obchod(textBox1.Text, textBox2.Text, Convert.ToDouble(textBox3.Text), Convert.ToInt32(textBox4.Text));


Když ho ale zakomentuji tak se mě zobrazí chybová hláška:

is never assigned to, and will always have its default value null



Už se s tím mořím tři dny a přestává mě to bavit. Díky moc všem dopředu za pomoc
Cely program zde:



Obchod obchod;

private void button1_Click(object sender, EventArgs e)
{
obchod = new Obchod(textBox1.Text, textBox2.Text, Convert.ToDouble(textBox3.Text), Convert.ToInt32(textBox4.Text));

obchod.pridejZboziNaSklad(textBox1.Text, textBox2.Text, Convert.ToDouble(textBox3.Text), Convert.ToInt32(textBox4.Text));
}


private void button2_Click(object sender, EventArgs e)
{
richTextBox1.Text = "";
richTextBox1.Text += "" + obchod.vypisSklad();
}

}

class Zbozi

{
private string nazev, popis;
private int mnozstvi;
private double cena;

public Zbozi(string nazev, string popis, double cena, int mnozstvi)
{
this.nazev = nazev;
this.popis = popis;
this.cena = cena;
this.mnozstvi = mnozstvi;
}

public string vypisInfo(string nazev, string popis, double cena, int mnozstvi)
{
return string.Format(" Název produktu: {0} \n Popis Produktu: {1}\n Cena produktu: {2} Kč\n Množství produktu: {3} ks\n\n", nazev, popis, cena, mnozstvi);
}
}

class Obchod
{
Zbozi zbozi;
List<Zbozi> sklad = new List<Zbozi>();

private string nazev, popis;
private int mnozstvi, id;
private double cena;//, castkaZProdeje;

//Konstruktor pro pridani zbozi na sklad
public Obchod(string nazev, string popis, double cena, int mnozstvi)
{
this.nazev = nazev;
this.popis = popis;
this.cena = cena;
this.mnozstvi = mnozstvi;

MessageBox.Show(" Produkt byl úspěšně přidán do databáze");
}

//Prida zbozi na sklad
public void pridejZboziNaSklad(string nazev, string popis, double cena, int mnozstvi)
{
sklad.Add(zbozi = new Zbozi(nazev, popis, cena, mnozstvi));
}

//Vypise na obrazovku sklad
string vystup;

public string vypisSklad()
{
foreach (Zbozi go in sklad)
{
vystup = string.Format("" + go.vypisInfo(nazev, popis, cena, mnozstvi));
}

return vystup;
}
}

Nahlásit jako SPAM
IP: 213.192.10.–
Reklama
Reklama
15. 1. 2011   #2
-
0
-

Zdravím,

dotyčný řádek vytváří pokaždé novou instanci třídy Obchod, která má vždy stejné výchozí hodnoty. Předchozí položky se tedy nepřepisujou, protože tam žádné nejsou.

if (obchod == null)

{
obchod = new Obchod(textBox1.Text, textBox2.Text, Convert.ToDouble(textBox3.Text), Convert.ToInt32(textBox4.Text));
}
I tak tam zůstane několik věcí, které nejsou úplně správně. Doporučuji se více věnovat výuce, pak budou ty domácí úkoly o trochu snazší.

Nahlásit jako SPAM
IP: 89.203.157.–
Dušan Janošík | web: djanosik.cz, @djanosik
nervak0
Věrný člen
15. 1. 2011   #3
-
0
-

...

Nahlásit jako SPAM
IP: 213.211.51.–
nervak0
Věrný člen
15. 1. 2011   #4
-
0
-

Hm, pozdě :smile1:

Nahlásit jako SPAM
IP: 213.211.51.–
lenochod0
Duch
15. 1. 2011   #5
-
0
-

Díky moc, vyzkouším zítra.

Bohužel, já chodím na střední a dálkově, takže hodin strávených s učitelem jsou dvě až tři za měsíc.

djanosik: a co tam je teda ještě ne tak úplně správně ať se poučím?

Nahlásit jako SPAM
IP: 213.192.10.–
lenochod0
Duch
16. 1. 2011   #6
-
0
-

To djanosik :
Takze bohuzel vas napad nevysel, stale se to chova stejne. Cely projekt (Microsoft Visual C# 2008) prikladam.

Nahlásit jako SPAM
IP: 213.192.10.–
nervak0
Věrný člen
16. 1. 2011   #7
-
0
-

Kromě toho neustálého vytváření nového obchodu s jednou položkou, ještě pořád přiřazuješ (místo přidávání) 'vystup' ve vypisSklad(). A ten konstruktor Obchod(...........) je k ničemu. Všechny tři věci jsem opravil v souboru, který jsem postnul, stačilo by se na to podívat :smile1:

Nahlásit jako SPAM
IP: 213.211.51.–
16. 1. 2011   #8
-
0
-

To nervak : Pravda, to jsem přehlédl.

Nahlásit jako SPAM
IP: 89.203.157.–
Dušan Janošík | web: djanosik.cz, @djanosik
lenochod0
Duch
16. 1. 2011   #9
-
0
-

Díky moc oboum pánům, již to mám opraveno.

Co jsem koukal, největší problém asi bylo že oboje třídy nebyly veřejné.

Nahlásit jako SPAM
IP: 213.192.10.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 49 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý