Avatar billede michelle_mikkelsen Nybegynder
12. december 2002 - 14:54 Der er 12 kommentarer

TÆLLER FUNGERE IKKE!!!!!!! HVORFOR!!!!! HMMMMM

Hej Arne!
Jeg har lige siddet ca. 2 timer med det du havde sendt til mig men, jeg ka ikke få det til at hænge sammen, programmet viser en del fejl. Jeg tænkte på om du lige hurtigt kunne kigge på det igen. Jeg kan lige uddybe min problem stilling. Jeg har lavet programmet Forkortbroker, som skal lærer små elever, at forkorte brøker. Når disse elever har regnet opgaver opgaverne, så skal der dukke en tæller op som bare lige skal fortælle børnene, at de har regnet så så man rigtige, og så så mange forkerte, det sku være meget enkelt har jeg fået at vide, men jeg kan det altså ikke! Håber at du kan!!

På forhånd mange tak!!

Michelle M.

import java.util.Random;
import cs1.Keyboard;
import cs1.*;

public class Forkortbroker2
{
    public static void main (String[] args)
      {

                    Random tilfældig1 = new Random();


                    int facit;
                    int naev = 0;
                    int tael = 0;
                    int tal1 = 0;
                    int tal2 = 0;
                    int naevner = 0;
                    int taeller = 0;
                    int tæller  = 0;
                    int antalopgaver = 0;
//                    int antaloperander, indtastsvar, operander, numeriskVaerdi;

//                    char fortegn;
//                    char operator;
                    String sum;
                    String resultat;


//                    System.out.println ("hej verden");


                    System.out.println ();                // Her indtastes de oenskede antal opgaver.
                    System.out.println ("Indtast hvor mange opgaver du vil have af typen 'Forkort broek'! ");
                    System.out.println ();
                    antalopgaver = Keyboard.readInt();

                                        // I opgavetype 3, er der en begrænsning på to operander!!
                                        // Her indtastes det ønskede værdi for naevner.
                    System.out.println ();
                    System.out.println("Indtast max-vaerdien for naevneren: ");
                    naev = Keyboard.readInt();
                    System.out.println ();

                    System.out.println (); // Her indtastes det ønskede værdi for taeller.
                    System.out.println("Indtast max-vaerdien for taeller: ");
                    tael = Keyboard.readInt();
                    System.out.println ();

                    System.out.println ();
                    System.out.println ("Forkort foelgende broeker!");
                    System.out.println ();

                                        // for-løkke kører indtil de indtastede antalopgaver er udført!
                    for (int i=1; i<=antalopgaver; i++)

                    {
                    Random generator = new Random();// Random objekt oprettes

                                                                // Tilfældige tal mellem max og min
                    tal1= generator.nextInt(tael)+ naev;
                    tal2= generator.nextInt(tael)+ naev;

                    // generel formel for beregningen udregnes vha. klassen Metode3 - oprettet nederst.
                    Metode3 regn = new Metode3 (tal1, tal2);


                                            // de generede tal sammenlægges med tegn, formel skabes
                    System.out.println("Forkort :"+ tal1 + "/" + tal2);

                      resultat=Keyboard.readString();
                                                                            // Resultatet udskrives
                    System.out.println ("\t Resultat: "+ regn );
                    System.out.println ();
                    }


                    int rigtige = 0;
                    int forkerte = 0;

                    for(int i = 0; i < totale; i++) {
                      udskriv opgave
                      x = bruger indtastet svar;
                      y = beregnet rigtigt svar;
                      if(x==y) {
                          rigtige++;
                      } else {
                          forkerte++;
                      }
                    }
                    System.out.println("rigtige: " + rigtige + " forkerte: " + forkerte);
}

}







class Metode3 // beregner type3 ligninger
    {
      public int tæller, nævner;

      public Metode3 (int tæl, int næv)
      {
          // tilpasser så 0 ikke forekommer som nævner og tildeler tæller et "-"
          if (næv == 0)
            næv = 1;

          // negative tæller
          if (næv < 0)
          {
            tæl = tæl * -1;
            næv = næv * -1;
          }

          tæller = tæl;
          nævner = næv;

          forkort ();

        }

      // returnerer tælleren
      public int getTæller ()
      {
          return tæller;
      }

      // returnerer nævneren
      public int getNævner ()
      {
          return nævner;
      }


      // returnerer reciprokken af en bestemt værdi
      public Metode3 reciprokke ()
      {
          return new Metode3 (nævner, tæller);
      }

      // retunerer værdien og "/" som string
      public String toString ()
      {
          String resultat;

          if (tæller == 0)
            resultat = "0";
          else
            if (nævner == 1)
                resultat = tæller + "";
            else
                resultat = tæller + "/" + nævner;

          return resultat;
      }

      // forkorter værdien ved at dividere tæller og nævner med største fællesnævner
      public void forkort ()
      {
          if (tæller != 0)
          {
            // kalder metoden størstFællesnævner som heltal
            int fællesnævner = StørstFællesnævner (Math.abs(tæller), nævner);

            tæller = tæller / fællesnævner;
            nævner = nævner / fællesnævner;
          }
      }

      // beregner og retunerer den største fællesnævner vha. Euclids algoritme
      private int StørstFællesnævner (int num1, int num2)
      {
          while (num1 != num2)
            if (num1 > num2)
                num1 = num1 - num2;
            else
                num2 = num2 - num1;

          return num1;
      }
}
Avatar billede di8leva Nybegynder
12. december 2002 - 14:59 #1
nå...
det er MEGET nemmere hvis man kan få reda på hvad du får før fejl?
Avatar billede michelle_mikkelsen Nybegynder
12. december 2002 - 15:04 #2
nå, hva mener du med det???
Avatar billede disky Nybegynder
12. december 2002 - 15:09 #3
Beskriv de fejl du får.

p.s. Det hjælper ikke at råbe i subject.
Avatar billede michelle_mikkelsen Nybegynder
12. december 2002 - 15:11 #4
HÅBER AT DET KAN HJÆLPE??

C:\Documents and Settings\AMIR SHAH\Dokumenter\Program udvikling\Forkortbroker2.java:82: ';' expected
                      udskriv opgave
                                                        ^
C:\Documents and Settings\AMIR SHAH\Dokumenter\Program udvikling\Forkortbroker2.java:84: ';' expected
                      y = beregnet rigtigt svar;
                                                      ^
C:\Documents and Settings\AMIR SHAH\Dokumenter\Program udvikling\Forkortbroker2.java:81: cannot resolve symbol
symbol  : variable totale 
location: class Forkortbroker2
                    for(int i = 0; i < totale; i++) {
                                                          ^
C:\Documents and Settings\AMIR SHAH\Dokumenter\Program udvikling\Forkortbroker2.java:82: cannot resolve symbol
symbol  : class udskriv 
location: class Forkortbroker2
                      udskriv opgave
                                          ^
C:\Documents and Settings\AMIR SHAH\Dokumenter\Program udvikling\Forkortbroker2.java:84: cannot resolve symbol
symbol  : variable y 
location: class Forkortbroker2
                      y = beregnet rigtigt svar;
                                          ^
C:\Documents and Settings\AMIR SHAH\Dokumenter\Program udvikling\Forkortbroker2.java:84: cannot resolve symbol
symbol  : variable beregnet 
location: class Forkortbroker2
                      y = beregnet rigtigt svar;
                                              ^
C:\Documents and Settings\AMIR SHAH\Dokumenter\Program udvikling\Forkortbroker2.java:85: cannot resolve symbol
symbol  : variable x 
location: class Forkortbroker2
                      if(x==y) {
                                            ^
C:\Documents and Settings\AMIR SHAH\Dokumenter\Program udvikling\Forkortbroker2.java:85: cannot resolve symbol
symbol  : variable y 
location: class Forkortbroker2
                      if(x==y) {
                                                ^
8 errors

Tool completed with exit code 1
Avatar billede ffse.dk Nybegynder
12. december 2002 - 15:22 #5
for(int i = 0; i < totale; i++) {
// udskriv opgave            <- hva' med at udkommentere disse linier?!
// x = bruger indtastet svar;
// y = beregnet rigtigt svar;
Avatar billede disky Nybegynder
12. december 2002 - 15:31 #6
Der er temmeligt mange fejl i din kode, steder du bruger variabler der ikke er defineret:
for(int i = 0; i < totale; i++) {

totale findes ikke

tildelinger der ikke giver mening:
// udskriv opgave            <- hva' med at udkommentere disse linier?!
x = bruger indtastet svar;
y = beregnet rigtigt svar;


Hvis i bruger et godt udviklingsværktøj som f.eks. SunOne fra www.javasoft.com kan i få god hjælp til at rette fejlene.
Avatar billede michelle_mikkelsen Nybegynder
12. december 2002 - 15:34 #7
Det hjælper ik så meget, har du ik en anden løsning???????
Avatar billede ffse.dk Nybegynder
12. december 2002 - 15:48 #8
Læs en bog om software-udvikling i Java..
Avatar billede di8leva Nybegynder
12. december 2002 - 15:50 #9
hvad fanden er cs.* før packages? =)
Avatar billede arne_v Ekspert
12. december 2002 - 17:00 #10
Avatar billede arne_v Ekspert
12. december 2002 - 17:23 #11
Og jeg har lige konverteret det fra cs.* til java.io.*
og det ser ud til at virke nogenlunde !

package test;

import java.util.Random;
import java.io.*;

public class Forkortbroker {
    public static void main(String[] args) {

        try {
            BufferedReader keyboard =
                new BufferedReader(new InputStreamReader(System.in));

            Random tilfældig1 = new Random();

            int facit;
            int naev = 0;
            int tael = 0;
            int tal1 = 0;
            int tal2 = 0;
            int naevner = 0;
            int taeller = 0;
            int tæller = 0;
            int antalopgaver = 0;
            //                    int antaloperander, indtastsvar, operander, numeriskVaerdi;

            //                    char fortegn;
            //                    char operator;
            String sum;
            String resultat;

            //                    System.out.println ("hej verden");

            System.out.println(); // Her indtastes de oenskede antal opgaver.
            System.out.println(
                "Indtast hvor mange opgaver du vil have af typen 'Forkort broek'! ");
            System.out.println();
            antalopgaver = Integer.parseInt(keyboard.readLine());

            // I opgavetype 3, er der en begrænsning på to operander!!
            // Her indtastes det ønskede værdi for naevner.
            System.out.println();
            System.out.println("Indtast max-vaerdien for naevneren: ");
            naev = Integer.parseInt(keyboard.readLine());
            System.out.println();

            System.out.println();
            // Her indtastes det ønskede værdi for taeller.
            System.out.println("Indtast max-vaerdien for taeller: ");
            tael = Integer.parseInt(keyboard.readLine());
            System.out.println();

            System.out.println();
            System.out.println("Forkort foelgende broeker!");
            System.out.println();

            int rigtige = 0;
            int forkerte = 0;
            // for-løkke kører indtil de indtastede antalopgaver er udført!
            for (int i = 1; i <= antalopgaver; i++) {
                Random generator = new Random(); // Random objekt oprettes

                // Tilfældige tal mellem max og min
                tal1 = generator.nextInt(tael) + naev;
                tal2 = generator.nextInt(tael) + naev;

                // generel formel for beregningen udregnes vha. klassen Metode3 - oprettet nederst.
                Metode3 regn = new Metode3(tal1, tal2);

                // de generede tal sammenlægges med tegn, formel skabes
                System.out.println("Forkort :" + tal1 + "/" + tal2);

                resultat = keyboard.readLine();
                // Resultatet udskrives
                System.out.println("\t Resultat: " + regn);
                System.out.println();
                if (regn.toString().equals(resultat)) {
                    rigtige++;
                } else {
                    forkerte++;
                }
            }

            System.out.println(
                "rigtige: " + rigtige + " forkerte: " + forkerte);
        } catch (IOException e) {
        }
    }

}

class Metode3 // beregner type3 ligninger
{
    public int tæller, nævner;

    public Metode3(int tæl, int næv) {
        // tilpasser så 0 ikke forekommer som nævner og tildeler tæller et "-"
        if (næv == 0)
            næv = 1;

        // negative tæller
        if (næv < 0) {
            tæl = tæl * -1;
            næv = næv * -1;
        }

        tæller = tæl;
        nævner = næv;

        forkort();

    }

    // returnerer tælleren
    public int getTæller() {
        return tæller;
    }

    // returnerer nævneren
    public int getNævner() {
        return nævner;
    }

    // returnerer reciprokken af en bestemt værdi
    public Metode3 reciprokke() {
        return new Metode3(nævner, tæller);
    }

    // retunerer værdien og "/" som string
    public String toString() {
        String resultat;

        if (tæller == 0)
            resultat = "0";
        else if (nævner == 1)
            resultat = tæller + "";
        else
            resultat = tæller + "/" + nævner;

        return resultat;
    }

    // forkorter værdien ved at dividere tæller og nævner med største fællesnævner
    public void forkort() {
        if (tæller != 0) {
            // kalder metoden størstFællesnævner som heltal
            int fællesnævner = StørstFællesnævner(Math.abs(tæller), nævner);

            tæller = tæller / fællesnævner;
            nævner = nævner / fællesnævner;
        }
    }

    // beregner og retunerer den største fællesnævner vha. Euclids algoritme
    private int StørstFællesnævner(int num1, int num2) {
        while (num1 != num2)
            if (num1 > num2)
                num1 = num1 - num2;
            else
                num2 = num2 - num1;

        return num1;
    }
}
Avatar billede arne_v Ekspert
12. december 2002 - 17:24 #12
Dog burde du erstatte:


                // Tilfældige tal mellem max og min
                tal1 = generator.nextInt(tael) + naev;
                tal2 = generator.nextInt(tael) + naev;

med:


                // Tilfældige tal mellem max og min
                tal1 = generator.nextInt(tael) + 1;
                tal2 = generator.nextInt(naev) + 1;
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