为什么for循环得不到返回值?

为什么for循环得不到返回值?


输出结果是这样的,为什么gallonNeed的值没带回来?

Please input the length of the room>>

15

Please input the width of the room>>

20

Please input the height of the room>>

10

0

This room needs 0gallons

the whole payment is $0

package chapter3;


import java.util.Scanner;


public class PaintCalculator {


public static void main(String[] args) {

// TODO Auto-generated method stub

Scanner input=new Scanner(System.in);

System.out.println("Please input the length of the room>>");

int length=input.nextInt();

System.out.println("Please input the width of the room>>");

int width=input.nextInt();

System.out.println("Please input the height of the room>>");

int height=input.nextInt();

int area=wallArea(length, width, height);

int gallonNeed=gallonNeed(area);

displayGallonNeed(gallonNeed);

displayPayment(gallonNeed);

}

public static int wallArea(int length, int width, int height) {

int area=2*(length*height+width*height)+length*width;

return area;

}

public static int gallonNeed(int area) {

int gallonNeed=0;

for(int n=0;area>=(350*n)&&area<=(350*(n+1));n++) {

gallonNeed=n;

}

System.out.println(gallonNeed);

return gallonNeed;

}

public static void displayGallonNeed(int gallonNeed) {

System.out.println("This room needs "+gallonNeed+"gallons");

}

public static void displayPayment(int gallonNeed) {

int payment=gallonNeed*32;

System.out.println("the whole payment is $"+payment);

}

}


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、在gallonNeed()方法的for循环中,当area >= (350 * n) && area <= (350 * (n + 1))为true时,才会执行for循环中的代码。

当运行程序,输入15,20,10时,area为1000,在gallonNeed()方法中,最初n为0,这时 (350 * n) 为0, (350 * (n + 1))为350, area >= (350 * n) && area <= (350 * (n + 1))就是1000>=0 && 1000<=350,即true&&false,结果为false 条件不成立,这时就会退出for循环。gallonNeed还是最初的值0。

建议同学改一下for循环中的判断条件。

2、如果问题没有解决,建议同学详细说明一下代码要做的事情,方便老师回答

祝学习愉快~

好帮手慕阿满 2020-11-11 16:31:06

同学你好,gallonNeed()可以将返回值返回。同学的问题可能出现在gallonNeed()方法的for循环中。

例如输入长宽高为5,3,3。计算表面积为45。在gallonNeed()方法的for循环中,

当n=0时,area>=(350*n)&&area<=(350*(n+1))为45>0 && 45<350,条件成立,循环中,将n=0赋值给gallonNeed。

当n=1时,area>=(350*n)&&area<=(350*(n+1))为45>350 && 45<700,条件不成立,不再循环。

此时返回值gallonNeed的值为0。主方法中得到的gallonNeed也为0,其他方法的计算结果也是0。

祝:学习愉快~

  • 提问者 慕瓜1413576 #1
    我输入的是15,20,10,area这是应该等于1000,进入for循环后n=2时才不再循环,但是n=2没有返回。请问for循环哪里出错了,怎么改才能把n的值带回?
    2020-11-16 14:57:45
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师