我用面向对象的方法用Java编写我的第一个程序。到目前为止,我一直在学习使用顺序方法在Java中编程,但转向面向对象给我带来了一些问题。
首先,我的程序是一个简单的程序,让虚拟狗执行一些技巧。我有一个狗类和一个dogDriver类。在我的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;
}
我认为一个简单的选择是制作变量'命令' public在驱动程序类中使用:
if (dog.command.equalsIgnoreCase("Roll Over"))
// rest of code
但我听说将变量公之于众并不可取。 从我收集到的内容中,我可以使用“返回变量”将变量的值返回给驱动程序类,但是如何将变量值返回给类(即狗)来自司机班?
答案 0 :(得分:1)
为什么不在Dog类中更改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类中创建Dog类的实例。您可以调用getResponse并将用户输入命令传递给它。
答案 1 :(得分:0)
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);
}
}
你的狗类代码将是
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;
}