2016-09-03 47 views
-5
#include <iostream> 
#include <Windows.h> 
#include <string> 
using namespace std; 



int main(){ 
    string Whitelist[4] = {"Stian", "Mathias", "Modaser"}; 
    for (int x = 0; x < 3; x++){ 
     cout << x + 1<< ". " << Whitelist[x] << endl; 
     if (Whitelist[x] == "Stian" && "Mathias" && "Modaser"){ 
      cout << "" << Whitelist[x] << " is here" << endl; 
     } 
     else{ cout << "no one is here" << endl; } 
    } 
    cin.get(); 
    return 0; 
} 

//所以耶基本上我只是试图循环通过我的数组,看看有没有这些名称。所以我猜你几乎可以阅读代码所做的事情,因为你大部分都是优点:P。但是当我问我的朋友,谁已经编了1-2年的编码时,他说我不能像这样循环数组,并告诉我使用矢量。他是什么意思?和我的代码的作品?这是循环访问数组的正确方法吗?

+1

'Whitelist [x] ==“Stian”&&“Mathias”&&“Modaser”'不会做你认为它的作用。 – Biffen

+1

他们的意思是你应该使用'std :: vector Whitelist = {“Stian”,“Mathias”,“Modaser”};'。听他们说。 –

+0

好的,但你可以向我解释它是什么,我很新的编程:P – manplox0

回答

0

这组编码是错误的

if (Whitelist[x] == "Stian" && "Mathias" && "Modaser"){ 
    cout << "" << Whitelist[x] << " is here" << endl; 
} 

为什么?因为假设的第一个条件if语句的计算结果为true这样的:

if (true && "Mathias" && "Modaser") 
{ 
    //... 
} 

然后代码就没有意义。在if语句,你必须单独检查每个条件,像这样:

if (Whitelist[x] == "Stian" && Whitelist[x] =="Mathias" && Whitelist[x] =="Modaser"){ 
    cout << "" << Whitelist[x] << " is here" << endl; 
} 

但是,由于任何1串不能在同一时间三个名字,这种情况下会失败,(你使用&&)。修正了使用||操作,这样你的代码,为您的最终代码(另外,除去<< "",这仅仅是多余的,不必要的):

if (Whitelist[x] == "Stian" || Whitelist[x] =="Mathias" || Whitelist[x] =="Modaser"){ 
    cout << Whitelist[x] << " is here" << endl; 
} 

BTW:作为一个建议,使用std::vector<std::string>,不是裸数组,所以你比数组更容易和更多的功能。 最后,你的数组中还有4个元素,其中一个未使用。这可能是一个错字,因此请将您的数组大小设置为3

+1

什么是''“'? –

+0

@LightnessRacesinOrbit固定 –

+2

_“这只是多余的,不必要的”_LOL,故意? ;) –

0

像这样循环数组没有什么根本性的错误。

我们只能猜测你的朋友的意思,但我可以执行我自己的代码审查。

但是,你有四个数组元素,只能循环其中三个,这可能是一个错误;如果是这样,那么证明你最好使用迭代器,而不是对可能出错的硬编码数字。

此外,您的if有条件是错误的:您的意思是||(“或”),而不是&&(“和”)?而且你必须完全写出来的邻接条件,所以:

if (Whitelist[x] == "Stian" || Whitelist[x] =="Mathias" || Whitelist[x] =="Modaser") 

我不知道为什么你对所有这些值进行比较,当他们的阵中唯一的。那么,除了那个空的第四个元素,也许你正试图抓住这一点。我们不知道,因为你没有告诉我们。你的意思是搜索Whitelist而迭代一些其他数组?我们无法知道。也许这就是你的朋友真的的意思?再次,我不能说。

""std::cout只是等待资源,没有字面意思。去掉它。最后,有点切线,it would be better not to block waiting for input as a means to keep your console window open。这不是你的计划的工作。

相关问题