第六章 类和对象,字符串

字符串练习题

第一题

编写一个程序将一个字符串中的字符逆序输出。abcdefg ----> gfedcba

main.c

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入字符串:");
        String s = input.next();
        char []s1=s.toCharArray();
        for (int i = 0; i < s1.length-1-i; i++) {
            char a=0;
            a=s1[i];
            s1[i]=s1[s1.length-1-i];
            s1[s1.length-1-i]=a;


        }
        System.out.println(Arrays.toString(s1));


    }

第二题

email地址的验证,要求包含@和”.”。

提示:boolean iscontain = “email_address”.contains(“@”)

mian.c

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        for (int i = 1; i < 2; i++) {


            System.out.println("请输入地址:");
            String address = input.next();
            if (address.contains("@") && address.contains(".")) {
                System.out.println("包含@和.");
                System.out.println("是否要继续验证? yes  or no");
                for (int j = 1; j <2 ; j++) {


                    String s = input.next();
                    if (s.equals("yes")) {
                        i--;
                    } else if (s.equals("no")) {
                        break;
                    } else {System.out.println("输入不合法,请重新输入:");
                        j--;
                    }
                }
            } else if (!(address.contains("@") )&& address.contains(".")){
                System.out.println("不包含@,包含.");
                System.out.println("是否要继续验证? yes  or no");
                for (int j1 = 1; j1 <2 ; j1++) {


                    String s = input.next();
                    if (s.equals("yes")) {
                        i--;
                    } else if (s.equals("no")) {
                        break;
                    } else {System.out.println("输入不合法,请重新输入:");
                        j1--;
                    }
                }
            }
            else if (address.contains("@") && !(address.contains("."))){
                System.out.println("不包含.,包含@");
                System.out.println("是否要继续验证? yes  or no");
                for (int j2 = 1; j2 <2 ; j2++) {


                    String s = input.next();
                    if (s.equals("yes")) {
                        i--;
                    } else if (s.equals("no")) {
                        break;
                    } else {System.out.println("输入不合法,请重新输入:");
                        j2--;
                    }
                }
            }
            else {
                System.out.println("@和.都不包含");
                System.out.println("是否要继续验证? yes  or no");
                for (int j3 = 1; j3 <2 ; j3++) {


                    String s = input.next();
                    if (s.equals("yes")) {
                        i--;
                    } else if (s.equals("no")) {
                        break;
                    } else {System.out.println("输入不合法,请重新输入:");
                        j3--;
                    }
                }
            }
        }


    }

第三题

编写一个方法用来获取身份号中的出生日期,方法参数接收身份证号。

public  String  getBirthday(String idNo){

}

提示:String.substring(…)

main.c

public static void main(String[] args){
        System.out.println("请输入身份证号:");
        Scanner input = new Scanner(System.in);
        String id = input.next();
        String  aa=Work603.getBirthday(id);
        System.out.println("出生日期为:"+aa);
        System.out.println("年份为:"+aa.substring(0,4)+"\t"+"月份为:"+aa.substring(4,6)+"\t"+"日:"+aa.substring(6,8));


    }
 getBirthday.c
 public static String getBirthday(String idNo) {
        String a=idNo.substring(6,14);
        return a;
    }

第四题

将字符串“123”分别转换成short、int、long、double类型。

提示:Integer.parseInt(), Integer.valueOf(), Short.parseShort(), ……

mian.c

 public static void main(String[] args) {
        String num = "123";
        int ints = Integer.parseInt(num);
        Integer integer = Integer.valueOf(num);
        short i = Short.parseShort(num);
        long l = Long.parseLong(num);
        double v = Double.parseDouble(num);
        System.out.println("int类型:"+ints);
        System.out.println("short类型:"+i);
        System.out.println("long类型:"+l);
        System.out.println("double类型:"+v);
        System.out.println("integer包装类型:" + integer);


    }

第五题

将字符串“2  11    32  44        281”中空格分割的数字取出如:2,11,32,….

提示:用正则表达式: \\s+ 表示一个或多个空白符

String.split(regex)  //expression  “\\s+” --> \s+

main.c

public static void main(String[] args) {
        String a="2  11    32  44        281";
        String[] split = a.split("\\s+");
        System.out.println( Arrays.toString(split));


    }

第六题

将下面这段文字中的元音(a,e,i,o,u)的个数分别统计出来,同时统计共有多少个单词(有空格分开的就算一个单词):

The String class represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class.

提示:char[] chrs = String.toCharArray()

int a=0,e=0,i=0,o=0,u=0;

for(char chr : chrs){

if(chr==a||chr==A){

a++;

}else if(chr==e||chr==E){

e++;

}……

}

main.c 

public static void main(String[] args) {
        String a1 = "The String class represents character strings." +
                " All string literals in Java programs," +
                " such as \"abc\", are implemented as instances of this class.";
        char[] chrs = a1.toCharArray();

        int a = 0, e = 0, i = 0, o = 0, u = 0;
        for (char chr : chrs) {
            if (chr == 'a' || chr == 'A') {
                a++;
            } else if (chr == 'e' || chr == 'E') {
                e++;
            } else if (chr == 'i' || chr == 'I') {
                i++;
            } else if (chr == 'o' || chr == 'O') {
                o++;
            } else if (chr == 'u' || chr == 'U') {
                u++;
            }
        }

            System.out.println("a:"+a);
            System.out.println("e:"+e);
            System.out.println("i:"+i);
            System.out.println("o:"+o);
            System.out.println("u:"+u);

    }

第七题

编写一个程序实现将以下字符串中的信息统计出来,实现功能如下要求:

字符串:microsoft成立于1980年11月22日,CEO是bill gate.

  1. 统计字符串中有多少个英文字母

提示:chrs[] --> chr --> if(chr>=’a’ && chr<=’z’ || chr>=’A’ && chr<=’Z’){ … }

     2.统计字符串中有多少个数字

提示:chrs --> chr --> if(chr>=’0’&& chr<=’9’){ … }

     3.将字符串中的小写字母转换成大写,大写转换成小写。

     4.将CEO的名字提取出来。

mian.c

public static void main(String[] args) {
        String a = "microsoft成立于1980年11月22日,CEO是bill gate.";
        int english=0;
        int num=0;
        for (int i = 0; i < a.length(); i++) {
            boolean ii=false;
            char c = a.charAt(i);
            if(c>='a' && c<='z' ){
                english++;
                System.out.print(Character.toUpperCase(c));
                ii=true;
            }
            if (c>='A'&& c<='Z') {
                english++;
                System.out.print(Character.toLowerCase(c));
                ii=true;
            }
            if (c>='0'&& c<='9') {
                num++;
            }
            if (ii==false) {
                System.out.print(c);

            }
        }
        System.out.println();
        System.out.println("english : " + english);
        System.out.println("num : " + num);


        int billGate = a.indexOf("bill gate");
        String substring = a.substring(billGate,billGate+("bill gate").length());
        System.out.println("ceo的名字:" + substring);



    }

第八题

编写一个方法用来验证邮件地址的合法性,方法参数接收要验证的邮件地址:要求邮件地地址中包含有“@”和“.”字符,并且“.”字符要在“@”字符的后面。

//email正则表达式

String regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";

email.matche(regex)

main.c

public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入邮件地址:");
        String email = input.next();
        int regress = Work608.regress(email);
        if (regress == 1) {
            System.out.println("邮件地址合法。");

        } else if (regress == 0) {

            System.out.println("邮件地址不合法。");
        }


    }
 regress.c
 public  static  int  regress(String email) {
        String regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
        if (email.matches(regex)) {
            return 1;
        }
        else return 0;
    }

第九题

将字符串:"jjjjjjaaaamesssssss    annnnnnnnd jacccccccccccccccckkkkkkkkkk" 中连续出现的字符替换成单个字符。

main.c

public static void main(String[] args) {
        String message = "jjjjjjaaaamesssssss    annnnnnnnd jacccccccccccccccckkkkkkkkkk";
        String s = message.replaceAll("(.)\\1+", "$1");
        System.out.println(s);
    }

StringBuffer练习题

第一题

编写一个控制台程序,重复输5个学生的信息(学生姓名,年龄,性别),并把这5个学生对象加入到StringBuffer中buffer.append(student),最后输出StringBuffer的内容,输出格式如下:

1.张三 22 男

2.李四 18 女

……

注意每个学生的信息输出一行。

main.c

public static void main(String[] args) {
        StringBuffer Buffer = new StringBuffer();
        Scanner input = new Scanner(System.in);
        for (int i = 1; i < 6; i++) {
            System.out.println("请输入第"+i+"个学生信息:");
            String name = input.next();
            int age = input.nextInt();
            String ab = input.next();
            Buffer.append(i).append(".").append(name).append("\t").append(age).append("\t").append(ab).append("\n");

        }
        System.out.println(Buffer.toString());

    }

类和对象

第一题

请编写一个Pig 类,可以完成

(1)输出自己的名字,体重,年龄,颜色

Pig.class

public class Pig {
    String name;
    Double ti;
    Integer age;
    String colour;

    public String toString() {
        return name+"\t"+ti+"kg"+"\t"+age+"\t"+colour;
    }

   Pig(String name, Double ti, Integer age, String colour) {
        this.name=name;
        this.ti=ti;
        this.age=age;
        this.colour=colour;
        
    }
    public static void main(String[] args) {
        Pig pig = new Pig("张三", 44.6, 23, "黄色");
        System.out.println(pig);
    }
}

第二题

 Student.class

public class Student {
    String name;
    Integer age;
    String course;
    String habit;
    public  String toString() {
        return "学生信息\n姓名:"+name+"\n"+"年龄:"+age+"\n"+"参加的课程:"+course+"\n"+"兴趣:"+habit+"\n";
    }

    Student(String name, Integer age, String course, String habit) {
        this.name=name;
        this.age=age;
        this.course=course;
        this.habit=habit;
    }
    }

Teacher.class

public class Teacher {

        String name;
        Integer age;
        String course;
        String habit;
        public  String toString() {
        return "教师信息\n姓名:"+name+"\n"+"教龄:"+age+"\n"+"教授的课程:"+course+"\n"+"专业方向:"+habit+"\n";
    }

       Teacher(String name, Integer age, String course, String habit) {
        this.name=name;
        this.age=age;
        this.course=course;
        this.habit=habit;
    }
    }

Test.class

public class Test {
    public static void main(String[] args) {
        Student student = new Student("张三", 18, "语文", "打球");
        System.out.println( student);
       Teacher teacher = new Teacher("李四", 5, "Java", "物联网");
        System.out.println(teacher);

    }
}

第三题

 Dog.class

public class Dog {
    String name;
    String breed;
    String size;
    String colour;
    Integer age;

    public String toString() {
        return name+"\t"+breed+"\t"+size+"\t"+colour+"\t"+age;
    }

    Dog(String name, String breed, String size, String colour, int age) {
        this.name=name;
        this.breed=breed;
        this.size=size;
        this.colour=colour;
        this.age=age;

    }
}

DogTest.class

public class DogTest {
    public static void main(String[] args) {
        Dog dog = new Dog("狗1", "斗牛犬", "大", "黄色", 5);
        System.out.println(dog);
    }
}

Music.class

public class Music {
    String name;
    String date;
    String author;


    public String toString() {
        return "音乐名:"+name+"\n发布日期:"+date+"\n作者:"+author;
    }

    Music(String name, String date, String author) {
        this.name=name;
        this.date=date;
        this.author=author;

    }
}

MusicTest.class

public class MusicTest {
    public static void main(String[] args) {
        Music music = new Music("晨晨", "2022-04-01", "张三");
        System.out.println( music);

    }

}

Phone.class

public class Phone {
    String model;
    String brand;
    String colour;
    String date;


    public String toString() {
        return "型号:"+model+"\n品牌:"+brand+"\n颜色:"+colour+"\n发布日期:"+date;
    }

    Phone(String model, String brand, String colour,  String date) {
        this.model=model;
        this.brand=brand;
        this.colour=colour;
        this.date=date;

    }
}

PhoneTest.class

public class PhoneTest {
    public static void main(String[] args) {
        Phone phone = new Phone("m50", "晨晨", "蓝色", "2022-04-01");
        System.out.println( phone);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值