java三木
『壹』 java三個條件選一個
Java中可以使用三目運算碼皮臘符來從三個選項中選擇一個,語法為:[condition] ? [option 1] : [option 2] : [option 3] 。其中,如果 condition 為 true,則選擇 option 1;如果 condition 為 false,則會驗證 option 2 的結果,如果 option 2 為遲滑 true,則選擇 option 2;如果 option 2 為握李 false,則最終選擇 option 3 。
『貳』 在JAVA中,什麼是單目/雙目/三目運算符
所謂單目運算符就是只有需要一個操作數的運算符,如:--、++同理,雙目運算符就是需要兩個操作數的運算符,如:+、-、*、/、=
等。三目運算符只有一個
?
:
。(需要三個操作數)
『叄』 java三目運算符
看到復雜嵌套的三目運算不要慌,慢慢的一層層剖析你會發現其實也就那樣。
根據三目定義 exp?st1:st2,exp的結果是個boolean類型的數據,如果是true則執行st1,如果為false則執行st2,所以 三目等價於if(exp){st1}else{st2},由此可見上述你給的可以更改成如下代碼:
if(year>a.year){
遲拿做return1;
}else{
if(year<a.year){
return-1;
}else{
if(month>a.month){
return1;
}else{
if(month<a.month){
return-1;
}else{
if(day>a.day){
return1;
}else{
if(day<a.day){
return-1;
}else{
敏塌return0;
}
}
}
}
}
碼衡}
『肆』 如何使用三目運算符編寫一個JAVA程序,找出三個數中的最小值
我這頌畝轎里是用野肆的float型 當然你要對輸入的類型有其它要求耐睜可以自行更改,代碼如下:x0dx0aimport java.util.Scanner;x0dx0ax0dx0apublic class J x0dx0a{x0dx0a public static void main(String [] args)x0dx0a {x0dx0a Scanner scan=new Scanner(System.in);x0dx0a while(scan.hasNext())x0dx0a {x0dx0a float a=scan.nextFloat();x0dx0a float b=scan.nextFloat();x0dx0a float c=scan.nextFloat();x0dx0a float d=Math.min(a, b);x0dx0a float min=(d-c)>0?c:d;x0dx0a x0dx0a System.out.println(min);x0dx0a }x0dx0a }x0dx0a}
『伍』 java中三目運算符
先學java的叫它,三元運算符;先學c的叫它三目運算符
即( ?: )
如名字表示的三元運算符需要三個操作數。
語法為:條件表達式?表達式1:表達式2。
說明:問號前面的位置是判斷的條件,判斷結果為bool型,為true時調用表達式1,為false時調用表達式2。
其邏輯為:「如果為真執行第一個,否則執行第二個。」
『陸』 java怎麼用三目運算符,輸入任意比較三個數大小,輸出中間數
int comp(int a, int b, int c)
{
return a >= b ? (a >= c ? (b >= c ? b : c) : a) : (a >= c ? a : (b >= c ? c : b));
}
『柒』 三目運算符 java
這是編譯器的自動裝箱/拆箱轉換引起的問題,
自動裝箱/拆箱的特性,只要一個運算中有不同的類型,涉及到類型轉換,那麼編譯器會往下(基本類型)轉型,再進行運算。 就是說,如果運算中有int和Integer,Integer會先轉成int再計算。
所以你的代碼中,最後一行
i = StringUtils.isEmpty(ComNo)?RecordType:0;
實際的運行會是這樣 i = StringUtils.isEmpty(ComNo)?RecordType.intValue():0;
RecordType為null,所以會報錯。
可以改成:i = StringUtils.isEmpty(ComNo) ? RecordType : Integer.valueOf(0);
保持類型的一致就不會自動轉型了
『捌』 java三目運算符
1、三目運算符 (表達式1)?(表達式2):(表達式3),計算方法是這樣的:表達式1是一個邏輯表達式游中,如果其值為true,則整個表達式的值為表達粗搭式2的值,否則為表達式3的值
2、例子:int i = (5 > 3) ? (5 + 3) : (5 - 3);結果為i = 8.因為5 > 3為true,所以i = 5 + 3.
3、根據三目運算符的岩磨拿從右到左的結合性,我是這樣劃分的
year > a.year ? 1 : (year < a.year ? -1 : (month > a.month ? 1 : (month < a.month ? -1 : (day > a.day ? 1 : (day < a.day ? -1 : 0)))));
所以應該從最右邊的那個表達式開始計算,結果應該是1、0、-1中的一個值。
以上純屬個人理解。沒搞清楚你這個演算法到底是什麼意義。。。。還有你的compare()方法不能聲明為靜態。
『玖』 java三目運算符
編寫代碼就是一句一句的賦值語句,三目運算最終得到的是卜悔棚一個結果,要把賦給一個變數才行。你這種寫前帶法也是行不通,你這代碼表現出來的意圖是在三目運算中輸出,你應該改為將String字元串作為三目運算的結果,最後再輸出,一型則句話,編譯器沒那麼牛,還解釋不了你現在這樣的代碼。
String result = i%4==0?(i%100==0?(i%400==0?
"This year is a leap year":
"This year is not a leap year"):
"This year is a leap year"):
"This year is not a leap year";
System.out.println(result);
『拾』 java 三目運算符
其實這主要是JAVA重載和基本數據類型自動轉型造成的。
JAVA重載:這里主要調用了println(char x) 和println(int x) 兩個方法。
基本數據類型自動轉型原則中有一條:有多種類型混合運算時,系統將所有類型轉換為大的,然後再進行計算。
自動轉型順序:
byte->short(char)->int->long->float->double.
還有0~65535可以認為是int也可以是char。
System.out.println(true?x:0);此處0被認為是char,所以輸出b,倘若把0改為65536,則輸出66.
同理
System.out.println(true?x:1111111110);此處1111111110已經大於了65535,所以x被自動轉型為int再輸出,輸出66.
System.out.println(false?i:x);也是同理,將x轉換為int,輸出 66.
其實我講得也不是非常詳細,有興趣可以仔細看下重載和基本數據類型轉型的章節,希望能幫到你。