Avatar billede donslund Nybegynder
10. maj 2004 - 21:51 Der er 11 kommentarer og
1 løsning

Problemer med ConsoleReader

Nu skal det altså være. Jeg er gået igang med "computing concepts with JAVA 2" af Cay Horstmann.

Så sidder jeg og kører de små kodestumper igennem men render på et problem med ConsoleReader.

Hvad fejler denne linie?

ConsoleReader console = new ConsoleReader(System.in);
Avatar billede arne_v Ekspert
10. maj 2004 - 21:53 #1
Ingenting.

Forudsat at du har en ConsoleReader klasse (med den constructor) - standard
har Java nemlig ikke en sådan klasse, så det er en du skal levere.

Det kunne være en som kommer med bogen - eller er lavet i et tidligere kapitel.
Avatar billede donslund Nybegynder
10. maj 2004 - 21:56 #2
okay. Hvordan får jeg den ellers til at læse brugerinputs?
Avatar billede arne_v Ekspert
10. maj 2004 - 21:59 #3
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int i = Integer.parseInt(br.readLine());
Avatar billede _carsten Nybegynder
10. maj 2004 - 22:06 #4
ConsoleReader får en klokke til ringe hos mig

ConsoleReader console = new ConsoleReader(System.in);

int i = console.readInt();  // eller sådan noget lignende

Så vidt jeg husker er Arne's kommentar 10/05-2004 21:59:35 på en eller anden måde bygget ind i ConsoleReader
Avatar billede arne_v Ekspert
10. maj 2004 - 22:09 #5
Den slags klasser med readInt, readString etc. er tit lavet.

Jeg har set den flere gange med navnet Keyboard.
Avatar billede donslund Nybegynder
10. maj 2004 - 22:12 #6
jeg er fuldstændig ny i dette her. Og fatter ikke ret meget. Har forsøgt at lave noget ud fra bogen jeg sidder med, men det vil ikke helt. Det ser sådan her ud:

/*
* Coins4.java
*
* Created on 3. maj 2004, 17:27
*/

import java.text.NumberFormat;
/**
*
* @author  Jeppe
*/
public class ConsoleReader {
    public ConsoleReader(InputStream inStream) {
        reader = new BufferedReader(new InputStreamReader(inStream));
    }
   
    public String readLine() {
        String inputLine = "";
       
        try {
            inputLine = reader.readLine();
        }
        catch(IOException e) {
            System.out.println(e);
            System.exit(1);
        }
       
        return inputLine;
        }
    }
}


public class Coins4 {
    public static void main(String[] args) {
        final double PENNY_VALUE = 0.01;
        final double NICKEL_VALUE = 0.05;
        final double DIME_VALUE = 0.1;
        final double QUARTER_VALUE = 0.25;
       
        ConsoleReader console = new ConsoleReader(System.in);
       
        System.out.println("How many pennies do you have?");
        int pennies = console.readInt();
       
        System.out.println("How many nickels do you have?");
        int nickels = console.readInt();
       
        System.out.println("How many dimes do you have?");
        int dimes = console.readInt();
       
        System.out.println("How many quarters do you have?");
        int quarters = console.readInt();
       
        double total = pennies * PENNY_VALUE
      + nickels * NICKEL_VALUE
      + dimes * DIME_VALUE
          + quarters * QUARTER_VALUE;
       
        NumberFormat formatter = NumberFormat.getCurrencyInstance();
       
        System.out.println("Total value = " + formatter.format(total));
    }
}
Avatar billede arne_v Ekspert
10. maj 2004 - 22:16 #7
Der mangler vist en reader variabel i ConsoleReader klassen.

Og du kan ikke have 2 public klasser i samme fil.
Avatar billede arne_v Ekspert
10. maj 2004 - 22:19 #8
Det her compiler og kører:

import java.io.*;
import java.text.NumberFormat;

class ConsoleReader {
    private BufferedReader reader;
    public ConsoleReader(InputStream inStream) {
        reader = new BufferedReader(new InputStreamReader(inStream));
    }

    public String readLine() {
        String inputLine = "";

        try {
            inputLine = reader.readLine();
        } catch (IOException e) {
            System.out.println(e);
            System.exit(1);
        }

        return inputLine;
    }
   
    public int readInt() {
        return Integer.parseInt(readLine());
    }
}

public class Coins4 {
    public static void main(String[] args) {
        final double PENNY_VALUE = 0.01;
        final double NICKEL_VALUE = 0.05;
        final double DIME_VALUE = 0.1;
        final double QUARTER_VALUE = 0.25;

        ConsoleReader console = new ConsoleReader(System.in);

        System.out.println("How many pennies do you have?");
        int pennies = console.readInt();

        System.out.println("How many nickels do you have?");
        int nickels = console.readInt();

        System.out.println("How many dimes do you have?");
        int dimes = console.readInt();

        System.out.println("How many quarters do you have?");
        int quarters = console.readInt();

        double total =
            pennies * PENNY_VALUE
                + nickels * NICKEL_VALUE
                + dimes * DIME_VALUE
                + quarters * QUARTER_VALUE;

        NumberFormat formatter = NumberFormat.getCurrencyInstance();

        System.out.println("Total value = " + formatter.format(total));
    }
}
Avatar billede donslund Nybegynder
10. maj 2004 - 22:23 #9
Hvis jeg copy/paster dit, sker følgende:

java.lang.NoClassDefFoundError: test1/Coins4 (wrong name: Coins4)
        at java.lang.ClassLoader.defineClass0(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:537)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:251)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:55)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:194)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:187)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:289)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:235)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)
Exception in thread "main"
Avatar billede arne_v Ekspert
10. maj 2004 - 22:25 #10
Ah - du har oprettet den i en pakke test1 !

Så sætter du:

package test1;

ind som første linie !
Avatar billede donslund Nybegynder
10. maj 2004 - 22:30 #11
ja, så var den der. Det vil jeg lege lidt videre med.

Smid et svar.
Avatar billede arne_v Ekspert
10. maj 2004 - 22:31 #12
svar
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