質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

529閲覧

2次元配列の2つ目の要素を全て3桁のカンマ区切りにしたい

kiecna

総合スコア5

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2023/01/31 01:02

前提

2次元配列の2次元配列の2つ目の要素に以下の数値が入っているとする。
array2[0][1] = 3276207
array2[1][1] = 2865329
array2[2][1] = 1291117
array2[3][1] = 1096829
array2[4][1] = 978100
array2[5][1] = 322723

これを他クラス(servlet)から渡されたとき、3桁のカンマ区切りに直したい。

試したこと

3桁のカンマ区切りにするには、String.formatに「“%,d”」を指定する方法があるが、配列だと型の不一致で上手くいかなかった。
StringBuilderを作り、代入しようとしたがこちらも同じ理由で上手くいかなかった。

該当のソースコード

Java

1String[][] array2 = (String[][])request.getAttribute("array2"); 2int num = (int)request.getAttribute("num"); 3 4//新しい配列を作り、カンマ区切りにする。 5String[][] array3 = new String[num][2]; 6StringBuilder sb = new StringBuilder(""); 7 8for(int a=0; a<num; a++) { 9 10 array3[a][0] = array2[a][0]; 11 sb = array2[a][1]; 12 array3[a][1] = String.format("%,d", sb ); 13}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2023/01/31 01:54

> 配列だと型の不一致で上手くいかなかった。 実際のエラーメッセージをご提示いただけますか?
guest

回答2

0

文字列のままが良ければ replaceAll でも出来ます。

java

1public class Main { 2 public static void main(String[] args) throws Exception { 3 String[] a = { "3276207", "2865329", "1291117", "1096829", "978100", "322723"}; 4 for(String s : a) System.out.println(s.replaceAll("(?<=\\d)(?=(\\d{3})+$)", ",")); 5 } 6}

実行結果(paiza.io)

3,276,207 2,865,329 1,291,117 1,096,829 978,100 322,723

投稿2023/02/01 04:52

編集2023/02/02 04:47
jimbe

総合スコア12543

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

"%,d" に対応する型は int ですから、StringBuffer ではなく、
Integer.parseInt を使うべきでしょう。

Java

1class Main { 2 public static void main(String[] args) { 3 String[][] array2 = { 4 { "123", "4567" }, 5 { "89", "1234567" }, 6 { "4567", "56789" } 7 }; 8 int num = array2.length; 9 String[][] array3 = new String[num][2]; 10 for (int a = 0; a < num; a++) { 11 array3[a][0] = array2[a][0]; 12 array3[a][1] = String.format("%,d", Integer.parseInt(array2[a][1])); 13 System.out.println(array3[a][1]); 14 } 15 } 16}

投稿2023/01/31 02:10

kazuma-s

総合スコア8224

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kiecna

2023/01/31 03:12 編集

ありがとうございます。 配列だから型変換できないのかと勘違いしてました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問