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