命令行传参数
如何传递参数给main方法实现
package com.ckw.blog.base;
public class demo {
public static void main(String[] args) {
//args.length 数组长度
for (int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
}
cmd命令行运行
注意:
##编译的时候可以读取文件编译
javac D:\java日志\javaproject\test\src\com\ckw\blog\base
##运行的时候需要退到src目录,再从包名开始运行类方法
java com.ckw.blog.base.demo
可变参数
- jdk1.5开始,java支持传递同类型的可变的一种方法
- 在方法声明中,在制定参数类型后加一个省略号…
注意点:
- 一个方法只能指定一个可变参数。
- 它必须是最后一个参数,任何参数都需要在它之前声明。
package com.ckw.blog.base;
public class demo02 {
public static void main(String[] args) {
test(1,2,3,67,23);
}public static void test(int u,double... nub){
//加三个点就是可变参数,但是必须是最后一个参数
System.out.println(u);
System.out.println(nub[0]);
System.out.println(nub[1]);
System.out.println(nub[2]);
System.out.println(nub[3]);
}
}
递归
就是可以方法自己调用自身,用简单的代码方法来实现复杂的算法。
尽量不要用递归就不要用。
StackOverflowError 栈溢出错误
注意点:
- 必须有判断终止条件,不然就会陷入死循环
- 什么情况需要用递归
package com.ckw.blog.mathod;
//用递归来计算阶乘法
//阶乘就是5*4*3*2*1
public class demo04_digui {
public static void main(String[] args) {
System.out.println(hell(5));
}public static int hell(int n){
if(n == 1){
return 1;
}else {return n*hell(n-1);}
}
}
其实就是计算到满足条件最远那一层代码,在一层一层计算回来,就像归家一样。所以层层递进,叫递归
栈运算,main方法是最底层。递归就是计算到边界值后,如果边界值超出栈,就会出现栈溢出StackOverflowError的错误。
计算到边界值后就会按原来的方法不断再计算回来。
练习
写4个方法:加减乘除
利用循环+switch进行用户交互
传递需要操作的两个数
输出结果
package com.ckw.blog.base;
import java.util.Scanner;
/*
写4个方法:加减乘除
利用循环+switch进行用户交互
传递需要操作的两个数
输出结果
*/
public class demo_text01 {
public static void main(String[] args) {
while (true){
double a =0;
double b =0;
double c =0;
String idea= "+";
Scanner scanner = new Scanner(System.in);
System.out.println("输入第一个数:");
a = scanner.nextDouble();
System.out.println("输入第二个数:");
b =scanner.nextDouble();
System.out.println("输入方法:");
idea = scanner.next();
switch (idea){
case "+":c = a+b;
break;
case "-":c = a-b;
break;
case "*":c = a*b;
break;
case "/":c = a/b;
break;
default:
System.out.println("未知输入");
}System.out.println(c);
}
}
}