現在、Javaサーブレットでブラウザにデータの表示をする際に通貨記号を表示させる為に、NumberFormatクラスのgetCurrencyInstanceを使用して、表示させようとしているのですが、String型で負の数を表示する時に例えば「-$192.42」と表示したい所を、サーブレットを動かしてブラウザで結果を表示させたら「($192.42)」と括弧が付いて表示されるので、どのようにしたらブラウザで「-$192.42」と表示されるのでしょうか?

ちなみに作成したコードは以下のとおりです。

try {
  double dtdouble = Double.parseDouble(formatter1);
  NumberFormat nf = (NumberFormat)NumberFormat.getCurrencyInstance(Locale.US);
  nf.setMaximumFractionDigits(2);
  nf.setMaximumIntegerDigits(max);
 String formatter2 = (String)nf.format(dtdouble);
}
catch(Exception e) {
e.printStackTrace();
}

ご存知の方がいらっしゃいましたら、是非ご教授お願い致します。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

「ご存知」ではないんですが、多分、ロケールにアメリカを指定してるから、そう


なるのでしょう。

日本で使うプログラムだと思って良いんですよね?
であれば、ロケールに Locale.JAPAN を使いましょう。

by a-kuma@Javaは勉強中

参考URL:http://java.sun.com/j2se/1.3/ja/docs/ja/api/java …
    • good
    • 0
この回答へのお礼

a-kumaさん、こんにちは。
早速のご回答どうも有難うございました<(_ _)>。

一応、日本で使うプログラムなので、ロケールの問題なのか分からなかったので、ご回答や参考URL、お役に立たせて頂きました。
助かりました、改めて有難うございます!

お礼日時:2001/11/20 09:53

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QString a = "a"; と String b = new String ("b"); の違い

String a = "a";
String b = new String ("b");

お伺いしたいのですが、
b は String のインスタンスを作ってると思いますが、
a はどんなことをしてるのでしょうか?

Aベストアンサー

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その初期化に使った無名のStringインスタンスの3つがメモリ上に存在することになります。
if(b1 != b2) System.out.print("b1とは違うインスタンス");
の結果でもわかると思います。

したがって、
String b = new String ("b"); というのは、Integerに例えると
Integer i = new Integer(new Integer(1)); という処理を
していることになり、ひとつ無駄なインスタンス生成となります。

お二人の回答を具体的に言うと、こういうことです。
String a1 = "a";
String a2 = "a";
String b1 = new String ("b");
String b2 = new String ("b");

a1のために、aという文字列のインスタンスが作られますが、
a2に代入されるのは、a1に使われたインスタンスが再利用されます。
これは、
if(a1 == a2) System.out.print("a1と同じインスタンス");
の結果でもわかります。

一方、b1とb2は、bという文字列オブジェクトを引数に、新しいインスタンスを生成する指示がありますので、b1とb2と、その...続きを読む

Qclass Test_A {  main(){}}の実行順序は?

public class Test_A {
public static void main(){

int a = 0;
int b = 1;

}
}
例えば上のようなサンプルで何故 main()がクラスTest_A の中に挟まっているのでしょうか?実行順序としては main()が終了したら、クラスTest_A の方はどうなるのでしょうか? main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。よろしくお願いします。 

Aベストアンサー

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時には、Test_Aクラスのインスタンスは生成されません。
質問のコードでは変数a,bに値が代入され、それで終わりです。

Javaでは、(正確にはJavaVMは)実行するclassファイルにある、
String[]引数を持ったvoid mainメソッドを実行する仕様になっています。
しかし、mainメソッドを実行するときには何のインスタンスも生成されていないので、
何かのインスタンスのメソッドを実行することはできません。
なので、staticなメソッドでないとJavaVMが実行できないのです。
さらに、JavaVMからアクセス可能なスコープを与える必要があるので、
publicである必要もあるのです。

あとは、そのmainメソッドに指定されたコードを実行し、mainメソッドの最後まで処理が進んだら
そこでJavaVMが終了し、プログラムも終了します。

※細かい話ですが、main()からプログラムは始まりません。
正確に言うと、引数なしのmain()メソッドは他のメソッドと何ら代わりがありません。
プログラムを始めるには、
アクセススコープがpublicで、staticな戻り値のなく、引数にString配列を取るmainメソッド
であることが必要です。つまり、
public static void main(String[] args)
とするのが通常です。
試しに質問のコードをjavaコマンドで実行すると、NoClassDefFoundErrorが出るはずです。

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時...続きを読む

Qvar $i = hoge; $の意味について

初心者の質問ですみませんが教えて下さい。
jqueryのソースで以下のソースがあったのですが、
var i = ではなくvar $i にしないといけない理由ってありますか?

var $i = $( '#img' ); // 対象の img タグを選択
var img = new Image();
img.src = $i.attr('src');

Aベストアンサー

こんにちは。

$iにしなくてはいけない理由はないと思います。

多分$('#img')でjQueryのオブジェクトを取得してるので$をつけているんだと思います。
(私もjQueryで取得した要素については$を付けるようにしています)
ようするにわかりやすいようにです。

Q$("body").height();と$("body").css("

$("body").height();と$("body").css("height");の違い?

jqueryにてbodyの高さを取得し、その数値に適当な値を足すなり引くなりして、他の要素の高さとして指定するということがやりたかったので

$(function() {
var bodyheight = $("body").css("height");
var mainheight = bodyheight-230;
$("#main").css("height",mainheight);
});

とした所、bodyの高さは取得できたのですが、その後が駄目だったので

$(function() {
var bodyheight = $("body").height();
var mainheight = bodyheight-230;
$("#main").height(mainheight);
});

と変更したところ、期待通りに動きました。

この2つの違いを、どなたかお分かりになる方にご教授いただきたいです。

Aベストアンサー

#1です。ちょっと考えが足らなかった。
css('height')だと読み出しも単位付だから設定の前に演算でNGでしたね。

というか、こういう演算目的のために常にピクセル単位で読み出したり設定できるjQuery.heightやjQuery.widthが用意されているのでしょうね。

QEclipse 3.1.2で Java1.5の新機能の可変引数のString#formatを使用するには?

Eclipse 3.1.2環境でJavaのプログラミングをしていますが、Java1.5の新機能であるCのprintfに対応する可変引数を受け取るString#formatを使おうとしていますが、Eclipseでコンパイルエラーが発生してコンパイルできません。
Eclipse外で JDK1.5を使いコンパイルすれば問題ないのですが、Eclipseではうまくいきませんどうすればいいのでしょぅか。
EclipseのWorkspaceのプロパティ設定ではきちんとJRE1.5のパスを指定しています。

Aベストアンサー

>EclipseのWorkspaceのプロパティ設定ではきちんとJRE1.5のパスを指定しています。

どの設定を言っているのかよくわかりませんが、Eclipseで指定のJDKを使うには2箇所設定が必要です。
 1つは使用するJDKの設定で、設定ウインドウの「Java」「インストール済みJRE」で、使用するJDKを選びます。ここで5.0の設定を用意し、チェックをオンにしておきます。
 もう1つはコンパイラで使用する準拠レベルの設定で、設定ウインドウの「Java」「コンパイラー」にある「コンパイラー準拠レベル」で「5.0」に設定します。

これで当方では問題なくformatを使ったプログラムをビルド実行できました。


このカテゴリの人気Q&Aランキング

おすすめ情報