webForumDet fria alternativet

Valutakonverterare i en MIDlet

6 svar · 830 visningar · startad av Wabor

WaborMedlem sedan aug. 200711 inlägg
#1

Hej alla experter och alla andra för den delen också :) Jag skulle behöva lite hjälp. Jag håller på och gör en MIDlet i netBeans som bl.a. ska kunna konvertera valutor men jag får inte till det. Jag vill kunna omvandla ett belopp i en viss valuta till motsvarande belopp i en annan valuta. Man ska själv kunna ange det belopp som ska omvandlas, beloppets valuta, samt vilka valuta som beloppet ska omvandlas till. Jag hade tänkt använda mig av en klass som heter Valuta (som representerar individuella valutor) där varje valuta ska ha ett namn (tex. SEK) och en kurs. Hade inte tänkt och göra det så avancerat så jag tänkte hårdkoda mina valutor i källkoden.

Någon som kan hjälpa mig på traven, är verkligen helt vilsen.

spangoMedlem sedan juni 20006 147 inlägg
#2

Låter som om du redan vet vad du ska göra. Lite som en skoluppgift så jag tänker inte svara med kod :) men att översätta till kod är enkelt när matten är klar. Använd en valuta (t.ex. USA-dollar) som bas, och ställ andra valutor i ett förhållande till denna basvaluta. Antag att du använder usd som basvaluta och vill se vad 35 svenska kronor blir i brittiska pund. Processen blir som följer:

  1. 1 sek = 0.149615 usd
  2. 1 gbp = 2.0158 usd
  3. Växlingskurs sek till gbp = (0.149615 / 2.0158)
  4. 35 sek i gbp = 35 * växlingskurs = 2.59774035 gbp

Så, växlingskursen mellan två valutor är alltså (ursprungsvalutan i förhållande till basvalutan) / (målvalutan i förhållande till basvalutan). Har man ett fast belopp i ursprungsvalutan man vill köpa för (som i exemplet ovan, man har 35 sek), så är det bara att multiplicera den mängden med växlingskursen, så får man fram hur mycket av målvalutan man får. Vill man istället köpa en viss mängd av en valuta (t.ex. om man vill veta vad 100 gbp kostar i sek), dividerar man den mängden med växelkursen så får man reda på vad det kostar i i ursprungsvalutan.

WaborMedlem sedan aug. 200711 inlägg
#3

Det stämmer bra att det är en del i en skoluppgift, som dessutom säkert är rätt enkel, dock inte för mig. Förstår inte alls vart jag ska börja. Tycker det är väldigt klurigt, men nu kanske jag får till nån form utav beräkning iaf. För min beräkning som jag har än så länge räknar bara från svenska kronor * en valuta, så den måste som sagt göras om till att man ska ha någon valuta * någon valuta. Det jag har gjort på min uppgift är att jag har skapat en Visual MIDlet som består av 3 screens, en textBox där man matar in det belopp man vill konvertera, en list där jag har 5 olika valutor (där jag för varje valuta räknar de inmatade svenska kronorna*den valda valutan) och en Form där jag vill att resultatet ska visas. Vet inte alls om jag gör på rätt sätt. För i uppgiften ska jag använda mig av en klass valuta vilket jag inte gör, för jag förstår inte hur jag ska få in den i det hela? någon som förstår det och kan förklara för mig? Sen undrar jag om någon vet hur man i netBeans hämtar ett värde från en Form? för det är i den screen'en som jag vill att mitt resultat ska visas!

spangoMedlem sedan juni 20006 147 inlägg
#4

Wabor skrev:

För i uppgiften ska jag använda mig av en klass valuta vilket jag inte gör, för jag förstår inte hur jag ska få in den i det hela?

Det du ska tänka på är vad en valuta består av, och vad man kan tänkas göra med den. Vi vet att varje valuta har:
- Ett namn (typ "sek" för svenska kronor).
- Ett tal som visar valutans förhållande till basvalutan (t.ex. 0.149615 för svenska kronor i mitt exempel).
Så det känns väl ganska naturligt att en valutaklass skulle innehålla den här informationen - namnet, och växelkursindexet.

Sen har vi ju två operationer man vill kunna göra med valutor:
- Konvertera en viss mängd pengar av en annan valuta till den aktuella valutan.
- Konvertera en viss mängd pengar av den aktuella valutan till en annan valuta.
... och det här väl antagligen också hemma i valutaklassen.

Börjar det klarna?

WaborMedlem sedan aug. 200711 inlägg
#5

Jag har kommit rätt så långt, jag har en Valuta klass med getName och getKurs (blandar engelska och svenska hejvilt, det blir mycket snyggt) och där tror jag det ser ut som det ska. Sen har jag gjort en MIDlet som består av en Lista där man väljer vilken valuta man matar in av, sen en textBox där man matar in själva beloppet, en lista där man väljer vilken valuta man vill ha beloppet i och sen ett form där jag vill att man ska se resultatet. Men jag får inte till resultatet. Detta är mitt försök till resultatet. Får inga kompileringsfel men får inte fram något värde heller.

Kanske är svårt att hänga med i men valutor är min array där jag har alla mina valutor, franValuta är min lista där man väljer vilken valuta man använder sig av, tillValuta är listan där man väljer vilken valuta man vill ha beloppet i, inmatning är min textBox där man matat in sitt belopp och stringItem1 är det fält där resultatet ska visas i slutändan i min form. Är något av detta begripligt? eller bara rörigt?

private void resultat()
{
float belopp = ((valutor[franValuta.getSelectedIndex()].getKurs() / valutor[tillValuta.getSelectedIndex()].getKurs()) * Float.parseFloat(inmatning.getString().replace(',','.')));

    stringItem1.setText("\\n" + inmatning.getString()
    \+ " " + valutor\[franValuta.getSelectedIndex()\].getName() + " in " + valutor\[tillValuta.getSelectedIndex()\].getName()
    \+ " is " + String.valueOf(belopp));
       
}
spangoMedlem sedan juni 20006 147 inlägg
#6

Det är lite rörigt ;) men ser väl funkis ut. Anropar resultat() som den ska? Om inte, är det är någon händelsehanterare någonstans som saknas.

WaborMedlem sedan aug. 200711 inlägg
#7

Löste precis uppgiften (tror jag iaf). Tack för all din hjälp. Du fick mig verkligen och tänka på ett annat sätt. Hade "bara" glömt och anropa min resultat metod. Inte konstigt att den inte kördes.

Genererad på 389 ms · cache AV · v20260730165559-full.f96bc7eb