1、定义一个方法并且调用,这样会很方便,大大减少不必要的浪费。但定义方法之前首先得明确该方法最后的结果想要执行什么?还要明确在该方法中是否需要一些参数(形参)
例如下面的代码片段:
// 进入租车系统
public void YesOrNo() {
System.out.println("*************欢迎使用达达租车系统************");
System.out.print("\n");
System.out.println("您是否要租车?1、是 2、否");
Scanner input = new Scanner(System.in);
if (input.nextInt() == 1) {
System.out.println("***********您可租车的类型及其价目表***********");
}
}
以上的YesOrNo()方法想要执行的只是一个进入系统的提示,不需要任何参数,也不需要返回任何值,在main函数中直接调用它就可以了
再例如下面的代码片段:
// 获取汽车信息
public void getCarsList(Car[] cars) {
System.out.printf("序号\t汽车名称\t\t租金\t\t容量");
for (int i = 1; i <= cars.length; i++) {
System.out.println("\r" + i + ".\t" + cars[i - 1].getBrand() + "\t" + cars[i - 1].getPrice() + "元/天 \t"
+ cars[i - 1].getCapacity());
}
}
以上的getCarsList()方法执行打印车辆信息,它需要传入原始车辆信息数据(Car[] cars),这就得定义一个有参数的方法。但它不需要返回任何值,在main函数中直接调用它就可以了:
2、但实际上,方法不仅要定义“执行动作”,还得给main函数返回自己“加工”数据。例如下面的片段:
// 计算金额
public int getMoneys(Car[] cars, int money, int carNum) {
money = cars[carNum - 1].getPrice();
return money;// 返回money的值
}
以上的getMoneys()方法执行计算金额,它不仅需要传入原始数据(车辆信息),还需要返回金额(return money),以便在main函数中打印账单。
3、方法中传值的内容是是最基础的也是最重要的,今天就搞混了,最后“多方打听”,终于搞定。
以上的截图来自《Java程序设计语言 第4版》p45,PDF下载见
另附刚做的test:
public class ArgsTransfer {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArgsTransfer t = new ArgsTransfer();
int a = 5;
int b = 10;
// 1、给实参a,b传值 ,分别传给形参i和j
// 2、对象t调用swap方法
// 3、在方法swap中i,j的值互换,并返回i的值(return i;)给main函数中的a
System.out.println("a=" + a + "b=" + b + "a=" + t.swap(a, b));
}
public int swap(int i, int j) {// 方法只能执行动作,不能传值(向上)
int temp = i;
i = j;
j = temp;
System.out.println("swap方法执行了");
System.out.println("此处i=" + i + ",j=" + j + ",i与j交换了");
System.out.println("并且与main方法中的a,b无关");
return i;
}
}
运行结果: