我正在编写一个需要用户(他们的名字)输入的代码。我想输入一些东西,将每个名字与以前的名字进行比较,这样就不会打印两次名字(所以如果有人输入两次约翰·史密斯,它会打印一些内容,说"这个名字已经被使用了,再试一次")。我的老师告诉我们使用equals或compareTo的方法,但我不知道该怎么做。我的一些代码如下:
while (name <= 32)
{
System.out.println ("Type your first name.");
String firstName=input.nextLine();
System.out.println ();
System.out.println ("Now type your last name.");
String lastName=input.nextLine();
if ((firstName + lastName).equals(firstName + lastName))
{
System.out.println ("That is not your name. Please type in your real name.");
}
else
{
System.out.println ();
System.out.println (firstName + " " + lastName);
}
显然,我在那里所做的并不奏效(使用equals方法)。有人知道能帮上忙的方法吗?
在您的任务中,首先,思考主要思想:
- 您需要输入名称
- 你想把它们相互比较一下
好吧,第一个任务很容易,你已经做到了:)
第二项任务需要澄清。因为你几乎试过了,你只能检查以前的名字。如果你想将每个新名称与以前的名称进行比较,你必须以某种方式存储它们。你看,一台计算机很愚蠢,你必须告诉它每一个命令才能实现你的目标(为你的任务创建算法)。
因此,你的任务的算法或步骤是:
- 决定将数据(名称)存储在哪里|Java有数据存储,如:简单的数组和更高级的结构,如列表、集合等
- 创建空存储|您必须准备好空存储。只需初始化它
- 创建一些循环,您将在其中输入名称|当然有结束条件(32次)
- 在循环中,输入name
- 检查一下|所以,正如我在比赛前所说的。这绝对是愚蠢的,即使一开始你的存储空间是空的,每次你输入的名字都需要经过存储空间(用另一个循环),与每个名字(如果存在)进行比较,如果你突然遇到了相同的名字,你必须再试一次,然后进入第四步。否则,如果您的存储中不存在该名称,您必须将其放置,以便在将来检查是否存在另一个重复名称
- 工作到循环结束
就是这样!有家庭作业的小教程)所以你的功课就是实现上面的这个算法。我想现在,你的老师不得不告诉你关于阵列的事吗?
对于第五步,如果你不了解数据结构,甚至还有疯狂的方法来检查名称。您可以创建一些String变量,在其中您将使用一些棘手的方法来存储名称,例如:"'JohnSmith''AllienWood'"。接下来,每次输入新名称时,您都必须遍历这个可能的巨大字符串,并检查它的子字符串。狡猾的怪胎!
如果我理解你的问题,这应该是一个适合你的解决方案。
ArrayList<String> names = new ArrayList<>();
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
boolean access;
while (true) {
access = true;
System.out.println("Type your first name.");
String firstName = input.readLine();
//System.out.println();
System.out.println("Now type your last name.");
String lastName = input.readLine();
String fullName = firstName + " " + lastName;
if(names.size()==0) {
names.add(fullName);
continue;
}
for (String name : names) {
if (name.equals(fullName)) {
System.out.println("That is not your name. Please type in your real name.");
access = false;
break;
}
}
if(access) {
names.add(fullName);
System.out.println();
System.out.println(firstName + " " + lastName);
}
}