【Java】基础练习(九)

文章介绍了如何在Java中创建一个Person类,包含姓名、性别、年龄和婚姻状态等属性,并在CAB类中实现canMarry方法来判断两个Person对象是否可以结婚。同时,还有两个示例展示了统计字符串中的字母和数字数量,以及检查字符串是否为回文的代码。
摘要由CSDN通过智能技术生成

1.结婚

创建一个Person类,如下:

public class Person{
    
    private String name;
    
    private Character gender;
    
    private Integer age;
    
    private Boolean marry;
    
    // 省略 getter / settter / 构造 / toString / hashCode / equals   
}

有一个类CAB,有一个canMarry方法,接收两个Person对象,返回boolean值表示两个人能否结婚。


(1)Person类:

package swp.kaifamiao.codes.Java.d0822;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Person {
    private String name;

    private Character gender;

    private Integer age;

    private Boolean marry;

    public Person() {
    }

    public Person(String name, Character gender, Integer age, Boolean marry) {
        this.name = name;
        this.gender = gender;
        this.age = age;
        this.marry = marry;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return gender
     */
    public Character getGender() {
        return gender;
    }

    /**
     * 设置
     * @param gender
     */
    public void setGender(Character gender) {
        this.gender = gender;
    }

    /**
     * 获取
     * @return age
     */
    public Integer getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(Integer age) {
        this.age = age;
    }

    /**
     * 获取
     * @return marry
     */
    public Boolean getMarry() {
        return marry;
    }

    /**
     * 设置
     * @param marry
     */
    public void setMarry(Boolean marry) {
        this.marry = marry;
    }

    @Override
    public String toString() {
        return "姓名:" + name + ", 性别: " + gender + ", 年龄: " + age;
    }
}

(2)CAB类:

package swp.kaifamiao.codes.Java.d0822;

import java.util.Scanner;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class CAB {

    public static void start(){
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入第一个人的信息:");
        System.out.print("姓名:");
        String name1 = scanner.nextLine();
        System.out.print("性别:");
        char gender1 = scanner.nextLine().charAt(0);
        System.out.print("年龄:");
        int age1 = scanner.nextInt();
        System.out.print("是否已婚(true/false):");
        boolean marry1 = scanner.nextBoolean();
        scanner.nextLine();  // 清除缓冲区的换行符

        System.out.println("请输入第二个人的信息:");
        System.out.print("姓名:");
        String name2 = scanner.nextLine();
        System.out.print("性别:");
        char gender2 = scanner.nextLine().charAt(0);
        System.out.print("年龄:");
        int age2 = scanner.nextInt();
        System.out.print("是否已婚(true/false):");
        boolean marry2 = scanner.nextBoolean();


        Person per1 = new Person(name1, gender1, age1, marry1);
        Person per2 = new Person(name2, gender2, age2, marry2);
        CAB cab = new CAB();
        System.out.println(per1.getName() + " 和 " + per2.getName() + " " + cab.canMarry(per1, per2));
        scanner.close();
    }

    /**
     * 能否结婚的方法
     * @param per1
     * @param per2
     * @return
     */
    public String canMarry(Person per1,Person per2){
       if (!per1.getGender().equals(per2.getGender()) && !per1.getMarry() && !per2.getMarry()){
           if (per1.getAge() > 18 && per2.getAge() > 18){
               //可以结婚
               return "可以结婚";
           }
       }
       //不能结婚
       return "不能结婚";
    }

}

(3)测试类:

package swp.kaifamiao.codes.Java.d0822;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Test {
    public static void main(String[] args) {
        CAB.start();
    }
}

运行效果:

在这里插入图片描述
在这里插入图片描述


2.统计个数

        请编写程序,由键盘录入一个字符串,统计字符串中英文字母和数字分别有多少个。比如:Hello12345World中字母:10个,数字:5个。


package swp.kaifamiao.codes.Java.d0822;

import java.util.Scanner;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Count {
    /**
     * 定义一个输入字符串的方法
     * @return 输入的字符串
     */
    public static String inputString() {
        Scanner sca = new Scanner(System.in);
        System.out.println("请输入字符串:");
        //拿到控制台的输入
        String str = sca.next();
        return str;
    }

    /**
     * 定义一个查询字母和数字的方法
     */
    public void selectCount(){
        //定义字母和数字的计数器,初始值为0
        int engCount = 0;
        int numCount = 0;

        String str = inputString();
        //定义一个char类型的数组,遍历字符串
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            //判断是否为字母
            if (Character.isLetter(ch)){
                engCount++;
            } else if (Character.isDigit(ch)) {
                numCount++;
            }
        }
        System.out.println("字符串中字母的数量为:" + engCount);
        System.out.println("字符串中数字的数量为:" + numCount);
    }

    /**
     * 程序入口,主函数
     * @param args
     */
    public static void main(String[] args) {
        // 创建Count类的实例
        Count count = new Count();
        // 调用selectCount方法执行计数
        count.selectCount();
    }
}

运行效果:

在这里插入图片描述


3.回文字符串

         请定义一个方法用于判断一个字符串是否是对称的字符串,并在主方法中测试方法。例如:“abcba”、"上海自来水来自海上"均为对称字符串。


(1) Palindromic判断方法类:

package swp.kaifamiao.codes.Java.d0822;
/*
 * 回文字符串判断
 */

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class Palindromic {
    /**
     * 定义一个判断是否是回文字符串的方法
     */
    public static boolean isPalindrome(String src){
        /*
         定义字符串最左以及最右的下标(索引)
         */
        int left = 0;
        int right = src.length()-1;

        /*
         * 让最左与最右做比较,若第一次两边一样,则让左边下标右移一位,右边下标左移一位
         * 因为不知道次数,所以使用while循环,直到左边大于等于右边时才终止循环
         */

        while (left < right){
            if (src.charAt(left) != src.charAt(right)){
                return false;
            }

            left++;
            right--;
        }
        return true;
    }
}

(2) PalindromicTest测试类:

package swp.kaifamiao.codes.Java.d0822;

import java.util.Scanner;

/**
 * {class description}
 *
 * @author SWP
 * @version 1.0.0
 */
public class PalindromicTest {
    /**
     * 程序入口,主方法
     * @param args
     */
    public static void main(String[] args) {
        //控制台输入字符串
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个字符串:");
        String src = input.next();

        //调用Palindromic.isPalindrome()方法,定义一个布尔类型的值去接收return的结果
        boolean isPalindromic = Palindromic.isPalindrome(src);

        if (isPalindromic){
            System.out.println(src + "\t" + "是回文字符串!");
        }else {
            System.out.println(src + "\t" + "不是回文字符串!");
        }
    }
}

(3)运行效果:

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值