2022/4/19 JavaDay11
-
jdk1.5开始,java支持传递同类型的可变参数给一个方法
-
在方法声明中,指定参数类型后加一个省略号(...)
-
一个方法只能指定一个参数,它必须是方法的最后一个参数。任何普通参数必须在它之前声明
package com.sundada.method;
public class Demo04 {
public static void main(String[] args) {
// Demo04 demo04=new Demo04();
// demo04.test(1);
printMax(34,46,46,86,232,34);
printMax(new double[]{1,2,3});
}
public void test(int... i){//只可以放到最后面
System.out.println(i[0]);//类似于指针和数组
}
//排序代码
public static void printMax(double...numbers){
if ( numbers.length==0 ){
System.out.println("排序失败!");
return;
}
double result=numbers[0];
//排序
for (int i = 1; i <numbers.length ; i++) {
if ( numbers[i]>result )
{
result=numbers[i];
}
}
System.out.println("最大值是:"+result);
}
}
递归
自我调用
递归结构分为两部分:
-
递归头:什么时候不调用自身的方法。没有头将陷入死循环
-
递归体:什么时候需要调用自身
package com.sundada.method;
public class Demo06 {
public static void main(String[] args) {
System.out.println(f(5));
}
//阶乘
public static int f(int n){
if ( n==1 ){
return 1;//递归头,边界条件
}else {
return n*f(n-1);//递归体
}
}
}
只用栈进行运算,递归可能会导致栈溢出,尽量不使用
java 实现计算机加减乘除
package com.sundada.method;
import java.util.Scanner;
public class TestCalculator {
public static void main(String[] args) {
Calculator1 calculator1=new Calculator1();
calculator1.start();
}
}
class Calculator1{
double number1;
double number2;
double result;
char sign;
boolean reset=true;
//构造方法
Calculator1(){}
//读取键盘数字
void readNumber(){
Scanner sc1=new Scanner(System.in);
number1= sc1.nextDouble();
sign=sc1.next().charAt(0);
number2=sc1.nextDouble();}
double calculate1(){
switch (sign){
case '+':
result=number1+number2;break;
case '-':
result=number1-number2;break;
case '*':
result=number1*number2;break;
case '/':
result=number1/number2;break;
default:
System.out.println("请输入有效数字!");
break;
}
return result;
// if ( sign=='+' ){
// result=number1+number2;
// }else if ( sign=='-' ){
// result=number1-number2;
//
// }else if ( sign=='*' ){
// result=number1*number2;
// }else if ( sign=='/'){
// result=number1/number2;
// }
// return result;
}
void showResult(){
System.out.println(result);
}
//退出方法
void esc(){
System.out.println("是否继续");
Scanner sc2=new Scanner(System.in);
String str=sc2.next();
if(str.equals("是")){
reset=true;
}else if ( str.equals("否") ){
reset=false;
System.out.println("退出");
}else {
System.out.println("输入有误!");
}
}
void start(){
while (reset){
System.out.println("请输入数字及符号");
readNumber();
calculate1();
showResult();
esc();
}
}
}