2020-07-25 Java基础学习003

内容提前看

  1. 数组
  2. 字符串

一、数组

package com.xyto.Basicdemo;

public class DimensionDemo {

    /**
     *  数组学习
     * 
     * @param args
     */
    public static void main(String[] args) {
        float[] scores = { 55f, 78f, 42f, 62f, 88f, 20f, 90f, 100f, 66f, 32f };

        System.out.println("总学生有:" + scores.length + "个,原分数如下:");
        for (int i = 0; i < scores.length; i++) {
            System.out.print(scores[i] + "\t");
        }

        float scoreTTL, avg, maxScore, minScore;
        scoreTTL = avg = 0f;
        maxScore = Float.MIN_VALUE;
        minScore = Float.MAX_VALUE;

        int i = 0;
        while (i < scores.length) {
            scoreTTL += scores[i];
            maxScore = maxScore > scores[i] ? maxScore : scores[i];
            minScore = minScore < scores[i] ? minScore : scores[i];
            i++;
        }
        avg = scoreTTL / scores.length;

        System.out.println("\n--------------统计结果 如下:---------------------");
        System.out.println("总分:" + scoreTTL + "\t平均分:" + avg + "\t最高分:" + maxScore + "\t最低分:" + minScore);

        System.out.print("教学评级:");
        System.out.println(avg >= 90 ? "优秀,继续保持!" : avg >= 80 ? "良好,还有提升的空间" : avg >= 70 ? "合格,要多努力了" : "很差,需要改进!");

        Order[] ods = { new Order(1, "No.2219839"), new Order(2, "No.3287424"), new Order(3, "No.2384092") };
        for(Order o : ods){
            System.out.println("序号:" + o.orderID + "\t订单号:" + o.orderName);
        }
    }
}

class Order {
    int orderID;
    String orderName;

    Order(int id, String name) {
        orderID = id;
        orderName = name;
    }

}

运行结果:

二、字符串

package com.xyto.Basicdemo;

public class StringDemo02 {
    public static void main(String[] args) {
        String str1 = "abc";
        String str2 = "abc";

        // 注意:此处的相等并非是针对字符串的内容进行比较,而是对他们引用指向的地址进行比较
        System.out.println(str1 == str2);

        str1 = "abc1236837";
        str2 = "236";
        //截取236 substring(x):截取从指定位置到尾
        //       substring(x,y):截取指定位置到指定长度,比较适合于取中间值
        //注意:字符串都是从下标0开始计算的,和数组一样
        String newStr1 = str1.substring(4,7);
        System.out.println("用==号时:"+ (str2==newStr1));
        System.out.println("用equals时:"+ (str2.equals(newStr1)));
        System.out.println("截取str1第3位以后的:" + str1.substring(3));
        
        //字符串转字符数组:toCharArray()
        char[] chs = str1.toCharArray();
        for(char c: chs) {
            System.out.println(c +":对应十进制编码:" +(int)c);
        }
        
        //contains:计算str2是否为str1的子串
        System.out.println(str1.contains(str2));
        //getBytes:用于将字符串直接变成流进行操作
        byte[] bts = str1.getBytes();
        for(byte b : bts) {
            System.out.print(b + "\t");
        }
        //转换后的流可以用new String重新组合还原出来
        System.out.println(new String(bts));
        
        //indexOf("字符")指定字符在字符串中的首位置,找到首位置后立即返回当前第一次出现的位置
        //indexOf(int) 为数值时,它会取单个字符的char值,把此int值转char值来进行查询
        //indexOf(String str, int index):从index的地方开始找,返回第一次出现的索引
        //indexOf(int ch, int index):查找字符的int值,从index的位置开始
        System.out.println(str1.indexOf("3"));
        System.out.println(str1.indexOf(50));
        System.out.println(str1.indexOf("3", 2));
        System.out.println(str1.indexOf(56, 4));
        //lastIndexOf(……):重载同上,区别是上面是首次出现的位置,这个是最后一次出现的位置
        System.out.println(str1.lastIndexOf("3"));
        /**
         *      indexOf总结:
         *          这个方法是相当重要的方法,可以配合截取,替换,删除指定位置的左、中、右的字符串,在实际应用中相当重要
         *      当一个子串或字符在多个地方出现或需要对某一个子串进行出现次数计数时,就可以利用一个位置来不断向前或向后(即上翻下翻)进行
         *      查找 。
         */
        //str1.replace(oldString, newString):替换指定内容:一般用于屏蔽一些重要的或敏感的信息时
        System.out.println(str1.replace("abc","***"));
        
        //charAt(int index):返回index位置的字符
        System.out.println(str1.charAt(4));
        
        
    }
}

执行结果:

字符串与数组综合练习

package com.xyto.Basicdemo;

import java.util.Scanner;

public class StringDemo {

    /**
     *       字符串练习: 1、拆分、查询、截取 2、要注意字符串比较时,不可以用==号,==号是比较引用地址
     * 
     * @param args
     */
    public static void main(String[] args) {
        String str = "6937843274312:华亚直杯350ml:1*48;6932473284732:华亚学士杯320ml:1*48;6927384732874:华亚5号吊带子弹头500:1*40;6937846372434:华亚卡通无尾吊500ml:1*24";
        String barcode, goodsName, standard;
        barcode = goodsName = standard = "";

//      拆分内容
        System.out.println("序号\t商品条码\t\t商品名称\t\t\t规格");
        String[] strs = str.split(";");
        String[] subStrs = null;
        for (int j = 0; j < strs.length; j++) {
            subStrs = strs[j].split(":");
            barcode = subStrs[0];
            goodsName = subStrs[1];
            standard = subStrs[2];
            System.out.println(j + 1 + "\t" + barcode + "\t" + goodsName + "\t\t" + standard);
        }

//      判断查询, 条件是条码后五位进行匹配或品名,只要找到一个就直接返回,不去查询其它
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你需要查询的条码后五位或品名:");
        String condition = input.next();
        for (int i = 0; i < strs.length; i++) {
//          System.out.println("第" + (i + 1) + "次:" + strs[i]);
            subStrs = strs[i].split(":");
            barcode = subStrs[0];
            goodsName = subStrs[1];
            standard = subStrs[2];
//          System.out.println("当前查找的条件:" + condition + ",当前在查询的条码是:" + barcode);
//          System.out.println(barcode.substring(barcode.length() - 5));
            // 注意此处:判断两字符串是否相等不能用==符号,因为字符串是引用类型,如果用==表示判断它的地址去了,所以即便内容相同但地址是不一样的
            if (condition.equals(barcode.substring(barcode.length() - 5)) | goodsName.contains(condition)) {
                System.out.println("找到此信息, 位于第" + (i + 1) + "位:" + barcode + "\t" + goodsName + "\t" + standard);
                break;
            }

            if (i == strs.length - 1)
                System.out.println("无此信息,请确认你输入了条码的后五位或正确的名称!");
        }
    }

}

运行结果:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容