为啥我一直收到“我无法解析为变量”[重复]

Posted

技术标签:

【中文标题】为啥我一直收到“我无法解析为变量”[重复]【英文标题】:Why do I keep receiving "i cannot be resolved to a variable" [duplicate]为什么我一直收到“我无法解析为变量”[重复] 【发布时间】:2021-11-06 12:50:20 【问题描述】:
import java.util.Arrays;
import java.util.ArrayList;
import java.util.List;

public class FindDuplicates 
    
    public static void main(String[] args) 
    
        String StringLetters = "aaabbbccc";
        List<String> NewList = new ArrayList<String>(Arrays.asList(StringLetters.split(",")));
//      System.out.print(NewList);
//      System.out.print(NewList.size());
        char CharA = 'a';
        int count = 0;
        for(int i = 0; i < NewList.size(); i++);
            if (NewList.indexOf(i) == CharA);
                System.out.print(i);
            
        
        

我正在构建一个计算 Java 字符串中重复值的程序。但是,即使它在 for 循环中初始化,我也会收到“我无法解析为变量”?任何指导表示赞赏。

【问题讨论】:

不,这不是因为你的循环体是空的,而下一部分只是一个范围块!其原因是额外的; 潜入循环的) 之间。 (顺便说一下,你的if 也有同样的问题。) 【参考方案1】:

for(int i = 0; i &lt; NewList.size(); i++);

最后的分号包含循环时要做的事情块。换句话说,你的 for 循环什么都不做

然后你有一个,它只是开始一个块。这是合法的java。试试看:

public void test() 
    int x = 5;
      // let's just start a block for no reason
        System.out.println(x);
     

编译和运行都很好。

i 存在于其范围内(这是您的 for 声明的 3 个部分,如在 () 内和 for 循环体中,在您的情况下只是半-冒号),之后不再存在。 在这里算作“之后”。

解决方法:去掉分号。

【讨论】:

【参考方案2】:

删除for(int i = 0; i &lt; NewList.size(); i++); 行中的;。 这实际上使得 i 仅在 for(int i = 0; i &lt; NewList.size(); i++); 内部定义,而它在内部没有定义

if (NewList.indexOf(i) == CharA);
    System.out.print(i);

阻止

【讨论】:

以上是关于为啥我一直收到“我无法解析为变量”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我会收到“无法解析符号 'CreatePerOwinContext'”?

为啥我突然收到错误“无法解析目标'android-9'”?

为啥我收到此错误“ValueError:无法从重复轴重新索引”?

为啥我在 ReSharper 中收到错误“无法解析符号 <symbolname>”?

为啥我的代码没有像这里那样将给定的字符串解析为 xml?它不是重复的,因为我也使用了现有答案的帮助,但无法纠正它[重复]

为啥 Ansible 无法解析我的 azure 动态库存配置文件?