You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VSCode运行Java两数之和代码报错,在线编译器正常求解决

解决Java编译报错:cannot find symbol: variable out in class System

问题重现

编译两数之和的Java代码时出现如下错误:

chenchureddy@Chenchus-MBP Java % cd "/Users/chenchureddy/PROGRAMMING/Java/" && javac TwoSum.java && java TwoSum
TwoSum.java:36: error: cannot find symbol
System.out.println("the indices are :"+ result[0]+" and "+result[1]);
      ^
  symbol:   variable out
  location: class System
Note: TwoSum.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error

对应的代码如下:

import java.util.HashMap;
import java.util.Map;
import java.util.*;

class TwoSum{
    public static int[] twoSum(int[] numbers, int target)
    {
        int[] result = new int[2];
        Map <Integer,Integer> map = new HashMap();

        for (int i=0; i<numbers.length; i++)
        {
            if(!map.containsKey(target-numbers[i]))
            {
                map.put(numbers[i],i);
            } 
            else
            {
                result[1]=i;
                result[0]=map.get(target-numbers[i]);
                return result;
            }
        }
        throw new IllegalArgumentException("two numbers not found");
    }

    public static void main(String[] args)
    {
        int[] numbers = new int[] {2,11,5,10,7,8};
        int[] result = twoSum(numbers,9);
        System.out.println("the indices are :"+ result[0]+" and "+result[1]);
    } 
}

代码在在线编译器可正常运行,但本地VSCode环境编译失败。

排查与解决方案

1. 检查是否存在自定义System类

本地编译环境中,如果当前代码目录下存在名为System.java的自定义文件,编译器会优先加载这个类而非JDK自带的java.lang.System,导致找不到out成员变量。

  • 操作:查看当前/Users/chenchureddy/PROGRAMMING/Java/目录下的文件,若有System.java则删除或重命名。

2. 验证Java环境配置

确保本地使用的是标准JDK而非自定义或损坏的Java环境:

  • 在终端执行以下命令,确认版本信息正常:
javac -version
java -version
  • 若版本异常,检查JAVA_HOME环境变量是否指向正确的JDK路径,重新配置后重启终端。

3. 显式指定核心类库编译(可选)

如果classpath配置异常导致无法加载JDK核心类,编译时可显式指定rt.jar路径(适用于JDK 8及以下版本,JDK 9+已模块化无需此操作):

javac -cp $JAVA_HOME/jre/lib/rt.jar TwoSum.java

4. 修正代码中的转义字符(次要)

代码中Map &lt;Integer,Integer&gt;的&lt;是HTML转义字符,实际代码中应替换为<,否则会引发语法错误(虽当前错误并非由此导致,但建议修正以避免潜在问题)。

内容的提问来源于stack exchange,提问作者MEKALATHURU CHENCHAIAH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:42:40