2022/4/19 JavaDay11
阿新 • • 發佈:2022-04-19
-
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();
}
}
}