首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >private final int blanki;private final int blankj;

private final int blanki;private final int blankj;
EN

Stack Overflow用户
提问于 2015-03-19 22:27:55
回答 2查看 65关注 0票数 1

我有这样的代码:

代码语言:javascript
复制
public final class Board {

    private final int[][] blocks;
    private final int N;
    private final int blanki;
    private final int blankj;
    int i, j;

    // construct a board from an N-by-N array of blocks
   public Board(int[][] blocks)  {

        this.blocks = new int[blocks.length][blocks.length];

        for(i = 0; i < blocks.length; i++){
            for(j = 0; j < blocks.length; j++){
                this.blocks[i][j] = blocks[i][j];
                if(blocks[i][j] == 0) {
                    int f = i;
                    int c = j;
                }
            }
        }
        this.N = this.dimension();
        this.blanki = f;
        this.blankj = c;
    }

}

并得到以下错误:

文件: C:\Users\cbozanic\algs4\Board.java行: 28错误:F无法解析为变量文件: C:\Users\cbozanic\algs4\Board.java行: 29错误:C无法解析为变量文件: C:\Users\cbozanic\algs4\Board.java行: 159错误:局部变量s可能尚未初始化

我真的不明白我到底做错了什么!任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2015-03-19 22:34:31

fcfor循环的作用域中定义。它们在其外部不可见:

代码语言:javascript
复制
this.blocks = new int[blocks.length][blocks.length];

for(i = 0; i < blocks.length; i++){
    for(j = 0; j < blocks.length; j++){
            int f = i;
            int c = j;
    } //From this point, f and c are not defined anymore
}
}
this.N = this.dimension();
this.blanki = f; //Here, f does not exist
this.blankj = c; //Here, c does not exist

如果您想使用f和c,请在循环前声明它们:

代码语言:javascript
复制
int f = ...
int c = ...

 for(i = 0; i < blocks.length; i++){
    for(j = 0; j < blocks.length; j++){
            f = ...;
            c = ...;
    }
}

对于消息The local variable s may not have been initialized,这意味着您在没有初始化变量的情况下声明和使用了该变量。例如:

代码语言:javascript
复制
int s; //For example, int s = 0; would make sense.
s++;

注释:创建新实例时,类属性采用默认值,但局部变量保持“未初始化”状态。

票数 1
EN

Stack Overflow用户

发布于 2015-03-19 22:34:59

变量f在此范围内不可见:

代码语言:javascript
复制
this.blanki = f;

考虑在方法的开头添加int f = 0;

变量c也是如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29147214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档