首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

小弟我的一个方法要返回一个String[][] ,但是变量String[][] MyInvokeStr 的实例化在try里面,并且MyInvokeStr 值也是

2012-03-16 
我的一个方法要返回一个String[][] ,但是变量String[][] MyInvokeStr 的实例化在try里面,并且MyInvokeStr

我的一个方法要返回一个String[][] ,但是变量String[][] MyInvokeStr 的实例化在try里面,并且MyInvokeStr 值也是在try里面写入的。我如
我的一个方法要返回一个String[][]   ,但是变量String[][]   MyInvokeStr   的实例化在try里面,并且MyInvokeStr   值也是在try里面写入的。我如何来返回这个MyInvokeStr   呢?它编译的时候老是报错:没有实例化。
代码如下:

public   String[][]     MyInvokeService(String   ServiceType){
String   MyInvokeStr[][];
try   {        
...
MyInvokeStr   =   new   String[r][c];
                ...
}  
catch   (Exception   ex)   {         ex.printStackTrace();         }
return   MyInvokeStr;
}

[解决办法]
对于数组的初始化
String MyInvokeStr[][] = null;
你也可以像下面这样:
String MyInvokeStr[][] = new String[0][0];

看你自己的喜好了,两者没有什么区别,
只是在你引用该方法获取返回数组后
上面的方法要判断是否为null
下面的则不需要。
[解决办法]
如果你的代码在
MyInvokeStr = new String[r][c];
这一句时或者之前抛出异常,则MyInvokerStr没有赋值。
因此编译return MyInvokerStr的时候检测到变量MyInvokerStr可能没赋值。
只需要在申明MyInvokerStr的时候初始化一下就好:
String MyInvokeStr[][] = null;

[解决办法]
若生成的是一个基本数据类型的数组,则java默认将数组中的每个元素设为0(若为boolean型,则设为false),若声明的是一个对象数组,必须为obj的每个元素赋值,初始化进程才算完成。
所以String MyInvokeStr[][] = null;即可
[解决办法]
局部变量申明的时候不做初始化
不赋值会引起编译错误,不管是对于基本类型还是对象类型

推荐代码
try
{
String[][] MyInvokeStr = new String[r][c];
return MyInvokeStr;
}
catch(Exception ex)
{
return null;
}

热点排行