我問用戶三個輸入,即第一個、第二個、第三個。我想計算其中的青少年在20和10之間。
if ((first >10 && first <20)&&
(第二<20&& 第二>10)&&。
(第三<20&&第三>10) ) {
System.out.println("所有的人都是青少年")。
}else if((first <20 && first > 10)& &
(第二<20&& 第二>10)&&
!(第三<20&&第三>10) {
System.out.println("其中兩個是青少年")。
}else if((first<20 && first> 10)& &
!(第二<20&& 第二>10)&&。
(第三<20&&第三>10) ){
System.out.println("其中兩個是青少年")。
}else if (! (first <20 && first > 10)&&
(第二<20&&第二>10)&&。
(第三<20&&第三>10) {
System.out.println("其中兩個是青少年")。
}else if ((first <20 && first > 10)&&
!(第二<20&& 第二>10)&&。
!(第三<20&&第三>10) {
System.out.println("其中一個是少年")。
}else if(!(first<20 && first > 10)&&
!(第二<20&& 第二>10)&&。
(第三<20&&第三>10) {
System.out.println("其中一個是少年")。
}else if (! (first >10 && first <20)& &
(第二<20&& 第二>10)&&
!(第三<20&&第三>10) {
System.out.println ("其中一個是青少年")。
}else {
System.out.println("他們沒有一個是青少年")。
- 當我得到輸出時,它只顯示 "他們沒有一個是青少年",我有這個問題,你能幫助我嗎?我的代碼有什么問題嗎?*
uj5u.com熱心網友回復:
我會這樣做:
int teenNb = 0;
int[] arr = {First, Second, Third};
for (int i : arr)
teenNb = (i < 20 && i > 10 ? 1 : 0)。)
switch (teenNb) {
case 1:
System.out.println("其中一個是青少年")。
break。
case 2:
System.out.println("他們中的兩個是青少年")。
break。
case 3:
System.out.println("他們都是青少年")。
break。
default:
System.out.println("沒有一個人是青少年")。
break。
}
也許有更有效或更高級的解決方案,但這對我來說是有效的,而且相當簡單易懂。
uj5u.com熱心網友回復:
要在你的代碼中找到問題并不容易,你可以通過拆分你的問題來制定一個更好的解決方案,
首先創建一個方法來檢查一個用戶是否是青少年,然后對每個用戶使用這個函式,并計算其中有多少人是青少年,public static boolean isTeenager(int user) {
return user > 10 && user < 20;
}
public static void main(String[] args){
int first = 0, second =0, third =0;
int[] users = {first, second, third};
int teenagersCount = 0;
for(int user : users)
if (isTeenager(user))
teenagersCount ; 。
switch (teenagersCount) {
case 0: System.out.println("No of them are teenagers"); break;
case 1: System.out.println("其中一個是少年"); break;
case 2: System.out.println("其中兩個是少年"); break;
default: System.out.println("All of them are teenagers"); break;
}
uj5u.com熱心網友回復:
我編譯并運行了你的代碼,它在所有情況下都作業得非常好。因此,除了命名規則和代碼重復,沒有任何問題。
我懷疑,如果你一直得到 "沒有一個是青少年",你可能沒有正確地從用戶那里得到輸入。
替代性解決方案: 計算青少年的數量,并根據計算結果制作一個自定義結果字串。
方便的是,在這里,你可以將結果字串存盤在一個串列中,每個結果對應于它的索引(對于更復雜的情況,你也可以使用一個
標籤:Map<Integer, String>)private static final List<String> resultsList = Arrays.asList(
"沒有一個是青少年", // index 0
"他們中的一個是青少年",//index 1。
"他們中的兩個是青少年",//index 2。
"所有的人都是青少年"); /index 3)
public static void main(String[] args) {
int first = 15;
int second = 9;
int third = 13;
int n = countTeenagers(Arrays.asList(first, second, third) ) 。
System.out.println(resultsList.get(n))。
}
private static int countTeenagers(List<Integer> ages) {
return(int)ages.stream()
.map(age -> age > 10 && age < 20)
.filter(Boolean::booleanValue)
.count()。
}
