从入门到放弃的第一周......day.4 em。。。。。。做了一天的题,day.5 数组,又是一个简单又复杂的东东。
数组的概念
数组是一个基础的数据结构,主要存储的是相同数据类型的数据
数组的特点
1,相同数据类型(每个元素占用的空间大小相同)
2,连续存储(定位元素快)
3,一旦分配大小(元素的数量),,不能改变其大小
数组的声明与的元素进行初始化
- String[] names;
- String names[]; //C语言风格,不推荐
- String[] names={"a","b","c"};
- String[] names=new String[3];
分配了内存空间的数组,元素是有默认值的
数字:默认都是0
引用类型:默认是null(空对象)
1,声明一个大小为10 的boolean数组,遍历该数组,输出其中的元素值
public static void main(String[] args) { // TODO Auto-generated method stub char[] x = new char[10]; for (int i = 0; i < x.length; i++) { System.out.print((int)x[i] + " "); } }
数据的使用
遍历数组:
1,结合数组的属性length
for(int i=0;i<array.length;i++){
array[i]
}
这种形式既可以读取元素的值,也可以设置元素的值
2,使用foreach,只可以读取元素的值
int[] nums={1,2,3};
for(int num : nums){
System.out.print(num);
}
课堂任务:
1,从键盘输入整形数组的大小,然后依次输入数组的元素,最后计算其中元素之和
public static void main(String[] args) { // TODO Auto-generated method stub Scanner scanner=new Scanner(System.in); int x=scanner.nextInt(); int a[]=new int[x]; int num=0; for (int i = 0; i < a.length; i++) { a[i]=scanner.nextInt(); num=num+a[i]; } System.out.print(num); }
2,将一个整形数组中的偶数放在另一个数组中
参考思路:
第一步:通过循环计算偶数的数量,并使用其作为第二个数组的大小
第二步:再次循环将偶数依次赋值给第二个数组
public static void main(String[] args) { // TODO Auto-generated method stub int[] s={1,2,3,4,5,6}; int num=0; for(int i=0;i<s.length;i++){ if (s[i]%2==0) {num++; } } int[] x=new int[num]; int z=0; for(int i=0;i<s.length;i++){ if (s[i]%2==0) {x[z]=s[i]; z=z+1; } } for (int i = 0; i < x.length; i++) { System.out.println(x[i]); } }
1,编写程序,将一个数组中的元素倒排过来。例如原数组为1,2,3,4,5;则倒排后数组中的值为5,4,3,2,1。注意是一个数组自身操作
public static void main(String[] args) { // TODO Auto-generated method stub int[] a={1,2,3,4,5}; int x; for(int i=0;i<(a.length)/2;i++ ){ x=a[i]; a[i]=a[a.length-i-1]; a[a.length-i-1]=x; } for(int p=0;p<a.length;p++){ System.out.print(a[p]); } }
2,随机产生1000个1-10的随机数,统计它们出现的次数 (利用Math.random()产生随机数)
public static void main(String[] args) { // TODO Auto-generated method stub int q1=0; int[] s = new int[1000]; for (int i = 0; i < 1000; i++) { s[i] = (int) (Math.random() * 10); } for (int i = 0; i < 1000; i++) { System.out.print(s[i]+" "); } int[] b=new int[10]; int x=0; for(int i=0;i<10;i++){ for(int j=0;j<1000;j++){ if(s[j]==i){ b[i]++; } } } for (int i = 0; i < b.length; i++) { System.out.print("\n"+b[i]); } }
3,判断两个整型数组是否相等(长度及对应元素的值都相等)
{1,2,4,3} {1,2,3,4}
public static void main(String[] args) { // TODO Auto-generated method stub int[] a={1,2,3,4,4}; int[] b={1,2,3,4,5}; int p=1; if(a.length==b.length){ for(int i=0;i<a.length;i++){ if (a[i]==b[i]){ } else{p=0;break;} } } else p=0; if(p==0){ System.out.print("no");} else{System.out.print("yes");} }
4,将一个数组的奇数索引位拷贝到另一个数组中前半部分,偶数位数字拷贝到后半部分
{1,2,3,4,5} {2,4,1,3,5}
5,从键盘依次输入10个正整数,存放在数组中,要求编写代码,将整数按照升序增加到数组中。接着从键盘输入一个整数,从一个已经排序的数组中删除该数,注意保持顺序
1 3 4 5 8 9 10 11 15 20 0
数组的扩容与缩容
6,判断一个数组中是否包含另一个数组
如:{1,2,3,4,5,6} 包含{3,4} 但不包含{3,4,6}
7,找出数组中重复出现的元素
如:{1,2,3,4,2,4,5,6} 得到2,4
8,获取一个整型数组中最大的值
9,计算两个整数数组之和
{1,2,3,4}+{2,3,4,5}={3,5,7,9}
{1,2,3,4}+{2,3,4,5,6}={3,5,7,9,6}
{1,2,3,4,6,7}+{2,3,4,5,6}={3,5,7,9,12,7}
10,产生双色球的数列:红色球随机产生1-33之间的6个不重复的整数,蓝色球随机产生1个1-16之间的整数,编写程序产生产生的7个整数
和上一张一样内容不多,练的多,,,,,😭😭😭😭😭😭😭😭😭😭😭😭