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

Java报错:g cannot be resolved to a variable,循环初始化仍报错求解

问题原因及解决办法

为什么会报错“g cannot be resolved to a variable”?

你犯了两个关键错误:

  • 数组声明/创建的语法完全错误:Java里不能在循环内部用int g[j][j]这种写法定义数组。这行代码试图同时做数组声明和赋值,但完全不符合Java的语法规则,编译器根本认不出这是在定义数组g。
  • 数组的作用域逻辑错误:就算写法正确,在循环内部定义的变量(包括数组)只能在当前循环的大括号里使用,但你这里连正确定义都没做到,编译器自然找不到g这个变量。

修正后的代码

先在循环外面创建好二维数组,再用循环给每个位置的元素赋值:

import java.util.Scanner;

public class Bellman {
    public static void main(String[] args) {
        
        Scanner sc = new Scanner(System.in);
        
        System.out.println("Enter the number of nodes");
        int n = sc.nextInt();
        
        // 先创建n行n列的二维数组g
        int[][] g = new int[n][n];
        
        System.out.println("Enter the cost matrix");
        
        for (int j = 0; j < n; j++) {
            for (int k = 0; k < n; k++) {
                // 给数组g的第j行第k列元素赋值
                g[j][k] = sc.nextInt();
            }
        }
    }
}

直白解释

你可以把二维数组想象成一个n行n列的空表格,得先把这个空表格(数组)造出来,才能往里面填数据(输入的数值)。你之前的代码是想在填数据的同时造表格,这在Java里是不允许的,必须先造好表格,再逐个格子填数据。

内容的提问来源于stack exchange,提问作者Samrudh S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 08:25:46