0
這僅僅是一個介紹Comp Sci類的小作業,但我遇到了一些麻煩,我必須提示用戶進行驗證猜測代碼的結果,然後如果它是錯誤的,它會提示它是否更高或更低等等。我想這樣做,所以如果最大範圍的數字是12,我會從6開始,然後從那裏我會首先問用戶:如果它是正確的?如果不是,則詢問是否更高或更低。根據他的回答,我的下一個值將介於0和6之間,即3或6和12,即9。我嘗試了多種不同的方式,並在網上搜索了一些提示,但沒有運氣。如果你能用我的代碼來幫助我,或者可以指導我一個很好的答案!在Java猜測遊戲中遇到了一些麻煩
Scanner in = new Scanner(System.in);
boolean guess = false;
int maxMonth = 12;
int minMonth = 0;
int month = (maxMonth - minMonth)/2;
int total = 6;
while (guess == false) {
String yes = "yes";
String no = "no";
int tries = 0;
boolean firstGuess = false;
System.out.println("Is your birthday in " + month + " yes or no:");
String a1 = in.next();
if (a1.equals(yes)) {
firstGuess = true;
} else {
System.out.println("Is your birthday after this month?");
String a2 = in.next();
if (a2.equals(yes)) {
total++;
total = (int) total/2;
month = month + total;
} else {
total = total - 3;
total = (int) total/2;
month = month + total;
}
}
//guesses the day in the month
while (firstGuess == true) { }
}
你被允許使用樹木嗎?你可以做一個二叉搜索樹,根據它的高低來左右移動 – FattySalami
二進制搜索不需要樹 - 只是說。請參閱https://en.wikipedia.org/wiki/Binary_search_algorithm –
在代碼中執行該操作,就像在頭腦中或解釋中所做的那樣:您有一個下限和一個更高的界限(最初爲1和12)。你猜這個範圍的中間數。如果它是正確的,你退出。如果它較低,則將界限更改爲[guess + 1,higherBound](即[7,12]),如果更高,則將界限更改爲[lowerBound,guess - 1](即[1,5] )並且你繼續 –