Javase—数组习题高阶
来源:互联网 发布:工厂网络需求分析报告 编辑:程序博客网 时间:2024/05/29 03:59
说明:下列代码中的Cal是一个封装类,利用方法对数组进行各种操作:Cal代码
/** * 1.判断一个数组里是否有重复的数 */package com.arrayAdd;import java.util.*;public class Text1 {public static void main(String[] args) {int n=0;//判断数组里是否有重复的数;//构造一个含有10个随机整数的数组int[] a=new int[10];Random r=new Random();for(int i=0;i<a.length;i++) {a[i]=r.nextInt(10);}System.out.println(Arrays.toString(a));//判断数组里是否有重复的数for(int i=0;i<a.length-1;i++) {for(int j=i+1;j<a.length;j++) {if(a[i]==a[j]) {n++;}}}if(n!=0) {System.out.println("该数组里有重复的数。");}else {System.out.println("该数组里没有重复的数。");}}}
/** * 2.判断数组是否是对称数组 */package com.arrayAdd;import java.util.*;public class Text2 {@SuppressWarnings("resource")public static void main(String[] args) {int n=0;//用n来判断是否对称//创建一个数组,从键盘输入所有元素的值int m=5;int[] a=new int[m];Scanner s=new Scanner(System.in);System.out.println("请输入数组的"+m+"个元素值:");for(int i=0;i<a.length;i++) {a[i]=s.nextInt();}System.out.println(Arrays.toString(a));//判断数组是否对称for(int i=0;i<a.length/2;i++) {if(a[i]==a[a.length-i-1]) {n++;}}System.out.println(n);if(n==a.length/2) {System.out.println("该数组为对称数组。");}else {System.out.println("该数组不是对称数组。");}}}
/** * 3将一个正整数如35转换成二进制码 */package com.arrayAdd;import java.util.*;public class Text3 {public static void main(String[] args) {//判断正整数转换成二进制后的位数int n=0;//正整数的位数int temp;@SuppressWarnings("resource")Scanner s=new Scanner(System.in);int num=s.nextInt();temp=num;while(temp!=0) {temp/=2;n++;}//创建一个n位的数组,存储二进制的每一位int[] a=new int[n];for(int i=a.length-1;i>=0;i--) {a[i]=num%2;num=num/2;}System.out.println(Arrays.toString(a));}}
/** * 4输出一个数组中的第二大值 */package com.arrayAdd;import java.util.*;public class Text4 {public static void main(String[] args) {int max1=0;//存储最大数的数值int max2=0;//存储第二大数的数值int n=0;//存储最大数的下标//定义一个数组包含10个随机数int[] a=new int[10];Random r=new Random();for(int i=0;i<a.length;i++) {a[i]=r.nextInt(10);}System.out.println(Arrays.toString(a));//找出数组中最大的值for(int i=0;i<a.length;i++) {if(max1<a[i]) {max1=a[i];n=i;}}//找出除最大数以外的第二大值for(int i=0;i<a.length;i++) {if(i!=n) {max2=max2>a[i]?max2:a[i];}}System.out.println("该数组中第二大的值为:"+max2);}}
/** * 5.去掉数组里的零形成一个没有零的新数组 */package com.arrayAdd;import java.util.Arrays;import java.util.Random;public class Text5 {public static void main(String[] args) {int n=0;//判断原始数组中含有0的个数//定义两个数组int[] a=new int[10];//原始数组,含有十个0~5的随机数Random r=new Random();for(int i=0;i<a.length;i++) {a[i]=r.nextInt(6);if(a[i]==0) {n++;}}System.out.println(Arrays.toString(a));int[] b=new int[a.length-n];int k=0;//新数组的下标for(int i=0;i<a.length;i++) {if(a[i]!=0) {b[k]=a[i];k++;}}System.out.println(Arrays.toString(b));}}
/** * 6.约瑟夫环的问题(上网查找约瑟夫环的含义) */package com.arrayAdd;import java.util.*;//约瑟夫环:n个人围坐,从k开始报数,每数到m出列,输出每次出列的序号public class Text6 {public static void main(String[] args) {//从键盘输入总人数 n,并创建一个含有n个元素的数组System.out.println("请输入总人数n:");@SuppressWarnings("resource")Scanner s=new Scanner(System.in);int n=s.nextInt();int[] a=new int[n];for(int i=0;i<a.length;i++) {a[i]=i+1;}//从键盘输入报数的起始位置 kSystem.out.println("请输入报数的起始位置k(k<总人数n):");int k=s.nextInt();//从键盘输入数到多少出列System.out.println("请输入数到多少时出列");int m=s.nextInt();//从k开始,每到m输出后删除k=k+m-1;int[] array=a;while(array.length!=0) {if(k<=array.length) {System.out.println(array[k-1]);array=Cal.delete(k, array);//System.out.println(Arrays.toString(array));k=k+m-1;}else {k=k-array.length;}}}}
/** * 7.定义一个数组,用来存储1 1 2 3 5 8 13……这样的Fibonacci数列,存储该数列的前20个数; */package com.arrayAdd;import java.util.Arrays;public class Text7 {public static void main(String[] args) {//定义一个含义20个元素的数组,给前两个赋值int[] a=new int[20];a[0]=1;a[1]=1;//每个元素的值等于他的上一个加上上个for(int i=2;i<a.length;i++) {a[i]=a[i-1]+a[i-2];}System.out.println(Arrays.toString(a));}}
/** * 8.从键盘中接收用户输入的10个数值,输出最大的三个?(两种方法实现) */package com.arrayAdd;import java.util.Arrays;import java.util.Scanner;public class Text8 {public static void main(String[] args) {//创建含有十个元素的数组,从键盘接收用户输入的十个数值int[] a=new int[5];int a1=0;//数组里最大的数int a2=0;//数组里第二大的数inta3=0;//数组里第三大的数@SuppressWarnings("resource")Scanner s=new Scanner(System.in);System.out.println("请输入五个数");for(int i=0;i<a.length;i++) {a[i]=s.nextInt();}System.out.println(Arrays.toString(a));//找出数组里最大的三个数并输出//方法一:将数组从小到大排序,输出后三位元素for(int i=0;i<a.length-1;i++) {for(int j=0;j<a.length-i-1;j++) {if(a[j]>a[j+1]) {a1=a[j];a[j]=a[j+1];a[j+1]=a1;}}}System.out.println(Arrays.toString(a));for(int i=a.length-1;i>a.length-4;i--) {System.out.println(a[i]);}//方法二:分别找出三个最大的数,将值赋给1,2,3for(int i=0;i<a.length;i++) {a1=a1>a[i]?a1:a[i];}for(int i=0;i<a.length;i++) {if(a[i]>=a1) {continue;}a2=a2>a[i]?a2:a[i];}for(int i=0;i<a.length;i++) {if(a[i]>=a2) {continue;}a3=a3>a[i]?a3:a[i];}System.out.println(a1+" "+a2+" "+a3);}}
阅读全文
0 0
- Javase—数组习题高阶
- Javase—数组习题一
- Javase—数组习题二
- Javase—继承习题
- Javase—分支语句习题
- Javase—循环语句习题
- Javase—多态习题
- Javase—String类习题
- Javase—数组
- Javase—OOP基础习题1
- Javase—OOP基础习题2
- Javase—抽象类与接口习题
- JavaSE——Java数组
- javaSE 数组
- javase-数组
- scala习题(12)——高阶函数
- JavaSe基础XX14——习题解答_1
- JavaSe基础XX14——习题解答_2
- SafePredict:使用拒绝机制保证正确率的机器学习元算法
- 用fputs()写入,用fgets()读出一个字符串
- Eclipseservlet程序的编写方式
- ACM程序设计创新实验室成员博客一览表
- ACM创新实验室代表队成功闯入ICPC ACM青岛区域赛现场赛
- Javase—数组习题高阶
- PHP学习笔记 12
- git创建版本库及第一次提交
- redis中用哈希槽实现集群
- 11月26日 Jungle Roads
- [转载]C语言中的奇技淫巧
- LED原理图及S3C2440启动流程
- 《七点三刻》018期 关税下降/刘强东当村长/上海足球获冠/比特币破9000美元…
- BZOJ 4748: [Usaco2016 Dec]Cities and States