题目:创建一个8元素的数组并输出,元素在1-10之间随机生成,且不相同;

题目表面上看似简单,实际却有一个最大的难点-----如何保证元素不重复;

因为元素是随机生成的且逐一赋值的,所以就可以在这一阶段做一些比较和限制,也就是每生成一个随机数就和前面已经赋值的元素逐一的做比较,如果都不相等,则输出这个数。如果存在重复则重新生成一个随机数,再重复上个步骤。

步骤:

1.先创建一个动态数组;

2.再利用(int)(Math.random()*9+1)产生1-10之间的随机数,以循环遍历的方式赋值给数组中的每个元素;

3.判断是否与已经存在元素相同;

4.输出结果;

方法一break跳出型

容易踩的坑:最后数组的输出要单独再遍历,不能放在第一个for循环的内部,因为一旦arr[i]==arr[j] 跳出循环后会直接将这个重复值也输出。

错误代码

public class SixRandom {public static void main(String[] args) {int[]arr=new int[8];//声明并初始化for(int i=0;i<arr.length;i++){arr[i]=(int)(Math.random()*9+1);//赋值一个随机数for(int j=0;j<i;j++){if(arr[i]==arr[j]){  //判断是否相等i--;  //相等则退一步break;}}System.out.print(arr[k]+" ");//错误}}}

正确代码

public class SixRandom {public static void main(String[] args) {int[]arr=new int[8];//声明并初始化for(int i=0;i<arr.length;i++){arr[i]=(int)(Math.random()*9+1);//赋值一个随机数for(int j=0;j<i;j++){if(arr[i]==arr[j]){  //判断是否相等i--;  //相等则退一步break;}}}//最后数组的输出要单独再遍历,for(int k=0;k<arr.length;k++){System.out.print(arr[k]+" ");}}}

方法二----continue重置型

容易踩的坑:用双for循环,在内部对循环的参数重置,实际上for循环的参数在循环体内部更改后,并不会影响到for循环的执行次数,但是while循环的参数可以

错误代码:

int[] arr1=new int[8];for(int k=0;k<arr1.length;k++){if(k==0){arr1[k]=(int)(Math.random()*8+1);System.out.print(arr1[k]+" ");  }else{arr1[k]=(int)(Math.random()*8+1);}int count=0;for(int k1=0;k1<k;k1++){if(arr1[k]!=arr1[k1]){count++;}else{k1=0;//重置 无效count++;//重置 arr1[k]=(int)(Math.random()*8+1);//重置 continue;//重置}if(count==k){System.out.print(arr1[k]+" ");  }}  }        

正确代码:

int[] arr1=new int[8];//初始化for(int k=0;k<arr1.length;k++){   //遍历数组if(k==0){ //略过首元素arr1[k]=(int)(Math.random()*8+1);//产生随机数System.out.print(arr1[k]+" "); }else{arr1[k]=(int)(Math.random()*8+1);}int k1=0;  while(k1<k){  //遍历新生成元素之前的元素if(arr1[k]!=arr1[k1]){  //比较k1++;  //条件变量,同时统计不同结果的次数}else{k1=0;//重置arr1[k]=(int)(Math.random()*8+1);//重置continue;//重置}
//通过不相同的次数与当前元素的下标做比较,下标k之前的元素个数是k-1,在不重复的情况下k1的次数只能是k-1if(k1==k){ System.out.print(arr1[k]+" ");    }}  }

java数组练习题---创建元素不重复的数组相关推荐

  1. 【回溯算法】【打卡第179道】:leetCode :39. 组合总和(数组中的元素可以重复使用)

    1.题目描述 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有不同组合 ,并以列表形式 ...

  2. c#中如何删除数组中的元素_C中的数组

    c#中如何删除数组中的元素 为什么我们需要数组? (Why do we need Arrays?) Consider the problem of storing 10 integers. The n ...

  3. 【每日一题】把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5]

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素.例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转, ...

  4. 【JS实战】移除数组中的元素(返回新的数组)

    移除数组中的元素(返回新的数组) 方法一:for循环+push function remove(arr, item) {let newArr = [];for(let i = 0; i < ar ...

  5. js移除数组中的元素(返回新数组)

    移除数组中的元素(返回新数组) 移除数组 arr 中的所有值与 item 相等的元素.不要直接修改数组 arr,结果返回新的数组. 输入:[1,2,3,4,2] ,2 输出:[1,3,4] 第一种解决 ...

  6. 利用for循环把遍历数组中的元素依次获取出来 数组笔记及基本知识点

    利用for循环把遍历数组中的元素依次获取出来 数组索引号从0开始 所以i必须从0开始  i<6 <script>var arr = ['blue', 2, true, 4, 5, 6 ...

  7. java数组中包含元素_Java中声明数组时,包括数组的名字、数组中包含的元素的 。 (5.0分)_学小易找答案...

    [简答题]3,单冲压片机的安装程序? [判断题]continue语句只用于循环语句中,它起到终止本次循环,返回到循环开始处的作用. (5.0分) [判断题]default在switch选择结构中是必需 ...

  8. java返回特定下标元素_java基础--输出数组中指定元素的下标

    java基础--输出数组中指定元素的下标 java基础--输出数组中指定元素的下标 package com.lcn.day05; public class ArrayDemo8 { /** * 输出数 ...

  9. java数组包含某个元素_java中判断数组是否包含某元素的方法

    有两种方法可以判断数组是否包含元素: 方法1, 将数组转换为list,然后使用list的contains方法来判断:Arrays.asList(...).contains(...) java.lang ...

最新文章

  1. Siri:开启智能语音营销时代
  2. 世界上第一台电子计算机电子逻辑原件,1、(ID10542分)世界上的第一台电子计算机使用的逻辑元件.doc...
  3. SAP CRM WebClient UI的cancel按钮处理
  4. python查看CNN训练模型参数
  5. 云计算底层技术--linux上的虚拟网络设备
  6. Theano 中文文档 0.9 - 1. 欢迎
  7. Java 使用开源类库 Tesseract 实现图片文字识别
  8. ios高效开发-正确的使用枚举(Enum)
  9. java switch原则_Java switch case语句
  10. Fefora17联想笔记本安装无线网卡
  11. JS的浅拷贝和深拷贝
  12. mysql之家_MySQL
  13. matlab生成摆线齿廓线,基于Matlab的摆线针轮齿廓修形参数的求解
  14. 翻译文章“AST 模块:用 Python 修改 Python 代码”---!!注意ironpathyon未实现此功能...
  15. bat for循环_bat教程[285] FOR/F options选项中usebackq的用法
  16. WAMP和PHPStorm安装(Win10)
  17. 【Ware】免费的格式转换软件推荐
  18. 如何使用CASIA-OLHWDB联机手写汉字数据集?(解答篇)
  19. 淘宝子账号最新设置教程-2022年1月5日
  20. python爬虫(14)获取淘宝MM个人信息及照片(上)

热门文章

  1. C/C++ 常用缩写词
  2. android jpush 极光推送
  3. python 将带数字的拼音转换为带声调的拼音
  4. rgb sw 线主板接口在哪_RGB实用兼具:火鸟 黎明至尊 ARGB机箱 上机体验
  5. html打字机,打字机动画.html
  6. Nginx 4层和7层
  7. 微盘java 反射原理图_Java 从入门到精通-反射机制
  8. 中南大学计算机学院刘晴,杨迎泽 - 中南大学 - 计算机学院
  9. 计算机打音乐有点甜,有点甜 MIDI File Download :: MidiShow
  10. Python移动自动化测试面试(一)