Java数组!不禁止进入 公共类游戏入口{ 私有字符串名称; 个人智力得分; 公共游戏条目(字符串n,int s){ name=n; 得分=s; } 公共字符串getName(){ 返回名称; } 公共整数getScore(){ 返回分数; } 公共字符串toString(){ 返回“(“+name+”、“+score+”)”; } } 公开课记分牌{ 私有整数=0; 公众游戏进入【】委员会; 公共记分牌(国际容量){ 棋盘=新游戏条目[容量]; } **公共作废添加(游戏条目e){** //System.out.println(board[numEntries-1].getScore()); int newScore=e.getScore(); //新条目真的是高分吗 //*****这就是我所说的那条线****** if(numEntriesboard[numEntries-1].getScore()){ if(numEntries0&&board[j-1].getScore()board[numEntries-1].getScore())

Java数组!不禁止进入 公共类游戏入口{ 私有字符串名称; 个人智力得分; 公共游戏条目(字符串n,int s){ name=n; 得分=s; } 公共字符串getName(){ 返回名称; } 公共整数getScore(){ 返回分数; } 公共字符串toString(){ 返回“(“+name+”、“+score+”)”; } } 公开课记分牌{ 私有整数=0; 公众游戏进入【】委员会; 公共记分牌(国际容量){ 棋盘=新游戏条目[容量]; } **公共作废添加(游戏条目e){** //System.out.println(board[numEntries-1].getScore()); int newScore=e.getScore(); //新条目真的是高分吗 //*****这就是我所说的那条线****** if(numEntriesboard[numEntries-1].getScore()){ if(numEntries0&&board[j-1].getScore()board[numEntries-1].getScore()),java,arrays,if-statement,indexoutofboundsexception,Java,Arrays,If Statement,Indexoutofboundsexception,简单答案:逻辑or的短路评估 当条件的第一部分,即numEntries

简单答案:逻辑or的短路评估


当条件的第一部分,即
numEntries
计算为
true
时,
|
之后的第二部分根本不计算。

简单答案:逻辑or的短路计算


当条件的第一部分,即
numEntries
计算为
true
时,
|
之后的第二部分根本不计算。

首先检查以下表达式:

if (numEntries < board.length || newScore > board[numEntries - 1].getScore())
numEntries
然后你有一个OR(| |)后跟你要问的表达式


编译器从左到右检查表达式。因此,如果上述表达式为true,则只需输入if并开始执行其内容,而不检查其他表达式。

首先检查以下表达式:

if (numEntries < board.length || newScore > board[numEntries - 1].getScore())
numEntries
然后你有一个OR(| |)后跟你要问的表达式


编译器从左到右检查表达式。因此,如果上述表达式为真,则只需输入if并开始执行其内容,而不检查其他表达式。

当您首次初始化board数组时,board[numEntries-1]仍然不存在。这意味着,在尝试访问元素之前,请确保数组中有元素。numEntriesif(foo!=null&&foo.bar())-它不会导致
foo==null
出现
NullPointerException
,因为
&
的右侧在左侧求值为
false时不会求值。好吧,我不知道。谢谢,相同机制的常见用法是:
如果(foo!=null&&foo.bar())
-对于
foo==null
,它不会导致
NullPointerException
,因为当左侧求值为
false
时,
&
的右侧也不会求值。
numEntries < board.length