2011-11-22 3 views
-3

제 다른 질문에서 보았 듯이, 저는 모조품을 디자인하고 게임을 십자형으로합니다. 나는 그것을 설계하고 테스트를 작성하여 그 모든 것을 통과하도록 만들었습니다. 그래서 기술적으로, 나는 테스트 게임을합니다.스캐너 입력이 기본 방법에서만 작동합니까?

이제 게임이 사용자와 상호 작용하기를 원했기 때문에 게임 클래스에 main 메서드를 삽입했습니다. 나는 이미 이동을하고 그 이동이 유효한 것인지 아닌지를 결정하는 방법을 이미 가지고있다. 내가 이미 존재하는 메서드 안에 스캐너를 포함시키고 시도 할 때 스캐너의 next() 또는 nextLine() 메서드를 사용하면 작동하지 않습니다. 그러나 내가 main 메소드에 같은 코드를 넣으면 작동하고 콘솔에 입력을 요청합니다.

스캐너가 기본 방법에서만 작동합니까? 만약 그렇다면 게임 대신 콘솔을 통해 어떤 선택을해야합니까? 예제와 함께

답변이 내 기본 역량 아래

으로 인해 감사하겠습니다 것은 내 오류가 주요 방법을 공백으로 남겨에 어쩌면

public static void main (String args []){ 

} 

public boolean playMove (player player, String value, int index) { 
Scanner in = new Scanner (System.in); 
System.out.print("Enter Value"); 
value = in.next(); 

} 

을 것입니다. 필자는 이미 원하는 기능을 수행하고 모든 테스트가 통과하는 메서드가 있기 때문에 기본 메서드로 물건을 옮기고 싶지 않습니다. 어떤 제안을 해주시겠습니까?

감사합니다.

+2

예제 코드가 있으며 "작동하지 않는"것보다 구체적인 것은 ESP가 부족하기 때문에 감사하겠습니다. 물론 대답은 '아니오'입니다.이 객체는 다른 객체와 마찬가지로 사용할 수 있습니다. –

+2

아니요, 물론 아닙니다. 그것은 어리 석다. 제발. (당신의 문제는 다른 곳에 있으며, 임의의 * Scanner 객체가 사용되는 * 위치 *와 관련이 있다는 믿음이 있습니다.) –

+1

일부 코드를 붙여 넣을 수 있습니까? –

답변

2

잘 작동합니다.

import java.util.Scanner; 

public class ScannerTest { 
    public static void main(String[] args) { 
     System.out.println(test()); 
    } 

    private static String test() { 
     Scanner stdin = new Scanner(System.in); 
     return stdin.nextLine(); 
    } 
} 

내 생각에는 범위 문제가 계속 발생하고 코드를 게시하는 것입니다.

/e1
아무 일도 일어나지 않으려면 기본 방법으로 호출해야합니다. 기본 방법을 비워 두는 대신 game loop (아마)해야합니다. 이 경우 해당 메서드를 호출하려는 경우 Scanner을 작동하려면 playMove(null, null, 0)을 추가하십시오.

+0

감사합니다. Jeffrey. 편집 한 질문을보십시오. 아마도 메인 메서드를 비워 두는 것이 내 오류 일 것입니다. 필자는 이미 원하는 기능을 수행하고 모든 테스트가 통과하는 메서드가 있기 때문에 기본 메서드로 물건을 옮기고 싶지 않습니다. 어떤 제안을 해주시겠습니까? – uncleB

+0

@uncleB 내 편집 읽기 – Jeffrey

+0

즉 정적 메서드 인 main 메서드에서 playMove() 수정자를 호출해야하므로 static으로 변경해야합니다. 그 확인은? 다른 방법으로 정적 메서드없이이 작업을 할 수 있습니까? 다른 방법으로는 기본 방법으로 뛰어들 수 있습니까? 미리 감사드립니다. – uncleB

관련 문제