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

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

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

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

1949閲覧

EditTexitから取得した文字に3桁区切りでカンマを入れ、TextViewに書き込みたい

a-san

総合スコア12

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2018/03/13 10:21

編集2018/03/13 15:19

前提・実現したいこと

Android Studio(Java)で、androidアプリを開発しています。
EditTexit(editText)から取得した文字列(数字)に3桁区切りでカンマを入れ(小数点には入れない)、TextView(textView)に書き込みたいのですが、下記該当のソースコード部分でアプリが止まってしまいます。

どのようなコードを書けばよいのでしょうか。
また、下記コードではなぜうまく動かないのでしょうか。

該当のソースコード

Java

1 2textView.setText(String.format("%,.5f",Integer.parseInt(editText.getText().toString()))); 3

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

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

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

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

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

guest

回答2

0

制約がないということなので

System.out.println(new DecimalFormat("#,##0.###").format(12.0D)); // 12 System.out.println(new DecimalFormat("#,##0.###").format(2012.001D)); // 2,012.001

投稿2018/03/13 13:22

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/03/13 13:33

一つ書いておくのをわすれたw System.out.println(new DecimalFormat("#,##0.###") .format(2012.0005D)); // 2,012.001
a-san

2018/03/13 14:45

本当ですね、こっちでも期待した動作をしてくれました。ありがとうございます。 java.text.DecimalFormatをimportしようと思ったら、<Android API 26 Platform>ってでてきたんですが、これはAPI26からしか対応してないみたいな意味ではないんですね。
退会済みユーザー

退会済みユーザー

2018/03/13 14:50

android.icu.text.DecimalFormat とか別のクラスを読み込んでそうだが ドキュメント上は API Lv1 なんだけどな
a-san

2018/03/13 15:00

android.icu.text.DecimalFormatとjava.text.DecimalFormat だと、なにか違うんでしょうか? よくわからないので両方試してみましたが、両方ともうまく動きました。 あと、両方とも横に<Android API 26 Platform>って書いてあります(意味は不明)。
退会済みユーザー

退会済みユーザー

2018/03/13 15:04

だとっすると最小APIを 26(オレオ)に設定してませんか?
退会済みユーザー

退会済みユーザー

2018/03/13 15:06

多分 java で始めるPackageを全部すてたいんだと思いますが。→ 二つの DecimalFormat ( Google Java 論争では 中身は別実装と言い張っております )
a-san

2018/03/13 15:18

何から何まですみません。最小APIってどこで確認できるものなのでしょうか?
guest

0

ベストアンサー

1234512,345
上記のように整数を出力したいならフォーマット指定子は%,dにすべきかと思います。

浮動小数として扱いたいならInteger.parseIntは不適ですね。

投稿2018/03/13 10:30

LouiS0616

総合スコア35660

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

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

a-san

2018/03/13 10:52

ご回答ありがとうございます。 フォーマット指定子を %,d に変えてみたのですが、やはり止まってしまいます。 Implicitly using the default locale is a common source of bugs: Use String.format(Locale, ...) instead と出ています。
LouiS0616

2018/03/13 10:57

String.format(Locale.getDefault(), "%,d", 略) にしてみてください。
a-san

2018/03/13 11:50

途中でエラーの原因が分かりました。 editTextの内容が浮動小数になることが多いアプリだったからみたいです。 浮動小数を扱うとなると、浮動小数点以下を一度切り離した上でString.formatし、もう一度くっつけ直す作業になるのでしょうか……?
LouiS0616

2018/03/13 11:56

String.format(略, "%,.5f", Double.parseDouble(略)) でいけると思いますよ。
a-san

2018/03/13 12:23

できました! ずっと調べてもわからなかったので助かりました……ありがとうございます。 ちなみに、これだと小数点以下が5桁分0で埋まると思うのですが、埋めないためには"%,.5f"の部分をどう書き換えればいいでしょうか? (例:0.10000→0.1)
LouiS0616

2018/03/13 12:51

簡単に出来る方法がちょっと思い浮かばないですね... 正規表現を使うとこんな感じですかね。 String.format(略).replaceAll("0+$", "") もっといい方法がありそうな気もしますが。
a-san

2018/03/13 13:04

説明不足ですみません。 1.00000という数字が出ることもあるんですが、その場合は1.ではなく1と出したいです。
LouiS0616

2018/03/13 13:09

なんかもうごり押しになってしまい恐縮ですが... String.format(略).replaceAll("0+$", "").replaceAll("\.$", "")
a-san

2018/03/13 13:14

おかげさまで、うまくうごきました。 ありがとうございました!
a-san

2018/03/13 13:19

いえ、特に制約はないです
LouiS0616

2018/03/13 13:19

@asahina1979 さん 単に知らなかった系です。紹介ありがとうございます。
a-san

2018/03/13 14:12

@asahina1979 さん いざ使ってみようとして、「DecimalFormat はつかっちゃいけない」の意味が分かりました。 APIレベルが高いということですか? でしたらやはり、それに対応していない人がアプリを使っちゃうこともあるかもしれないので、やめるべきですかね…。
退会済みユーザー

退会済みユーザー

2018/03/13 14:18

APIレベル1(最初から実装)ですよ 浮動小数点数のフォーマットクラスの代表であるのにものかかわらず一言も出てなかったから過去すれかなにかで制限でもしてるのかなぁとw
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問