这是我在我的c ++程序中使用的for循环,它无限重复,我无法弄清楚原因。 (循环包含在名为“initialiseTaxis”的方法中。
以下是整个事情:
void initialiseTaxis (taxiDetails allTaxiDetails[14])//Initialise array of taxis
{int i = 0;
while (i < 15)
{
if (i = 0)
allTaxiDetails[i].taxiDriverSurname = "Downing";
else if (i = 1)
allTaxiDetails[i].taxiDriverSurname = "Gilbert";
else if (i = 2)
allTaxiDetails[i].taxiDriverSurname = "Downey";
else if (i = 3)
allTaxiDetails[i].taxiDriverSurname = "Potter";
else if (i = 4)
allTaxiDetails[i].taxiDriverSurname = "Elric";
else if (i = 5)
allTaxiDetails[i].taxiDriverSurname = "Rockbell";
else if (i = 6)
allTaxiDetails[i].taxiDriverSurname = "Tate";
else if (i = 7)
allTaxiDetails[i].taxiDriverSurname = "Pratt";
else if (i = 8)
allTaxiDetails[i].taxiDriverSurname = "Mansfield";
else if (i = 9)
allTaxiDetails[i].taxiDriverSurname = "Hopps";
else if (i = 10)
allTaxiDetails[i].taxiDriverSurname = "Willaker";
else if (i = 11)
allTaxiDetails[i].taxiDriverSurname = "Singer";
else if (i = 12)
allTaxiDetails[i].taxiDriverSurname = "O'Connoly";
else if (i = 13)
allTaxiDetails[i].taxiDriverSurname = "McKay";
else if (i = 14)
allTaxiDetails[i].taxiDriverSurname = "Spriggs";
if (i == 13 || i == 1) // initialises wheelchair access (1 7 seat wheelchair, 1 5 seat wheelchair)
allTaxiDetails[i].WheelChairAccessibleVehicle = true;
else
allTaxiDetails[i].WheelChairAccessibleVehicle = false;
allTaxiDetails[i].fareDetailsForTaxi.bookingID = "0";
allTaxiDetails[i].fareDetailsForTaxi.costOfCurrentFare = 0;
allTaxiDetails[i].fareDetailsForTaxi.overAllFareDetails = 0;
allTaxiDetails[i].fareDetailsForTaxi.taxiAvaliable = false;
allTaxiDetails[i].fareDetailsForTaxi.currentCustomerDetails.customerCoordinates = 0;
allTaxiDetails[i].fareDetailsForTaxi.currentCustomerDetails.customerName = "Null";
allTaxiDetails[i].fareDetailsForTaxi.currentCustomerDetails.customerOnRoute= false;
allTaxiDetails[i].fareDetailsForTaxi.currentCustomerDetails.customerPhoneNumber = "00000000000";
allTaxiDetails[i].fareDetailsForTaxi.currentCustomerDetails.dropOffCoordinates = 0;
allTaxiDetails[i].fareDetailsForTaxi.currentCustomerDetails.dropOffLocationName = "Null";
allTaxiDetails[i].fareDetailsForTaxi.currentCustomerDetails.nameOfLocation = "Null";
allTaxiDetails[i].fareDetailsForTaxi.currentCustomerDetails.seatingRequirement = 5;
allTaxiDetails[i].fareDetailsForTaxi.currentCustomerDetails.wheelchairAccessYesOrNo = false;
if (i != 13 || i!= 14) //Initialises number of seats with 2 seven seater cars
{allTaxiDetails[i].numberOfSeats = 5;}
else
{allTaxiDetails[i].numberOfSeats = 7;}
allTaxiDetails[i].taxiID = (i + 1);
allTaxiDetails[i].taxiAvaliable = true;
allTaxiDetails[i].taxiContainsCustomerYesNo = false;
allTaxiDetails[i].taxiCoordinates = 0;
allTaxiDetails[i].taxiRank = "Train Station";
cout << allTaxiDetails[i].taxiDriverSurname;
i++;
} //Initialise Taxis Method
}
非常感谢任何帮助=)
答案 0 :(得分:5)
您的if语句会被关闭,您应该使用==
,而不是=
。
e.g。
if (i = 0)
应为if (i == 0)
。
传入的数组也应该是15,而不是14.它只是元素的索引从0开始。
答案 1 :(得分:0)
你的if()函数只有一个=,应该有==,如:
if (i == 0)
答案 2 :(得分:0)
您应该有一个编辑警告,说明您没有阅读,告诉您在if语句中进行了分配。
if( i = 0)
应该是
if( i == 0)
答案 3 :(得分:0)
从我所看到的,你在技术上没有写一个“for”循环,而是一个带有计数器的while循环。看起来你想要它迭代15次,你可以替换这两行:
int i = 0; 而(i <15)
这一行:
for(int i = 0; i&lt; 15; i ++)
创建一个真正的“for”循环。我不明白为什么你当前的设置不起作用,但既然不是,请试试我的建议。当然,确保调用唯一的“i”时间作为循环的索引。
编辑:上面的答案是正确的,当你想要“==”比较运算符时,你正在使用“=”赋值运算符
答案 4 :(得分:0)
很有趣的是,你的程序被无限循环捕获,因为控制变量i总是在循环体内设置为1而与上一个语句无关i++;
while (i < 15)
{
if (i = 0)
allTaxiDetails[i].taxiDriverSurname = "Downing";
else if (i = 1)
allTaxiDetails[i].taxiDriverSurname = "Gilbert";
// other stiff
i++;
} //Initialise Taxis Method
首先,我在本声明中将其设为0
if (i = 0)
但由于表达式等于0,因此将从不执行此复合语句。
然后我在下一个声明中将其设置为1
else if (i = 1)
由于表达式不等于0,因此将执行此else-if的复合语句。与此同时,所有其他if语句都将被忽略。
在循环结束时你增加i。它变为等于2.但是在下一次迭代中,由于第一个语句,如果i设置为0并且所有重复重复。:)