我现在已经做了大约30分钟的这个程序了,我想以这种格式制作它,即使我非常确定有更好的方法来做这个程序!
我一直试图做的是从字母A到我应该按照他们姓氏的第一个字母放在一起。并且,J到S应该是第2组,T到Z应该是第3组。我不确定如何使输出等于group1和任何其他组,当然取决于姓氏!
import java.util.Scanner;
public class GroupAssignment {
public static void main(String[] args) {
String firstName;
String lastName;
String output;
String group1 = "a,b,c,d,e,f,g,h,i";
String group2 = "j,k,l,m,n,o,p,q,r,s";
String group3 = "t,u,v,w,x,y,z";
Scanner input = new Scanner(System.in);
System.out.print("Enter your first name: ");
firstName = input.nextLine();
System.out.print("Enter your last name: ");
lastName = input.nextLine();
output = lastName.substring(0,1).toLowerCase();
if (output.equals(group1)) {
System.out.println(firstName+ lastName+ "is assigned to Group 1.");
}
else if (output.equals(group2)) {
System.out.println(firstName+ lastName+ "is assigned to Group 2.");
}
else if (output.equals(group3)) {
System.out.println(firstName+ lastName+ "is assigned to Group 3.");
}
}
}
请帮助我如何完成这项工作!
答案 0 :(得分:2)
您不应该使用.equals
:在姓氏的所有第一个字母不能是a,b,c,d,...
之后。它可能只是其中之一。但是,您可以使用.contains
:
if (group1.contains(output)) {
System.out.println(firstName+ lastName+ "is assigned to Group 1.");
} else if (group2.contains(output)) {
System.out.println(firstName+ lastName+ "is assigned to Group 2.");
} else if (group3.contains(output)) {
System.out.println(firstName+ lastName+ "is assigned to Group 3.");
}
另一个问题是你的打印:
System.out.println(firstName+ lastName+...
我不了解所有文化,但很多人在firstName
和lastName
之间添加了空格,所以:
System.out.println(firstName+" "+lastName+...
可能是更好的选择。
但请注意,这不是正确的方法。字符串不是集合,它是一个序列。有更快的方法来检查集合是否包含元素。我正在考虑HashSet<Char>
或TreeSet<Char>
,它可以在平均情况下的常数时间或对数时间内进行查找。