Avatar billede repsak Nybegynder
21. oktober 2001 - 11:31 Der er 3 kommentarer og
1 løsning

NoSuchMethodError med programkode

Hej!
Jeg er nybegynder i JAVA
Jeg har skrevet et program i Java. Det kan uden problemer kompileres, men når jeg kører det fra Textpad får jeg en DOSprompt med meddelelsen:
NoSuchMethodError. Jeg har prøvet at læse dokumentationen men jeg kan ikke få programmet til at køre. Herunder er programkoden. (Den er ikke færdig endnu)

M.v.h.
Kasper

import javagently.*;
import java.io.*;


//        Program af Kasper Larsen

class Bank {

    Konto konto1, konto2, konto3, konto4, konto5;
    Stream dataIn, saldoIn, saldoOut;
    Display d;
    double saldo1,saldo2,saldo3,saldo4,saldo5;
    String fejlkode=\"Den indtastede kode er forkert\", velkommen=\"\\n\\nVelkommen i Finansbanken \";


    Bank () throws IOException {
        // opretter filer. data.dat: kundeoplysninger - saldo.dat: saldooplysninger
        dataIn = new Stream(\"data.dat\", Stream.WRITE);
        saldoIn = new Stream(\"saldo.dat\", Stream.WRITE);
        saldoOut = new Stream(\"saldo.dat\", Stream.READ);

        //opretter 5 konti
        //Læs: navn, adr, saldo, pass(kode), rente
        konto1 = new Konto(\"Georg Nielsen\",\"Fyrrelunden 23\",0,\"qad\",0.02);
        konto2 = new Konto(\"Finn Clausen\",\"Markvej 47\",0,\"def\",0.02);
        konto3 = new Konto(\"Ditte Skov\",\"Tigervænget 88\",0,\"ulv\",0.02);
        konto4 = new Konto(\"Bjarne Olsen\",\"Sydhaven 14\",0,\"pol\",0.02);
        konto5 = new Konto(\"Bente Hansen\",\"Skovdiget 30\",0,\"sak\",0.02);

        skrivFilSaldo();
        skrivFilKunde();
        //tilskrivAlle();

        d = new Display (\"Finansbanken\");
        d.prompt(\"Indsæt / hæv\",\"\");
        d.prompt(\"på konto (1-5)\", \"\");
        d.prompt(\"kode\",\"\");

        for ( ; ; ) {
            d.ready(\"\\nTryk READY når din ordre er indtastet\");

            //Indsamler brugerindtastningerne i variablerne
            double beløbIndsæt = d.getDouble (\"Indsæt / hæv\");
            int kontonr = d.getInt(\"på konto (1-5)\");
            String forsøg = d.getString(\"kode\");

            //Disse if-sætninger tjekker om kontonr og kode stemmer overens (vha kald til andre metoder)
            if (kontonr==1){
                d.println(velkommen + konto1.navn );
                if (konto1.kontrolBruger(beløbIndsæt,forsøg, kontonr)==true){
                    d.println(konto1.overtrak + konto1.saldo);
                    konto1.overtrak=\"Din saldo er nu: \";
                }
                else{
                    d.println(fejlkode);
                }
            }
            else if (kontonr==2){
                d.println(velkommen + konto2.navn );
                if (konto2.kontrolBruger(beløbIndsæt,forsøg, kontonr)==true){
                    d.println(konto2.overtrak +  konto2.saldo);
                    konto2.overtrak=\"Din saldo er nu: \";
                }
                else{
                    d.println(fejlkode);
                }
            }
            else if (kontonr==3){
                d.println(velkommen + konto3.navn );
                if (konto3.kontrolBruger(beløbIndsæt,forsøg, kontonr)==true){
                    d.println(konto3.overtrak +  konto3.saldo);
                    konto3.overtrak=\"Din saldo er nu: \";
                }
                else{
                    d.println(fejlkode);
                }
            }
            else if (kontonr==4){
                d.println(velkommen + konto4.navn );
                if (konto4.kontrolBruger(beløbIndsæt,forsøg, kontonr)==true){
                    d.println(konto4.overtrak +  konto4.saldo);
                    konto4.overtrak=\"Din saldo er nu: \";
                }
                else{
                    d.println(fejlkode);
                }
            }
            else if (kontonr==5){
                d.println(velkommen + konto5.navn );
                if (konto5.kontrolBruger(beløbIndsæt,forsøg, kontonr)==true){
                    d.println(konto5.overtrak +  konto5.saldo);
                    konto5.overtrak=\"Din saldo er nu: \";
                }
                else{
                    d.println(fejlkode);
                }
            }
            //Hvis bruger indtaster et forkert kontonr vises følgende
            else{
                d.println(\"Du skal indtaste et kontonr mellem 1 og 5.\\n\"+kontonr + \" er ikke godkendt\");
            }
        }
    }

    void skrivFilKunde () throws IOException{
        //udskriver alle kundeoplysninger ud i filen data.dat
        dataIn.println (konto1.navn + \" \" + konto1.adr + \" \" + konto1.saldo + \" \" + konto1.pass + \" \" + konto1.rente);
        dataIn.println (konto2.navn + \" \" + konto2.adr + \" \" + konto2.saldo + \" \" + konto2.pass + \" \" + konto2.rente);
        dataIn.println (konto3.navn + \" \" + konto3.adr + \" \" + konto3.saldo + \" \" + konto3.pass + \" \" + konto3.rente);
        dataIn.println (konto4.navn + \" \" + konto4.adr + \" \" + konto4.saldo + \" \" + konto4.pass + \" \" + konto4.rente);
        dataIn.println (konto5.navn + \" \" + konto5.adr + \" \" + konto5.saldo + \" \" + konto5.pass + \" \" + konto5.rente);
        dataIn.close();
    }

    void skrivFilSaldo() throws IOException{
        //skriver alle saldoer ud i filen saldo.dat
        saldoIn.println(konto1.saldo);
        saldoIn.println(konto2.saldo);
        saldoIn.println(konto3.saldo);
        saldoIn.println(konto4.saldo);
        saldoIn.println(konto5.saldo);
        saldoIn.close();

        //indsamler alle fem saldoer i fem variabler
        saldo1=saldoOut.readDouble();
        saldo2=saldoOut.readDouble();
        saldo3=saldoOut.readDouble();
        saldo4=saldoOut.readDouble();
        saldo5=saldoOut.readDouble();
    }

    public static void main (String [ ]  args) throws IOException{
        new Bank ();
    }
}

class Konto {

    String navn, adr, pass, overtrak=\"Din saldo er nu: \";
    double saldo=0, rente;
    boolean svar;

    Konto (String n, String a, double s, String p, double r) {
        navn = n;
        adr = a;
        saldo = s;
        pass = p;
        rente = r;
    }

    boolean kontrolBruger(double beløbIndsæt, String forsøg, int kontonr){
        //Denne metode kalder metoden indsæt hvis kode er OK
        if (checkKode(forsøg)==true){
            indsæt (beløbIndsæt, kontonr);
            return true;
        }
        else {
            return false;
        }
    }

    void indsæt (double beløbIndsæt, int kontonr) {
        //Denne metode indsætter/hæver det ønskede beløb på den aktuelle konto
        //samt forhindrer eventuelt overtræk

        if (saldo+beløbIndsæt<0) {
            overtrak=\"Du kan ikke overtrække din konto!\\nDin saldo er derfor stadig: \";
        }
        else{
            saldo=beløbIndsæt+saldo;
        }
    }

    void tilskriv() {
        //Her til skrives rente
        saldo = (saldo*rente+saldo);
    }

    boolean checkKode(String forsøg) {
        //sammenligner den indtastede kode med den registrerede
        svar = forsøg.equals(pass);
        //returnerer kun  true  hvis koden er OK
        return svar;
    }
}
Avatar billede birkis Nybegynder
21. oktober 2001 - 12:18 #1
din \"javagently\" - hvor har du den fra?

Jeg får ikke til å teste koden uten den...
Avatar billede mipe1 Nybegynder
21. oktober 2001 - 13:42 #2
hvad siger den mere end \"NoSuchMethodError\" ?

Prøv at køre det fra en dos-prompt med
java Bank
Avatar billede disky Nybegynder
21. oktober 2001 - 17:44 #3
stil dig samme sted som din .java fil er og skriv

java -cp . Bank

Problemmet kunne være din classpath ikke er sat korrekt op.
Avatar billede tripwire Nybegynder
22. oktober 2001 - 20:23 #4
Man kan hente javagently pakken her...

http://javagently.cs.up.ac.za/jg3e/

Det er den bog han arbejder ud fra.
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
Kurser inden for grundlæggende programmering

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