我正在制作一个简单的运动模拟器。在开始时,您必须输入两种格式的球队(CityName TeamName,例如芝加哥公牛队)。我使用两种方法从该初始名称获取城市名称和团队名称,以便我可以在不同的位置调用它们以获得更自然的输出。
struct foo
{
void kill(std::map<int, foo>& m, int i)
{
m.erase(i);
// careful! current object could have been destroyed by above statement and may not be valid anymore! Don't use it anymore!
}
};
获取位置的第一种方法可以正常工作。获取团队名称的第二个每次都返回null。我无法弄清楚我在两者中做了哪些不同,为什么我得到不同的结果。
编辑:
以下是实施这些方法的一行:
public String getLocation(String teamName){
String location = this.name.substring(0, this.name.indexOf(" "));
return location;
}
public String getFirstName(String teamName){
String name = this.name.substring(this.name.indexOf(" "));
return name;
}
当“NYC Jets”和“Arizona Cardinals”出现时,它的输出是:
System.out.println("The " + TeamX.getFirtName(TeamX.getName()) + " are visting from " + TeamX.getLocation(TeamX.getName()) + " to play the " + TeamY.getFirtName(TeamY.getName()) + " in " + TeamY.getLocation(TeamY.getName()) );
答案 0 :(得分:2)
我认为问题是因为在函数中你在this.name
调用子字符串而不是局部变量teamName
:
public String getLocation(String teamName){
return teamName.substring(0, teamName.indexOf(" "));
}
public String getFirstName(String teamName){
return teamName.substring(teamName.indexOf(" "));
}
答案 1 :(得分:2)
之间总是有空格吗?因为那时你可以使用好的ol&#39;分割
fullname.split(' ');
将返回一个2元素的字符串数组,第一个是城市,第二个是团队名称
噢,是的。在重新阅读问题后,我开始怀疑OP是否知道如何正确使用类...将类的属性传递给自己似乎很奇怪......应该使用完整的团队名称初始化团队,该团队名称保存为实例变量,然后简单调用teamx.getFirstName(),它将在内部使用类变量...与getLocation相同
答案 2 :(得分:2)
首先,不使用您的函数参数。然后,您不会显示如何调用这些函数。这个名字&#39;似乎是一个可能在主类指令中发生变化的属性。顺便说一下,&#34; String name = this.name.sub ...&#34;即使它工作正常也不好看。
请尝试拆分功能:
public String getLocation(String teamName){
return teamName.split(" ")[0];
}
public String getFirstName(){
return teamName.split(" ")[1];
}
答案 3 :(得分:0)
团队名称之间是否总有空格?而且......你只指定了第一个索引?不是最后......
public String getFirstName(String teamName){
String name = teamName;
name =name.substring(name.indexOf(" "),name.length());
// you for got the second parameter for the substring Thats why it returned null as you only found " ".
return name;
}
我reedited-它......
问题是String原来是null ...如果你想在string中找到一个或多个索引,你应该在调用substring之前初始化它。
String name = teamName;
答案 4 :(得分:0)
我在之前的帖子中没有意识到子字符串只能处理一个参数,因为我只用了两个参数。像其他人所说的那样,name是一个null变量,需要先设置为teamName
String name = teamName;
name = this.name.substring(this.name.indexOf(" "))