Java 三位数彩票
生成三位数的彩票。程序提示用户输入三位数,并根据以下规则确定用户是否获胜: 规则1。如果用户输入的内容与彩票号码的准确顺序匹配,则奖励为10000美元。 规则2。如果用户输入的所有数字与彩票号码中的所有数字匹配,则奖励为3000美元。 规则3。如果用户输入中的一位数字与彩票号码中的一位数字匹配,则奖励为1000美元。 我需要帮助,使我的程序能够在代码中看到的所有内容中正常运行。没有数组,没有字符串,只有已经存在的内容。我的问题是,在规则3中,我不理解为什么它不承认一个获胜的数字。例如,我的猜测数字是142,彩票号码是554,它会说“不匹配,下次运气更好”,而不是匹配一个号码,即使我的猜测中有一个正确的号码Java 三位数彩票,java,Java,生成三位数的彩票。程序提示用户输入三位数,并根据以下规则确定用户是否获胜: 规则1。如果用户输入的内容与彩票号码的准确顺序匹配,则奖励为10000美元。 规则2。如果用户输入的所有数字与彩票号码中的所有数字匹配,则奖励为3000美元。 规则3。如果用户输入中的一位数字与彩票号码中的一位数字匹配,则奖励为1000美元。 我需要帮助,使我的程序能够在代码中看到的所有内容中正常运行。没有数组,没有字符串,只有已经存在的内容。我的问题是,在规则3中,我不理解为什么它不承认一个获胜的数字。例如,我的猜测数
import java.util.Scanner;
public class Lottery {
public static void main(String[] args) {
//generate random lottery numbers
int lottery = (int)(Math.random() * 1000);
//ask user to enter a 3 digit integer and store those numbers
Scanner numbers = new Scanner(System.in);
System.out.println("Please enter your lottery pick. Three Digits Only");
int guess = numbers.nextInt();
// numbers for lottery
int lotteryDigit1 = lottery % 100;
int lotteryDigit2 = lottery % 100 / 10;
int lotteryDigit3 = lottery / 100;
//get digits from guess
int guessDigit1 = guess % 100;
int guessDigit2 = guess % 100 / 10;
int guessDigit3 = guess / 100;
//print out lottery numbers
System.out.println("The lottery numbers are: " + lottery);
if (guess == lottery)
System.out.println("Exact Match!!! 10,000$ Prize!!!");
else if (guessDigit2 == lotteryDigit1
&& guessDigit1 == lotteryDigit2
&& guessDigit3 == lotteryDigit3)
System.out.println("Matched all numbers!!! 3,000$ Prize!!!");
//Rule 3
else if (guessDigit1 == lotteryDigit1
|| guessDigit1 == lotteryDigit2
|| guessDigit1 == lotteryDigit3
|| guessDigit2 == lotteryDigit1
|| guessDigit2 == lotteryDigit2
|| guessDigit2 == lotteryDigit3
|| guessDigit3 == lotteryDigit1
|| guessDigit3 == lotteryDigit2
|| guessDigit3 == lotteryDigit3)
System.out.println("Mathed one number!!! 1,000$ Prize!!!");
else enter code here
System.out.println("No Match, Better Luck Next Time!");
问题在于这段代码-
int lotteryDigit1 = lottery % 100;
对于彩票=554,lotteryDigit1将设置为54。类似地,guessDigit1设置为42。相反,彩票%10应该给你这里的最低有效数字
注意-在本例中,很容易发现此缺陷,但学习如何使用调试器将有助于您在将来解决类似问题。因此,在本例中,有几个非常小的错误。当你试图得到数字1时,你可以按100进行模运算。我相信你的意思是模10得到1的数字。如果您知道如何进行调试,您可以通过放入调试器来查看,或者只需在解决bug时暂时打印出您拥有的值即可 有一件事您没有提到,但我想您稍后会看到,用于确定3个数字是否匹配的代码有点不正确:
else if (guessDigit2 == lotteryDigit1
&& guessDigit1 == lotteryDigit2
&& guessDigit3 == lotteryDigit3)
不比较正确的数字对
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in); //make new scanner
//生成一个随机的三位数
// Prompt the user to enter a three-digit number
//Generate random number with 3 diggits
int randomLottery = 100 + (int)(Math.random() * ((999 - 100)+1));
//Start scanner
//Prompt user to enter three digits
System.out.println(" Enter the Guess number (three digit) integer");
int GuessUser = input.nextInt();
int GUESS1 = GuessUser /100;
int remainGuess = GuessUser % 100;
int guess2 = remainGuess /10;
int guess3= remainGuess % 10;
//Get 3 digits from lottery
int d1 = randomLottery /100;
int remainL = randomLottery % 100;
int d2 = remainL /10;
int d3= remainL % 10;
System.out.println(" The lottery numbers are " + d1 + " " + d2 + " " + d3 + "!");
//**Check the guess and print out the award system.
/* if users input matches the lottery input in exact order price is 10000$*/
if (GuessUser == randomLottery ){
System.out.println("You have won $10000. HAMBALYO!!!!");
/* if all the DIGITS EQUAL $3000 */
}else if (((GUESS1 == d1) || (GUESS1 == d2) || (GUESS1 == d3)) &&
(( guess2 == d1) || (guess2 == d2) || (guess2 == d3)) &&
((guess3 == d1) || (guess3 == d2) || (guess3 == d3))){
System.out.println("ALL DIGITS MATCH! You have won $3000.");
/* if at least one digit matches the lottery number the award is 1000$ */
}else if (((GUESS1 == d1) || (GUESS1 == d2) || (GUESS1 == d3)) ||
((guess2 == d1) || (guess2 == d2) || (guess2 == d3)) ||
((guess3 == d1) || (guess3 == d2) || (guess3 == d3))){
System.out.println("At least one number is correct. You win $1000 ");
}else
System.out.println ("No match");
}
}好吧,我用Javascript提出了一个类似的解决方案: 日志“程序已启动…”; //背景 常量persist=true;//1.确保用户只输入一个数字,循环直到用户输入一个数字 //功能:生成3个随机数,介于1和10之间(含1和10) const generateNumbers==>{ var-arr=[]; 当arr.length<3时{ var r=数学floorMath.random*10+1; arr.pushr; } 返回arr; }; 常量winningNumbers=generateNumbers;//由3个中奖号码组成的数组 //功能:提示用户输入数字 const getUserNumber=type=,err==>{ var q=; 如果err.trim!=q=\n+err+\n; q+=输入您的; q+=类型; q+=数量; var inp=promptq; 如果persist&&inp!=null{ 如果inp.trim==| | isNaNinp.trim getUserNumbertype,则错误:输入无效!; } 返回inp; }; var userNumbers=[];//由3个用户选择的数字组成的数组 //循环用户输入 ['first'、'second'、'third'].前肢疼痛,i=>{ 设n=getUserNumber; userNumbers.pushNumbern; }; var correct=0;//存储正确的匹配项 var _winningNumbers=[…winningNumbers];//暂时储存中奖号码 //处理正确答案 userNumbers.forEachn=>{ let count=\u winningNumbers.filternum=>{ returnnum==n }.长度; 如果计数>=1{ 正确+=1; _winningNumbers.splice_winningNumbers.indexOfn,1; } }; //处理用户赢款 const getWinnings==>{ var赢款=; 开关正确{ 案例1: 奖金=100美元; 打破 案例2: 奖金=200美元; 打破 案例3: 赢款=500美元; 打破 违约: 赢款=$0; 打破 } 返还奖金; } //警报奖金 var resp=; resp+=计算机的编号为; resp+=winningNumbers.join; resp+=\n; resp+=您的猜测是; resp+=userNumbers.join; resp+=\n; resp+=你得到的; resp+=正确; resp+=右侧; resp+=\n; resp+=你赢了; resp+=获得奖金; //功能:显示对用户的响应并提示“是否再次播放?”? const showResponse=err==>{ var q=相应的; q+=\n\n; 如果err.trim!=q+=\n+err+\n; q+=再次播放?Y或N; var inp=promptq; 如果persist&&inp!=null{ 如果inp.trim==||!isNaNinp.trim showResponseError:输入无效!; } 如果inp.toLowerCase==“y”window.location.reload; }; 显示反应; 控制台。记录“中奖号码:”,中奖号码; console.log'selectednumbers:',userNumbers; 控制台。记录“正确的编号:”,正确; console.log'Amount won:',getWinnings; console.log“…程序已完成!”;