当调用这些返回值时,此代码将返回值1或0,但如果它降为默认返回值2,则不会返回它。我敢肯定这是我想念的小事,但我无法理解。
int comp(string a, string b){
char x;
char y;
int i = 1;
int len;
len = a.length();
if(b.length() < (unsigned)len){
len = b.length();
}
len++;
while(i!=len){
x = a.at(i);
y = b.at(i);
if(getNum(x) < getNum(y)){
return 1;
}
else if (getNum(x) > getNum(y)){
return 0;
}
i++;
}
return 2;
}
答案 0 :(得分:1)
解决方案:
i=0;
在while循环顶部删除以下代码
len++;
你实际上是在那里得到一个例外。因为在上次运行时,您有indexoutofbound异常。
如果你的字符串是&#34;你好&#34;长度为5表示您的指数为0,1,2,3,4。
h e l l o
0 1 2 3 4
使用你的len ++它将长度增加到6.并且在最后一轮while(5&lt; 6)中你要访问不存在的索引5
希望有所帮助