SRM149 div2 250
問題文概略
与えられたドルとセント数を組み合わせて、"$1,234.05"のように表示せよ。
ドル:最初に"$"が付き、3桁ごとにカンマがつく。
セント:最初に"."が付き、1桁の場合0+数字となる。
書いたコード
public class FormatAmt {
public String amount(int dollars, int cents) {
int n=0;
int j=1;
String s = "";
String sDollars = String.valueOf(dollars);
String sCents = String.valueOf(cents);
//ドルに,をつける
for(int i=sDollars.length()-1; i>=0; i--){
s += sDollars.charAt(i);
if(j%3==0 && j !=sDollars.length() ) {
s+=",";
}
j++;
}
StringBuffer ans = new StringBuffer(s);
//セントに0をつける
if(sCents.length() != 2) {
sCents = "0" + sCents;
}
return "$"+ans.reverse()+"."+sCents;
}
}
他の参加者のコードを読んで修正した
public class FormatAmt {
public String amount(int dollars, int cents) {
String s = "";
int i = 0;
if(dollars == 0) {
s += "0";
}
while(dollars > 0) {
int mod = dollars % 10;
dollars /= 10;
i++;
if(i % 3 == 0 && dollars != 0) {
s = "," + mod + s;
} else {
s = mod + s;
}
}
String c = "";
if(cents < 10) {
c = "0" + cents;
} else {
c += cents;
}
return "$" + s + "." + c;
}
}
雑感
ドルの3桁区切りを実装するのに、
「数字を逆順に並び替える」
↓
「左から3桁づつにカンマをつける」
↓
「もう一度逆に並び替える」
と考えたのだが、
10で割った余りを求めて並べる
↓
3回おきにカンマを加える
とすれば楽に実装できたんだな。
Author And Source
この問題について(SRM149 div2 250), 我々は、より多くの情報をここで見つけました https://qiita.com/ikemonn/items/0ee0af93b3c39bcccc0c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .