黑马程序员技术交流社区

标题: 求教 [打印本页]

作者: Y1011    时间: 2015-9-18 14:55
标题: 求教
  1. import java.util.Collection;
  2. import java.util.Iterator;
  3. import java.util.Map;
  4. import java.util.Set;
  5. import java.util.TreeMap;

  6. //“1.2,3.4,5.6,7.8,5.56,44.55”,
  7. public class test45 {
  8.         public static void main(String[] args){
  9.                 String s = "1.2,3.4,5.6,7.8,5.56,44.55";
  10.                 Map<Integer,Integer> m = new TreeMap<Integer,Integer>();
  11.                 String[] strs = s.split(",");
  12.                 for(int x =0;x<strs.length;x++){
  13.                         String[] s1 = strs[x].split(".");
  14.                         m.put(Integer.parseInt(s1[0]), Integer.parseInt(s1[1]));
  15.                 }
  16.                 Set<Integer> set = m.keySet();
  17.                 Iterator<Integer> it = set.iterator();
  18.                 while(it.hasNext()){
  19.                         System.out.println("key="+it.next());                        
  20.                 }
  21.                 Collection<Integer> c = m.values();
  22.                 Iterator<Integer> itr = c.iterator();
  23.                 while(itr.hasNext()){
  24.                         System.out.println("value="+itr.next());
  25.                 }
  26.         }
  27. }
复制代码

需求是将小数点两边的数分别作为键值存入map集合,但
String[] s1 = strs[x].split(".");
m.put(Integer.parseInt(s1[0]), Integer.parseInt(s1[1]))
这2行代码抛出ArrayIndexOutOfBoundsException,这是为什么啊?

作者: 那风景如花    时间: 2015-9-18 14:55
public class SDASDA {
        public static void main(String[] args){
                String s = "1.2,3.4,5.6,7.8,5.56,44.55";
                Map<Integer,Integer> m = new TreeMap<Integer,Integer>();
                String[] strs = s.split(",");
                for(int x =0;x<strs.length;x++){
                        String[] s1 = strs[x].split("\\.");
                        m.put(Integer.parseInt(s1[0]), Integer.parseInt(s1[1]));
                }
                Set<Integer> set = m.keySet();
                Iterator<Integer> it = set.iterator();
                while(it.hasNext()){
                        System.out.println("key="+it.next());                        
                }
                Collection<Integer> c = m.values();
                Iterator<Integer> itr = c.iterator();
                while(itr.hasNext()){
                        System.out.println("value="+itr.next());
                }
        }
}
作者: 王鲁悦    时间: 2015-9-18 16:57
索引越界异常  length-1
作者: xiaoya0o0o    时间: 2015-9-18 18:06
  String[] strs = s.split(","); 中的点 .  在正则表达式中代表的是任何字符,而想要用分割的话,要用转义字符“\\.”或者"[.]"  即: String[] s1 = strs[x].split("\\.");   或者 String[] s1 = strs[x].split("[.]");
例如:判断字符串是否以h开头,中间是任何字符,并以d结尾:"h.d"
                str = "h\\d";//h\d
                regex = "h.d";
                System.out.println("2." + str.matches(regex));

作者: 年强    时间: 2015-9-18 19:58
String[] s1 = strs[x].split("[.]");
加一个转义格式,有两种
第一种加  “[]”
第二种加 “\\”




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