是否有一种简单的方法可以检查是否满足最低数量的条件?就像,让我们说我已经要求某人选择一周至少4天。有什么方法我可以检查他们已经选择了至少4天?为可能的条件写出所有的事情和事情真的很痛苦。也许这可以在java中用switch
语句完成,但总的来说有一种直截了当的方式吗?
我认为最简单的方法是将所有布尔语句的值加起来,然后看看它们是否总和至少4.一些伪代码来证明我的意思:
if ((input.contains("mon") + input.contains("tues") + ... + input.contains("sun")) >=4){
//do stuff
}
但我不确定这是否真的是一种有效的方法呢?帮助
答案 0 :(得分:3)
只需定义一种简单的方法来计算所选的总天数:
private boolean moreThanFourSelected(input) {
String days[] = { "mon", "tues", ..., "sun" };
int total = 0;
for (String day : days) {
if (input.contains(day)) total++;
}
return total >= 4;
}
答案 1 :(得分:1)
所以基本上,我假设input
的类型为String
,而且由于你没有指定语言,我只会在这个例子中使用C#,因为它非常酷,东西。
所以如果这个字符串看起来像这样:
星期一星期二星期三橘子
这就是它实际包含的内容,代码如下:
if(MinimumNumberOfDaysSelected(input))
{
// Condition is met (atleast 4 selected).
}
else
{
// Condition not met (less than 4 selected).
}
public bool MinimumNumberOfDaysSelected(string input)
{
string[] days = input.Split(' ');
int count;
foreach(string day in days)
{
switch(day)
{
case "Monday":
count++;
break;
case "Tuesday":
count++;
break;
case "Wednesday":
count++;
break;
case "Thursday":
count++;
break;
case "Friday":
count++;
break;
case "Saturday":
count++;
break;
case "Sunday":
count++;
break;
default:
break;
}
}
return count >= 4 ? true : false;
}
将返回是否至少选择了4天 - 或不是。它还假设您使用space
来分隔单词。我想如果我们知道你使用的语言和输入的格式会更容易。
答案 2 :(得分:0)
一般情况下(不仅仅是几天),使用HashMap将条件存储为键,选择作为值存储,如下所示
HashMap<String, Boolean> selectionMap=new HashMap<String, Boolean>();
以这种方式,可以基于散列图中的条目容易地计算所选择的和未选择的计数。每当有选择或不选择时,在此hashmap中创建一个条目并最终计算条目。这也可以单独用于选择。如果我们最初不知道条件的总数,这种方式将非常有用。
这是代码,
HashMap<String, Boolean> selectionMap=new HashMap<String, Boolean>();
selectionMap.put("Mon", true);
selectionMap.put("Tue", true);
selectionMap.put("Wed", false);
selectionMap.put("Thur", false);
int selectedCount=0;
int notSelectedCount=0;
boolean s=false;
for(String key : selectionMap.keySet())
{
s=selectionMap.get(key);
if(s)
selectedCount++;
else
notSelectedCount++;
}
System.out.println("Selected Count : "+selectedCount);
System.out.println("Not Selected Count : "+notSelectedCount);
答案 3 :(得分:0)
我的观点是与Enum而不是String。例如,从我的角度来看,您可以先定义枚举。
enum Day {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday;
public static Day forName(String name) {
for (Day value : values()) {
if (value.name().equals(name)) {
return value;
}
}
return null;
}
}
然后使用EnumSet做任何你需要的事情。所以,如果你想要包括的天数;
public int numOfDays(String[] strings){
EnumSet<Day> days = EnumSet.noneOf(Day.class);
for (String string : strings) {
Day day = Day.valueOf(string);
if(day != null)
days.add(day);
}
return days.size(); // return days if you need what days are included
}