老师给我的问题是:创建一个分组作业,提示用户输入姓名,然后显示分组作业。小组作业取决于学生姓氏的第一个字母。以A到I开头的姓氏分配给第1组,J到S分配给第2组,T到Z分配给第3组。
示例输出:输入您的名字和姓氏:Janus Smith您被分配到第2组。
我不知道获取第二个单词的第一个字母的代码,如果它们仍然是代码错误,请修复它。Tnx。
Scanner scan = new Scanner(System.in);
String name;
System.out.println("Enter your first and last name: ");
name = scan.nextLine();
for (int i = 0; i < name.length; i++){
char ch = name.charAt(0);
if(ch >= 'A' || ch >= 'a' || ch <= 'I' || ch <= 'i'){
System.out.println("You are assigned to group 1.");
}
else if (ch >= 'J' || ch >= 'j' || ch <= 'S' || ch <= 's'){
System.out.println("You are assigned to group 2.");
}
else if (ch >= 'T' || ch >= 't' || ch <= 'Z' || ch <= 'z'){
System.out.println("You are assigned to group 3.");
}
}
您可以拆分以空格分隔的字符串,并提取如下部分:
String name = "First Second";
String[] parts = name.split(" ");
// extract the second string from the 0-indexed array
String second = parts[1];
// extract the first character from the second string
char ch = second.charAt(0);
// no need to loop for a single name check
if(ch >= 'A' && ch <= 'I' || ch >= 'a' && ch <= 'i'){
System.out.println("You are assigned to group 1.");
}
else if (ch >= 'J' && ch <= 'S' || ch >= 'j' && ch <= 's'){
System.out.println("You are assigned to group 2.");
}
else if (ch >= 'T' && ch <= 'Z' || ch >= 't' && ch <= 'z'){
System.out.println("You are assigned to group 3.");
}
else {
System.out.println("Invalid input.");
}
使用String#split
按空格分割名称,得到两部分。
String[] parts = name.split(" ");
parts[0]
具有第一个名称,而parts[1]
具有最后一个名称。
获取姓氏的第一个字符作为
char ch = parts[1].charAt(0);
此外,您的条件也是错误的。必须使用&&
检查字符是否在范围之间。
if(ch >= 'A' && ch <= 'I' || ch >= 'a' && ch <= 'i')
为了简化条件,可以将字符转换为小写或大写,并检查一组范围。
char ch = Character.toUpperCase(parts[1].charAt(0));
if (ch >= 'A' && ch <= 'I') {...}
else if (ch >= 'J' && ch <= 'S') {...}
else {...}