为什么不是';这个基本的java程序不能工作吗?

为什么不是';这个基本的java程序不能工作吗?,java,string,for-loop,Java,String,For Loop,目标是让它计算给定字符串中“xx”的数目。我们会说,重叠是允许的,所以“xxx”包含2个“xx” 看 我似乎不明白为什么它不起作用 int countXX(String str) { int f = 0; for (int i = 0; i < str.length(); i++){ if (!str.substring(i+1).isEmpty()){ if (str.substring(i)

目标是让它计算给定字符串中“xx”的数目。我们会说,重叠是允许的,所以“xxx”包含2个“xx”

看 我似乎不明白为什么它不起作用

    int countXX(String str) {
        int f = 0;
        for (int i = 0; i < str.length(); i++){
            if (!str.substring(i+1).isEmpty()){
                if (str.substring(i) == "x" && str.substring (i+1) == "x") {
                    f++;
                }
            }
        }
        return f;  
    }
int countXX(字符串str){
int f=0;
对于(int i=0;i
不要使用==来比较字符串;使用equals()

int countXX(字符串str){
int f=0;
对于(int i=0;i

我认为当
I
等于字符串长度减1,并且您尝试访问
(I+1)

处的字符时,此代码仍然会有问题。不要使用==来比较字符串;使用equals()

int countXX(字符串str){
int f=0;
对于(int i=0;i

我认为当
I
等于字符串长度减1,并且您尝试访问
(I+1)

处的字符时,此代码仍然会有问题,请使用字符串的“equals”方法代替==:

int countXX(String str) {
    int f = 0;
    for (int i = 0; i < str.length(); i++){
    if (!str.substring(i+1).isEmpty()){
    if (str.substring(i).equals("x") && str.substring (i+1).equals("x")) {
    f++;}}}
    return f;  
    }
int countXX(字符串str){
int f=0;
对于(int i=0;i
使用字符串的'equals'方法代替==:

int countXX(String str) {
    int f = 0;
    for (int i = 0; i < str.length(); i++){
    if (!str.substring(i+1).isEmpty()){
    if (str.substring(i).equals("x") && str.substring (i+1).equals("x")) {
    f++;}}}
    return f;  
    }
int countXX(字符串str){
int f=0;
对于(int i=0;i
带有一个参数的
substring
方法不仅获取该位置的字符,还获取从该位置到字符串结尾的所有内容。使用
charAt
获取该位置的字符,并将其与
=
与字符文本
'x'
进行比较,而不是与
字符串
“x”

比较带有一个参数的
substring
方法仅获取该位置的字符,它获取从该位置到字符串末尾的所有内容。使用
charAt
获取该位置的字符,并将其与
=
与字符文本
'x'
进行比较,而不是与
字符串
“x”
进行比较有三个原因:

  • substring()返回整个字符串(因此从“i”开始到字符串末尾,而不仅仅是一个字母)
  • 与.equals()比较,而不是==
  • “i”应以str.length()结尾-1
  • 原因有三:

  • substring()返回整个字符串(因此从“i”开始到字符串末尾,而不仅仅是一个字母)
  • 与.equals()比较,而不是==
  • “i”应以str.length()结尾-1
  • int countXX(字符串str){
    int f=0;
    对于(int i=0;i
    int countXX(字符串str){
    int f=0;
    对于(int i=0;i
    不要将子字符串用于索引字符

    int countXX(String str) {
       int f = 0;
       for (int i = 0; i < str.length()-1; i++) {
          if( str.charAt(i) == 'x' && str.charAt(i+1) == 'x' ) {
             f++;
          }
       }
       return f;  
    }
    
    int countXX(字符串str){
    int f=0;
    对于(int i=0;i
    不要将子字符串用于索引字符

    int countXX(String str) {
       int f = 0;
       for (int i = 0; i < str.length()-1; i++) {
          if( str.charAt(i) == 'x' && str.charAt(i+1) == 'x' ) {
             f++;
          }
       }
       return f;  
    }
    
    int countXX(字符串str){
    int f=0;
    对于(int i=0;i
    这是初学者的常见错误。小心。虽然将字符串值与
    =
    进行比较是错误的,但这个问题更多的是关于滥用
    子字符串来提取字符的问题。我已投票重新打开这个问题;这不是任何常见的“==”与“equals”字符串比较问题的重复。这是初学者常见的错误。小心。虽然将字符串值与
    =
    进行比较是错误的,但这个问题更多的是关于滥用
    子字符串来提取字符的问题。我已投票重新打开这个问题;它不是任何常见的“==”与“equals”字符串比较问题的重复..equals()仍然不起作用仍然存在滥用
    子字符串
    从字符串中提取字符的问题。并且i子字符串
    从字符串中提取字符的问题。并且i