2014年02月26日
JavaEEの前に復習をしてみる その15 文字列のフォーマット指定
文字列処理って深いな…。そろそろ飽きてきたかもしれませんね。
私じゃないですよ。見てる人がww
今回は、文字列を表のように出力するときにどのように記述すればいいのか
を考えてみたいと思います。
以下にコードを記載します。
shade,shake,shakoといった3名がいまして(playerName*)、
それぞれ職業をもっています(playerJobs*)。
そして所持金をランダムで表示します。
package test;
public class StringFormatTest1 {
public static void main(String [] args){
final String playerName0 = "[Name]" ;
final String playerName1 = "shade" ;
final String playerName2 = "shake" ;
final String playerName3 = "shako" ;
final String playerJobs0 = "[Jobs]" ;
final String playerJobs1 = "proglammer" ;
final String playerJobs2 = "fish" ;
final String playerJobs3 = "shrimp" ;
final String playerMoney = "[Money]" ;
StringFormatTest1 sft = new StringFormatTest1();
System. out.println(playerName0+playerJobs0+playerMoney);
System. out.println(playerName1+playerJobs1+sft.PlayerMoneySet());
System. out.println(playerName2+playerJobs2+sft.PlayerMoneySet());
System. out.println(playerName3+playerJobs3+sft.PlayerMoneySet());
}
public int PlayerMoneySet(){
int playerMoney = (int)(Math.random ()*100000);
return playerMoney ;
}
}
結果は、
[Name][Jobs][Money]
shadeproglammer1445
shakefish60882
shakoshrimp39569
となります。
全部くっついて、わけが分からなくなりましたw
かといって、
System. out.println(playerName1+" "+playerJobs1+" "+sft.PlayerMoneySet());
といってスペースで誤魔化すのも、なんかプログラミングじゃないですよね。
そこで、コードを書き換えてみます。
package test;
public class StringFormatTest1 {
public static void main(String [] args){
final String playerName0 = "[Name]" ;
final String playerName1 = "shade" ;
final String playerName2 = "shake" ;
final String playerName3 = "shako" ;
final String playerJobs0 = "[Jobs]" ;
final String playerJobs1 = "proglammer" ;
final String playerJobs2 = "fish" ;
final String playerJobs3 = "shrimp" ;
final String playerMoney = "[Money]" ;
final String Format0 = "%6s %10s %7s" ;
final String Format1 = "%6s %10s %d6" ;
StringFormatTest1 sft = new StringFormatTest1();
System. out .println(String.format(Format0,playerName0,playerJobs0,playerMoney));
System. out .println(String.format(Format1,playerName1,playerJobs1,+sft.PlayerMoneySet()));
System. out .println(String.format(Format1,playerName2,playerJobs2,+sft.PlayerMoneySet()));
System. out .println(String.format(Format1,playerName3,playerJobs3,+sft.PlayerMoneySet()));
}
public int PlayerMoneySet(){
int playerMoney = ( int)(Math.random ()*100000);
return playerMoney ;
}
}
結果は、
[Name] [Jobs] [Money]
shade proglammer 88,037
shake fish 74,024
shako shrimp 60,585
このように見やすくなりました!
何が起きたのでしょうか。
まず、変数に加わった
final String Format0 = "%-6s %-10s %7s" ;
final String Format1 = "%-6s %-10s %,d" ;
を見てみましょう。
ここで言う
%s … 文字列
%d … 数字
- … 左詰
, … 3桁ごとにカンマ
数字 … 文字列の数
といった正規表現とはまた違ったフォーマット指定ができます。
(こういうのがあるから正規表現をいつまでも覚えられないのだがww)
System. out .println(String.format(Format1,playerName1,playerJobs1,+sft.PlayerMoneySet()));
あとは出力の仕方ですが、
String.formatを使って、自分で作った定型FormatのFormat1を指定して成形します。
文字列1つ成形するのにも、クラスを一個成形用に作らないといけないですね。
文字列深いなぁ。きっちり覚えないとな。
この辺を当たり前に使えるか使えないかで、一日にコードをかける時間が変わってくるのです。
オライリー使った時に、この辺って出てこなかった気がするな・・・。
それとも、あまりの分厚さに失念したのか・・・。
SEばっかりやっているから、JavaEEの技術をまた忘れてきた。脳みそよ。もっと頑張れ!!
私じゃないですよ。見てる人がww
今回は、文字列を表のように出力するときにどのように記述すればいいのか
を考えてみたいと思います。
以下にコードを記載します。
shade,shake,shakoといった3名がいまして(playerName*)、
それぞれ職業をもっています(playerJobs*)。
そして所持金をランダムで表示します。
package test;
public class StringFormatTest1 {
public static void main(String [] args){
final String playerName0 = "[Name]" ;
final String playerName1 = "shade" ;
final String playerName2 = "shake" ;
final String playerName3 = "shako" ;
final String playerJobs0 = "[Jobs]" ;
final String playerJobs1 = "proglammer" ;
final String playerJobs2 = "fish" ;
final String playerJobs3 = "shrimp" ;
final String playerMoney = "[Money]" ;
StringFormatTest1 sft = new StringFormatTest1();
System. out.println(playerName0+playerJobs0+playerMoney);
System. out.println(playerName1+playerJobs1+sft.PlayerMoneySet());
System. out.println(playerName2+playerJobs2+sft.PlayerMoneySet());
System. out.println(playerName3+playerJobs3+sft.PlayerMoneySet());
}
public int PlayerMoneySet(){
int playerMoney = (int)(Math.random ()*100000);
return playerMoney ;
}
}
結果は、
[Name][Jobs][Money]
shadeproglammer1445
shakefish60882
shakoshrimp39569
となります。
全部くっついて、わけが分からなくなりましたw
かといって、
System. out.println(playerName1+" "+playerJobs1+" "+sft.PlayerMoneySet());
といってスペースで誤魔化すのも、なんかプログラミングじゃないですよね。
そこで、コードを書き換えてみます。
package test;
public class StringFormatTest1 {
public static void main(String [] args){
final String playerName0 = "[Name]" ;
final String playerName1 = "shade" ;
final String playerName2 = "shake" ;
final String playerName3 = "shako" ;
final String playerJobs0 = "[Jobs]" ;
final String playerJobs1 = "proglammer" ;
final String playerJobs2 = "fish" ;
final String playerJobs3 = "shrimp" ;
final String playerMoney = "[Money]" ;
final String Format0 = "%6s %10s %7s" ;
final String Format1 = "%6s %10s %d6" ;
StringFormatTest1 sft = new StringFormatTest1();
System. out .println(String.format(Format0,playerName0,playerJobs0,playerMoney));
System. out .println(String.format(Format1,playerName1,playerJobs1,+sft.PlayerMoneySet()));
System. out .println(String.format(Format1,playerName2,playerJobs2,+sft.PlayerMoneySet()));
System. out .println(String.format(Format1,playerName3,playerJobs3,+sft.PlayerMoneySet()));
}
public int PlayerMoneySet(){
int playerMoney = ( int)(Math.random ()*100000);
return playerMoney ;
}
}
結果は、
[Name] [Jobs] [Money]
shade proglammer 88,037
shake fish 74,024
shako shrimp 60,585
このように見やすくなりました!
何が起きたのでしょうか。
まず、変数に加わった
final String Format0 = "%-6s %-10s %7s" ;
final String Format1 = "%-6s %-10s %,d" ;
を見てみましょう。
ここで言う
%s … 文字列
%d … 数字
- … 左詰
, … 3桁ごとにカンマ
数字 … 文字列の数
といった正規表現とはまた違ったフォーマット指定ができます。
(こういうのがあるから正規表現をいつまでも覚えられないのだがww)
System. out .println(String.format(Format1,playerName1,playerJobs1,+sft.PlayerMoneySet()));
あとは出力の仕方ですが、
String.formatを使って、自分で作った定型FormatのFormat1を指定して成形します。
文字列1つ成形するのにも、クラスを一個成形用に作らないといけないですね。
文字列深いなぁ。きっちり覚えないとな。
この辺を当たり前に使えるか使えないかで、一日にコードをかける時間が変わってくるのです。
オライリー使った時に、この辺って出てこなかった気がするな・・・。
それとも、あまりの分厚さに失念したのか・・・。
SEばっかりやっているから、JavaEEの技術をまた忘れてきた。脳みそよ。もっと頑張れ!!
【Javaの最新記事】
この記事へのコメント
[url= https://bvsinfotech.com/# ]prednisone for sale[/url]