一、目的
复习前面所学的编程知识,能够利用所学的知识来解决问题 ①变量、数组 ②运算符:+ - * /、== >=、&&、||、! ③程序流程控制:if、switch;for、while、死循环… ④跳转关键字:break、continue、return ⑤方法 … 积攒大家的代码量,以训练并提升大家的编程能力、编程思维
编程思维 提升编程思维和能力的建议 使用所学的 Java 技术解决问题的思维方式和编写代码实现出来的能力 1. 编程思维、编程能力不是一朝一夕形成的,需要大量思考,练习和时间的沉淀 2. 具体措施:前期,建议先模仿;后期自然就能创新了;勤于联系代码。勤于思考,孰能生巧。
二、案例
1、案例:买机票
需求:用户购买机票时,机票原价会按照淡季、旺季,头等舱还是经济舱的情况来进行相应的优惠,优惠方案如下:5-10 月为旺季,头等舱 9 折,经济舱 8.5 折;11 月到来年 4 月为淡季,头等舱 7 折,经济舱 6.5 折,请开发程序计算出用户当前机票的优惠价。 分析: ①方法是否需要接收数据?需要接收机票原价、当前月份、舱位类型; ②方法是否需要返回数据?需要返回计算出的机票优惠价 ③方法内部:先使用 if 判断月份是旺季还是淡季,然后使用 switch 分支判断是头等舱还是经济舱 解决: 代码:
public static void main ( String [ ] args) {
System . out. println ( "欢迎使用机票购买系统!" ) ;
Scanner scanner = new Scanner ( System . in) ;
System . out. print ( "请输入机票原价:" ) ;
int ariTicket = scanner. nextInt ( ) ;
System . out. print ( "请输入当前月份:(1-12月)" ) ;
int month = scanner. nextInt ( ) ;
System . out. print ( "请输入舱位类型:(头等舱/经济舱)" ) ;
String seatType = scanner. next ( ) ;
double pirce = ticketPrice ( ariTicket, month, seatType) ;
System . out. println ( "您的机票价格为:" + pirce) ;
}
public static double ticketPrice ( int ariTicket, int month, String seatType) {
double price = 0 ;
if ( month >= 5 || month <= 10 ) {
switch ( seatType) {
case "头等舱" :
price = ariTicket * 0.9 ;
break ;
case "经济舱" :
price = ariTicket * 0.85 ;
break ;
}
} else if ( month >= 11 || month <= 12 || month >= 1 || month <= 4 ) {
switch ( seatType) {
case "头等舱" :
price = ariTicket * 0.7 ;
break ;
case "经济舱" :
price = ariTicket * 0.65 ;
break ;
}
} else {
System . out. println ( "输入月份错误!" ) ;
}
return price;
}
回顾: 1、遇到需要通过判断数据在哪个区间,来决定执行哪个业务,应该用什么实现? 应该使用 if 分支结构实现 2、遇到需要通过判断数据匹配哪个值,来决定执行哪个业务,应该用什么实现? 应该使用 switch 分支结构实现
2、案例:开发验证码
需求:开发一个程序,可以生成指定位数的验证码,每位可以是数字、大小写字母。(扩展:当验证错误时重新输入,输入超过三次重新生成验证码,只有验证码输入正确时结束执行)。 分析: ①方法是否需要接收数据?需要接收一个整数,控制生成验证码的位数。 ②方法是否需要返回数据?需要返回生成的验证码。 ③方法内部的业务:使用 for 循环依次生成每位随机字符,并使用一个 String 类的变量把每个字符连接起来,最后返回该变量即可。 解决: 代码:
public static void main ( String [ ] args) {
int count = 0 ;
System . out. println ( "欢迎使用验证码系统!" ) ;
Scanner scanner = new Scanner ( System . in) ;
System . out. println ( "请输入验证码位数:" ) ;
int length = scanner. nextInt ( ) ;
while ( true ) {
String code = generateCode ( length) ;
System . out. println ( "您的新验证码为:" ) ;
System . out. println ( code) ;
while ( true ) {
System . out. println ( "请输入您获得的验证码:" ) ;
final String inputCode = scanner. next ( ) ;
if ( inputCode. equals ( code) ) {
System . out. println ( "验证码正确!" ) ;
return ;
} else {
count++ ;
System . out. println ( "验证码错误" + count + "次!请重新输入!" ) ;
if ( count >= 3 ) {
System . out. println ( "验证码输入错误次数过多,请重新获取验证码!" ) ;
break ;
}
}
}
}
}
public static String generateCode ( int length) {
String code = "" ;
for ( int i = 0 ; i < length; i++ ) {
Random random = new Random ( ) ;
int classNum = random. nextInt ( 3 ) ;
switch ( classNum) {
case 0 :
Random r = new Random ( ) ;
int num = r. nextInt ( 10 ) ;
code += num;
break ;
case 1 :
char letter1 = ( char ) ( random. nextInt ( 26 ) + 'a' ) ;
code += letter1;
break ;
case 2 :
char letter2 = ( char ) ( random. nextInt ( 26 ) + 'A' ) ;
code += letter2;
break ;
}
}
return code;
}
回顾:随机生成验证码方法的核心实现逻辑是如何进行的? ①定义一个 for 循环,循环多次; ②随机生成 0、1、2 的分类,依次代表当前要生成的字符:数字、小写字母、大写字母; ③把 0、1、2 交给 switch 生成对应类型的随机字符; ④在循环外定义一个 String 类型的变量用来连接生成的随机字符; ⑤循环结束后,返回 String 类型的变量即是生成的随机验证码。
3、案例:评委打分
需求:多名评委要给选手打分,分数是 [0-100] 之间的整数。选手最后得分为:去掉最高分、最低分后剩余分数的平均分,请编写程序能够录入多名评委的分数,并算出选手的最终得分。 分析: ①方法接收数据?需要接收评委的人数和每位评委的分数 ②方法返回数据?需要返回计算出选手的最终得分 ③方法内部业务?==定义数组,录入评委的分数,录入评委的分数存入到数组中去,接着,我们就需要遍历数组中的分数,计算出总分,并找出最高分、最低分,最后按照这些数据算出选手最终得分并返回即可。 解决: 代码:
public static void main ( String [ ] args) {
double average = 0 ;
double [ ] array;
Scanner scanner = new Scanner ( System . in) ;
System . out. print ( "请输入评委人数:" ) ;
int peoples = new Scanner ( System . in) . nextInt ( ) ;
array = new double [ peoples] ;
for ( int i = 0 ; i < peoples; i++ ) {
System . out. println ( "请输入第" + ( i + 1 ) + "位评委的得分:" ) ;
double score = scanner. nextDouble ( ) ;
array[ i] = score;
}
average = average ( array) ;
System . out. println ( "选手最后的平均分为:" + average) ;
}
public static double average ( double [ ] array) {
double sum = 0 ;
double min = array[ 0 ] ;
double max = array[ 0 ] ;
for ( int i = 0 ; i < array. length; i++ ) {
if ( array[ i] < min) {
min = array[ i] ;
}
if ( array[ i] > max) {
max = array[ i] ;
}
sum += array[ i] ;
}
double average = ( sum - min - max) / ( array. length- 2 ) ;
return average;
}
回顾:如何实现评委打分案例? ①定义一个动态初始化的数组,用于录入评委打分; ②提前定义三个变量用来记住数组中的最大值、最小值、总和; ③遍历数组中的每个数据,依次找出最大值、最小值、总和; ④遍历结束后,按照计算规则算出选手的最终得分,并返回即可。
4、案例:数字加密
需求:某系统的数字密码是一个四位数,如 1983,为了安全,需要加密后再传输,加密规则是:对密码中的每位数字,都加 5 ,在对 10 求余,最后将所有数字顺序反转,得到一串加密后的新数字,请设计出满足本需求的加密程序!(也可以自己尝试着把解密程序写出来) 分析: ①方法接收数据?需要接收四位数字密码,进行加密处理。 ②方法返回数据?需要返回加密的后果。 ③方法内部业务?将四位数字密码拆分成一个一个的数字,存入到数组中去,遍历数组中的每个数字,按照题目要求进行加密!最后,再把加密后的数字拼接起来返回即可! 解决: 代码:
public static void main ( String [ ] args) {
System . out. println ( "请输入需要加密的数字:" ) ;
Scanner scanner = new Scanner ( System . in) ;
int encryptNum = scanner. nextInt ( ) ;
String encryptResult = encrypt ( encryptNum) ;
System . out. println ( "加密后的数字为:" ) ;
System . out. println ( encryptResult) ;
System . out. println ( "请输入需要解密的数字" ) ;
int dncryptNum = scanner. nextInt ( ) ;
String decryptResult = decrypt ( dncryptNum) ;
System . out. println ( "解密后的数字为:" ) ;
System . out. println ( decryptResult) ;
}
public static String encrypt ( int num) {
int a = num % 10 ;
int b = num % 100 / 10 ;
int c = num % 1000 / 100 ;
int d = num % 10000 / 1000 ;
int [ ] arr = { d, c, b, a} ;
String result = "" ;
int [ ] temp = new int [ arr. length] ;
for ( int i = 0 ; i < arr. length; i++ ) {
arr[ i] = ( arr[ i] + 5 ) % 10 ;
}
for ( int i = 0 ; i < arr. length; i++ ) {
temp[ i] = arr[ arr. length - 1 - i] ;
}
arr = temp;
for ( int i = 0 ; i < arr. length; i++ ) {
result += arr[ i] ;
}
return result;
}
public static String decrypt ( int num) {
System . out. println ( "请输入加密后的数字:" ) ;
int a = num % 10 ;
int b = num % 100 / 10 ;
int c = num % 1000 / 100 ;
int d = num % 10000 / 1000 ;
int [ ] arr = { d, c, b, a} ;
String result = "" ;
int [ ] temp = new int [ arr. length] ;
for ( int i = 0 ; i < arr. length; i++ ) {
temp[ i] = arr[ arr. length - 1 - i] ;
}
arr = temp;
for ( int i = 0 ; i < arr. length; i++ ) {
arr[ i] = ( arr[ i] - 5 + 10 ) % 10 ;
result += arr[ i] ;
}
return result;
}
回顾: ①数组元素的反转、交换是按照什么完成的?反转数组,就是对数组中的元素,按照前后位置,依次交换数据。 ②如果一个方法里要做的事比较多,我们在开发中一般会怎么做?一般会把多个事拆成多个方法去完成,也就是独立功能独立成一个方法。
5、案例:数组拷贝
需求:把一个整型数组,控制台输入数据,例如输入[11,22,33],拷贝出来一个一模一样的数组出来。 分析: ①方法接收数据?需要接收一个整型数组(原数组) ②方法返回数据?需要返回一个新的、一模一样的整型数组 ③方法内部业务?==创建一个长度一样的整形数组做为新数组,并把原数组的元素对应位置赋值给新数组,最终返回新数组即可。 解决: 代码:
public static void main ( String [ ] args) {
Scanner scanner = new Scanner ( System . in) ;
System . out. print ( "请输入需要拷贝的数组长度:" ) ;
int length = scanner. nextInt ( ) ;
System . out. println ( "请输入需要拷贝的数组:" ) ;
int [ ] originalArray = new int [ length] ;
for ( int i = 0 ; i < length; i++ ) {
originalArray[ i] = scanner. nextInt ( ) ;
}
System . out. println ( "原始数组为:" ) ;
for ( int i = 0 ; i < length; i++ ) {
System . out. print ( originalArray[ i] + " " ) ;
}
System . out. println ( ) ;
System . out. println ( "原始数组的地址为:" ) ;
System . out. println ( originalArray) ;
int [ ] copyArray = copyArray ( originalArray) ;
System . out. println ( "拷贝后的数组为:" ) ;
for ( int i = 0 ; i < length; i++ ) {
System . out. print ( copyArray[ i] + " " ) ;
}
System . out. println ( ) ;
System . out. println ( "拷贝后的数组的地址为:" ) ;
System . out. println ( copyArray) ;
}
public static int [ ] copyArray ( int [ ] originalArray) {
int [ ] copyArray = new int [ originalArray. length] ;
for ( int i = 0 ; i < originalArray. length; i++ ) {
copyArray[ i] = originalArray[ i] ;
}
return copyArray;
}
回顾:拷贝数组的意思是创建出一个与原数组一模一样的数组出来。
6、案例:抢红包
需求:一个抢红包的活动,分别有:1、22、333、4、5555 五个红包。请模拟有人来抽奖,按照先来先得,随机抽取,抽完即止,注意:一个红包只能被抽一次,先抽或后抽哪一个红包是随机的,示例如下(不一定是下面的顺序) 分析: ①方法接收数据?需要接收一个数组来表示五个红包 ②方法返回数据?不需要 ③方法内部业务? –第一种:写个 for 循环控制抽奖,每一次都从数据中数据找一个金额,如果该金额不是 0,则代表抽中,接着用 for 循环控制抽奖,然后继续下一个粉丝的抽奖;如果抽中的金额发现是 0,代表该位置处的奖已经被抽走,则重新从数组中随机找出一个金额继续判断!直至抽中的金额不是 0 ! –第二种:先把数组里面的 5 个金额打乱顺序,打乱后的顺序就认为是中将顺序;接着,写个 for 循环,执行 5 次,每次都提示抽奖;每次抽奖,都依次取出数组中的每个位置处的金额作为中奖金额即可。 解决:(哇靠,我自己干了两个点,要学习的东西还是太多了) 代码:
public static void main ( String [ ] args) {
int [ ] redPacket1 = { 1 , 22 , 333 , 4 , 5555 } ;
int [ ] redPacket2 = { 1 , 22 , 333 , 4 , 5555 } ;
System . out. println ( "调用方法1抢到的红包如下:" ) ;
getRedPacket1 ( redPacket1) ;
System . out. println ( "---------------分割线----------------" ) ;
System . out. println ( "调用方法2抢到的红包如下:" ) ;
getRedPacket2 ( redPacket2) ;
}
public static void getRedPacket1 ( int [ ] redPacket) {
int [ ] temp1 = new int [ redPacket. length] ;
for ( int i = 0 ; i < redPacket. length; i++ ) {
Random random = new Random ( ) ;
int num = random. nextInt ( redPacket. length) ;
while ( redPacket[ num] == 0 ) {
num = random. nextInt ( redPacket. length) ;
}
temp1[ i] = redPacket[ num] ;
redPacket[ num] = 0 ;
System . out. println ( "恭喜" + ( i + 1 ) + "号抽到了红包" + temp1[ i] + "元!" ) ;
}
}
public static void getRedPacket2 ( int [ ] redPacket) {
Random random = new Random ( ) ;
int [ ] temp2 = new int [ redPacket. length] ;
for ( int i = 0 ; i < redPacket. length; i++ ) {
int index = random. nextInt ( redPacket. length) ;
while ( redPacket[ index] == 0 ) {
index = random. nextInt ( redPacket. length) ;
}
temp2[ i] = redPacket[ index] ;
redPacket[ index] = 0 ;
System . out. println ( "恭喜" + ( i + 1 ) + "号抽到了红包" + temp2[ i] + "元!" ) ;
}
}
回顾:抢红包的两种实现方案,哪种方式可能更好一些? ①第1种:每次抽奖都从数组中,随机找出一个金额,如果该金额不是0,就输出该金额,然后用0替换该位置处的金额;如果该位置是0,则重复上一步操作! ②第2种:打乱奖金的顺序,再依次发给粉丝。遍历数组中的每个位置,每遍历到一个位置,都随机一个索引值出来,让当前位置与该索引位置处的数据进行交换。
7、案例:找素数
需求:判断 101-200 之间有多少个素数,并输出所有素数。(说明:除了 1 和它本身以外,不能被其他正常整数整除,就叫素数,比如 3、7 就是素数,而 9、21 等等不是素数) 分析: ①方法接收数据?需要接收 101 以及 200,以便找该区间中的素数 ②方法返回数据?需要返回找到的素数个数 ③方法内部业务?使用 for 循环来产生如 101 到 200 之间的每个数;每拿到一个数,判断该数是否是素数;判断规则是:从 2 开始遍历到该数的一半的数据,看是否有数据可以整除它,有则不是素数,没有则是素数;根据判定的结果来决定是否输出这个数据(是素数则输出);最后还需要统计素数的个数并返回 解决: 代码:
public static void main ( String [ ] args) {
Scanner scanner = new Scanner ( System . in) ;
int count = 0 ;
System . out. print ( "请输入第一个正整数:" ) ;
int a = scanner. nextInt ( ) ;
System . out. print ( "请输入第二个正整数:" ) ;
int b = scanner. nextInt ( ) ;
count = isPrime ( a, b) ;
System . out. println ( "共有" + count + "个素数!" ) ;
}
public static int isPrime ( int a, int b) {
int count = 0 ;
for ( int i = a; i <= b; i++ ) {
int flag = 1 ;
for ( int j = 2 ; j <= i / 2 ; j++ ) {
if ( i % j == 0 ) {
flag = 0 ;
break ;
}
}
if ( flag == 1 ) {
count++ ;
}
}
return count;
}
回顾:本次案例中是如何确定出该数是素数的,具体如何实现? ①定义了 flag 标记位 ②遍历 2 到该数的一半的数据去判断是否有整除的数据,有则改变 falg 标记位的状态 ③最终通过 flag 的状态判断是否是素数。
8、案例:模拟双色球
需求:模拟双色球,投注号码由 6 个红色球号码和 1 个蓝色球号码组成。红色球号码从 1-33 中选择:蓝色球号码从 1-16 中选择。双色球中奖条件和奖金表如下所示:
奖励等级 中奖条件 中奖说明 奖品 红球 蓝球 一等奖 6个 1个 中 6+1 最高10000万元 二等奖 6个 0个 中 6+0 最高500万元 三等奖 5个 1个 中 5+1 3000元 四等奖 5个 0个 中 5+0 200元 4个 1个 中 4+1 五等奖 4个 0个 中 4+0 10元 3个 1个 中 3+1 六等奖 2个 1个 中 2+1 5元 1个 1个 中 1+1 0个 1个 中 0+1
分析:(这次分析我们换个角度) ①用户投注一组号码; ②随机生成一组中奖号码; ③判断中奖情况。 注意:6 个红球号码的范围是 1-33 之间,且不能重复:1 个蓝色球号码的范围在:1-16 之间。 解决: 代码:
public static void main ( String [ ] args) {
int [ ] userNumbers = userSelectNumbers ( ) ;
int [ ] luckNumbers = createLuckNumbers ( ) ;
judge ( userNumbers, luckNumbers) ;
}
public static int [ ] userSelectNumbers ( ) {
System . out. println ( "欢迎来到双色球!" ) ;
System . out. println ( "双色球规则为:每注由 6 个红球号码和 1 个蓝球号码组成,共 7 个号码。请注意:6 个红球号码的范围是在 1-33 之间,且不能重复;1个蓝球号码的范围是在 1-16 之间。" ) ;
int [ ] userNumbers = new int [ 7 ] ;
int redflag = 0 ;
int repeatflag = 0 ;
int blueflag = 0 ;
Scanner scanner = new Scanner ( System . in) ;
System . out. println ( "请输入您要投注的6个红球号码:" ) ;
int [ ] redUserNumbers = new int [ 6 ] ;
Scanner redUserScanner = new Scanner ( System . in) ;
while ( redflag == 0 || repeatflag == 0 ) {
for ( int i = 0 ; i < 6 ; i++ ) {
redUserNumbers[ i] = redUserScanner. nextInt ( ) ;
}
for ( int i = 0 ; i < 6 ; i++ ) {
if ( redUserNumbers[ i] < 1 || redUserNumbers[ i] > 33 ) {
System . out. println ( "输入的红球号码有误,请重新输入!" ) ;
redflag = 0 ;
break ;
} else {
redflag = 1 ;
}
}
if ( isRepeat ( redUserNumbers) == 1 ) {
System . out. println ( "输入的红球号码有重复,请重新输入!" ) ;
repeatflag = 0 ;
} else {
repeatflag = 1 ;
}
}
for ( int i = 0 ; i < redUserNumbers. length; i++ ) {
userNumbers[ i] = redUserNumbers[ i] ;
}
System . out. println ( "请输入您要投注的1个蓝球号码:" ) ;
int blueUserNumber = 0 ;
while ( blueflag == 0 ) {
blueUserNumber = scanner. nextInt ( ) ;
if ( blueUserNumber < 1 || blueUserNumber > 16 ) {
System . out. println ( "输入的蓝球号码有误,请重新输入!" ) ;
blueflag = 0 ;
} else {
blueflag = 1 ;
}
}
userNumbers[ 6 ] = blueUserNumber;
System . out. println ( "您投注的号码为:" ) ;
for ( int i = 0 ; i < userNumbers. length; i++ ) {
System . out. print ( userNumbers[ i] + " " ) ;
}
System . out. println ( ) ;
return userNumbers;
}
public static int [ ] createLuckNumbers ( ) {
int [ ] luckNumbers = new int [ 7 ] ;
int redflag = 0 ;
int repeatflag = 0 ;
int blueflag = 0 ;
Random random = new Random ( ) ;
int [ ] redLuckNumbers = new int [ 6 ] ;
while ( redflag == 0 || repeatflag == 0 ) {
for ( int i = 0 ; i < 6 ; i++ ) {
redLuckNumbers[ i] = random. nextInt ( 33 ) + 1 ;
}
for ( int i = 0 ; i < 6 ; i++ ) {
if ( redLuckNumbers[ i] < 1 || redLuckNumbers[ i] > 33 ) {
redflag = 0 ;
break ;
} else {
redflag = 1 ;
}
}
if ( isRepeat ( redLuckNumbers) == 1 ) {
repeatflag = 0 ;
} else {
repeatflag = 1 ;
}
}
int blueLuckNumber = 0 ;
while ( blueflag == 0 ) {
blueLuckNumber = random. nextInt ( 16 ) + 1 ;
if ( blueLuckNumber < 1 || blueLuckNumber > 16 ) {
blueflag = 0 ;
} else {
blueflag = 1 ;
}
}
for ( int i = 0 ; i < 6 ; i++ ) {
luckNumbers[ i] = redLuckNumbers[ i] ;
}
luckNumbers[ 6 ] = blueLuckNumber;
System . out. println ( "系统生成的号码为:" ) ;
for ( int i = 0 ; i < luckNumbers. length; i++ ) {
System . out. print ( luckNumbers[ i] + " " ) ;
}
System . out. println ( ) ;
return luckNumbers;
}
public static void judge ( int [ ] userNumbers, int [ ] luckNumbers) {
int redCount = 0 ;
int blueCount = 0 ;
for ( int i = 0 ; i < 6 ; i++ ) {
for ( int j = 0 ; j < 6 ; j++ ) {
if ( userNumbers[ i] == luckNumbers[ j] ) {
redCount++ ;
}
}
}
if ( userNumbers[ 6 ] == luckNumbers[ 6 ] ) {
blueCount = 1 ;
}
if ( redCount == 6 && blueCount == 1 ) {
System . out. println ( "恭喜您获得一等奖!奖品10000万元!" ) ;
} else if ( 6 == redCount && 0 == blueCount) {
System . out. println ( "恭喜您获得二等奖!奖品500万元!" ) ;
} else if ( 5 == redCount && 1 == blueCount) {
System . out. println ( "恭喜您获得三等奖!奖品3000元!" ) ;
} else if ( ( 5 == redCount && 0 == blueCount) || ( 4 == redCount && 1 == blueCount) ) {
System . out. println ( "恭喜您获得四等奖!奖品200元!" ) ;
} else if ( ( 4 == redCount && 0 == blueCount) || ( 3 == redCount && 1 == blueCount) ) {
System . out. println ( "恭喜您获得五等奖!奖品10元!" ) ;
} else if ( ( 2 == redCount && 1 == blueCount) || ( 1 == redCount && 1 == blueCount) || ( 0 == redCount && 1 == blueCount) ) {
System . out. println ( "恭喜您获得六等奖!奖品5元!" ) ;
} else {
System . out. println ( "很遗憾,您没有中奖!" ) ;
}
}
public static int isRepeat ( int [ ] redNumbers) {
int repeatFlag = 0 ;
for ( int i = 0 ; i < redNumbers. length; i++ ) {
for ( int j = i + 1 ; j < redNumbers. length; j++ ) {
if ( redNumbers[ i] == redNumbers[ j] ) {
repeatFlag = 1 ;
break ;
}
}
}
return repeatFlag;
}
回顾: ①案例中是如何去保证用户投注的 6 个红球号码不重复的?每次用户投注红球号码后,都去判断一下是否有号码重复,如果有重复,让用户重新选号。 ②案例中是如何去保证随机的 6 个中奖的红球号码不重复的?每次随机 1-33 之间的红球号码后,都去判断这个号码是否有重复,如果有重复,让用户重新选号。 ③案例中是如何去统计用户投注的红球的命中数量的?遍历用户选择的每个红色号码,每遍历一个红球号码时,都去遍历中奖号码数组中的全部红球号码,看当前选的红球号码是否在中奖号码中存在,存在则红球命中数量加1。