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] + " "); } } }