Java int不能转换为字符串

Java int不能转换为字符串,java,Java,有没有人能帮我解决这个问题。我知道这可能是用java编写的最简单的代码,但我一辈子都搞不懂。我刚刚开始学习java,这让我陷入了困境。 当我编译代码时,它得到错误“int不能转换为字符串console.printf(xy) 试用 console.printf(xy+""); 使用printf格式说明符,如中所述: 这有两个部分: 可以通过多种方式将整数转换为字符串。例如: xy + "" 是一种惯用方法,它依赖于字符串连接运算符的特殊语义 Integer.toString(xy)

有没有人能帮我解决这个问题。我知道这可能是用java编写的最简单的代码,但我一辈子都搞不懂。我刚刚开始学习java,这让我陷入了困境。 当我编译代码时,它得到错误“int不能转换为字符串console.printf(xy)

试用

console.printf(xy+"");

使用printf格式说明符,如中所述:


这有两个部分:

  • 可以通过多种方式将整数转换为字符串。例如:

      xy + ""
    
    是一种惯用方法,它依赖于字符串连接运算符的特殊语义

      Integer.toString(xy)
    
    可能是最有效的

      Integer.valueOf(xy).toString()
    
    xy
    转换为
    整数
    ,然后应用
    toString()
    实例方法

    但是这个不起作用1

    因为1)不能将方法应用于原语,2)Java不会在该上下文中将
    xy
    自动装箱到
    整数

  • 打印字符串的方式是“有点错误的”。
    printf
    方法的签名是
    printf(字符串格式,对象…args)
    。按您的方式调用它时,您将数字作为
    格式
    以及零长度
    args
    参数传递

    printf
    方法将解析
    格式
    以查找表示替换标记的
    %
    字符。幸运的是,数字字符串不包含此类字符,因此将按字面形式打印

    但无论如何,使用printf的“正确”方法是:

       printf("%d", xy)
    
    它依赖于
    printf
    进行数字到字符串的转换

  • 还有一个潜在问题。如果在“无头”系统上运行此程序,则
    system.console()
    方法可能返回
    null
    。如果发生这种情况,您的程序将因NPE而崩溃


    1-通过Java 8上的简单测试用例确认。

    使用:
    console.printf(String.valueOf(xy));

    您不应该使用toString()吗?返回时出现错误:int不能被取消引用您需要检查控制台是否为null。根据用户首选项的设置方式,它不能保证被实例化。这是因为您不能在原语上调用方法。我不确定@ManoDestra的建议是否合理。即使它可以工作,使用串联也会失败使用
    printf
    的用途。
      Integer.valueOf(xy).toString()
    
      xy.toString()
    
       printf("%d", xy)