プロが教える店舗&オフィスのセキュリティ対策術

if分についてご質問がございます。
"023 00890"という10桁の数値があったとします。
4桁目5桁目が空白の、なおかつ6桁目7桁目が00の場合
System.out.printlnに左側から3桁目にハイフンを加え
左から5桁の数値を抽出
それ以外は3桁目にハイフンを加え
左から7桁の数値を抽出
したいのですがどなたか
アドバイスいただけないでしょうか??

public class ExControl4 {
public static void main(String[] args) {
String score = "023 00890"; //(1)
char grade;

if (score ) { //(2)
grade=
} else if (score ) { //(3)
grade=
}

System.out.println(" "); }
}

例えばVBAなら上記のイメージでMID関数を使用して対応できるのですが
JAVAに開発環境を切り替えて勉強中なのですが
どうぞよろしくお願いいたします。

例  "023 00890"→"023- "
    "023 00890"→"023- 00"

  

A 回答 (3件)

正規表現を使った方が良いのではないでしょうか。

この回答への補足

アドバイスありがとうございます。
初心者なので、
正規表現をつかったアイデアが
分かりません。
よくある参考書などイフ分サンプル等は
数値に対して
大きいか小さいかの判定だけで
今の知識だけでは
なかなかうまくいきません。

補足日時:2012/04/30 00:31
    • good
    • 0

まずは、マニュアルを読む。


Stringの操作なら、Stringクラスのから始めてみる。

Stringクラスにはsubstringメソッドという、MID関数に相当するものがある。
位置の指定が「n文字目(nは1から)」ではなく「インデックス(0から)」になることと、
メソッドの使い方が
substring(score,1,4)
ではなく
score.substring(1,4)
という形になる、ということに注意。
あと、文字列の比較に== 、!=は使わない。compareToメソッドを使う。

この回答への補足

Substringを使うんですね。
どうもありがとうございます。
ただ、if分で文字列を指定する際、
score.substring(1,4)が00の場合とか指定する場合に
例えばVBAならmid(郵便1,4) = 00
とか=00を指定出来るのですが
何々の時はどうすればいいのでしょうか?
また、お恥ずかしいのですが、マニュアルは
エクリプス上でチェック出来るのでしょうか?
どうぞよろしくお願いします。

補足日時:2012/04/30 12:53
    • good
    • 0

> score.substring(1,4)が00の場合



score.substring(1,4).compareTo("00") == 0
とか。

文字列の操作が中心のプログラムなら、やはり基本の文字列操作をしっかり覚えた方がいいと思います。
少なくとも比較がわからない、というレベルだとちょっと

この回答への補足

ご指摘ありがとうございます。
ご質問する前に調べた結果score.substring(  )のソースで
色々と探っていたのですが
参考書やWebで調べてもcompareTo("00") == 0 の比較の情報が得られなかったので
ご質問させて頂きました。
まだJAVAを勉強して10日前後で日が浅かったので
ご質問するには早かったのかと思いましたが
少なくとも現在所有している参考書には
比較演算子については勉強していました。
score.substring(   )が00の場合のソースの書き方が
分からなかったので勉強になりました。

引き続き現在、検証中ですが
下記のようなソースを作成して
希望通りシステムアウトされるの事が確認できました。
しかし1つのIF文で
例えば2桁目3桁目が00なおかつ5桁目6桁目が23の場合を
構文にしようとしたとき
&&(かつ)や||(または)が指定できないので現在検証中です。




//(function_5)郵便番号if判定

String score = "1210012345";


  if (score.substring(3,5).compareTo ("00") == 0) {
System.out.println(score.substring(0,3) + "-");

  } else if (score.substring(6,7).compareTo ("11") == 0) {
System.out.println(score.substring(0,3) + "-" + (score.substring(3,5)));

  } else {
System.out.println(score.substring(0,3) + "-" + (score.substring(3,7)));
}

補足日時:2012/05/01 11:07
    • good
    • 0
この回答へのお礼

&&(かつ)や||(または)とうはただ、単にじゃまなカッコがあっただけでした。
私の知識が足りなかった部分につきましては
比較演算子の使用例や意味については色々と調べてみましたが
比較演算子を使用して何々の場合00→compareTo ("00") == 0が
成立するという概念がまだ発想になかったです。
解決しましたことをご報告いたします。
どうもありがとうございました。

//(function_1)郵便番号if判定

String score = "12100 345";


if (score.substring(3,5).compareTo ("00") == 0 && score.substring(5,7).compareTo (" ") == 0) {
System.out.println(score.substring(0,3) + "-");
//4桁目5桁目00の場合なおかつ6桁目7桁目が" "の時左から1.2.3桁抽出+ハイフン

} else if (score.substring(5,7).compareTo (" ") == 0) {
System.out.println(score.substring(0,3) + "-" + (score.substring(3,5)));
//6桁目7桁目" "の場合左から1.2.3桁抽出+ハイフン+4.5桁目抽出

} else {
System.out.println(score.substring(0,3) + "-" + (score.substring(3,7)));
//それ以外左から3桁抽出+ハイフン+4.5.6.7桁目抽出

}


}

}

お礼日時:2012/05/01 14:12

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!