我是一个java新手,我正在尝试为这种情况做一个搜索算法。
我试图在一个12个整数的集合中搜索一个等于1的值,类似于这个长的if-else链。
if (var1 == 1){
break;
} else if (var2 == 1){
break;
} else if (var3 == 1){
break;
} else if (var4 == 1){
break;
} else if (var5 == 1){
break;
} else if (var6 == 1){
break;
} else if (var7 == 1){
break;
} else if (var8 == 1){
break;
} else if (var9 == 1){
break;
} else if (var10 == 1){
break;
} else if (var11 == 1){
break;
} else if (var12 == 1){
break;
}
但是,为了清理代码并学习新技术,我尝试使用switch语句来搜索这些变量。
我遇到的问题是,为了将变量与常量(1)进行比较,我觉得需要使用布尔值作为case条件:
switch (){
case var1 == 1: break;
}
但是,这会引发两个错误:switch语句没有表达式,并且case条件是布尔值(它需要int)。
我遇到的另一个问题是case条件必须是常量,这意味着我不能将其作为变量:
switch (1){
case var1: break;
}
我想如果语法正确的话,这是可以触发的,但是我想不出任何其他不使用数组的方法,我并不真正理解数组。
5条答案
按热度按时间moiiocjp1#
需要为变量创建一个数组,例如
那么你可以用for循环
zour9fqk2#
switch
-语句和switch
-表达式在您需要根据单个变量的值定义多个执行路径时非常有用(有关详细信息,请参阅official tutorial),但在您的can中,您需要使用多个变量进行操作。作为一种可能的解决方案,您可以将这些变量收集到一个数组或
List
中,然后检查它是否包含1
的值。bzzcjhmw3#
我更喜欢使用HashMap,因为复杂度是o(1),所以你可以直接使用常量键来获得它,例如:
jhiyze9q4#
wbrvyc0a5#
您可以使用Java中的函数式编程方法来迭代给定的项目集。例如:
Explanation: set.stream() opens a Stream for the given Items in this set.
stream(). filter(x-〉x == 1)过滤不应用于给定过滤函数"x-〉x == 1"的所有项。
这个filter函数本质上定义了一个"item",然后可以通过"equals"运算符将其与值1进行比较。(Collectors. toSet())"获取所有筛选项(在这种情况下,它只是值为1的整数),并将这些值赋给新的集合"filteredSet"。()",然后打印给定集合的所有值。(在本例中,只有一个值" 1 ")