有一个问题就是从第二个while那里就不执行了,而且dos界面会卡主,不知道为什么?(/************到***********/可以取消注释带上运行没问题)
import java.util.Scanner;
import java.util.Random;
public class RandomReorder{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
Random stochastic = new Random();
System.out.println("How many random that you want? Enter the number: ");
int many=scan.nextInt();
System.out.println("What limit do you want? Enter the limit: ");
System.out.println("Attention! The number of random array must less than than limit");
int limit=scan.nextInt();
int[] array =new int[many];
int A=0;
int a=0;
while(a<many){
A = stochastic.nextInt(limit);
for(int b=0;b<many;b++){
if(array[b]==A){
break;
}
else if(b==a){
array[a] = A;
a++;
break;
}
}
}
System.out.println("\nThe array:");
int count=0;
for(int arr:array){
System.out.print(arr + "\t");
count++;
if(count%10==0){
System.out.println();
}
}
///下面随机抽取数组中的K个数
/**************************************************
int K=(int)stochastic.nextInt(many);//在总数是many个中找到随机K不超过many
int[] arrayK = new int[K];//arrayK数组长度就为K个
//{//
System.out.println("\n" + "Random K(With repeat):\n " + K );
///////////////////////////////以下是arrayK带重复的
int[] arrayKtemp = new int[K];
for(int i=0;i<K;i++){
arrayKtemp[i] = (int)stochastic.nextInt(K);
arrayK[i] = array[(arrayKtemp[i])];
}
System.out.println("\nRandom K array:(with repeat) ");//每十个分行
for(int i=0;i<K;i++){
System.out.print(arrayK[i] + "\t");
count++;
if(count%10==0){
System.out.println();
}
}
System.out.println("\nK array reorder:\n ");
int Klength=arrayK.length;
int total=Klength-1;
for(int i=0;i<Klength;i++){
for(int j=0;j<Klength;j++){
if(arrayK[i]<arrayK[j]){
int temp = arrayK[j];
arrayK[j] = arrayK[i];
arrayK[i] = temp;
}
}
}
for(int arr:arrayK)
System.out.print(arr + "\t");
//}//
******************************/
//////////////////////////以上是arrayK带重复的
int K2=(int)stochastic.nextInt(many);
System.out.println("\n" + "Random K2(without repeat):" + K2);
int[] arrayK2 = new int[K2];
int[] arrayKtemp2 = new int[K2];
int B=0;
int b=0;
//{
while(b<K2){
B = stochastic.nextInt(K2);
for(int s=0;s<K2;s++){
arrayKtemp2[s]=B;
arrayK2[s] = array[(arrayKtemp2[s])];
}
for(int c=0;c<K2;c++){
if(arrayK2[c]==B){
break;
}
else if(c==a){
arrayK2[b] = B;
b++;
break;
}
}
}
System.out.println("\nThe arrayK2(without repeat):\n");
int count2=0;
for(int arr:arrayK2){
System.out.print(arr + "\t");
count2++;
if(count%10==0){
System.out.println();
}
}
int Klength2=arrayK2.length;
System.out.println("\nK array reorder(without repeat):\n ");
for(int i=0;i<Klength2;i++){
for(int j=0;j<Klength2;j++){
if(arrayK2[i]<arrayK2[j]){
int temp = arrayK2[j];
arrayK2[j] = arrayK2[i];
arrayK2[i] = temp;
}
}
}
for(int arr2:arrayK2)
System.out.print(arr2 + "\t");
//}
///////////////////////////
/************************
System.out.println("\nK array reorder:\n ");
int Klength=arrayK.length;
int total=Klength-1;
for(int i=0;i<Klength;i++){
for(int j=0;j<Klength;j++){
if(arrayK[i]<arrayK[j]){
int temp = arrayK[j];
arrayK[j] = arrayK[i];
arrayK[i] = temp;
}
}
}
for(int arr:arrayK)
System.out.print(arr + "\t");
*******************************/
}
}