質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

5回答

2277閲覧

【Java】メソッドの引数に任意の文字列を渡したい

murasakiame

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2017/06/13 15:21

編集2022/01/12 10:55

lang

1 2String str = "a" + "何でもいいので何か文字列" + "z"; 3 4hoge(str); 5

このようにaから始まりzで終わればその間は何を受け取ってもいい文字列をメソッドの引数に渡したいです。
「任意の文字列 java」とかで調べると正規表現ばかりでてくるのですが、strを

lang

1 2str = "a[.*]z"; 3

という風にはできないのでしょうか。

###追記

正確には、

lang

1 2public static void main(String[]args){ 3 String str = "a" + "何か文字列" + "z"; 4 hoge(str); 5} 6 7public void hoge(String str){ 8 // 処理 9} 10

で、mainでhogeを実行する時だけaから始まりzで終わる文字列を引数に渡したいです。

何でもいいと言いましたが、何を受け取るか分からないというのが正しいかもしれません。
aから始まりzで終わる文字列というのは決まっているのですが、その間が何なのかはまだ分からないという感じです。

拙い文章で分かりにくいかとは思いますがよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

A-pZ

2017/06/14 00:34

hogeメソッドに渡す文字列が a から始まり、zで終わるもの以外は受け取りたくないが、どうすればよいか?でしょうか。
guest

回答5

0

ご質問を拝見するとどうも以下のようなことを意図しているように思えます・・・

仕様書に、hogeは'a'から始まり'z'で終わる文字列を受け取る。とかいてある。それをテストするために、「'a'から始まり'z'で終わるような文字列」をテストとして渡したいが間にはさまれた任意のパターンを勝手に生成してくれるような書き方がしたい・・・

そうなのかどうかはっきりしませんが、万一そうなのだとしたらそれはできません。

テストケースとしてどのような文字列を想定するかは仕様書が意味することを把握ししかるべきテストケースを人間が考える必要があると思います。任意の仕様書からしかるべきテストケースを自動生成するような頭のいいツールはないように思えますし、あったとしても計算機に仕様を正確に伝えるよりは人間がテストケースを与えた方がかえって早い気がします。


ちなみにご質問のことが仕様書に書かれていたとすると、自分なら「挟まれる文字列自体が'a'で始まり'z'で終わっていた場合区別がつかないけど、そういうケースの扱いがわからない」と感じました。

そういうふうに思える原因は「なぜそういうことがしたいのかの仕様の意図」を質問者さんが明記していないことによると思えるのですが如何でしょう・・・

投稿2017/06/13 23:47

KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Java

1public static void main(String[]args){ 2 String str = "a" + UUID.randomUUID().toString() + "z"; 3 hoge(str); 4}

質問の意図を間違えていたらすみません
ランダムに任意の文字列を作りたいのかと勝手に想像しました

投稿2017/06/14 02:21

Tomohiro12

総合スコア112

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

例外処理ではだめなのですか?

Java

1public static void main(String[]args){ 2 String str = "a" + "何か文字列" + "z"; 3 4 try { 5 hoge(str); 6 } catch( IllegalArgumentException e ) { 7 // エラー処理... 8 } 9} 10 11public void hoge(String str){ 12 if( 最初の文字がaではない || 最後の文字がzではない ) { 13 throw new IllegalArgumentException(); 14 } 15}

投稿2017/06/13 16:25

LouiS0616

総合スコア35658

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

人間が適当に入力すればいいのでは?
自動でやりたいなら、適当なテキストファイルから
適当なオフセット&長さで内容を取得する関数を
作るとか?
もっと、なにを目的としてそのようなことを
やりたいのかを書かれたら、またいい回答が
寄せられるような気がしますが…
--- 追記 ---
関数 hoge() の単体テストをする目的で
テストプログラムを書く際に、どのような
パラメータを用意すればいいの?
というお話でしたら、パラメータの仕様を
分析して必要な条件を満たすパターンを
いくつか考えて、それを与えればいいでしょう。

となるかと思いますが、さて実際はどうなのでしょうか…

投稿2017/06/13 15:29

編集2017/06/13 21:45
takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

murasakiame

2017/06/13 16:09

追記しましたのでよろしければ見ていただいてアドバイスをいただきたいです。よろしくお願いします。
takasima20

2017/06/13 21:40

いや、背景というかシチュエーションというか、 ちょっとその辺が見えてこないです。
guest

0

「何を受け取ってもいい」という部分だけ引数に渡してメソッド内でaとzをつけるという方法ではどうでしょう?

java

1public void hoge(String str) { 2 str = "a" + str + "z"; 3 // 何かする 4}

そうでなければコンパイル時にそういう文字列をはじくことはできないので、メソッド内で正規表現でチェックしてマッチしなければ例外を投げるなどのエラー処理をすることになると思います。

投稿2017/06/13 15:24

swordone

総合スコア20649

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

murasakiame

2017/06/13 16:09

追記しましたのでよろしければ見ていただいてアドバイスをいただきたいです。よろしくお願いします。
swordone

2017/06/13 16:11

すみません、もっと何を言いたいのかわからなくなりました… いや、何で困っているのかわからなくなりました。
ozwk

2017/06/13 23:43

文字列そのものを渡したいんじゃなくて 「aから始まりzで終わる」と言う情報を渡したいのかな?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問