Gå til innhold

Nybegynner hjelp - valutakalkulator


Anbefalte innlegg

Hei! Har akkurat begynt med java på skolen og har første innlevering som jeg har sitti og tukla med i hele dag uten at jeg kommer frem til noe. Og hadde håpet på at noen her inne kunne se på koden og fortelle meg hvor feilene ligger/hva som må forbedres.

 

Oppgave:

Et program skal ta et beløp i US-dollar og regne det om til norske kroner (bruk dagens vekslingskurs). Programmet skal beregne og vise hvordan dette beløpet bør utbetales så effektivt som mulig i norske betalingsenheter (alle). Skriv ut både grunnlaget for, og resultatet av, beregningene på en forklarende måte.

 

/*
* Valutacalc
*
*/
import static java.lang.System.*;
import static java.lang.Integer.*;
import static javax.swing.JOptionPane.*;
public class Kalkulator {
 public static void main(String[] args) {
   // Leser verdi fra brukeren
   String tallTxt = showInputDialog("Antall US Dollar");
   int dollar = parseInt(tallTxt);
   double valuta = 5,49;
   // Beregner svarene av regnearbeidet /
   int svar1 = dollar * valuta;
   //Skriv ut resultat
   showMessageDialog(null,   dollar  * " * " valuta " = " + svar1 + "\n"
																	  );
 }
}

 

Har også en .class fil men det skjønner jeg ikke hva jeg skal med engang, eller hvordan den kan åpnes.

 

Håper noen kunne hjulpet!

Lenke til kommentar
Videoannonse
Annonse

Nå har jeg fått koden til å funke men har fortsatt et problem: Programmet skal beregne og vise hvordan dette beløpet bør utbetales så effektivt som mulig i norske betalingsenheter (alle). Skriv ut både grunnlaget for, og resultatet av, beregningene på en forklarende måte.

 

Noen som har peil på hvordan jeg kan få gjort det?

 

/*
* Valutacalc
*
*/
import static java.lang.System.*;
import static java.lang.Integer.*;
import static javax.swing.JOptionPane.*;
public class Kalkulator {
public static void main(String[] args) {
   // Leser verdi fra brukeren
   String tallTxt = showInputDialog("Antall US Dollar");
   int dollar = parseInt(tallTxt);
   double valuta = 5.49;
   // Beregner svarene av regnearbeidet /
   double svar1 = dollar * valuta;
   //Skriv ut resultat
   showMessageDialog(null,   dollar  + " * " + valuta + " = " + svar1 + "\n"
						 );
}
}

Lenke til kommentar

For å finne ut av utbetalingen må du bruke noe som heter modulo: https://www.diskusjon.no/index.php?showtopic=1484825

 

Kort fortalt gir den det som blir "resten" når du f.eks. har delt ut så mange tusenlapper som det skal til for å dekke et beløp:

 

5200 % 1000 == 200, dvs. her kan du dele ut 5 tusenlapper, og da står det igjen 200kr.

 

Akkurat hvor mange tusenlapper du har delt ut er altså (5200 - (5200 % 1000)) / 1000 == 5

 

Så det du trenger å gjøre her er å løpe gjennom de valutaenhetene vi har, ovenfra og nedover, og se hvor mange av hver av disse du skal utbetale, og deretter gjøre det samme med neste valutaenhet og "resten", helt til det ikke er flere valutaenheter igjen.

 

 

import static java.lang.Integer.parseInt;
import static javax.swing.JOptionPane.showInputDialog;
import static javax.swing.JOptionPane.showMessageDialog;
public class Valuta {
   private static final double[] valutaEnheter = new double[]{1000,500,100,50,20,10,5,1,0.5};
   public static void main(String[] args) {
    String tallTxt = showInputDialog("Antall US Dollar");
    int dollar = parseInt(tallTxt);
    double valuta = 5.49;
    double svar1 = dollar * valuta;
    showMessageDialog(null, dollar + " * " + valuta + " = " + svar1 + "\n" + payOut(svar1 ,0));
   }
   public static String payOut(double restValue, int valutaEnhetIdx) {
    if (valutaEnhetIdx == valutaEnheter.length) return "\nRest:" + restValue;
    return    "Enhet:" + valutaEnheter[valutaEnhetIdx]
		    + ", Antall:" + ((restValue - (restValue % valutaEnheter[valutaEnhetIdx])) / valutaEnheter[valutaEnhetIdx]) + "\n"
		    + payOut(restValue % valutaEnheter[valutaEnhetIdx], ++valutaEnhetIdx);
   }
}

 

  • Liker 1
Lenke til kommentar

For å finne ut av utbetalingen må du bruke noe som heter modulo: http://www.diskusjon...owtopic=1484825

 

Kort fortalt gir den det som blir "resten" når du f.eks. har delt ut så mange tusenlapper som det skal til for å dekke et beløp:

 

5200 % 1000 == 200, dvs. her kan du dele ut 5 tusenlapper, og da står det igjen 200kr.

 

Akkurat hvor mange tusenlapper du har delt ut er altså (5200 - (5200 % 1000)) / 1000 == 5

 

Så det du trenger å gjøre her er å løpe gjennom de valutaenhetene vi har, ovenfra og nedover, og se hvor mange av hver av disse du skal utbetale, og deretter gjøre det samme med neste valutaenhet og "resten", helt til det ikke er flere valutaenheter igjen.

 

 

import static java.lang.Integer.parseInt;
import static javax.swing.JOptionPane.showInputDialog;
import static javax.swing.JOptionPane.showMessageDialog;
public class Valuta {
private static final double[] valutaEnheter = new double[]{1000,500,100,50,20,10,5,1,0.5};
public static void main(String[] args) {
	String tallTxt = showInputDialog("Antall US Dollar");
	int dollar = parseInt(tallTxt);
	double valuta = 5.49;
	double svar1 = dollar * valuta;
	showMessageDialog(null, dollar + " * " + valuta + " = " + svar1 + "\n" + payOut(svar1 ,0));
}
public static String payOut(double restValue, int valutaEnhetIdx) {
	if (valutaEnhetIdx == valutaEnheter.length) return "\nRest:" + restValue;
	return	"Enhet:" + valutaEnheter[valutaEnhetIdx]
			+ ", Antall:" + ((restValue - (restValue % valutaEnheter[valutaEnhetIdx])) / valutaEnheter[valutaEnhetIdx]) + "\n"
			+ payOut(restValue % valutaEnheter[valutaEnhetIdx], ++valutaEnhetIdx);
}
}

 

 

Okey, hørtes avansert ut det her men sitter og leser nå. Prøvde og ta koden din og kjøre som javafil, men da skjedde det ingenting?

Lenke til kommentar

Vel, dette er jo stort sett din egen kode som du vel har klart å kjøre tidligere i dag?

 

Edit: Merk at klassen heter Valuta, og ikke Kalkulator. Og; skjer det virkelig ingen ting overhodet?

 

Det fins sikkert enklere løsninger for andre fortolkninger av "utbetales så effektivt som mulig"

Endret av quantum
  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...