编写一个Java程序,开始时生成一个0-9的随机数字,当用户会员号的百位与十位的差值与随机数字相等时为中奖
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一个Java程序,开始时生成一个0-9的随机数字,当用户会员号的百位与十位的差值与随机数字相等时为中奖相关的知识,希望对你有一定的参考价值。
用 do….while实现
// 包 import java.util.Random;public static void main(String[] args)
Random random = new Random(); // 随机数类
int number = random.nextInt(10); // 随机生成 0 - 9 的数字
int userNumber = 0; // 存储用户号码的变量
boolean sign = false; // 是否循环的标记
while (sign == false) // 循环
userNumber = random.nextInt(1000); // 随机生成 0 - 999 的数字
sign = checkUserNum(userNumber , number); // 调用方法
/**
* 检查用户是否中奖
* @param userNumber 随机生成的用户号码
* @param number 开奖号码
* @return 返回是或否
*/
public static boolean checkUserNum(int userNumber , int number)
boolean sign = false; // 是否中奖标记
int firstNum; // 声明一个变量记录百位
int nextNum; // 声明一个变量记录十位
String buff = new Integer(userNumber).toString(); // 把 用户号码转换成字符串
if (buff.length() == 3) // 判断生成的用户号码是否 大于 100
firstNum = Integer.parseInt(buff.substring(0, 1)); // 截取百位
nextNum = Integer.parseInt(buff.substring(1, 2)); // 截取十位
if(firstNum - nextNum == number) // 如果 百位减十位等于开奖号码,则中奖
System.out.println("开奖号码是:" + number);
System.out.println("中奖用户号码是:" + buff);
sign = true;
return sign; // 返回
运行结果:
开奖号码是:2
中奖用户号码是:427
开奖号码是:7
中奖用户号码是:816 参考技术A import java.util.Random;
public class LotteryDraw
/**
* @param args
*/
/**
* 倒计时
*/
public static void keepTime()
for (int i = 5; i > 0; i--)
System.out.println(i);
try
Thread.sleep(1000);
catch (InterruptedException e)
e.printStackTrace();
/**
* 产生0-9随机数
*/
public static int random()
Random random=new Random();
return random.nextInt(10);
public static void main(String[] args)
System.out.println("稍等片刻我们将产生本期奖号码及中奖会员!!!");
keepTime();
int num=random();//随机数
System.out.println("号码为:"+num);
int []userId=123,421,341,2342,23452,4523,342,5433,23425;//会员号
int badNum=0;//百位和个位差
int i=0;
do
if(i<userId.length)
String num1 = userId[i]+"";
int bNum=Integer.valueOf(num1.substring(num1.length()-2, num1.length()-1));//得到百位数字
int sNum=Integer.valueOf(num1.substring(num1.length()-1, num1.length()));//得到个位数字
badNum=bNum-sNum;
if(badNum<0)
badNum=badNum*(-1);//差值为负数转正
if(badNum==num)
System.out.println("本期中奖会员为"+userId[i]);
if(i==userId.length)
break;
else if(i>userId.length||badNum!=num)
System.out.println("没有中奖号码!");
break;
i++;
while(true);
为啥我的随机数生成器不产生输出? [关闭]
【中文标题】为啥我的随机数生成器不产生输出? [关闭]【英文标题】:Why is my random number generator not producing an output? [closed]为什么我的随机数生成器不产生输出? [关闭] 【发布时间】:2017-03-03 00:06:44 【问题描述】:因此,对于我的 java 程序,我需要编写一个带有 if else 语句的 while 循环,该语句允许人们输入季节的猜测,该猜测是通过将季节分配给从 1 到 4 生成的数字而随机生成的. 当我编译时我没有得到任何错误,但是当我执行程序时,我得到的所有猜测都是零。在数字生成中我缺少什么吗?还是在字符串比较中?
编辑:代码现在按预期工作。我明白我做错了什么。感谢那些帮助过的人。
这里是代码和需要的变量:
public class SeasonsGenerator
public static void main(String[] args)
//Variables for seasons counter
int summerSeasonCounter=0;
int fallSeasonCounter=0;
int springSeasonCounter=0;
int winterSeasonCounter=0;
int number;
int limit = 5;
Scanner keyboard = new Scanner(System.in);
int count = 0; // Counter for total number of iterations or loops
String season = "";//Variable for season
final int NUMBER = 15; // Number of while loop iterations
String userGuess;//save user guess here
// A random number generator
Random generator = new Random();
while(count < NUMBER)
number = generator.nextInt(limit);
if(number == 1)
season = "summer";
else if(number == 2)
season = "spring";
else if(number == 3)
season = "fall";
else if(number == 4)
season = "winter";
System.out.print("Guess the season generated by the random number generator:");
userGuess = keyboard.nextLine();
userGuess.equalsIgnoreCase(season);
if(season == "summer")
summerSeasonCounter +=1;
else if(season == "spring")
springSeasonCounter += 1;
else if(season == "fall")
fallSeasonCounter += 1;
else if(season == "winter")
winterSeasonCounter += 1;
// Display the results
System.out.println ("You guessed Summer season correctly "+summerSeasonCounter+" number of times.");
System.out.println ("You guessed Fall season correctly "+fallSeasonCounter+" number of times.");
System.out.println ("You guessed Spring season correctly "+springSeasonCounter+" number of times.");
System.out.println ("You guessed Winter season correctly "+winterSeasonCounter+" number of times.");
【问题讨论】:
***.com/questions/363681/… 这将向您展示如何在一个范围内创建一个随机数 欢迎来到 Stack Overflow!看来您需要学习使用调试器。请帮助自己一些complementary debugging techniques。如果之后仍有问题,请随时回来提供更多详细信息。 【参考方案1】:您有很多问题,我建议您通过调试器运行代码以帮助您发现错误。一些明显的错误是
nextInt(4) 返回 0 到 3。season.equals("summer");
将季节与“夏天”进行比较并返回 false。它不分配任何东西。
你测试了四次if (userGuess.equalsIgnoreCase(season))
。如果第一次为假,则四次全部为假。
您的直接问题是要分配一个变量,您需要使用=
season = "summer";
【讨论】:
我将使用什么来将字符串文字summer分配给字符串变量season呢?是不是使用: 季节=“夏天”;不正确? @CodyBrody 我添加了一个如何使用=
的示例
@CodyBrody 我不明白你的问题。能改一下吗?
是的。我的理解是,要将字符串文字分配给字符串变量,不能使用 = 运算符。所以我认为这样做我错了吗?以上是关于编写一个Java程序,开始时生成一个0-9的随机数字,当用户会员号的百位与十位的差值与随机数字相等时为中奖的主要内容,如果未能解决你的问题,请参考以下文章