Если переменная не существует, замените на 0 - PullRequest
0 голосов
/ 01 декабря 2018

Я использую инструмент очистки экрана для извлечения данных и вывода в CSV.Это работает отлично, если переменная сеанса не существует.Я хочу изменить свой код, чтобы сказать, что если эта переменная не существует, замените ее значением 0.

EG Если Session.getVariable "Figure2" отсутствует, используйте значение 0.

session.log( "Writing data to a file." ); 

out = new FileWriter( "C:/Users/Documents/Live/data.CSV" );
out.write ("User, Figure 1,Figure 2, Figure 3, Figure 4 ");
out.write ("\n");
out.write ( "User" ) ;
out.write (",");
out.write ( session.getVariable( "Figure1" ) );
out.write (",");
out.write ( session.getVariable( "Figure2" ) );
out.write (",");
out.write ( session.getVariable( "Figure3" ) );
out.write (",");
out.write ( session.getVariable( "Figure4" ) );
out.close();

session.log( "Writing data to a file." ); 

Ответы [ 3 ]

0 голосов
/ 01 декабря 2018

Мое решение было бы с использованием троичного оператора Еще одна ссылка на стек-поток для обсуждения троичного оператора

session.log( "Writing data to a file." ); 

out = new FileWriter( "C:/Users/Documents/Live/data.CSV" );
out.write ("User, Figure 1,Figure 2, Figure 3, Figure 4 ");
out.write ("\n");
out.write ( "User" ) ;
out.write (",");
out.write ( session.getVariable( "Figure1" )==null ? 0 :session.getVariable( "Figure1" ));
out.write (",");
out.write ( session.getVariable( "Figure2" )==null?0:session.getVariable("Figure2") );
out.write (",");
out.write ( session.getVariable( "Figure3" ) );
out.write (",");
out.write ( session.getVariable( "Figure4" ) );
out.close();

session.log( "Writing data to a file." ); 
0 голосов
/ 01 декабря 2018

Я не знаю ваш тип сеанса. Так что я думаю, что session.getVariable () может вернуть ноль.Если вы запустите этот код:

import java.io.FileWriter;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        Integer integer = null;
        FileWriter out = new FileWriter( "data.CSV" );
        out.write(integer);
    }
}

Программа выдаст исключение NullPointerException.

Java8 Необязательный класс - контейнер может сохранить нулевое значение. Мы можем использовать его дляпроверить, является ли объект Integer нулевым.Еще одна ошибка метода записи - это запись байта в Stream. Вам нужен PrintWriter и метод печати, чтобы напрямую записать int в файл.

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Optional;

public class Main {
    public static void main(String[] args) throws IOException {
        Integer a = null;
        Integer b = 1;
        FileWriter out = new FileWriter( "data.CSV" );
        PrintWriter printWriter = new PrintWriter(out);
        Optional<Integer> oa = Optional.ofNullable(a);
        Optional<Integer> ob = Optional.ofNullable(b);
        printWriter.print(oa.orElse(0));
        printWriter.print(ob.orElse(0));
        out.close();
        printWriter.close();
    }
}
0 голосов
/ 01 декабря 2018

Вы можете обернуть извлечение переменной простым методом, который содержит эту логику:

private static String variableOrZero(String variable) {
    String retVal = session.getVaraible(variable);
    if (retVal == null) {
        retVal = "0";
    }
    return retVal;
}

И затем использовать это в своем коде:

out = new FileWriter( "C:/Users/Documents/Live/data.CSV" );
out.write ("User, Figure 1,Figure 2, Figure 3, Figure 4 ");
out.write ("\n");
out.write ( "User" ) ;
out.write (",");
out.write ( variableOrZero( "Figure1" ) );
out.write (",");
out.write ( variableOrZero( "Figure2" ) );
out.write (",");
out.write ( variableOrZero( "Figure3" ) );
out.write (",");
out.write ( variableOrZero( "Figure4" ) );
out.close();
...