C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 文字列検索(java)


(過去ログ 54 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■30588 / inTopicNo.1)  文字列検索(java)
  
□投稿者/ darkdara (1回)-(2008/12/27(Sat) 11:50:21)

分類:[Java] 

2008/12/27(Sat) 13:18:20 編集(投稿者)
0から1000の数を文字列に変換し、10の位が5の数を検索して表示したいのですが1の位も表示されてしまいます。
どうすればよいでしょうか。

class sample{
   public static void main(String[] args){
      int l=0;
      for(int i=0;i<=1000;i++){
	 String j=String.valueOf(i);
	 int k=j.lastIndexOf("5");
	 if(k==1){
	    System.out.println("5の付く数:"+i);
	 }
      }
   }
}

引用返信 編集キー/
■30590 / inTopicNo.2)  Re[1]: 文字列検索(java)
□投稿者/ Mr.T (303回)-(2008/12/27(Sat) 12:40:07)
Mr.Tです。

Javaは文法しらないんですが、
> 	 int k=j.lastIndexOf("5");

これって、文字列の後ろから5を検索しているからですよね。
後ろから二桁目だけの文字をもってこれたらいいわけなので、

if 文字列が2文字以上
{
  取得文字列 = 後ろから二文目を取る
 if 取得文字列 = 5 {
     結果表示
   }
}
って感じにやってみればいいと思いますが

引用返信 編集キー/
■30593 / inTopicNo.3)  Re[2]: 文字列検索(java)
□投稿者/ MOTO (4回)-(2008/12/27(Sat) 13:19:03)
MOTO さんの Web サイト
No30588 (darkdara さん) に返信
こんにちは、darkdaraさん。

おそらくdarkdaraさんは、lastIndexOfメソッドは戻り値として
「引数で指定された文字列が見つかった位置が後ろから何番目か」
を返却するものと考えて上記のように実装したのではないでしょうか?
しかしながら、lastIndexOfメソッドは戻り値として
「引数で指定された文字列が最後に見つかった位置が先頭から何番目か」
を返却するメソッドです。

例えば、
・"15".lastIndexOf("5") の戻り値は 1
・"150".lastIndexOf("5") の戻り値は 1
・"1500".lastIndexOf("5") の戻り値は 1
・"1505".lastIndexOf("5") の戻り値は 3
といったような具合ですね。
このため、darkdaraさんのソースコードでは、
"15"のように1の位が"5"の数字も表示されてしまうのではと思います。

ですので上記を踏まえてIf文の条件式を修正するか、
もしくはMr.Tさんの提示してくださった実装方法に変更する等すれば、
望んでいた結果が得られると思いますよ(´ー`)ノ
引用返信 編集キー/
■30597 / inTopicNo.4)  Re[2]: 文字列検索(java)
□投稿者/ darkdara (2回)-(2008/12/27(Sat) 15:33:48)
2008/12/27(Sat) 21:10:03 編集(投稿者)


みなさんご回答ありがとうございました。
無事解決致しました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -