Java入门:如何跳过已猜对的值不再重复询问输入?
实现猜对后跳过对应值的询问方案
可以通过在循环内条件判断是否需要询问对应位置来实现这个需求——只要某个值已经猜对,就跳过该值的询问步骤,只处理未猜对的那个。
修改后的完整代码
import java.util.Scanner; import java.util.Random; public class GuessGame { public static void main(String[] args) { Scanner scan = new Scanner(System.in); Random random = new Random(); int randomX = random.nextInt(10); // 可自行调整随机数范围 int randomY = random.nextInt(10); int guessX = -1; int guessY = -1; // 只要X或Y有一个没猜对,就继续循环 while (guessX != randomX || guessY != randomY) { // 仅当X未猜对时,才询问X的位置 if (guessX != randomX) { System.out.print("Enter a guess for the X position of Mr. Yertle: "); guessX = scan.nextInt(); if (guessX < randomX) { System.out.println("Too low! Guess higher."); } else if (guessX > randomX) { System.out.println("Too high! Guess lower."); } else { System.out.println("Ding, ding! You are correct for X!"); } } // 仅当Y未猜对时,才询问Y的位置 if (guessY != randomY) { System.out.print("Enter a guess for the Y position of Mr. Yertle: "); guessY = scan.nextInt(); if (guessY < randomY) { System.out.println("Too low! Guess higher."); } else if (guessY > randomY) { System.out.println("Too high! Guess lower."); } else { System.out.println("Ding, ding! You are correct for Y!"); } } } System.out.println("Congratulations! You've guessed both positions correctly!"); scan.close(); } }
核心逻辑说明
- 循环条件保持
guessX != randomX || guessY != randomY,只要有一个位置没猜对,循环就继续 - 在循环内部,通过
if (guessX != randomX)和if (guessY != randomY)做判断:只有对应位置未猜对时,才执行询问和反馈逻辑 - 当某个位置被猜对后,后续循环会自动跳过该位置的询问,只处理未猜对的那个值
内容的提问来源于stack exchange,提问作者eatricex
相关产品推荐
相关产品推荐

