题目
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下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);
}
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;
}
}
public static int judge(String str1, String str2) {
char[] ch1 = str1.toCharArray();
char[] ch2 = str2.toCharArray();
if (str1.length() != str2.length()) {
return 1;
} else {
if (str1.equals(str2)) {
return 2;
} else {
if (str1.equalsIgnoreCase(str2)) {
return 3;
} else {
return 4;
}
}
}
}
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";
int n = judge(str1, str2);
System.out.print( "比较\t" + str1 + "\t和\t" + str2 + "\t结果:");
situation(n);
n = judge(str1, str1);
System.out.print( "比较\t" + str1 + "\t和\t" + str1 + "\t结果:");
situation(n);
n = judge(str1, str3);
System.out.print( "比较\t" + str1 + "\t和\t" + str3 + "\t结果:");
situation(n);
n = judge(str1, str4);
System.out.print( "比较\t" + str1 + "\t和\t" + str4 + "\t结果:");
situation(n);
System.out.println("\n*************************************************************\n");
}
}
运行结果
*************************************************************************************************
给定两个仅由大写字母或小写字母组成的字符串(长度介于1到10之间),它们之间的关系是以下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:两个字符串长度相等,但是即使是不区分大小写也不能使这两个字符串一致。
*************************************************************************************************
第一个字符串
请输入仅由大写字母或小写字母组成的字符串(长度介于1到10之间):
总结
本题涉及到的一些知识点
1. 枚举 switch 语句
2. char[] ch1 = str1.toCharArray()
3. str1.equals(str2)
4. str1.equalsIgnoreCase(str2)
5. .trim();
6. Character.isLowerCase(ch[i])
7. 由于代码较长,可通过优化参数,返回值传递路径进行简单的一次简化代码