首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jshell -无法找到printf

jshell -无法找到printf
EN

Stack Overflow用户
提问于 2017-05-05 06:33:06
回答 4查看 697关注 0票数 5

为什么我的jshell实例(JDKVersion9-EA)无法识别printf()语句?下面是我观察到的错误,

代码语言:javascript
复制
jshell> printf("Print number one - %d",1)
|  Error:
|  cannot find symbol
|    symbol:   method printf(java.lang.String,int)
|  printf("Print number one - %d",1)
|  ^----^

我能够访问printf,只要我定期指定它。

代码语言:javascript
复制
jshell> System.out.printf("Print number one - %d",1)
Print number one - 1$1 ==> java.io.PrintStream@1efbd816

有什么指示吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-05-09 07:53:58

早期版本的JShell有一个预定义的printf方法,但它已从早期访问构建中删除。当然,您可以定义自己的printf方法:

代码语言:javascript
复制
jshell> void printf(String format, Object... args) { System.out.printf(format, args); }

或者,您可以通过以下方式启动JShell,从而获得早期版本中的打印方法:

代码语言:javascript
复制
jshell --start DEFAULT --start PRINTING

(如果只使用--start PRINTING,则不会获得默认导入。)

有关更多信息,请参见Java数据库中的bug JDK-8172102和实现它的变更集b2e915d476be

票数 7
EN

Stack Overflow用户

发布于 2017-05-05 07:06:36

Java是一种面向对象的语言,如果没有与该方法关联的对象,就不能调用非静态方法。printf是类PrintStream的一个非静态方法,在没有PrintStream实例的情况下不能调用它。

标准Java库中有一些PrintStream实例,如System.outSystem.err,因此您可以调用System.out.printf()System.err.printf(),但是普通printf()无法工作,因为jshell不知道这个printf()属于哪个对象。

票数 1
EN

Stack Overflow用户

发布于 2017-05-05 06:51:51

如果没有jshell,它简单地工作吗?这不能像这样工作,因为在PrintStream之外没有这样的方法。

您可以这样定义自己的printf

代码语言:javascript
复制
jshell> private  void printf(String s) { System.out.println(s); }

然后再用它:

代码语言:javascript
复制
jshell> printf("test")
test
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43798036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档