大佬看下JAVA题目 江湖救急!!!!!!!!!

Lin_bai_ 2020-10-12 02:10:53
用Java语言产生0000000-9999999之间的7个随机整数号码进行投注,每注2元人名币,使用Random类模拟根据用户在控制台输入的“彩票的书数”随机为用户生成相应的七星彩号码,并与当期的七星彩结果比较,最后输入中奖情况,现在我就卡在对比阶段了

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

class Seven
{
public static void main(String[] args)
{
System.out.println("请输入你购买彩票数");
Scanner sc = new Scanner(System.in);
int sum = sc.nextInt();
System.out.println("你购买的彩票如下:");
for (int i = 0;i < sum;i++)
{
ArrayList<Integer> aL=new ArrayList<Integer>();
for(int digit=0;digit<=9;digit++)
{
aL.add(digit);
}
System.out.println();
for(int result=0;result<9;result++)
{
Random r = new Random();//建立
int a = r.nextInt(aL.size());
System.out.print(aL.get(a));
}
}
System.out.println();
System.out.print("你总共购买"+sum+"张"+"花费"+sum*2+"元");
int key[] = new int[] { '9', '8', '7', '6', '7', '2', '0'};
}
}
怎么写下面的对比

...全文
638 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lin_bai_ 2020-10-13
  • 打赏
  • 举报
回复
不是同为数比较的问题 这个我会,只是怎么随机数怎么进去数组 并且 每个都要去进行比较,并且相同的数进行计算
鸡窝里的毛 2020-10-12
  • 打赏
  • 举报
回复
每组7个0~9的随机数,同位同数比较有那么复杂么?
Lin_bai_ 2020-10-12
  • 打赏
  • 举报
回复
你看下他们下标的位置 下位的位置相同,上面的数也相同 才获得一块钱
qq_39936465 2020-10-12
  • 打赏
  • 举报
回复
引用 3 楼 Lin_bai_ 的回复:
3个号码上有5个数字和中将号码相等 得5块钱
我是没看懂 7就不算了么 3,8,4呢。

public class Seven {
	public static void main(String[] args) {
		List<String> list = new ArrayList<String>();
		System.out.println("请输入你购买彩票数");
		Scanner sc = new Scanner(System.in);
		int sum = sc.nextInt();
		System.out.println("你购买的彩票如下:");
		for (int i = 0; i < sum; i++) {
			StringBuilder sb = new StringBuilder(7);
			for (int j = 0; j < 7; j++) {

				int a = (int) (Math.random() * 10);
				sb.append(a);
			}
			list.add(sb.toString());
		}
		list.forEach(System.out::println);
		System.out.print("你总共购买" + sum + "张" + "花费" + sum * 2 + "元");
		int key = (int) (Math.random() * 10000000);
		System.out.println("本期中奖号码为:" + key);
		int total=0;
		for(String s:list) {
			total+=check(s,String.valueOf(key));
		}
		System.out.println("您中奖的总金额:" + total + "元。");
	}

	static int check(String s,String key) {
		int t=0;
		boolean flag= false;
			for (int i = 7; i > 0; i--) {
				for (int j = 0; j + i <= 7; j++) {
					String str = s.substring(j, j + i);
					if (key.contains(str)) {
						System.out.println(str+"您赢得了"+(int)Math.pow(2, i-13)+"元!");
						t += Math.pow(2, i-1);
						flag=true;
					}
				}
				if(flag)break;
			}
		return t;
	}
}
Lin_bai_ 2020-10-12
  • 打赏
  • 举报
回复
主要是用的随机数 这两天刚刚学,没想到过随机数存入数组里的这个概念
luj_1768 2020-10-12
  • 打赏
  • 举报
回复
把整数类型转换为字符类型,然后使用string 类型的函数进行操作,就可以了。
黑色网袜yyds 2020-10-12
  • 打赏
  • 举报
回复
方法有好多,能实现要求就行
Lin_bai_ 2020-10-12
  • 打赏
  • 举报
回复
引用 8 楼 cy__98 的回复:
你的意思是相同位数上的数字相同就中1块钱吗?那你可以对每个位数取余作比较啊,像这样,我只对个位十位百位作比较了,剩下的你继续else if可以吗? int num1=Integer.parseInt(caipiaonum); int num2=Integer.parseInt(caipiaonum1); int count=1; if(num1%10==num2%10){ count+=1; }else if (num1/10%10==num2/10%10){ count+=1; }else if (num1/100%10==num2/100%10){ count+=1; } System.out.println(count);
把随机获取的数放入数组里,之后在去两个数组去核对下标的数字是否相等就可以了 有些大佬写的比较复杂 就很多函数没有碰到过
Lin_bai_ 2020-10-12
  • 打赏
  • 举报
回复
大佬我写出来了 感谢感谢 import java.util.*; class Seven { public static void main(String[] args) { HashSet<Integer> set = new HashSet(); System.out.println("请输入你购买彩票数"); Scanner sc = new Scanner(System.in); int sum = sc.nextInt(); System.out.println("你购买的彩票如下:"); int num = 0; for (int i = 0; i < sum; i++) { ArrayList<Integer> aL = new ArrayList<Integer>(); for (int digit = 0; digit <= 9; digit++) { aL.add(digit); } System.out.println(); int key[] = new int[] { 3, 8, 8, 3, 3, 3, 3, 3, 3}; //记录每次获取的彩票 int[] arr3 = new int[9]; for (int j = 0; j < 9; j++) { Random r = new Random();//建立 int a = r.nextInt(aL.size()); arr3 [j] = a; System.out.print(aL.get(a)); } for (int k = 0; k <arr3.length; k++) { if (arr3[k] == key[k]) { // 如果遍历到了一个正确数字 num++; } } }System.out.println("与答案相等就"+num); } }
黑色网袜yyds 2020-10-12
  • 打赏
  • 举报
回复
你的意思是相同位数上的数字相同就中1块钱吗?那你可以对每个位数取余作比较啊,像这样,我只对个位十位百位作比较了,剩下的你继续else if可以吗?
int num1=Integer.parseInt(caipiaonum);
int num2=Integer.parseInt(caipiaonum1);
int count=1;
if(num1%10==num2%10){
count+=1;
}else if (num1/10%10==num2/10%10){
count+=1;
}else if (num1/100%10==num2/100%10){
count+=1;
}
System.out.println(count);
Lin_bai_ 2020-10-12
  • 打赏
  • 举报
回复
da
引用 5 楼 cy__98 的回复:
不知道你要的结果是不是这样: public class Test { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.println("请输入您要购买的彩票数"); int num = input.nextInt(); String caipiaonum=""; String caipiaonum1 = caipiaonum(); System.out.println("本期中奖号码是"+caipiaonum1); for (int a = 0; a < num; a++) { caipiaonum = caipiaonum(); System.out.println("您的彩票号码是"+caipiaonum); if(caipiaonum.equals(caipiaonum1)){ System.out.println("恭喜您,您中奖了!"); }else { System.out.println("很遗憾,您未中奖!"); } } } public static String caipiaonum(){ StringBuffer stringBuffer = new StringBuffer(); for (int i = 0; i < 7; i++) { int v = (int) (Math.random() * 9 + 1); stringBuffer.append(v); } return stringBuffer.toString(); } }
大佬你看他彩票和中了的是不是有几个数字相同呀 相同1个等于1块钱
Lin_bai_ 2020-10-12
  • 打赏
  • 举报
回复
黑色网袜yyds 2020-10-12
  • 打赏
  • 举报
回复
不知道你要的结果是不是这样:
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入您要购买的彩票数");
int num = input.nextInt();
String caipiaonum="";
String caipiaonum1 = caipiaonum();
System.out.println("本期中奖号码是"+caipiaonum1);
for (int a = 0; a < num; a++) {
caipiaonum = caipiaonum();
System.out.println("您的彩票号码是"+caipiaonum);
if(caipiaonum.equals(caipiaonum1)){
System.out.println("恭喜您,您中奖了!");
}else {
System.out.println("很遗憾,您未中奖!");
}
}
}
public static String caipiaonum(){
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < 7; i++) {
int v = (int) (Math.random() * 9 + 1);
stringBuffer.append(v);
}
return stringBuffer.toString();
}
}
Lin_bai_ 2020-10-12
  • 打赏
  • 举报
回复
引用 1 楼 尼坤神 的回复:

package com.xiaxl.baidu.ocr;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class Demo1 {

    public static void main(String[] args) {
        int numberLength = 7;
        String winNumber = getLotteryNumber(numberLength);
        System.out.println("本期开奖号码为:" + winNumber);
        System.out.println("请输入你购买彩票数");
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        System.out.println("你购买的彩票如下:");
        List<String> numbers = getLotteryNumbers(number, numberLength);
        for (String str : numbers) {
            if (winNumber.equals(str)) {
                System.out.println("恭喜您,彩票号码" + str + "中奖啦!");
                break;
            }
            System.out.println(str);
        }
    }

    private static List<String> getLotteryNumbers(int number, int numberLength) {
        List<String> lotterys = new ArrayList<>(number);
        for (int i = 0; i < number; i++) {
            lotterys.add(getLotteryNumber(numberLength));
        }
        return lotterys;
    }

    private static String getLotteryNumber(int length) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            sb.append(new Random().nextInt(9));
        }
        return sb.toString();
    }
}

坤哥 加点备注 我有些看不懂 小白 麻烦了
Lin_bai_ 2020-10-12
  • 打赏
  • 举报
回复
3个号码上有5个数字和中将号码相等 得5块钱
七点二十喊我 2020-10-12
  • 打赏
  • 举报
回复
public static void main(String[] args) { //记录用户所有购买的彩票 HashSet<String> set = new HashSet(); System.out.println("请输入你购买彩票数"); Scanner sc = new Scanner(System.in); int sum = sc.nextInt(); System.out.println("你购买的彩票如下:"); for (int i = 0;i < sum;i++) { ArrayList<Integer> aL=new ArrayList<Integer>(); for(int digit=0;digit<=9;digit++) { aL.add(digit); } System.out.println(); //记录每次获取的彩票 String cp = ""; for(int result=0;result<9;result++) { Random r = new Random();//建立 int a = r.nextInt(aL.size()); System.out.print(aL.get(a)); cp += aL.get(a); } set.add(cp); } System.out.printf("共生成彩票%s注,号码为%s",set.size(),set.toString()); System.out.println(); System.out.print("你总共购买"+sum+"张"+"花费"+sum*2+"元"); int key[] = new int[] { '9', '8', '7', '6', '7', '2', '0'}; String str = "9876720"; if (set.contains(str)){ System.out.printf("恭喜您中奖拉,本次中奖号码为:%s",str); }else { System.out.printf("很遗憾,本次未中奖哦,中奖号码为:%s",str); } } 这样嗯
尼坤神 2020-10-12
  • 打赏
  • 举报
回复

package com.xiaxl.baidu.ocr;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Scanner;

public class Demo1 {

    public static void main(String[] args) {
        int numberLength = 7;
        String winNumber = getLotteryNumber(numberLength);
        System.out.println("本期开奖号码为:" + winNumber);
        System.out.println("请输入你购买彩票数");
        Scanner sc = new Scanner(System.in);
        int number = sc.nextInt();
        System.out.println("你购买的彩票如下:");
        List<String> numbers = getLotteryNumbers(number, numberLength);
        for (String str : numbers) {
            if (winNumber.equals(str)) {
                System.out.println("恭喜您,彩票号码" + str + "中奖啦!");
                break;
            }
            System.out.println(str);
        }
    }

    private static List<String> getLotteryNumbers(int number, int numberLength) {
        List<String> lotterys = new ArrayList<>(number);
        for (int i = 0; i < number; i++) {
            lotterys.add(getLotteryNumber(numberLength));
        }
        return lotterys;
    }

    private static String getLotteryNumber(int length) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            sb.append(new Random().nextInt(9));
        }
        return sb.toString();
    }
}

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧