Demo1

Java 小练习

要求:

      从键盘输入一个包含数字和字母的字符串,统计的字符串的长度,字符串中字母的个数, 数字的个数,将字符串中小写字母转换成大写, 大写字母转换成小写。

  • 重点:
    正则表达式   append用法
java里只有StringBuffer和StringBulid才有append方法,String里是没有append方法

 

 

package com.Demo1;
import java.util.Locale;
import java.util.Scanner;

public class Demo1 {
    static Scanner input = new Scanner(System.in);
    static String str = "";

    public static void main(String[] args) {/**主函数*/
        control();

    }

    public static void control() {               /**控制函数*/
        System.out.println("请输入字母和数字组成的字符串:");
        String  str = input.next();               /**字符串输入*/
        if (Demo1.isRightString(str)) {          /**通过函数isRightString(str)的返回值判断是否合法*/
            System.out.println("输入字符串的长度是:" + getlength(str));
            System.out.println("字母的长度是:" + getleurt(str));
            System.out.println("字母为:" + str.substring(0, getleurt(str)));
            System.out.println("数字的长度为:" + (str.length() - getleurt(str)));
            System.out.println("数字为:" + str.substring(getleurt(str), str.length()));
            System.out.println("字母大写为:" + str.substring(0, getleurt(str)).toUpperCase());/**前期字母数据已得到*/
            System.out.println("字母小写为:" + str.substring(0, getleurt(str)).toLowerCase());/**得到之母数据进行大小写转换没有些转换函数*/
            System.out.println("原字母为:"+str.substring(0, getleurt(str)));
            System.out.println("大小写转换"+convent(str,getleurt(str)));
        } else {
            control();/**非法输入循环*/
        }
    }

    public static boolean isRightString(String input) {
        boolean reback;
        if (input.matches("[a-zA-Z]*[0-9]+")) {/**正则表达式  其中*为有零个或多个相同   +为一个和一个以上相同*/
            reback = true;
        } else {
            System.out.println("输入值不合法");
            reback = false;
        }
        System.out.println(reback);
        return reback;
    }

    public static int getlength(String input) {/**返回字符串长度*/
        return input.length();
    }

    public static int getleurt(String input) {
        int i;
        Loop:
        for (i = 0; i < input.length(); i++) {/**for循环遍历每个字符*/
            String number = String.valueOf(input.charAt(i));/**将遍历得到的每个字符都赋值给number*/
            if (number.matches("[0-9]+")) {/**将number中的字符用正则表达式进行判断
                                                    如果出现数字则为true
                                                     此处的 + 不可改变为*
                                                                */
                break Loop;        /** loop为跳出指定循环,原本使用的是双层for循环,太过冗余*/
            }
        }
        return i;/**返回字符串的位置下标*/
    }
    /**
     * 将字符串和字母结束位子传入
     * 通过for循环遍历每个字母
     * 利用正则表达式判断大小写
     * 转换大小写并用append添加到新的字符串中
     * 最后返回字符串
     * */
  public static StringBuffer  convent(String input, int i){/**创建大小写转换函数*/
        String sr=input.substring(0, getleurt(input));//定义String类型sr并将字母写入
        StringBuffer sr1= new StringBuffer();//创建StringBuffer和StringBulid就是new一个新对象
        for(int j=0;j<=i-1;j++) {
            String s = String.valueOf(sr.charAt(j));
            if (s.matches("[a-z]+")) {
                sr1.append(s.toUpperCase());//java里只有StringBuffer和StringBulid才有append方法,String里没有append方法
            } else if(s.matches("[A-Z]+"))  {
                sr1.append(s.toLowerCase());
            }
        }

      return sr1;
    }


}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值