2012-04-15 5 views
0

내 NameRecord.java 파일을 컴파일하려고하는데 다음 오류가 계속 발생합니다. symbol num = input.nextLine(); 스캐너 입력이 문제라고 말하면서 NameRecord 클래스를 호출하기 전에 스캐너 입력을 초기화하고 채 웁니다.두 클래스가 Java에서 함께 작동하도록 만들기

이 두 클래스는 모두 같은 디렉토리에 있으므로 내가 잘못하고 있는지 확실하지 않습니다.

NameRecord 클래스를 호출하는 클래스입니다. 컴파일되지 않는다. 심볼 이름을 계속 찾는다. 메소드 이름 레코드 (문자열) :

공간을 절약하기 위해이 클래스에 포함 된 몇 가지 메소드를 생략했다.

+0

여기서 num = input.nextLine()에 대해 "input"을 정의합니까? ? –

+1

여러 가지 방법으로 NameRecord 클래스가 손상되었으므로 편집 문제 이외의 다른 문제가 발생했습니다. NameRecord 클래스에는 사용자 인터페이스 코드가 전혀 없어야하며이 클래스에는 정적 변수가 없어야합니다. 그렇지 않으면이 클래스의 모든 객체는 모두 동일한 정보를 보유 할 수 있으므로 쓸모가 없습니다. 다시 시작해야하고 인스턴스 변수, getter, setter 등으로 실제 OOP 클래스로 만들어야합니다. 모든 사용자 인터페이스 코드는 NameRecord 클래스가 아닌 GUI에 있어야합니다. –

+0

당신은'NameRecord' 클래스 (나쁜 생각)에'Scanner'를 넘겨야 만합니다. 그렇지 않으면'NameRecord'를 호출하기 전에'Scanner'를 읽고 당신이 읽은 문자열을 전달해야합니다. – twain249

답변

1

컴파일을 방해하는 문제는 NameRecord 클래스가 input을 알 수없는 것입니다. 이것은 scope의 문제입니다. 귀하의 코드가 "알고있는"곳이 mainNameGameFrametry-catch 블록 내에 있습니다. 이 방법을 사용하려면 에 의해 StringNameRecord으로 전달되어야합니다.

즉, 이것은 코드에서 약 20 가지 문제 중 하나입니다.

+0

당신의 조언이 기술적으로 정확하지만, 우리는 나쁜 프로그램 설계를 장려해서는 안됩니다. 따라서 답을 바꾸고 NameRecord 클래스에서 스캐너를 사용하도록 권장하지 마십시오. 즉, 스캐너 매개 변수를 전달하지 말아야한다는 의미입니다. –

+0

기능을 테스트하기 위해 이러한 클래스를 개별적으로 작성한 다음 함께 작동 시키려고했습니다. 한 클래스에서 다른 클래스를 어떻게 보이게합니까? –

관련 문제