Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 哪个双值参数使String.format结果为星号_Java_String_Formatting_Double - Fatal编程技术网

Java 哪个双值参数使String.format结果为星号

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);

我编写了一个location SDK,SDK生成
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
,而不进行任何其他修改?请张贴复制奇怪格式的完整代码。