从入门到放弃的第一周......day.4 em。。。。。。做了一天的题,day.5 数组,又是一个简单又复杂的东东。

    数组的概念

 


数组是一个基础的数据结构,主要存储的是相同数据类型的数据

数组的特点
1,相同数据类型(每个元素占用的空间大小相同)
2,连续存储(定位元素快)
3,一旦分配大小(元素的数量),,不能改变其大小
数组的声明与的元素进行初始化

 

  1. String[] names;
  2. String names[]; //C语言风格,不推荐
  3. String[] names={"a","b","c"};
  4. 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个整数


和上一张一样内容不多,练的多,,,,,😭😭😭😭😭😭😭😭😭😭😭😭

   

 

                           

 

 

 

 

 

 

 

posted @ 2019-08-09 19:27  suxiao666  阅读(156)  评论(0编辑  收藏  举报