黑马程序员技术交流社区

标题: 高手过来看看 [打印本页]

作者: 张龙欢    时间: 2013-5-25 00:34
标题: 高手过来看看
本帖最后由 张龙欢 于 2013-6-10 14:03 编辑

今天宿舍的哥们去面试,遇到的一个题!想了好久都没想出来怎么做,希望高手能帮下忙
/**
*
*  省级编码:21401000000
市级编码:21401030000市级编码:21401010400
区县编码:21401010000区县编码:21401020000区县编码:21401010100区县编码:21401010200
科所编码:21400000000科所编码:21401010300科所编码:21401040000科所编码:21402000000科所编码:21401010500
根据题目要求:打印出上述格式:
*
*/
public class Test{
static int begin=0;

public static void main(String[] agrs){

  String prevence = "21401000000,21401030000,21401010400,21401010000,"
    +"21401020000,21401010100,21401010200,21400000000,21401010300,"
    +"21401040000,21402000000,21401010500";
  

作者: 神之梦    时间: 2013-5-25 00:46
不可以直接sop逐个打印?{:soso_e120:}
作者: chouwayメ    时间: 2013-5-25 12:46
本帖最后由 chouwayメ 于 2013-5-25 12:48 编辑

你的意思是?题目没看清楚.不是很懂.
下面是我自己大概练写了代码下,主要是通过编码查找所属编码的具体情况.  
1:将所属不同   key:value 存入HashMap;
2:输入你想知道的编码
3:匹配HashMap中的key值,检验,并输出相应结果.
  1. import java.io.*;
  2. import java.util.*;
  3. import java.util.Map.Entry;
  4. import java.util.regex.*;
  5. public class Test1
  6. {
  7.         public static void main(String[] args) throws Exception{
  8.                 Map<Long,String> ms=new HashMap<Long,String>( );//建HashMap 装key:value
  9.                 ms.put(21401000000l,"省级编码");
  10.                 ms.put(21401030000l,"市级编码");
  11.                 ms.put(21401010400l,"市级编码");
  12.                 ms.put(21401010000l,"区县编码");
  13.                 ms.put(21401020000l,"区县编码");
  14.                 ms.put(21401010100l,"区县编码");
  15.                 ms.put(21401010200l,"区县编码");
  16.                 ms.put(21400000000l,"科所编码");
  17.                 ms.put(21401010300l,"科所编码");
  18.                 ms.put(21401040000l,"科所编码");
  19.                 ms.put(21402000000l,"科所编码");
  20.                 ms.put(21401010500l,"科所编码");
  21.                
  22.                 BufferedReader bufIn=new BufferedReader(new InputStreamReader(System.in));//键盘输入
  23.                 String line=null;
  24.                 while((line=bufIn.readLine())!= null)
  25.                 {
  26.                         
  27.                         Long lon=Long.parseLong(line);
  28.                         for(Entry<Long, String> entry:ms.entrySet()) //通过高级for遍历
  29.                                 {        
  30.                                         if(!line.matches("[0-9]{12}"))
  31.                                                 {
  32.                                                         System.out.println("非法编码!请输入12位编码...");
  33.                                                         break;
  34.                                                 }
  35.                                         Long key=entry.getKey();
  36.                                         Long check=Long.parseLong(line);
  37.                                         if(check==key)
  38.                                                 {System.out.println(entry.getValue());break;}
  39.                                         else
  40.                                                 {System.out.println("未编制号码");break;}
  41.                                 };
  42.                         break;
  43.                
  44.                 }
  45.                
  46.                
  47.         }
  48. }
复制代码

作者: 张龙欢    时间: 2013-5-25 14:57
chouwayメ 发表于 2013-5-25 12:46
你的意思是?题目没看清楚.不是很懂.
下面是我自己大概练写了代码下,主要是通过编码查找所属编码的具体情况. ...

是按照上面的格式打印出来,还有String Prevevce是公司规定好了的!
作者: chouwayメ    时间: 2013-5-25 15:39
本帖最后由 chouwayメ 于 2013-5-25 15:43 编辑
张龙欢 发表于 2013-5-25 14:57
是按照上面的格式打印出来,还有String Prevevce是公司规定好了的!

哦 原来这样 就是打印.这样应该就可以了
  1. import java.io.*;
  2. import java.util.*;
  3. import java.util.Map.Entry;

  4. public class Test1
  5. {
  6.         public static void main(String[] args) throws Exception
  7.         {
  8.                 Map<Long,String> ms=new HashMap<Long,String>( );
  9.                 ms.put(21401000000l,"省级编码");
  10.                 ms.put(21401030000l,"市级编码");
  11.                 ms.put(21401010400l,"市级编码");
  12.                 ms.put(21401010000l,"区县编码");
  13.                 ms.put(21401020000l,"区县编码");
  14.                 ms.put(21401010100l,"区县编码");
  15.                 ms.put(21401010200l,"区县编码");
  16.                 ms.put(21400000000l,"科所编码");
  17.                 ms.put(21401010300l,"科所编码");
  18.                 ms.put(21401040000l,"科所编码");
  19.                 ms.put(21402000000l,"科所编码");
  20.                 ms.put(21401010500l,"科所编码");
  21.                 String[] str=new String[]{"省级编码","市级编码","区县编码","科所编码"};
  22.                
  23.             for(int i=0;i<4;i++)
  24.         {
  25. for(Entry<Long, String> entry:ms.entrySet())
  26.          {        
  27.                 Long   lon        = entry.getKey();
  28.                String value = entry.getValue();
  29.                if(value==str[i])
  30.                      System.out.print(value+":"+lon);
  31.        };
  32. System.out.println();
  33.         }
  34. }
  35. }
复制代码

作者: 袁梦希    时间: 2013-5-25 16:01
chouwayメ 发表于 2013-5-25 15:39
哦 原来这样 就是打印.这样应该就可以了

老周,其实楼主的意思是说,前面的代码已经由公司给出了,是这样写的
  1. public class Test{
  2. static int begin=0;

  3. public static void main(String[] agrs){

  4. String prevence = "21401000000,21401030000,21401010400,21401010000,"
  5. +"21401020000,21401010100,21401010200,21400000000,21401010300,"
  6. +"21401040000,21402000000,21401010500";
复制代码
他的意思是让你用这段代码继续编写。


作者: chouwayメ    时间: 2013-5-25 16:31
本帖最后由 chouwayメ 于 2013-5-25 16:50 编辑
袁梦希 发表于 2013-5-25 16:01
老周,其实楼主的意思是说,前面的代码已经由公司给出了,是这样写的他的意思是让你用这段代码继续编写。 ...

{:2_33:}
袁帮主,最后那代码还是没一模一样打印出来. HashMap内在的排序搞得最后输出有些不同.


作者: 杨华东    时间: 2013-6-7 16:02
今天宿舍的哥们去面试,遇到的一个题!想了好久都没想出来怎么做,希望高手能帮下忙
/**
*
*  省级编码:21401000000
市级编码:21401030000市级编码:21401010400
21401010000区县编码:21401020000区县编码:21401010100区县编码:21401010200
科所编码:21400000000科所编码:21401010300科所编码:21401040000科所编码:21402000000科所编码:21401010500
根据题目要求:打印出上述格式:
*
*/
public class Test{
static int begin=0;

public static void main(String[] agrs){

  String prevence = "21401000000,21401030000,21401010400,21401010000,"
    +"21401020000,21401010100,21401010200,21400000000,21401010300,"
    +"21401040000,21402000000,21401010500";
String[] str=prevence.split(",");  
while(true)
{
       if(begin==0)
      System.out.println("省级编码:"+str[0]);
      if(begin==1)
      System.out.println("市级编码:"+str[1]+"市级编码:"+str[2]);
     if(begin==2)
       System.out.ptinlrn("区县编码:"+str[3]+"区县编码:"+str[4]+"区县编码:"+str[5]+"区县编码:"+str[6]);
    if(begin==3)
      System.out.ptinlrn("科所编码:"+str[7]+"科所编码:"+str[8]+"科所编码:"+str[9]+"科所编码:"+str[10]+"科所编码:   "+str[11]);
     begin++;
}
}
其他方式感觉不是很好。满足人家的要求最重要  我感觉。而不是我们想怎么做的更显得我们技术多么牛逼,我是这样想的。
亲,你觉得呢??


作者: 张龙欢    时间: 2013-6-7 17:31
杨华东 发表于 2013-6-7 16:02

这是太谢谢你了!你说的很对
作者: 杨华东    时间: 2013-6-7 22:54
张龙欢 发表于 2013-6-7 17:31
这是太谢谢你了!你说的很对

一起努力,共勉。。。。
作者: 张龙欢    时间: 2013-6-8 11:07
杨华东 发表于 2013-6-7 22:54
一起努力,共勉。。。。

:handshake




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2