Avatar billede severin1000 Nybegynder
23. maj 2011 - 20:33 Der er 17 kommentarer

Help needed: string -> int

Hej med jer.

Det skal lige siges at jeg først lige er begyndt at lege med C# for nogle dage siden, så jeg er stadig lige ved at falde på plads i sproget.

Jeg står med et lille problem som jeg ikke rigtigt kan finde en løsning på, eller dvs, jeg kan finde en hel masse, men ingen der passer på mit problem.

Jeg er for sjovt ved at lave et lille spil til mig selv, hvor man kan købe nogle ting ved forskellige forhandlere til forskellige priser. Priserne er bestemt af en "Random RandomNumber = new Random();" - For at få prisen vist i mit vindue har jeg været nødt til at lave den om til en string.
Nu vil jeg så gerne have den pris ganget med mængten af objekter man køber, men når jeg prøver at gange de 2 ting får jeg følgende fejl:
Operator '*' cannot be applied to operands of type 'string' and 'decimal'

Jeg går ud fra at jeg skal have lavet min string om til en int igen, så jeg kan få lagt de 2 ting sammen, men jeg har simpelthen ingen idé om hvordan jeg gør det.

Jeg beklager hvis det er dårligt forklaret. Håber I kan hjælpe :-)
Avatar billede heinzdmx Nybegynder
23. maj 2011 - 20:37 #1
Google er den helt store hjælper når det kommer til programmering.

"C# convert string to decimal", link 3:

http://www.java2s.com/Code/ASP/Development/ConvertStringtointanddecimalC.htm
Avatar billede heinzdmx Nybegynder
23. maj 2011 - 20:38 #2
Desuden, decimal er ikke det samme som int, det er 2 forskellige typer.

Men de kan muligvis godt ganges med hinanden.
Avatar billede arne_v Ekspert
23. maj 2011 - 20:42 #3
intvar = int.Parse(strvar);
decimalvar = decimal.Parse(strvar);
Avatar billede arne_v Ekspert
23. maj 2011 - 20:43 #4
http://www.eksperten.dk/guide/277

er tudsegammel men det virker stadig
Avatar billede severin1000 Nybegynder
23. maj 2011 - 21:08 #5
Der må være et eller andet jeg overser.
Jeg prøver at gøre som der står beskrevet i dit link Arne (Tak for det) - Men jeg får stadig dem samme fejl. Som om den slet ikke bliver lavet om.
Avatar billede arne_v Ekspert
23. maj 2011 - 21:18 #6
vis noget kode
Avatar billede severin1000 Nybegynder
23. maj 2011 - 21:20 #7
private void itemCombo_SelectedIndexChanged(object sender, EventArgs e)
        {
            Random RandomNumber = new Random();
            int Chips = RandomNumber.Next(5, 15);
           
            //Dealer Info Chips
            if (drugsCombo.Text == "Chips")
                priceLabel.Text = Chips + "$";
            if (drugsCombo.Text == "Chips")
                drugLabel.Text = "Chips";
        }
Avatar billede severin1000 Nybegynder
23. maj 2011 - 21:21 #8
Ignorer "drugsCombo" - Lavede en lille fejl, det er ikke en del af det faktiske script :-)
Avatar billede severin1000 Nybegynder
23. maj 2011 - 21:24 #9
Her er det rigtige:


private void itemCombo_SelectedIndexChanged(object sender, EventArgs e)
        {
            Random RandomNumber = new Random();
            int Chips = RandomNumber.Next(5, 15);
         
            //Dealer Info Chips
            if (itemCombo.Text == "Chips")
                priceLabel.Text = Chips + "$";
            if (itemCombo.Text == "Chips")
                itemLabel.Text = "Chips";
        }
Avatar billede heinzdmx Nybegynder
23. maj 2011 - 21:30 #10
Det har jo intet med at at gange to tal sammen det der, det er et andet sted det går galt.

Men som du viser det der kan du jo ikke parse indholdet da der er et tegn bagved ($). Den skal du altså fjerne før du kan parse indholdet
Avatar billede severin1000 Nybegynder
23. maj 2011 - 21:34 #11
Jeg ville have haft gjort det sådan her:

private void itemCombo_SelectedIndexChanged(object sender, EventArgs e)
        {
            Random RandomNumber = new Random();
            int Chips = RandomNumber.Next(5, 15);
       
            //Dealer Info Chips
            if (itemCombo.Text == "Chips")
                priceLabel.Text = Chips + "$";
            if (itemCombo.Text == "Chips")
                itemLabel.Text = "Chips";
            totalAmountLabel.Text = amountLabel.Value * Chips;

        }


@heinzdmx
amountLabel.Value viser hvor mange "chips" man vil have
Chips får et tal mellem 5-15 hvilket er prisen
Altså:
totalAmountLabel.Text = pris * chips

Så jo, der er tal, og jeg forsøger heller ikke at regne mit $tegn med, men det kan da godt være at jeg alligevel overser noget vigtigt?
Avatar billede heinzdmx Nybegynder
23. maj 2011 - 21:39 #12
Jeg kan ikke se hvor Chips er defineret?

Er det et int/decimal eller en string?

totalAmountLabel.Text = (Convert.ToInt32(amountLabel.Value) * Convert.ToInt32(Chips))+"";


Burde give det du er ude efter, givet at både Chips og amountLabel.Value indeholder en værdi der kan laves om til int.
Avatar billede arne_v Ekspert
23. maj 2011 - 21:45 #13
totalAmountLabel.Text = (int.Parse(amountLabel.Value) * Chips).ToString();
Avatar billede severin1000 Nybegynder
23. maj 2011 - 21:59 #14
Det giver fejl:

Error    1    The best overloaded method match for 'int.Parse(string)' has some invalid arguments

Error    2    Argument 1: cannot convert from 'decimal' to 'string'



Hmmmm... :S
Føler mig lidt dum her..
Avatar billede severin1000 Nybegynder
23. maj 2011 - 22:25 #15
Okay. Nu fik jeg det sat op så der ikke kommer nogle errors.
Jeg har lavet den om til:

            totalPriceLabel.Text = (Convert.ToInt32(amountLabel.Value) * Convert.ToInt32(priceLabel.Text)) + "$";

Som sagt er der ingen errors, men når jeg forsøger at vælge en item, cracher programmet og skriver at priceLabel.Text: Input string was not in a correct format.
Avatar billede severin1000 Nybegynder
23. maj 2011 - 22:26 #16
Jeg lavede Convert.ToInt32(Chips)) om til Convert.ToInt32(priceLabel.Text)) så jeg kan bruge den til flere forskellige ting end bare Chips.
Avatar billede arne_v Ekspert
25. juni 2011 - 04:13 #17
Tid at faa afsluttet her?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester