说明:下列代码中的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;
}
// 从键盘输入报数的起始位置 k
System.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; //数组里第二大的数
int a3=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,3
for(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);
}
}