0

誰かが10未満のIdの出力にゼロプレフィックスを与える方法について少しアドバイスを与えることができますか?たとえば、出力ラベルにLongのタイプである単一のid値を表示したいDBではこの値です4が、いくつかのラベルの出力では表示したい先行ゼロの形式であるため、04いくつかのケースが見つかりましたが、それについてはint primitive type、解決できないものをキャストしています。

これまでのところ、私はこのコードを持っています:

public String getCode() {           
    PackageVersion packVer = BeanFactory.getHotelDAOService(PackageVersion.class).findOne(selectedDealerCodeId);
    if(packVer.getId() < 10){       
        String id = String.format("%0d", packVer.getId());
    }
    return id;
}

上記の方法は機能しません。誰かがこれについてよりよく適切な解決策を知っている場合は、ここに投稿させてください、ありがとう

4

2 に答える 2

1

この行を変更するだけです:

String id = String.format("%0d", packVer.getId());

String id = String.format("%02d", packVer.getId());

これにより、数値の印刷に少なくとも2つのスペースが使用され、formatはこれを実現するためにゼロを埋めます。
あなたはおそらくステートメントも取り除くことができifます、私はそれがコードスニペットを見ても何もしないと思います。

于 2013-03-24T16:57:31.193 に答える
1

あなたが探しているフォーマットはですが%02d、あなたがしていることの単純さを考えると、あなたは次のスニペットでより良いです:

if (packver.getId() < 10) {
  return "0" + packver.getID();
}
return "" + packver.getID();

オプティマイザーは舞台裏でこのコードを使って正しいことをしますが、format()はそれをだますかもしれません。

コードに重大なバグがありid、それを返すスコープで定義されていないため、コードはコンパイルされません。一般的な形式は次のとおりです。

String id;
if (someCondition) {
  id = someValue;
} else {
  id = otherValue;
}

return id;

特定のケースでは、if句とelse句が同じであるため、ブランチを完全に取り除くことができます。

return String.format("%02d", packver.getID());
于 2013-03-24T17:00:22.877 に答える