kjey Skrevet 22. mai 2006 Del Skrevet 22. mai 2006 Hei, jobber med noen oppgaver i en Javabok jeg leser. Jeg lager en bankkonto hvor man kan ta ut penger og sette inn. Foreløpig lager jeg en innloggingssjekk som krever at brukeren kan bankpassordet sitt. Av en eller annen grunn går det ikke ann å logge seg inn i det hele tatt... Noen som ser noen feil? import static javax.swing.JOptionPane.*; public class Main { int saldo; String kontonr; public Main(int saldo, String kontonr) { this.saldo = saldo; this.kontonr = kontonr; } public double finnSaldo () { return saldo; } public String finnKontonr () { return kontonr; } public int trykkKode (String kontoKode) { if (kontoKode == "hemmelig") { return 1; } else { return 0; } } public void uttak (int uttak) { saldo = saldo - uttak; } public void innskudd (int innskudd) { saldo = saldo + innskudd; } public static void main(String[] args) { Main olesKonto = new Main (10000, "070488 45678"); String kode = showInputDialog("Skriv inn bankkoden din:"); kode.trim(); switch (olesKonto.trykkKode(kode)) { case 1 : showMessageDialog(null, "Du er logget inn!"); break; case 0 : showMessageDialog(null, "Du er ikke logget inn!"); break; } } } Lenke til kommentar
oyvind_b Skrevet 22. mai 2006 Del Skrevet 22. mai 2006 Jeg ser to feil: kode.trim(); Dette vil ikke fungere da en String er immutable, dvs at den ikke kan endres. Trim-metoden returnerer resultatet, dvs at den skal brukes slik: kode = kode.trim(); Den andre feilen er at du bruker == for å sammenligne karakterene i en streng. Dette sammenligner bare minnereferansen, noe som blir feil i dette tilfellet. Bruk heller metoden equals slik: if (kontoKode.equals("hemmelig")) ... Håper dette hjalp deg! (Jeg har ikke testet endringene fordi jeg ikke har Java-kompilator installert) Øyvind Lenke til kommentar
kjey Skrevet 22. mai 2006 Forfatter Del Skrevet 22. mai 2006 Takk, fungerte flott! Men et annet spørsmål: Hvis bankkoden er feil, hvordan kan da programmet starte på nytt av seg selv etter de har sett message boxen? Lenke til kommentar
HV Skrevet 22. mai 2006 Del Skrevet 22. mai 2006 public static void main(String[] args) { Main olesKonto = new Main(10000, "070488 45678"); boolean isLoggedInn = false; while (!isLoggedInn) { String kode = JOptionPane .showInputDialog("Skriv inn bankkoden din:"); kode = kode.trim(); switch (olesKonto.trykkKode(kode)) { case 1: JOptionPane.showMessageDialog(null, "Du er logget inn!"); isLoggedInn = true; break; case 0: JOptionPane.showMessageDialog(null, "Du er ikke logget inn!"); break; } } } Lenke til kommentar
kjey Skrevet 22. mai 2006 Forfatter Del Skrevet 22. mai 2006 (endret) Tusen takk, da har jeg lært noe nyttig i dag også Her er ihvertfall det ferdige produktet for dem som er interesserte (kom gjerne med kommentarer hvis det er noe å kommentere): import static javax.swing.JOptionPane.*; public class Main { int saldo; String kontonr; public Main(int saldo, String kontonr) { this.saldo = saldo; this.kontonr = kontonr; } public double finnSaldo () { return saldo; } public int tilgang (String kontoKode) { if (kontoKode.equals("1234")) { return 1; } else { return 0; } } public void uttak (int uttak) { saldo = saldo - uttak; } public static void main(String[] args) { Main olesKonto = new Main (10000, "070488 45678"); boolean repiter = true; while (repiter) { String kode = showInputDialog("Skriv inn bankkoden din:"); kode = kode.trim(); switch (olesKonto.tilgang(kode)) { case 1 : repiter = false; break; case 0 : showMessageDialog(null, "Feil passord, Skriv inn på nytt!"); break; } // Slutt switch } // Slutt while, fortsett programmet -> showMessageDialog (null, "Du har " + olesKonto.finnSaldo() + "kr til din disposisjon!"); boolean gyldigUttak = false; while (!gyldigUttak) { try { String uttakInput = showInputDialog ("Hvor mye vil du ta ut av banken?"); int uttak = Integer.parseInt(uttakInput); if (olesKonto.finnSaldo() - uttak < 0) { gyldigUttak = false; showMessageDialog (null, "Du har ikke mer enn " + olesKonto.finnSaldo() + "" + "kr til din disposisjon!"); } else { gyldigUttak = true; olesKonto.uttak(uttak); showMessageDialog (null, "Du tok ut " + uttak + "kr fra banken og har " + olesKonto.finnSaldo() + "kr til din disposisjon!"); } // Slutt if } catch (NumberFormatException e) { showMessageDialog (null, "Ygyldige tall, prøv på nytt!"); } // Slutt try/catch } // Slutt while } // Slutt main } // Slutt class Main Endret 22. mai 2006 av kjey Lenke til kommentar
qualbeen Skrevet 22. mai 2006 Del Skrevet 22. mai 2006 bare en liten bagatell: saldoen oppgis som int. Det samme gjelder innskudd/uttak. Men når man skal hente fram saldoen returneres double... Du må nok bestemme deg om du vil gå for double eller int her. Ikke begge deler!! double er vel greit for å få det realistisk, men prøv å ikke skrive ut mer en 2 desimaler ved saldoutskrift Lenke til kommentar
elminzter Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 (endret) når vi først er inne på variabeltyper så syns jeg det er litt merkelig at metoden "tilgang" returnerer int på 1 eller 0 for så å bruke switch på den, hvorfor ikke bare boolean? public boolean tilgang (String kontoKode) { return (kotokode.equals("1234") ? true : false); } og if (olesKonto.tilgang(kode)) { repeter = false; } else { showMessageDialog(null, "Feil passord, Skriv inn på nytt!"); } Endret 23. mai 2006 av elminzter Lenke til kommentar
CruellaDeVille Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 når vi først er inne på variabeltyper så syns jeg det er litt merkelig at metoden "tilgang" returnerer int på 1 eller 0 for så å bruke switch på den, hvorfor ikke bare boolean? public boolean tilgang (String kontoKode) { return (kotokode.equals("1234") ? true : false); } 6159841[/snapback] eller bare public boolean tilgang (String kontoKode) { return kontoKode.equals("1234"); } Lenke til kommentar
elminzter Skrevet 23. mai 2006 Del Skrevet 23. mai 2006 hahaha, så klart ^^ skrev egentlig opp en if-setning, men så korta jeg den ned uten å i det hele tatt tenke meg om ^^ Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå