2

我在代码中遇到了这个 while 循环的问题。如果用户完成输入项目,我希望他们按 q 退出。这不起作用,用户输入了 q 并且循环没有中断。如果还有更好的方法来做到这一点,那就太好了。

#include <stdio.h>
#include "CashRegister.h"
#include <stdlib.h>
#include <iostream>
#include <string>
using namespace std;

CashRegister::CashRegister(void)
{
}

CashRegister::~CashRegister(void)
{
}

void CashRegister::addItem(void)
{
string temp;
int k = 0;
int exit = 0;
CashRegister item[10];

for(int i = 0; i < 10; ++ i)
{
    item[i].price = 0.00;
}

cout << "Enter price of items. Up to 10 maximum\n" << endl;

while(item[9].price != 0.00 || temp != "q")
{
    cout << "Enter price of item number " << k + 1 << "\n" << endl;
    cin >> temp;
    cout << temp << endl;
    double tempPrice = (double)atof(temp.c_str());
    item[k].price = tempPrice;
    cout << "Price of item number " << k + 1 << " is $" << item[k].price << endl;
    ++k;
}

}

4

3 回答 3

4

您的 while 循环需要阅读:

while(item[9].price != 0.00 && temp != "q")

当两个条件都为真时,循环需要继续,所以你需要说&&not ||

于 2012-07-15T17:50:36.227 回答
2
while(item[9].price != 0.00 || temp != "q")

考虑一下这是在说什么。”当价格不是 0温度不是“q”时循环。“ 现在考虑要停止循环必须发生什么。

于 2012-07-15T17:50:21.547 回答
0

你应该用它来打破循环:

while(item[9].price != 0.00 && temp != "q")
{
  // ur stuff
}

循环将迭代,因为item[9].price将包含除 0.00 以外的一些值

于 2012-07-15T17:52:30.057 回答