这一段Java代码是如何执行的?为什么会先调用Bi方法里的输出语句?

import java.util.Scanner;

public class xiaoming {
	public static void main(String[] args) {
		xiaoming bi = new xiaoming();
		System.out.println("小明可购买的笔数是:" + bi.Bi());
		
	}
	
	public int Bi() {
		int shuibi = 0;									//定义并初始化可购买水笔变量
		int money = 0;     								//定义并初始化购买水笔所携带的钱
		Scanner sc = new Scanner(System.in); 			
		System.out.println("请输入小明携带钱数:");
		money = sc.nextInt(); 							//控制台输入携带钱数
		int temp = 0;									//设立一个临时变量存储携带钱数除以单价的值
		temp = money/5;
		
		if(temp>=5 & temp<20) {
			int i =0;
			i = temp/5;
			shuibi = i+temp;
			
		}else if(temp < 5 & temp>=0) {
			shuibi = temp;
			
		}else if(temp >= 20 ){
			int i = 0;
			int j = 0;
			i = temp/20;
			j = (temp-i*20)/5;
			shuibi = temp + 5*i+j;
			
		}else{
			System.out.print("请输入正确的携带钱数!!!");
			
		}
		
		return shuibi;
	}

}

 

因为你main方法的打印语句是调用Bi函数(方法)获取返回值,肯定是Bi方法执行结束后才会返回结果,所以会先执行Bi里面的打印语句,再执行main方法的打印语句。

记住要诀:从上到下,从内到外,层层深入,逐一跳出

System.out.println("小明可购买的笔数是:" + bi.Bi());

你想的是他应该先输出这句话吧,他执行到这里的时候 要先执行bi.Bi()获取返回值后才能执行

 

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,欢迎您加入CSDN!

目前问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632