在java编程福利彩票30选7。要求不能重复,从小到大输出,我编的怎么运行不出来,希望高手帮忙指正错误
希望高手把修改后的程序发给我,谢谢publicstaticvoidmain(String[]args){Randomr=newRandom();for(i=0;i<7;i...
希望高手把修改后的程序发给我,谢谢
public static void main(String[] args){
Random r=new Random();
for(i=0;i<7;i++){
a[i]=1+r.nextInt(30);
while(true)
{
panDuan(a[i]);
if(i==j) break;
}
}
Arrays.sort(a);
for(int k=0;k<7;k++){
System.out.print(a[k]+" ");}
}
private static void panDuan(int b) {
for(int j = 0;j<i;j++)
if(a[j]==b) break;
// TODO Auto-generated method stub
}
} 展开
public static void main(String[] args){
Random r=new Random();
for(i=0;i<7;i++){
a[i]=1+r.nextInt(30);
while(true)
{
panDuan(a[i]);
if(i==j) break;
}
}
Arrays.sort(a);
for(int k=0;k<7;k++){
System.out.print(a[k]+" ");}
}
private static void panDuan(int b) {
for(int j = 0;j<i;j++)
if(a[j]==b) break;
// TODO Auto-generated method stub
}
} 展开
4个回答
展开全部
你的程序肯定会编译都报错的
根据你的楼主的思路是这样的
1.生成一个随机数
2.判断如果重复就重新再生成
改造如下
public static void test() {
Random r = new Random();
int[] a = new int[7];
int js = 0;
for (int i = 0; js < 7; i++) {
a[i] = getNo(r);
if (judge(a[i], a)) {
js++;
} else {
i--;
}
}
Arrays.sort(a);
for (int k = 0; k < 7; k++) {
System.out.print(a[k] + " ");
}
}
public static int getNo(Random r) {
return 1 + r.nextInt(30);
}
public static boolean judge(int a, int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (i == 0 || arr[i] == 0) {
break;
}
if (a == arr[i]) {
return false;
}
}
return true;
}
但是这么做太复杂了
其实jdk早就提供了很好的方法
Random random = new Random();
Object[] values = new Object[7];
HashSet<Integer> hashSet = new HashSet<Integer>();
while (hashSet.size() < values.length) {
hashSet.add(random.nextInt(30) + 1);
}
values = hashSet.toArray();
for (int i = 0; i < values.length; i++) {
System.out.print(values[i] + "\t");
}
望采纳, 谢谢
根据你的楼主的思路是这样的
1.生成一个随机数
2.判断如果重复就重新再生成
改造如下
public static void test() {
Random r = new Random();
int[] a = new int[7];
int js = 0;
for (int i = 0; js < 7; i++) {
a[i] = getNo(r);
if (judge(a[i], a)) {
js++;
} else {
i--;
}
}
Arrays.sort(a);
for (int k = 0; k < 7; k++) {
System.out.print(a[k] + " ");
}
}
public static int getNo(Random r) {
return 1 + r.nextInt(30);
}
public static boolean judge(int a, int[] arr) {
for (int i = 0; i < arr.length; i++) {
if (i == 0 || arr[i] == 0) {
break;
}
if (a == arr[i]) {
return false;
}
}
return true;
}
但是这么做太复杂了
其实jdk早就提供了很好的方法
Random random = new Random();
Object[] values = new Object[7];
HashSet<Integer> hashSet = new HashSet<Integer>();
while (hashSet.size() < values.length) {
hashSet.add(random.nextInt(30) + 1);
}
values = hashSet.toArray();
for (int i = 0; i < values.length; i++) {
System.out.print(values[i] + "\t");
}
望采纳, 谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嘿嘿,彩迷啊,同是
下面的代码就是了,你再整理下,看是否能达到你的效果
int i;
int j = 0;
int RanCheckNum = 0;
int Arr35[7];
bool Flg35[35];
CString str;
for (i = 0; i < 35; i++) {
Flg35[i] = false;
}
srand( (unsigned)time( NULL ) );
for( i = 0; ;i++ ){
RanCheckNum = rand() % 36;
if ((RanCheckNum != 0) && (!Flg35[RanCheckNum - 1])){
Arr35[j] = RanCheckNum;
Flg35[RanCheckNum - 1] = true;
j += 1;
if (j == 7) {
break;
}
}
}
for (i = 0; i < 7; i++) {
for(j = 6; j > i; j--)
if (Arr35[j] < Arr35[j-1]){
int tmpNum;
tmpNum = Arr35[j];
Arr35[j] = Arr35[j-1];
Arr35[j-1] = tmpNum;
}
}
下面的代码就是了,你再整理下,看是否能达到你的效果
int i;
int j = 0;
int RanCheckNum = 0;
int Arr35[7];
bool Flg35[35];
CString str;
for (i = 0; i < 35; i++) {
Flg35[i] = false;
}
srand( (unsigned)time( NULL ) );
for( i = 0; ;i++ ){
RanCheckNum = rand() % 36;
if ((RanCheckNum != 0) && (!Flg35[RanCheckNum - 1])){
Arr35[j] = RanCheckNum;
Flg35[RanCheckNum - 1] = true;
j += 1;
if (j == 7) {
break;
}
}
}
for (i = 0; i < 7; i++) {
for(j = 6; j > i; j--)
if (Arr35[j] < Arr35[j-1]){
int tmpNum;
tmpNum = Arr35[j];
Arr35[j] = Arr35[j-1];
Arr35[j-1] = tmpNum;
}
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("file1.txt"));
String str;
int count=0;
double max=0;
double min=100;
double sum=0;
double avg;
while((str=br.readLine().trim())!=null){
count++;
double d=Double.parseDouble(str.split(" ")[1]);
if(max<=d){
max=d;
}
if(min>=d){
min=d;
}
sum=sum+d;
}
avg=sum/count;
PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File("file2.txt"))));
pw.println("最高分:"+max+"\n"+"最低分:"+min+"\n"+"平均分:"+avg);
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
file1.txt中的数据是以姓名+空格+成绩的形式存储的
try {
BufferedReader br = new BufferedReader(new FileReader("file1.txt"));
String str;
int count=0;
double max=0;
double min=100;
double sum=0;
double avg;
while((str=br.readLine().trim())!=null){
count++;
double d=Double.parseDouble(str.split(" ")[1]);
if(max<=d){
max=d;
}
if(min>=d){
min=d;
}
sum=sum+d;
}
avg=sum/count;
PrintWriter pw=new PrintWriter(new OutputStreamWriter(new FileOutputStream(new File("file2.txt"))));
pw.println("最高分:"+max+"\n"+"最低分:"+min+"\n"+"平均分:"+avg);
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
file1.txt中的数据是以姓名+空格+成绩的形式存储的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这.既然是随机的.中的几率就小啊.这样做?有神马意思?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询