败bai
柏bai
拜bai
掰bai
唄bai bei
庍bai xin
扒bai ba
拝bai
挀bai要求取出这些数据里面的多音字,请问各位该如何实现呢?

解决方案 »

  1.   

    用map 以字为键
    一个数组装一个字的拼音
    再把数组设为map  中对应的值,
    取的时候,map.get("字")
    判断数组长度,得出是否是多音字。
      

  2.   

    String[] words = "败bai 柏bai 拜bai 掰bai 唄bai bei 庍bai xin 扒bai ba 拝bai 挀bai".split(" ");
    现在整成这样的数组了,能取出多音字来吗?
      

  3.   

    words[i].getBytes().length!=words[i].length()用这个判断是否有中文,其他的就是一些循环判断了,自己搞。
      

  4.   

    1、不知道你的数据存放在数据库还是存放在文件中。
    2、如果存放在数据库,写sql的时候,按照 字分组,查询拼音。
    封装到 Map<String ,List<String>> 中,一个字,对应多个拼音,即是多音字。3、如果是存储在文件中,则需要java的io读取文件,一行一行分解。
      

  5.   

    楼主数据是怎么存的,没说清楚;按照什么来判断是多音字也没有说清楚。
    我估且做个假设了,假设数据是个String字组;多音字判断标准是中文后根一串拼音,然后一个空格,然后又是一串拼音。
    public static void main(String[] args) {
    Pattern p = Pattern.compile("[\\u4e00-\\u9fa5]{1}[a-z]+\\s{1}[a-z]+");
    Matcher m;

    String[] str = new String[]{"败bai","柏bai","拜bai","掰bai","唄bai bei","庍bai xin","扒bai ba","拝bai","挀bai"};
    for(int i = 0;i < str.length;i++){
    String s = str[i];
    m = p.matcher(s);
    if(m.matches()){
    System.out.println(s);
    }

    }
    }
    如果楼主数据从数据库里取的,那就循环那个结果集吧,如果数据量很大,可以分多次读取。
      

  6.   

    算了看在100分的份上给你写出来了,
      String[] words = "败bai 柏bai 拜bai 掰bai 唄bai bei 庍bai xin 扒bai ba 拝bai 挀bai".split(" ");
          for (int i = 0; i<words.length-1;i++) {
            if (words[i].getBytes().length!=words[i].length()&&words[i+1].getBytes().length==words[i+1].length()) {
          System.out.println("多音字    "+words[i].substring(0,1));  
            
            }
          }
      

  7.   

    public class Test {

    public static Map<String, List<String>> getMap(String[] s){
    Map<String, List<String>> map = null ;
    if(s!=null && s.length>1){
    map = new HashMap<String, List<String>> () ;
    for (int i = 0; i < s.length; i++) {
    String str = s[i].substring(1) ;
    List<String> list = null ;
    if(map.containsKey(str)){
    list = map.get(str) ;
    list.add(s[i].substring(0, 1)) ;
    }
    else{
    list = new ArrayList<String>() ;
    list.add(s[i].substring(0, 1)) ;
    map.put(str, list) ;
    }
    }

    }
    return map;
    }

    public static void main(String[] args) {
    Map<String, List<String>> map = getMap("败bai 柏bai 拜bai 掰bai 唄bai bei 庍bai xin 扒bai ba 拝bai 挀bai".split(" ")) ;
    for (String key : map.keySet()) {
    System.out.println(key +"--" +map.get(key).size());
    } }
    }