用户输入一个猜测,最初是一个字符串,现在我正在尝试将该字符串转换为整数数组,错误是说我无法创建非静态引用。我不想让'userGuess'变量为静态,所以还有其他选项吗?
import java.util.Scanner;
public class Player
{
public int fastestWin, gamesCompleted=1;
public String name, setName;
public String userGuess;
Scanner keyboard = new Scanner(System.in);
public String getName()
{
System.out.print("Enter the player's name: ");
return name = keyboard.nextLine();
}
public void setName()
{
getName();
setName = name;
}
public String askForGuess()
{
System.out.print("Enter your guess: ");
return userGuess = keyboard.nextLine();
}
public void gamesCount()
{
gamesCompleted++;
}
}
import java.util.Random;
import java.util.Scanner;
public class Engine
{
public int numDigits, numDigitsSet;
public int i;
public int[] secretNumber, userGuessArray;
public Random randomNumberGenerator;
public String guessConvert = Player.userGuess; //Made new variable 'guessConvert'
//getting error here for static reference
Scanner sc = new Scanner(System.in);
public void setNumDigits()
{
numDigitsSet = numDigits;
}
public int getNumDigits()
{
System.out.print("Enter the number of digits to use: ");
return numDigits = sc.nextInt();
}
public void generateNewSecret()
{
Random rand = new Random();{
for (int i=0; i<numDigitsSet; i++)
{
secretNumber[i]= rand.nextInt(10);
System.out.println("" + secretNumber[i]);
}
}
}
public int[] getSecretNumber()
{
for (int j=0; j<secretNumber.length; j++)
{
System.out.println("" + secretNumber[j]);
}
return secretNumber;
}
public void convertNumtoDigitArray(String guessConvert) //Trying to convert guessConvert into an array
{
String[] userGuessSplit = guessConvert.split(",");
int[] userGuessArray = new int[userGuessSplit.length];
for (int j=0; j<userGuessSplit.length; j++)
{
userGuessArray[j] = Integer.parseInt(userGuessSplit[j]);
}
}
}
答案 0 :(得分:1)
只需创建另一个成员变量,就像其他成员一样
public String guessConvert;
并在构造函数中设置该变量。
public Engine(Player player) {
guessConvert = player.userGuess;
}
或在Setter方法中:
public void SetGuessConvert(Player player)
{
guessConvert = player.userGuess;
}
如果您需要在代码中的其他位置引用该Player
对象作为成员变量,您可能希望保留对该{{1}}对象的引用。
答案 1 :(得分:0)
Engine对象应该具有对Player对象的引用 并且应该在它指向的Player对象上调用getUserGuess()。
答案 2 :(得分:0)
您似乎有一个班级Player
,其中有一个字段userGuess
,您说您不想制作静态字段。如果您不想将其设置为静态,则表示userGuess
是属于每个Player
对象的字段;因此,要访问该字段,您必须拥有Player
对象才能访问该字段。 Player.userGuess
无效。它必须是p.userGuess
,其中p
是某个Player
对象。
但是,如果不知道您想要创建Player
个对象的位置,以及Engine
将如何找出该对象是什么,我无法继续提供帮助。
答案 3 :(得分:0)
您可以完全删除userGuess String;它似乎没必要。
然后,您将创建一个Player对象并执行guessConvert = pObject.askForGuess();