JAVA方法
定义
类似其他语言的函数,是一段用来完成特定功能的代码片段。
设计方法的原则
一个方法只完成一个功能,有利于后期的扩展
方法重载
规则:
- 方法名称必须相同
- 参数列表必须不同
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个数:");
if(scanner.hasNextInt()){
int num1 = scanner.nextInt();
int num2 = scanner.nextInt();
int maxNum = max(num1,num2);
System.out.println("两个int型的数作比较,最大的数为:"+maxNum);
} else{
double num1 = scanner.nextDouble();
double num2 = scanner.nextDouble();
double maxNum = max(num1,num2);
System.out.println("两个double型的数作比较,最大的数为:"+maxNum);
}
scanner.close();
}
//比大小
public static int max(int num1,int num2){
int result;
if(num1>num2){
result = num1;
}else {
result = num2;
}
return result;
}
//方法重载
public static double max(double num1,double num2){
double result;
if(num1>num2){
result = num1;
}else {
result = num2;
}
return result;
}
}
命令行传参
package method;
public class Demo03 {
public static void main(String[] args) {
for (int i = 0; i < args.length ; i++) {
System.out.println("args["+i+"]:"+args[i]);
}
}
}
可变参数(不定项参数)
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.test(1,2,3);
}
public void test(int... i){
//没有输入则返回一个无输入
if(i.length == 0){
System.out.println("No argument passed");
return;
}
//i.length 可以判断数组的长度即判断输入了几个数
for (int j = 0; j < i.length; j++) {
System.out.println(i[j]);
}
}
}
方法递归
递归结构
- **递归头:**什么时候不调用自身方法。如果没有头,程序陷入死循环
- **递归体:**什么时候需要调用自身方法。
//递归求阶乘
public class Demo06 {
public static void main(String[] args) {
int a = f(3);
System.out.println(a);
}
public static int f(int n){
if(n==1){
return 1;
}else{
return n*f(n-1);
}
}
}
小作业
写一个计算器,要求实现加减乘除功能,并且能够循环接收新的数据,通过用户交互实现。(只实现两个数的运算)
public class counter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
boolean flag = true;
double a = 0;//第一个数
double b = 0;//第二个数
double sum = 0;//最终结果
String c;
System.out.println("请输入公式:");
while(scanner.hasNextDouble()){
flag = true;
a = scanner.nextDouble();
c = scanner.next();
b = scanner.nextDouble();
switch (c){
case "+":
sum = add(a,b);
break;
case "-":
sum = sub(a,b);
break;
case "*":
sum = muti(a,b);
break;
case "/":
sum = div(a,b);
break;
default:
System.out.println("我不会,长大后在学习");
continue;
}
System.out.println(a + c + b + "=" + sum);
System.out.println("请输入公式:");
}
scanner.close();
}
public static double add(double num1,double num2){
return num1+num2;
}
public static double sub(double num1,double num2){
return num1-num2;
}
public static double muti(double num1,double num2){
return num1*num2;
}
public static double div(double num1,double num2){
return num1/num2;
}
}