在java中if语句的嵌套为什么不执行?(主要是针对这个例子)
如题这个代码for(inti=0;i<chss.length;i++){if((chss[i]=='G'||chss[i]=='H'||chss[i]=='I'||chs...
如题
这个代码
for(int i=0;i<chss.length;i++)
{ if((chss[i]=='G'||chss[i]=='H'||chss[i]=='I'||chss[i]=='J')&&chss[i-1]==' ')
{ chss[i-1]='\'';
if(chss[i+2]!=' '&&chss[i+3]==' ')
chss[i+3]='\'';
else if(chss[i+1]!=' '&&chss[i+2]==' ')
chss[i+3]='\'';
}
}
chss是字符数组,为什么执行结果总是只执行了第一个if下的第一条语句?而后面的都不执行呢?
我在其他程序中用例子试了是可以执行的,但为什么在这里不对呢
求各路大神解释
谢谢啦~~
比较急,在线等 展开
这个代码
for(int i=0;i<chss.length;i++)
{ if((chss[i]=='G'||chss[i]=='H'||chss[i]=='I'||chss[i]=='J')&&chss[i-1]==' ')
{ chss[i-1]='\'';
if(chss[i+2]!=' '&&chss[i+3]==' ')
chss[i+3]='\'';
else if(chss[i+1]!=' '&&chss[i+2]==' ')
chss[i+3]='\'';
}
}
chss是字符数组,为什么执行结果总是只执行了第一个if下的第一条语句?而后面的都不执行呢?
我在其他程序中用例子试了是可以执行的,但为什么在这里不对呢
求各路大神解释
谢谢啦~~
比较急,在线等 展开
展开全部
Java里的数组下标是从0开始的,你的for循环里面的i是从0开始的,但是你的第一个if语句下的第一条语句是chss[i-1],这里数组下标越界了,应该会报异常了,ArrayIndexException.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果 0 < i < length 的话,不应该出现 i - 1, i + 1, i + 2, i + 3
更多追问追答
追问
那应该怎么改啊,可是我是要替换有些字符啊,
而且我用一个例子试,是可以有结果的,
谢谢你
追答
能描述下你的替换逻辑吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-28
展开全部
package test;
public class JButtonTest
{
public static void main ( String[] args )
{
char[] chss = new char[10];
for ( int i = 0; i < chss.length - 3; i++ )
{
char c = chss[i];
String tmp = c + "";
if (tmp.matches ("^[GHIJ]$") && chss[i - 1] == ' ')
{
chss[i - 1] = '\'';
if (chss[i + 2] != ' ' && chss[i + 3] == ' ')
{
chss[i + 3] = '\'';
}
else if (chss[i + 1] != ' ' && chss[i + 2] == ' ')
{
chss[i + 3] = '\'';
}
}
}
}
}
追问
可是结果为什么还是和我的代码一样啊
为什么感觉没有执行的样子
谢谢你
追答
不晓得哦,我只是意会你的意思,不知道具体的你的代码内容哦
你里面加3,循环肯定要保证不能越界啊,这个是必须的,其他自己想啊,采纳即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
chss[i+2] chss[i+3] 这两个值是否存在 不执行条件没满足呗
chss[i-1]==“” 这里没报错吗
chss[i-1]==“” 这里没报错吗
追问
是哦,没有报错。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询