java-为什么我将null作为数组的值?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-为什么我将null作为数组的值?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2573字,纯文字阅读大概需要4分钟。
内容图文
![java-为什么我将null作为数组的值?](/upload/InfoBanner/zyjiaocheng/691/9ac3b89a369848ca889f03d5aafdb84f.jpg)
这个问题已经在这里有了答案: > Why are my fields initialized to null or to the default value of zero when I’ve declared and initialized them in my class’ constructor? 4个
我有一个类Hra1,它定义了游戏规则(game = hra).问题是,我得到一个空值,例如尽管在构造函数中创建了arraypoleMinci,但poleMinci == null.换句话说,玩家的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");
}
在该构造函数中,由于poleMinci是在构造函数内部声明的,因此仅在构造函数内部可见.如果类中具有相同名称的变量,则该变量将为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");
}
有关此问题的更多信息,请签出Variable Shadowing.大多数IDE都会警告您可能正在执行此操作,或者有一个允许他们执行此操作的设置.我使用Eclipse并将IDE设置为警告我.您可能也希望这样做.
内容总结
以上是互联网集市为您收集整理的java-为什么我将null作为数组的值?全部内容,希望文章能够帮你解决java-为什么我将null作为数组的值?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。