为了账号安全,请及时绑定邮箱和手机立即绑定

我用的这种方法为什么输出a出现的次数为49,有大神可以帮忙看一下吗?

  public static void main(String[] args) {

// 定义一个字符串

String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";

        

        // 出现次数

int num = 0;

        int i=0;

        char st=s.charAt(i);

         // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数

for (i=0;i<s.length();i++)

{

            // 获取每个字符,判断是否是字符a

if (st=='a') {

                // 累加统计次数

num++; 

}

}

System.out.println("字符a出现的次数:" + num);

}


正在回答

6 回答

因为  int i=0;  所以 s.charAt(i); 就是  s.charAt(0)   。

因为s的下标为0的就是a。所以 char st=s.charAt(i); 就等于a了。



0 回复 有任何疑惑可以回复我~

st的赋值在循环外,也就是循环内st的值一直没变,每一次判断都是st等于a

0 回复 有任何疑惑可以回复我~

为啥放循环外边,还自己定义一个i变量

0 回复 有任何疑惑可以回复我~

 char st=s.charAt(i);    这句话要放进循环里面啊

你这样第一个是 a  的话     char st=s.charAt(0);      st就一直是 a 了    所以才会输出49吧

2 回复 有任何疑惑可以回复我~
#1

阿拉斯君 提问者

st定义在外面就是全局变量值不变了对吗?
2019-01-29 回复 有任何疑惑可以回复我~

我也是个小白,不知道行不行,你试试

        String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";	
	int num=0;		
	for (int i = 0; i < s.length(); i++){
	// 获取每个字符,判断是否是字符a
	char st=s.charAt(i);	
	if (st=='a') {
	// 累加统计次数	
	num++;			
	}	
	}	
	System.out.println(num);


0 回复 有任何疑惑可以回复我~
String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";		int num=0;		for (int i = 0; i < s.length(); i++)		{			// 获取每个字符,判断是否是字符a			char st=s.charAt(i);			if (st=='a') {				// 累加统计次数				num++;			}		}		System.out.println(num);


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

我用的这种方法为什么输出a出现的次数为49,有大神可以帮忙看一下吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信