java基础之数组和方法(含随机点名器)

                                    java的方法--函数

(不是数学意义上的,相当于计算机中的程序)

Java方法详解(Java基础)_辰兮要努力的博客-CSDN博客_java方法详解

写博客时引用链接可能出现的问题

可能是不同浏览器之间的编码不同,导致引用链接长度显示不一

外部浏览器复制链接到本浏览器:

https://blog.csdn.net/geekmubai/article/details/81975990?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165431019216782350931450%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165431019216782350931450&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-81975990-null-null.142^v11^pc_search_result_control_group,157^v13^control&utm_term=方法重载&spm=1018.2226.3001.4187https://blog.csdn.net/geekmubai/article/details/81975990?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165431019216782350931450%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165431019216782350931450&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-81975990-null-null.142%5Ev11%5Epc_search_result_control_group,157%5Ev13%5Econtrol&utm_term=%E6%96%B9%E6%B3%95%E9%87%8D%E8%BD%BD&spm=1018.2226.3001.4187Java方法重写与重载的区别_徐念安的博客-CSDN博客_java方法重写和方法重载的区别

 另外谷歌双核浏览器和火狐浏览器在编译CSDN文章时也有不同,双核在文本编译区鼠标会消失(程序员小哥的问题,没处理好鼠标事件也许)

java方法重载--类似于父子继承(有关系)

public class 方法重载 {
    public static void main(String[] atgs){
        //调用
        int sum1=add01(1,2);
        int sum2=add02(1,2,3);
        double sum3=add03(1.2,2.3);
        //打印
        System.out.println("sum1="+sum1);
        System.out.println("sum2="+sum2);
        System.out.println("sum3="+sum3);
    }
    //方法实现两数相加
    public  static  int add01(int x,int y){
        return x+y;
    }
    //方法实现三个整数相加
    public  static  int add02(int x,int y,int z){
        return x+y+z;
    }
    //实现两个小数相加
    public static double add03(double x,double y){
        return  x+y;
    }
}

 效果

可能出现的问题

         这里定义了浮点型,两个数据好像必须都是浮点型(强制带小数点),也许和java的语言性质有关系,必须严格

                                          数组定义

int x=new int[100];
    //相当于
    int[]x;
    x=new int[100];

冷知识:索引又称角标

案例演示如何定义数组,并显示元素以及长度

public class 数组定义 {
    public static void main(String[] args){
        int [] arr;//声明变量
        arr=new int[3];//创建数组对象
        System.out.println("arr[0]="+arr[0]);//打印元素
        System.out.println("arr[1]="+arr[1]);
        System.out.println("arr[2]="+arr[2]);
        System.out.println("数组的长度是:"+arr.length);//打印数组长度
        
    }
}

运行结果:

                               静态初始化数组

 一般使用第二种

public class 静态初始化数组 {
    public static void  main(String[] args){
        int[]arr={1,2,3,4};//静态初始化
        System.out.println("arr[0]"+arr[0]);
    }
}

 

可能出现的问题:

1.当用第一种int【4】{1,2,3,4}的时候编译器可能因为【4】和{1,2,3,4}的不一致(元素从0开始,可能分配了5个),导致编译器报错,认为存在安全隐患

2.每个数组都有一个范围0-length-1,访问数组的索引(角标)不能超出这一范围,否则也会报错

3.空指针异常,下面会解释

数组中空指针异常

public class 空指针异常 {
    public static  void mian(String[] args){
        int[] arr=new int[3];
        arr[0]=5;
            System.out.println("arr[0]="+arr[0]);
            arr=null;//将变量arr置为null
            System.out.println("arr[0]="+arr[0]);
    }
}

结果我的编译器idea直接没有了编译运行的绿色原点,不让运行,这就是空指针异常;

数组遍历

利用for循环来访问或打印每一个数组(数据结构与算法常用的操作)

public class 数组循环遍历 {
    public  static void main(String[] args){
        int[]arr={0,2,3,4,5};
        //for循环遍历数组
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);//通过索引访问元素
        }
    }
}

获取数组最值

public class 获取数组最值 {
    public static void main (String[] args){
        int[] arr={4,1,6,3,9,8};
        int max=getMax(arr);//写了一个得到最大值的方法(函数)
        System.out.println("max="+max);//打印最大值
    }
    static  int getMax(int[]arr){
        int max=arr[0];//用max变量记录最大值,首先假设第一个值为最大
        for(int x=1;x<arr.length;x++){
            if(arr[x]>max){//比较arr[x]的值是否大于max
                max=arr[x];//如果条件成立,把arr[x]的值赋给max
            }
        }
        return  max;
    }

}

                                  数组排序(冒泡排序)

冒泡排序(超详细)_@烟雨倾城ゝ的博客-CSDN博客_冒泡排序

小泡泡向入口上浮,大泡泡下沉(堆栈模型下)

出现了问题

我按网上的搜索过了,问题说是没有引入printArray所在的库,但是引入后并没有解决,我认为可能是和jdk的版本问题,也请大佬看到这帮忙在评论区解决

import java.util.Arrays;
public class 数组冒泡排序 {
    public static  void main(String[] args){
        int[]arr={9,8,3,5,2};
        System.out.print("冒泡排序前:");
        printArray(arr);//打印数组元素
        bubbleSort(arr);//调用排序方法
        System.out.print("冒泡排序后:");
        printArray(arr);//打印数组元素
    }
    //定义打印数组元素的方法
    public static  void bubbleSort(int[] arr){
        //定义外层循环
        for(int i=0; i<arr.length-1;j++){
            //定义内层循环
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j]>arr[j+1]){//比较相邻元素
                    //三行代码(实质是三个变量)用于交换两个元素
                    int temp =arr[j];
                    arr[j]=arr[j+i];
                    arr[j+i]=temp;

                }
            }
            System.out.print("第"+(i+1)+"轮排序后");
            printArray(arr);//每轮比较结束打印数组元素
        }
    }

}

冒泡排序这部分可以跳过,数据结构算法会有深入了解,不建议任何一门语言的初学者把排序算法(冒泡这类)放在前期学习

                                                多维数组

三种定义方法

int[][]arr=new int[3][4];
int[][]arr=new int[3][];
int[][] arr={{1,2},{3,4,5,6},{7,8,9}};

 案例

public class 多维数组 {
    public  static  void main(String[] args){
        int[][]arr=new int[3][];//定义长度为3的二维数组
        arr[0]=new int[]{11,12};//为数组元素赋值
        arr[1]=new int[]{21,22,23};
        arr[2]=new int[]{31,32,33,34};
        int sum=0;  //定义变量记录总销售额
        for(int i=0;i<arr.length;i++){//遍历数组元素
            int groupSum=0;//利用变量记录小组销售总额
            //遍历小组内每个人的销售额
            for(int j=0;j<arr[i].length;j++){
                groupSum=groupSum+arr[i][j];
            }
            sum=sum+groupSum;//累加小组销售额
            System.out.println("第"+(i+1)+"小组销售额为:"+groupSum+"万元。");
        }
        System.out.println("总销售额为:"+sum+"万元");
    }
}

 对于没有见过的结构和方法,给你搜到会用即可

                                                思考&和&&区别

&和&&的区别(简单易懂)_大雄有哆啦梦的博客-CSDN博客_& &&的区别

简述&和&&的区别?_antushengV的博客-CSDN博客_简述&和&&的区别

                                           随机点名器

 

import java.util.Random;
import java.util.Scanner;
public class 随机点名器 {
    //1.存储全班同学姓名
    //首先创造一个数组容器
    //实现能输入 并存储的功能
    public static  void addStudentName(String[] students){
        //输入存储
        Scanner sc=new Scanner(System.in);
        for(int i=0;i<students.length;i++){
            System.out.println("存储第"+(i+1)+"个姓名:");
            //接受控制台录入的姓名字符串
            students[i]=sc.next();
        }
    }
    //遍历全班同学姓名
    public static  void printStudentName(String[] students){
        //遍历数组,得到每个同学姓名
        for(int i=0;i<students.length;i++){
            String name=students[i];
            //打印同学名字
            System.out.println("第"+(i+1)+"个学生姓名"+name);
        }
    }
//    3.随机点名一人
    public static String randomStudentName(String[] students){
        //根据数组长度,获取随机索引
        int index=new Random().nextInt(students.length);
        //通过随机索引从数组中获取姓名
        String name=students[index];
        //返回
        return name;
    }
    public static  void main(String[] args){
        System.out.println("-------------随机点名器-------------");
        //创建一个可以存储多个同学姓名的容器(数组)
        String[] students=new String[3];
//1.存储全班同学姓名
        addStudentName(students);
        //2.总览全班同学姓名
        printStudentName(students);
        //3.随机点名其中一人
       String randomName - randomStudentName(students);
        System.out.println("被点到名的同学是:"+randomName);
    }

}

显示;问题,但检查两边后认为写了个bug,也请大家一起帮我改正

总感觉最后随机点名这个东西也许可以优化,js来写这种功能就很好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白村第一深情

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值