Java 如何初始化对象数组?
所以我有这个对象数组,我想初始化它,这样当我使用对象访问器函数时,当用户没有输入足够的数据来填充数组的每个元素时,它不会抛出NullPointerException 这是代码,我说的阵列是planetArray:Java 如何初始化对象数组?,java,Java,所以我有这个对象数组,我想初始化它,这样当我使用对象访问器函数时,当用户没有输入足够的数据来填充数组的每个元素时,它不会抛出NullPointerException 这是代码,我说的阵列是planetArray: import java.util.*; public class SolarSystem{ public static final int PLANET_MAX = 10; public int planetCount = 0; Planet[] planetA
import java.util.*;
public class SolarSystem{
public static final int PLANET_MAX = 10;
public int planetCount = 0;
Planet[] planetArray = new Planet[PLANET_MAX];
String systemName;
public SolarSystem(String name){
this.systemName = name;
}
}
public void addPlanet(String planetName, double planetMass, double planetDistance){
double mass = Math.round(planetMass*1000)/1000.0;
double distance = Math.round(planetDistance*1000)/1000.0;
Planet newPlanet = new Planet(planetName, mass, distance);
newPlanet.calculatePeriod(planetDistance);
planetArray[planetCount] = newPlanet;
planetCount++;
}
public String toString(){
String myString = systemName + "\n";
for(int i = 0; i < PLANET_MAX; i++){
String name = planetArray[i].getPlanetName();
double mass = planetArray[i].getPlanetMass();
double distance = planetArray[i].getPlanetDistance();
double period = planetArray[i].getPlanetPeriod();
if(period <= 1){
period = period * 365.25;
period = Math.round(period*1000)/1000.0;
myString = myString + "Planet " + name + " has a mass of " + mass + " Earths, is " + distance + "AU from its star, and orbits in " + period + " days\n";
}
else{
period = Math.round(period*1000)/1000.0;
myString = myString + "Planet " + name + " has a mass of " + mass + " Earths, is " + distance + "AU from its star, and orbits in " + period + " years\n";
}
}
return myString;
}
//accessors
public Planet[] planetArray(){
return planetArray;
}
public String getSystemName(){
return systemName;
}
//mutators
public void setPlanetArray(Planet[] planetArray){
this.planetArray = planetArray;
}
public void setSystemName(String systemName){
this.systemName = systemName;
}
}
import java.util.*;
公共级太阳能系统{
公共静态最终整型行星_MAX=10;
公共int planetCount=0;
行星[]天文馆=新行星[行星_MAX];
字符串系统名;
公共太阳能系统(字符串名称){
this.systemName=名称;
}
}
public void addPlanet(字符串平面名称、双平面质量、双平面位置){
双质量=数学圆(平面质量*1000)/1000.0;
双倍距离=数学圆(平面距离*1000)/1000.0;
行星newPlanet=新行星(行星名称、质量、距离);
newPlanet.calculatePeriod(planetDistance);
天文馆[planetCount]=新行星;
planetCount++;
}
公共字符串toString(){
字符串myString=systemName+“\n”;
对于(int i=0;i 如果(周期是一样的,你
for(int i = 0; i < PLANET_MAX; i++) {
if(planetArray[i]==null)
continue;
planetArray[i].setPlanetName("/0");
}
for(inti=0;i
另一位评论者是对的,列表对于这类事情更方便。从文体、常见做法的角度来看,你真的不想做你建议的事情。也就是说,实际上没有人插入非空的虚拟对象或值来表示“尚未设置”或“未提供”
java null几乎只用于表示“未设置”、“未提供”或“不适合此用途”。发明一种新机制会混淆代码的意图,如果其他人使用您的代码,可能会造成严重破坏
尽管始终检查空值似乎很困难,但Java最佳实践规定:
如果obj不为空,则它是一个有效的obj,可以在您的计算、操作、视图、使用查询等中使用和合并
您可以清理用户输入、上载、CGI参数以及任何您无法控制的内容。任何无效或缺失的值都将变为null,以免干扰程序的其余部分
如果参数和值是从您无法控制的组件调用的,或者您没有彻底检查或验证,那么最好检查它们是否为null
这些做法可以显著提高代码的安全性、可靠性和使用寿命。对于冗长的“答案”,我深表歉意。可能重复的答案应该能满足您的需要。问题是,答案只显示有人手动将数据输入已知数组大小。我想用空值或0或0填充数组在不知道数组大小的情况下手工操作。如果数组大小未知,请考虑使用列表。在for循环中,可以检查null:<代码>(如果PrimeList.GET(i)!= NULL)执行“< < /代码>”。
for(int i = 0; i < PLANET_MAX; i++) {
if(planetArray[i]==null)
continue;
planetArray[i].setPlanetName("/0");
}