2011-06-13 56 views
0

我有这个小问题,因为它产生java.util.NoSuchElementException这个对象数组到一个向量,因为它产生java.util.NoSuchElementException我找不到什么似乎是问题。任何人都可以点似乎是个错误,请这里是代码,分裂整数数组

import java.util.Collections; 
import java.util.Vector; 


public class Splitting { 

    /** 
    * @param args 
    */ 

    protected int [] temp; 
    Vector<Integer> vec = new Vector<Integer>(); 

    public void split(String input) 
    { 
     if (input == null) 
     { 
     String[] str; 
     str = input.split(","); 
     temp = new int[str.length]; 

     System.out.println(str); 

      for (int i = 0; i < str.length; i++) 
      { 

       temp[i] = Integer.parseInt(str[i]); 
       vec.add(temp[i]); 

      } 
     } 
     System.out.println(vec); 
     Collections.sort(vec); 


     System.out.println(vec); 
     Collections.max(vec); 
    } 



    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     Splitting obj = new Splitting(); 

     obj.split("12,65,21,23,89,67,12"); 



    } 

} 
+2

首先,异常通常有一个行号和堆栈跟踪。你应该向我们展示这些,他们帮助。另外,我想你想'if(input!= null)'。 – trutheality 2011-06-13 03:05:36

+0

@Matt Ball:'Vector'是一个'List'。 – trutheality 2011-06-13 03:07:30

+0

@trutheality:谢谢,我输入得太快了。在几乎所有情况下,应该使用'java.util.ArrayList'来代替'Vector'。 'Vector'是一个遗留类型(来自JDK 1.0)并且是'synchronized'。 – 2011-06-13 03:49:40

回答

2

if (input == null) 

您的意思是有

if (input != null) 

+0

请参阅http://ideone.com/0wVoZ – 2011-06-13 03:05:47

2

可能会改为if (input == null)应该是if (input != null)

3

可能应该是

if (input != null) 

可以数组转换为矢量简单,接着片断:

vec = new Vector(Arrays.asList(str)); 

也许,它不会工作你的情况(因为你需要解析字符串到整数),但在未来很好知道。 感谢

+0

非常感谢您的指示。它现在有效 – Splitter 2011-06-13 03:09:45

+3

你应该接受答案,如果它是正确的,对不对? – 2011-06-13 03:11:42

0

使用Guava

所有的
String input = "Some very stupid data with ids of invoces like 121432, 3436534 and 8989898 inside"; 
List<String> l =Lists.newArrayList(Splitter.on(" ").split(input)); 
Collection<Integer> c = Collections2.transform(l, new Function<String, Integer>(){ 
    @Override 
    public Integer apply(String s) { 
     return Integer.parseInt(s); 
    }}); 
List<Integer> l2 = Lists.newArrayList(c); 

Collections.sort(l2); 
Collections.max(l2);