【发布时间】:2015-02-09 22:19:59
【问题描述】:
生成一个三位数的彩票。程序提示用户输入一个三位数字,然后 根据以下规则判断用户是否获胜: (规则1)。如果用户输入的开奖号码与开奖号码完全一致,则奖励为 10,000 美元。 (规则 2)。如果用户输入的所有数字都与彩票号码中的所有数字匹配,则奖励为 3,000 美元。 (规则 3)。如果用户输入的一位数字与彩票号码中的一位数字匹配,则奖励为 1,000 美元。
我需要帮助让我的程序按照代码中的所有内容按预期运行。没有数组,没有字符串,除了已经存在的东西之外什么都没有。我的问题是我无法猜测 110 来忽略规则 2。我将其设置为 100 以测试所有规则。
import java.util.Scanner;
public class NewClass {
public static void main(String[] args) {
int lottery = 100;
// Prompt the user to enter a guess
Scanner input = new Scanner(System.in);
System.out.print("Enter your lottery pick (three digits): ");
int guess = input.nextInt();
// Get digits from lottery
int lotteryDigit1 = lottery / 100;
int lotteryDigit2 = (lottery % 100) / 10;
int lotteryDigit3 = lottery % 10;
// Get digits from guess
int guessDigit1 = guess / 100;
int guessDigit2 = (guess % 100) / 10;
int guessDigit3 = guess % 10;
System.out.println("The lottery number is " + lottery);
// RULE1 Check the guess
if (guess == lottery)
System.out.println("Exact match: you win $10,000");
// RULE2
else if ((guessDigit1 == lotteryDigit1
|| guessDigit1 == lotteryDigit2
|| guessDigit1 == lotteryDigit3)
&& (guessDigit2 == lotteryDigit1
|| guessDigit2 == lotteryDigit2
|| guessDigit2 == lotteryDigit3)
&& (guessDigit3 == lotteryDigit1
|| guessDigit3 == lotteryDigit2
|| guessDigit3 == lotteryDigit3))
System.out.println("Match all digits: you win $3,000");
// RULE3
else if ((guessDigit1 == lotteryDigit1
|| guessDigit1 == lotteryDigit2
|| guessDigit1 == lotteryDigit3)
|| (guessDigit2 == lotteryDigit1
|| guessDigit2 == lotteryDigit2
|| guessDigit2 == lotteryDigit3)
|| (guessDigit3 == lotteryDigit1
|| guessDigit3 == lotteryDigit2
|| guessDigit3 == lotteryDigit3))
System.out.println("Match one digit: you win $1,000");
else
System.out.println("Sorry, no match");
}
}
更新:
import java.util.Scanner;
public class NewClass {
public static void main(String[] args) {
int lottery = 456;
// Prompt the user to enter a guess
Scanner input = new Scanner(System.in);
System.out.print("Enter your lottery pick (three digits): ");
int guess = input.nextInt();
// Get digits from lottery
int lotteryDigit1 = lottery / 100;
int lotteryDigit2 = (lottery % 100) / 10;
int lotteryDigit3 = lottery % 10;
// Get digits from guess
int guessDigit1 = guess / 100;
int guessDigit2 = (guess % 100) / 10;
int guessDigit3 = guess % 10;
System.out.println("The lottery number is " + lottery);
// Sum up both sets of digits to compare for 3 inconsecutive matches
int guessSum = guessDigit1 + guessDigit2 + guessDigit3;
int lotterySum = lotteryDigit1 + lotteryDigit2 + lotteryDigit3;
// RULE1 Check the guess
if (guess == lottery)
System.out.println("Exact match: you win $10,000");
// RULE2
else if ((guessDigit1 == lotteryDigit1
|| guessDigit1 == lotteryDigit2
|| guessDigit1 == lotteryDigit3)
&& (guessDigit2 == lotteryDigit1
|| guessDigit2 == lotteryDigit2
|| guessDigit2 == lotteryDigit3)
&& (guessDigit3 == lotteryDigit1
|| guessDigit3 == lotteryDigit2
|| guessDigit3 == lotteryDigit3)
&& guessSum == lotterySum)
System.out.println("Match all digits: you win $3,000");
// RULE3
else if ((guessDigit1 == lotteryDigit1
|| guessDigit1 == lotteryDigit2
|| guessDigit1 == lotteryDigit3)
|| (guessDigit2 == lotteryDigit1
|| guessDigit2 == lotteryDigit2
|| guessDigit2 == lotteryDigit3)
|| (guessDigit3 == lotteryDigit1
|| guessDigit3 == lotteryDigit2
|| guessDigit3 == lotteryDigit3))
System.out.println("Match one digit: you win $1,000");
else
System.out.println("Sorry, no match");
}
}
这似乎最重要。我一直在循环数字来测试猜测。我没有遇到错误的猜测。 && guessSum == lotterySum) 仅与 RULE2 一起使用。
【问题讨论】:
-
&&和||在第一个else if中的混合可能会导致问题。尝试在单独的语句中检查每个数字,或嵌套它们。
标签: java user-input