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
相关产品推荐
相关产品推荐

