【问题标题】:DateFormat return null javaDateFormat 返回 null java
【发布时间】:2015-08-14 00:22:42
【问题描述】:

我很困惑。我试过了,我不能为没有日期的项目分配空值。我究竟做错了什么?

private static String projectDate = null;

public static void main(String[] args) throws Exception {
    DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
    List<Project> projects;
    if (projects == null || projects.size() == 0) {
    } else {
        for (Project project : projects) {
            try {
                projectDate = formatter.format(project.getLastAnalyzedDate().getTime());
            } catch (Exception e) {
                System.err.println("Last Analyzed failed");
            }
            outFile.println("<LastAnalyzed>" + projectDate + "</LastAnalyzed>");
        }
    }
}

【问题讨论】:

  • 我不明白。 null 是什么?
  • 我只想返回空值。我有日期的价值,没有日期。我想得到:Windows 8(上次分析时间:2015 年 12 月 5 日); Windows 10(上次分析:null);
  • 尽管您的问题尚不清楚,但根据您上面的评论,我倾向于相信您期望 projectDateproject.getLastAnalyzedDate() 返回 null 并且您在 catch 块中捕获 NullPointerException 时为 null .如果是这种情况,projectDate 将保留其先前的值,除非您在 project.getLastAnalyzedDate() 返回 null 时将其设置为 null。我会等待你的确认,但如果这是真的,你可能想改变你处理空值的方式。
  • @Owl 是的,你是对的。我想抓住“空”。也就是只加catch(NullPointerException e)之类的?
  • @Owl 我解决了这个问题,但我认为它很糟糕 "catch (NullPointerException e) {projectDate=null;}"

标签: java null


【解决方案1】:

当 projectDate 为空时,您无法打印到文件。这将导致 NullPointerException。您应该打印检查 projectDate 是否为空,然后打印出“空”字符串。

private static String projectDate = null;
public static void main(String[] args) throws Exception {
    DateFormat formatter = new SimpleDateFormat("dd.MM.yyyy");
    List<Project> projects;
    if (projects == null || projects.size() == 0) {
    } else {
        for (Project project : projects) {
            try {
                projectDate = formatter.format(project.getLastAnalyzedDate().getTime());
            } catch (Exception e) {
                System.err.println("Last Analyzed failed");
            }
    }
    if(projectDate == null) {
            outFile.println("<LastAnalyzed>" + "null" + "</LastAnalyzed>");
    } else {
            outFile.println("<LastAnalyzed>" + projectDate + "</LastAnalyzed>");
    }
}

【讨论】:

  • 或使用 outFile.println("" + (projectDate == null) ? "null" : projectDate + "");
  • 我相信这不是问题所在。您可以将null 连接到一个字符串。
  • 对不起!我测试过,就像你说的那样。我想我还有很多东西要学:)
猜你喜欢
  • 1970-01-01
  • 2015-06-04
  • 2019-08-25
  • 2016-05-28
  • 2016-03-08
  • 2015-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多