【问题标题】:Strange error from simple print method [duplicate]简单打印方法的奇怪错误[重复]
【发布时间】:2018-01-16 03:24:35
【问题描述】:

我开始学习 Java 以工作,但由于某种原因,即使是最简单的“hello world”脚本我也无法运行。代码如下:

import java.io.Console;

class test2 {
    public static void main(String[] args) {
        Console console = System.console();
        console.printf("Test");
    }
}

我正在使用 IntelliJ 运行它,我从控制台得到的错误是

Exception in thread "main" java.lang.NullPointerException
    at test2.main(testclass.java:6)

我的研究基本上表明 printf 方法是一种“较新”的方法(我说的是有点讽刺),但这仅适用于 1.5 及更高版本(不要引用我的话) .

我试图找出为什么会出现此错误的答案,但没有任何东西可以为我指明正确的方向。非常感谢您对此提供的任何和所有帮助!

【问题讨论】:

  • System.out.println("Test");
  • System.out.printf("Hello, World") 会起作用,但printf 中的f 表示“格式”,您无需格式化
  • @cricket_007 确实如此,但完整的目的是使用变量将文本插入字符串。你不会在这种情况下使用'printf'吗?
  • 可以,也可以连接字符串和变量

标签: java intellij-idea


【解决方案1】:

根据我的经验,Console 很少在 IDE 中工作。如果您从 CLI 运行程序,它会起作用,而不是在您构建它时。但是,如果您使用 Sys-outs(我称之为)提供输出,您的代码应该可以正常工作。

换句话说,这些行:

Console console = System.console();
console.printf("Test");

可以报废改成这样:

System.out.println("Test"); 

更新

通过快速搜索,我找到了这个页面,这解释了为什么 Console 通常不适用于 IDE 和解决方案:https://stackoverflow.com/a/26473083/8972283

【讨论】:

  • 哇哦,谢谢!我尝试使用谷歌搜索,但尝试在晚上 11 点学习和喝酒并不是提高效率的最佳主意;)我昨晚能够使用 System.out,但我永远无法解释其中的区别。感谢一百万的分享:)
猜你喜欢
  • 2018-08-08
  • 1970-01-01
  • 1970-01-01
  • 2013-11-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 2018-10-03
  • 2017-12-29
相关资源
最近更新 更多