数组练习题
1.将数组{4,0,5,8,2,0,6,8,3}中的0去掉后返回一个新数组
public class Task {
public static void main(String[] args) {
//将数组{4,0,5,8,2,0,6,8,3}中的0去掉后返回一个新数组。
int[] arr ={4,0,5,8,2,0,6,8,3};//定义一个原来的数组
int[] arr1 ={};//定义一个新的数组
//循环遍历,判断如果为不为0,则利用数组的赋值 Arrays.copyOf();方法进行数组的复制
for(int i=0; i<arr.length; i++)
{
if(arr[i]!=0)
{
arr1=Arrays.copyOf(arr1, arr1.length+1);//数组复制
arr1[arr1.length-1]=arr[i];
}
}
//增强for循环
for(int x : arr1)
{
System.out.println(x+"\t");
}
/*for(int j=0; j<arr1.length;j++)
{
System.out.println(arr1[j]+"\t");
}*/
System.out.println();
}
}
2.现在给出两个数组,数组A:“1,7,9,11,13,15,17,19;
数组B:“2,4,6,8,10”两个数组合并为数组C,按升序排列
public class Task2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*现在给出两个数组,数组A:“1,7,9,11,13,15,17,19;
数组B:“2,4,6,8,10”两个数组合并为数组C,按升序排列*/
//定义三个数组
int[] a={1,7,9,1,13,15,17,19};
int[] b={2,4,6,8,10};
int[] c=new int[a.length+b.length];
for(int i=0;i<a.length; i++)//代表轮数,选出几个最大的。数组长度-1
{
c[i]=a[i];//数组a存到c中
}
for(int i=0; i<b.length; i++)
{
c[i+a.length]=b[i];//数组b存到c中
}
for(int x: c )//增强for循环
{
//冒泡排序
for(int i=0;i<c.length-1; i++)//代表轮数,选出几个最大的。数组长度-1
{
for(int j =0; j<c.length-i-1; j++ )//比较相邻的元素,大的往后,比较次数=长度-1-i
{
//比较
if(c[j]>c[j+1])
{
int temp =c[j];
c[j]=c[j+1];
c[j+1]=temp;
}
}
}
System.out.println(x);
}
}
}
3.输出1 1 2 3 5 8 13……这样的Fibonacci数列,
// 输出该数列的前20个数字
public class Task3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 输出1 1 2 3 5 8 13……这样的Fibonacci数列,
// 输出该数列的前20个数字
int[] a=new int[20];//定义一个元素20的数组
int i =0;
//前两个数都是1,之后都是前两个数之和为下一个数
for(i=0;i<20;i++)
{
//判断数组前俩元素都为1
if(i==0 || i==1)
{
a[i]=1;
}else//其他元素
{
a[i]=a[i-1]+a[i-2];
}
System.out.print(a[i]+",");
}
}
}
4.歌手打分:在歌唱比赛中,共有10位评委进行打分,
在计算歌手得分时,去掉一个最高分,去掉一个最低分,
然后剩余的8位评委的分数进行平均,就是该选手的最终得分。
输入每个评委的评分,求某选手的得分。
public class Task4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
/*歌手打分:在歌唱比赛中,共有10位评委进行打分,
在计算歌手得分时,去掉一个最高分,去掉一个最低分,
然后剩余的8位评委的分数进行平均,就是该选手的最终得分。
输入每个评委的评分,求某选手的得分。*/
int[] arr=new int[10];//定义数组
//变量
int max=arr[0];
int min=arr[0];
int sum=0;
int i;
float avg;
//创建Scanner对象
Scanner scanner=new Scanner(System.in);
System.out.println("输入十位评委的分数");
for( i=0;i<10; i++)
{
arr[i]= scanner.nextInt();//输出10数
sum+=arr[i];//和
/*if(arr[i]>max)
{
max=arr[i];
}
if(arr[i]<=min)
{
min=arr[i];
}*/
//排序
Arrays.sort(arr);
//最大值
max=arr[arr.length-1];
//
min=arr[0];
}
//平均分
avg=(sum-min-max)/8.0f;
/*System.out.println("歌手的最大值:"+max);
System.out.println("歌手的最小值:"+min);*/
System.out.println("歌手的平均值:"+avg);
}
}
5.判断一个数组{1,2,3,1,0}中是否存在相同的元素,
// 如果存在相同的元素则输出“重复”,否则输出“不重复”
public class Task5 {
/*假设数组中的元素不重复,两两比较数组中的元素,
如果有一组元素相同,则数组中存储重复,结束循环。
把比较的结果存储在一个标志变量里,最后判断标志变量的值即可。*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 判断一个数组{1,2,3,1,0}中是否存在相同的元素,
// 如果存在相同的元素则输出“重复”,否则输出“不重复”
//定义一个数组
int[] a={1,2,3,1,0}; //定义数组
//定义变量
int i;
int j;
for(i=0; i<a.length-1; i++)
{
for(j=i+1; j<a.length; j++)
{
//如果有一组元素相同,则数组中存储重复,结束循环。
if(a[i]==a[j])
{
System.out.println("重复");
}else
{
System.out.println("不重复");
}
}
}
}
}
6.将十进制整数35转换为二进制数。(选作)
public class Task6 {
/*将除二取余得到的第一个数字存储在数组中第一个元素,
第二次得到的余数存储在数组中第二个元素,依次类推,
最后反向输出获得的数字即可。*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// 将十进制整数35转换为二进制数。(选作)
int x=35;//把35赋值给x
int a[]=new int[32];//定义一个数组 / 二进制是32位
for(int i=0;i<32;i++)
{
a[i]=x%2;//存储元素
x/=2;
}
for(int i=a.length-1;i>=0;i--)//每存储一个数 减1
System.out.print(a[i]);
}
}