从入门到放弃的第一周......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个整数
和上一张一样内容不多,练的多,,,,,😭😭😭😭😭😭😭😭😭😭😭😭


浙公网安备 33010602011771号