poj1002的java实现
import java.io.BufferedInputStream;import java.io.DataInputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class Main {
/**
* 以下方法主要完成以下功能:
* 如果是一个数字,则直接返回,如果只一个字符,则返回它对应的数字
* @param c
* @return
*/
public static char getNum(char c) {
//如果这个字符是一个数字,则直接返回
if (Character.isDigit(c)) {
return c;
}
//如果这个字符是A或B或C,则返回2.以下规则类似
if (c == 'A' || c == 'B' || c == 'C') {
return '2';
}
if (c == 'D' || c == 'E' || c == 'F') {
return '3';
}
if (c == 'G' || c == 'H' || c == 'I') {
return '4';
}
if (c == 'J' || c == 'K' || c == 'L') {
return '5';
}
if (c == 'M' || c == 'N' || c == 'O') {
return '6';
}
if (c == 'P' || c == 'R' || c == 'S') {
return '7';
}
if (c == 'T' || c == 'U' || c == 'V') {
return '8';
}
if (c == 'W' || c == 'X' || c == 'Y') {
return '9';
}
return '#';
}
public static void main(String[] args) throws IOException {
//DataInputStream(InputStream in).使用指定的底层 InputStream 创建一个 DataInputStream。
DataInputStream scan = new DataInputStream(new BufferedInputStream(System.in));
//TreeMap() .使用键的自然顺序构造一个新的、空的树映射。
Map< String, Integer> tm = new TreeMap();
int n = Integer.parseInt(scan.readLine().trim());
for (int i = 0; i < n; i++){
//将输入号码中的"-"去掉
String s = scan.readLine().replace("-", "");
StringBuilder sb = new StringBuilder();
for (int k = 0; k < s.length(); k++) {
//得到的c可能是数字、#
char c = getNum(s.charAt(k));
//isDigit(char ch).确定指定字符是否为数字。
/**
* if语句的主要逻辑是:
* 如果c是数字,则将他加入到标准号码串中
*/
if (Character.isDigit(c)) {
sb.append(c);
}
}
//将字符串转换成标准形式的号码
String result = sb.toString().substring(0, 3) + '-' + sb.toString().substring(3);
//containsValue(Object value) . 如果此映射为指定值映射一个或多个键,则返回 true。
/**
* if···else主要完成以下逻辑
* 1)判断TreeMap里面是否应含有这个号码,如果有,则将其对应的次数+1.
* 2)如果没有,则将该号码的次数设置为1
*/
if (tm.containsKey(result)) {
//get(Object key) .返回指定键所映射的值
//,如果对于该键而言,此映射不包含任何映射关系
补充:软件开发 , C++ ,