【问题标题】:Check which (combinations) of parameters are null检查哪些参数(组合)为空
【发布时间】:2014-08-26 23:15:58
【问题描述】:

假设我有 4 个变量

String a;
String b;
String c;
String d;

我想检查单个变量或变量组合是否为 Null 并采取相应措施。

例如,一种方法是这样使用 if-else

     if(a!=null && b == null && c == null && d == null) { 
          //doSomething }
     else if(a==null && b!= null && c == null && d == null) { 
         //doSomething }
     else if(a==null && b!= null && c == null && d == null) { 
         //doSomething }
     else if(a==null && b== null && c != null && d == null) {
         //doSomething }
      ......
        //Similarly combination of two variables
     if(a!=null && b != null && c == null && d == null) {
         //doSomething }
     else if(a!=null && b== null && c != null && d == null) { 
        //doSomething }
     else if(a!=null && b== null && c == null && d != null) { 
        //doSomething } 
      ......
        //and so on 
        //Similarly combination of three variables
     if(a!=null && b != null && c != null && d == null) {
        //doSomething }
     else if(a!=null && b== null && c != null && d != null) {
        //doSomething }
     else if(a!=null && b== null && c == null && d != null) { 
        //doSomething } 
       ....

这种情况怎么实现Switch连null都不接受 我想使用队列,因为它不允许空值,但我需要有一个变量的键,以便我可以获取值并操作某些东西。帮助将不胜感激

【问题讨论】:

  • 我有一个非常相似的问题,我很高兴得到一个很好的答案......
  • 您的代码未反映已声明的变量名称。
  • 只有当其中一个变量为空,或者任何一个变量为空时,您才想doSomething
  • 原始类型(如int)永远不会为空。
  • 那么,知道 doSomething 的作用会有所帮助,否则您将无法使用您提供的代码。

标签: java


【解决方案1】:

您可以使用 switch 语句构建一个额外的变量来实现这一点:

int switchvar = 0;

if (a == null) {switchvar += 1;}
if (b == null) {switchvar += 10;}
if (c == null) {switchvar += 100;}
if (d == null) {switchvar += 1000;}

然后你可以使用

switch (switchvar) {
   case(1): //only a ==null
 ...
   case(101): //a == null and  c == null
 ....
   case(1011): //a,b,d null 
 ....
   case(1111): // all variables null
 }

【讨论】:

  • 这是一个非常巧妙的想法。不过,我会使用 0 表示 null 并使用 1 表示非 null。
  • 也可以,但是因为他想检查它是否为空,所以当值为空时条件为真,因此 1=null 和 0=not null
猜你喜欢
  • 2019-04-25
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多