重生之我在地球Online当程序员3

4、String操作&Foreach&Char
一、String操作
String str = "张三, 李四, 王五, 赵六";
//第2个人是谁?
//一共有多少人?
//名字中带"三"的人,是哪些?
//姓"李"的人,有哪些?
public class StringDemo {
    public static void main(String[] args) {
        m03();
    }
    public static void m03(){
        String str = "张三, 李四, 王五, 赵六";
        //split() 作用:将字符串按照某些规则,拆分为一个数组
        String[] names = str.split(",");//["张三", "李四", "王五", "赵六"]
        //一共有多少人?
        int count = 0;
        for (int i = 0; i < names.length; i++) {
            count ++;
        }
        System.out.println("一共有:" + count + "人");
        System.out.println(------------------------------------------------);
        }
        ///姓"李"的人,有哪些?
        for (int i = 0; i < names.length; i++) {
            String name = names[i];
            //筛选 & 输出
            if(name.startsWith("李")){
                System.out.println(name);
                System.out.println(------------------------------------------------);
            }
        }
        for (int i = 0; i < names.length; i++) {
            String name = names[i];
            if(name.contains("三")){
                System.out.println(name);
                System.out.println(------------------------------------------------);
        }
    }
}

例1:

String[] str = {"张三-18","李四-22","王五-21","赵六-20"};
//找出年龄在 20岁以上的人?

代码:

public class StringDemo02 {
    public static void main(String[] args) {
        String[] infos = {"张三-18","李四-22","王五-21","赵六-20"};
        //遍历
        for (int i = 0; i < infos.length; i++) {
            String info = infos[i];
            //使用split() 将字符串拆分为数组["张三","18"]
            String[] arrs = info.split("-");
            //Integer.parseInt() 将字符串转换为数值
            int age = Integer.parseInt(arrs[1]);
            if(age >= 20){
                //输出年龄在 20岁以上的人
                System.out.println(info);
            }
        }
    }
}

练习:

String[] strs = {"张三-18","李四-33","王五-21","赵六-20"}
//计算所有人的总年龄//计算所有人的平均年龄

代码:

public class StringDemo03 {
    public static void main(String[] args) {        
        String[] strs = {"张三-18","李四-33","王五-21","赵六-20"};
        int sumOfAge = 0;        
        for (int i = 0; i < strs.length; i++) {
            String[] info = strs[i].split("-");           
            int age = Integer.parseInt(info[1]);         
            sumOfAge += age;       
        }        
        double averageOfAge = (double) (sumOfAge / strs.length);                
        System.out.println("所有人的总年龄是" + sumOfAge);       
        System.out.println("所有人的平均年龄是" + averageOfAge);    
    }
}
二、高级For循环

高级地方:1、规避使用下标进行遍历的场景 2、结构更加的简单

语法结构:

for(数据类型 变量名: 数组){}

示例:

public class ForDemo { 
    public static void main(String[] args) {    
        int[] nums = {11,34,23,22,21};     
        //这种直接根据:元素来进行遍历     
        for(int a : nums){       
            System.out.println(a);     
        }             
    }   
}

当多个条件参与筛选的时候,需要使用到逻辑运算符 && || !

&& 逻辑和 代表 多个条件必须要同时满足

|| 逻辑或 代表 多个条件任意满足其中的一个

! 逻辑非 代表取反

public class ForDemo {  
    public static void main(String[] args) {     
        int[] nums = {24,11,23,48,28};  
        //筛选出所有能被 4 整除的数据,还要被7整除   
        for (int num : nums) {    
            if ((num %  4 == 0) && (num % 7 == 0)){                
                System.out.println(num);    
            }   
        }  
    }
}
public class ForDemo {  
    public static void main(String[] args) {    
        int[] nums = {24,11,23,48,28};   
        for (int num : nums) {        
            //找出不能被 4 整除的数据,需要使用逻辑非     
            if (!(num %  4 == 0)){        
                System.out.println(num);     
            }  
        } 
    }
}

三、char

新的数据类型

public class ForDemo {   
    public static void main(String[] args) {      
        m1();  
    } 
    public static void m1(){   
        String name = "张三";    
        char a = 'a';    
        char b = 'b';     
        System.out.println(a > b); 
    }
}

说明:

1、多个字符,组合起来就构成了字符串

2、单个字符中,只能存放1个符号

3、字符使用单引号进行编程,字符串使用双引号进行编程

4、字符串不能参与比较,但是字符是可以参与比较的


ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统!

原因是:Java平台将 字符 转换 对应的 10进制,然后再进行比较!

String str = "1werAEWRQ2Sasdb3";//有多少个字符?//有多少个数字?//有多少个小写字母?//有多少个大写字母?

代码:

public static void main(String[] args) {  
    String str = "1werAEWRQ2Sasdb3";   
    //有多少个字符?  
    System.out.println(str.length()); 
    //将字符串 转换为 字符数组  
    char[] arrs = str.toCharArray();
    //['1','w','e','r'……] 
    //定义3个计数器   
    int c01 = 0,c02 = 0,c03 = 0; 
    //遍历   
    for (char c : arrs) { 
        if(c >= '0' && c <= '9'){   
            c01 ++;//数字  
        } 
        if(c >= 'A' && c<= 'Z'){   
            c02 ++;//大写   
        }  
        if(c >= 'a' && c<= 'z'){  
            c03 ++;//小写    
        } 
    } 
    System.out.println("数字有: " + c01);   
    System.out.println("大写有: " + c02); 
    System.out.println("小写有: " + c03);}
5、IF分支介绍&遍历&筛选&统计

刚刚的代码:

public static void main(String[] args) {   
    String str = "1werAEWRQ2Sasdb3";    //有多少个字符?    
    System.out.println(str.length());  
    char[] arrs = str.toCharArray();//['1','w','e','r'……]   
    //定义3个计数器   
    int c01 = 0,c02 = 0,c03 = 0;  
    //遍历  
    for (char c : arrs) {     
        if(c >= '0' && c <= '9'){   
            c01 ++;//数字    
        }     
        if(c >= 'A' && c<= 'Z'){   
            c02 ++;//大写      
        }    
        if(c >= 'a' && c<= 'z'){  
            c03 ++;//小写   
        }  
    }  
    System.out.println("数字有: " + c01);  
    System.out.println("大写有: " + c02); 
    System.out.println("小写有: " + c03);}

说明:IF单分支不具备“排它性”的

介绍:IF的分支

未命名文件

语法:

if(条件){
    //业务代码
}
//双分支
if(条件){
    //业务代码1
}else{
    //业务代码2
}
//多分支
if(条件1){
    //业务代码1
}else if(条件2){
    //业务代码2
}else if(条件3){
    //业务代码3
}……else if(条件n){
    //业务代码n
}else{
    //业务代码
}

多分支最大的好处:提升控制流程的 性能!

一、数组的最值

需求:int[] nums = {23,11,34,21,30}

求:最大值,最小值是多少?

image-20240510161619128

public class ForDemo {
    public static void main(String[] args) {
        m5();
    }
    public static void m5(){
        int[] nums = {23,11,34,21,30};
        //默认 0 号元素,最大
        int max = nums[0];
        for (int i = 1; i < nums.length; i++) {
            if(max < nums[i]){
                max = nums[i];
            }
        }
        System.out.println("最大值:" + max);
    }
}
二、人机交互
public static void main(String[] args) {
    int a = 5;
    int b = 6;
    //问电脑要结果!
    System.out.println( a + b );
}

注意:一个正常的程序,绝对不只有 问电脑要结果,还应该给数据!

public static void main(String[] args) {
    System.out.println("请输入一个小数:");
    double pi = new Scanner(System.in).nextDouble();
    System.out.println(pi);
}
public static void m7(){
    System.out.println("请输入一个字符串:");
    String str = new Scanner(System.in).next();
    System.out.println(str);
}
public static void m6(){
    System.out.println("请输入第1个数值:");
    //输入一个数值
    int a = new Scanner(System.in).nextInt();
    System.out.println("请输入第2个数值:");
    int b = new Scanner(System.in).nextInt();
    //问电脑要结果!
    System.out.println( a + b );
}
总结

1、增强for循环,以元素为单位进行循环;普通for,以下标为单位进行循环;

2、String 类:startsWith() endWitn() contains() equals() split() toCharArray()

3、IF分支:单分支 双分支 多分支

4、逻辑运算符:&& || !

5、键盘输入事件: new Scanner(System.in).next*();

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值