本文共 7489 字,大约阅读时间需要 24 分钟。
数组
今日目标:
数组
1.为什么使用数组?
1.什么是数组?:
一组类型相同的数据 为什么不能存放不同的数据类型? 每种数据类型在内存空间中占据的大小不同 2.为什么要用到数组? 业务所需,需要对多个同种数据类型的数据进行打包处理。字符数组比较特殊,不能输出地址值,println会自动将字符转换为字符串输出
定义数组时会创建一个对象空间int arr[] = new int[]{ 1,2,3}; int b[]=arr; arr[1]=8; System.out.println(b[1]);//8
方法里是形参,不会改变a的输出
public static void main(String[] args) { int a=2; fun(a); System.out.println(a);//2 } private static int fun(int a) { a=10; return a; }
2.数组的使用步骤:
以上是基本使用步骤,有没有更简单的步骤?
1.边声明边赋值private static void one() { int arr1[];//定义 arr1=new int[7];//指定长度 int arr[]=new int[5];//定义加指定长度 arr[0]=1;// 赋值 1 arr[1]=2; arr[2]=3; arr[3]=4; arr[4]=5; int arr2[]=new int[]{1,2,3};//定义加指定长度加赋值 int arr3[]={2,4,5};//定义加指定长度加赋值 简写 /* for (int a:arr){ System.out.println(a); }*/ }
foreach简化数组和集合的遍历 foreach的语句格式: for(元素类型t 元素变量x : 遍历对象obj){ 引用了x的java语句; } 2.用户边输入边动态赋值:基本步骤 案例:输入5名学员的java成绩,并求出平均数。
public void test1() { //定义并初始化一个数组 int arr[] = {2, 3, 1}; System.out.println("----1----排序前的一维数组"); for (int x : arr) { System.out.println(x); //逐个输出数组元素的值 }
3.处理数据----增强型for
ForEach
数组赋值以后如何取出其中的每个数据呢? 案例: 打印数组中的每个数据? 普通for循环和增强for循环4.栈内存和堆内存:
Int a=9;
都是用于存储数据的,栈:存储变量名,基本数据类型在常量池,不包括String 堆:存储引用数据类型:数组,集合,类(对象),接口 举例: 定义两个String,==比较 Next()Scanner中输入的String和定义的String不一样。 综合练习: 1.private static void one() { Scanner sc=new Scanner(System.in); int a[]=new int[]{8,4,2,1,23,344,12}; int b=0; System.out.print("数列的值分别为:"); for (int i=0;i
2.求最大最小值
打擂台原理private static void two() { Scanner sc=new Scanner(System.in); int a[]=new int[]{8,4,2,1,23,344,12}; int max=a[0],min=a[0]; for (int i=1;ia[i]?max:a[i]; min=min
3.排序,和插值
4.冒泡排序(明天讲)
学会调试程序
作业:
1.从键盘接受10个整数,求出其中的最大值和最小值。
private static void One() { Scanner sc=new Scanner(System.in); System.out.println("请输入你想要输入十个的数字(正整数):"); int a[]=new int[10]; int max; int min; for (int i=0;i<=(a.length-1);i++){ a[i]=sc.nextInt(); } max=a[0]; min=a[0]; System.out.println("你输入的十个数分别为:"); for (int i=0;i<=a.length-1;i++){ max=max>a[i]?max:a[i]; min=min
2.输入10个数,保存在一个数组中,在数组中查找某个数字,给出是否找到信息,如果找到了输出该数在数组中所处的位置,如果找不到输出“找不到”
private static void Two() { Scanner sc = new Scanner(System.in); System.out.println("请输入你想要输入十个的数字(正整数):"); int a[] = new int[10]; for (int i = 0; i <= (a.length - 1); i++) { a[i] = sc.nextInt(); } System.out.println("请输入你要查找的数字(正整数):"); int b = sc.nextInt(); boolean c=true; for (int i = 0; i < a.length - 1; i++) { if (a[i] == b) { System.out.println("找到了,在数组的中的第"+(i+1)+"位"); c=false; break; } } if(c){ System.out.println("找不到"); } }
3.将一个数组中的元素逆序输出,即第一个元素和最后一个元素交换,第二个数与倒数第二元素交换……,例如:原数组为:9 2 5 7 8,逆序后的数组为:8 7 5 2 9
private static void three() { int a[]=new int[]{8,4,2,1,23,344,12}; int b[]=new int[]{8,4,2,1,23,344,12,20}; for(int i=0;i
4.顾客从超市采购了10件商品,编写一个程序,用于接受每件商品的价格,计算应付的总金额。并分别打印出各个商品的价格以及应付的总金额的小票。
private static void four() { String a[]={"鸡蛋","牛奶","饼干","矿泉水" ,"杯子","洗发精","沐浴露","牙刷","牙膏","鱼"}; Scanner sc=new Scanner(System.in); double b[]=new double[10]; for (int i=0;i
5.接收并输出某公司某月的考勤和扣款信息,假设公司有5个员工,每个员工的考勤项有上下班忘打卡、迟到、早退、旷工,其中上下班忘打卡扣款10元/次,迟到和早退扣款为20元/次,旷工100元/天,参考图如下(参考图中是以3个员工为例):
private static void five() { int a[]=new int[5];//员工编号 int b[]=new int[5];//忘打卡 int c[]=new int[5];//迟到 int d[]=new int[5];//早退 int e[]=new int[5];//旷工 Scanner sc=new Scanner(System.in); for (int i=0;i<1;i++){ System.out.println("请输入第"+(i+1)+"个员工编号:"); a[i]=sc.nextInt(); System.out.println("请输入第"+(i+1)+"个员工忘打卡次数:"); b[i]=sc.nextInt(); System.out.println("请输入第"+(i+1)+"个员工迟到次数:"); c[i]=sc.nextInt(); System.out.println("请输入第"+(i+1)+"个员工早退次数:"); d[i]=sc.nextInt(); System.out.println("请输入第"+(i+1)+"个员工旷工次数:"); e[i]=sc.nextInt(); } System.out.println("************本月考勤信息***************"); for (int i=0;i<1;i++){ System.out.println("员工编号 忘打卡 迟到 早退 旷工 总罚款(单位元)"); System.out.println(a[i]+" "+b[i]*10+" "+c[i]*20+" "+d[i]*20+" "+e[i]*100+" "+ (b[i]*10+c[i]*20+d[i]*20+e[i]*100)); } }
6.动态输入一组数,存到数组里面,利用四种循环打印出数组的所有元素。
private static void six() { Scanner sc = new Scanner(System.in); System.out.println("你想要输入几个数(正整数):"); int shu; shu=sc.nextInt(); System.out.print("请输入这些数:"); int a[] = new int[shu]; for (int i = 0; i <= (a.length - 1); i++) {//给数组赋值 a[i] = sc.nextInt(); } System.out.print("打印的结果为: "); for (int i = 0; i <= (a.length - 1); i++) { System.out.print(a[i]+" "); } System.out.println(" ");//换行 System.out.print("打印的结果为: "); int a1=0; while (a1
7.定义一个有序数列{1,5,20,30,80},要求用户输入一个数字,判断该数字应该插入到数组中的下标是?
private static void seven() { int a[]=new int[]{1,5,20,30,80}; Scanner sc = new Scanner(System.in); System.out.println("请输入一个数字:"); int b=sc.nextInt(); boolean c=true; for (int i=0;ib){ System.out.println("这个数字应该插入的下标为:"+i); c=false; break; } } if (c){ System.out.println("这个数字应该插入的下标为: 5"); } }
8.定义一个长度为8的数组,要求前7个元素赋值,最后一个不赋值,从第5个元素开始,依次覆盖后面的元素,并输出最终结果。
private static void eight() { Scanner sc = new Scanner(System.in); int a[]=new int[8]; System.out.println("请输入七个数:"); for (int i=0;i<7;i++){ a[i]=sc.nextInt(); } System.out.println("这八个数分别为:"); for (int i=0;i=4;i--){ a[i+1]=a[i]; } System.out.println("最终结果为:"); for (int i=0;i
9.定义一个有序数列,{1,5,20,30,80},要求用户输入一个数字,然后插到数组中,并保持升序,不能使用冒泡排序。
private static void nine() { int a[]=new int[]{1,5,20,30,80,0}; System.out.println("这个数组为:"); for (int i = 0; ib){ x=i; break; } } System.out.println("这个数字应该插入的下标为:"+x); for (int i=a.length-1;i>x;i--){//替换插入之后的数 a[i]=a[i-1]; } a[x]=b;//替换插入的数 System.out.println("插入后的数组为:"); for (int i = 0; i
------------------------------今天不做------------------
1.使用冒泡排序对数组{13,18,99,56,44,67}进行升序和降序。private static void job1() { int a[]={13,18,99,56,44,67}; for(int i=0;ia[j+1]){ int b=a[j+1]; a[j+1]=a[j]; a[j]=b; } } } System.out.println("升序后的排列为:"); for (int i=0;i
2.利用冒泡排序实现数组长度为10的特定排序:1-5升序,6-10降序。
private static void job2() { int a[]={5,4,3,2,1,6,7,-1,9,10}; System.out.println("数组原为:"); for (int i=0;ia[j+1]){ int b=a[j+1]; a[j+1]=a[j]; a[j]=b; } } } for(int i=0;i<5;i++){//降序 for (int j=5;j
转载地址:https://blog.csdn.net/qq_45850095/article/details/110498807 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!