Java-Hausübung. Falls jemand viel Zeit hat! :)

Status
Nicht offen für weitere Antworten.

Turbokueken

Mitglied
Hallooo!

Ich hab heute um 24:00 eine Übung in Java abzugeben und ehrlich gesagt gar keinen Plan davon. ???:L Ihr seid sozusagen meine letzte Hoffnung für heute, ansonsten kassier ich wieder 0 Punkte... Was ich natürlich auch überleben würde! :wink:

Also falls jemand wirklich absolut zuviel Zeit hat, dann wär ich demjenigen natürlich sehr, sehr dankbar, wenn er/sie mir das Programm schreiben könnte... :roll:


Die Angabe lautet (leider auf Englisch, ich weiß *heul*):

Write a class GuessingGame, that lets the user guess a natural number. Let this number be a random number (in a certain range), the program ‘thinks of’. Let the user enter her guesses and the program tell her if the guess is too low or too high.
Write a class GuessingGameTest to test the Class GuessingGame.

Hints, tips, and comments:

Write the tester class first and run it
Then start working on the GuessingGame and TEST it as you go along
Have you class be able to guess without user input: smth like: .guess(6)
Implement a method that asks the user for a number and then calls .guess.
This will make it easier for you to test (less user input)

So sollte das Output im Tester dann aussehen:

Starting a new Game
You guessed: 19
and that was too high!
You guessed: 18
and that was too high!
You guessed: 17
and that was too high!
You guessed: 16
and that was too high!
You guessed: 15
and that was too high!
You guessed: 14
and that was too high!
You guessed: 13
and that was too high!
You guessed: 12
and that was too high!
You guessed: 11
and that was too high!
You guessed: 10
and that was too high!
You guessed: 9
and that was too high!
You guessed: 8
and that was right!
(took you 12 guesses)
right guess was: 8


Starting a new Game
You guessed: 32
and that was too low!
You give up?
correct answer would have been: 39


Also ich sag schon mal hier danke, dass ihr euch überhaupt die Zeit genommen habt, das hier alles zu lesen! :###

Liebe Grüße,
Turbokueken
 

P3AC3MAK3R

Top Contributor
Hast Du wenigstens schon einen Ansatz (z. B. als Pseudocode)?

Dieses Forum ist nämlich nicht als Codegeneriermaschine gedacht. :roll:
 

Turbokueken

Mitglied
Ich machs kurz und schmerzlos: Nein! *seufz*

Ich habe auch wirklich nicht vor, das Forum nochmals in dieser Form zu "missbrauchen"... :roll: Es ist jetzt nur die letzte Möglichkeit für mich, da Programmieren doch ziemlich Zeit aufwendig ist (wenn mans nicht wirklich kann) und ich aber noch für eine Prüfung morgen strebern muss (so wie schon seit Tagen)... :###

Danke für deine rasche Reaktion! :wink: Das ging ja echt flott!

LG, Turbokueken
 

Icewind

Bekanntes Mitglied
hm naja normalerweise würd ich das ja nicht machen aber naja ich hab halt grad nix besseres zu tun...
 

SebiB90

Top Contributor
ich hab zwar die aufgaben stellungen nicht ganz durchgelesen, aber ich glaub ich weiß was gemeint ist und hab sowas schonmal geschrieben.
ich such es mal
 

Icewind

Bekanntes Mitglied
so bin fertig kann hier: GuessingGame
heruntergeladen werden

das hier is jetzt die aktualisierte version schau nach ob bei dir steht wieviele züge du gebraucht hast wenns nicht da steht dann nimm die version hier

//edit: so hatte noch was vergessen aber jetzt is es fertig (glaub ich halt), schreib mir wenn was fehlt, hab aber nicht mehr so viel zeit
 

Student

Top Contributor
also das sind zwei miniklassen .. die aufgabe sollte ja auch nicht zuuu gut gelöst sein .. :roll: (gute ausrede, was? ^^)

Code:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Demos
{
    public static void main( String[] args ) throws IOException
    {
        Ratespiel rs = new Ratespiel();
        int attempts = 0;

        BufferedReader input = new BufferedReader( new InputStreamReader(System.in));

        System.out.println( "Bitte eine Zahl eingeben:" );

        // Man hat maximal 10 Versuche
        boolean guess = rs.guess(Integer.parseInt(input.readLine()));

        while( guess && attempts <= 10 )
        {
            System.out.println( "Bitte eine Zahl eingeben:" );
            guess = rs.guess(Integer.parseInt(input.readLine()));
            attempts++;
        }

        System.out.println( "Das war's." );

    }
}


class Ratespiel
{
    // Objektvariable, die den Zufallswert hält
    private long zahl;
    private int counter;

    public Ratespiel()
    {
        // Zahl zwischen 0 und 100
        this.zahl = Math.round(Math.random() * 100 );
        System.out.println( "Zufallszahl: " + this.zahl );

        // counter initialisieren
        this.counter = 0;
    }

    public boolean guess( int zahl )
    {
        boolean tryAgain = true;
        this.counter++;

        if( this.zahl == zahl )
        {
            System.out.println( "Richtig. Du hast " + this.counter + " Versuche gebraucht." );
            tryAgain = false;
        }
        else if( this.zahl < zahl )
        {
            System.out.println( "Die Zahl ist zu groß." );
        }
        else
        {
            System.out.println( "Die Zahl ist zu klein." );
        }

        return tryAgain;
    }


}

vielleicht hilft es ja wem ;-)
 

Student

Top Contributor
ah. ich sehe gerade ... die ausgabe der zufallszahl solltest du eventuell noch rausholen ^^
war nur zu testzwecken.
 
D

Destiny1985

Gast
ist zwar schon ne lösung vorhanden, aber habe selber auch so ein Programm geschrieben, das einwandfrei funktioniert:

Code:
import Prog1Tools.IOTools;

public class Zahlenraten
{
  public static void main (String args[])
  {
    System.out.println("*** Zahlenraten **");
    System.out.println("\nWillkommen beim Zahlenraten!");
    System.out.println("Ich denke mir eine Zahl zwischen 1 und 100.");
    System.out.println("\nRate diese Zahl :)");
    System.out.println();
    
    // Eine Zufallszahl zwischen 1 und 100. Math.random liefert entweder eine 0
    // oder 1, mit *99 und +1 kommt der Zahlenbereich zustande
    
    int geheimZahl = (int) (99 * Math.random() + 1);
    
    // Initalisieren von der geratenen Zahl und den Rateversuchen
    
    int rateZahl = 0;
    int rateVersuche = 0;
    
    // Schleife um geratene zahl zu überprüfen und auszugeben, ob zu hoch oder
    // zu niedrig, bzw. das die Zahl stimmt
    
    while (rateZahl != geheimZahl)
    {
      rateVersuche++;
      System.out.print(rateVersuche + ". Versuch: ");
      rateZahl = IOTools.readInteger();

      if (rateZahl > geheimZahl)
      {
        System.out.println("Meine Zahl ist kleiner!\n");
      }
      
      if (rateZahl < geheimZahl)
      {
        System.out.println("Meine Zahl ist groesser!\n");
      }
      
      if (rateZahl == geheimZahl)
      {
        System.out.print("\nDas ist die gesuchte Zahl! \nDu hast " + rateVersuche);
        System.out.print(" Versuch(e) benoetigt um die Zahl zu erraten!");
      }
    }
  }
}


vielleicht kannst ja trotzdem noch was mit anfangen :>
 
D

Destiny1985

Gast
btw:

konstruktive kritik an dem code is erwünscht, bin nämlich selber noch anfänger :>
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben