g 无法解析为变量

g cannot be resolved to a variable

提问人:Samrudh S 提问时间:2/2/2023 更新时间:2/2/2023 访问量:154

问:

g 无法解析为变量是弹出错误。我已经在 for 循环中初始化了 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();
    
    System.out.println("Enter the cost matrix");
    
    for (int j = 0; j<n; j++) {
        for (int k = 0; k<n; k++) {
            int g[j][j] = sc.nextInt();
        }
    }
    
    

}
}

g 无法解析为变量。我已经在 for 循环中初始化了 g,那么为什么会出现这个错误?

Java Eclipse for 循环 visual-studio-code java.util.scanner

评论

0赞 Mike 'Pomax' Kamermans 2/2/2023
否:您尚未创建。大概应该是一个二维的 int 数组,但在你开始使用它之前,你没有任何地方的代码可以这样声明它。gg
2赞 tgdavies 2/2/2023
你认为到底有什么作用?int g[j][j]
0赞 Samrudh S 2/2/2023
int g[j][j] = sc.nextInt()。这不是声明和初始化两者吗?在此之前,我为 n 做了同样的事情。我直接在int n = sc.nextInt()中声明并初始化了n;@Mike'Pomax'Kamermans
0赞 Samrudh S 2/2/2023
应该是int g[j][k]对不起。@tgdavies
0赞 Mike 'Pomax' Kamermans 2/2/2023
不,它没有。显然,你是一个 2d int 数组,所以即使这有效(这不是 =),它绝对不是一个 .gint

答:

0赞 Pavel 2/2/2023 #1

这很可能是您想要实现的目标:

        int g[][] = new int[n][n];

        for (int j = 0; j < n; j++) {
            for (int k = 0; k < n; k++) {
                g[j][k] = sc.nextInt();
            }
        }

您必须使用特定大小初始化数组,然后才能在给定索引处分配值。

评论

0赞 Samrudh S 2/2/2023
int g[j][j] = sc.nextInt()。这不是在 for 循环中声明和初始化两者吗?有没有办法直接在 for 循环中使用 size 进行初始化。在此之前,我为 n 做了同样的事情。我直接在int n = sc.nextInt()中声明并初始化了n;
0赞 Pavel 2/2/2023
它不是声明,它只是分配。你肯定可以在循环中声明一个变量,但它的作用域只在循环内,你不能在循环中使用。而且你不能声明数组的特定索引,你需要整个数组,这在循环内部声明是没有意义的