本文目錄一覽:
- 1、如何從DOE實驗設計的最佳參數最終得到一個控制範圍?
- 2、求解JAVA編程題:編寫一個程序,通過命令行參數方式獲得5個整數,並輸出這5個數的累加和
- 3、java編程:編寫應用程序,從命令行輸入兩個小數參數,求它們的商。要求程序中捕捉NumberFo
- 4、p.setLastName(“Doe”));’ title=’java 8 新特性中p->p.setLastName(“Doe”));’>java 8 新特性中p->p.setLastName(“Doe”));
如何從DOE實驗設計的最佳參數最終得到一個控制範圍?
可以在進行DOE響應優化器之後進行預測分析,給定不同的參數進行結果的預測,幫助我們去確認哪個參數區間是最優的。
求解JAVA編程題:編寫一個程序,通過命令行參數方式獲得5個整數,並輸出這5個數的累加和
if (args.length!=5) {
System.out.println(“請輸入5個整數”);
System.exit(1);
}
int sum=Integer.valueOf(args[0])+Integer.valueOf(args[1])
+Integer.valueOf(args[2])+Integer.valueOf(args[3])
+Integer.valueOf(args[4]);
System.out.println(sum);
java編程:編寫應用程序,從命令行輸入兩個小數參數,求它們的商。要求程序中捕捉NumberFo
分析題目
NumberFormatException,數字格式異常,常見於由字元串轉換到數字的時候會出現
比如abc2.0–轉換成數字時,系統就會拋出這個異常。
ArithmeticException ,除0異常。這個異常常見於整數除整數,如果被除數是0,那麼會拋出這個異常。但是提示要求是小數除小數。double小數就算是0,那麼在存儲的時候也不是簡單的0,而可能是0.00000000001等情況,那麼除零異常就不會被拋出。我們可以自己手動判斷被除數是否等於0,如果等於0,那麼我們手動拋出該異常,然後進行捕獲
參考代碼一:簡潔版
import java.util.Scanner;
public class DivDemoSp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(true){
try{
System.out.println(“輸入除數”);
double d1 = Double.parseDouble(sc.nextLine());
System.out.println(“輸入被除數”);
double d2 = Double.parseDouble(sc.nextLine());
if(d2==0){
throw new ArithmeticException(“捕獲到除0異常~~!!”);//手動拋出除零異常
}
double d3 = d1 / d2;
System.out.println(“計算結果:” + d1 + “/” + d2 + “=” + d3);
break;//如果能正常運行到這裡,說明前面的輸入都是正確的,所以可以跳出循環了
}catch(NumberFormatException e1){//捕獲數字格式異常
System.out.println(“捕獲到數字格式異常”);
continue;
}catch (ArithmeticException e2) {//捕獲到除零異常
System.out.println(e2.getMessage());
continue;
}
}
}
}
測試代碼
輸入除數
12
輸入被除數
捕獲到除0異常~~!!
輸入除數
12
輸入被除數
agc
捕獲到數字格式異常
輸入除數
12
輸入被除數
0.5
計算結果:12.0/0.5=24.0
參考代碼二:
public class DivDemo {
static Scanner sc = new Scanner(System.in);// 定義一個掃描器,用於讀取輸入信息
public static void main(String[] args) {// main方法
div();// 調用除法方法
}
//div方法,用於得到2個小數,並且進行除法運算,如果被除數為0.拋出除零異常
static void div() {
double d1 = getNum(“輸入 除數”);// 調用輸入數字的方法
double d2 = getNum(“輸入被除數”);
try {
if (d2 == 0) {//如果被除數等於0,那麼拋出除零異常
throw new ArithmeticException(“捕獲到除零異常!!!”);
}
double d3 = d1 / d2;
System.out.println(“計算結果:” + d1 + “/” + d2 + “=” + d3);
// div();//可以重新調用div方法,再次進行輸入
} catch (ArithmeticException exception) {//捕獲到除零異常
System.out.println(exception.getMessage());//列印出異常信息
// div();//當捕獲異常後,也可以重新調用div方法,再次進行輸入
}
}
//getNum方法,用於得到一個數字
static double getNum(String tips) {
double dnum;// 定義一個小數變數
while (true) {
try {
System.out.println(tips);// 顯示提示文字
String s1 = sc.nextLine();// 讀取輸入的一行信息
dnum = Double.parseDouble(s1);// 如果可以把輸入的信息轉換成數字就跳出循環,
// 如果無法把信息轉成數字就會報數字格式異常
break;//跳出循環
} catch (NumberFormatException exception) {//捕獲數字格式異常
System.out.println(“捕獲到了數字格式錯誤異常!!!”);//提示文字,並且繼續循環
}
}
return dnum;//返回數字
}
}
運行測試
輸入 除數
1.0
輸入被除數
捕獲到除零異常!!!
輸入 除數
1.0abc
捕獲到了數字格式錯誤異常!!!
輸入 除數
1.0
輸入被除數
0.5
計算結果:1.0/0.5=2.0
p.setLastName(“Doe”));’>java 8 新特性中p->p.setLastName(“Doe”));
這是lambda表達式,也就是匿名函數,對於
persons.forEach(p-p.setLastName(“Doe”));
這句代碼,persons是一個list,forEach是一個內部迭代的方法,p-p.setLastName(“Doe”)是一個匿名函數對象。
這個語句等價於
for (Person p : persons) {
p.setLastName(“Doe”);
}
但是用for循環是外部迭代,速度略慢。
p-p.setLastName(“Doe”)
p是指list當中取出的對象,p可以自己定義,你寫a也可以,相應的就要變成
a-a.setLastName(“Doe”)
-是lambda表達式的符號,-左邊的對象去傳入lambda函數體p.setLastName(“Doe”),是前面傳入的p去調用setLastName方法,如果要調用多個方法,那麼方法體要用花括弧包含
例如persons.forEach(p-{
p.setLastName(“Doe”)
System.out.println(p);
});
綜上所述
persons.forEach(p-p.setLastName(“Doe”));
是把p-p.setLastName(“Doe”);這個函數對象,給了persons的迭代器,讓迭代器用這個函數去對集合中的每一個對象使用
有了lambda,你可以這樣定義一個新的線程
new Thread(() – {System.out.println(“hello word!”);}).start();
() – {System.out.println(“hello word!”);}這句語句其實就是runnable介面的實現對象,
編譯器會根據函數需要實現的介面去隱式轉換,Thread的構造方法需要傳遞Runnable介面的實現類,所以new Thread(() – {System.out.println(“hello word!”);}).start();相當於
new Thread((Runnable)() – {System.out.println(“hello word!”);}).start();
其中()是匹配介面中的無參函數,因為Runnable介面中run方法為無參所以是()
-指明前面是傳入參數,後面是函數體
有了lambda就能寫出更加漂亮的代碼,以及更少的工作量,實現一個方法的介面用匿名內部類的話看起來是冗餘代碼了
純手打望採納
原創文章,作者:BDE9V,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/130745.html