C++ 我的程序永远循环,只执行我让它执行的一半

C++ 我的程序永远循环,只执行我让它执行的一半,c++,infinite-loop,C++,Infinite Loop,我是编程新手,我开始制作自己的Fire徽章升级计算器,但由于某些原因,它会无限循环。我找不到答案。 你能帮我查一下代码中有没有错误吗 #include<iostream> #include<cstdlib> #include<windows.h> int main () { using std::cout; using std::cin; using std::endl; int level ,str , skl, lck, def, res, inc, hp

我是编程新手,我开始制作自己的Fire徽章升级计算器,但由于某些原因,它会无限循环。我找不到答案。 你能帮我查一下代码中有没有错误吗

#include<iostream>
#include<cstdlib>
#include<windows.h>
int main () {
using std::cout;
using std::cin;
using std::endl;
int level ,str , skl, lck, def, res, inc, hp, spd, nr ;
char cha[10];
nr=1;
cout<< "Which character?";
cin>> cha ;
cout<< "You chose" << cha << "." << endl << "What level do you want him/her to be?";
cin>> level ;
        if (cha[6] = 'Dieck' ) {
            hp = 26;
            str = 9;
            skl = 12;
            spd = 10;
            lck = 4;
            def = 6;
            res = 1;
            while (level > 0) {

            if (rand() % 100 < 90) {
                inc=1;
                //cout<< "HP increased by" << inc ;
                hp+1;

        }
            if (rand() % 100 < 40) {
                inc=1;
            //  cout<< "Strenght/Magic increased by" << inc ;
                str+1;  
        }
            if (rand() % 100 < 40) {
                inc=1;
                //cout<< "Skill increased by" << inc ;
                skl+1;  
        }
            if (rand() % 100 < 30) {
                inc=1;
            //  cout<< "Speed increased by" << inc ;
                spd+1;  
        }
            if (rand() % 100 < 35) {
                inc=1;
                //cout<< "Luck increased by" << inc ;
                lck+1;  
        }
            if (rand() % 100 < 20) {
                inc=1;
                //cout<< "Defense increased by" << inc ;
                def+1;  
        }
            if (rand() % 100 < 15) {
                inc=1;
                //cout<< "Resistance increased by" << inc ;
                res+1;

        }
        nr+1;
        level-1;
        //cout<<"NR."<< nr << " New stats (in order) HP/STR/SKL/SPD/LCK/DEF/RES " << hp <<" "<< str <<" "<< skl <<" "<< spd <<" "<< lck <<" "<< def <<" "<< res << endl; 
        Sleep(1);

        }
        cout<< "Stats "<< "HP/STR/SKL/SPD/LCK/DEF/RES " << hp <<" "<< str <<" "<< skl <<" "<< spd <<" "<< lck <<" "<< def <<" "<< res << endl;
        return 0 ;
}
#包括
#包括
#包括
int main(){
使用std::cout;
使用std::cin;
使用std::endl;
int级别、str、skl、lck、def、res、inc、hp、spd、nr;
查查[10];
nr=1;
cout>cha;

你遇到的一个问题是“Dieck”

cha[6]
是单个字符,如“D”或“i”,但不是全部。另外
=
cha[6]
设置为等于
'Dieck'
,这是不可能发生的,因为
'Dieck'
不是有效字符。要比较它们,您需要
=
但一次只能比较一个字符,如
cha[0]=='D'

实际上,您应该将输入设置为字符串,并使用字符串的compare()方法

std::string input;
// stuff
cin >> input;

if (input.compare("Dieck") == 0)
{
   // more stuff
}

您遇到的一个问题是
cha[6]=“Dieck”

cha[6]
是单个字符,如“D”或“i”,但不是全部。另外
=
cha[6]
设置为等于
'Dieck'
,这是不可能发生的,因为
'Dieck'
不是有效字符。要比较它们,您需要
=
但一次只能比较一个字符,如
cha[0]=='D'

实际上,您应该将输入设置为字符串,并使用字符串的compare()方法

std::string input;
// stuff
cin >> input;

if (input.compare("Dieck") == 0)
{
   // more stuff
}

您遇到的一个问题是
cha[6]=“Dieck”

cha[6]
是单个字符,如“D”或“i”,但不是全部。另外
=
cha[6]
设置为等于
'Dieck'
,这是不可能发生的,因为
'Dieck'
不是有效字符。要比较它们,您需要
=
但一次只能比较一个字符,如
cha[0]=='D'

实际上,您应该将输入设置为字符串,并使用字符串的compare()方法

std::string input;
// stuff
cin >> input;

if (input.compare("Dieck") == 0)
{
   // more stuff
}

您遇到的一个问题是
cha[6]=“Dieck”

cha[6]
是单个字符,如“D”或“i”,但不是全部。另外
=
cha[6]
设置为等于
'Dieck'
,这是不可能发生的,因为
'Dieck'
不是有效字符。要比较它们,您需要
=
但一次只能比较一个字符,如
cha[0]=='D'

实际上,您应该将输入设置为字符串,并使用字符串的compare()方法

std::string input;
// stuff
cin >> input;

if (input.compare("Dieck") == 0)
{
   // more stuff
}

level-1;
计算
level-1
的值,然后将其丢弃,基本上什么也不做。因此,
level
中的值永远不会更新,并且您会陷入一个无限循环(您也在对所有变量更新进行此操作,请小心!)

如果要减小级别的值(将其减小一),可以执行以下任一操作:

level = level - 1;
level -= 1;
level--;
此外,
如果(cha[6]='Dieck')
在几个方面是不正确的。你也许可以这样做

if(strcmp(cha, "Dieck") == 0) { //...

如果您确保
#包含
level-1;
计算
level-1
的值,然后将其扔掉,基本上什么也不做。因此,
level
中的值永远不会更新,您将陷入无限循环(您也在使用所有变量更新进行此操作,请小心!)

如果要减小级别的值(将其减小一),可以执行以下任一操作:

level = level - 1;
level -= 1;
level--;
此外,
如果(cha[6]='Dieck')
在几个方面是不正确的。你也许可以这样做

if(strcmp(cha, "Dieck") == 0) { //...

如果您确保
#包含
level-1;
计算
level-1
的值,然后将其扔掉,基本上什么也不做。因此,
level
中的值永远不会更新,您将陷入无限循环(您也在使用所有变量更新进行此操作,请小心!)

如果要减小级别的值(将其减小一),可以执行以下任一操作:

level = level - 1;
level -= 1;
level--;
此外,
如果(cha[6]='Dieck')
在几个方面是不正确的。你也许可以这样做

if(strcmp(cha, "Dieck") == 0) { //...

如果您确保
#包含
level-1;
计算
level-1
的值,然后将其扔掉,基本上什么也不做。因此,
level
中的值永远不会更新,您将陷入无限循环(您也在使用所有变量更新进行此操作,请小心!)

如果要减小级别的值(将其减小一),可以执行以下任一操作:

level = level - 1;
level -= 1;
level--;
此外,
如果(cha[6]='Dieck')
在几个方面是不正确的。你也许可以这样做

if(strcmp(cha, "Dieck") == 0) { //...

如果您确保
#包括

,则有两个主要问题可能会导致编译错误

nr+1;
level-1;
您必须将它们分配到某个变量中。请尝试以下操作:

nr = nr+1;

现在,
while
循环不会无限循环

第二个问题是

if (cha[6] = 'Dieck' )
请注意,
=
是赋值运算符,而不是相等运算符。相等运算符看起来像双重相等的
=
。要比较
cha
是否等于
Dieck
,请尝试以下操作:

if (strcmp (cha, "Dieck") == 0)
但是你需要包含
#包含


参考。

您有两个可能导致编译错误的主要问题

nr+1;
level-1;
您必须将它们分配到某个变量中。请尝试以下操作:

nr = nr+1;

现在,
while
循环不会无限循环

第二个问题是

if (cha[6] = 'Dieck' )
请注意,
=
是赋值运算符,而不是相等运算符。相等运算符看起来像双重相等的
=
。要比较
cha
是否等于
Dieck
,请尝试以下操作:

if (strcmp (cha, "Dieck") == 0)
但是你需要包含
#包含

参考资料。

Y