2014-09-13 4 views
0

저는 객체 지향 접근 방식으로 자바로 첫 프로그램을 작성하고 있습니다. 지금까지 순차적 접근 방식으로 자바 프로그래밍을 배우고 있었지만 객체 지향으로의 전환은 나에게 몇 가지 문제를 안겨주었습니다.다른 클래스의 메소드에서 드라이버 클래스의 변수 사용하기 (자바)

첫째, 내 프로그램은 가상 강아지가 몇 가지 트릭을 수행하는 간단한 프로그램입니다. 나는 개 클래스와 dogDriver 클래스를 가지고있다. 내가 예를 들어, 방법에 입력 된 명령을 검색하고 거기에 계산을 수행하고자하는 내 강아지 클래스 그러나

System.out.println("\nWhat trick shall Sparky do?"); 
System.out.println("Roll Over"); 
System.out.println("Jump"); 
System.out.println("Sit"); 
System.out.println("Bark"); 

System.out.print("\nYour command: "); 
String command = keyboard.nextLine(); 

:

public String getResponse() 
{ 
    if (command.equalsIgnoreCase("Roll Over")) 
    { 
     // Roll Over Code 
     response = "I just Rolled Over!"; 
    } 
    // rest of the commands 
    return response; 
} 

내 dogDriver 클래스에서 다음 코드 조각을 나는 쉬운 옵션은 드라이버 클래스 및 사용 변수 '명령'을 공개하는 것입니다 믿습니다

if (dog.command.equalsIgnoreCase("Roll Over")) 
// rest of code 

하지만 그것은 당신의 변수를 공개하는 것이 바람직하지 들었어요. 내가 수집 한 것부터 '변수 반환'을 사용하여 변수 값을 드라이버 클래스에 반환 할 수 있지만 어떻게 드라이버 클래스에서 클래스 (즉, 개)에 변수 값을 반환 할 수 있습니까?

답변

0

M 유 전 U가 당신의 개를 드라이버 클래스에서하는 GetResponse 메서드를 호출하기위한 있도록 개 드라이버 클래스에 대한 응답을 반환 할 수없는 것입니다 이해 무엇 무엇을 요구 혼동 코드는

public String getResponse(final String command) 
{ 
    if (command.equalsIgnoreCase("Roll Over")) 
    { 
     // Roll Over Code 
     response = "I just Rolled Over!"; 
    } 
    // rest of the commands 
    return response; 
} 
+0

감사합니다 Kirti! 이것은 내 문제를 해결하는 것 같았다. 나는 새로운 변수를 생성하고 그것을 dog.getResponse (command)로 초기화한다는 것을 몰랐다. 고맙습니다! – RextheTexMex

+0

도움이된다면 ans를 수락하세요. – kirti

1

왜 아래와 같이 개 클래스에서하는 GetResponse 메서드의 서명을 변경 해달라고 :

내가 이해하는만큼
public String getResponse(final String command) 
{ 
    if (command.equalsIgnoreCase("Roll Over")) 
    { 
     // Roll Over Code 
     response = "I just Rolled Over!"; 
    } 
    // rest of the commands 
    return response; 
} 

, 만들고 DogDriver 클래스의 개 클래스의 인스턴스를 할 것입니다. getResponse를 호출하여 사용자 입력 명령을 전달할 수 있습니다.

public class DogDriver{ 
public static void main(String args[]){ 
    System.out.println("\nWhat trick shall Sparky do?"); 
    System.out.println("Roll Over"); 
    System.out.println("Jump"); 
    System.out.println("Sit"); 
    System.out.println("Bark"); 

    System.out.print("\nYour command: "); 
    final String command = keyboard.nextLine(); 

    Dog dog = new Dog(); 
    String response = dog.getResponse(command); 
    System.out.println(response); 
} 
} 

그리고 당신의 개 클래스 :

+0

으로 보입니다. 고맙습니다! 그래서 내 dog 클래스에서 조정 된 코드를 추가 한 후 내 dogDriver 클래스에 command = keyboard.nextLine() 및 dog.getResponse (command)를 추가 할 수 있습니까? – RextheTexMex

+0

그게 맞아 !! :) – zerocool

관련 문제