PTA(java,C++)查找电话号码

查找电话号码

题目描述:
文件phonebook1.txt中有若干联系人的姓名和电话号码。
高富帅 13312342222
白富美 13412343333
孙悟空 13512345555
唐三藏 13612346666
猪悟能 13712347777
沙悟净 13812348888
请你编写一个简单的通信录程序,当从键盘输入一个姓名时查找到对应的电话号码并输出。如果没找到则显示Not found. 由于目前的自动裁判系统暂时不能支持用户读入文件,我们编写程序从键盘输入文件中的姓名和电话号码,当输入的名字为noname时,表示结束。noname后面有一个名字,需要查找其对应的电话号码。

输入样例:
白富美 13412343333
孙悟空 13512345555
唐三藏 13612346666
猪悟能 13712347777
沙悟净 13812348888
noname
白骨精

输出样例:
Not found.

  • 解题思路:很明显,题目中姓名和电话号码一一对应,在C++中map容器可以很好地反映出键与键值一一对相应的关系。在java中容器中的映射接口Map可以反映出键与键值一一对相应的关系。其大致流程为:声明容器对象,将姓名和电话号码的关系添加到容器中,然后输入要查找的姓名,判断该键是否在容器中,如果在,输出对应的键值,如果不在输出Not found.

C++编程

#include<iostream>
#include<map>
#include<string>
using namespace std;
int main() {
	map<string,string> m;
	string name;
	string phone;
	string flag("noname");
	cin>>name;
	while(name!=flag) {
		cin>>phone;
		m.insert(pair<string, string>(name,phone));
		cin>>name;
	}
	string seek_name;
	cin >>seek_name;
	map<string,string>::iterator p;
	p=m.find(seek_name);
	if(p!=m. end())
		cout<<p->second;
	else
		cout <<"Not found."<<endl;
	return 0;
}

java编程

package first;
import java.util.*;
public class first {
     public static void main(String args[]){
     	Map<String,String> hm=new HashMap<String,String>();
    	Scanner in=new Scanner(System.in);
    	while(in.hasNext()){//判断是否还有后续元素
    		String name=in.next();
    		if(name.equals("noname")){
    			break;
    		}
    		else{
    			String phone=in.next();
    			hm.put(name, phone);
    		}
    	}
    	String seek_name=in.next();//返回键(从键盘输入)
    	if(hm.containsKey(seek_name)){//判断是否包含指定的键
    		System.out.println(hm.get(seek_name));//输出键对应的值
    	}
    	else {
			System.out.println("Not found.");
		}
     }
}

你可能感兴趣的:(C++,JAVA)