java基础day05

Arrays.toString  的使用


        int a[]=new int[6];
        for (int i = 0; i < 6; i++) {
            a[i]=i;
//            System.out.println(a[i]);
        }
        System.out.println(Arrays.toString(a));

截图

模拟延时

数组

1  下标从0开始 最大length-1,遇到ArrayIndexOut....Exception

2 玩数组时候 长度不要写死 用数组名.length

3数组中元素有默认值 跟前面的变量定义区分开 前面的变量【局部变量】没有初始化的话,不能使用

数组常见使用

在JVM中,内存划分出不同区域 比如堆内存 栈空间 元空间 

目前掌握 栈空间 堆内存

重点 **********

数据题目

1.键盘输入5个人的成绩,若输入没有负数,则计算平均分,若输入有负数,不算平均分
且给一次错误提示  ---》 标记

package kgc.day05;

import java.util.Scanner;
//数组扩容

public class test02 {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入5人成绩 不可为负数");
        int s[]=new int[5];
        int t=2;
        int m=1;
        int falsetime=0;
        while(t-->0) {
            for (int i = 0; i < s.length; i++) {
                s[i] = sc.nextInt();

                if (s[i] < 0) {
                    falsetime++;
                    m=1;
                    if (falsetime == 1) {
                        System.out.println("有负数 重新输入 这是最后一次机会");
                        break;
                    }
                    if (falsetime == 2) {

                        break;
                    }
                }else{
                    m=0;
                }

            }

            if(m==0){
                break;
            }

        }

        if(falsetime<=1){
            System.out.println("输入没有问题 可以计算均分");
            double sum = 0;
            for (int i = 0; i < s.length; i++) {
                sum+=s[i];
            }
            System.out.println("均分为"+sum/s.length);
        }else{
            System.out.println("输错2次了 终止");
        }




    }
}

快捷键

fori   fora   s.length.for

new Scanner(System.in).var 自动补全

数组插入

package kgc.day05;

import java.util.Scanner;


/**
 * @Description: TODO 数组的插入算法
 * @author: azzhu
 * @date:2021/5/17 10:46
 */
public class test0101 {
    public static void main(String[] args) {
        //认为成绩大于(0,100]之间,0只是为了标识一个空位置
        //向该数组中插入87   {99,87,85,82,63,60}  59
        int[] scores = {99,85,82,63,60,0};

        System.out.println("原来数组值为:");
        for (int score : scores) {
            System.out.print(score + "\t");
        }

        Scanner input = new Scanner(System.in);
        System.out.println("请输入要插入的数:");
        int num = input.nextInt();

        //用于标识是否能找到要插入的位置
        int index = -1;

        for (int i = 0; i < scores.length; i++) {
            if(num >= scores[i]) {
                //表明找到了位置
                index = i;
                break;
            }
        }

        System.out.println("index:" +index);

        //根据index的值去处理
        if (index != -1) {
            //有位置,有赋值和移动两个操作,先干哪一个
            //从前往后还是从后往前移动 scores[i] == ? scores[i+1]
            for (int i = scores.length-1-1;i>index;i--) {
                scores[i+1] = scores[i];
            }

            scores[index] = num;
        } else {
            //直接放在最后一位
            scores[scores.length-1] = num;
        }

        System.out.println("插入值之后:");
        for (int score : scores) {
            System.out.print(score + "\t");
        }
    }
}

JDK常见操作

Arrays:JDK为我们提供好的工具类,里面有很多工具方法,用法跟我们前面的math类似

源码

Arrays.equals

   int scores[]={1,2,4,3};
        int scores2[]={1,2,3,4};

        //todo 源码


//        public static boolean equals(int[] a, int[] a2) {
//            if (a==a2)
//                return true;
//            if (a==null || a2==null)
//                return false;
//
//            int length = a.length;
//            if (a2.length != length)
//                return false;
//
//            for (int i=0; i<length; i++)
//                if (a[i] != a2[i])
//                    return false;
//
//            return true;
//        }


        
        System.out.println(Arrays.equals(scores,scores2));

手写Arrays.toString()方法

import java.util.Arrays;

/**
 * @Description: TODO   练习:将数组元素反转  {1,2,3} --->反转 {3,2,1} 交换
 * 操作数组的工具类之常用方法
 * @author: azzhu
 * @date:2021/5/17 11:53
 */
public class Test03 {
    public static void main(String[] args) {
//        System.out.println(Math.floor(9.5));
//        System.out.println(Math.ceil(9.5));
//        System.out.println(Math.round(9.47));
        int[] scores = {12,13,8,19};
        int[] scores2 = {12,13,8,9};

        //todo 1.Arrays.equals(数组1,数组2):长度一致,且每个位置的内容一致
        System.out.println(Arrays.equals(scores, scores2));

        //todo 2.输出数组内容
        String scoresStr = Arrays.toString(scores);
        System.out.println("排序前:" +scoresStr);

        String result = "[";
        for (int i = 0; i < scores.length; i++) {
            if(i != scores.length - 1) {
                result += scores[i] +", ";
            } else {
                result += scores[i];
            }
        }
        result += "]";
        System.out.println("----->>>" + result);

        System.out.println("====================");

        //todo 3.默认升序排列
        Arrays.sort(scores);
        System.out.println("排序后:" + Arrays.toString(scores));

        //todo 4.使用某一个数值,填充一样的值
        String[] names = new String[3];
        System.out.println("填充前:" + Arrays.toString(names));
        Arrays.fill(names,"zhangsan");
        System.out.println("填充后:" + Arrays.toString(names));

        //todo 5.二分查找,若找到,给你返回对应的下标,若找不到,给你返回一个负数
        int index = Arrays.binarySearch(scores,98);
        System.out.println(index);

        //todo 6.copyOf(源头,你要拷贝多长),将数组动态化,就可以使用这个方法
        int[] targetScores;
        //targetScores = Arrays.copyOf(scores,scores.length);
        //targetScores = Arrays.copyOf(scores,10);
        targetScores = Arrays.copyOf(scores,2);

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

        //todo 7.范围拷贝  copyOfRange(scores,0,2)
        int[] aa = Arrays.copyOfRange(scores,0,2); //[0,2)
        System.out.println(Arrays.toString(aa));
    }
}

java中如何用新的S[]数组覆盖原来的S[]数组!******

                s= Arrays.copyOf(s,s.length*3/2);

java方法

public static void /数据类型 方法名(数据类型1 形参名称,   数据类型n,形参n){

//方法体

return 数据类型;

}

public static 暂且不管,写死

返回值类型:void 不需要返回值

若有返回值 return+

求和方法

public static void sum(int num1,int num2){
    System.out.println((num1+num2));
}

 public static int sum2(int num11,int num22){
        return num11+num22;

    }

方法重载

定义:在同一个类中 定义多个同名的方法,方法名一样,形参列表不同【顺序,类型,个数】有返回值类型和访问修饰符无关

作用:灵活性

自己写方法

代码

package kgc.day05;

import java.util.Arrays;

/**
 * @Description:
 * @author:mayaohao
 */
public class homework1 {
    public static void main(String[] args) {
        int arr[]={21,14,52,42,4,23,1};
        //求max
        System.out.println("----------");
        System.out.println("max:"+max(arr));
        //遍历
        System.out.println("----------");
        System.out.print("遍历");
        bianli(arr);
        //插入
        System.out.println();
        System.out.println("--------------");
        String names[]={"zs", "sa", "12","",null};
        String name="134";
        System.out.println(Arrays.toString(Insert(names,name)));
        //范围查找
        System.out.println("----------");

        int a[]={1,4,5,2,5,7,88};
        int b=5;
        search(a,88);
        System.out.println(Arrays.toString(a));
        //删除
        System.out.println("------");
        String arrs[]={"21","2131","zada",null,null,null};

        String aa="22";
        delete(arrs,aa);
        //修改
        System.out.println("------------");
        String q[]={"sasa","saf","2s","d2","213"};
        change(q,"sasa","ccc");




    }

    //max最大方法
    public static int max(int arr[]){
        int max=arr[0];
        for (int i = 1; i < arr.length; i++) {
            if(max<arr[i]){
                max=arr[i];
            }
        }
        return max;
    }
    public static void bianli(int arr[]){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if(i==arr.length-1){
                System.out.print(arr[i]+" ");
            }else{
                System.out.print(arr[i]+" ,");

            }

        }


        System.out.print("]");
    }
    public static String[] Insert(String names[],String name){
        int index=-1;
        for (int i = 0; i < names.length; i++) {
            if(names[i]==null){
                index=i;
                break;

            }
        }
        if(index==-1){
            System.out.println("插不进来了");
        }else{
            names[index]=name;
        }
        return names;

    }
    public static void search(int names[],int name){
        int index=-1;
        for (int i = 0; i < names.length; i++) {
            if(names[i]==name){
                index=i;
                break;
            }
        }
        if(index!=-1){
            System.out.println("存在下标index是:"+index);
        }else {
            System.out.println("不存在这个数字");
        }

    }
    public static void delete(String names[],String name){
        int index=-1;
        for (int i = 0; i < names.length; i++) {
            if(names[i]==name){
                names[i]=null;
                index=i;
                break;
            }
        }
        if(index==-1){
            System.out.println("不存在这个要删除的String");
        }else{
            System.out.println("被删除的index="+index);
            for (int i = index; i < names.length-1; i++) {
                names[i]=names[i+1];
            }
        }
        System.out.println(Arrays.toString(names));

    }
    public static void change(String names[],String oldname,String newname){
       int index=-1;
        for (int i = 0; i < names.length; i++) {
            if(names[i]==oldname){
                names[i]=newname;
                index=i;
                break;
            }
        }
        if(index==-1){
            System.out.println("不存在这个要修改的数");
        }else{
            System.out.println("修改结果"+Arrays.toString(names));
        }


    }
}

吃货联盟订餐系统

初稿 具体运行时候发现大多数问题都实现了,也不断修改调优了好多次,最终还有点点小问题。慢慢解决

import java.util.Scanner;

public class chihuolianmeng {
    public static void main(String[] args) {
        boolean isExit;
        int num = -1;
        String names[] = new String[999];
        int times[] = new int[999];
        int states[] = new int[999];
        String state[]=new String[2];//0 预定 1完成
        for (int i = 0; i < states.length; i++) {

            states[i]=0;
        }
        int i2;
        int num4=0;
        String dishMegs[] = new String[999];
        String addresses[] = new String[999];
        double sumPrices[] = new double[999];
        Scanner sc = new Scanner(System.in);

        String[] dishNames = {"红烧带鱼", "鱼香肉丝", "时令蔬菜"};
        double prices[] = new double[]{38.0, 20.0, 10.0};
        int[] praiseNums = new int[3];

        //初始一
        names[0] = "zhang";
        dishMegs[0] = "红烧带鱼2份";
        times[0] = 12;
        addresses[0] = "天河路";
        sumPrices[0] = 78.0;
        states[0] = 1;
        state[states[0]]="已完成";//1 1 完成
        //初始2
        names[1] = "zhang";
        dishMegs[1] = "鱼香肉丝1份";
        times[1] = 12;
        addresses[1] = "天河路3号";
        sumPrices[1] = 78.0;
        states[1] = 0;
        state[states[1]]="已预定";//0预定
        int t=-1;

        do {
            isExit = false;


            System.out.println("欢迎使用吃货联盟订餐系统");
            System.out.println("**************");
            System.out.println("1.我要订餐");
            System.out.println("2.查看餐袋");
            System.out.println("3.签收订单");
            System.out.println("4.删除订单");
            System.out.println("5.我要点赞");
            System.out.println("6.退出系统");
            System.out.println("*******");
            System.out.println("请选择");

            int input = sc.nextInt();
            int i = 0;
            switch (input) {
                case 1:
                    System.out.println("--我要订餐---");
                    System.out.print("请输入订餐人姓名:");
                    System.out.println();
                    String name = sc.next();

                    System.out.println("序号" + " " + "菜名" + " " + "单价" + " ");
                    
                    for (i = 0; i < dishNames.length; i++) {
                        System.out.println(i + " " + dishNames[i] + " " + prices[i] + " ");
                    }
                    if(i==dishNames.length){
                        i--;
                    }
                    t++;
                    System.out.println(i);
                    System.out.println(t);
                    System.out.println("-------------"+(i+t));
                    System.out.println("你要选择的菜品编号:");
                    int cc=sc.nextInt();
                    System.out.println("你要选择的份数:");
                    int cc2=sc.nextInt();
                    System.out.println("输入送餐时间:");
                    int cc3=sc.nextInt();
                    System.out.println("请输入送餐地址:");
                    String cc4=sc.next();
                    names[i+t-num4]=name;
                    dishMegs[i+t-num4]=dishNames[cc]+""+cc2+"份";
                    times[i+t-num4]=cc3;
                    addresses[i+t-num4]=cc4;
                   sumPrices[i+t-num4]=prices[cc]*cc2;




                    break;
                case 2:

                    System.out.println("--查看餐带");
                    System.out.println("序号"+" "+"订餐人"+" "+"餐品信息"+" 送餐日期"+" "+"送餐地址"+" "+"总金额"+" "+"订单状态");
                    for (int i1 = 0; i1 < addresses.length; i1++) {
                        if(addresses[i1]!=null){
                            System.out.println(i1+" "+names[i1]+" "+dishMegs[i1]+" "+times[i1]
                                    +" "+addresses[i1]+" "+sumPrices[i1]+" "+state[states[i1]]+" ");
                        }
                    }
                    break;
                case 3:
                    System.out.println("---签收订单");
                    System.out.println("选择要签收的订单");
                    int q1=sc.nextInt();
                    if(q1<0||q1>((i+t)>1?(1+t):1)){
                        System.out.println("订单不存在");
                    }
                    if(states[q1]==1){
                        System.out.println("已经完成签收不能再签收");
                    }
                    if(states[q1-num4]==0){
                        System.out.println("订单签收成功,序号"+q1);
                        states[q1-num4]=1;
                    }
                  

                    break;
                case 4:

                    System.out.println("---删除订单---");
                    System.out.println("请输入要删除的订单序号");
                    int t1=sc.nextInt();
                    if(states[t1]==1){
                        System.out.println("删除成功,订单"+t1);

                        for (int i1 =t1 ; i1 <addresses.length-1 ; i1++) {
                            names[t1]=names[t1+1];
                            dishMegs[i1]=dishMegs[i1+1];
                            times[i1]=times[i1+1];
                            addresses[i1]=addresses[i1+1];
                            sumPrices[i1]=sumPrices[i1+1];
                            states[i1]=states[i1+1];
                            state[states[i1]]=state[states[i1+1]];

                        }
                        num4++;

                        break;


                    }
                    if(states[t1]==0){
                        System.out.println("删除失败,因为没签收不能删除");
                    }
                    if(t1<0||t1>(i+t)){
                        System.out.println("订单不存在");
                    }

                    break;


                case 5:
                    System.out.println("我要点赞");

                    System.out.println("序号" + "\t" + "菜名" + "\t" + "单价"+" "+"赞数");
                    for (i2 = 0; i2 < dishNames.length; i2++) {
                        System.out.println(i2 + " " + dishNames[i2] + " " + prices[i2] + " "+praiseNums[i2]+"赞");
                    }
                    System.out.println("请选择你要点赞的菜品序号");
                    int b=sc.nextInt();
                    if(b==0) praiseNums[0]++;
                    if(b==1) praiseNums[1]++;
                    if(b==2) praiseNums[2]++;

                    System.out.println("点赞成功");

                    break;



                case 6:
                    System.out.println("退出系统");
                    isExit = true;
                    break;
                default:
                    System.out.println("重新输入");
                    break;

            }


        }while(isExit!=true);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值