我有这个程序,需要从两个表达式中提取两个数字和一个符号:
**111*369**
但在这儿:
for(i=0; i<t; i++) {
while(w) {
if(ar1[i].charAt(j)=='+' || ar1[i].charAt(j)=='-' || ar1[i].charAt(j)=='*' || ar1[i].charAt(j)=='/') {
w = false;
}
else {
k = ar1[i].charAt(j);
a = a*10 + (long)(k-48);
}
}
程序永远不会进入if语句内部。它陷入无限循环。
那么为什么不检查符号呢?
这是带有输出的完整程序的链接:My Program
最佳答案
您的while循环始终检查条件中的相同字符,因为您从不递增j
。因此,如果该字符不是运算符,则循环将永远不会终止。
您应该在每次迭代中递增j
,并注意不要递增j
超过最后一个索引ar1[i]
:
while(w && j < ar1[i].length) {
if(ar1[i].charAt(j)=='+' || ar1[i].charAt(j)=='-' || ar1[i].charAt(j)=='*' || ar1[i].charAt(j)=='/') {
w=false;
}
else {
k=ar1[i].charAt(j);
a=a*10+ (long)(k-48);
}
j++;
}