【发布时间】:2017-04-10 15:00:06
【问题描述】:
我有以下代码,我想创建一些守门员对象,然后是一些后卫对象,然后是中场等等。 我的意图是在创建每个对象后让 i 整数递增,并使用 if 语句检查 i 的值并相应地分配玩家类型。
目前,我将所有对象作为守门员对象取回,这意味着 i 没有递增。有什么想法可以解决这个问题吗?
//create different types of player
int i = 0;
if (i < 2)
{
i+=1;
//create gk
p = new Goalkeeper(fname, lname, saves, tackles, assists, goals, minutesplayed, fitness);
}
else if (i >= 2 && i < 9)
{
i++;
//create d
p = new Defender(fname, lname, headerswon, tackles, assists, goals, minutesplayed, fitness);
}
else if (i >= 9 && i < 16)
{
i++;
//crete mf
p = new Midfielder(fname, lname, passsuccessrate, tackles, assists, goals, minutesplayed, fitness);
}
else
{
i++;
//create striker
p = new Striker(fname, lname, shotsontarget, tackles, assists, goals, minutesplayed, fitness);
}
return p; //return the randomly generated player
【问题讨论】:
-
这段代码只会创建一个对象(取决于 i 的值,它总是 0)然后返回那个对象。听起来你需要一个静态变量 i。
-
你有没有围绕这些循环的任何外部循环。如果是,请确保您没有在其中每次都初始化 i = 0
-
这看起来不像完整的代码。您在顶部将
i设置为0,因此只有第一个if才会在您返回之前输入。 -
好的,我看到问题是我将 i 初始化为 0,因此每次运行时将其设置为零。我有一个窗口加载方法,它运行此代码 20 次并用不同的播放器填充一个数组。那么在哪里初始化 i?
-
您可能希望在方法外部声明
i并将其作为参数传入,或者代替调用该方法20 次调用它一次并将其更改为一次返回整个数组。
标签: c# oop for-loop if-statement