Day8 二维数组及其高级内容

Eclipse的使用

1、安装
2、打开选择工作空间,也就是存放code的路径
3、怎么样创建Java项目,包,类,接口等操作
4、包名:域名倒写。
5、cril+鼠标左键 点 系统写的方法,可以看源码
修改字体:
窗口-属性-搜索(font)-basic-Text Font

内容提示:
窗口-属性-java - editor- content assist - 将所有字符(大小写都写上)

常用快捷键:
代码整理: Ctrl + shift + F 整理整个文件
Ctrl + i 整理选中代码

快速复制鼠标所在行代码:
Ctrl + alt + ↑或者↓

快速移动代码:
alt + ↑或者↓

行注释:
ctrl + /
块注释:
Ctrl + shift + /
取消块注释:
Ctrl + shift + \

二维数组

二维数组的使用:
定义方式:
int[][] 数组名 = new int[3][4];
二维数组中有3个一维数组,每个一维数组中有4个元素
int[][] 数组名 = new int[3][];
这里写图片描述
二维数组初始化:
这里写图片描述
例题:

    int a[][] = {{1,2},{2,3,4,5},{5,6,7}};
        for(int i=0;i<a.length;i++) {   
                for(int j=0;j<a[i].length;j++) {
            System.out.println(intArray1[i][j]);
                }
        }

1.数组的拷贝例题

public class ArrayTest7 {
  public static void main(String args[]) {
    String[] s = {"Mircosoft","IBM","Sun","Oracle","Apple"};
    String[] sBak = new String[6];
    System.arraycopy(s,0,sBak,0,s.length);
        for(int i=0;i<sBak.length;i++){
            System.out.print(sBak[i]+" ");
        }
        System.out.println();
    int[][] intArray = {{1,2},{1,2,3},{3,4}};
    int[][] intArrayBak = new int[3][];
    System.arraycopy(intArray,0,intArrayBak,0,intArray.length);
    intArrayBak[2][1] = 100;
    for(int i = 0;i<intArray.length;i++){
        for(int j =0;j<intArray[i].length;j++){
            System.out.print(intArray[i][j]+"  "); 
        }
        System.out.println();
    }
  }
}

2.二维数组遍历求和操作:用二重循环求出二维数组b所有元素的和:

 int[][] b={{11},{21,22},{31,32,33}}
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         int[][] b={{11},{21,22},{31,32,33}};
         int sum=0;
         for(int i=0;i<b.length;i++){
            sum+=Sum(b[i]);


         }
         System.out.println(sum);

    }

3.生成一百个随机数,放入数组,然后排序输出。

public class HomeWork5 {

//  1.生成一百个随机数,放入数组,然后排序输出。
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         int count=0;
        int[] arr=new int[100];
        for(int i=0;i<100;i++){
            arr[i]=(int)(Math.random()*100+1);
            count++;
        }
        Arrays.sort(arr);
        System.out.println("个数为:"+count);

        System.out.println(Arrays.toString(arr));

    }

    public static void  GeShi(int a) {
        if(a%5==0){
            System.out.println("\n");
        }
    }

}

4.题目:输入某年某月某日,判断这一天是这一年的第几天?

import java.util.Scanner;

import javax.sound.midi.SysexMessage;
import javax.swing.text.html.HTMLDocument.HTMLReader.IsindexAction;

public class HomeWork6 {

    //2.题目:输入某年某月某日,判断这一天是这一年的第几天?
//  分析:以3月5日为例,先把前两个月的加起来,
//  然后再加上5天即本年第几天,特殊情况,
//  闰年且输入月份大于3需考虑多加一天。
//  可定义数组存储1-12月各月天数。
//  1.输入年月日
//  2.闰年?   能被4整除 不能被100整除   或者能被400整除
    public static void main(String[] args) {
        // TODO Auto-generated method stub
      Scanner sc=new Scanner(System.in);
      System.out.println("请输入年:");
      int year=sc.nextInt();
      System.out.println("请输入月:");
      int month=sc.nextInt();
      System.out.println("请输入日:");
      int date=sc.nextInt();
      int []arr={31,28,31,30,31,30,31,31,30,31,30,31};
      int day=0;
      for (int i = 0; i < month-1; i++) {
          day+=arr[i];
    }
      day+=date;
      if(isLeapYear(year)&&month>2){
          day+=1;
      }
      System.out.println(day);
      sc.close();
      }
    /**
     * 判断一年是否为闰年。
     * @return
     */
    public  static boolean isLeapYear(int year) {
        return year%4==0&&year%100!=0||year%400==0;
    }
    }

5.数组A:1,7,9,11,13,15,17,19;数组b:2,4,6,8,10
两个数组合并为数组c,按升序排列。 要求:使用Arrays类的方法快速实现。

import java.util.Arrays;

public class HomeWork7 {


    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int [] A={1,7,9,11,13,15,17,19,0};
        int [] B={2,4,6,8,10};
        int [] C=new int[8];
       C= Arrays.copyOfRange(A, 0, 8);
       System.out.println(Arrays.toString(C));
       C= Arrays.copyOf(C,13);
      System.arraycopy(B, 0, C, 8, 5);
      Arrays.sort(C);
       System.out.println(Arrays.toString(C));

    }

}

6.合并数组操作:现有如下一个数组:
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5}
要求将以上数组中值为0的项去掉,将不为0的值存入一个新的数组,
生成的新数组为: int newArr [] ={1,3,4,5,6,6,5,4,7,6,7,5} 思路: 确定出不为0的个数,这样可以开辟新数组; 从旧的数组之中,取出内容,并将其赋给新开辟的数组。

import java.util.Arrays;

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

        int count=0;
        int count1=0;
        int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
        count=getvalue(oldArr, 0);
        count1=oldArr.length-count;
        int [] newArr=new int[count1];
        for (int i = 0, j=0; i < oldArr.length; i++) {
            if(oldArr[i]!=0){
                 newArr[j]=oldArr[i];
                 j++;
                }
            }
        System.out.println(Arrays.toString(newArr));
        }




    /**
     * 找出数组中值为0的个数
     * @param num
     * @param value
     * @return
     */
    public static int  getvalue(int[] num,int value) {
        int count=0;
        for (int i = 0; i < num.length; i++) {
            if(num[i]==0){
              count++;
              }
        }   
        return count;
}
}

7.购买双色球

import java.util.Arrays;
import java.util.Scanner;

public class Lottery {

    public static void main(String[] args) {

        //请选择购买几个双色球
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要购买几个双色球:");
        int count=scanner.nextInt();
        int [][] arr=new int[count][7];

        for(int i=0;i<arr.length;i++){
            System.out.println("你现在在购买第"+(i+1)+"个双色球");
            for(int j=0;j<arr[i].length;j++){
                System.out.println("请输入第"+(j+1)+"个号码的值:");
                arr[i][j]=scanner.nextInt();
            }


        }
            showLottery(arr);
            scanner.close();

    }
    //展示购买的双色球
    public static void  showLottery(int[][] num) {
        for(int i=0;i<num.length;i++){
            System.out.println(Arrays.toString(num[i]));
        }
    }

}

可变参数

可变参数
作用: 作为方法的形参
形式: …
例如:
public static void show(int …num){
}

调用时候注意事项:
可变参数做形参:
1、实际参数可以给0个、1个、多个、或者给一个数组,都可以

2、如果有一个方法用可变参数做了形参,则不能再用数组做形参,会造成方法重复定义

3、可变参数做形参的时候,只能有一个可变参数,而且,可变参数必须作为最后一个参数

与数组的区别:
1.可变参数,只能作为形参存在
2.作为参数,只能作为最后一个
3.个数,只能有一个可变参数

可变参数的验证:

public class Test1 {

    public static void main(String[] args) {
        show();
        show(1);
        show(1,2,3);
        int[]arr = new int[]{1,2,3,4,5};
        show(arr);

        System.out.println(Arrays.toString(arr));//[1,2,3,4,5]

    }
    /**
     * 可变参数的验证
     * @param num
     */
    public static void show(int ...num){
        for (int i = 0; i < num.length; i++) {
            System.out.println(num[i]);
        }
    }
//  public static void show(int[]num){
//      for (int i = 0; i < num.length; i++) {
//          System.out.println(num[i]);
//      }
//  }
    /*
     * 有问题写法:可变参数只能作为最后一个参数
     * 
     public static void testShow(int...num1,int ...num2) {

    }*/
    public static void testShow1(int num1,int ...num2) {

    }
    /*有问题写法
     public static void testShow1(int ...num1,int num2) {

    }*/
    public static void testShow2(int[]num1,int []num2){

    }


}

小结

Eclipse的使用

二维数组:
实质是每个元素是一维数组的一维数组;二维数组内存分配图
二维数组的应用
可变参数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值