JAVA初学者关于字符串判断某个值的问题。

这是我编写的一个Java程序,输入一个字符串判断里面有几个A,如图,我的这个程序如果A在最后那么就检测不到位于最后的A,如果A不在最后就可以被检测出来,如图。 AAA输出就是2 AASA输出也是2 AAAS输出也是2  但是AAASSS这种输出就是3。

 

后面我把.length()后面加了1变成.length()+1就正常了AAA就是3 或者把for循环换成下面我注释掉的while循环也是对的

正确的如下

我想知道这是为什么,很疑惑,自己手算手动运行程序.length不加1感觉也可以,但是运行出来就是不对。

package week6;

import java.util.Scanner;

public class Test_2_2 {
	public static void main(String[] args) {

		Scanner character = new Scanner(System.in);
		String str = character.nextLine();
		int sum = 0;
		int len = str.length();
		for (int i = 0; i < len; i++) {
			if (str.indexOf("A") != -1) {
				sum++;
				str = str.substring(str.indexOf("A") + 1);
				System.out.println(str);
				System.out.println("i=" + i);

			}
		}
		System.out.println(sum);
	}

}

你的循环终止条件在循环体内部不断变化了

要把循环终止条件,在循环开始时固化下来

int len = str.length();

 

for (int i = 0; i < len; i++) {

你对str变量重新赋值了,str.length()的值也会变化。你把for循环去掉,if改成while应该就差不多了。