2015-06-06 67 views
-3

我對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

正如附註:您在電話簿中存儲單詞完成作爲名稱。用戶可以嘗試搜索名稱,完成後將打印*號碼爲空* – palto

+0

相當有用,謝謝! – sajjad

回答

4

添加一個標誌,當你發現用戶的輸入相匹配的名稱,不打印出最後一行,當你發現的比賽,對於你可以改變你的代碼是這樣的:

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"); 
} 
+0

謝謝。現在可以了! – sajjad

0

使用地圖將簡化這個 地圖<> contactBook =新的Hashmap <>()// 然後加載使用的電話號碼和姓名 您還可以使用數據結構中的地圖將不會允許DUP名

相關問題