Java 将数组的0索引保留为空以对应程序中的实际值是否合适';什么是前端?

Java 将数组的0索引保留为空以对应程序中的实际值是否合适';什么是前端?,java,arrays,Java,Arrays,我正在创建一个2到8之间有多个玩家的游戏。我可以使用大小为8的数组来容纳8名玩家,但我也可以创建大小为9的数组,并保留将数字转换为和索引所需的所有计算 对我来说,做许多简单的计算,比如int index=playerNumber-1,然后处理没有使用arrayExample[0]的事实,感觉更傻。在代码中实际使用这个元素是罕见的吗?我想说,其他开发人员会发现第一个元素是空的,这令人困惑。 另一方面,只要你清楚你的代码,这是你的选择 也就是说,我可能会使用地图而不是数组,这样我就可以将玩家编号映射

我正在创建一个2到8之间有多个玩家的游戏。我可以使用大小为8的数组来容纳8名玩家,但我也可以创建大小为9的数组,并保留将数字转换为和索引所需的所有计算


对我来说,做许多简单的计算,比如
int index=playerNumber-1
,然后处理没有使用
arrayExample[0]
的事实,感觉更傻。在代码中实际使用这个元素是罕见的吗?

我想说,其他开发人员会发现第一个元素是空的,这令人困惑。
另一方面,只要你清楚你的代码,这是你的选择


也就是说,我可能会使用地图而不是数组,这样我就可以将玩家编号映射到玩家对象,而不用担心数组中缺少元素,也不用担心将玩家编号归零的数学问题。

按照惯例,数组元素从索引0开始。我认为采用零索引元素为空的约定会导致代码容易出错,因为大多数循环都是以零索引开始的方式编写的


再加上一个元素占用了不必要的内存空间,而且数组的大小不等于实际的用户数。

您会有多少这样的数组?如果少于100,我就不担心了。即使是100个空位置也只是空引用,不会占用多个字节

我刚开始的时候就是这样编码的。但是当阅读代码的人遇到问题时,情况发生了变化,更多的精力继续向他们解释代码中的vs-1

顺便说一句,playerNumber似乎很危险。您只需要正确的参考编号,还是也要更改该变量中的玩家编号

为什么不:

 index = playerNumber - 1;

这样你的玩家号码就不会改变了。除非您打算将其更改为局部变量?

尽管保留一些未使用的数组元素没有错,但我认为以这种方式使用数组显示了设计中的一个更深层次的问题:它是将属于程序视图部分的播放器编号重新用作数组的索引,它属于程序的模型部分(在MVC意义上)。这是很脆弱的,因为如果你将玩家编号更改为,比如,玩家名称或玩家颜色,你也必须更改索引方案

这就是为什么我建议将数组索引和播放器编号视为属于不相交的不同域。

我们从0开始计算的开发人员;-)我知道世界其他地方都是从1开始的。。品味问题