我一直致力于Visual Basic 2013中的这个小程序,试图为用户输入命令创建一种分层结构。基本上,我希望第一个双字输入将程序指向一个代码区域,并为第二个单词提供一组响应。在这个程序中,第一个单词可以是" human"或者"动物。"这些词将程序指向选择动物或人类的功能。
#include "stdafx.h"
#include <iostream>
#include <sstream>
void ifAnimal(std::string b) //This is the set of responses for a first word of "Animal"
{
if (b == "pig")
{
std::cout << "It is a pig." << std::endl;
}
if (b == "cow")
{
std::cout << "It is a cow." << std::endl;
}
}
void ifHuman(std::string b) //This is the set of responses for a first word of "Human"
{
if (b == "boy")
{
std::cout << "You are a boy." << std::endl;
}
if (b == "girl")
{
std::cout << "You are a girl." << std::endl;
}
}
int main()
{
while (1)
{
std::string t;
std::string word;
std::cin >> t;
std::istringstream iss(t); // Set up the stream for processing
int order = 0;
//use while loop to move through individual words
while (iss >> word)
{
if (word == "animal")
{
order = 1;
continue; //something wrong with these continues
}
if (word == "human")
{
order = 2;
continue;
}
if (order == 1)
{
std::cout << "The if statement works" << std::endl;
ifAnimal(word);
}
if (order == 2)
{
std::cout << "This one too" << std::endl;
ifHuman(word);
}
}
}
return 0;
}
问题在于,只要程序到达continue语句,就不会触发调用我的函数的if语句。根本没有显示任何文字。如果删除了continue语句,则if语句会触发,但相应的函数会出错。我不知道那些继续做的事情吗?有没有更好的方法来完成我想做的事情?
答案 0 :(得分:1)
continue
的含义是跳过循环的其余部分并返回顶部。如果continue
被点击,continue
语句将被执行后无论如何都会被执行。
您希望word
同时成为两个单词,因此一旦执行ifAnimal()
,ifAnimal
中的任何一个案例都不会被满足。当您调用该方法时,word
将永远不会是"pig"
或"cow"
,因为您只在word
等于"animal"
时调用该方法,并且您没有&# 39;之后改变它。
答案 1 :(得分:0)
继续意味着&#34;立即转到循环的顶部,然后重新开始#34;。你根本不需要它。
//use while loop to move through individual words
while (iss >> word)
{
if (word == "animal")
{
order = 1;
}
else if (word == "human")
{
order = 2;
}
if (order == 1)
{
std::cout << "The if statement works" << std::endl;
ifAnimal(word);
}
if (order == 2)
{
std::cout << "This one too" << std::endl;
ifHuman(word);
}
}