2011-08-03 4 views
0

나는 다음과 같은 오류 메시지가 표시되었다가도 선언되지 않은 것처럼팬텀 방식? 내 코드를 디버깅하는 동안

Not able to submit breakpoint MethodBreakpoint [tarea11.Main].contarCapas '(Ljava/util/TreeSet<tarea11/punto>;)I', reason: Method 'contarCapas' with signature '(Ljava/util/TreeSet<tarea11/punto>;)I' does not exist in class tarea11.Main. 

지금 나는 contarCapas 방법이 전혀 작동하지 않는 것을 실현, 그것은이다.

버전 1 :

package tarea11; 


import java.io.File; 
import java.io.IOException; 
import java.util.Comparator; 
import java.util.HashSet; 
import java.util.Scanner; 
import java.util.TreeSet; 

/** 
* 
* @author darwin 
*/ 

class punto{ 
    int x; 
    int y; 
    boolean usado; 


    public punto(int x, int y) { 
     this.x = x; 
     this.y = y; 
     this.usado=false; 

    } 


    static double pendiente (punto p1, punto p2){ 
     double M = (p2.y - p1.y)/(p2.x - p1.x); 
     return M; 

    } 

    @Override 
    public boolean equals (Object o1){ 

     if (o1 instanceof punto){ 

      punto p1 = (punto)o1; 
      if (p1.x==this.x&& p1.y==this.y){ 

       return true; 
      } 
       return false; 

     } 

     else 

      return false; 

    } 

    @Override 
    public int hashCode() { 

     String string = this.x+" "+this.y; 
     return string.hashCode(); 

    } 

} 

class PointComparator implements Comparator { 

    public int compare(Object o1, Object o2){ 

     punto p1 = (punto)o1; 
     punto p2 = (punto)o2; 

     if (p1.y>p2.y){ 
      return 1; 
     } 
     if(p2.y > p1.y) 
     { 
      return -1; 
     } 

     else{ 

      if(p1.x>p2.x){ 
       return 1; 
      } 
      return -1; 
     } 


    } 

} 

public class Main { 


    static int contarCapas (TreeSet<punto> puntosOrdenados){ 

     int numeroDeCapas=0; 

     HashSet <punto> puntosUsados = new HashSet<punto>(); 

     while (!puntosOrdenados.isEmpty()){ 

      punto p= puntosOrdenados.pollFirst(); 

      puntosUsados.add(p); 

      //chequear contra todos los demas para hallar minArco 
      double minArco=99999999; 
      punto minPunto = new punto(-2001,-2001); 
      double arco=0; 
      for (punto siguiente: puntosOrdenados){ 

       if(siguiente.equals(p)){ 
        continue; 
       } 

       arco=Math.atan2(p.y - siguiente.y, p.x - siguiente.x); 
       if (arco< minArco){ 
        minArco=arco; 
        minPunto = siguiente; 
       } 

      } 

      if (puntosUsados.contains(minPunto)){ 

       numeroDeCapas= numeroDeCapas+1; 

      } 

     } 

     return numeroDeCapas; 

    } 


    public static void main(String[] args) { 

     PointComparator pointComparator = new PointComparator(); 

     System.out.println(Math.atan2(-1.0, 1.0)); 
     //System.out.println(Math.acos(cont)) 
     Scanner s = new Scanner(System.in); 

     try{ 
     s = new Scanner(new File("entrada.txt")); 
     } catch(IOException e){} 
     int N,x,y; 

     N = s.nextInt(); 

     while(N!=0){ 

      punto cebolla[] = new punto[N]; 

      TreeSet <punto> puntosOrdenados = new TreeSet <punto>(pointComparator); 

      for(int i=0;i<N;i++){ 
       x=s.nextInt(); y=s.nextInt(); 
       cebolla[i]=new punto(x,y); //borrar? 
       puntosOrdenados.add(new punto(x,y)); 
      } 


      int cont= contarCapas(puntosOrdenados); 
      System.out.println(cont); 

      if(cont%2==0){ 
       System.out.println("NO"); 
      }else{ 
       System.out.println("SI"); 
      } 
      N = s.nextInt(); 
     } 
    } 


    } 

버전 2 contarCapas 내부 println 인쇄되지 gibbering

package tarea11; 


import java.io.File; 
import java.io.IOException; 
import java.util.Comparator; 
import java.util.HashSet; 
import java.util.Scanner; 
import java.util.TreeSet; 

/** 
* 
* @author darwin 
*/ 

class punto{ 
    int x; 
    int y; 
    boolean usado; 




    public punto(int x, int y) { 
     this.x = x; 
     this.y = y; 
     this.usado=false; 

    } 


    static double pendiente (punto p1, punto p2){ 
     double M = (p2.y - p1.y)/(p2.x - p1.x); 
     return M; 

    } 

    @Override 
    public boolean equals (Object o1){ 

     if (o1 instanceof punto){ 

      punto p1 = (punto)o1; 
      if (p1.x==this.x&& p1.y==this.y){ 

       return true; 
      } 
       return false; 

     } 

     else 

      return false; 

    } 

    @Override 
    public int hashCode() { 

     String string = this.x+" "+this.y; 
     return string.hashCode(); 

    } 

} 

class PointComparator implements Comparator { 

    public int compare(Object o1, Object o2){ 

     punto p1 = (punto)o1; 
     punto p2 = (punto)o2; 

     if (p1.y>p2.y){ 
      return 1; 
     } 
     if(p2.y > p1.y) 
     { 
      return -1; 
     } 

     else{ 

      if(p1.x>p2.x){ 
       return 1; 
      } 
      return -1; 
     } 


    } 

} 

public class Main { 


    int contarCapas (TreeSet<punto> puntosOrdenados){ 

     System.out.println("asdasdf"); 
     int numeroDeCapas=0; 

     HashSet <punto> puntosUsados = new HashSet<punto>(); 

     while (!puntosOrdenados.isEmpty()){ 

      punto p= puntosOrdenados.pollFirst(); 

      puntosUsados.add(p); 

      //chequear contra todos los demas para hallar minArco 
      double minArco=99999999; 
      punto minPunto = new punto(-2001,-2001); 
      double arco=0; 
      for (punto siguiente: puntosOrdenados){ 

       if(siguiente.equals(p)){ 
        continue; 
       } 


       arco=Math.atan2(p.y - siguiente.y, p.x - siguiente.x); 
       if (arco< minArco){ 
        minArco=arco; 
        minPunto = siguiente; 
       } 

      } 

      if (puntosUsados.contains(minPunto)){ 

       numeroDeCapas= numeroDeCapas+1; 

      } 

     } 

     return numeroDeCapas; 

    } 



    public static void main(String[] args) { 

     PointComparator pointComparator = new PointComparator(); 

     System.out.println(Math.atan2(-1.0, 1.0)); 
     //System.out.println(Math.acos(cont)) 
     Scanner s = new Scanner(System.in); 

     try{ 
     s = new Scanner(new File("entrada.txt")); 
     } catch(IOException e){} 
     int N,x,y; 

     N = s.nextInt(); 

     while(N!=0){ 

      punto cebolla[] = new punto[N]; 

      TreeSet <punto> puntosOrdenados = new TreeSet <punto>(pointComparator); 

      for(int i=0;i<N;i++){ 
       x=s.nextInt(); y=s.nextInt(); 
       cebolla[i]=new punto(x,y); //borrar? 
       puntosOrdenados.add(new punto(x,y)); 
      } 

      Main m = new Main(); 
      int cont= m.contarCapas(puntosOrdenados); 
      System.out.println(cont); 

      if(cont%2==0){ 
       System.out.println("NO"); 
      }else{ 
       System.out.println("SI"); 
      } 
      N = s.nextInt(); 
     } 
    } 


    } 

. 코드가 호출을 입력하지 않습니다. 왜?

+0

주 기능 시작시 디버깅을 시작할 수 있습니다. – tanyehzheng

+0

귀하는 [Short Self Contained Correct Example] (http://pscode.org/sscce.html)을 제공하기위한 어떠한 노력도하지 않았습니다. 질문을 최소한으로 줄이십시오. – Bohemian

+0

@ tanyehzheng : 그래, 내가 main 메서드에서 디버깅을 시도하고 거기에서 확인 작동, 그냥 int = m.contarCapas (puntosOrdenados) 호출을 인정하지 않습니다; 그것은 그것이없는 것처럼 그것입니다. – andandandand

답변

2

당신의 소스가 실행중인 바이트 코드와 동기화되지 않았 으면 좋겠다. 깨끗한 코드 빌드를 시도하거나 javap을 사용하여 바이트 코드를 디스 어셈블하고 상황에 따라 소스 코드와 일치하는지 확인하십시오.

+0

예, 코드를 여러 번 청소하고 다시 작성해 보았습니다. 일하지 않았어. 나는 같은 버전의 Netbeans (6.9.1)을 사용하는 다른 머신으로 가져 갔고, 그랬다 : -/ – andandandand

+0

그것은 무엇을 했는가? 그것은 같은 방식으로 일했거나 부러 졌습니까? –

+0

두 번의 청소 및 재구성 후 새 컴퓨터에서 작동했습니다. - / – andandandand

관련 문제