case 1:
for(i=0;i<s1;i++)
{
if(st1[i]==(char)token)
break;
}
if(i==s1)
{
st1[s1++]=(char)token;
str4+=' ';
str4+=token;
}
break;
第一次循环后,s1=1,并存入一个,然后读第二个时,i=0,第一个if判断不相同。就直接跳到下一个if判断,我原来想法是for循环结束再下一个if判断,怎么解决?
问题一:阁下的想法和初始想法不符合啊
for(i=0;i<s1;i++)
{
//判断原数组中是否含有相同元素
//含有则退出
if(st1[i]==(char)token)
break;
}
if(i==s1)//for循环未经过break,所以 i==s1
要求:我原来想法是for循环结束再下一个if判断,怎么解决?
额。。
增加个标志怎么样?
case 1:
bool flag =true;
for(i=0;i<s1;i++)
{
if(st1[i]==(char)token)
flag=false;
}
if(flag)
{
st1[s1++]=(char)token;
str4+=' ';
str4+=token;
}
break;
如何
只看到代码片断,信息有限,就事论事说,你要for循环执行所有,再接着往下执行if,那么break;修改为continue;
首先你提问有点模糊。我不清楚你的“s1=1,并存入一个”这句话要表达什么。
不过 break 是会直接退出 for 循环的。如果你用 continue 的话就是跳过当前一步,进入下一步(如果有的话)。
另外for循环结束后,应该注意 i = s1;
并且 str4 += ‘ ’相当于 str4 += 32(spac的ASCII码)。
str4 += token也一样;
你的想法是 for 循环结束要执行下面的if判断吗?
肯定会执行的呀!从你的代码来看:
如果 for 执行到底的话,也就是 str1 这个字符串的每一个字符都不等于 token 这个字符,就会执行 if 下面的语句。
如果 str1 有一个字符等于 token 的话,就不会执行 if 下面的语句了。