Avatar billede thomasskov Nybegynder
10. december 2001 - 17:01 Der er 11 kommentarer og
2 løsninger

Gæt et \"random-tal\" - program

Jeg forsøger at lave det gode gamle gæt-et-tal-program. Jeg er ikke interesseret i at vide hvor man evt. kan få programmet.
Jeg er lige startet med java og mangler lige nu hvordan man \"genbruger\" kode.

EKS:
Programmet spørger hvad dit gæt er, du indtaster gæt, programmet svarer at det er for lavt, programmet spørger hvad dit nye gæt er.....osv.... her skal programmet gå igen indtil gættet er korrekt.
Jeg har lavet hele programmet. Behøver derfor kun hvordan jeg får den til noget lignende

Label 1
spørgsmål
gæt
forkert svar ---> goto 1

kan man dette i java????
Problemet er også at gættet som hentes fra tastaturet kun kan stå i main().
Avatar billede cs_henrik Nybegynder
10. december 2001 - 17:05 #1
at bruge goto er ikke så pænt i et moderne programmeringssprog.
Du kan evt. bruge en do-while løkke som følgende:

do
{
  spørgsmål
  gæt
}
while(forkert svar)
Avatar billede thomasskov Nybegynder
10. december 2001 - 17:17 #2
sådan ser den del af programmet ud, som på et eller andet punkt skal gentages. Jeg kan ikke gennemskue hvor jeg skal bruge do osv. Kan du gøre det mere præcist?

public static void main(String[] args) throws IOException
    {
        findRandom();

        //Keyboard reading
        BufferedReader keyboard= new BufferedReader(new         InputStreamReader(System.in));
       
        //What is your guess written on screen
        System.out.println(\"What is your guess?\");

        //indlæs det indtastede tal
        guess= Integer.parseInt(keyboard.readLine());
       
        if (guess==number1) correct();
        else checkNumber();
Avatar billede greybeard Nybegynder
10. december 2001 - 17:26 #3
public static void main(String[] args) throws IOException
    {
        boolean forkert = true;
        findRandom();

        while(forkert){
            //Keyboard reading
            BufferedReader keyboard= new BufferedReader(new        InputStreamReader(System.in));
       
            //What is your guess written on screen
            System.out.println(\"What is your guess?\");

            //indlæs det indtastede tal
            guess= Integer.parseInt(keyboard.readLine());
       
          if (guess==number1){
              forkert = false;
              correct();
          else checkNumber();
      }
Avatar billede greybeard Nybegynder
10. december 2001 - 17:34 #4
Det er dog ikke \'pæn\' Javakode. Istedet bør du lave en klasse f.eks GætTal(), der kører loop\'et.
I den klasse kan du lave metoder til at indlæse en integer fra tastaturet og til at afgøre om tallet er <, = eller større end dit random tal. Det giver mere overskuelig kode.
Avatar billede thomasskov Nybegynder
10. december 2001 - 17:34 #5
Ok. Jeg er desværre stadig ikke med. Her kommer hele programmet som det ser ud nu.
Problemet er som sagt stadig at jeg skal have programmet til at spørge og vurdere éns gæt indtil man gætter rigtigt:

import java.io.*;

class Guess
//Finds the random number,
//askes you to guess and
//tells you more, less og CORRECT!
{
       
    //variables
    private static int guess;
    private static double number;
    private static long number1;


    public static void findRandom()
    {
        //random number is found betwenn 0 and 100
        if (number1>0) checkNumber();
        number= 100*Math.random();
        number1= Math.round(number);

    }

    public static void checkNumber()
    {
        //Checks if the guess is correct and writes
        //a message on screen
        if (guess>number1) System.out.println(\"Less...\");
        if (guess<number1) System.out.println(\"More...\");
        System.out.println();
        System.out.println(\"New guess?\");
    }
   
    public static void correct()
    {
        System.out.println(\"Correkt!\");
        System.exit(0);
    }

    public static void newGuess()
    {
       
    }
           

    public static void main(String[] args) throws IOException
    {
        findRandom();

        //Keyboard reading
        BufferedReader keyboard= new BufferedReader(new         InputStreamReader(System.in));

        //Name of the program
        System.out.println(\"***TSO GuessAnumbeR***\");
        System.out.println();
       
        //What is your guess written on screen
        System.out.println(\"What is your guess?\");

        //indlæs det indtastede tal
        guess= Integer.parseInt(keyboard.readLine());
       
        if (guess==number1) correct();
        else checkNumber();
       
    }
}
Avatar billede thomasskov Nybegynder
10. december 2001 - 17:37 #6
med hensyn til \"pæn\" kode er jeg MEGET åben for forslag. Det er første gang jeg prøver dette her og ved ikke rigtigt....endnu.

mvh Thomasskov
Avatar billede greybeard Nybegynder
10. december 2001 - 17:38 #7
import java.io.*;

class Guess
//Finds the random number,
//askes you to guess and
//tells you more, less og CORRECT!
{
       
    //variables
    private static int guess;
    private static double number;
    private static long number1;


    public static void findRandom()
    {
        //random number is found betwenn 0 and 100
        if (number1>0) checkNumber();
        number= 100*Math.random();
        number1= Math.round(number);

    }

    public static void checkNumber()
    {
        //Checks if the guess is correct and writes
        //a message on screen
        if (guess>number1) System.out.println(\"Less...\");
        if (guess<number1) System.out.println(\"More...\");
        System.out.println();
        System.out.println(\"New guess?\");
    }
   
    public static void correct()
    {
        System.out.println(\"Correkt!\");
        System.exit(0);
    }

    public static void newGuess()
    {
       
    }
           

public static void main(String[] args) throws IOException
    {
        boolean forkert = true;
        findRandom();

        while(forkert){
            //Keyboard reading
            BufferedReader keyboard= new BufferedReader(new        InputStreamReader(System.in));
       
            //What is your guess written on screen
            System.out.println(\"What is your guess?\");

            //indlæs det indtastede tal
            guess= Integer.parseInt(keyboard.readLine());
       
          if (guess==number1){
              forkert = false;
              correct();
                    }
          else checkNumber();
      }
        } 
}
Avatar billede greybeard Nybegynder
10. december 2001 - 17:41 #8
Nu virker det. Det ville hjælpe bare at lægge indlæningen far tastaturet over i en metode.
Det ser ikke helt så slemt ud, når man ser det hele:-)
Avatar billede thomasskov Nybegynder
10. december 2001 - 17:46 #9
det virker nu ikke på min maskine.
Med den kode du foreslår greybeard kan man ikke skrive noget når programmet spørger hvad éns gæt er???????
Avatar billede greybeard Nybegynder
10. december 2001 - 17:48 #10
Højst interessant. Det har lige kørt på min. Helt igennem til rigtigt svar
Avatar billede greybeard Nybegynder
10. december 2001 - 17:53 #11
Desuden har jeg ikke ændret noget, der berører indlæsningen.
Beklager i øvrigt de mystiske indrykninger. Tabulator og copy/paste giver sommetider lidt underlige resultater.
Avatar billede thomasskov Nybegynder
10. december 2001 - 17:53 #12
Ok. Jeg undskylder mange gange og giver straks velfortjente point til greybeard. Jeg (rødmer) var ikke klar over at \"Num Lock\" også skulle være slået til i Dos-mode. Nu virker programmet. Mange tak for hjælpen.

Thomasskov
Avatar billede greybeard Nybegynder
10. december 2001 - 18:03 #13
Ingen årsag.:-) og tak.
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