首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单电话通讯录

简单电话通讯录
EN

Code Review用户
提问于 2013-05-10 11:58:26
回答 1查看 1.6K关注 0票数 6

我刚开始使用Java编程,为了帮助我学习,我创建了一个简单的电话通讯录。代码按预期运行,但如果更高级的程序员认为我应该以不同的方式运行,我会对此感兴趣。

代码语言:javascript
复制
import com.mongodb.MongoClient;
import com.mongodb.MongoException;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.BasicDBObject;
import com.mongodb.DBCursor;

import java.net.UnknownHostException;
import java.util.Scanner;

import org.bson.types.ObjectId;

public class MongodbPhonebook {
    public static void main(String[] args) {
        boolean boolContinue = true;
        String stringCommand;
        Scanner input = new Scanner(System.in);

        try {
            MongoClient mongoClient = new MongoClient();
            DB db = mongoClient.getDB( "myphonelist" );
            DBCollection coll = db.getCollection("myphonelist");



            do {
                System.out.println("Enter command (add, find, show, quit): ");
                stringCommand = input.nextLine();
                if(stringCommand.equals("quit")){
                    boolContinue = false;
                }
                else if(stringCommand.equals("show")){
                    displayAll(coll);
                }
                else if(stringCommand.equals("add")){
                    insertNumber(coll);
                }
                else if(stringCommand.equals("find")){
                    findNumber(coll);
                }
                else {
                    System.out.println("Unknown command!");
                }
            } while(boolContinue == true);
        }
        catch (UnknownHostException e) {
            e.printStackTrace();
        }
        catch (MongoException e) {
            e.printStackTrace();
        } 
    }

    public static void displayAll(DBCollection collDisplay) {
        DBCursor cursor = collDisplay.find();
        try {
            while(cursor.hasNext()) {
                System.out.println(cursor.next());
            }
        } finally {
            cursor.close();
        }    
        return;
    }

    public static void insertNumber (DBCollection collInsert) {
        Scanner input = new Scanner(System.in);
        ObjectId stringID;
        String stringName = "";
        String stringNumber = "";
        System.out.println("Enter name: ");
        stringName = input.nextLine();
        System.out.println("Enter number: ");
        stringNumber = input.nextLine();
        BasicDBObject doc = new BasicDBObject("name", stringName).
                append("number", stringNumber);
        collInsert.insert(doc);
        stringID = (ObjectId)doc.get( "_id" );
        System.out.println("Result: " + stringID.toString());
        return;
    }

    public static void findNumber (DBCollection collFind) {
        Scanner input = new Scanner(System.in);
        String stringName = "";
        System.out.println("Enter name: ");
        stringName = input.nextLine();
        BasicDBObject query = new BasicDBObject("name", stringName);

        DBCursor cursor = collFind.find();
        cursor = collFind.find(query);

        try {
            while(cursor.hasNext()) {
                System.out.println("found " + cursor.next());
            }
        } finally {
            cursor.close();
        }
    }
}
EN

回答 1

Code Review用户

发布于 2013-05-10 16:05:51

我不知道您使用的JDK是哪个版本,但是在Java 7中,他们在字符串变量上引入了switch语句,而不仅仅是整数。相反,您的代码可以这样读,以使其更具可读性。

代码语言:javascript
复制
do {
                System.out.println("Enter command (add, find, show, quit): ");
                stringCommand = input.nextLine();
                switch(stringCommand)
                {
                    case "quit":
                         boolContinue = false;
                         break;
                    case "show":
                         displayAll(coll);
                         break;
                    case "add":
                         insertNumber(coll);
                         break;
                    case "find":
                         findNumber(coll);
                         break;
                    default:
                         System.out.println("Unknown command!");
                         break;
                }
            } while(boolContinue);   // A boolean variable by itself can be used as an expression. The == true expression is redundant.
票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/26023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档