以文本方式查看主题

-  课外天地 李树青  (http://www.njcie.com/bbs/index.asp)
--  清心茶舍  (http://www.njcie.com/bbs/list.asp?boardid=21)
----  [求助]请问老师这该怎么改?  (http://www.njcie.com/bbs/dispbbs.asp?boardid=21&id=346)

--  作者:friday
--  发布时间:2007/4/1 19:44:46
--  [求助]请问老师这该怎么改?

我新建了一个判断输入的是否为数值的类。代码如下:

class Check {
  private String str;
  public Check() {
  }

  public Check(String str) {
    this.str = str;
  }

  public boolean isDigital(String str) {
    for (int i = 0; i < str.length(); i++) {
      if (Character.isDigit(str.charAt(i)))
       return true;
      else
        return false;
    }
  }
}

编译时报错,说没有返回类型。我已经return了,不知道怎么回事!

图片点击可在新窗口打开查看

请老师帮忙看一下,谢谢!!

[此贴子已经被admin于2010-12-13 19:51:32编辑过]

--  作者:admin
--  发布时间:2007/4/1 21:00:26
--  回复

这是一种很常见的简单错误,因为你把return写在循环语句的条件判断语句中,计算机会认识这种return有可能不被执行,强行报错,你可以简单修改为:

  public boolean isDigital(String str)
  {
    for (int i = 0; i < str.length(); i++)
    {
      if (Character.isDigit(str.charAt(i)))
       return true;
      else
        return false;
    }
    return true;
  }

[此贴子已经被作者于2010-12-13 19:51:47编辑过]

--  作者:friday
--  发布时间:2007/4/2 22:45:42
--  
我不明白的就是在这个当中返回值的问题,如果这样写的话不是就只返回true了吗?那这个该怎么判断str是否为数值啊?
--  作者:admin
--  发布时间:2007/4/4 7:56:57
--  回复

我添加的那个“return true;”其实永远不会被执行,所以不会始终返回为真的,更好的写法为:

  public boolean isDigital(String str)
  {
    for (int i = 0; i < str.length(); i++)
    {
      if (Character.isDigit(str.charAt(i)))
       return true;
    }


    return false;
  }

[此贴子已经被作者于2010-12-13 19:52:01编辑过]