package com.demo.sw.test;
/**
*
* @author M.J
*
*/
public class NoReaptNum {
public static void main(String[] args) {
generateNoRepeatNums1();
generateNoRepeatNums2();
}
// 自己以前写过的方法
// 1、2两个方法大同小异,只是使用了不同的循环方式,仔细看看代码应该都理解
// 还有一篇是用 Set 写的,由于去某个 XX NB 国际公司面试,没有任何准备,结果很惨,
// 于是乎回家仔细研究,用 Set 在次写完后,忽然发现了,以前写的这个版本,同时也贴出来,告诫自己,同时供大家参考
public static void generateNoRepeatNums1() {
int[] arr = new int[100]; // 定义结果数组
boolean f = true; // 中间变量用来判断是有有重复的值
int x; // 每次随即生成的数
for (int i = 0; i < arr.length; i++) {
x = (int) (Math.random() * 200 + 1);
for (int j = 0; j < i; j++) {
if (arr[j] == x) {
f = false;
break;
} else {
f = true;
}
}
if (f) {
arr[i] = x;
} else {
i--;
}
}
prtArr(arr);
}
public static void generateNoRepeatNums2() {
int[] arr = new int[100];
int temp;
boolean f = true;
int i = 0;
while (i < arr.length) {
temp = (int) (Math.random() * 200 + 1);
for (int j = 0; j < i; j++) {
if (arr[j] == temp) {
f = false;
break;
} else {
f = true;
}
}
if (f) {
arr[i] = temp;
i++;
}
}
prtArr(arr);
}
public static void prtArr(int[] arr){
for (int j = 0; j < arr.length; j++) {
if (j % 10 == 0) {
System.out.println();
}
System.out.print(arr[j] + " ");
}
}
}