我想知道如何檢查三個值中的兩個是否相同。我現在的代碼是:
public static boolean twoOutOfThree(int a, int b, int c) {
if ((a==b) || (b==c) || (a==c)) {
return true;
}else{
return false;
}
}
這通過了所有正確的測驗,但是當我測驗它的 (0,0,0) 時,它回傳 true 而不是 false。關于我做錯了什么有什么建議嗎?
uj5u.com熱心網友回復:
當所有 3 個都相同時,那么a==b顯然也是如此。因此,每 3 個案例還需要檢查第 3 個案例是否不同。所以你需要改變
((a==b) || (b==c) || (a==c))
到
((a==b && b!=c) || (b==c && a!=c) || (a==c && b!=c))
附加提示:
此表單的功能
if (condition) {
return true;
} else {
return false;
}
只需做就可以寫得更短
return condition;
所以最終的結果是:
public static boolean twoOutOfThree(int a, int b, int c) {
return ((a==b && b!=c) || (b==c && a!=c) || (a==c && b!=c));
}
uj5u.com熱心網友回復:
這是一個未優化的解決方案。
將Set擺脫重復項,然后只需檢查其最終大小。
return new HashSet<Integer>(Arrays.asList(a,b,c)).size() == 2;
uj5u.com熱心網友回復:
您可以在 if 陳述句中添加一個額外的案例:
((a==b) || (b==c) || (a==c) && !(a == b & b == c))
可能有一種更有效的方法來做到這一點。
uj5u.com熱心網友回復:
例如,您可以添加一個名為“count”的變數,如果任何值等于另一個值,則將 count 增加 1,然后您可以檢查 count 是否等于 2
uj5u.com熱心網友回復:
您可以算作以下解決方案
public static boolean twoOutOfThree(int a, int b, int c) {
int count = 0;
if (a == b) {
count = 1;
}
if (b == c) {
count = 1;
}
if (c == a)
count = 1;
}
if (count == 2) {
return true;
} else {
return false;
}
}
uj5u.com熱心網友回復:
只需創建一個集合并在集合中添加您的值。Set 始終只保存唯一值。因此,如果您有 3 個數字并將它們添加到一個集合中,并且您的集合長度為 3,則沒有一個數字彼此相等。如果長度為 2,則 2 個數字相等,如果長度為 1,則所有 3 個相等
uj5u.com熱心網友回復:
return !(
(
(a==b)&&(b==c)
) ||
(
(a!=b)&&(b!=c)&&(a!=c)
)
);
只有 10 個操作員由
- 3 和
- 1 或
- 1 不是
- 5 比較
我不知道這是否最快。但是,如果 CPU 內核有多個 ALU,每個 ALU 都并行進行比較,那么這可能會得到提升。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/435073.html
標籤:爪哇
上一篇:片段中的警報對話框,應用程式崩潰
