2016-05-15 13 views
0

問題は私の入力は2ですが、私のプログラムによれば50です。理解できないものがあります。ここで私の目的は、ユーザーが連絡先を追加し続けることができ、すべてが保存され、ハッシュマップで整理される連絡先アプリケーションを作成することです。私のプログラムで私の入力が異なっている

IO分野のテスターでは、私はcontactList()という方法で作業していました。そのため、現在のところ、他のメソッドには多くの機能がありません。

package examples.hash.hashmap.IOintegration; 
    import java.util.HashMap; 
    import java.io.*; 
    public class Contacts{ 
     /*Aim: 
      *Takes input from the user to add, remove or read a contact's number 
      *It also can show you all the contacts the user has added 
      *What's more it is finally integrated with IO!! 
     */ 
     //Initializing some very crucial variables 
     HashMap contacts = new HashMap(); 
     InputStreamReader keyboardMethod = new InputStreamReader(System.in); 
     BufferedReader readerMethod = new BufferedReader(keyboardMethod); 
     public void contactList(){ 
      System.out.println(contacts.entrySet()); 
     } 
     public void addContact(){ 
      System.out.println("Give contacts name"); 
     } 
     public void removeContact(){} 
     public int getNumber(){ 
      return 1; 
     } 
     public static void main(String[] args)throws IOException{ 
      InputStreamReader keyboardOption = new InputStreamReader(System.in); 
      BufferedReader readerOption = new BufferedReader(keyboardOption); 
      Contacts obj = new Contacts(); 
      System.out.print("Type in your option: "); 
      int option = readerOption.read(); 
      System.out.println(option); 
      if(option == 1){ 
       obj.addContact(); 
      } 
      if(option == 2){ 
       System.out.println("HI"); 
       obj.contactList(); 
      } 
      if(option == 3){ 
       obj.getNumber(); 
      } 
      if(option == 4){ 
       obj.removeContact(); 
      } 

     } 
    } 
+1

あなたは、任意のエラーを取得していますか? yesの場合はここに印刷 – emotionlessbananas

+1

http://www.asciitable.com/文字 '' 2 ''はint値が '50'です。 'option'を数値ではなく文字にしたい場合は、' char'とタイプしてください。 – azurefrog

+0

なぜ 'keyboardMethod' /' readerMethod'フィールドがあるのですか?全く同じことをしている 'keyboardOption' /' readerOption'変数を作りますか? – Andreas

答えて

0

FYI:read()は、文字値を返します。技術的にchar、それがEOFのための余分な-1値を可能にするためにintなければなりません。

Comment by azurefrogchar'2'は、ユーザーが入力したを読みたい場合は、これを行う50

数値ASCII/Unicode値で、右です:

int option = Integer.parseInt(readerOption.readLine()); 

用心します悪いユーザー入力。

0

Andreasが正しいです!

私はまた、ウルのアプリケーションのためのウルの意図を知っている!

while {}ループで問題を解決できます。

私の英語は熟練していないので、私はurコードを改善しました!

変更パッケージの名前

package com.fan.component; 

import java.util.HashMap; 
import java.io.*; 
public class Contacts{ 
/*Aim: 
    *Takes input from the user to add, remove or read a contact's number 
    *It also can show you all the contacts the user has added 
    *What's more it is finally integrated with IO!! 
    */ 
//Initializing some very crucial variables 
HashMap contacts = new HashMap(); 
InputStreamReader keyboardMethod = new InputStreamReader(System.in); 
BufferedReader readerMethod = new BufferedReader(keyboardMethod); 
public void contactList(){ 
    System.out.println(contacts.entrySet()); 
} 
    public void addContact() throws IOException{ 
    System.out.println("Give contacts name"); 
    //details 

     String contactName = readerMethod.readLine(); 
     String contactNumber= readerMethod.readLine(); 
     contacts.put(contactName, contactNumber); 

} 
public void removeContact() throws IOException{ 
    //details 
    System.out.println("Give contacts name to remove"); 
    String contactName = readerMethod.readLine(); 

    String contactNumber = (String) contacts.get(contactName); 
    if(contactName != null) 
     contacts.remove(contactNumber); 
    else 
     System.out.println("No this contact"); 
} 
public void getNumber() throws IOException{ 
    //return 1; 
    System.out.println("input contact name"); 
    String contactName = readerMethod.readLine(); 
    String contactNum = (String) contacts.get(contactName); 
    if(contacts == null) 
     System.out.println("No this contact named " + contactName); 
    else 
     System.out.println(contactName + " : " + contactNum); 
} 
public static void main(String[] args)throws IOException{ 
    InputStreamReader keyboardOption = new InputStreamReader(System.in); 
    BufferedReader readerOption = new BufferedReader(keyboardOption); 
    Contacts obj = new Contacts(); 
    /* 
     * added code 
     */ 
    while(true) 
    { 
     System.out.print("Type in your option: "); 
     int option = Integer.parseInt(readerOption.readLine()); 
     System.out.println(option); 
     //add new contact 
     if(option == 1){ 
      obj.addContact(); 
     } 
     //check contact list 
     if(option == 2){ 
      System.out.println("HI"); 
      obj.contactList(); 
     } 
     //get number 
     if(option == 3){ 
      obj.getNumber(); 
     } 
     //remove contact 
     if(option == 4){ 
      obj.removeContact(); 
     } 
    } 

} 

}

関連する問題