永发信息网

关于java的问题,具体程序编写

答案:4  悬赏:20  手机版
解决时间 2021-07-18 13:00

编程实现35选7彩票销售程序。用户从键盘输入要买彩票的注数n,程序随机产生n注号码并输出。每注号码为7个1~35的随机整数,每注7个号码中不能有重复号码。要具体程序!

最佳答案
import java.util.Scanner;

public class test {
public static void main( String[] args ) {
int[] a = new int[35];
for ( int i = 0; i < 35; ++i ) {
a[i] = i + 1;
}
int n;
Scanner s = new Scanner( System.in );
n = s.nextInt();
select( a, n );
}
static void select( int[] a, int n ) {
for ( int i = 0; i < n; ++i ) {
shuffle( a );
System.out.print( "第"+ (i+1) +"注:" );
for ( int j = 0; j < 7; ++j ) {
System.out.print( a[j] + " " );
}
System.out.println();
}
}
static void shuffle( int[] a )
{
int t, tmp;
for ( int i = 0; i < a.length; ++i ) {
t = (int)(Math.random()*35);
tmp = a[t];
a[t] = a[i];
a[i] = tmp;
}
}
}
全部回答

可以在控制台手动的输入你想多少选多少的值,排列直接就输出了!

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader; class ArrayCombination {

public static void main(String[] args) throws IOException { // 得到N和I的值 int[] num = getNAndI(); int N = num[0]; int I = num[1]; // 如果在N中取I个值,则建立一个长度为I的数组,保存每次要输出的值 int[] arr = new int[I]; // 设置第一次要输出的值 setFirstValue(arr, I); // 按进位规则依次输出值,直到结束 output(arr, N, I); }

private static int[] getNAndI() { int N = 0; int I = 0; boolean con = true; // 读入N和I的值,当有异常时,重新要求输入 while (con) { try { // 读入N System.out.print("请输入N:"); BufferedReader bReader = new BufferedReader( new InputStreamReader(System.in)); N = Integer.parseInt(bReader.readLine()); System.out.print("请输入I:"); bReader = new BufferedReader(new InputStreamReader(System.in)); I = Integer.parseInt(bReader.readLine()); // N和I必须都大于0,且I要不能超过N if (I <= N && I > 0) { con = false; } else { System.out.println("错误:N和I值不满足条件!"); } } catch (Exception e) { // 一般是输入的数字不正常时出错,如输入的是字符 System.out.println(e); } } return new int[] { N, I }; }

private static void setFirstValue(int[] arr, int I) { // 给输出值赋初始值,例如5个里面取3个,第一次要输出的就是{1,2,3} for (int i = 0; i < I; i++) { arr[i] = i + 1; } }

private static void output(int[] arr, int N, int I) { // 当第一位值为N-I+2的时候结束,如N为5,I为3,则最后一次输出的是{3,4,5},第一位是进位为4的时候不符合条件,结束 while (arr[0] != N - I + 2) { System.out.print("{"); for (int i = 0; i < I; i++) { // 除了第一位输出,其他的都要加"," if (i != 0) { System.out.print(","); } System.out.print(arr[i]); } System.out.print("}"); System.out.println(); // 输出后,执行循环,一直到不能输出为止10 doRun(arr, N, I); } }

private static void doRun(int[] arr, int N, int I) { int length = arr.length; int k = 0; // 是否需要进位标志,true表示不用进位 boolean flag = true; for (int i = 0; i < I; i++) { // 如果最后一位需要进位,判断其前面对应位是否也需要进位 if (arr[length - 1 - i] == N - i) { // 递归判断前面位是否需要进位 k = check(arr, length, N, i); arr[length - 2 - k]++; // 在该位加1后,右边的位均按照此位依次加1 for (int j = 0; j <= k; j++) { arr[length - k + j - 1] = arr[length - 2 - k] + j + 1; } // 是否需要进位设置成false,表示有进位 flag = false; break; } } // 如果每一位都不用进位,则直接在最后一位加1 if (flag) { arr[length - 1]++; } }

private static int check(int[] arr, int length, int N, int i) { // 如果该位需要进位,判断其左边一位是否继续要进位 if (arr[length - 1 - i] == N - i && length - 1 - i > 0) { return check(arr, length, N, i + 1); } return i - 1; } }

public static void main(String args[]){ int n = 0; Scanner sc = new Scanner(System.in); System.out.print("请输入注数:"); n = sc.nextInt(); Set<Integer> resultSet = new HashSet<Integer>(); for(int i=0; i<n; i++){ resultSet.clear(); while(resultSet.size() < 7){ resultSet.add((new Random()).nextInt(35)+1); } System.out.println("第"+(i+1)+"注:"+resultSet.toString()); } }
自己要不会写,写给你了,你也不懂。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
有个女孩子就在你面前你却不敢追她怎么办?
结婚三个月,你的她(他)出了车祸失忆了还毁
重庆哪里可以学咖啡师
专科毕业生就业前景如何?
从宁波到成都乘火车几个小时?
跪求各位大哥大姐给我找几个日本古代漆器图片
今年江苏省会计从业资格考试 财经法规的重点
纯净水与矿泉水有什么区别呢?
怎么复制QQ空间?
怎麽凌晨过后都没什麽好看的电视?
关于跑步的。
有什么好的减肥中成药么?
圣诞节该怎样过?
QQ风格大框怎么添加到自己空间?
我的k660i的文件出现重复的,删又删不掉怎么
推荐资讯
胚胎工程利弊是什么?
同时被三个男生喜欢上 ,我该怎么办?
最近闹书荒! 求一本三国小说 最好是网游的
如何设置共同共享音乐
《意难忘》系列共有哪些歌曲?哪些比较好听?
宿迁影楼**信息
求高人翻译此句
咳嗽老是不好
怎么长身高
superjunior的成员资料与superjunior-M的区别
这首儿歌叫什么名字??
我想拉直头发吖!可是却分游离子、负离子那些
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?