Java :: Aufgabe #25
4 Lösungen

Zahlen erraten lassen.
Anfänger - Java
von zayc_
- 28.12.2012 um 14:08 Uhr
Programmiere ein Programm, welches eine vom User erdachte Zahl (Integer) in einem vom User angegebenen Bereich Erraten soll.
Konsolenausgabe:
Bitte Untergränze angeben: 0
Bitte Obergränze angeben: 100
Bitte geben sie nach jedem versuch R,G oder K an. je nachdem ob
R die Zahl richtig ist
G die gesuchte Zahl grösser ist
K die gesuchte Zahl kleiner ist
1. Versuch: 50.
k
2. Versuch: 25
g
3. Versuch: 37
g
4. versuch: 42
g
5. Versuch: 46
k
6. Versuch: 44
k
7. Versuch: 43
r
Die gesuchte Zahl war also die 43!
Lösungen:

/* * Code written by Oppa Hansi, oppahansi on pastebin. */ import java.util.Random; import java.util.Scanner; public class CompZahlErraten { public static void main(String[] args) { Scanner s = new Scanner(System.in); Random zufall = new Random(); boolean aktiv = true; int untergrenze; int obergrenze; int compZahl = 0; int zaehler = 1; String antwort = ""; while(aktiv){ System.out.print("Bitte Untergrenze angeben: "); untergrenze = s.nextInt(); System.out.println(); System.out.print("Bitte Obergrenze angeben: "); obergrenze = s.nextInt(); System.out.println(); System.out.println("Bitte geben Sie nach jedem Versuch g, k oder r an."); System.out.println("g: Die Zahl ist groesser."); System.out.println("k: Die Zahl ist kleiner."); System.out.println("r: Die Zahl ist richtig."); System.out.println("\n\n"); zaehler = 1; while(antwort.compareTo("r") != 0){ compZahl = untergrenze + zufall.nextInt(obergrenze-untergrenze+1); if(compZahl == untergrenze || compZahl == obergrenze){ continue; } System.out.print(zaehler + ". Versuch: " + compZahl + "\n"); antwort = s.next(); if(antwort.compareTo("g") == 0){ untergrenze = compZahl; zaehler++; }else if(antwort.compareTo("k") == 0){ obergrenze = compZahl; zaehler++; } } System.out.println("Die gesuchte Zahl ist also die " + compZahl + "!"); aktiv = false; } } }

/** * @author ElPapito * @date 09.05.2015 */ import java.util.Scanner; public class Zahlenraten { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Bitte die Untergrenze angeben: "); int min = scanner.nextInt(); System.out.print("Bitte die Obergrenze angeben: "); int max = scanner.nextInt(); System.out.println(); int count = 0; System.out.println("Bitte geben Sie nach jedem Versuch R, G oder K an. " + "Je nachdem ob"); System.out.println("R die Zahl richtig ist."); System.out.println("G die gesuchte Zahl groesser ist."); System.out.println("K die gesuchte Zahl kleiner ist."); System.out.println(); char c; while (true) { count++; int tipp = (min + max) / 2; System.out.println(count + ". Versuch: " + tipp); c = scanner.next().toUpperCase().charAt(0); if (c == 'R') { System.out.println("Die gesuchte Zahl war also die " + tipp + "."); break; } else if (c == 'K') { max = tipp - 1; } else if (c == 'G') { min = tipp + 1; } } scanner.close(); } }

import java.util.*; import java.util.concurrent.ThreadLocalRandom; public class Zahlenerraten { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int untergrenze, obergrenze, versuch; String eingabe = ""; int counter = 1; boolean richtig = false; System.out.print("Bitte Untergrenze angeben:\t"); untergrenze = scanner.nextInt(); System.out.print("Bitte Obergrenze angeben:\t"); obergrenze = scanner.nextInt(); System.out.println("Bitte geben Sie nach jedem Versuch R, G oder K an, je nachdem ob"); System.out.println("R\tdie Zahl richtig ist"); System.out.println("G\tdie gesuchte Zahl größer ist"); System.out.println("K\tdie gesuchte Zahl kleiner ist"); System.out.print("\n\n"); do { System.out.print(counter + ". Versuch:\t"); versuch = ThreadLocalRandom.current().nextInt(untergrenze, obergrenze); System.out.print(versuch); eingabe = scanner.next(); switch(eingabe) { case "K": case "k": obergrenze = versuch; break; case "G": case "g": untergrenze = versuch; break; case "R": case "r": richtig = true; break; } counter++; }while(richtig == false); System.out.print("Die gesuchte Zahl war also " + versuch + "!"); scanner.close(); } }

import java.util.Random; import java.util.Scanner; public class ZahlenErratenLassen { private static int versuche; private static int versuch; private static int obergrenze; private static int untergrenze; public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Bitte Untergrenze angeben: "); untergrenze = scanner.nextInt(); System.out.print("Bitte Obergrenze angeben: "); obergrenze = scanner.nextInt(); System.out.println(" "); System.out.println("Bitte geben sie nach jedem Versuch R, G oder K an. Je nachdem ob R die Zahl richtig ist, G die gesuchte Zahl größer ist, K die gesuchte Zahl kleiner ist."); System.out.println(" "); System.out.println(" "); versuche = 0; while (!programmVersuch()) {} System.out.println("Die gesuchte Zahl war also die " + versuch + "!"); } private static boolean programmVersuch() { Random random = new Random(); versuch = random.nextInt(obergrenze-untergrenze) + untergrenze; Scanner scanner = new Scanner(System.in); System.out.println(versuche + ". Versuch: " + versuch); String input = scanner.nextLine(); if (input.equalsIgnoreCase("r")) { return true; } if (input.equalsIgnoreCase("k")) { obergrenze = versuch-1; } else if (input.equalsIgnoreCase("g")) { untergrenze = versuch+1; } return false; } }