Zufalls Ratezahl

Status
Nicht offen für weitere Antworten.

apple987123

Mitglied
Guten Tag.
Ich bin nun seit c.a. 4 Wochen an einer Informatik-Schule, inwelcher wir natürlich auch Java behandeln, naja, jedenfalls bin ich gar nochnicht mal so schlecht, dafür dass ich erst 4 Doppellektionen hatte. Nun ja als Bonus-Aufgabe bekamen wir:
Schreiben sie ein Programm das eine Zufallszahl ermittelt und einem eine Eingabe machen lässt. Danach soll der Text ausgegeben werden: "Die Gesuchte Zahl ist Höher/Tiefer als die Eingabe". Ich habe das mal so gemacht. (Benutze überigens Eclipse)

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

public class Ratespiel{
	public static void main(String[] args) throws NumberFormatException, IOException {
		InputStreamReader converter = new InputStreamReader(System.in);
        BufferedReader in = new BufferedReader(converter);
        System.out.println("Gesucht ist eine Zahl zwischen 1 und 15, kannst du sie herausfinden?");
        int a = Integer.parseInt(in.readLine());
        int x = 1;
        int y = 15;
        int z =(int)(Math.random()*(y-x+1))+x;
        if (a!=z){
        	System.out.println ("Nich ganz, versuchs Nochmal.");
        }
        while (a!=z){
        a = Integer.parseInt(in.readLine());
        System.out.print("Nun ja, nicht schlecht, aber die gesuchte Zahl ist ");
        if (a<z){
        System.out.println("höher");}
        else {
        System.out.println("tiefer");
        }}
        if (a == z){
        System.out.println("Genau diese Zahl war gesucht");}
        
        
        
	}
}

So der fehler ist hier:
Wenn ich die Erste Zahl eingebe, ist alles noch Klasse,
Wenn ich die Zweite Zahl eingebe, auch immer noch,
doch sobald ich die Gesuchte Zahl eigegeben habe, sagt er nicht nur: "Genau diese Zahl wurde gesucht" sondern er schreibt davor noch "Die gesuchte Zahl ist tiefer"
Warum das????

Hoffe dass ihr mir helfen könnt. :(
 
Zuletzt bearbeitet:

badbyte

Mitglied
*genauer hinschau*
oh ah jetzt weiß ich dein Problem, dass er hinschreibt "die gesucht Zahl ist tiefer" obwohl die Zahl richtig war.

Naja wie wärs wenn du denn Fall das die Zahl tiefer ist explizit abfrägst.
bzw. erst abfrgägst ob die Zahl richtig ist, dann erst ob sie zu groß oder zu klein ist?
 

apple987123

Mitglied
Ok aber wie sollte ich das am besten anstellen? Also soll ich die Stellungen Ändern? Oder wie? Versthe das leider nicht ganz :oops:
Wie gesagt, bin noch recht neu. Denn diese Aufgabe ist für meine Verhältnisse doch noch recht schwer. (Müsste ich auch nicht können, aber ich LIEBE Java einfach, ist mein LieblingsFach)
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
die unterste if-abfrage, also ob a==z ist, kannst du dir an dieser stelle sparen, denn sie muss es, sonst wärst du aus der schleife nicht rausgkeommen ;D
ich würde diese abfrage allerdings in die while schleife machen, nach a= interger....
und dann mittels break; ausbrechen :D

wer verhaut mich jetzt dafür? :D
 

badbyte

Mitglied
also ich habs jetzt so gelöst
[Java]


int a;
while ((a = Integer.parseInt(in.readLine()))!=z){

System.out.print("Nun ja, nicht schlecht, aber die gesuchte Zahl ist ");
if (a<z){
System.out.println("höher");}
else {
System.out.println("tiefer");
}}
if (a == z){
System.out.println("Genau diese Zahl war gesucht");}
[/Java]

du weist immer bevor er die while Schleife durchläuft dem a seinen neue Zeile zu,
und dann wird das a überprüft.....
 

apple987123

Mitglied
Also nun klappt es ich babe noch ein break eingebaut, wie du gesagt hast, wäre da nie drauf gekommen, weil wir diesen befehl noch nicht durchgenommen haben,
Toll ich danke dir für deine Schnelle und Kompetente Hilfe. :toll:
An Alle die die Lösung noch interessiert

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

public class Ratespiel{
	public static void main(String[] args) throws NumberFormatException, IOException {
		InputStreamReader converter = new InputStreamReader(System.in);
        BufferedReader in = new BufferedReader(converter);
        System.out.println("Gesucht ist eine Zahl zwischen 1 und 15, kannst du sie herausfinden?");
        int a = Integer.parseInt(in.readLine());
        int x = 1;
        int y = 15;
        int z =(int)(Math.random()*(y-x+1))+x;
        if (a!=z){
        	System.out.println ("Nich ganz, versuchs Nochmal.");
        }
        while (a!=z){
        a = Integer.parseInt(in.readLine());
        if (a == z){
        System.out.println("Genau diese Zahl war gesucht");
        break;}
        else System.out.print("Nun ja, nicht schlecht, aber die gesuchte Zahl ist ");
        if (a<z){
        System.out.println("höher");}
        else {
        System.out.println("tiefer");
        
        }}
        
        
        
        
	}
}
 

badbyte

Mitglied
bei der Lösung wird aber als aller erste nur "Nich ganz, versuchs Nochmal." ausgegben, und nicht ob die Zahl kleiner oder Größer ist... *duckundrenn*

;)
 

madboy

Top Contributor
Es gibt auch noch
Code:
else if
Das würde dann so aussehen:

Java:
if (a < z) {
   System.out.println("höher");
} else if (a > z) {
   System.out.println("tiefer");
} else { //wenn a nicht kleiner und nicht größer als z ist, dann ist a == z
   System.out.println("Genau...");
   break;
}
 

0din

Bekanntes Mitglied
Java:
if (a<z) //hier is dein fehler
{
        System.out.println("höher");
}
        else 
{
        System.out.println("tiefer");
}
}
        if (a == z)
{
        System.out.println("Genau diese Zahl war gesucht");
}

schau mal bei dem kommentar,

du fragst ab:
ist die zahl kleiner z?
ja -> höher
is sie nich größer (d.h. auch wenn sie gleich ist)
->tiefer

lösung:
if(a < z && a != z)
also: ist a kleiner a und(!) ungleich z
 

eRaaaa

Top Contributor
a) die aufgabe ist doch schon längst gelöst worden und
b) ist das quatsch :) denn schau dir mal seine while schleife an ;D
if(a < z && a != z) <-- was soll das dann also ?
 

apple987123

Mitglied
So! Ich danke euch nochmal für eure vielen, individuellen Hilfen. Also bei mir klappt das einwandfrei. PS:

bei der Lösung wird aber als aller erste nur "Nich ganz, versuchs Nochmal." ausgegben, und nicht ob die Zahl kleiner oder Größer ist... *duckundrenn*

Das ist bei der ersten Zahl auch verlangt, aber das konntest du ja nicht wissen, trotzdem Danke ihr seid :toll:
 
Zuletzt bearbeitet:

apple987123

Mitglied
Tja das ist etwas Komplizierter...
EIne Privat Schule in der Ich 2 Jahre alle Informatik Module durchgeackert und abgeschlossen habe.
Danach ist ein 2 Jähriges Praktikum in einem Betrieb angesagt und danach habe ich mein Diplom als Eidg. Applikationsentwickler mit Fahigkeitszeugniss
(Btw... Bin aus der Schweiz) :toll:
 
D

datommmon

Gast
Schön ist es, wenn man ohne häme auf ältere beiträge zurückblicken kann ^^

Java:
package javaapplication3;

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

public class Main {

    private static BufferedReader inputReader;
    private static int randomInt = 15;

    public static void main(String[] args) throws IOException {
        inputReader = new BufferedReader(new InputStreamReader(System.in));
        guess();
    }

    private static void guess() throws IOException {
        System.out.print("Bitte Zahl eingeben: ");
        int i = 0;
        do {
            try {
                i = Integer.parseInt(inputReader.readLine());
            } catch (NumberFormatException nfe) {
            }
        } while (i <= 0);
        if (i == randomInt) {
            System.out.println("Richtig");
            return;
        } else {
            System.out.println("Falsch");
        }
        guess();
    }
}
 

Brainiac

Bekanntes Mitglied
Och er hat halt 2 Jahre gebraucht zu sehen, das in seinem Thread noch ne Frage offen war, und die er nun beantwortet hat.

*duck* Nicht böse gemeint: Oder wie war das mit der llaannggssaammkkeeiitt der Berner?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben