为什么我得到的数组值是 null? [复制]

2024-01-04

我有一个 Hra1 类,它定义了游戏规则(game=hra)。问题是,我得到一个空值,例如pollMinci==null,尽管数组 poleMinci 是在构造函数中创建的。换句话说,玩家的 move 方法总是返回 false。

构造函数:

public Hra1()
{
    Mince [] poleMinci = new Mince[20];
    poleMinci[0] = new Mince("stříbrná", "coin.png");
    poleMinci[3] = new Mince("stříbrná", "coin.png");
    poleMinci[4] = new Mince("zlatá", "coin_gold.png");
    poleMinci[8] = new Mince("stříbrná", "coin.png");
    poleMinci[10] = new Mince("stříbrná", "coin.png");
    poleMinci[12] = new Mince("stříbrná", "coin.png");
}

玩家的移动方法:

public boolean tahHrace(Tah tah){
    if (poleMinci != null){
        int odkud = tah.getZPozice();
        int kam = tah.getNaPozici();
        boolean kamPrazdne;
        if (poleMinci [kam] != null) 
            kamPrazdne = false;
            else 
            kamPrazdne = true;

        if (kam > odkud && poleMinci [odkud] != null && kamPrazdne == true){
            poleMinci [kam] = poleMinci [odkud];
            poleMinci [odkud] = null;
            System.out.println("hráč táhl z pozice "+tah.getZPozice()
            + " na pozici "+tah.getNaPozici());
            return true;
        }
        else
             return false;

    }
    else
    return false;
}

您正在隐藏一个变量:

public Hra1()
{
    // the following variable's *scope* is inside of this constructor only
    // outside of the constructor, the local variable below doesn't exist.
    Mince [] poleMinci = new Mince[20]; 

    poleMinci[0] = new Mince("stříbrná", "coin.png");
    poleMinci[3] = new Mince("stříbrná", "coin.png");
    poleMinci[4] = new Mince("zlatá", "coin_gold.png");
    poleMinci[8] = new Mince("stříbrná", "coin.png");
    poleMinci[10] = new Mince("stříbrná", "coin.png");
    poleMinci[12] = new Mince("stříbrná", "coin.png");
}

在该构造函数中,由于 pollMinci 是在构造函数内部声明的,因此它仅在构造函数内部可见。如果类中存在同名变量,则该变量将为 null。要解决此问题,请不要在本地重新声明变量。做:

public Hra1()
{

    // Mince [] poleMinci = new Mince[20]; // **** not this ****
    poleMinci = new Mince[20]; // **** but this. note the difference? ****

    poleMinci[0] = new Mince("stříbrná", "coin.png");
    poleMinci[3] = new Mince("stříbrná", "coin.png");
    poleMinci[4] = new Mince("zlatá", "coin_gold.png");
    poleMinci[8] = new Mince("stříbrná", "coin.png");
    poleMinci[10] = new Mince("stříbrná", "coin.png");
    poleMinci[12] = new Mince("stříbrná", "coin.png");
}

有关此问题的更多信息,请查看可变阴影 http://en.wikipedia.org/wiki/Variable_shadowing。大多数 IDE 要么会警告您可能正在执行此操作,要么有一个设置允许它们执行此操作。我使用 Eclipse 并设置了 IDE 来警告我。您可能也希望这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我得到的数组值是 null? [复制] 的相关文章

  • 具有“繁忙”线程的 threadPoolExecutor 如何被终止?

    我的问题有点复杂 让我尝试彻底解释一下 但如果您需要更多详细信息 请随时询问我 我会添加它们 我最近 通过实验 了解到 如果线程连续工作 例如 while true 循环中的整数运算 则中断线程对其没有影响 话题继续进行 就像什么都没发生一
  • 在 Postgres 中为特定查询设置 work_mem

    我正在使用一个委托给 JDBC 驱动程序的库PostgreSQL 而且有些查询非常复杂 需要更多内存 我不想设置work mem对于所有查询来说都是大的 只是这个子集 问题是执行以下代码会导致错误 pseudo code for what
  • CXF 客户端异常:{XXX} 的拦截器已引发异常,现在展开

    我遇到以下 CXF 异常 warning Interceptor for http example com wsdl esc 2011 12 12 AmazonEC2 http example com wsdl esc 2011 12 12
  • Android Studio 中没有参考文档

    昨天刚刚出现了一个新问题 当我将鼠标悬停在方法上或按 Ctrl Q 时 我通常会获取该特定方法的文档信息 但现在我只是得到 按 Ctrl QSharedPreferences getLong Following external urls
  • Hazelcast Jet 变更数据捕获

    我在我的应用程序中使用 Hazelcast 更改数据捕获 CDC 我使用 CDC 的原因是 如果使用 jdbc 或其他替代功能将数据加载到缓存中 会花费大量时间 所以CDC将在数据库和 Hazelcast Jet 之间进行数据同步 Stre
  • 椭圆与椭圆如何相交?

    我用的是JAVA Ellipse2D s1 new Ellipse2D Float 0 0 100 100 System out println s1 intersects 99 30 100 100 应该返回 false 但它返回 tru
  • 如何跨工作区保存 E​​clipse 启动配置文件?

    当我复制 Eclipse 项目目录时 它包含 classpath 和 project 文件 这样当我将同一目录带到另一个 Eclipse 实例时 我不必设置我的构建路径等 假设所有资源都包含在在项目中 而不是外部 但是 此过程不会导致启动配
  • 查找前 N 个五边形数

    我必须找到第一个N pentagonal numbers 1 从 1 100 并每行显示 10 个 我必须使用getPentagonalNumber int n 方法也是如此 显然这就是它存在的原因 到目前为止 这是我的代码 package
  • 在 Android 上解析 RSS

    我有几个 RSS 源需要为我的应用程序进行解析 我按照这里的优秀教程进行操作 http w2davids wordpress com android rssatom feeds parsing with rome http w2davids
  • Spring 在 AuthenticationSuccessHandler 中自动装配会话范围 bean 不起作用

    我正在使用 spring security 我想初始化一个对象User在用户成功登录后的会话中 安全配置如下 Configuration EnableWebSecurity PropertySource classpath configs
  • 没有字符串参数构造函数/工厂方法可以从字符串值 ('') 反序列化

    我在使用时遇到了 json 解析问题ObjectMapper类来自com fasterxml jackson databind包 我得到的错误是 com fasterxml jackson databind JsonMappingExcep
  • Java 会话变量

    我听说有些人认为在会话中将信息存储在服务器上是一个坏主意 因为它不安全 因此 在多页面业务流程功能中 应用程序将数据写入数据库 然后在需要时检索信息 在会话中存储私人信息是否一定不安全 只要会话本身安全 在会话中存储属性就不存在安全风险劫持
  • 如何更改使用 Google ReCaptcha 版本 2 时的错误消息?

    当为 Google ReCaptcha 版本 2 选择多张照片时 会显示以下错误消息 需要多个正确的解决方案 请解决更多 如何将错误消息更改为我网站上的自定义消息 这是图像 我认为不可能在服务器端 在谷歌 进行 这可以在客户端通过利用 js
  • 公交车公共交通算法

    我正在开发一个可以查找公交路线的离线 C 应用程序 我可以提取时间表 巴士 路线数据 我正在寻找适用于基本数据的最简单的解决方案 可以使用什么算法来查找从巴士站 A 到巴士站 B 的路线 是否有适用于 C Java 的开源解决方案 数据库的
  • 我们可以将请求分派到 servlet 内的 HTML

    这可能吗 RequestDispatcher rd request getRequestDispatcher index html rd forward request response 是的 您可以将请求分派到 HTML 页面
  • 如何在两种不同模式、两种布局中设置方向?

    我有一个叫做Main XML我将方向设置为纵向AndroidManifest xml 我也为 Honeycomb 设计了这个布局并将其放置在layout xlarge mdpi文件夹 但我想使用Main XML in layout xlar
  • 尝试 Catch 性能 Java

    当捕获异常而不是进行检查时 try catch 需要多长时间 以纳秒为单位 假设消息具有用于查找的 HashMap 类型性能 try timestamp message getLongField MessageField TIMESTAMP
  • 如何在 Hibernate 中使用 SELECT 进行 INSERT

    我需要在休眠中实现以下请求 insert into my table max column values select max id from special table where 如何在休眠中使用注释来做到这一点 Special tab
  • 查找数组中的多个索引

    假设我有一个像这样的数组 string fruits watermelon apple apple kiwi pear banana 是否有一个内置函数可以让我查询 apple 的所有索引 例如 fruits FindAllIndex ap
  • PHP/MySQL - 在数据库中存储数组

    我正在开发一个 PHP 应用程序 它需要将各种设置存储在数据库中 客户经常询问是否可以添加或更改 删除某些内容 这导致了表格设计出现问题 基本上 我有很多布尔字段 它们只是指示是否为特定记录启用了各种设置 为了避免再弄乱表格 我正在考虑将数

随机推荐

  • PHP cURL、POST JSON

    我需要发布以下 JSON 代码 但由于某种原因它不起作用 下面是我的代码 fieldString 395609399 the curl request processor function processCurlJsonrequest UR
  • 在并行任务期间跟踪失效的 WebDriver 实例

    我看到一些使用 Selenium WebDriver 运行并行嵌套循环 Web 压力测试的死实例怪异现象 简单的例子是 比如说 点击 300 个独特的页面 每个页面有 100 次展示 我 成功 获得 4 8 个 WebDriver 实例Th
  • 如何在 YouTube 缩略图上叠加播放按钮

    在我正在进行的一个项目中 我们将媒体团队发布的大量 YouTube 视频提取到数据库中 以便我们可以将它们呈现为相关内容 我们希望能够在生成的 YouTube 缩略图上叠加一个播放按钮 以便更明显地表明缩略图代表的是可以播放的视频 我正在寻
  • 有没有办法在Linux平台上编译微软风格的内联汇编代码?

    正如标题中提到的 我想知道有没有办法在 Linux 操作系统 例如 ubuntu 中编译微软风格的内联汇编代码 如下所示 asm mov edi A EMMS 示例代码是内联汇编代码的一部分 可以在win10上使用cl exe编译器成功编译
  • 如何在 Android 中将提示文本置于 EditText 中?

    我需要将提示文本居中EditText在安卓中 我该怎么做呢 为了使提示文本居中以与 EditText 一起使用 您必须确保定义 android ellipsize start 我不知道为什么这会起作用 但确实如此 从个人代码中提取的示例
  • SQL 多重外连接(将 t-sql 连接转换为 ANSI 格式)

    我有 3 个表 t1 t2 t3 我想要一个基于以下条件的结果集 t1 在 t2 t1 的所有行 上有外连接 t1 在 t3 t1 的所有行 上有外连接 t2 在 t3 t2 的所有行 上有外连接 如何在单个查询中使用这些外部 3 个联接
  • 如何按顺时针/逆时针方向对所有多边形点进行排序?

    我一直在阅读贾维斯的算法 虽然它能够按顺时针方向对所有 外部点 进行排序 但内部点将被忽略 如下所示 有谁知道我是否必须实现任何其他算法或任何其他方法来按顺时针方向对每个点进行排序 谢谢 第一步格雷厄姆扫描 https en wikiped
  • 如何允许用户在 Web 应用程序中编辑附件?

    我们使用 ASP NET 创建了一个 Web 应用程序 允许用户上传文档并将其附加到业务实体 如客户 联系人等 该应用程序在内联网上运行 所有文件都通过 Web 应用程序上传到服务器上的共享文件夹中 我希望用户可以直接从网页上open实际文
  • 并行运行 junit 测试时的竞争条件

    我想知道如果我并行运行测试并且两个测试 如下 共享一个实例变量 是否会有一些竞争条件 所以我的测试类使用 SpringJunit4ClassRunner 运行 并且我有 2 个测试方法 a 和 b 变量state将从每个测试中修改或重新分配
  • 如何使用 ”!”作为注释指示符,还可以在语言语法高亮中使用 NOT 运算符吗?

    我正在使用 VScode 并创建自己的语言扩展来突出显示语法 其中我需要使用正则表达式来查找注释 基本规则是之后的一切 是一个注释 但是有一个特殊情况 什么时候 在里面eval 命令 它的意思是NOT 例如 我的一些代码如下所示 if co
  • PySpark DataFrame 列参考:df.col 与 df['col'] 与 F.col('col')?

    我有一个概念希望你能帮忙澄清 以下三种引用 PySpark 数据框中列的方式有什么区别 我知道不同的情况需要不同的形式 但不知道为什么 df col e g F count df col df col e g df col 0 F col
  • C# 语法中的问号[重复]

    这个问题在这里已经有答案了 可能的重复 使用条件 三元 运算符的好处 https stackoverflow com questions 3312786 benefits of using the conditional ternary o
  • numpy 矩阵代数最佳实践

    我的问题是关于下面最后一行 mu sigma mu 为什么它有效 一维 ndarray 被视为行向量还是列向量 不管怎样 不应该是这样吗mu T sigma mu or mu email protected cdn cgi l email
  • 使用requirejs优化和加载外部依赖

    我有一个需要 Facebook SDK 的模块 我想知道应该如何配置 SDK 的加载 以便 RequireJS 优化器正确处理它 In app require config paths facebook connect facebook n
  • 在每个url末尾添加斜杠(需要重写nginx规则)

    我尝试得到一个 到每个网址结尾 example com art should example com art I use nginx作为网络服务器 我需要为此重写规则 为了更好地理解 请检查以下内容 http 3much schnicksc
  • 将 WPF 中的图像源绑定到 URL

    我一直在浏览不同的帖子 试图找出我的问题出了什么问题 基本上我的用户控件上有一个 Image 标签 以及我想绑定到 url 的 Source 然而这不起作用 我尝试过使用返回的 ValueConverterBitmapImage new U
  • 如何在工作线程中使用关闭句柄

    我正在 Windows 中使用线程将 C 制作的插件连接到 python 脚本 该线程在会话期间将被多次调用 问题 如果我通过了ArgList in the beginthread错误 xxx exe 中 0x1E114A68 python
  • YouTube 嵌入视频自动播放不适用于 Google Chrome 中未静音的声音,但适用于 Firefox

    我尝试从 3 天开始在 google chrome 中使用 声音取消静音 自动播放 YouTube 嵌入视频 但它不起作用 虽然相同的视频和相同的代码可以在 mozilla firefox 中运行 我尝试过不同的代码 但到目前为止还没有成功
  • Golang:如何在Linux上使用syscall.Syscall?

    有一个关于在 Windows 上加载共享库和使用 syscall 包调用函数的非常好的描述 https github com golang go wiki WindowsDLLs https github com golang go wik
  • 为什么我得到的数组值是 null? [复制]

    这个问题在这里已经有答案了 我有一个 Hra1 类 它定义了游戏规则 game hra 问题是 我得到一个空值 例如pollMinci null 尽管数组 poleMinci 是在构造函数中创建的 换句话说 玩家的 move 方法总是返回