意外的DecimalFormat输出-Java

意外的DecimalFormat输出-Java,java,string,format,double,decimal,Java,String,Format,Double,Decimal,我正在上java课,我正在为我的作业做一个Tsubo计算器。我通常不会问关于堆栈溢出的问题,所以如果这看起来很基本,请原谅我。我在这里做了一些搜索,并尝试了一些解决方案,但在我的案例中没有一个有效。我将在下面复制我转换的一部分 ``` System.out.println("You have chosen to convert square feet to Tsubo"); System.out.println("Please enter the total sq

我正在上java课,我正在为我的作业做一个Tsubo计算器。我通常不会问关于堆栈溢出的问题,所以如果这看起来很基本,请原谅我。我在这里做了一些搜索,并尝试了一些解决方案,但在我的案例中没有一个有效。我将在下面复制我转换的一部分

```
        System.out.println("You have chosen to convert square feet to Tsubo");
        System.out.println("Please enter the total sqft you are looking to convert");

        sqftInput = keyboard.nextInt();

         // Double is converted to string so out put remains an object of the same data type

        sqftResult = sqftInput / TSUBO;
        DecimalFormat sqftFormatted = new DecimalFormat("#####.00");


        sqftResultAsString = Double.toString(sqftFormatted);
        System.out.println(sqftInput + " is equal to :" + sqftResultAsString  + " Tsubo"); ` 
当我这样做时,它告诉我不能格式化double,因为该类型不适用于DecimalFormat的参数

当我把它改成这个样子时(冒犯的行被注释掉)

'System.out.println(“您已选择将平方英尺转换为Tsubo”); System.out.println(“请输入要转换的总sqft”)

程序编译并运行,当我使用5238作为输入数字时,我的输出看起来像-->5238.0等于:java.text。DecimalFormat@674dc东京

而不是实际显示答案325.07

我还尝试使用stringFormat使用一些正则表达式格式,但最终得到了非法格式异常


长话短说,我试图实现的是一个格式化为2位小数的输出,然后转换为字符串,系统输出作为答案。我错过了什么?此十进制格式是否自动将其转换为字符串对象?

DecimalFormat
用于生成格式化的
字符串。如果直接打印,它将显示其()内存地址,因为DecimalFormat.toString()就是这样做的

相反,您应该使用它生成输出字符串并直接打印

详情如下:

 sqftResult = sqftInput / TSUBO;
        DecimalFormat sqftFormatted = new DecimalFormat("#####.00");
        String out =  sqftFormatted.format(sqftResult); // or whatever you want to print

        //sqftResultAsString = Double.toString(sqftFormatted);
        System.out.println(sqftInput + " is equal to :" + out  + " Tsubo");

请您指出将计算结果传递给
DecimalFormat
对象的行,这可能是重复的,这正是我避免堆栈溢出的原因。如果其他答案是以一种不理解或不清楚的方式描述的,那么您就只能靠自己了,并且会因为害怕被否决而被劝阻提问,我猜也是这样(如果您使用过python)而是打印对象地址,这就是为什么必须向类添加str方法来生成结果。那么它已经把它变成一个字符串对象并打印位置了?非常好,谢谢!我不知道出了什么问题。起初,我试图用strong.format(“%.2f”)格式化它;那是一个噩梦,我尝试了,它让我头晕目眩,我想不出来。(这就是为什么我要在学校上这门课lol)当打印这样的对象时,Java会自动调用toString方法。如果它没有被覆盖,则会调用打印哈希代码的默认方法。默认格式不会覆盖toString:)我知道我可以使用printf方法以这种方式输出它,但我想实际将其存储在一个变量中,以便使用ac如果我需要扩展课程,我想我们会在课堂上做。(我们应该每周做一些补充,并用新的东西扩展我们的课程)
 sqftResult = sqftInput / TSUBO;
        DecimalFormat sqftFormatted = new DecimalFormat("#####.00");
        String out =  sqftFormatted.format(sqftResult); // or whatever you want to print

        //sqftResultAsString = Double.toString(sqftFormatted);
        System.out.println(sqftInput + " is equal to :" + out  + " Tsubo");