大家好我真的卡住了,它关于一个随机生成一个四位数字的彩票程序,并提示用户输入一个四位数字而不使用数组并遵循这条规则 - 如果用户输入按照确切的顺序匹配彩票号,则奖励为10000美元 - 如果用户输入与不同顺序的四位数匹配,奖励为5000美元 - 如果用户输入与不同顺序的三位数匹配,奖励为2000美元 - 如果用户输入中的任何1位或2位数与奖金相匹配,奖金为500美元
我是用3位数字做的,但我不知道怎么做没有数组的四位数字。这就是我所做的:
import java.util.Scanner;
public class Programming {
public static void main(String[] args) {
// Generate a lottery
int lottery = (int) (Math.random() * 1000);
// 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 " + lotteryDigit1
+ lotteryDigit2 + lotteryDigit3);
// Check the guess
if (guess == lottery) {
System.out.println("Exact match: you win $10,000");
} else if ((guessDigit1 == lotteryDigit2 && guessDigit2 == lotteryDigit1 && guessDigit3 == lotteryDigit3)
|| (guessDigit1 == lotteryDigit2
&& guessDigit1 == lotteryDigit3 && guessDigit3 == lotteryDigit1)
|| (guessDigit1 == lotteryDigit3
&& guessDigit2 == lotteryDigit1 && guessDigit3 == lotteryDigit2)
|| (guessDigit1 == lotteryDigit3
&& guessDigit2 == lotteryDigit2 && guessDigit3 == lotteryDigit1)
|| (guessDigit1 == lotteryDigit1
&& guessDigit2 == lotteryDigit3 && guessDigit3 == lotteryDigit2)) {
System.out.println("Match all digits: you win $5,000");
} 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");
}
}
}
谢谢你的帮助
答案 0 :(得分:1)
很抱歉花一点时间回复你。过了忙碌的几天。根据要求,这是完整的计划。请注意,这不完全是您的原始程序。我删除了一些东西,并添加了一些。也许最重要的是,我改变了我之前给你的功能。我最初回答你的问题,试图只给你四位数的匹配,但如果我写出整个事情,更有意义的概括一点。因为您的彩票奖励是基于匹配数字的数量,所以制作一个计算匹配数量的函数是很有意义的。这大大简化了你的if-else代码。
public static int getFourthDigit(int num) {
return (num / 1000) % 10;
}
看起来我没有正确理解。我相信有多种方法可以得到一个数字的给定数字,但我认为这是最容易思考的。除以1000将千位数移到1位置然后使用模数运算符去掉任何不在1位置的东西。除了数字的第四位外,这只剩下你了。
String
如果我理解正确,您的难点在于匹配不同的有序四位数字。最明显的方法是检查四位数的所有可能的排序;只有15个他们并不完全相同。但是,输入15个条件很容易出错,而且很简单。如果您需要使用五位数来执行此操作,那将是无聊和乏味的两倍。
这是一个使用int
代替1111
来避免此问题的功能。它反复检查猜测的第一个字符,并检查字符是否在答案中。然后,它会从答案中删除匹配的字符,以避免出现1112
和public static boolean digitsMatch(String guess, String answer) {
int matchingIndex;
while (guess.length() > 0) {
// check if the first digit of the guess is in the answer
matchingIndex = answer.indexOf(guess.charAt(0));
// if not, there cannot possibly be four matches
if (matchingIndex < 0) {
return false;
}
// look at the rest of the guess
guess = guess.substring(1);
// and remove the no longer relevant character from the answer
answer = answer.substring(0, matchingIndex) +
answer.substring(matchingIndex + 1);
}
return true;
}
这样的情况,其中猜测中的每个字符也在答案中,但它们不匹配。
{{1}}