アフィリエイト広告を利用しています


スキル無しのシステムインストラクターから、システムエンジニアへの転身日記。
◇◆◇ 2013年取得資格
LPICレベル1
LPICレベル2
LPICレベル3 Core
LPICレベル3 Speciality 302
LPICレベル3 Speciality 303
LPICレベル3 Speciality 304

Cisco CCENT
Cisco CCNA

Java SE 7 Silver
Java SE 7 GOLD

OSS-DB Silver

◇◆◇ 2014年取得資格
HTML5 Professional レベル1

広告

posted by fanblog

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の技術をまた忘れてきた。脳みそよ。もっと頑張れ!!

コメント

お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのコメント

buy amoxicilina 500 mg india
Cortney|2020年09月16日(Wed) 22:52
keflex antibiotic 500 mg capsules
Alta|2020年08月17日(Mon) 04:59
online cialis
Elane|2020年08月16日(Sun) 09:16
generic sildenafil citrate 100mg india
Dwain|2020年08月15日(Sat) 08:06
when will cialis be available in generic form
Erlinda|2020年08月15日(Sat) 01:44
hydroxychloroquine cost australia
Arielle|2020年08月14日(Fri) 17:28
januvia sitagliptin
Demetrius|2020年08月12日(Wed) 19:27
can you get hydroxychloroquine over the counter
Doris|2020年07月18日(Sat) 09:09
order careprost online
Morris|2020年06月14日(Sun) 04:25
buy hydroxychloroquine
Margarette|2020年05月06日(Wed) 10:30
buy careprost
Melodee|2020年05月02日(Sat) 21:57
buy tylenol
Shelia|2020年05月01日(Fri) 14:39
tab prednisone 10 mg
[url=https://bvsinfotech.com/#]prednisone for sale[/url]
Merlin|2020年04月07日(Tue) 04:39
   
×

この広告は30日以上新しい記事の更新がないブログに表示されております。