サーブレットでの通貨表示について

このQ&Aのポイント
  • サーブレットで通貨表示する際の問題を解決する方法について
  • String型で負の数を通貨表示する方法について考える
  • JavaサーブレットでNumbersFormatクラスを使用して通貨記号を表示する方法について
回答を見る
  • ベストアンサー

サーブレットでの通貨表示について

現在、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(); } ご存知の方がいらっしゃいましたら、是非ご教授お願い致します。

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

「ご存知」ではないんですが、多分、ロケールにアメリカを指定してるから、そう なるのでしょう。 日本で使うプログラムだと思って良いんですよね? であれば、ロケールに Locale.JAPAN を使いましょう。 by a-kuma@Javaは勉強中

参考URL:
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/util/Locale.html
globe8
質問者

お礼

a-kumaさん、こんにちは。 早速のご回答どうも有難うございました<(_ _)>。 一応、日本で使うプログラムなので、ロケールの問題なのか分からなかったので、ご回答や参考URL、お役に立たせて頂きました。 助かりました、改めて有難うございます!

関連するQ&A

  • ZZZ,ZZZ,ZZ9形式の金額形式変換の件

    int value = 1234567; NumberFormat nf = NumberFormat.getCurrencyInstance(); nf.setCurrency(Currency.getInstance(Locale.JAPAN)); System.out.println(nf.format(value)); [結果] \1,234,567 上記のようなソース、NumberFormatクラスのformat()メソッド 金額表記をString型で返すような感じで 9桁の金額を ZZZ,ZZZ,ZZ9のような形式変換に適している クラス・メソッドはありますでしょうか?? それともCASE分等で実装して作るのが妥当でしょうか?? 例 9桁の数値文字列→カンマと*を含んだ11桁の文字列 000000000     → **********0 000000999    → ********999 123456789    → 123,456,789 000012345    → *****12,345 001234567 → ***1234,567 アドバイスお待ちしております。

    • ベストアンサー
    • Java
  • jsp、サーブレットの質問です。

    Tomcatを使用してjspとサーブレットを使い掲示板のような投稿サイトもどきを作成していますが解決できない部分があります。 ↓は表示用のjspです♪ <html> <head> <title>Insert title here</title> </head> <body> <% String lsts = (String)request.getAttribute("lst"); %> <table border="4"> <tr> <td>日時</td> <td>タイトル</td> <td>スレッド主</td> <td></td> </tr> <tr> <td><%for(int i = 0; i<lsts.length(); i++){ out.println(lsts); } %> </td> <td><%out.println(); %></td> <td><%out.println("");%></td> <td> </td> </tr> </table> </form> </body> </html> こちらがサーブレットです otected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*DB接続処理は省略します*/ try{ ps = (PreparedStatement) con.prepareStatement(sql); String sql = "select * from thred"; ResultSet rs = ps.executeQuery(); //テーブル内一覧取得 while(rs.next()){ rs.getString("time"); rs.getString("title"); rs.getString("id"); rs.getString("thredid"); String s = (rs.getString("time")+","+ rs.getString("title")+","+rs.getString("id")); String[] lsts = s.split(","); List<String> thlists = Arrays.asList(lsts); String ss = (thlists.get(0)); request.setAttribute("thlst",ss); RequestDispatcher dispatcher= request.getRequestDispatcher("/list.jsp"); dispatcher.forward(request,response); } }catch(SQLException e){ e.printStackTrace(); } catch(ClassNotFoundException e){ e.printStackTrace(); }finally{ try { con.close(); } } } jspの方にサーブレットでthredDBから抜き取ったtimeとtitleとidを全て表示させたいのですが 現状だと 2014-06-03 06:45:02  aaaa 1 の行だけがたくさん表示されてしまいます 恐らくスコープを取得した時点でこの↑の1行のものしかとれてこれていないのだと思います... どのように処理を行ったらよいのでしょうか? DBの中身は画像添付いたしますっ

  • サーブレットでデータベース操作。

    サーブレットを使ってMySQL内のテーブルにレコードを追加、変更、削除できるようなプログラムを作っています。流れとしましては『HTML画面→サーブレット起動→レコード追加、変更、削除』といった具合です。追加、変更ができてなぜか削除だけできません。SQL文を書き換えるだけのはずなのですが・・。どなたか教えて下さい。windows2000Professional, j2sdk1.4.0_01, Tomcat3.3.1,MySQL3.23.47 略 . . Connection con = null; Statement stmt = null; try { con = DriverManager.getConnection( "jdbc:mysql://localhost/db_ichat", "root", "pen3"); stmt = con.createStatement(); String seqno = request.getParameter("seqno"); String name = request.getParameter("name"); String namejp = new String(name.getBytes("8859_1"), "JISAutoDetect"); String psw = request.getParameter("psw"); String pswjp = new String(psw.getBytes("8859_1"), "JISAutoDetect"); String email = request.getParameter("email"); StringBuffer buf = new StringBuffer(); buf.append("delete from t_id "); buf.append("where seqno = "); buf.append(seqno); stmt.executeUpdate(buf.toString()); try { stmt.close(); } catch (Exception e) {} try { con.close(); } catch (Exception e) {} . . 略。

    • ベストアンサー
    • Java
  • EditText型をint型に変換し通貨表示に

    ■やりたいこと: AndroidのEditTextに、ユーザがインプットメソッドを用いて数字を入力した際、その値を 1. int型変数と、String型変数に代入(2つの型で、後々使えるよう変数内にデータ保持したい) 2. EditText(スマホ画面)には、入力後「通貨」書式で表示したい 「通貨」書式とは、EditTextに「1000と入力したら、1,000」のように、位取りして表示をしたいという意味です。 下記コードだと、アプリが起動直後に落ちてしまいます。 実行後に表示されるLogCatには「FATAL EXCEPTION」と書かれています。 ■レイアウト(xml:activity_main) <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="number"//画面から数値のみ:入力制限 android:digits="0123456789"/> ■クラスファイル public class MainActivity extends Activity implements OnFocusChangeListener { EditText editText; String str; String str2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //editText1=layoutのEditTextのid EditText editText = (EditText)findViewById(R.id.editText1); editText.setOnFocusChangeListener(this); str = editText.getText().toString(); //EditTextに入力された数字を取得 int i = Integer.parseInt(str); //Integerクラスの値=整数値を取得★ NumberFormat numFormat = NumberFormat.getCurrencyInstance(); //通貨フォーマット str2 = numFormat.format(i); //整数値を通貨フォーマットに } @Override public void onFocusChange(View arg0, boolean getFocus) { if (getFocus){ editText.setText(str2); //EditTextにセット(表示) } } } ==================================================================== 原因は「★」の部分のようです。ここを通過するととデバッガが落ちます。 (EditTextに半角数字を入れても、それがint型の保証がないからでしょうか) 上の「やりたいこと」を実現するには、どこを修正すればよいでしょうか。

  • サーブレット 選択されたチェックボックスの表示について

    こんにちわ。 独学でサーブレットの勉強をしています。 チェックボックスで、どのチェックボックスをを選択したかを表示したいのですが、ネットや参考書を見てもよくわかりません。 イメージとしては、 □A □B □C □D □E とあってBを選択したら、ブラウザに 選択結果 B 2番目がチェックされました。 こんな感じで表示させたいです。 自分ではBの部分までは表示させうことができました。 よろしければ、アドバイスをお願いします。

    • ベストアンサー
    • Java
  • RequestDispatcherオブジェクトについて。

    データベース表示を行うサーブレットを呼び出す処理を行うには、RequestDispatcherオブジェクトを取得して、そのforwardメソッドを呼び出すだけと聞きましたが、うまくいきません。どなたかどこが悪いか教えてください。 // データベース表示するために、RequestDispatcherを取得 ServletContext cx = getServletContext(); RequestDispatcher rd = cx.getRequestDispatcher( "/netjv/servlet/shuwa.ext_db5_2_1"); // サーブレットを呼び出す rd.forward(request, response); } catch (Exception e) { e.printStackTrace(); } } 後、URL部分にはどこからのパスを書けばよいのでしょうか?あってるか不安です。

    • ベストアンサー
    • Java
  • 半角の&(アンド)文字をサーブレットセットで表示

    お世話になります。 Java6のサーブレット内で、半角の&(アンド)文字を String属性の変数であるstrMessageにセットした上で、 その文字データを、 request.setAttribute("err_message", strMessage); this.getServletContext().getRequestDispatcher( "/WEB-INF/jsp/errorMessage/FormError.jsp").forward( request, response); としてセットすると、JSP画面上では、 &amp; という文字で、Webブラウザ上に表示されてしまいます。 これを正しい半角の&(アンド)文字で表示させるには、 Javaのサーブレット内において、 どのように値をセットすればよろしかったでしょうか? 以上になります。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • javaについて

    このプログラムは文字を入力して、検索をかけてその検索にかかった秒数を表示するものですが、検索数を表示するのにはどうしたらいいでしょうか? import java.io.*; import java.net.*; public class Sample { public static void main(String[] args) { System.out.println("入力してください"); String keyword = getKeyword(); String htmlSrc = getHTMLSrc("http://search.yahoo.co.jp/search?p=" + keyword, "UTF-8"); double sec = getSearchSec(htmlSrc); if (sec > 0) { System.out.println("検索秒数は" + sec + "秒"); } else { System.out.println("検索結果0件"); } } private static String getKeyword() { String keyword = ""; BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); keyword = br.readLine(); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } keyword = keyword.replaceAll(" ", "+"); return keyword; } private static String getHTMLSrc(String strURL, String charSet) { StringBuffer sb = new StringBuffer(); HttpURLConnection conn = null; BufferedReader br = null; try { URL url = new URL(strURL); conn = (HttpURLConnection)url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream(), charSet); br = new BufferedReader(isr); String tmp = ""; while ((tmp = br.readLine()) != null) { sb.append(tmp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } private static double getSearchSec(String htmlSrc) { double sec = 0; String tmp = htmlSrc.replaceAll("<.+?>| ", ""); tmp = tmp.replaceAll(".*件-", ""); tmp = tmp.replaceAll("秒.*", ""); try { sec = Double.parseDouble(tmp); } catch (NumberFormatException e) { } return sec; } }

  • javaについて

    このプログラムは文字を入力して、検索をかけてその検索にかかった秒数を表示するものですが、検索数を表示するのにはどう書き換えますでしょうか? import java.io.*; import java.net.*; public class Sample { public static void main(String[] args) { System.out.println("入力してください"); String keyword = getKeyword(); String htmlSrc = getHTMLSrc("http://search.yahoo.co.jp/search?p=" + keyword, "UTF-8"); double sec = getSearchSec(htmlSrc); if (sec > 0) { System.out.println("検索秒数は" + sec + "秒"); } else { System.out.println("検索結果0件"); } } private static String getKeyword() { String keyword = ""; BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); keyword = br.readLine(); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } keyword = keyword.replaceAll(" ", "+"); return keyword; } private static String getHTMLSrc(String strURL, String charSet) { StringBuffer sb = new StringBuffer(); HttpURLConnection conn = null; BufferedReader br = null; try { URL url = new URL(strURL); conn = (HttpURLConnection)url.openConnection(); InputStreamReader isr = new InputStreamReader(conn.getInputStream(), charSet); br = new BufferedReader(isr); String tmp = ""; while ((tmp = br.readLine()) != null) { sb.append(tmp); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } if (conn != null) { conn.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return sb.toString(); } private static double getSearchSec(String htmlSrc) { double sec = 0; String tmp = htmlSrc.replaceAll("<.+?>| ", ""); tmp = tmp.replaceAll(".*件-", ""); tmp = tmp.replaceAll("秒.*", ""); try { sec = Double.parseDouble(tmp); } catch (NumberFormatException e) { } return sec; } }

    • ベストアンサー
    • Java
  • サーブレットとMysqlについて

    JSP サーブレット Mysqlについて質問です。 私が今実現させたいことを簡単に説明します。 画面側にはtextboxがあり、このtextboxは追加ボタンによって、 どんどん追加されていきます。 サーブレット側はこのtextboxの全ての値をDBに書き込みたいです。 例えば、textboxが二つなら、一つ目のINSERTでDBのname列にtextbox一個目の値を書き込み、二つ目のINSERTでDBのname列にtextboxニ個目の値を書き込む。 ソースを書いてみたのですが、いろいろと違いがあると思いますので、ご教示をお願いします。 現在は下記ソースを実行してもDBは更新されません・・ もしかしたら、DBの設定がおかしいのでしょうか・・ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String[] name10 = request.getParameterValues("sonota"); for (int i = 0; i < name10.length; i++) { System.out.println(i + " " + name10[i]); name10[i] = new String(name10[i].getBytes("8859_1"), "UTF-8"); } Connection conn = null; CallableStatement cs = null; PreparedStatement stmt = null; ResultSet rs = null; String url = "jdbc:mysql://localhost/Sample_db"; String dbUser = "root"; String dbPass = "taratara"; try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url, dbUser, dbPass); String sql= "insert into Sample_db.Sample_table (name) values (name10[i]);"; stmt = conn.prepareStatement(sql); for (String n : name10) { stmt.setString(1, n); stmt.executeUpdate(); } int cnt = stmt.executeUpdate(); stmt.close(); }catch(Exception e){ //exception RequestDispatcher dispatcher = request.getRequestDispatcher("index.jsp"); dispatcher.forward(request, response); } } }

    • ベストアンサー
    • Java

専門家に質問してみよう