小组作业Java教科书

时间:2015-05-25 22:33:46

标签: java string

我现在已经做了大约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.");
        }

    }

}

请帮助我如何完成这项工作!

1 个答案:

答案 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.");
}

jdoodle demo

另一个问题是你的打印:

System.out.println(firstName+ lastName+...

我不了解所有文化,但很多人在firstNamelastName之间添加了空格,所以:

System.out.println(firstName+" "+lastName+...

可能是更好的选择。

但请注意,这不是正确的方法。字符串不是集合,它是一个序列。有更快的方法来检查集合是否包含元素。我正在考虑HashSet<Char>TreeSet<Char>,它可以在平均情况下的常数时间或对数时间内进行查找。