我是Java的新手,正在制作一个简单的应用程序。它由两个类Computer
和Player
组成。在Player
中,我提示用户猜测一个五位数的字符串。在Computer
中,我将Player
类实例化为:
Player number = new Player();
number.getGuess();
接下来,我创建了一个循环来检查计算机和播放器的数字是否匹配。为了做到这一点,我需要将玩家号码的五位数转换为整数。为什么Java不允许我这样做:
int playerdigit = Integer.parseInt(number.substring(i,i+1));
它一直给我一个错误,即没有定义方法.substring。 我怎样才能做到这一点?任何帮助表示赞赏!
答案 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)
这是因为您正在尝试访问substring
(String类的方法)。在您向我们展示的代码中,您尝试访问类Player
中的方法,并引用方法子字符串(我在上面提到的类String
)并且您应该必须引用您班级String
中的某些Player
。也许它可能是,假设你的班级Player
有玩家的名字和游戏中的号码(这是一个例子),如下所示:
public class Player
{
int numPlayer;
String name;
}
并使用您的方法GET
和SET
获取此属性:
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
我希望它对你有帮助!