3 Java方法篇
什么是方法?
- 解决一类问题的步骤的有序组合
- 包含于类或者对象中
- 在程序中被创建,在其他地方被引用
- 最好是一个方法只完成一个功能
方法的定义
修饰符 返回值类型 方法名 (参数类型 参数名){
...
方法体
...
return 返回值;
}
修饰符
可选,定义该方法的访问类型。
返回值类型
方法可能会返回值。如果没有返回值,则用关键字viod。
参数类型
类似一个占位符,当方法被调用时,传递值给参数。可选。
形式参数
在方法被调用时,接收外界输入的数据。
实参
调用方法时,实际传递给方法的数据。
方法体
具体的语句,定义该方法的功能。
eg
方法的调用
package com.fan.Mothed;
public class Demo06 {
public static void main(String[] args) {
//调用有返回值的方法
//1.可以自定义变量接收结果
int x = sum(10,20);
System.out.println(x);
//2.可以直接输出调用
System.out.println(sum(10 ,30));
//3.甚至直接调用
sum(10,50); //单纯调用方法跑一遍,不要求结果
//调用无返回值的方法
//1.只能直接调用
printHelloWorld(3);
}
public static void printHelloWorld(int n){
for (int i = 1; i <= n; i++) {
System.out.println("Hello World!");
}
}
public static int sum (int a,int b){
int c = a + b;
return c;
}
}
方法的重载
方法名一样,参数不一样;
输入不同方法时,调用同名方法的不同参数。
- 方法名称必须相同
- 参数列表必须不同(个数不同,类型不同,参数排列顺序不同等)
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
理论原理:
方法名称相同时,编译器会根据调用方法的参数的个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
命令行传递参数
- 没听懂
可变参数
指定参数类型后加(...)即为可变参数
目的:
- 传递同类型的参数,不用额外去多定义
- 用于我们不知道要传递的参数的数量的方法
递归
先执行代码,后返回结果。
练习,编写简单计算机
package com.fan.Mothed;
import java.util.Scanner;
public class Demo05 {
public static void main(String[] args) {
double x = 0;
long i = 2;
Scanner scanner1 = new Scanner(System.in);
Scanner scanner2 = new Scanner(System.in);
Scanner scanner3 = new Scanner(System.in);
Scanner scanner4 = new Scanner(System.in);
Scanner scanner5 = new Scanner(System.in);
System.out.println("请输入第一个数:");
double nmu1 = scanner1.nextDouble();
System.out.println("请输入您要计算的类型:");
String sign = scanner3.nextLine();
System.out.println("请输入第二个数:");
double nmu2 = scanner2.nextDouble();
switch (sign){
case ("+"):
System.out.println("x"+"="+add(nmu1,nmu2));
double a = add(nmu1,nmu2);
x = a;
break;
case ("-"):
System.out.println("x"+"="+sub(nmu1,nmu2));
double s = sub(nmu1,nmu2);
x = s;
break;
case ("*"):
System.out.println("x"+"="+mul(nmu1,nmu2));
double m = mul(nmu1,nmu2);
x = m;
break;
case ("/"):
System.out.println("x"+"="+div(nmu1,nmu2));
double d = div(nmu1,nmu2);
x = d;
break;
default:
System.out.println("不会!");
return;
}
while (true) {
i++;
System.out.println("请输入您要计算的类型:");
String sign1 = scanner4.nextLine();
System.out.println("请输入第" + i + "个数:");
if (scanner5.hasNextDouble()) {
double num5 = scanner5.nextDouble();
switch (sign1) {
case ("+"):
System.out.println("x"+"="+add(x, num5));
x = add(x, num5);
break;
case ("-"):
System.out.println("x"+"="+sub(x, num5));
x = sub(x, num5);
break;
case ("*"):
System.out.println("x"+"="+mul(x, num5));
x = mul(x, num5);
break;
case ("/"):
System.out.println("x"+"="+div(x, num5));
x = div(x, num5);
break;
default:
System.out.println("不会!");
return;
}
}else {
return;
}
}
}
//加
public static double add (double a,double b){
return a+b;
}
//减
public static double sub (double a,double b){
return a-b;
}
//乘
public static double mul (double a,double b){
return a*b;
}
//除
public static double div (double a,double b) {
return a/b;
}
}
-
第一二个数字没有纠错编程
-
第一二个数字如果输入非数字时,程序报错并中止
-
输入除了加减乘除之外的运算类型时,输出(不会!)并中止程序
-
在第一二个数字后,输入非数字,程序中止

浙公网安备 33010602011771号