我对java很新,我刚刚开始了几天的课程。我写了下面的代码来制作一本简单的电话簿。它首先获取姓名和电话号码,然后获取名称并传递电话号码。除了名字,如果我输入任何名字,它将打印最后一行(名称不在列表中),然后是相关的号码!!!为什么呢?
import java.util.Scanner;
class MyPhoneBook {
public static void main(String[] args) {
Scanner myScan = new Scanner(System.in);
String[] name = new String[200];
String[] number = new String[200];
System.out.println("when finished all contacts, just type : finish");
for (int a = 0; a < 200; a++) {
System.out.print("\nenter name:");
name[a] = myScan.nextLine();
if (name[a].equals("finish")) {
break;
} else {
}
System.out.print("enter number:");
number[a] = myScan.nextLine();
}
for (int a = 1; a > 0; a++) {
System.out.println("\nenter name to find number:\n");
String name2 = myScan.nextLine();
for (int b = 0; b < 200; b++) {
if (name2.equals(name[b])) {
System.out.println("number is " + number[b]);
break;
}
}
System.out.println("----THE NAME IS NOT IN THE LIST----\n");
}
}
}
答案 0 :(得分:2)
当您找到与用户输入相匹配的名称时添加标记,并在找到匹配项时不打印最后一行,因为您可以更改代码:
for (int a = 1; a > 0; a++) {
System.out.println("\nenter name to find number:\n");
String name2 = myScan.nextLine();
boolean isNameFound = false;
for (int b = 0; b < 200; b++) {
if (name2.equals(name[b])) {
System.out.println("number is " + number[b]);
isNameFound = true;
break;
}
}
if (!isNameFound)
System.out.println("----THE NAME IS NOT IN THE LIST----\n");
}
答案 1 :(得分:0)
使用地图可以简化这一过程 地图&LT;&GT; contactBook = new Hashmap&lt;&gt;() //然后使用电话号码和名称加载地图 您还可以使用不允许重复名称的数据结构