java mysql:表行作为包含字符串的对象

java mysql:表行作为包含字符串的对象,java,mysql,arrays,string,jdbc,Java,Mysql,Arrays,String,Jdbc,我用java创建了一个类(Employee),其中只包含数据成员,以匹配Employee表的行。 字符串名称、整数年龄、双薪等 接下来,我创建一个对象数组employeeemp[]=newemployee[50],固定维度为50,从mySQL数据库中读取一些数据行,并逐个存储在这个对象数组中。 然后,该对象数组由方法返回给调用方法。 接下来,我想像这样在while循环中处理这个对象数组 while(!emp[arraycounter].Name.equals("")) 我想,我正在检查对象数组

我用java创建了一个类(Employee),其中只包含数据成员,以匹配Employee表的行。 字符串名称、整数年龄、双薪等

接下来,我创建一个对象数组employee
emp[]=newemployee[50]
,固定维度为50,从mySQL数据库中读取一些数据行,并逐个存储在这个对象数组中。 然后,该对象数组由方法返回给调用方法。 接下来,我想像这样在while循环中处理这个对象数组

while(!emp[arraycounter].Name.equals(""))
我想,我正在检查对象数组中名称为空的第一个元素

这会引发一个
NullPointerException
。我错过了什么? 事实上,我希望能够将这个对象数组的元素传递给方法,这些方法被声明为接受employee类的对象作为参数


Sat

例如,如果数据库中只有35行,则执行emp[35]时,员工为空。因此,当您执行emp[35]时,命名您将获得NPE。 一些建议:

1/属性使用小写

2/更好的用户“.equals(string)比string.equals(“”)避免NPE

3/只需使用列表而不是数组:

List<Employee> employees= new ArrayList<Employee>();
employees.add(The data extracted form db)
List employees=new ArrayList();
添加(从数据库中提取的数据)

首先,您必须包含完整的代码,以便我们进行分析

第二,让我有点恼人-不要从外部访问属性。将它们设置为private并创建getName和setName方法,等等。这是一个很好的做法


现在,针对您的问题,您要么没有初始化对象,要么没有初始化对象中的属性。也就是说,在employee构造函数中,您应该为所有属性设置默认值(如
Name=“;
),并且在读取数据之前,您应该初始化整个数组(如
,用于(i=0;iAdd)完整(相关)代码和stacktrace。您可以比较“”是否为空?我想你需要检查下一项的结果集是否为空,然后检查名称是否为空!这并不能回答问题。问题中没有足够的信息,所以我不明白你为什么要回答它。他问他为什么有NPE。所以我解释他为什么得到它。如果你没有,那也不错有很多信息。但感谢-1…你无法知道我们目前掌握的信息的确切原因。你的答案包含“例如”,这表明你不确定。下次,请在提供答案之前在评论中要求澄清。:)这对OP更有帮助,对系统和版主更清晰,并且缩短了编辑/解决周期。感谢您尝试帮助tho!!只是出于好奇:有人能解释一下为什么我得到了两张反对票吗?我想知道我在回答中犯了什么错误。似乎在回答中,你得到了反对票和with“添加完整(相关)代码和堆栈跟踪”你获得了投票权。谢谢你上了@Erwan C课,但对我来说,这似乎很教条。如果我有一个想法可能会帮助另一个用户,即使他的描述不完整,我应该避免仅仅因为他没有发布他的代码就去帮助他。我理解好的描述的价值,以及充分理解问题所需要的代码(因此我写了第一段),但这种痴迷真的有必要吗?“如果我有一个想法可以帮助其他用户,即使他的描述不完整”——>是的,我完全同意,而且我也从中学到了很多,但我可以理解,如果每个人都开始在没有信息的情况下给出答案,那么新来者将很难把它们分类好,谢谢你的教训。了解一个社区的思维过程总是很重要的。今后我将努力遵守这些标准。