黑马程序员济南中心JavaEE基础阶段必会案例NO.11

黑马程序员济南中心JavaEE基础阶段必会案例NO.11

黑马程序员课程内容丰富多样,每个知识点我们都设计有新奇的案例让大家练习。黑马程序员训练营的课程也是案例驱动教学,每天都会进行大量的代码练习。今天我们就来一起做一个基础阶段第8天的一个小案例。
案例要求:随机生成5个整数存入集合中,要求不能有重复数字,将这5个数字写入arr.txt中

     案例分析:我们要用到的知识点:遍历集合,IO流,随机数

     分析完一个大概以后我们先思考一个问题:如何保证集合中没有重复的数字?
     用我们今天学习的知识来做就不能使用set集合了,不然的话就很简单了。因为set集合有自动去重的功能,保证元素的唯一性。
     但是我们不用set集合也是可以保证没有重复数字的。每次添加之前先遍历集合看有没有这个数。

ArrayList list = new ArrayList<>();[/align]
Random r = new Random();
for (int i = 0; i < 5; i++) {
int n = r.nextInt(10);//不断的产生随机数
list.add(n);
System.out.println(n);
}

    第一步我们先生成了5个随机数添加到集合里。 

但是我们运行看结果发现,有重复的数字添加进去了,接下来我们就要去重了,如果发现重复就再产生一个随机数,但是我们不知道会有几次这样的情况所以我们只能不断的产生随机数,进行判断。也就是要有个死循环。
public static void main(String[] args) {
ArrayList list = new ArrayList<>();
Random r = new Random();
while (true) {
int i = r.nextInt(10);// 不断的产生随机数
boolean b = true;
System.out.println(i);
for (int j = 0; j < list.size(); j++) {// 遍历集合中已经有的整数,判断新的数是否已经存在
if (list.get(j) == i) {
System.out.print(i + “已经存在” + “\r\n”);
b = false;
}
}
if (b) {
list.add(i);
}
if (list.size() == 5) {
break;
}
}
}

好的,现在我们已经能保证里面没有重复的了,接下来就是把数据写入文件就ok啦!
public static void main(String[] args) throws IOException {
ArrayList list = new ArrayList<>();
Random r = new Random();
while(true){
int i = r.nextInt(10);//不断的产生随机数
boolean b = true;
System.out.println(i);
for (int j = 0; j < list.size(); j++) {//遍历集合中已经有的整数,判断新的数是否已经存在
if(list.get(j)==i){
System.out.print(i + “已经存在”+”\r\n”);
b = false;
}
}
if(b){
list.add(i);
}
if(list.size()==5){
break;
}
}
FileWriter fw = new FileWriter(“arr.txt”);
for (int i = 0; i < list.size(); i++) {
fw.write(list.get(i)+” “);
}
fw.close();
System.out.println(“end”);
}

ok,大功告成!!

 这个案例作为一个经典案例用来复习IO流集合的相关知识非常不错,很新颖。其实,每个案例都有很多种写法,不同的人可能有不同的思路。黑马程序员训练营也是非常鼓励大家开动脑筋积极思考的。

你可能感兴趣的:(黑马程序员济南中心JavaEE基础阶段必会案例NO.11)