Java入門・初心者質問スレ Part.3 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/04(火) 20:41:11.59ID:y0EcmGB0
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.2
http://echo.2ch.net/test/read.cgi/tech/1478863511/
2017/05/18(木) 18:07:21.85ID:pcJKb7uP
>>435
listは意味なくない?
2017/05/18(木) 18:10:00.52ID:pcJKb7uP
>>432
おけ
2017/05/18(木) 18:11:30.15ID:pcJKb7uP
>>433
なるほどねー
2017/05/18(木) 19:53:57.62ID:YsT8kXyi
>>435
わかりました
初心者はあまり疑問に思わずにとにかく慣れた方が良さそうですね
もうちょっと詳しくなってから改めて考察します
2017/05/18(木) 20:45:03.53ID:41k9t0yi
paizaってサイトいいですか?
2017/05/18(木) 21:28:09.31ID:6GwfJscL
>>441
34歳には向いてません
2017/05/18(木) 21:32:18.96ID:mhJy8/8/
paizaっつーか競技プログラミングにJavaは相性悪くないですかね?
444441
垢版 |
2017/05/18(木) 23:50:40.17ID:41k9t0yi
34歳板の住人以外の方からのレス、お待ちしています。

>>443
競技プログラミングなんですか?誰が速いとか競うんですか?
2017/05/18(木) 23:56:50.39ID:GHcWpog8
>>444
34歳板って何?
スレチにつき誘導

【CodeIQ】コーディング転職 2社目【paiza】 [無断転載禁止]©2ch.net
http://tamae.2ch.net/test/read.cgi/prog/1495051565/
446441
垢版 |
2017/05/19(金) 00:51:55.16ID:os6zJ8mg
>>445
スレ違いでしたか、すいませんでした。
リンクありがとうございます。
2017/05/19(金) 04:01:57.36ID:7cLMvP3Z
画像を読み込み、それにスタンプを張り付けて保存するGUIツールを作っています。
JFrameの左側にはコントローラーとして動作するJPanel、右側には読み込んだ画像とスタンプを表示するJPanelを配置しています。
コントローラーの操作によって画像を新しく読み込むたびに右側のJPanelを破棄し、新しいJPanelを生成するようにしたいのですが
これを実現するのに今考えているのは、コントローラーのインスタンスのフィールドにJFrameへの参照を格納しておき
コントローラーのイベントリスナーで新規読み込みを受け取ったら、JFrameからJPanelをremove()、ついでnewする、というものです。
2017/05/19(金) 04:05:15.30ID:7cLMvP3Z
続きです。

JPanelを再生成するためだけに3つのクラスをまたぐ、というのがどうもスマートに思えません。
可読性やメンテナンス性も悪い方法だと思うのですが、これ以外に良い方法が思いつきません。
もっと良い方法があるのか、それともそもそもの構造が悪いのか、どうかアドバイスをお願いします。
449デフォルトの名無しさん
垢版 |
2017/05/19(金) 04:40:07.52ID:Yy4p2hUQ
>画像を新しく読み込むたびに、
>右側のJPanelを破棄し、新しいJPanelを生成する

一々、パネルの破棄・生成を繰り返さなくても、
画像を再読み込みすれば、良いのでは?

has-a だろ。
フレームは、複数のウィジェット(UI コンポーネント)を持つ

フレームの作成(JFrameクラス)
https://www.javadrive.jp/tutorial/jframe/
2017/05/19(金) 04:58:05.99ID:7cLMvP3Z
ありがとうございます。

右側のパネルは、JPanelを継承したクラスのインスタンスで、読み込んだ画像の表示やスタンプの情報の保持を行っています。
画像を新しく読み込む場合、それらの情報のクリアもする必要があるので、パネル自体を破棄し再生成したほうが楽ではないかと思ったのです。
それよりも、すべての情報をクリアするメソッドを用意しておき、画像読み込みと同時にそれを呼ぶようにすべきでしょうか?
2017/05/19(金) 06:24:16.60ID:Yy4p2hUQ
厳密に言えば、パネルの破棄・生成を繰り返すのは、
GCの仕事が増えるだけで、無駄だけど、

回数が少ないのなら、やりやすいようにすればいい
2017/05/19(金) 07:19:36.73ID:TEDPcFuO
>>450
すべての情報をクリアするって書いてるけど、クリアするのは画像の情報のリスト1つだけだろ?
もしかして継承したパネルの中にバラバラに情報もたせてる?
2017/05/19(金) 07:56:58.28ID:QxcdFIRu
3つのクラスをまたぐっていうのは、左JPanel内で
this.jFrame.rightJPanel = new RightJPanel()
みたいなことをしてるのかな?

JFrameにreadNewImage()を作って右JPanelのnewとかの処理はそこでして
左JPanelはreadNewImage()を呼び出すだけでってのはどう?
2017/05/19(金) 08:37:45.48ID:Yy4p2hUQ
左右のパネルが、相互に依存したら、ダメ

親 → 左の子
親 → 右の子

あくまでも、親から働きかけるようにする。
つまり、階層構造を浅くする

そうしないといずれ、スパゲッティ・泥団子のように密結合し、手に負えなくなる。
設計の基本は、疎結合
2017/05/19(金) 09:09:28.77ID:bDipVMhT
極力一元管理
456デフォルトの名無しさん
垢版 |
2017/05/19(金) 09:59:04.74ID:UcTeaZgR
上司を通さず別部署に仕事頼んじゃうのはまずいみたいな話か
2017/05/19(金) 15:02:46.01ID:7cLMvP3Z
>>451
そうなんですか・・・
やろうと思えば何度でも再読込はできるので、この方法はやめておきます。

>>452
パネルのフィールドとして、画像の縦横サイズ、スタンプのインスタンスなどを持っています。

>>453
それです。
コントローラーからの操作はすべてJFrameの持つメソッドから行うようにする、ということでしょうか?
2017/05/19(金) 15:27:47.14ID:V7EPUvXw
Javaだけで2chのスレ・レス取得、スレに書き込みできるのでしょうか?
2017/05/19(金) 15:39:32.26ID:gmSWrJbX
Javaだけで作られた専ブラが既にある、後は分かるな?
2017/05/19(金) 15:53:27.22ID:TEDPcFuO
>>457
そういうのはパネルのフィールドにばらまいてはダメなやつだよ
パネルは入れ物であって中身は中身でまとめて別に管理しないと

ついでに言うと、読み込んだ画像とスタンプは同じもの
読み込んだ画像って、ユーザが選択して重なり具合が常に最背面になってるスタンプだろ?
パネルにはList<ImageInfo>みたいなものを持たせて、Listの中身を並び順で画像表示するような設計でいい気がする
リセットはListを空にして再表示だし、複数スタンプもListに追加して再表示で終わるだろ
2017/05/19(金) 15:59:47.29ID:V7EPUvXw
>>459
あったんですね
thx
2017/05/19(金) 16:28:12.16ID:7cLMvP3Z
>>454
おっしゃるとおりだと思います。
現に、現在進行形で泥団子化しているような気がします。
自分でもなんとかしたいと思っているのですが、今まで手続き型のやり方でお茶を濁してきたツケで、オブジェクト指向的な考え方に馴染めず困っています。
例えば、左のパネルを操作して右のパネルに表示されている画像上にスタンプを追加する、というような操作を考えたとき、どのように実装すればいいかこんがらがってしまって・・・
教えてくれとは申しませんので、オブジェクト指向で書かれたGUIアプリケーションのサンプルソース集などはないでしょうか。
2017/05/19(金) 16:40:46.85ID:7cLMvP3Z
>>460
なるほど、画像やスタンプの情報もオブジェクトに閉じ込めてしまうのですね。
確かにそのようにすれば初期化や並び順管理も容易にできそうです。
今は画像上のマウスポインタのx,y座標を保存する変数などもバラバラになっているのですが、これもオブジェクトとして扱えば良いですね。
どうもありがとうございます。
2017/05/19(金) 16:54:03.15ID:8fy8h9zZ
>>461
ちなみにV2Cってやつ
2017/05/19(金) 18:11:40.44ID:V7EPUvXw
>>464
どうもです
466デフォルトの名無しさん
垢版 |
2017/05/19(金) 19:01:25.59ID:UcTeaZgR
>>464
V2Cは今では2chへの書き込みできないよな。
したらばとかの2chに似ている掲示板では書き込みできるが。
2017/05/20(土) 12:30:03.29ID:MUxe8l0w
パッケージ名とクラス名を同じにしないといけないってなんで?
調べても出て来なかったし、実際違う名前にしてみても問題なく動いた
2017/05/20(土) 14:15:46.69ID:PoJQGONs
>>467
クラス名とファイル名じゃないか?
2017/05/20(土) 15:40:52.53ID:MUxe8l0w
>>468
ああごめん
そうだった
でも結局それでも動いた
2017/05/21(日) 17:41:03.62ID:yzZ9l0t7
どうでもいいことかもしんないけど、is○○って、boolean型を返すメソッド名のみに使うべき?
boolean型の変数名に使うのはNG?
2017/05/21(日) 17:57:08.86ID:1QefLJTZ
>>470
OK、Javaはメソッド名とフィールド名を区別するから関係ない
2017/05/21(日) 19:27:03.36ID:wfwMepb4
>>471
動くか動かないかではなくて、命名規則的に好ましいか好ましくないかを聞きたいです
2017/05/21(日) 19:30:34.94ID:pUWFtSb1
悪くはないと思うよ,嘘ついているわけじゃないし
2017/05/21(日) 19:38:17.39ID:LHr6gtTw
人によるといわれたらそれまでなのですが、三十代プログラミング経験無しが業務で使えるようになるにはどれくらいかかると思いますか?
2017/05/21(日) 19:47:45.48ID:zNfd0kUp
出来るからって区別しないのはキモい。
日本語で変数書いても悪く無いけど、キモいでしょ。
俺俺ルールならメソッドはisXXX。
変数やフィールドはXXXflgとかXXXflagとかにしてたな。

bool型の変数やフィールドにこう付けろって慣習はJavaは無かった気がする。
Cだとflgやflagで付ける慣習(ってほどでも無かったけど)あったから、おいらはJavaでもそうしてただけだが。

ずっとずっと昔の話だが。。。
2017/05/21(日) 19:48:50.69ID:RUGjRrqs
>>474
スレチ
てゆうか君>>441とか>>348の人でしょ
なんでJavaスレでそんな質問するんだよ
スレタイ読める?
ここはJavaの初心者スレであってネット初心者スレではないんだけど
2017/05/21(日) 19:49:58.64ID:Ku4JySDo
人によるし業務によるとしか
なんの根拠も無いけど半年を目安にして貰ったら良いんじゃないかな
2017/05/21(日) 20:00:57.93ID:zNfd0kUp
>>474
まあ長くて一年で才能ある人は何かしらゲーム作れてるよ。
ジャンケンとかの簡単なのじゃなくて格ゲーみたいなの。
具体的には同級生がそう言う人種。
2-3ヶ月で作れてた気もするが。

一年で出来ない奴は、おいらみたいに10年経ってもショボいツールしか作れない。
2017/05/21(日) 20:36:10.10ID:KT6Xsd7k
>>476-478
申し訳ありません。
業務と平行しながら勉強してるのでここでいいかなと思いまして。

なかなか身に付かず焦って質問してしまいました。半年から一年を目処に頑張ります。
2017/05/21(日) 21:17:08.99ID:8VZiX6Z0
>>479
次からはこっちで質問すると良いよ。

スレ立てるまでもない質問はここで 147匹目 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1490436082/
2017/05/22(月) 08:09:37.82ID:rV93qz9q
Windows+Java環境下でFFTを計算したいのですが感染性が無く再配布可能なライセンスのライブラリってありますか?
2017/05/22(月) 09:22:38.69ID:4kDceHI4
>>481
ググったらファイナルファンタジータクティクスが出てくるぞ?
それの何を計算するんだ?(笑
とか言われないように略称じゃなくてきちんと書けやアホ

あとなぜライセンスにこだわるんだ?
作ったもので金とるからって理由なら調査費用くらい惜しむなよ
2017/05/22(月) 09:29:07.58ID:mjjAkcu0
高速フーリエ変換通じないのは流石に通じない方が悪いし、通じない奴は質問の対象者じゃないんだから黙っとけよ
484デフォルトの名無しさん
垢版 |
2017/05/22(月) 10:30:45.35ID:1JJhboIc
プロゲートで無料のぶんだけひととおりやったんですがこんな単純なものだけで組み合わせたら色々できるの?
2017/05/22(月) 10:57:24.88ID:cucl6upm
プログラミングは言語は何であれアイデアや応用の世界だからな
486デフォルトの名無しさん
垢版 |
2017/05/22(月) 11:14:41.72ID:tvdR/xt5
「アホ言うやつがアホ」という言葉がまた証明されたようだな
2017/05/22(月) 12:09:31.25ID:P/AfA+PI
>>482
そんなこと言うやつがクソだろ
488デフォルトの名無しさん
垢版 |
2017/05/22(月) 14:14:19.86ID:1JJhboIc
難しいものを作るには難しいプログラムが必要じゃなくて簡単なものの組み合わせ方って言うことなの?
2017/05/22(月) 14:23:39.87ID:cucl6upm
何をイメージして難しいとか言ってるんだ?
490デフォルトの名無しさん
垢版 |
2017/05/22(月) 14:53:57.12ID:d6K1UVaP
ま、そうだな。難しい漢字みたいなものだ。
分解すると一つ一つは簡単なカタカナみたいなやつでしかない。
2017/05/22(月) 16:08:03.03ID:3W7nNBo7
難しいものってのが何なのかによるんじゃないかね
計算量が膨大なものならそれなりに難しいアルゴリズムも必要になるだろうし
Javaでそこまで踏み込むかはわからんが
2017/05/22(月) 16:23:53.42ID:PfanrHfD
>>481
これなんかどう?
http://hp.vector.co.jp/authors/VA046927/fft4gjava.html
2017/05/22(月) 19:43:15.47ID:rV93qz9q
>>492
おぉ、ありがとうございます。試してみます
2017/05/22(月) 20:00:29.53ID:Zgh5eQVH
>>482
FFTもしらないなんて‥
2017/05/22(月) 20:02:50.44ID:Xg9/hZFe
>>482
一番上に高速フーリエ変換のWikiが来るじゃねーかw
2017/05/22(月) 20:10:28.65ID:mjjAkcu0
Googleって検索者がよく調べてるものの関連のものが上に来るんだっけ?
2017/05/23(火) 04:57:47.00ID:ZEoEO5ey
FFT っていう単語を知らないなら、さすがにヤバイ、レベル

Matlab などの数値計算なら、Python

tmpnb
Jupyter Notebook (IPython)
2017/05/23(火) 19:41:11.76ID:i368ua84
Rubyのpメソッドみたいに
変数の中身や配列の中身を手軽に確認できるメソッドって無いのでしょうか
特に配列の中身を確認する方法が分からず、デバッグをする際に苦労するのですが・・・・・・
2017/05/23(火) 20:01:14.31ID:nu8Noumz
>>498
Arrays#toStringもしくはArrays#deepToString使えばおk
RubyみたいにpはないけどIDE使えばsysoutとかsoutから補完できるぞい
2017/05/23(火) 20:01:46.83ID:0KCdNJNi
Arrays.toString(調べたい配列)をよく使うわ
2017/05/23(火) 20:26:13.35ID:nu8Noumz
そういやスタティックメソッドだから#じゃなかった
2017/05/23(火) 20:52:26.34ID:+maOq34X
日付と時刻を表示するプログラムを作ったのですが、時間の表示がおかしいです。
なぜでしょうか?
https://ideone.com/Osdsox
2017/05/23(火) 21:00:51.52ID:i368ua84
>>499
ありがとうございます
その二つを使ってチェックしていきたいと思います

>>502
デフォルトだと日本時間ではなく、グリニッジ標準時間 (GMT)になるので
時差の分ずれてると思われます
2017/05/23(火) 21:02:43.60ID:IEg1DOoE
>>502
IDEONEの鯖のタイムゾーンがGMT仕様だからじゃないかな、多分手元で実行すれば大丈夫
2017/05/23(火) 21:03:25.21ID:IEg1DOoE
あ、すまんこれシステムのタイムゾーン取ってるわけじゃないのか
506デフォルトの名無しさん
垢版 |
2017/05/23(火) 21:15:24.77ID:RzWtz9Yc
ほんとだ
https://ideone.com/qKqvOz
507502
垢版 |
2017/05/24(水) 00:25:16.54ID:PoyHH2+7
レスをくれた方、ありがとうございました。
>>506の方のリンクやスッキリJava実践編を参考に改良してみたいと思います。
2017/05/24(水) 17:28:31.44ID:rgjqqiZm
https://ideone.com/TgG170

配列の中身を拡張for文表示させようとした際に
上記のように上手く行かないのですが、なぜなのでしょうか?
2017/05/24(水) 18:14:51.41ID:oppUfTVj
>>508
System.out.println(i);
2017/05/24(水) 18:51:24.14ID:NmDuToTQ
>>508
その文脈でのiはループ変数ではなく配列のそれぞれの要素そのものだから、>>509の書き方をすればいい
まぁそもそもループ変数じゃないんだからiなんて名付けちゃいかんね
nくらいにしとくといいよ
2017/05/24(水) 19:16:31.99ID:rgjqqiZm
>>509>>510
ああ、ループ変数ではなく、そのまま要素になるんですね
混同してしまいました
勘違いしないようにもっと分かりやすい名前をつけるようにします

ありがとうございました!
2017/05/24(水) 19:57:10.67ID:2FV//qQH
拡張for文をちゃんと理解して
numsから要素取り出してるだけだから
iは1,2,3でnum[i]は2,3,範囲外例外になってるだけだよ。
2017/05/24(水) 23:15:42.47ID:CMr8dFBK
propertiesファイルを読み込んで、そこからenumを生成するようなことは可能ですか?
つまり

#Animals.properties
enums=DOG,CAT,HUMAN, ...

と書かれたファイルを読んで

enum Animals {
    DOG,
    CAT,
    HUMAN,
    ...

となるようにしたいのですが
514デフォルトの名無しさん
垢版 |
2017/05/24(水) 23:21:34.43ID:0Qc+9z9K
   ∩___∩
   | ノ      ヽ
  /  >   ● |    ムリ☆
  |    ( _●_)  ミ
 彡、    |∪|   )
/      ヽノ //
ヽ|       /
 |       /
 ヽ /  /
  / /ヽ
(´_ /ヾ_)
2017/05/24(水) 23:30:40.23ID:CMr8dFBK
やはり無理ですよね・・・
ありがとうございました。
2017/05/26(金) 09:43:02.44ID:AcHukEBi
型のメソッドdatetime(Timestamp)は引数(Timestamp)に適用できませんって出るんだけどどうしたらいいのか教えてください
2017/05/26(金) 12:02:24.51ID:eKd8m2Nz
適用できないのでどうしようもありません
2017/05/26(金) 12:47:00.31ID:7lZclfT9
違うpackageのTimestampを引数に使ってるんじゃね?
2017/05/26(金) 12:52:15.67ID:R5Fz6uU5
ideoneにでもソース上げた方が早そう
2017/05/26(金) 13:53:37.24ID:AcHukEBi
>>518
うん、違うパッケージで書いたゲッター、セッターに値を入れようとしてる
2017/05/26(金) 14:15:00.54ID:eKd8m2Nz
アホの子かな?
2017/05/26(金) 14:23:54.10ID:AcHukEBi
ごめん、間違ってた同パッケージ内の他クラスに値を入れようとしてるんだ
2017/05/26(金) 15:05:41.68ID:AcHukEBi
解決しました。どうやらTimestampのimportが間違ってたみたい
2017/05/26(金) 17:56:19.31ID:jskRO0Qi
FFT の本を買って読むのが一番だと思うが、Java で出版されているのはあるのかな?
https://www.amazon.co.jp/dp/4789830322/
2017/05/27(土) 05:57:17.98ID:IXLLFPSU
テキスト読み始めて1ヶ月が経過した初心者なのですが
プログラムを書く練習の為にお題や解答等が
記載してある良いサイトがあれば教えて頂けないでしょうか。
2017/05/27(土) 06:40:26.62ID:I4+BI8Pi
>>525
AOJ
2017/05/27(土) 17:51:11.88ID:3U461hCt
新わかりやすいjava入門編というものを進めてきてオブジェクト志向に入り案の定つまづきました
そもそもクラスとメソッドというのがよくわかりません。色々なサイトを見ているとクラスというのはオブジェクトの設計書なる説明が目立ちます
HelloWorldなりif文なりをクラスの中に書いてきましたけど別にオブジェクトの設計書なんて作った覚えがなくてこれはどういうことかと
メソッド(=関数)がまとまったのがクラス(=プログラム)で、クラスがまとまってパッケージ(=大きなプログラム)になるくらいの認識だったのですが……
2017/05/27(土) 18:03:31.28ID:WiwmRK76
ただメソッドをまとめたものじゃなくてクラスのインスタンス内にはフィールドによる状態があるからね
2017/05/27(土) 18:28:20.46ID:5U21Fkdq
クラス=実在しない脳内の中の紙切れ。設計書でも何でもない
インスタンス=実在する紙切れ。いくらでも複製可能
2017/05/27(土) 18:43:41.59ID:5U21Fkdq
static修飾子=脳内の紙に思い描いただけでそれにアクセスすることができる魔法の言葉

つまりウンコ変数やチンコ変数またはマンコメソッドなどを
脳内で想像しただけで既に実在することになるが複製はできない
2017/05/27(土) 20:45:17.11ID:899ucGB1
>>526その他の方
525の人ではないですが、
日本語のサイトでは無いですかね?英語が読めないもので…。
2017/05/27(土) 20:46:45.03ID:WiwmRK76
AOJなら一部ページ除いてちゃんと日本語が用意されてるよ
2017/05/27(土) 20:47:26.42ID:bQ1clPq0
>>531
https://paiza.io/ はどうだったかな?前に問題解いた記憶があるんだが、答えはあったかどうか忘れた。
2017/05/27(土) 21:20:33.59ID:3U461hCt
>>528->>530
説明ありがとうございます。さっぱり解らないのでやはりjavaは自分には早かったようです……
2017/05/27(土) 21:37:32.99ID:583uXQeo
プログラマで英語読めると読めないじゃ得られる知識に天と地ほどの差があるから、真面目に英語覚えた方がいいぞ。
2017/05/27(土) 21:41:43.89ID:HQTdzCti
>>531
>>348
2017/05/27(土) 21:54:13.93ID:WqZ7Atlq
>>531
会津大学が運営だぞ……さすがに日本語対応してることくらいは気づいてくれ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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