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);}}






原创粉丝点击