用OR分配默认变量值的Java最简单的方法是什么?

时间:2016-02-16 15:53:31

标签: java

我从csv文件中读取数据,并希望将列值分配给变量。可能存在该文件不包含所需字段的情况。然后我想分配一个默认值。我想要类似的东西:

#include<stdio.h>
#include<conio.h>

int main(){

    char operation;
    int num1;
    int num2;

    printf("enter an expression \n");
    scanf("%c",&operation);
    printf("enter num1 \n");
    scanf("%d",&num1);
    printf("enter num2 \n");
    scanf("%d",&num2);

    printf("entered  expression is =");
    printf("%d%c%d \n",num1,operation,num2);

    printf("result is \n");

    // Here i had to put the - sign to ensure a subtraction, I want it to be automatic
    printf("%d%c%d = %d",num1,operation,num2,num1-num2); 

}

没有很多ifs的最优雅方式是什么? (我是C#的java新手)

8 个答案:

答案 0 :(得分:9)

使用方法:

private String valueOrDefault(String value, String defaultValue) {
    return value == null ? defaultValue : value; 
}

...

String country = valueOrDefault(nextLine[columnIndices.get("country")], "Austria");

答案 1 :(得分:5)

你可以这样做:

String country = (nextLine[columnIndices.get("country")] != null) ? nextLine[columnIndices.get("country")] : "default";

答案 2 :(得分:3)

从Java 8开始,您也可以使用

String s = Optional.ofNullable(fooStr).orElse("bar");
// may be null ----------------^^^^^^

答案 3 :(得分:1)

假设第一个选项不能抛出NullPointerException,我会推荐Apache Commons&#39; firstNonNull

它允许您传递任意数量的参数,它将返回第一个非空值。

String country = ObjectUtils.firstNonNull(nextLine[columnIndices.get("country")], "Austria");
// Add more arguments if needed

答案 4 :(得分:1)

一个简单的if语句可以解决它:

String country = nextLine[columnIndices.get("country")];
if (country == null)
    country = "Austria";

答案 5 :(得分:0)

假设您可以使用Java 8,则可以使用Optional。

 Long value = findOptionalLong(ssn).orElse(0L);

将值设置为数字,如果未找到,则设置为0.

答案 6 :(得分:0)

更简单易读:

String country = nextLine[columnIndices.get("country")];
country = (country != null) ? country : "Austria";

答案 7 :(得分:0)

或创建通用方法

static <T> T nvl(T first, T ifFirstNull) {
    return (first != null ? first : ifFirstNull);
}

您可以将它用于任何对象