结束 while 循环,继续要求输入字符串,直到我输入 -1
End a while loop that continue ask for string input until I enter -1
我必须创建一个包含项目名称的菜单,我可以使用 for 循环来完成它,直到达到最大值为止,但是我如何使用 while 循环来完成它,它会继续询问直到达到最大值达到或我输入 -1
我尝试使用 for 循环并且它起作用了,但是我必须使用 while 循环,它可以在我告诉它停止时停止。
#include <iostream>
using namespace std;
void read_in_menu(char menu_list[][50], float price_list[], int& num_menu_items,
int MAX_MENU_ITEMS);
int main()
{
const int MAX_MENU_ITEMS = 5;
char menu_list[MAX_MENU_ITEMS][50];
float price_list[MAX_MENU_ITEMS];
int num_menu_items;
read_in_menu(menu_list, price_list, num_menu_item, MAX_MENU_ITEMS);
}
void read_in_menu(char menu_list[][50], float price_list[], int& num_menu_items,
int MAX_MENU_ITEMS)
{
for (int i = 0; i < MAX_MENU_ITEMS; i++)
{
cout << "Enter Names: ";
cin.getline(menu_list[i], 20);
}
}
我想使用 while 循环,它会一直运行直到我输入 -1 或达到最大值。我想随时停止 while 循环,而不是必须达到最大值的 for 循环。
无论何时你想退出循环,你都可以使用 break
关键字。
for(int i = 0; i < MAX; i++){
if(i > 10){
break;
}
doWork();
}
您可以将 for
循环转换为其他循环。例如:
为
for(int i = 0; i < 10; i++)
DoSomething();
同时
int i = 0;
while(i < 10){
DoSomething();
i++;
}
do-while
int i = 0;
do{
DoSomething();
i++;
}
while(i < 10);
要控制循环,请使用 continue
和 break
关键字。关键字 continue
将跳过循环的当前迭代,而 break
将退出循环。这些通常以 if
语句为条件。
如果我没理解错的话,应该是这样的:
int i = 0;
string input = "";
while(i < MAX_MENU_ITEMS || input == "-1") {
cout << "Enter Names: ";
cin.getline(input, 20);
if(input != "-1") { //to avoid setting menu_list[i] = "-1"
menu_list[i] = input;
}
MAX_MENU_ITEMS++;
}
或使用中断:
int i = 0;
string input = "";
while(i < MAX_MENU_ITEMS) {
cout << "Enter Names: ";
cin.getline(input, 20);
if(input == "-1") {
break;
}
menu_list[i] = input;
MAX_MENU_ITEMS++;
}
我是用指针得到的哈哈。
void read_in_menu(char menu_list[5][20], float price_list[], int &num_menu_items, int MAX_MENU_ITEMS){
int i = 0;
char *p = "-1";
while(i<MAX_MENU_ITEMS){
cout << "Enter Name" << endl;
cin.getline(menu_list[i],20);
if(strcmp(menu_list[i], p)){
i++;
}else{
break;
}
}
}
我必须创建一个包含项目名称的菜单,我可以使用 for 循环来完成它,直到达到最大值为止,但是我如何使用 while 循环来完成它,它会继续询问直到达到最大值达到或我输入 -1
我尝试使用 for 循环并且它起作用了,但是我必须使用 while 循环,它可以在我告诉它停止时停止。
#include <iostream>
using namespace std;
void read_in_menu(char menu_list[][50], float price_list[], int& num_menu_items,
int MAX_MENU_ITEMS);
int main()
{
const int MAX_MENU_ITEMS = 5;
char menu_list[MAX_MENU_ITEMS][50];
float price_list[MAX_MENU_ITEMS];
int num_menu_items;
read_in_menu(menu_list, price_list, num_menu_item, MAX_MENU_ITEMS);
}
void read_in_menu(char menu_list[][50], float price_list[], int& num_menu_items,
int MAX_MENU_ITEMS)
{
for (int i = 0; i < MAX_MENU_ITEMS; i++)
{
cout << "Enter Names: ";
cin.getline(menu_list[i], 20);
}
}
我想使用 while 循环,它会一直运行直到我输入 -1 或达到最大值。我想随时停止 while 循环,而不是必须达到最大值的 for 循环。
无论何时你想退出循环,你都可以使用 break
关键字。
for(int i = 0; i < MAX; i++){
if(i > 10){
break;
}
doWork();
}
您可以将 for
循环转换为其他循环。例如:
为
for(int i = 0; i < 10; i++)
DoSomething();
同时
int i = 0;
while(i < 10){
DoSomething();
i++;
}
do-while
int i = 0;
do{
DoSomething();
i++;
}
while(i < 10);
要控制循环,请使用 continue
和 break
关键字。关键字 continue
将跳过循环的当前迭代,而 break
将退出循环。这些通常以 if
语句为条件。
如果我没理解错的话,应该是这样的:
int i = 0;
string input = "";
while(i < MAX_MENU_ITEMS || input == "-1") {
cout << "Enter Names: ";
cin.getline(input, 20);
if(input != "-1") { //to avoid setting menu_list[i] = "-1"
menu_list[i] = input;
}
MAX_MENU_ITEMS++;
}
或使用中断:
int i = 0;
string input = "";
while(i < MAX_MENU_ITEMS) {
cout << "Enter Names: ";
cin.getline(input, 20);
if(input == "-1") {
break;
}
menu_list[i] = input;
MAX_MENU_ITEMS++;
}
我是用指针得到的哈哈。
void read_in_menu(char menu_list[5][20], float price_list[], int &num_menu_items, int MAX_MENU_ITEMS){
int i = 0;
char *p = "-1";
while(i<MAX_MENU_ITEMS){
cout << "Enter Name" << endl;
cin.getline(menu_list[i],20);
if(strcmp(menu_list[i], p)){
i++;
}else{
break;
}
}
}