黑马程序员技术交流社区

标题: 课后作业,没有思路,求解?在线等 [打印本页]

作者: SuperLan    时间: 2016-11-13 21:27
标题: 课后作业,没有思路,求解?在线等
模拟彩票投注,提示用户输入5个1-10之间的数字,(每个数字用,隔开,并且不能重复,)作为投注号码
* 然后随机生成四个数字作为中奖号码,定义一个方法传入投注号码,和中奖号码,打印出用户所中的号码 PS:组成中奖号码的四个数字彼此之间不能重复
作者: aA772807986    时间: 2016-11-13 22:13
我帮你解决
作者: aA772807986    时间: 2016-11-13 22:16
[Java] 纯文本查看 复制代码
package com.lxy.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Random;

/**
*模拟彩票投注,提示用户输入5个1-10之间的数字,(每个数字用,隔开,并且不能重复,)作为投注号码
*然后随机生成四个数字作为中奖号码,定义一个方法传入投注号码,和中奖号码,打印出用户所中的号码
*PS:组成中奖号码的四个数字彼此之间不能重复
*/
public class Test17 {
   public static void main(String []args)throws Exception{
           System.out.println("请输入5个1-10之间的数字,(每个数字用,隔开,并且不能重复,)");
           BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
           String con=reader.readLine();
           String []value= con.split(",");
           int []tarValue=new int[value.length];
           for(int i=0;i<value.length;i++){
                   tarValue=Integer.parseInt(value);
           }
          
           compar(tarValue,randomMath());
          
          
   }
   //比较两个数组
   public static void compar(int [] tarValue,int[] value){
           boolean flag=false;
            for(int i=0;i<value.length;i++){
                    for(int j=0;j<tarValue.length;j++){
                            if(value==tarValue[j]){
                                    System.out.println("中奖号码:"+tarValue[j]);
                                    flag=true;
                            }else{
                                    flag=false;
                            }
                    }
            }
            if(!flag){
                    System.out.println("不好意思,没中奖!");
            }
          
   }
   //随机生成四个数字(并且不能重复)
   public static int[] randomMath(){
           int []a=new int[10];
           Random random=new Random();
           int i=0;
           while(i<4){
                   boolean flag=false;//表示该数组是否存在相等的情况
                   int math=random.nextInt(Integer.MAX_VALUE);//随机生成int数据范围的数字
                   for(int j=0;j<a.length;j++){
                           if(math==a[j]){
                                   flag=true;
                           }
                   }
                   if(!flag){
                           a=math;
                           i++;
                   }else{
                           a=math;
                   }
                  
          }
          
           return a;
   }
}

作者: lieyemu    时间: 2016-11-13 22:24
学习学习
作者: peng84    时间: 2016-11-13 23:07
很简单的

作者: SuperLan    时间: 2016-11-13 23:47
aA772807986 发表于 2016-11-13 22:16
[mw_shl_code=java,true]package com.lxy.test;

import java.io.BufferedReader;

这解法真帅,我先解读一下代码。我刚才在写另外一道题了,也遇到了一点问题,我发布了另外一个主题,对你来说应该算不上是挑战了,有兴趣可以去看看。
作者: SuperLan    时间: 2016-11-13 23:54

嗯嗯,good good study,day day up!
作者: Jarc    时间: 2016-11-13 23:58
投注号码可以有查表法来完成,随机角标
作者: Daveweil    时间: 2016-11-14 08:10
数字除去重复用集合就好,

作者: mfsara    时间: 2016-11-15 18:20
只有联系敲代码,可以先抄讲师代码

作者: 1413157322    时间: 2016-11-18 22:41
先用随数生成5个不同的数(用条件判断不能与原来的相同),然后再比对键入的五个数(for循环遍历)。。。
作者: 袁志娜    时间: 2016-11-18 23:37

作者: eason7shin    时间: 2016-11-18 23:50
用math.random生成  ,当输入后,把输入的转换成字符串, 遍历后与数字比较;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2