package com.a0719;
import java.util.Random;
import java.util.Vector;public class Sort2 {
public static void main(String[] args){
Vector v =new Vector();
Random a=new Random();
//先加入一个随机数k
int k=a.nextInt(15);
v.add(k);
for(int j=1;j<10;j++){
boolean c=true;
while(c){ int w=a.nextInt(15);
boolean b=true;
//用h和vector中其他元素比较,如果都不同,输出false
while(b){
int h=w;
//如果h与其后一个元素相等,直接退出循环,进入外层的循环;
if(h==(int)((Integer)v.get(j-1))){
b=false;
}
if(h!=(int)((Integer)v.get(j-1)))
j=j-1;//如果h不等于其后的一个元素,将下标后移一位继续循环
//如果下标等于0退出循环
if(j==0)
b=false;
}
if(j==0)
v.add(w);
c=false;}
}for(int j=0;j<10;j++){
System.out.print(v.get(j)+" ");}
}
}
// 这是一个从0到15中抽取10个不能重复的随机数!知道有一个contains方法可用!但是我这个代码问题出在哪呢?谢谢各位大哥了!算法很垃圾我知道,但是应该可以运行把!但是我运行不了!
import java.util.Random;
import java.util.Vector;public class Sort2 {
public static void main(String[] args){
Vector v =new Vector();
Random a=new Random();
//先加入一个随机数k
int k=a.nextInt(15);
v.add(k);
for(int j=1;j<10;j++){
boolean c=true;
while(c){ int w=a.nextInt(15);
boolean b=true;
//用h和vector中其他元素比较,如果都不同,输出false
while(b){
int h=w;
//如果h与其后一个元素相等,直接退出循环,进入外层的循环;
if(h==(int)((Integer)v.get(j-1))){
b=false;
}
if(h!=(int)((Integer)v.get(j-1)))
j=j-1;//如果h不等于其后的一个元素,将下标后移一位继续循环
//如果下标等于0退出循环
if(j==0)
b=false;
}
if(j==0)
v.add(w);
c=false;}
}for(int j=0;j<10;j++){
System.out.print(v.get(j)+" ");}
}
}
// 这是一个从0到15中抽取10个不能重复的随机数!知道有一个contains方法可用!但是我这个代码问题出在哪呢?谢谢各位大哥了!算法很垃圾我知道,但是应该可以运行把!但是我运行不了!
楼主【haowxh】截止到2008-07-22 11:17:52的历史汇总数据(不包括此帖):
发帖的总数量:1 发帖的总分数:0 每贴平均分数:0
回帖的总数量:2 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:1 未结的总分数:0
结贴的百分比:0.00 % 结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
0
1
0
0
0
0
0
0
0
0
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0这个就是你的变量j的变化过程。
可以看出它根本没有来得及接近10,就不停在循环中循环,所以你根本没办法停止你的for循环。
而且,对于工程来讲,把循环变量放在循环体中进行变化是for循环非常忌讳的。
否则遍历结束之后,j变为0,然后在for那里j++,变为1,
然后遍历从1-〉0,如此反复,不会退出循环,而且生成的数字也不对
if(h==(int)((Integer)v.get(j-1))){
b=false;
}
if(h!=(int)((Integer)v.get(j-1)))
j=j-1;//如果h不等于其后的一个元素,将下标后移一位继续循环
//如果下标等于0退出循环 if(j==0)
b=false;
}
if(j==0)
这些j都用int k=j 代替
import java.util.Random;
import java.util.Vector;public class Sort2 {
public static void main(String[] args) {
Vector v = new Vector();
Random a = new Random();
// 先加入一个随机数k
int k = a.nextInt(15);
v.add(k);
for (int j = 1; j < 10; j++) {
boolean c = true;
while (c) {
int w = a.nextInt(15);
boolean b = true;
// 用h和vector中其他元素比较,如果都不同,输出false
int i = j;
while (b) {
int h = w;
// 如果h与其后一个元素相等,直接退出循环,进入外层的循环;
if (h == (int) ((Integer) v.get(i-1))) {
b = false;
}
if (h != (int) ((Integer) v.get(i-1)))
i = i - 1;// 如果h不等于其后的一个元素,将下标后移一位继续循环
// 如果下标等于0退出循环 if (i == 0)
break;
}
if (j == 0)
v.add(w);
else if (b) {
v.add(w);
} else {
j--;
}
c = false;
}
}
for (int j = 0; j < 10; j++) {
System.out.print(v.get(j) + " ");
}
}
}
import java.util.Random;
import java.util.Vector;public class Sort2 {
public static void main(String[] args) {
Vector v = new Vector();
Random a = new Random();
// 先加入一个随机数k
int k = a.nextInt(15);
v.add(k);
for (int j = 1; j < 10; j++) {
boolean c = true;
while (c) {
int w = a.nextInt(15);
boolean b = true;
// 用h和vector中其他元素比较,如果都不同,输出false
int i = j;
while (b) {
int h = w;
// 如果h与其后一个元素相等,直接退出循环,进入外层的循环;
if (h == (int) ((Integer) v.get(i-1))) {
b = false;
}
if (h != (int) ((Integer) v.get(i-1)))
i = i - 1;// 如果h不等于其后的一个元素,将下标后移一位继续循环
// 如果下标等于0退出循环 if (i == 0)
break;
}
if (j == 0)
v.add(w);
else if (b) {
v.add(w);
} else {
j--;
}
c = false;
}
}
for (int j = 0; j < 10; j++) {
System.out.print(v.get(j) + " ");
}
}
}
import java.util.Random;
public class randomNumber { /**
* @param args
*/
public static void main(String[] args){
// TODO Auto-generated method stub
int num=29;//29个数,可以更改
int choice=7;//选7个数,也可以改
int []a=new int[choice];//存放所选的7个数
int []b=new int[num];
int pos=0;
int n;
//产生0~29之间的数,作为要选择的随即数的下标
Random ran=new Random();
//初始化那29个数,这里用1~29
for (int i = 0; i < b.length; i++) {
b[i]=i+1;
}
while(pos<choice){
//产生随即数,作为从29个数中要选的数的下标
n=ran.nextInt(num);
if(n>=num)
n=n+1;
a[pos]=b[n];
num--;
//将所选的数与最 后一个数交换,这样所选过的数将不会再次被选上
b[n]=b[num];
pos++;
}
for(int i=0;i<a.length;i++){
System.out.print(" "+a[i]);
} }}
//在1~29中随机选7个不周的数字
import java.util.Random;
public class randomNumber { /**
* @param args
*/
public static void main(String[] args){
// TODO Auto-generated method stub
int num=29;//29个数,可以更改
int choice=7;//选7个数,也可以改
int []a=new int[choice];//存放所选的7个数
int []b=new int[num];
int pos=0;
int n;
//产生0~29之间的数,作为要选择的随即数的下标
Random ran=new Random();
//初始化那29个数,这里用1~29
for (int i = 0; i < b.length; i++) {
b[i]=i+1;
}
while(pos<choice){
//产生随即数,作为从29个数中要选的数的下标
n=ran.nextInt(num);
if(n>=num)
n=n+1;
a[pos]=b[n];
num--;
//将所选的数与最 后一个数交换,这样所选过的数将不会再次被选上
b[n]=b[num];
pos++;
}
for(int i=0;i<a.length;i++){
System.out.print(" "+a[i]);
} }}
import java.util.Random;
import java.util.Vector;
public class Sort2 {
public static void main(String[] args){
Vector v =new Vector();
Random a=new Random();
for(int j=0;j<10;j++){
while(true){
int h=a.nextInt(15);
int k=0;
for(int i=0;i<j;i++){
if(h==(int)((Integer)v.get(i))){
k++;
break;
}}
if(k==0)
{ v.add(h);
break;}}
System.out.print(v.get(j)+" ");
}
}
}