Ich bin ein binäres Suchprogramm ausgeführt, die Benutzereingabe Zeichen 'l' für Low 'h' für High und 'C', wenn der Wert korrekt ist. Meine erste Methode gibt das Zeichen zurück meine Midpoint-Methode liest nur die erste Zeicheneingabe. Wenn ich bei 50 anfange und 'h' drücke, wird der Mittelpunkt korrekt auf 75 angehoben, aber ich kann das Programm nicht dazu bringen, 'l' zu lesen und den Wert wieder auf 50 zu senken. Das Programm liest nur die erste char-Eingabe durch den Benutzer, aber ich muss den Wert in Antwort aktualisieren. Ist meine while-Schleife falsch oder meine Entscheidung? Vielen Dank.binäre Suche im Bereich von 1 bis 100 mit Benutzereingabe
import java.util.Scanner;
public class PlayGuessingGame {
public static char getUserresponseGuess(){
Scanner scan = new Scanner(System.in);
char guesses = scan.next().charAt(0);
System.out.println("this is the user input " + guesses);
return(guesses);
}
public static int getMidpoint(int low, int high){
int middle;
//the midpoint is high + low divided by 2
middle = (low + high)/ 2;
System.out.println("is it " + middle);
char answer = getUserresponseGuess();
System.out.println("this is the answer " + answer);
//char get_input = getUserresponseGuess();
//System.out.println("this is the output "+ get_input);
while(low <= high){
if(answer == 'h'){
low = middle + 1;
System.out.println("this is low " + low);
middle = (low + high)/2;
char new_answer = getUserresponseGuess();
middle = (low + high)/2;
System.out.println("is it" + middle);
getUserresponseGuess();
}
//the number presented to the user is is too high, the midpoint is high -1
else if(answer == 'l'){
System.out.println("we're in the low portion");
high = middle - 1;
middle = (low + high) /2;
System.out.print("is it " + middle);
middle = (low + high) /2;
}
if(answer == 'c'){
System.out.println("congrats!");
}
return(middle);
}
return(-1);
}
public static void main(String[] args){
getMidpoint(1,100);
}
}
Wie frage ich und akzeptiere jeden Eingang? Ich kann nicht herausfinden, warum es nur Schleifen ist, wenn der Eingang 'h' ist – reubs
@reubs das ist überhaupt keine Schleife. Sie rufen einfach 'getUserresponseGuess' zweimal im 'if (answer == 'h')' auf und geben Ihnen die Illusion einer Schleife. Aber Sie können keine Schleife ausführen, wenn Sie eine 'return'-Anweisung darin haben. Ich habe ein bisschen bearbeitet, Sie können das Problem in 'Evaluate' und' Loop oder nicht? 'Sehen – AxelH