提问人:Bro11 提问时间:10/26/2023 最后编辑:Jon SkeetBro11 更新时间:10/27/2023 访问量:64
超出范围的静态方法
Out of scope static methods
问:
因此,在我参加的 CodeHS 课程中,我试图将美分与银行账户余额分开。例如,转弯 12.34 到 34。我正在尝试使用 value.indexOf() 和 value.length() 来计算余额。但是,我不断收到“您可能忘记声明 length() 或超出范围”错误。我很困惑,因为我认为这些是内置于 Java 本身的,但也许不是?我已经浏览了文档,但我仍然迷路了。任何帮助都是值得赞赏的。
这是该方法的代码(我认为这是一个 idk 词汇 lmao 的方法)
public class Currency
{
private Double value;
// Constructor
public Currency(Double startValue)
{
value = startValue;
}
// Sets value to newValue
public void setValue(Double newValue)
{
value = newValue;
}
// Returns the dollar portion of value
// if value is 12.34, returns 12
public Integer getDollars()
{
return (int)value.doubleValue();
}
// Returns the cents portion of value
// as an Integer
// if value is 12.34, returns 34
public Integer getCents()
{
return value.subSequence(value.indexOf("."), value.length());
}
// Returns a String representation
// in the format
// $12.34
public String toString()
{
return value.doubleValue();
}
}
答:
0赞
Basil Bourque
10/26/2023
#1
正如 Jon Skeet 所评论的那样,您正在将其视为文本。它不是文本。Double
如果需要文本,请创建一个对象。调用 Double#toString
。此方法生成文本来表示对象中保存的数字的值。该对象不包含任何文本。String
Double
Double
String s = myDouble.toString() ;
对于基元,请使用 Double.toString
方法。double
static
double x = 42.7d ;
String s = Double.toString( x ) ;
String
提供您寻求的和方法。indexOf
length
顺便说一句,在实际工作中,我们从不使用/类型来表示金钱问题。这些浮点类型以牺牲准确性来换取执行速度。double
Double
对于金钱问题,当准确性至关重要时,请使用 BigDecimal
类。或者,乘以得到另一个评论中提到的整数。
评论
0赞
Bro11
10/26/2023
哦,我想知道toString做了什么,好吧,我现在明白了,谢谢!
0赞
Bro11
10/27/2023
我宁愿只使用,但课程是试图教我所有的数组数据类型,所以我会忍受它 =pdouble
评论
value
Double
indexOf()
length()
subSequence
Integer
.
.