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

为什么FOR中定义返回值显示无效的异常提示

2013-08-23 
为什么FOR中定义返回值显示无效的错误提示?public NodeList getContent(String XmlTarget, String Conditi

为什么FOR中定义返回值显示无效的错误提示?


public NodeList getContent(String XmlTarget, String Condition) {
// TODO Auto-generated method stub

for (int i = 0; i < nodes.getLength(); i++) {
Node result = nodes.item(i);
if (result.getNodeType() == Node.ELEMENT_NODE
&& result.getNodeName().equals(XmlTarget)) {
NodeList ns = result.getChildNodes();
return ns;

} else {

return null;
}
}

}
Java
[解决办法]
如果list的大小是 0 ,那么返回什么?
[解决办法]
按照你的逻辑还需要for循环么?
[解决办法]
你的nodes那来的呀?
[解决办法]
是不是在得到你想要的结果的时候添加一个break,退出循环啊?
[解决办法]
引用:
Quote: 引用:

如果list的大小是 0 ,那么返回什么?

问题在于for一定是有结果的,我是说eclipse会自动提示代码错误,返回值如果要定义在for之外,怎么定义呢?


你list大小为0,都不会进for循环啊,方法就没返回值了
[解决办法]
我写了下面代码,你看一下

package com.meritit.test;

import java.util.ArrayList;
import java.util.List;

public class Test {
public static void main(String[] args) {
System.out.println(check());
}

public static boolean  check(){
List<String> list = new ArrayList<String>();
for (int i = 0; i < list.size(); i++) {
           return true;
        }
return false;
}
}
输出结果false

你应该在for循环之外再加一个return null;
------解决方案--------------------


private static int getNumber()
{
for(int i=0;i<10;i++)
{
return i;
}

return 0;
}


这段代码如果没有return 0; 这条语句,就会提示错误。(This method must return a result of type int)
对于编辑器来说,可能会默认的从最坏的打算进行计算,也就是无法进入循环的情况。他不会根据实际情况进行判定的。


[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

如果list的大小是 0 ,那么返回什么?

问题在于for一定是有结果的,我是说eclipse会自动提示代码错误,返回值如果要定义在for之外,怎么定义呢?


你list大小为0,都不会进for循环啊,方法就没返回值了

麻烦你可以稍微讲的通俗易懂一些吗?


还需要通俗点?...你for循环要搞明白啊.

 for (int i = 0; i < nodes.getLength(); i++) {  // 当你nodes.getLength()=0时,就不会进for循环啊      
   }

->相当于这样了 for(int i=0;i<0;i++){
  System.out.println("是否进入for循环"); //  这里根本就不会进来,也就不会打印.
}

// 你在你方法的最后加个返回值吧 return null;就不会报错了

[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

Quote: 引用:

如果list的大小是 0 ,那么返回什么?

问题在于for一定是有结果的,我是说eclipse会自动提示代码错误,返回值如果要定义在for之外,怎么定义呢?


你list大小为0,都不会进for循环啊,方法就没返回值了

麻烦你可以稍微讲的通俗易懂一些吗?


还需要通俗点?...你for循环要搞明白啊.

 for (int i = 0; i < nodes.getLength(); i++) {  // 当你nodes.getLength()=0时,就不会进for循环啊      
   }

->相当于这样了 for(int i=0;i<0;i++){
  System.out.println("是否进入for循环"); //  这里根本就不会进来,也就不会打印.
}

// 你在你方法的最后加个返回值吧 return null;就不会报错了


额。当I要是为零的话,我知道是不会进入FOR循环的。但如果不为零的时候这不是ECLIPSE还是会提示出错么。我记得某本书上写的循环当中返回值是无效的,是跟这个有关系吗?还有当返回了NODELIST后,最后再写一条return null,这样在取值的时候不会报错吗?

eclipse只是个编译器,只会从语法角度上来判断是否有错误,并不会智能到知道你nodes具体大小是多少.
当你nodes不为0时,进入for循环后必然是有返回值的,方法最后的return null就不会执行了,这个是给当nodes=0时的返回值.



另外感觉你for循环也有问题..


 for (int i = 0; i < nodes.getLength(); i++) {
            Node result = nodes.item(i); // 当取第一个时,你下面马上用if-else判断返回值退出方法了,这样第二,第三个Node就根本没有遍历到,也就是说你这for循环毫无意义..
            if (result.getNodeType() == Node.ELEMENT_NODE
                    && result.getNodeName().equals(XmlTarget)) {
                NodeList ns = result.getChildNodes();
                return ns;
 
            } else {
 
                return null;
            }
        }

[解决办法]
for 中尽量用赋值,不推荐把return 放在循环当中。

因为,循环中得到的值,可能是Null,或者出错。

这样会导致整个Process停止。

热点排行