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

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

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

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

Q&A

解決済

1回答

1413閲覧

3桁ごとにカンマをつけたい。

plight03

総合スコア8

Java

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

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

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

0グッド

0クリップ

投稿2019/08/05 11:56

編集2019/08/05 12:57

以前にも質問させていただきましたが、アンドロイドスタジオで電卓を作っています。
画面に表示させている文字列を数値に変換した変数と、数字ボタンが押された際に表示される文字列を数値に変換した、変数とでTextView内で連結させています。
連結させた所、それまで3桁毎についていたカンマが、4桁毎につくようになってしまいました。
「12,345」と表示させたいが、「1,2345」となっている。

前提・実現したいこと

3桁毎にカンマが入るように修正をし、「12,345」と表示させたい。

発生している問題・エラーメッセージ

4桁毎にカンマが入っている。

該当のソースコード

lang

1 private String number = new String(); 2 private int hengeAtai = 0; 3 private int num; 4 5// 0~9のボタンを押した時 6public void pushNumbers(View view) { 7 switch (view.getId()) { 8 case R.id.imageButton: 9 if (number.length() == 9) { 10 return; 11 } else { 12 number = "1"; 13 } 14 break; 15 case R.id.imageButton2: 16 if (number.length() == 9) { 17 return; 18 } else { 19 number = "2"; 20 } 21 break; 22    case R.id.imageButton10: 23 if (number.length() == 0) { 24 return; 25 } else if (number.length() == 9) { 26 return; 27 } else { 28 // それ以外の数字キーが、押されたら0を入力 29 number = "0"; 30 } 31 break; 32 } 33chengeAtai = Integer.parseInt(number); 34String valueTwo = text01.getText().toString().replace(",", ""); 35num = Integer.parseInt(valueTwo); 36 text01.setText(String.format("%,d", num) + chengeAtai + ""); 37}
Java

試したこと

String.format内の変数や、()の位置を変更すれば対処出来るんじゃないかと思って試しました。
結果として、数字のボタンを続けて押しても桁が増えず、押されたボタンを基にどんどんと数値が足されていくだけでした。

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

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

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

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

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

gentaro

2019/08/05 11:57

> 「12.345」と表示させたい それカンマじゃないですやん というツッコミだけ入れておきます。
退会済みユーザー

退会済みユーザー

2019/08/05 11:59

ロケール問題じゃねきっと あとデシマルフォーマットとかナンバーフォーマットつかわんのはなぜだ?
退会済みユーザー

退会済みユーザー

2019/08/05 12:01

ちなみに "1,000"+1 = "1,0001" は書いてある処理としてはまちがえてないからな
Orlofsky

2019/08/05 12:29

markdownの使い方が間違っています。
plight03

2019/08/05 13:12

markdownの使用方法が、間違っておりました。 ソースコードを、 [コードを入力] 欄に修正しました。
plight03

2019/08/05 13:18

書かれている上記2つの内、どちらかを使わなかったのかについては、知らなかったためです。
guest

回答1

0

ベストアンサー

String.format内の変数や、()の位置を変更すれば対処出来るんじゃないかと思って試しました。
結果として、数字のボタンを続けて押しても桁が増えず、押されたボタンを基にどんどんと数値が足されていくだけでした。

バグは通常, 勘で対処するものではありません.
そのような対応になってしまうのは, コードの意味を把握出来ていないためと思います.

String.format("%,d", num) + chengeAtai + ""

は, num = 1234, changeAtai = 5 の時,
・num を "%,d" でフォーマットした "1,234"
・changeAtai を文字列化した "5"
・""(空文字列)
を繋げた "1,2345" を表します.
つまり「3桁毎についていたカンマが、4桁毎につくように」なったのでは無く, 「3桁毎にカンマのついている文字列に, 1文字の文字列を繋げている」だけです.

"12,345" を得たいのでしたら, num の桁を上げ(10倍)て一の位に changeAtai を入れてからフォーマットする

String.format("%,d", num * 10 + changeAtai)

となるかと思います.

投稿2019/08/05 13:47

jimbe

総合スコア12646

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

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

plight03

2019/08/05 14:49

回答していただき、ありがとうございます。 回答内容を基に試してみた所、3桁毎にカンマが入りました。 指摘されている通り、把握できていない点はありました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問