我没有得到正确的答案,为什么?

时间:2015-06-06 14:22:17

标签: java

我对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");
        }
    }
}

2 个答案:

答案 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;() //然后使用电话号码和名称加载地图 您还可以使用不允许重复名称的数据结构