每日作业20200527 - 字符串的比较

题目

给定两个仅由大写字母或小写字母组成的字符串(长度介于110之间),它们之间的关系是以下4中情况之一:
	1:两个字符串长度不等。比如 Beijing 和 Hebei
	2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
	3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完 全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
	4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如Beijing 和 Nanjing
写一个程序, 判断用户输入的两个字符串属于什么关系
	样例输入 :
		BEIjing
		beiJing
	样例输出 :
		3

代码

import java.util.Scanner;

public class Homework0527 {
    public static void main(String[] args) {
        subject();  //打印题目
        example();  //打印示例

        System.out.println("第一个字符串");
        String temp_str1 = inputJudge();  //调用方法,录入第一个字符串

        System.out.println();

        System.out.println("第二个字符串");
        String temp_str2 = inputJudge();  //调用方法,录入第二个字符串

        System.out.println();

        int num = judge(temp_str1, temp_str2); //调用方法,进行比较
        System.out.println( "比较\t" + temp_str1 + "\t和\t" + temp_str2 );
        System.out.print("结果:");
        situation(num);             //接收比较结果,并打印相应语句
    }

    /**
     * 情况枚举
     * @param num 判断结果
     */
    public static void situation(int num) {     //接收比较结果
        switch (num){
            case 1:
                System.out.println("1:两个字符串长度不等。");
                break;
            case 2:
                System.out.println("2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写)。");
                break;
            case 3:
                System.out.println("3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完 全一致(也就是说,它并不满足情况2)。");
                break;
            case 4:
                System.out.println("4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。");
                break;
        }
    }

    /**
     * 判断方法
     * @param str1  用户输入
     * @param str2  用户输入
     * @return  运算结果
     */
    public static int judge(String str1, String str2) {
        char[] ch1 = str1.toCharArray();    //转成字符数组
        char[] ch2 = str2.toCharArray();

        if (str1.length() != str2.length()) {
            return 1;   //1:两个字符串长度不等。
        } else {
            if (str1.equals(str2)) {
                return 2;   //2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写)。
            } else {
                if (str1.equalsIgnoreCase(str2)) {
                    return 3;   //3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完 全一致(也就是说,它并不满足情况2)。
                } else {
                    return 4;   //4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。
                }
            }
        }
    }

    /**
     * 输入判断
     * @return  返回合法的字符串
     */
    public static String inputJudge() {
        Scanner sc = null;
        System.out.print("请输入仅由大写字母或小写字母组成的字符串(长度介于1到10之间):");
        String str = null;  //声明变量,存储用户输入的字符串
        Boolean b = false;  //声明布尔型变量

        w : while(true){
            sc = new Scanner(System.in);
            b = sc.hasNext();   //是否有输入
            if(b == true){      //有输入
                str = sc.nextLine().trim();     //去掉首尾空格,赋值
                char[] ch = str.toCharArray();  //转化成字符串数组
                if(0 < ch.length && ch.length < 11){    //限定长度
                    f : for(int i = 0; i < ch.length; i++ ){    //循环
                        if( !Character.isLowerCase(ch[i]) & !Character.isUpperCase(ch[i]) ){
                            System.out.print( "输入错误:" + ch[i] + "不是字母,请重新输入:");
                            continue w;  //存在非字母则退出循环
                        }
                    }
                    System.out.println("输入的字符串为:" + str);
                    return str;
                }else{
                    System.out.print("输入错误,请重新输入,要求长度介于1到10之间:");
                    continue;
                }
            }
        }
    }

    /**
     * 题目打印
     */
    public static void subject() {
        System.out.println("\n*************************************************************************************************\n");
        System.out.println("给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下4中情况之一:");
        System.out.println("1:两个字符串长度不等。比如 Beijing 和 Hebei");
        System.out.println("2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing");
        System.out.println("3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完 全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing");
        System.out.println("4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如Beijing 和 Nanjing");
        System.out.println("\n*************************************************************************************************\n");
    }

    public static void example() {
        System.out.println("案例");
        String str1 = "Beijing";
        String str2 = "Hebei";
        String str3 = "BEIjing";
        String str4 = "Nanjing";

        /*1:两个字符串长度不等。比如 Beijing 和 Hebei*/
        int n = judge(str1, str2); //调用方法,进行比较
        System.out.print( "比较\t" + str1 + "\t和\t" + str2 + "\t结果:");
        situation(n);             //接收比较结果,并打印相应语句

        /*2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing*/
        n = judge(str1, str1);
        System.out.print( "比较\t" + str1 + "\t和\t" + str1 + "\t结果:");
        situation(n);

        /*3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完 全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing*/
        n = judge(str1, str3);
        System.out.print( "比较\t" + str1 + "\t和\t" + str3 + "\t结果:");
        situation(n);

        /*4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如Beijing 和 Nanjing*/
        n = judge(str1, str4);
        System.out.print( "比较\t" + str1 + "\t和\t" + str4 + "\t结果:");
        situation(n);

        System.out.println("\n*************************************************************\n");
    }
    
}

运行结果

*************************************************************************************************

给定两个仅由大写字母或小写字母组成的字符串(长度介于110之间),它们之间的关系是以下4中情况之一:
1:两个字符串长度不等。比如 Beijing 和 Hebei
2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写),比如 Beijing 和 Beijing
3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完 全一致(也就是说,它并不满足情况2)。比如 beijing 和 BEIjing
4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。比如Beijing 和 Nanjing

*************************************************************************************************

案例
比较	Beijing	和	Hebei	结果:1:两个字符串长度不等。
比较	Beijing	和	Beijing	结果:2:两个字符串不仅长度相等,而且相应位置上的字符完全一致(区分大小写)。
比较	Beijing	和	BEIjing	结果:3:两个字符串长度相等,相应位置上的字符仅在不区分大小写的前提下才能达到完 全一致(也就是说,它并不满足情况2)。
比较	Beijing	和	Nanjing	结果:4:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。

*************************************************************************************************

第一个字符串
请输入仅由大写字母或小写字母组成的字符串(长度介于110之间)

总结

本题涉及到的一些知识点
1. 枚举 switch 语句
2. char[] ch1 = str1.toCharArray()	// 字符串 转成 字符数组
3. str1.equals(str2)				//不忽略大小写的情况下,字符串是否相同,需注意空指针异常
4. str1.equalsIgnoreCase(str2)		//忽略大小写的情况下,是否相同
5. .trim();     //去掉首尾空格,返回的仍是字符串
6. Character.isLowerCase(ch[i])		//用于判断指定字符是否为小写字母

7. 由于代码较长,可通过优化参数,返回值传递路径进行简单的一次简化代码 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值