Forum » Programiranje » [C#] Preprost račun
[C#] Preprost račun
Cvenemir ::
Lep pozdrav. Izdelal sem razred Racun, z metodami za dvig, polog denarja in metodo za informacijo o trenutnem stanju računa.
Problem nastane ko poženem program, izberem željeno akcijo in vnesem znesek.
Javi mi napako: "Make sure your method arguments are in right format". Glede na to, da v metodah nimam podanih argumentov, ne vem kako naj rešim problem.
Problem nastane ko poženem program, izberem željeno akcijo in vnesem znesek.
Javi mi napako: "Make sure your method arguments are in right format". Glede na to, da v metodah nimam podanih argumentov, ne vem kako naj rešim problem.
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Racun { //Definiramo atribut(e) razreda public double trenutnoStanje = 1500; /// <summary> /// Metoda zahteva vnos zneska za dvig. Če je zahtevan znesek višji /// od trenutnega stanja na računu, nam javi napako, da zneska ni možno izplačati /// </summary> public void DvigDenarja() { double znesekDviga, stanjePoDvigu; Console.WriteLine("\nVnesite znesek, ki ga želite dvigniti: "); znesekDviga = double.Parse(Console.ReadLine()); if (znesekDviga > trenutnoStanje)//Preverimo, če je višina dviga veljavna { Console.WriteLine("Zneska ni mogoče izplačati!"); } else { stanjePoDvigu = trenutnoStanje - znesekDviga; Console.WriteLine("\nNovo stanje na računu je: {}", stanjePoDvigu); trenutnoStanje = stanjePoDvigu; } } /// <summary> /// Metoda od nas zahteva vnos zneska za polog. Znesek /// pologa nato prišteje prejšnjemu trenutnemu stanju, in stanje po pologu shrani /// kot trenutno stanje. /// </summary> public void PologDenarja() { double znesekPologa, stanjePoPologu; Console.WriteLine("\nVnesite znesek pologa: "); znesekPologa = double.Parse(Console.ReadLine()); stanjePoPologu = this.trenutnoStanje + znesekPologa; Console.WriteLine("\nNovo stanje na računu je: {}", stanjePoPologu); trenutnoStanje = stanjePoPologu; } /// <summary> /// Metoda izpiše trenutno stanje. /// </summary> public void TrenutnoStanje() { Console.WriteLine("\nTrenutno stanje vašega računa je: {} EUR", trenutnoStanje); } } class Program { static void Main(string[] args) { Console.WriteLine("Za dvig denarja pritisnite tipko 1.\nZa polog denarja pritisnite tipko 2.\nZa izpis trenutnega stanja na računu pritisnite tipko 3."); //Ustvarimo nov objekt racun Racun racun = new Racun(); char znak = Console.ReadKey(true).KeyChar; //Pogojni stavki za izbiro željene akcije if (znak == '1') { racun.DvigDenarja(); } else if (znak == '2') { racun.PologDenarja(); } else if (znak == '3') { racun.TrenutnoStanje(); } Console.ReadKey(true); } } }
^TMS^ ::
Uporabi kvečjemu Double.Parse(), trenutno uporabljaš malo začetnico, ali Convert.ToDouble().
To iterate is human, to recurse divine.
^TMS^ ::
Nadomesti:
bodisi z:
bodisi z:
Stori to vsepovsod in bi moralo delati.
Console.WriteLine("\nNovo stanje na računu je: {}", stanjePoDvigu);
bodisi z:
Console.WriteLine("\nNovo stanje na računu je: {0}", stanjePoDvigu);
bodisi z:
Console.WriteLine("\nNovo stanje na računu je: {" + stanjePoDvigu+ "}")
Stori to vsepovsod in bi moralo delati.
To iterate is human, to recurse divine.
fiction ::
Pri tebi je pomoje problem {} namesto {0} v format stringu WriteLina. Definitvno dobiš FormatException, katerega Message je mogoče malo dvomljiv, vprašanje je samo kje. Ampak zaboga sej imaš debugger in točno vidiš kje se vse skupaj zalomi, ne samo brati sporočila o napaki. Če bi bil kakšen problem v zvezi s parametri tvojih metod, se zadeva zelo verjetno niti ne bi prevedla.
V C# za razliko od Jave med Double in double ni prav nobene razlike.
Sej razumem da gre za demo projekt, ampak vseeno ne bi škodilo, če bi zadevo naredil malo bolj robustno. Pri double.Parse() moraš računati na to, da boš dobil FormatException, ker vzameš vhod od uporabnika, ta pa lahko vpiše karkoli. Tudi negativnega dviga (ter negativnega pologa) najbrž ne bi smel spustiti skozi. Za demonstracijske namene tudi ne bi bilo slabo, če bi uporabnik lahko v enem zagonu izvedel več različnih akcij... O težavah, ki bi lahko nastale zaradi sočasnega izvajanja metod v večih nitih niti ne bom zgubljal besed, ker je to verjetno izven scopa naloge.
V C# za razliko od Jave med Double in double ni prav nobene razlike.
Sej razumem da gre za demo projekt, ampak vseeno ne bi škodilo, če bi zadevo naredil malo bolj robustno. Pri double.Parse() moraš računati na to, da boš dobil FormatException, ker vzameš vhod od uporabnika, ta pa lahko vpiše karkoli. Tudi negativnega dviga (ter negativnega pologa) najbrž ne bi smel spustiti skozi. Za demonstracijske namene tudi ne bi bilo slabo, če bi uporabnik lahko v enem zagonu izvedel več različnih akcij... O težavah, ki bi lahko nastale zaradi sočasnega izvajanja metod v večih nitih niti ne bom zgubljal besed, ker je to verjetno izven scopa naloge.
Spura ::
+1 na fictionov post, plus se te pripombe:
- funkcija, ki zajema uporabnikov vnos, naj bo locena od logike izracuna. Ubistvu naj bo locena od razreda racun, ker branje vrednosti od uporabnika in interpretiranje njegovih ukazov nimajo veze z logiko racuna.
Ce imas class poln void no-argument metod, potem najverjetneje delas narobe.
-
mislim da lahko clovek dvigne tudi toliko kot je na racunu, ne samo manj
- funkcija, ki zajema uporabnikov vnos, naj bo locena od logike izracuna. Ubistvu naj bo locena od razreda racun, ker branje vrednosti od uporabnika in interpretiranje njegovih ukazov nimajo veze z logiko racuna.
Ce imas class poln void no-argument metod, potem najverjetneje delas narobe.
-
if (znesekDviga > trenutnoStanje)//Preverimo, če je višina dviga veljavna
mislim da lahko clovek dvigne tudi toliko kot je na racunu, ne samo manj
darkkk ::
Tko fyi, če nočeš exceptionov metat zaradi castov, ima c# metode TryParse, rezultat je bool (ali cast uspe), noter daš pa string, referenco na spremenljivko + celega boga dodatnih parametrov(optional).
npr:
npr:
string str = "2.15"; double num; if(double.TryParse(str, out num)){ //do smthing }else{ //cast ni uspel }
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [FRI Seminarska] PomočOddelek: Programiranje | 1403 (1162) | mladec |
» | [c#] Ustvarjanje objekta v drugem razreduOddelek: Programiranje | 1679 (1624) | Cvenemir |
» | Sode ter Lihe(C Sharp)Oddelek: Programiranje | 1691 (1489) | detroit |
» | [C#] Klicanje metodOddelek: Programiranje | 1731 (1499) | Cvenemir |
» | [C#] Reševanje domačih nalogOddelek: Programiranje | 3321 (2825) | krastača |