public void setupPlayers() {
System.out.println("Would you like the Code Maker to be Human or CPU? :");
String input = mySc.next();
if (input == "Human") {
Player CodeMaker = new Human();
}
else {
Player CodeMaker = new CPU();
}
public void exampleUse() {
CodeMaker.getCode();
}
所以我是Java的新手,甚至不确定这是否可以开始。上面的代码都在一个类中。 Human
正在实施接口Player
。我想使用方法CodeMaker
中的类Human
创建一个对象setupPlayers
,然后在方法exampleUse
中使用此对象。有没有办法做到这一点?如果没有人能想到任何替代品吗?干杯。
答案 0 :(得分:3)
我认为你必须指Player
是界面。请记住,如果要比较字符串,则应使用equals
方法而不是==
运算符。
public class ClassName{
private Player codeMaker;
public void setupPlayers() {
System.out.println("Would you like the Code Maker to be Human or CPU? :");
String input = mySc.next();
if (input.equals("Human")) {
codeMaker = new Human();
}
else {
codeMaker = new CPU();
}
}
public void exampleUse() {
codeMaker.getCode();
}
}
答案 1 :(得分:2)
您可以将Player
对象存储为实例变量:
Player CodeMaker = null;
public void setupPlayers() {
System.out.println("Would you like the Code Maker to be Human or CPU? :");
String input = mySc.next();
if (input == "Human") {
CodeMaker = new Human();
}
else {
CodeMaker = new CPU();
}
}
public void exampleUse() {
CodeMaker.getCode();
}
答案 2 :(得分:1)
创建一个类字段变量(私有,用于良好的封装)并使用"string".equals(object)
检查字符串相等性(How do I compare strings in Java?)。
private Player codeMaker;
public void setupPlayers() {
System.out.println("Would you like the Code Maker to be Human or CPU? :");
String input = mySc.next();
if ("Human".equals(input)) {
codeMaker = new Human();
}
else {
codeMaker = new CPU();
}
}
public void exampleUse() {
codeMaker.getCode(); // you need to define a return or consumption HERE
}
也许你应该将input = mySc.next()
包装在这样的try / catch中,因为输入read会抛出异常。
[...]
String input = null;
try {
input = mySc.next();
}
catch(Exception ex) {
throw ex;
}
if ("Human".equals(input) {
codeMaker = new Human();
}
[...]
答案 3 :(得分:0)
只需创建一个类成员:private Human CodeMaker;
并在构造函数CodeMaker = new Player();
中初始化它
不要Player CodeMaker = new Human();
- 这会导致错误,因为您无法创建界面对象。
答案 4 :(得分:0)
请考虑学习创新设计模式。 Java的文化专注于组织和良好的架构。你会对设计模式给你的世界感到惊讶。