Java入門・初心者質問スレ Part.7

■ このスレッドは過去ログ倉庫に格納されています
2018/01/10(水) 11:06:04.02ID:ijSgjgrG
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.6
http://mevius.2ch.net/test/read.cgi/tech/1513783473/
2018/04/20(金) 13:10:09.62ID:8BwjvaFI
>>373
ファイルが1000個とか煩雑過ぎるだろ
2018/04/20(金) 15:16:16.19ID:bJgJ2nSn
多分話が噛み合ってない
2018/04/20(金) 15:59:16.02ID:5NB8H1Vn
>>373
packageの構成も含めて設計だから、できるようにならないとね
2018/04/20(金) 16:30:35.14ID:bJgJ2nSn
手作りする意味は皆無だけどな
2018/04/20(金) 21:10:35.11ID:qDS4Ifrc
Kotlin は同じディレクトリに全ソースぶち込んでパッケージ違ってても問題ないんだよね。
やっぱ不便だから改良したってことなんだろうな。
2018/04/20(金) 23:24:08.50ID:K+iBTFnO
JavaアンチもそうだけどJavaスレでいつもkotlinガーkotlinガーって言ってる奴って何なんだろうね
2018/04/20(金) 23:57:34.11ID:NIkAJy/D
俺、出来るよ。

あピってるんだよw
2018/04/21(土) 00:31:53.95ID:Oxipuy33
>>379
布教活動
382345
垢版 |
2018/04/21(土) 00:58:04.69ID:dCQEqsTo
>>376の方をはじめ、答えて頂いた方ありがとうございました
理解を深めたいと思います
383デフォルトの名無しさん
垢版 |
2018/04/21(土) 13:04:10.38ID:O/LyWgef
スーパクラスのメソッドをオーバライドする時に
アクセス修飾子の公開範囲を狭めることができないのは何で?
2018/04/21(土) 13:24:22.24ID:deWsZ6vs
スーパークラスにキャストしたらメソッド使えちゃうガバガバ仕様になる。

もしくはほぼ全てのメソッド呼び出しで継承先で公開範囲が狭められたインスタンス使ってる可能性があるので
コンパイル時(Javaの場合はクラスロード時)でなくメソッド呼び出し実行時に毎回アクセス範囲チェックが必要になる。
当然実行速度は遅くなる。

どっちにしろアホすぎるので普通はやらない
2018/04/21(土) 16:40:35.81ID:/j4q6H3B
>>383
2つは外から見た時に同じものであるべきだから
違うなら継承しないか別のメソッドであるべき
2018/04/21(土) 21:58:22.29ID:7eG7nCds
>>383
is-a関係の基本
スーパークラスのメソッドをサブクラスに対しても同じように呼び出せなきゃポリモーフィズムできないじゃん

例えば、Objectクラスのサブクラスは必ずtoStringメソッドを持つはずなのに、いざ呼び出したらprivateになってて
呼び出せませんでしたってことが起こってしまう
387デフォルトの名無しさん
垢版 |
2018/04/24(火) 00:20:30.16ID:3Pw6zIwf
https://i.imgur.com/sFfh3Sr.jpg
https://i.imgur.com/10sVFpD.jpg

解説見ても分からん、、、
なんでコンパイルエラーなの?
388デフォルトの名無しさん
垢版 |
2018/04/24(火) 00:57:13.36ID:dNZ0kff2
getPrice()をオーバーライドするなら、ちゃんとthrowsも付けろよ、って書いてあるまんまじゃね?
389デフォルトの名無しさん
垢版 |
2018/04/24(火) 02:53:39.07ID:swLaOBA7
>>387
Javaはチェック例外のハンドリングコードがないと構文違反という仕様だから。
2018/04/24(火) 04:26:57.89ID:PQebw9pG
質問です
インターフェースはObjectクラスを継承しておらず、何らかのクラスに実装した時に
Objectクラスを継承する、という理解で合ってるんですよね?
2018/04/24(火) 08:28:13.84ID:zK8TVl/a
>>390
違います
392デフォルトの名無しさん
垢版 |
2018/04/24(火) 09:06:54.35ID:hoPd7aBI
>>390
どんなクラス作っても必ずObjectは継承されている。interfaceは無関係。
2018/04/24(火) 16:11:36.60ID:wVocooKs
https://www.wareko.jp/blog/post-13612

非同期処理+Promiseで非同期処理が終わってから次の非同期処理が始まるけど、
それって同期処理と何が違うのですか?
2018/04/24(火) 16:31:00.91ID:1D4v+3Mx
非同期は処理中でも、画面が固まらない
2018/04/24(火) 17:00:45.22ID:wVocooKs
同期処理だとUIスレッドまで止めるのかな?
処理の終了を待ちたいけど出来るだけ軽くしたいのならPromiseを使うのが良さそうね、ありがとう。
396390
垢版 |
2018/04/24(火) 17:28:01.29ID:PQebw9pG
>>391
>>392
ありがとうございました
2018/04/25(水) 16:22:50.98ID:fwgr11+u
https://pastebin.com/hm55QbiV
上のコードの4行目で、throws IOExceptionという記述が無いと
コンパイルエラーになるのですが、
それはException系の例外が発生する可能性がある命令を呼ぶ場合、
例外処理をすることが課せられるからですか?
2018/04/25(水) 17:26:52.29ID:2C7nhQLD
例外処理しなかったら投げた例外はどこいくんだよ
宇宙の果てにでも飛んでくのか?
2018/04/25(水) 17:31:33.29ID:Arb+HwkF
>>398
スタートアップが処理するのでは?
400デフォルトの名無しさん
垢版 |
2018/04/25(水) 17:34:11.55ID:vN7xx/wG
人気グループ「TOKIO」の山口達也メンバーが、自宅マンションの部屋で女子高校生に無理やりキスをするなどの行為をしたとして、警視庁は強制わいせつの疑いで書類送検しました。

全文は以下
https://www3.nhk.or.jp/news/html/20180425/k10011417181000.html
401デフォルトの名無しさん
垢版 |
2018/04/25(水) 18:42:45.48ID:F5XB7b+1
>>398
そう。そしてブラックホールに飲み込まれる。
402デフォルトの名無しさん
垢版 |
2018/04/25(水) 18:54:49.29ID:F5XB7b+1
>>397
そう。どこかで例外を処理する必要がある。
そのメソッドの中でやる必要がなく、呼び出した側に任せたい場合はメソッドにthrows付けてその例外を並べておく。
403397
垢版 |
2018/04/25(水) 19:30:28.04ID:fwgr11+u
>>398
>>402
分かりました ありがとうございました
404デフォルトの名無しさん
垢版 |
2018/04/25(水) 20:44:16.06ID:3+niHUT+
【マイトLーヤとPS4】 FFとDQの最新作、VR開発は危険、プレーヤーの日常感覚を損なうおそれ
http://rosie.5ch.net/test/read.cgi/liveplus/1524621704/l50
2018/04/25(水) 23:17:47.60ID:2C7nhQLD
内容が陳腐で今まで読んでなかったスッキリ入門実践編を
この前ウンコしながら読んでたんだけど
listのremoveって内部でobjectのequal読んでるって初めて知ったわ
仕事でremove使ってるときに何かうまく削除できねーなぁって言うのが
何回かあったような気がしたから納得したわ
こんな本でも役に立つとは思わんかった
2018/04/26(木) 01:41:03.96ID:rfIza21B
APIリファレンスに書いてなかったか?
2018/04/26(木) 08:48:52.90ID:2wH2d+Gx
JK的にそれしかありえんだろ
408デフォルトの名無しさん
垢版 |
2018/04/26(木) 09:39:16.37ID:M6xSFYLV
JK的?
2018/04/26(木) 11:22:14.87ID:ug01vewW
メンバーか
410デフォルトの名無しさん
垢版 |
2018/04/26(木) 11:46:33.29ID:zm91irPY
35歳の間違いだろ
2018/04/26(木) 14:20:36.08ID:LZqqVlEY
共同ツール 1
https://seleck.cc/685

https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり

共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/

共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903

ttps://goodpatch.com/blog/sketch-plugins/
2018/04/27(金) 01:23:44.80ID:jNhgPBcU
>>410
ここで出すな
2018/04/27(金) 10:56:04.65ID:3DjLi910
アレルギー発症するしな
2018/05/03(木) 06:41:39.46ID:vbqExxbx
int[] dt=new int[100];
これはやはり空白入れて
int[] dt = new int[100];
と書くのが一般的なんですかね?
2018/05/03(木) 08:57:33.33ID:jd++Ii8/
好きにしたらええ
2018/05/03(木) 12:00:36.28ID:yhgdtgpW
>>414
なにそのアホみたいな質問
どっちが一般的か、本当にわからなくて聞いてる?
前者の方が一般的もしくは半々ぐらいである可能性もあると思って聞いてんの?
417デフォルトの名無しさん
垢版 |
2018/05/03(木) 20:35:04.46ID:BzzsX7PA
>>414
ワシは後者で書く
それで話は終わり

>>416
まあまあ
こんなカス掲示板で
マジにならんでもよろしい
ワシも多少はそう思ってる
2018/05/03(木) 20:44:54.98ID:x/CfAno2
コンマの後ろは空白入れる派?
(1, 2, 3)
419デフォルトの名無しさん
垢版 |
2018/05/04(金) 03:59:25.88ID:id/9DuDj
マンコの後ろの穴にチンコ入れる派
420デフォルトの名無しさん
垢版 |
2018/05/04(金) 03:59:46.06ID:id/9DuDj
マンコの後ろの穴にチンコ入れる派
421デフォルトの名無しさん
垢版 |
2018/05/04(金) 04:06:53.55ID:WkIAkx0r
マンコの後ろの穴にチンコ入れる派
( * )←ω
2018/05/04(金) 06:18:21.42ID:HEa1U9rI
数値リテラルとかビット〜みたいな細かい数字の話が基礎知識として出てきてとりあえず読み飛ばしてるんですが、やはり理解するのは必須なんでしょうか
423デフォルトの名無しさん
垢版 |
2018/05/04(金) 21:01:19.41ID:sij7cbOA
必須だと思うよ。
そういう基礎的部分がわからないままではプログラム作れないだろう。
2018/05/05(土) 00:41:00.51ID:4BKiiZ7N
やはりそうですか……
ありがとうございます
425デフォルトの名無しさん
垢版 |
2018/05/05(土) 02:57:52.54ID:ia6t0Ogc
Javaの基礎的な部分で混乱しそうな所は文字列定数かな。特にCやC++に慣れた人がダブルクォーテーションで括られてるだけでそれがStringのインスタンスであることを理解せずに String s = new String(”abc”); みたいな無駄な書き方をしてしまったりする。
2018/05/05(土) 10:46:34.95ID:7fXWffH9
>>425
そんなところで混乱する奴なんていないよ
427デフォルトの名無しさん
垢版 |
2018/05/05(土) 15:19:26.83ID:ia6t0Ogc
そうかなあ?前はよく見たけどなあ。
428デフォルトの名無しさん
垢版 |
2018/05/05(土) 16:41:30.46ID:FiSjDjb0
未だにequalsと==のバグ見かける
C#といったりきたりしてるとうっかりやるから
そろそろ言語仕様変えてほしい
2018/05/05(土) 17:06:56.84ID:ZO4AhgIr
めっちゃ分かる
2018/05/05(土) 17:19:52.83ID:HbTEHU9f
なまじ似てるのが悪い。
2018/05/05(土) 19:43:03.62ID:6mpGGgHw
https://pastebin.com/Ls4mpSCv
本に載っていた上のコードの11行目で、byte型にキャストを行っているのですが、
その理由が分かりません
リファレンスで調べると、FileOutputStreamのwrite()メソッドは、byte[]か
intしか(第1)引数に取らないと書いてあります
どなたかこのキャストの理由が分かる方がいましたら、教えてもらえませんで
しょうか?
432デフォルトの名無しさん
垢版 |
2018/05/05(土) 19:55:03.40ID:fekIGidl
>>431
理由はない、完全に無駄なキャストだしflushも呼ばなくていい
433デフォルトの名無しさん
垢版 |
2018/05/05(土) 20:08:07.19ID:ia6t0Ogc
それだけでなくなんか無駄があるな。9〜13行目はこれでいいよなあ。

int data;
while ((data = is.read()) != -1)
 os.write(data);
2018/05/05(土) 20:10:31.11ID:ia6t0Ogc
あ、でも、何れにしてもバッファリングしてないから遅くなるかな。
BufferedInputStream() や BufferedOutputStream() を通すことをお勧めする。
435431
垢版 |
2018/05/05(土) 22:47:05.28ID:6mpGGgHw
答えてくれた方、ありがとうございます

>>432
flush()を呼ばないと書き込まれずにデータが残る恐れがある、と本には
書いてあるんですが…

>>433
>>434
分かりました
436デフォルトの名無しさん
垢版 |
2018/05/05(土) 22:50:45.34ID:fekIGidl
>>435
どこの本じゃおらあああ!!!
説教してやるわ!
>>433さんお願いします
437431
垢版 |
2018/05/05(土) 23:14:03.22ID:6mpGGgHw
>>436
有名な、「スッキリわかるJava入門 実践編」です
該当箇所(p252)を引用します

「…flush()を呼び出さないとファイルに正しくデータが書き込まれないことがある
からです。
 実は、write()メソッドはデータの書き込みを要求するだけの命令であり、
呼び出したらすぐにファイルにデータが書き込まれるとは限りません。
これはファイルの読み書きを高速化するためのバッファというしくみによって、
後でまとめて書き込み処理がされることがあるためです。…」
2018/05/05(土) 23:14:53.02ID:ukbnMY+E
普通はcloseの内部でflushが呼ばれるか同等の処理がされるから、
きちんとcloseするプログラムの場合は明示的なflushは不要。
439431
垢版 |
2018/05/05(土) 23:44:43.67ID:6mpGGgHw
>>438
そうなんですか?
ありがとうございました
2018/05/05(土) 23:56:03.71ID:95YSYNlN
flush していないと、電源断・強制終了時に、書き込まれない

何秒おきに、flushされるかなどの設定は、
Java と言うよりは、OS・外部装置の挙動
2018/05/06(日) 00:07:10.53ID:GsL2vTC2
また35歳来てるのかよ
442デフォルトの名無しさん
垢版 |
2018/05/06(日) 00:14:34.04ID:iIP+eAYQ
flush使うのはログとかで途中経過を確実に見たいときだな
2018/05/06(日) 04:49:26.60ID:Bse1bLkg
flush() があった方が良いのは BufferedOutputStream や BufferedWriter のインスタンス経由で
出力していて尚且つ close() するよりも前に今まで出力した分がバッファから全て出力されて
欲しい場合だろう。そうでないのなら普通は無意味、というか、Bufferedでないクラスなら多分
何もしていない。(バッファがないなら flush() も何もないからね)。

>>431のプログラムの場合 FileOutputStream を作っているだけなのでバッファリングはされて
おらず write() した直後に書かれている筈だ。更に終わったらすぐに close() するだけなので
たとえバッファリングされていたとしても close() 前に flush() をする必要はない。

ただ問題は1バイトづつ読んだり書いたりするようになっていて非常に効率が悪いことだ。
入出力は両方ともこんな風にバッファリングされるようにした方が良い。

InputStream is = new BufferedInputStream(url.openStream());
OutputStream os = new BufferedOutputStream(new FileOutputStream("dj4.ico"));

更に読み書きする部分も以下のように自分でバッファ作ってまとめて読んでまとめて書くようにした方が良い。
(1000である必要はない。もっと大きくても良い)。

byte[] buf = new byte[1000];
int n;
while ((n = is.read(buf)) > 0)
 os.write(buf, 0, n);

こうした時の速度差は何Mバイトとか何Gバイトもの大量のデータを扱うと分かると思う。
(但しJavaコンパイラやJITの最適化、およびJavaVMやOSやハードウェアの進歩により
将来的にはどう書いても速く動くようになる可能性はある)。
2018/05/06(日) 08:27:00.47ID:6iNSfcwx
FileOutputStreamはJava側ではバッファリングしていないが
OS側のファイルシステムがバッファリングしてる場合もあるので、
flush呼び出しで明示的にディスク書き出しを指示できるので完全に無意味って事はない。

ただしディスク書き出しを指示するっても指示された側が直ちに実行するとは限らない。
典型的にはflushの呼び出しが終わった時には書き出しが終わっている事が期待されるが
実際にはディスクアクセスの優先順位待ちとかでflushの呼び出しが終わった時点でも
ディスクへの書き出しが終わってないとかそーゆーケースはある。
2018/05/06(日) 11:03:17.43ID:6iNSfcwx
FileOutputStreamだとflush上書きしてねーから>>444はウソだったわ。
2018/05/06(日) 16:44:24.01ID:Bse1bLkg
Java 側で FileOutputStream を使っていても OS 側で密かにバッファリングされていた場合は
Java の方からではどうすることもできないかもね。

ま、実際今時のOSだとディスクに対するライトキャッシュはデフォルトではONになっているのが
普通だろうからどんなプログラムでも(Javaであろうがなかろうが)OSのシステムコールの write()
直後にディスクに書かれていないことはあり得る。但しその場合は write() 直後に read() すると
あたかもディスクから読んだかのように書いた内容が読める。しかしいきなり電源が落ちると
ディスクに書いてない分の内容は失われる。

これを防止する方法は Linux ならシステムコールの sync() を呼ぶか sync コマンドを
実行れば良いのだが、しかし他のOSでは違うやり方になるだろう。統一された方法はない。
大雑把に UNIX 系 OS だと sync() でやると昔からの慣習で決まっているだけ。同じUNIX系
OSでも違う場合もあり得るし特殊なハードウェアのディスクの場合は違うかも知れない。

などという細かい事まで考えないといけないぐらい高度な要求があることは滅多にないだろうが、
どうしてもそこまで考えて作らねばならない場合は本当に Java だけで実現できるのか、または
Javaで作ることは適切かを事前によく検討した方が良いと思う。
2018/05/06(日) 23:24:51.40ID:LrvTqzkb
Linux では、アイドル時間を利用して、5秒毎にデバイスに書き込んでいるけど、

SSD の寿命対策で、書き込み回数を減らしたい場合に、
15秒毎とかに設定することもある

またデバイスも、バッファ・キャッシュを持つから、
バッファに書き込んだ時点で、OS に書き込み完了を知らせるかも知れない。
ここで電源断すると、デバイスに書き込まれない

まあ、デバイスの設定は、よく知らないけど
2018/05/07(月) 11:28:57.25ID:sRlF3JnI
作成するアプリの規模にもよるかもしれませんが、
非同期処理を安全に書くために調べたら数年前まではRxJavaが流行りそうって記事が多いけども、
今はAsyncTaskとかで十分なのかな?
449デフォルトの名無しさん
垢版 |
2018/05/10(木) 20:09:13.57ID:2zvsPgeN
Javaについてこの理解であってますか?
1 ソースコードは互換性がありどのJDKでもコンパイルできる
2 バイトコードは互換性がありどのJVMでも実行できる
3 JREやJDKはJVMとクラスライブラリを含む
450デフォルトの名無しさん
垢版 |
2018/05/10(木) 20:17:53.23ID:+tTPUtlU
>>449
教科書読めやハゲ
451デフォルトの名無しさん
垢版 |
2018/05/10(木) 21:02:09.83ID:CK5Copcn
>>449
大雑把にはそれでいいのだが標準ではないライブラリを追加して作られたプログラムはそれの無い環境では当然コンパイルエラーになる。
コンパイル済みのクラスファイルやそれを入れたjarファイルの場合は足りないライブラリのせいで動かない。
2018/05/11(金) 08:49:44.16ID:CudJysns
>>451
そんな当たり前のことはどうでもいいから、>>449が正しいか間違ってるか、大雑把にではなく正確に答えろや
断言できる知識がないからって「大雑把に」とか言って保険かけんな
2018/05/11(金) 15:40:03.41ID:iIfcglOt
やかましいわ!
2018/05/11(金) 15:45:41.92ID:Z82lyl/Y
1. 完全な互換性はないので同じソースコードが全てのJDKで必ずコンパイルできるとは限らない。
2. 完全な互換性はないので同じバイトコードが全てのJVMで必ず実行できるとは限らない。
2018/05/11(金) 16:21:23.17ID:UhEMsKag
>>452
当たり前ってわかってんなら>>449がどうかもわかるんじゃねーの?
2018/05/11(金) 20:24:20.11ID:Cbg+X5+f
Classクラスが持つメソッドについて質問です。
メソッドを取得するgetDeclaredMethod()やコンストラクタを取得する
getDeclaredConstructor()の引数に、Class<?>型が含まれているのですが、
何故この型なのでしょうか?
intやdoubleなどの基本型を取る場合もあると思うのですが…。
2018/05/11(金) 20:59:28.55ID:PddvfNsl
基本型を指定したい場合、ラッパークラスの.TYPEを使うんだ
intの場合Integer.TYPEとかそういう感じで
458デフォルトの名無しさん
垢版 |
2018/05/11(金) 23:49:17.69ID:BkhZdaXW
>>452
わかった。じゃあ厳密に答えよう。こうだ。

1 ×
2 ×
3 ○
2018/05/12(土) 00:44:10.56ID:zFimtC1H
>>456です。

>>457
ありがとうございます。

本によると、int.classとか見慣れない表記をしているのですが、
これでもよいのでしょうか?
2018/05/12(土) 10:16:25.78ID:UEBc/Ia0
>>459
>>457がぼけてただけだわ、int.classでよす
https://ideone.com/Xc37lP
461456
垢版 |
2018/05/12(土) 23:06:04.87ID:zFimtC1H
>>460
ありがとうございます。
int.classやlong.classなど、基本型名.classは何型になるのですか?
2018/05/13(日) 20:17:09.11ID:VaYQl2tk
レイアウトについて質問させてください。

(1)
Container contain = getContentPane() ;
contain.setLayout(new BoxLayout(contain, BoxLayout.Y_AXIS));
contain.add(new JButton("ボタン1")) ;
contain.add(new JButton("ボタン2")) ;

(2)
Container contain = getContentPane() ;
contain.setLayout(new BoxLayout(contain, BoxLayout.Y_AXIS));
contain.add(new JButton("ボタン1")) ;
JPanel p = new JPanel() ;
p.add(new JButton("ボタン2")) ;
contain.add(p) ;

(1)ではボタンが二つとも左端に表示されるのですが、(2)は両方とも真ん中になります。
なぜ両方とも左寄せにならないのか悩んでます。これってどうしてですか?
2018/05/13(日) 20:36:34.00ID:ZtGqqYsK
見たことない書き方だな
普通にレイアウト書いたらあかんの?
静的でも動的でもいいけど
464デフォルトの名無しさん
垢版 |
2018/05/13(日) 21:31:40.32ID:v233urWy
>>462
JButtonは、alignmentXのデフォがLEFT_ALIGNMENT
JPanelは、alignmentXのデフォがCENTER_ALIGNMENT

JPanelのalignmentXにLEFT_ALIGNMENTを設定したら
JButtonが左に寄った

BoxLayout内のコンポネントは独立して配置されるわけじゃないみたい
わしにはよくわからん
2018/05/13(日) 23:14:48.90ID:VaYQl2tk
>>464
ありがとうございます。でもそれだとボタン1は左に寄るんですけど、ボタン2はまだ真ん中なんですよね。
でも p を boxlayout.X_ASIS にしたらボタン2も左に寄りました。
でもなぜそうなるのか、何が何だか分からない。

Container contain = getContentPane() ;
contain.setLayout(new BoxLayout(contain, BoxLayout.Y_AXIS));
contain.add(new JButton("ボタン1")) ;
JPanel p = new JPanel() ;
p.setAlignmentX(Component.LEFT_ALIGNMENT);
p.setLayout(new BoxLayout(p,BoxLayout.X_AXIS));
p.add(new JButton("ボタン2")) ;
contain.add(p) ;

あと

p.setLayout(new BoxLayout(p,BoxLayout.Y_AXIS));
p.setLayout(new FlowLayout(FlowLayout.RIGHT)) ;
p.setLayout(new FlowLayout(FlowLayout.CENTER)) ;
p.setLayout(new FlowLayout(FlowLayout.LEFT)) ;

とか、あとボタンをさらに加えたり、色々試してみるんですが、よく分からない。
2018/05/15(火) 18:37:33.48ID:IdPDIHX7
正規表現について質問なんですけど、

String str = "会社名( 多久比禮志神社 )、住所 ( 富山県富山市塩689 ) のウェブサイトを探し、そのウェブサイトのURLを入力してください" ;

ここから会社名と住所を取り出したいんですけど、

Pattern pattern1 = Pattern.compile("[(] .* [)]");

これだと

( 多久比禮志神社 )、住所 ( 富山県富山市塩689 )

が取り出されるんですけど、何が悪いんでしょうか?( 多久比禮志神社 )と、( 富山県富山市塩689 ) を別々に取り出したいんです。
2018/05/15(火) 19:13:56.71ID:JYHluoOt
[( ].+?[)]
2018/05/15(火) 19:16:56.51ID:18kCbkVn
>>466
最長一致とかでググれ。

Matcher m1 = Pattern.compile("a.*b").matcher("ababab");
Matcher m2 = Pattern.compile("a.*?b").matcher("ababab");

System.out.println(m1.find() + " " + m1.group());
System.out.println(m2.find() + " " + m2.group());
469デフォルトの名無しさん
垢版 |
2018/05/15(火) 20:52:24.90ID:r6+CqG6i
>>466
こうかねえ

\\((.*?)\\)\\((.*?)\\)
470デフォルトの名無しさん
垢版 |
2018/05/15(火) 20:53:43.49ID:r6+CqG6i
あ、まつがえた
こうだな

\\((.*?)\\).*?\\((.*?)\\)
2018/05/15(火) 20:55:15.80ID:JYHluoOt
俺のレスが見えないのか馬鹿ども
無駄な駄レスをまき散らすなアホ
472デフォルトの名無しさん
垢版 |
2018/05/15(火) 21:36:26.05ID:4HBr8Nk+
\\(([^)]+)\\)
2018/05/15(火) 22:08:48.50ID:JYHluoOt
  ∧∧
 (д´*)
 (⊃⌒*⌒⊂)
  /_ノωヽ_)
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況