Java 哪个双值参数使String.format结果为星号
我编写了一个location SDK,SDK生成Java 哪个双值参数使String.format结果为星号,java,string,formatting,double,Java,String,Formatting,Double,我编写了一个location SDK,SDK生成android.location.location实例。当用户调用Location.toString()方法以获取可读文本时 在Location.toString方法中,我发现如下代码 @Override public String toString() { StringBuilder s = new StringBuilder(); s.append("Location["); s.append(mProvider);
android.location.location
实例。当用户调用Location.toString()
方法以获取可读文本时
在Location.toString
方法中,我发现如下代码
@Override
public String toString() {
StringBuilder s = new StringBuilder();
s.append("Location[");
s.append(mProvider);
s.append(String.format(" %.6f,%.6f", mLatitude, mLongitude));
if (hasAccuracy()) s.append(String.format(" hAcc=%.0f", mHorizontalAccuracyMeters));
else s.append(" hAcc=???");
if (mTime == 0) {
s.append(" t=?!?");
}
if (mElapsedRealtimeNanos == 0) {
s.append(" et=?!?");
} else {
s.append(" et=");
TimeUtils.formatDuration(mElapsedRealtimeNanos / 1000000L, s);
}
if (hasAltitude()) s.append(" alt=").append(mAltitude);
if (hasSpeed()) s.append(" vel=").append(mSpeed);
if (hasBearing()) s.append(" bear=").append(mBearing);
if (hasVerticalAccuracy()) s.append(String.format(" vAcc=%.0f", mVerticalAccuracyMeters));
else s.append(" vAcc=???");
if (hasSpeedAccuracy()) s.append(String.format(" sAcc=%.0f", mSpeedAccuracyMetersPerSecond));
else s.append(" sAcc=???");
if (hasBearingAccuracy()) s.append(String.format(" bAcc=%.0f", mBearingAccuracyDegrees));
else s.append(" bAcc=???");
if (isFromMockProvider()) s.append(" mock");
if (mExtras != null) {
s.append(" {").append(mExtras).append('}');
}
s.append(']');
return s.toString();
}
我的子类实现是
@Override
public String toString() {
String superString = super.toString();
return "ErrorCode[" + mErrorCode + "]," +
"FromCached[" + mFromCache + "]," +
superString;
}
结果
ErrorCode[0],FromCached[false], Location[network "31******,114****** acc=559 et=+1d19h24m40s624ms]"
什么纬度
和经度
可能会产生奇怪的结果
我尝试了
Double.NaN
,Double.POSITIVE_INFINITY
,Double.MIN_VALUE
,但我无法得到这个奇怪的结果。更多的猜测是:您可能看到了错误的toString()
实现
您的实际位置可能是它的一个子类。关注“隐私”的人,因此屏蔽该位置字符串的一部分
这是非常常见的情况:您希望确保敏感信息不会直接进入日志或跟踪文件。因此,您可以编写一个小包装,屏蔽输出的重要部分,例如使用*字符。对于您给定的
String.format
,这不应该发生。您是否146%确定只调用了此字符串.format
,而不进行任何其他修改?请张贴复制奇怪格式的完整代码。