Java入门 Day006(二维数组 冒泡排序 逆序)

1:二维数组定义格式?

数据类型[][] 数组名称 ;
数据类型[] 数组名称[] ;
分别列举三种格式
int[][] arr = new int[3][2] ;
int[][] arr = new int[3][] ;
int[] arr[] = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
简化为:int[] arr[] = {{1,2,3},{4,5,6},{7,8,9}};
注:面试题:
数组中有没有length()? 没有,只有length属性
String类中有没有length()? String有length(),获取字符串的长度
集合中有没有length()? 没有,获取集合长度,size()

2:二维数组遍历求和思想以及杨辉三角

A:给定数组,int[][] arr = {{1,2,3},{4,5,6},{7,8,9}}完成遍历操作,要求最终[1,2,3,4,5,6,7,8,9]

class No2{
     public static void main(String[] args) {
	int[][] arr = {{1,2,3},{4,5,6},{7,8,9}};
		print(arr);
     }
     public static void print(int[][] arr) {
    	 System.out.print("[");
    	 for(int i=0;i<arr.length;i++) {
    		 for(int j=0;j<arr[1].length;j++) {
    		 if(i==arr.length-1&&j==arr[i].length-1)
    		 System.out.print(arr[i][j]+"]");
    		 else
    		System.out.print(arr[i][j]+",");
    		 }
      }
     }  
    }

B:公司年销售额求和
某公司按照季度和月份统计的数据如下:单位(万元)
第一季度:22,66,44
第二季度:77,33,88
第三季度:25,45,65
第四季度:11,66,99

  class No3{
     public static void main(String[] args) {
	int[][] arr = {{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
		print(arr);
     }
     public static void print(int[][] arr) {
    	 int sum=0;
    	 for(int i=0;i<arr.length;i++) {
    		 for(int j=0;j<arr[1].length;j++) {
    			System.out.print(arr[i][j]+" ");
    		 sum+=arr[i][j];
    	 }
    		 System.out.println() ;
     }
    	 System.out.println("总销售额为:"+sum);
     }  
     
 }

C:打印杨辉三角形(行数可以键盘录入)

class No3{
     public static void main(String[] args) {

	Scanner sc = new Scanner(System.in) ;
	System.out.println("请输入一个行数:");
		
		int a=sc.nextInt();
		int[][] arr=new int[a][a];
		
		for(int i = 0 ; i < arr.length; i ++){
			arr[i][0] = 1 ;
			arr[i][i] = 1 ;
		}

    	 for(int i=2;i<arr.length;i++) {
    		 for(int j=1;j<i-1;j++) {
    		arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
    	  }
     }
    	 for(int i = 0 ; i < arr.length ; i ++){
 			for(int j = 0 ; j <=i ;j++){
 				System.out.print(arr[i][j] +"\t") ;
 			}
 			System.out.println() ;
 		}
     }
     
 }

3.简述冒泡排序思想,并使用记事本完成代码实现!

思想:两两比较,大的往后放,最大值出现在最大索引处
每一次比较完,下一次比较的时候就会少一个元素的比较。

import java.util.Scanner;
  class BubbleSort {
     public static void main(String[] args) {

	int[] arr= {12,4,45,24,67,89};
	System.out.println("排序前: ");
	print(arr);
	bubbleSort(arr);
	System.out.println("");
	System.out.println("排序后: ");
	print(arr);
	}
     public static void print(int[] arr) {
    	 for(int i=0;i<arr.length;i++) {
    			 System.out.print(arr[i]+" ");
    		 }
    	 }
     public static void bubbleSort(int[] arr){
       for(int i=0;i<arr.length-1;i++) {
    	   for(int j=0;j<arr.length-1-i;j++) {
    		   if(arr[j]>arr[j+1]) {
    			   int temp=arr[j];
    			   arr[j]=arr[j+1];
    			   arr[j+1]=temp;
    		   }
    	   }
       }
     }
 }

4.键盘录入5个数的一维数组,然后查询指定元素在数组中第一次的索引值 举例:{10,20,3,45,89} ; 45元素在书中第一次出现的索引值是3

  class  Index{
     public static void main(String[] args) {
	int[] arr= {10,20,3,45,89};
	
	System.out.println("该元素在数组中第一次出现的索引值是:"+print(arr,45));
	}
     public static int print(int[] arr,int val) {
    	 for(int i=0;i<arr.length;i++) {
    			if(arr[i]==val){
    				return i;
    			}
    		 }
    	 return -1;
    	 }
 }
 

5.请将’A’,‘B’,'C’存入数组,然后再输出 (提示:定义字符数组)

 class  No4{
	public static void main(String[] args) {

	char[] arr= {'A','B','C'};
	
    	 for(int i=0;i<arr.length;i++) {
    		System.out.print(arr[i]+" ");	
    		 }
    	 }
   
 }

6.请将"我" “爱” "你"存入数组,然后正着和反着输出,(提示:定义字符串数组)

class  No5{
	public static void main(String[] args) {

		 String[] arr = {"我","爱","你"} ;
	
    	 for(int i=0;i<arr.length;i++) {
    		System.out.print(arr[i]+" ");	
    		 }
    	 System.out.println("");
    	 for(int i=2;i>=0;i--) {
     		System.out.print(arr[i]+" ");	
     		 }
    	 }
   
 }

7.键盘录入6个数据,获取数组中的最大值。

import java.util.Scanner;
class No6{
	 public static void main(String[] args) {
		 int[] arr=new int[6];
		 Scanner sc=new Scanner(System.in);

		 for(int n=0;n<arr.length;n++) {
			 System.out.println("请输入第"+(n+1)+"个元素:");
			 arr[n]=sc.nextInt();
		 }
		 System.out.println("arr数组中的元素为");
		 for(int n=0;n<arr.length;n++){
		 System.out.print(arr[n]+",");
	   }
		 int max=arr[0];
		 for(int m=1;m<arr.length;m++) {
			 if(max<arr[m]) {
			max=arr[m];//还可以写成max=max>arr[i]?max:arr[i];
	 	}
	}
    System.out.println();
	System.out.println("数组中的元素最大值是"+max);
	 }
}

8、逆序输出数组

class reverse{
	
	     public static void main(String[] args) {

		int[] arr= {10,39,59,34,89,56};
		System.out.println("排序前: ");
		print(arr);
		System.out.println(" ");
		nixu(arr);
		System.out.println("排序后: ");
		print(arr);
	
		}
	     public static void print(int[] arr) {
	    	 for(int i=0;i<arr.length;i++) {
	    			 System.out.print(arr[i]+" ");
	    		 }
	    	 }
	     public static void nixu(int[] arr) {
	    	 for(int start=0,end=arr.length-1;start<=end;start++,end--) {
	    		int temp=arr[start];
	    		arr[start]=arr[end];
	    		arr[end]=temp;
	     }
			
	}
	     
}  

面试题:

面试题: (考点:Java中的基本数据类型和引用数据类型作为参数传递的区别)
看程序,写结果


public static void main(String[] args) { 
		int a = 10;
		int b = 20; 
		System.out.println("a:"+a+",b:"+b); 
		change(a,b); 
		System.out.println("a:"+a+",b:"+b);//a?,b? 20,40 
										   //10,20
		
		int[] arr = {1,2,3,4,5}; 
		change(arr); 
		System.out.println(arr[1]); //2,4
}
public static void change(int a,int b){

		System.out.println("a:"+a+",b:"+b);
		a = b;
		b = a + b; 
		System.out.println("a:"+a+",b:"+b);
	}
public static void change(int[] arr) { 
		for(int x=0; x<arr.length; x++) {
			if(arr[x]%2==0) {
				arr[x]*=2; 
			}	
		} 
	}
*/
class ArgsDemo{
	public static void main(String[] args){
		
		int a = 10;
		int b = 20; 
		System.out.println("a:"+a+",b:"+b); //10,20
		change(a,b); 
		System.out.println("a:"+a+",b:"+b);//a:10,b:20
		
		int[] arr = {1,2,3,4,5}; 
		change(arr); 
		System.out.println(arr[1]); //4
	}
	
	//执行change方法
	public static void change(int a,int b){//基本数据类型作为参数进行传递

		System.out.println("a:"+a+",b:"+b);//10,20
		a = b;
		b = a + b; 
		System.out.println("a:"+a+",b:"+b);//20,40
	}
	
	public static void change(int[] arr) { 
		for(int x=0; x<arr.length; x++) {
			if(arr[x]%2==0) {
				arr[x]*=2; 
			}	
		} 
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值