2012-04-09 3 views
0
public class Coordinate{ 

private Integer row; 
private Integer column; 

public Coordinate(Integer row, Integer column){ 
    this.row = row; 
    this.column = column; 
} 

public void setRow(Integer row){ 
    this.row = row; 
} 

public void setColumn(Integer column){ 
    this.column = column; 
} 

public Integer getRow(){ 
    return row; 
} 

public Integer getColumn(){ 
    return column; 
} 

public String toString(){ 
    return "<" + row.toString() + "," + column.toString() + ">"; 
} 
} 

그래,이 좌표 클래스가 있고 스택 중 일부가 푸시되었습니다. 이제 내가하고 싶은 것은 그들 중 하나에서 peek()이고 getRow와 getColumn 메서드를 사용할 수 있어야한다. 어떻게해야합니까? 내가 겪고있는 문제는 내가 코디네이트의 새로운 인스턴스를 만들고 나서 그것에 stack.peek()를 할당하고 거기에 메서드를 사용하지만 작동하지 않는다는 것입니다. 혼동 됨stack.peek() method-Java

+2

'좌표'의 정의는 실제로 관련이 없습니다. 그것의 인스턴스를 스택에 푸시 한 다음'peek' 호출의 결과에서 coords 메소드를 호출하십시오 : stack.peek(). getColumn(). –

+0

아니면 Bill의 대답처럼 스택 메서드를 호출하려고합니까? 문제는 분명하지 않습니다. –

+0

나는 System.out.println (stack.peek(). getRow());을 시도했다. 오류가 발생했습니다 : 기호를 찾을 수 없습니다 \t \t System.out.println (mazeStack.peek(). getRow()); \t \t^ 기호 : 메서드 getRow() 위치 : 클래스 Object –

답변

1
Coordinate c = new Coordinate(1,2); 
Stack<Coordinate> s = new Stack<Coordinate>(); 
s.push(c); 
System.out.println(s.peek()); 

Coordinate c2 = (Coordinate)s.pop(); 
System.out.println(c2); 
System.out.println(c2.getRow()); 

팁이 있지만, java.util.Stack을 사용하지 마십시오. 아주 좋지 않은 원래 컬렉션 라이브러리에서 가져 왔습니다.

수정 수정을 캐스트로 나타내면이 경우에 필요한 것입니다. 참고 c와 c2는 동일한 객체를 가리 킵니다.

+0

OP가 자신의 'Stack'클래스를 만들었습니다. – Jeffrey

+0

그는 그렇게 보였습니다.하지만 나중에 말하지 않았습니다. – Bill

+0

님이 새 정보를 반영하도록 편집했습니다. – Bill

1

stack.peek()의 ​​결과를 Coordinate 클래스로 캐스팅해야하는 것처럼 보입니다. System.out.println(((Coordinate)mazeStack.peek()).getRow());과 같은 것이 당신이 찾고있는 것일 수 있습니다.

+0

즉, stack.peek() 구현에서 실제로 Object를 반환하는 경우입니다. – Tom

+0

네, 정말 고마워요! 나는 캐스트에 대해 잊었다. 내 문제를 해결했습니다 –

+0

@ 존 스미스 다행스럽게 도와 줬어. 수락 된 답을 표시해야합니다. – Tom