Java : 如何在方法中创建一个对象并在整个class中使用它?
Java : How to create an object in a method and use it throughout the class?
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 的新手,甚至不确定是否可以开始。上面的代码都在一个class里面。 Human
正在实现接口 Player
。我想在方法 setupPlayers
中使用 class Human
创建一个对象 CodeMaker
,然后在方法 exampleUse
中使用该对象。有没有办法做到这一点?如果没有,谁能想到任何替代方案?干杯。
您可以将 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();
}
只需创建 class 的成员:private Human CodeMaker;
并在构造函数中初始化它 CodeMaker = new Player();
不要这样做 Player CodeMaker = new Human();
- 这会给你一个错误,因为你不能创建接口对象。
创建一个class字段变量(私有的,为了更好的封装)并使用"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 中,因为输入读取会抛出异常。
[...]
String input = null;
try {
input = mySc.next();
}
catch(Exception ex) {
throw ex;
}
if ("Human".equals(input) {
codeMaker = new Human();
}
[...]
我认为您的意思一定是 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();
}
}
请考虑学习创建设计模式。 Java 的文化侧重于组织和良好的架构。您一定会对设计模式可以给您的世界感到惊讶。
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 的新手,甚至不确定是否可以开始。上面的代码都在一个class里面。 Human
正在实现接口 Player
。我想在方法 setupPlayers
中使用 class Human
创建一个对象 CodeMaker
,然后在方法 exampleUse
中使用该对象。有没有办法做到这一点?如果没有,谁能想到任何替代方案?干杯。
您可以将 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();
}
只需创建 class 的成员:private Human CodeMaker;
并在构造函数中初始化它 CodeMaker = new Player();
不要这样做 Player CodeMaker = new Human();
- 这会给你一个错误,因为你不能创建接口对象。
创建一个class字段变量(私有的,为了更好的封装)并使用"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 中,因为输入读取会抛出异常。
[...]
String input = null;
try {
input = mySc.next();
}
catch(Exception ex) {
throw ex;
}
if ("Human".equals(input) {
codeMaker = new Human();
}
[...]
我认为您的意思一定是 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();
}
}
请考虑学习创建设计模式。 Java 的文化侧重于组织和良好的架构。您一定会对设计模式可以给您的世界感到惊讶。