2013-05-18 3 views
0

벡터를 사용하여 세 요소를 입력했는데 목록에서 특정 요소를 제거하려고했으나 그렇게 할 수 없었습니다. 컴파일하는 동안반복자를 사용하여 요소를 제거 할 수 없습니다.

나는 다음과 같은 오류가 점점 오전 :

iterator.java:28 : 오류 : '무효'가 여기에 허용되지 않는 유형 {에서 System.out.println (e.printStackTrace());} ^ 1 오류

어디에서 잘못 했습니까?

import java.io.*; 
    import java.util.*; 
    import java.lang.*; 

    class iterator 
    { 
    public static void main(String[] args) 
    { 
    Vector<Integer> v= new Vector<Integer>(); 
    //Vector<String> v= new Vector<String>(); 
    v.addElement(new Integer(10)); 
    v.addElement(new Integer(20)); 
    v.addElement(new Integer(30)); 

//v.addElement(new String("mayank")); 

    //v.addElement(new Boolean(true)); 
    //Enumeration e = v.elements(); 
    Iterator i = v.iterator(); 
    while(i.hasNext()) 
     { 
     System.out.println(i.next()); 
     } 
     try{ 
      v.remove(10); 
     } 
     catch(Exception e) 
     {System.out.println(e.printStackTrace());} 
     //System.out.println("Remove error exception");} 
    while(i.hasNext()) 
     { 
     System.out.println(i.next()); 
     } 


    } 
} 

답변

7

e.printStackTrace()이 모두 필요합니다. void를 돌려주기 때문에 본질적으로 println은 작동하지 않는 void를 출력하려고 시도한다.

해결 방법 : System.out.println을 제거하십시오. e.printStackTrace()으로 연락하십시오. 로깅을 사용하는 것이 좋습니다.


편집 :는 또한, 10 값으로 정수를 제거하기 위해, 일을 고려해

remove(new Integer(10)); 

을 따라서 JVM이 제거 매개 변수의 인덱스 위치를 나타내는 생각하지 않습니다 제거하려는 항목.


편집 2 : 귀하의 질문에 제목 반대로, 당신은 아무것도를 제거하는 반복자를 사용 하지 것을 참고.


편집 3 : 반복자

import java.util.Iterator; 
import java.util.Vector; 

class HisIterator { 
    public static void main(String[] args) { 
     Vector<Integer> v = new Vector<Integer>(); 

     v.addElement(new Integer(10)); 
     v.addElement(new Integer(20)); 
     v.addElement(new Integer(30)); 

     Iterator<Integer> i = v.iterator(); 
     while (i.hasNext()) { 
     System.out.println(i.next()); 
     } 
     try { 
     v.remove(new Integer(10)); 
     } catch (Exception e) { 
     e.printStackTrace(); 
     } 
     System.out.println(); 
     i = v.iterator(); 
     while (i.hasNext()) { 
     System.out.println(i.next()); 
     } 

    } 
} 

편집 4를 사용하지 않고 제거 :

import java.util.Iterator; 
import java.util.Vector; 

class HisIterator { 
    public static void main(String[] args) { 
     Vector<Integer> v = new Vector<Integer>(); 

     v.addElement(new Integer(10)); 
     v.addElement(new Integer(20)); 
     v.addElement(new Integer(30)); 

     Iterator<Integer> i = v.iterator(); 
     while (i.hasNext()) { 
     Integer nextI = i.next(); 
     System.out.println(nextI); 
     if (nextI.equals(Integer.valueOf(10))) { 
      i.remove(); 
     } 
     } 
     // try { 
     // v.remove(new Integer(10)); 
     // } catch (Exception e) { 
     // e.printStackTrace(); 
     // } 
     System.out.println(); 
     i = v.iterator(); 
     while (i.hasNext()) { 
     System.out.println(i.next()); 
     } 

    } 
} 
+1

실제로. 그리고 분명히 말합니다 : ** 인쇄 **. (http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html#printStackTrace()) – Maroun

+0

목록에서 10 개 요소를 제거하려고하지만 코드가 그렇게하지 않습니다 – mayank

+1

@ mayank : edit –

0

귀하의 코드는 고유의 모호성을 가지고 반복자와. remove 함수는 요소 인덱스가 아닌 요소 인덱스를 사용합니다. 프로그램은 값이 10 인 요소가 아닌 10 번째 (0부터 시작) 요소를 제거하려고 시도합니다.

벡터 값 형식이 정수인 사실로 인해 혼란스러워집니다.

관련 문제