Topic: 帮我看看这段代码的问题 (missing return statement) |
Print this page |
1.帮我看看这段代码的问题 (missing return statement) | Copy to clipboard |
Posted by: cjy Posted on: 2004-09-02 20:16 各位高手:我又有问题来讨教了,希望你们不要烦才好。谁叫我才开始学呢! 代码如下: class CEquation { int i; int getI() { for(i=0;i<=9;i++) if((3*10+i)*8256==(i*10+3)*6528) return i; } void print() { System.out.println("i="+getI()); } } public class Equation { public static void main(String[] args) { CEquation e=new CEquation(); e.print(); } } 本来我预计使得式子(3*10+i)*8256==(i*10+3)*6528成立的i应为4,所以应输出i=4的,谁知编译时却报如下错误: \Equation.java:5: missing return statement { ^ 请问是为什么?谢谢了。 |
2.Re:帮我看看这段代码的问题 [Re: cjy] | Copy to clipboard |
Posted by: why Posted on: 2004-09-02 22:04 错误信息已经清楚吧。 试想想 (3*10+i)*8256 根本不会等如 (i*10+3)*6528,getI() 会不会 return呢? |
3.Re:帮我看看这段代码的问题 (missing return statement) [Re: cjy] | Copy to clipboard |
Posted by: yung Posted on: 2004-09-02 22:25 一旦 if 不成立,则无返回值!你写的不严密。 |
4.Re:帮我看看这段代码的问题 (missing return statement) [Re: cjy] | Copy to clipboard |
Posted by: booolee Posted on: 2004-09-03 10:08 int getI() { for(i=0;i<=9;i++) if((3*10+i)*8256==(i*10+3)*6528) return i; } 修改为 int getI() { for(i=0;i<=9;i++) if((3*10+i)*8256==(i*10+3)*6528){ return i; } return -1; //保证无论程序运行时的状态,都会有一个返回值 } |
5.Re:帮我看看这段代码的问题 (missing return statement) [Re: cjy] | Copy to clipboard |
Posted by: cjy Posted on: 2004-09-06 16:26 对不起各位,前两天密码丢失,没有回复各位。 先说确实如yung所说,我这个程序不严密,如果if不成立就要报错。先谢过给我指出错误之处。不过我这是在用一道数学题练手,所以方程一定有解。我看了booolee兄的回贴,试了一下没有报错,但是不是我预计的结果,也不是方程的结果。所以我自己试着改了下。把 int getI() { for(i=0;i<=9;i++) if((3*10+i)*8256==(i*10+3)*6528) return i; } 改为了: int getI() { for(i=0;i<=9;i++) if((3*10+i)*8256==(i*10+3)*6528) break; return i; } 就得到了预想的结果,我想问的是在原程中当for中i循环到i=4时,if的条件就成立了,那么就应执行return i,但为什么却没有执行?而是继续循环,使得return i没有执行,所以报错。当我中断循环后,就可以return正确的i值了。 希望各位能解我的疑惑,在这儿先谢过了。 |
6.Re:帮我看看这段代码的问题 (missing return statement) [Re: cjy] | Copy to clipboard |
Posted by: jerry010 Posted on: 2004-09-06 18:08 缺少返回值是编译期错误,不是运行期错误,也就是还没有开始运行。我想确定一下,第二段程序加上括号是不是这样? int getI() { for(i=0;i<=9;i++){ if((3*10+i)*8256==(i*10+3)*6528) break; } return i; } |
7.Re:帮我看看这段代码的问题 (missing return statement) [Re: cjy] | Copy to clipboard |
Posted by: why Posted on: 2004-09-06 19:28 iint getI() { |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |