我写的代码哪里有问题,自己看不出来,希望大家帮我看看

qq_53318532 2021-04-05 04:43:20
实验内容主要是编程实现35选7彩票销售程序。用户从键盘输入要买彩票的注数n,程序随机产生n注号码并输出。每注号码为7个1~35的随机整数,每注7个号码中不能有重复号码。且输出时,要按顺序输出。 package lotteryticket; import java.util.Scanner; public class buyalotteryticket { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int num=(int)(Math.random()35+1); System.out.print(“请输入要卖彩票的注数:”); int n=sc.nextInt(); int []a=new int [7n]; for(int k=0;k<n;k++) {for(int i=0;i<7;i++) {num=(int)(Math.random()*35+1); a[i]=num; for(int j=0;j<i;j++) {if(a[i]a[j]) {i–; break; } } } } for(int m=1;m<=(7);m++) { if(m%70) System.out.println(a[m]+’\n’); } sc.close(); } } 我写的有什么问题,希望可以指教
...全文
295 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰思雨 2021-04-12
  • 打赏
  • 举报
回复
楼主啊,你要学会拷贝代码啊,你这贴过来的代码,都有语法错误的,怎么让人帮你看啊。 首先,思路有些复杂了。 在 35 个数 随机取 7 个数的算法,要求不能重复。 你对这句话的理解有误解啊,要是直接实现的话,你应该先生成 1 ~ 35 这三十五个数,然后,从这三十五个数中随机取 7 个数。 但我看楼主的思路是直接生成 7 个随机数,那么,你怎么保证这7个数是不重复的呢? 后面那个对 70 取余 的代码,更是莫名其妙的了。 1. 从 35 个数中随机取 7 个数,你要先生成 35 个数据,链表没有学到的话,放在数组里面也可以。当然,一般情况下是用循环结构来生成的,这 35 个数应该是有序的数。 2. 从 35 个数中随机取 7 个数,怎样随机取不重复的数呢? 可以换个思路,就是先将 35 个数打乱顺序,然后,再取前 7 个即可。 3. 如何将数组乱序? 先写一个遍历数组的代码,然后,在循环体中,生成一个随机数,随机数的范围就是数组元素的下角标,这样的话,每循环一次,就随机生成一个下角标,你可以将这个下角标对应的元素和第零个元素的位置互换一下,如此往复,遍历完成后,数组就是乱序的了。 4. 从乱序的数组中取 7 个数字,应该不难吧,我就不具体说了哈。
冰思雨 2021-04-12
  • 打赏
  • 举报
回复
import java.util.*;

public class Test {

    public static List<Integer> createRandom(int start, int end, int count) {
        List<Integer> list = new LinkedList<>();
        for (int number = start; number <= end; number++) {
            list.add(number);
        }
        Collections.shuffle(list);
        List<Integer> result = new ArrayList<>(count);
        for (int i=0; i<count; i++) {
            result.add(list.remove(0));
        }
        return result;
    }

    public static void main(String[] args) {
        try (Scanner sc = new Scanner(System.in)) {
            System.out.print("请输入要卖彩票的注数:");
            int count = sc.nextInt();
            for (int i=0; i<count; i++) {
                List<Integer> random = createRandom(1, 35, count);
                System.out.println(random);
            }
        }
    }

}
qq_53318532 2021-04-05
  • 打赏
  • 举报
回复
不知道怎么回事,反正就是运行不出正确的结果,不知道哪里有问题
qq_53318532 2021-04-05
  • 打赏
  • 举报
回复
我还没有学到这块,只能用最基本的方法做
yuzhizhi 2021-04-05
  • 打赏
  • 举报
回复
设置成队列来处理 如: aa ={1,2,3,4,5,6,7,8,9,10..35} 结果队列:Result={} 再用random随机序列,在aa队列找到一个踢出一个,再插入到Result中。其中Result的排序就简单,可以在插入时进行判断那个数字前插入或后面插入。 最后的结果就是Result队列中。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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