在Java中,如何操作从另一个类实例化的变量?

时间:2015-06-12 23:19:31

标签: java instantiation

我是Java的新手,正在制作一个简单的应用程序。它由两个类ComputerPlayer组成。在Player中,我提示用户猜测一个五位数的字符串。在Computer中,我将Player类实例化为:

Player number = new Player();
number.getGuess();

接下来,我创建了一个循环来检查计算机和播放器的数字是否匹配。为了做到这一点,我需要将玩家号码的五位数转换为整数。为什么Java不允许我这样做:

int playerdigit = Integer.parseInt(number.substring(i,i+1));

它一直给我一个错误,即没有定义方法.substring。 我怎样才能做到这一点?任何帮助表示赞赏!

3 个答案:

答案 0 :(得分:2)

据推测,您的Player类没有名为substring的方法。也许你错过了number.getMyStringMember().substring(i,i+1)之类的电话?

答案 1 :(得分:1)

'子串' method是String类的非静态方法(非静态意味着您使用类的实例而不是使用类名本身来调用该方法)。因此,您希望以以下格式调用此方法: some_string.substring(start_index, end_index),请记住结束指数不包括在内。在您的情况下,您尝试在播放器对象上调用substring方法(因为您的'数字'变量绑定到播放器对象,而Player类没有子字符串方法)。相反,您可能应该执行以下操作(它具有更好的命名约定,因为"数字"不引用播放器对象):

Player p = new Player();
String number = p.getGuess();

然后,在你的循环中,你可以这样做:

Integer.parseInt(number.substring(i,i+1));

并使用您计算机生成的号码单独检查每个数字。

希望这有帮助!

答案 2 :(得分:0)

这是因为您正在尝试访问substringString类的方法)。在您向我们展示的代码中,您尝试访问类Player中的方法,并引用方法子字符串(我在上面提到的类String)并且您应该必须引用您班级String中的某些Player。也许它可能是,假设你的班级Player有玩家的名字和游戏中的号码(这是一个例子),如下所示:

public class Player
{
   int numPlayer;
   String name;
}

并使用您的方法GETSET获取此属性:

public void setNumPlayer(int numPlayer)
{
   this.numPlayer = numPlayer;
}

public int getNumPlayer()
{
  return numPlayer;
}

public void setName(String name)
{
   this.name = name;
}

public String getName()
{
   return name;
}

您应该引用返回GET的{​​{1}}方法,然后您就可以使用String类的substring方法了。像这样:

String

另外,我看到你正在努力:

int playerdigit = Integer.parseInt(number.getName().substring(i,i+1));

也许您正在尝试(我不知道)这是使用number.getGuess(); 方法获得String。然后你应该这样做:

getGuess

存储String guess = number.getGuess();

的值

之后,您将能够创建子字符串:

String

我希望它对你有帮助!