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/12(金) 21:02:08.92ID:84Td0x+H
>>341
シェルスクリプト等のバッチ処理でコマンドが正常終了したとかの判定に使われるステータスだからそういう用途に使うならちゃんとしとけ、それ以外なら適当でいい
2017/05/12(金) 23:25:25.16ID:Otw8y3gH
>>342 >>343
例えば、ジャンケンをするプログラムです。
https://ideone.com/EK5omF
このように気軽に用いてよいでしょうか?
2017/05/12(金) 23:29:51.49ID:84Td0x+H
>>344
おk、UNIXのコマンドで実際にヘルプ出した後に1返すやつあるし
346326
垢版 |
2017/05/13(土) 01:04:29.17ID:0v4JDuG/
>>345 >>他レスくれた方
ありがとうございました。気軽に使おうと思います。
347デフォルトの名無しさん
垢版 |
2017/05/13(土) 13:16:21.43ID:nXg2xudY
あー。学校の課題かな?
これから switch 習うところみたいな。
2017/05/13(土) 15:09:30.58ID:nn66e6lH
>>347
>>326はプログラマ目指してる34歳発達の無職だよ
あんまり相手にしない方がいい

↓のスレの774とIDが一致

ねねっちと一緒にプログラムを勉強するスレ第2話 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489809785/

↑と↓でトリップが一致

34歳、発達障害の無職ですが…5 [無断転載禁止]©2ch.net
http://tamae.2ch.net/test/read.cgi/prog/1492326920/
2017/05/13(土) 15:20:15.97ID:AEmw9vXq
Javaリファレンスを読み始めたのですが
フィールドのサマリーやメソッドのサマリーというのは一体なんなのでしょうか?
java.lang.Systemを見るとフィールドのサマリーの方は
System.[out]←これの事を説明しているのは分かったのですが
メソッドのサマリーの方は検討もつかず・・・・・・
350デフォルトの名無しさん
垢版 |
2017/05/13(土) 16:33:51.59ID:nXg2xudY
>>349
サマリーって要約だろ?
それが何か?
351326
垢版 |
2017/05/13(土) 16:58:01.94ID:0v4JDuG/
>>348
あー余計な事書かないでー。

なんかすいません、学生じゃないんです。
ここは速やかに返答が得られるので、使わせて頂いてます。
2017/05/13(土) 17:03:10.28ID:AEmw9vXq
>>350
あ、本当にただの要約なんですね
わざわざ「サマリー」で表記してあったので、てっきり特別な意味があると思ってしまいました・・・・・・
2017/05/13(土) 17:38:29.56ID:GZKqOPY+
>>352
Javaのリファレンスって、翻訳が直訳気味だから、英語の方読んだ方がマシな場合もあるよ
2017/05/13(土) 22:39:40.42ID:a+Yyd3LZ
今はmetbeansを開いてメインメソッドを書いて、ファイルの実行ボタンを押して起動させてるけど
ファイルをダブルクリックで開いたらこのアプリケーション起動、みたいなコマンドって作れる?
Fileクラスでオープン、そしてテキストファイルに書き込みとかは一応出来るようになった
2017/05/13(土) 23:32:38.00ID:GC0/nJum
それはOSの機能。
ファイルにアプリを関連付ける。
2017/05/13(土) 23:34:07.61ID:GC0/nJum
あと、ダブルクリックで起動するGUIアプリはJavaだとJarファイル作る。
作り方はググってくれ。
2017/05/14(日) 09:13:39.78ID:GiIrdLHV
NETBEANSなら自動でJarファイル作るけど、
自作のJarを継承したりするとJarの中にフォルダを作って入れてはくれないので、
やっぱり自分で作るかな
358デフォルトの名無しさん
垢版 |
2017/05/14(日) 17:33:23.51ID:QSKs3vuK
>>354
>>316
2017/05/14(日) 22:40:11.72ID:neLc5GA+
トランプを作りたいのだが多次元配列で組み合わせようと思ったけど結局1をAにしたり11、12、13をJQKにしたり、
あとは例えば二枚のカードを合計するってなった時は2+3とかじゃなくてハートの2たすクラブの3っていう感じになって計算ができないんじゃ無いかってところで行き詰まってる
ネットで調べたらenumって出てきたけど最後に;を記述してないし使い方がよくわからないのだ

何か知恵を貸してくれないか

欲を言えばトランプの絵の中にそれら配列(もし配列を使うとしたら)の要素一個一個に当てはめる的な事もしたいけどそれはまた後で調べる、これは出来るかできないかだけでいいから教えてくれ
2017/05/14(日) 22:41:34.73ID:neLc5GA+
トランプのどんなゲームにも使えるカードクラスって簡単に定義可能なの?
2017/05/14(日) 22:52:56.19ID:ztp16LZQ
>>360
Suits列挙とNumber列挙、それらを持つCardクラス作るだけやん
2017/05/15(月) 00:22:18.88ID:F3iBT9nS
>>360
例えばハートの6とクラブの9を足して15にできる?多次元配列でint 部分の配列を取り出す事とかできるの?
2017/05/15(月) 00:28:40.14ID:oAljGLAm
>>362
二次元配列でも良いけど
そういうのだったらHashMap使った方が早くね?
2017/05/15(月) 01:05:18.25ID:F3iBT9nS
>>363
どうして?HashMapって配列番号を文字にしただけでしょ?
2017/05/15(月) 01:14:15.51ID:Hm7XRpaa
javaやってるのに多次元配列使う奴なんて見たことない
c言語じゃないんだから
2017/05/15(月) 08:01:13.47ID:iwHegv+w
HashMapは文字通り中にハッシュテーブルを持っててそれを利用して探索するから配列を探索するよりとても速い
367デフォルトの名無しさん
垢版 |
2017/05/15(月) 10:32:21.13ID:WBt6bwRo
>>359
面倒なら数値だけでやればいいじゃん。内部では0〜51で値持っといて13で割った値が種別、13で割った余り+1がカードの番号みたいにして。
2017/05/15(月) 14:11:56.96ID:YV/XJMDJ
javaでif文を使って文字列か数字か判断する時の条件式って何?教えてくれ頼む!!
2017/05/15(月) 15:05:38.35ID:YV/XJMDJ
if(入力値 == String){
//処理
}else if {
//処理


上記のやり方じゃ駄目だよな?
2017/05/15(月) 16:29:33.70ID:oRDR+P6W
instanceof
2017/05/15(月) 16:31:44.87ID:+sV7Di0p
parseIntじゃだめですかい?
String input = "12345"

try
{
int i = Integer.parseInt(input);
} catch (Exception e) {

}
2017/05/15(月) 16:59:39.84ID:LmqNwbQD
>>368
入力値 instanceof Stringでおk
2017/05/15(月) 17:03:33.71ID:LmqNwbQD
>>368
間違えたすまん、371のやり方じゃないと
2017/05/15(月) 17:11:06.15ID:YV/XJMDJ
>>371 >>373
ありがとう。やっぱtry文でやらないと出来ないのか
2017/05/15(月) 17:36:48.54ID:9QbDhZRz
ルークregexを使え
2017/05/15(月) 18:11:19.72ID:Nyf5aX+C
1文字ずつ正規表現でチェックするとか
377デフォルトの名無しさん
垢版 |
2017/05/15(月) 21:23:38.19ID:94d7jC/v
>>366
Hash mapって確かに原理はわかるんだけど、hash関数にキーを通して得られた数値をアドレスにすると、アドレス飛び飛びになってメモリ効率悪くなったりしないのかね
2017/05/15(月) 21:32:58.19ID:iwHegv+w
>>377
直接アドレスにしてるわけじゃない
中に連結リストが数個あって得られた数値ごとに範囲分けしてそのリストに振り分けてる
連結リストの長さだったか要素数だったかが敷居値を超えると連結リストの数を増やして再構築する
大体こんな感じで実装されてるからハッシュ値が飛び飛びなのは問題ではない、むしろそうなるように推奨されてたはず
2017/05/15(月) 21:54:17.44ID:tcwc+G1E
int n=1;
int[] nums={0,1,2};
nums[0]=n;
n=5;

nums[0]=?

1でいいんだよね…?
2017/05/15(月) 22:28:53.11ID:iwHegv+w
>>379
せやで、参照を書きかえてるだけだからね
2017/05/16(火) 17:39:21.61ID:hRmrFLEJ
jar ファイル作ってみたのだが
netbeans上でファイルを実行したらちゃんと動くのにフォルダからそのファイルの場所まで行ってダブルクリックしても何の反応もないのだが

ウインドウがポップアップされるはずなのに何も出てこない、どうして?

それと質問なのだがこの処理を実行したら次はこの処理が実行されるみたいなのって全てメインクラスに書くものなの?
プログラムを動かすにはメインメソッドが必要だって書いてあったんだけどたとえばドラクエで、このどうくつにはいったら今度は洞くつクラスに移るみたいな
そういうのって一つのメインメソッドに書ききれるのかなとか前からすごい疑問だった

すっきりJavaを読み終えた入門者だがもし足りないのなら次に読むべき本とかあったら教えてほしい

文法を理解できたようで、enumクラスっていう新しい用語を使ってみると、どこからそれを呼び出したらいいのかとか全く分からなくなってしまう

例えば、いろいろなゲーム、トランプとかテトリスとか、そういうののソースコードを一から全て解説してくれる本とかあったら助かる

とりあえず実践をしたいのだがどうやって学んだ事を応用していったらいいのか全く分からない

誰か助け船を出してくれ
2017/05/16(火) 19:20:34.36ID:vjuQQ4tJ
>>381
ながい

→ダブルクリック実行はJava関係無くOSでjar拡張子の実行設定してるかどうか

→main()云々は作ってみたほうが理解が早い
CUIでいいからtodoアプリ作ってみ?
1でタスク一覧、2でタスク登録、3でタスク削除の3機能
DBとか無しで、アプリ落としたらタスク全部消えてなくなる感じ
これ作ったらmain()で全部書けるかどうかわかるだろう
2017/05/16(火) 19:57:51.53ID:p+PjrRhB
>>381
スッキリのオブジェクト指向の所から読み直しつつ
自分でソースコード漁りしてみると良い
オープンソースで一杯転がってるぞ
2017/05/16(火) 20:51:07.12ID:szD5YOp7
「テトリス入門」とかいう書籍を書いたら売れるかもしれないね
385デフォルトの名無しさん
垢版 |
2017/05/16(火) 21:51:28.05ID:46vWVqfK
>>384
しかしゲームのやり方しか書いてなかったりしてw
2017/05/16(火) 22:37:54.81ID:wKnc2Dey
>381
jarのくだり以外は何言ってるのか全くわからない
大丈夫かお前?
2017/05/16(火) 22:47:07.51ID:enwqrWLT
大学のjavaの授業で指定されたエディタがメモ帳に毛が生えたようなやつで、スクリプト言語しか触ったことない身には辛い
javaはIDEで書くものだと聞いてたんだけど、強い補完機能使わないほうが身につくものなの?
2017/05/16(火) 22:50:02.85ID:wKnc2Dey
身につかないっていうかメモ帳は時間の無駄
2017/05/16(火) 23:08:27.75ID:hRmrFLEJ
それと、APIリファレンスの見方が分からないのだが
Arrayのなかのメソッドのequalsで
public static boolean equals(int[] a,int[] a2)
って書いてあったから引数を二つ書くのかなって思って
equals(配列A,配列b);
って書いてみたらエラーになって

配列A.euqals(配列B);にしたらエラーが出なくなった

メソッドってクラスの「インスタンス変数.メソッド」って書くのか?とか考えたけどそのあとの
sort()を見てみると普通に
sort(配列);でやったら実行できた
調べ方っていうかリファレンスの読み方がわからない

あとこれはAllayListのサマリーのやつだが
boolean add(E e)
リストの最後に、指定された要素を追加します

これの修飾子と型がbooleanだったのだがなぜvoidじゃないの?
true,falseの要素がないと思うのだが
2017/05/16(火) 23:27:55.96ID:wKnc2Dey
ひっでぇ文だな・・
学生かな
2017/05/16(火) 23:53:20.25ID:hRmrFLEJ
>>382
Jdkのbinファイルを設定するって書いてあったんだけどjdkファイルの中にbinが見つからない・・・
2017/05/17(水) 00:11:58.28ID:a2t4m9UZ
配列はややこしいね
Arrays.equals(a1, a2)とa1.equals(a2)は別物だよ
後者は参照先の比較って言ったらそこら辺はスッキリで詳しく書いてるから分かると思うけど
あと戻り値は必ず変数に入れなきゃいけない訳じゃない
今回のに関してはAllayListの親クラスのCollectionがaddでbooleanの戻り値を返すってなってるからそうなってるけどAllayListでは多分必ずtrue返すようになってる?分かんないけど
Setとかでbooleanの戻り値使いたいからそうなってるんだろうね
2017/05/17(水) 00:19:21.93ID:Cj0bDaOf
>>392
その辺りが物凄く理解できない
やっぱり経験積んで必要な場面に当たるしかないのかな

できれば最初から文法をマスターしたいと思うんだけど難しいのかな
2017/05/17(水) 00:21:17.17ID:EKDDBUyo
Javaのリファレンスはすげえ読み辛いのが辛い所だな
実際の挙動書いてないし
2017/05/17(水) 00:45:10.55ID:aIm9uZNt
JavaScriptやPHPのリファレンス見てると何でメジャーどころのJavaのリファレンスがこのレベルなんだ…って思っちゃう
2017/05/17(水) 00:47:35.12ID:EKDDBUyo
各クラスの挙動を知りたいなら
個人ブログかQiita辺りを探した方が早いっていう何とも言えない現状
2017/05/17(水) 01:09:07.24ID:KDFx7HS2
リファレンスを見た後、サンプル・例などで検索すれば?
2017/05/17(水) 02:16:15.58ID:PX1bjgD6
Locale locale = new Builder()
.setLanguage("ja")
.setRegion("JP")
.setScript("Latn")
.setExtension(Locale.UNICODE_LOCALE_EXTENSION, "ca-japanese")
.build();

普通は
インスタンス名.メソッド名()などのようにドットでつなげると思うのですが
上のようなソースは、なんていう機能なのでしょうか。
ググりたいので、キーワードを知りたいです。
2017/05/17(水) 02:24:06.64ID:fdwvTzQk
スーパーバイリンガルダブルスタンダードジェネラルアクセッサ記法です
2017/05/17(水) 03:04:38.91ID:KDFx7HS2
JavaScript, jQuery などで、よく使う、メソッドチェーン

a().b().c()

メソッドを、this を返すように作っておいて、つなげていく
2017/05/17(水) 03:55:23.34ID:rtSwMeCb
HashMapの中身をfor文で取り出す処理のメカニズムがよく分かりません。
どなたか説明してもらえませんか?
@キーの一覧を取得
A各キーについて、対応する値を取得
と書いてはあるのですが…。
2017/05/17(水) 04:07:19.23ID:gPdRTvOW
>>400
なるほどです。
戻り値が、自分自身だからチェーンに出来るんですね。
勉強になりました。ありがとうございます。
2017/05/17(水) 05:09:57.57ID:Cj0bDaOf
スッキリジャバの入門編も読めばさらに理解が深まるかな?
2017/05/17(水) 05:10:53.79ID:Cj0bDaOf
間違い、実践編
2017/05/17(水) 07:04:43.87ID:oji8uaFL
javaリファレンスはカタコトの日本語だからまだしも、
androidなんて英語だから意味不明
2017/05/17(水) 08:22:36.48ID:+tyn5AAd
>>401
古典かよw 今時そんな取り方しない
どうしてもやりたいならMap#keySet()調べてみ

ついでにMap#forEach()もな
2017/05/17(水) 11:35:36.57ID:Hln6Xg1O
ファイル開くときにcloseかtry-with-resourcesを忘れないってのはわかったんですが、
BufferedReaderとかScannerで標準入力からテキストを読み込むときもこれは必要ですか?
2017/05/17(水) 12:12:09.07ID:+tyn5AAd
>>407
原則として標準入出力は閉じてはいけない
そのプログラム中で二度と標準入力を使わないようなタイミングなら閉じてもいいが…やらないな
2017/05/17(水) 12:24:57.57ID:+tyn5AAd
一応、System.inの正体はこれな
new InputStream(new FileInputStream(FileDescriptor.in))
410デフォルトの名無しさん
垢版 |
2017/05/17(水) 12:32:10.78ID:lfsZhYIw
>>407
不要だけどあってもいいんじゃね?
2017/05/17(水) 12:51:21.54ID:vBWq/bhA
無しだろ
最初から開いてるものだし
自分で開いたものなら閉じるべきだが
他人が開いたものを閉じるのは責務的に違うだろ
2017/05/17(水) 13:18:19.80ID:Cj0bDaOf
自分の好きな画像をguiで使うにはどうしたらいいの?
2017/05/17(水) 13:21:39.19ID:fdwvTzQk
好きな画像をGUIで読み込めばいい
414401
垢版 |
2017/05/17(水) 16:48:24.10ID:rtSwMeCb
>>406
調べてみます。
ありがとうございます。
2017/05/17(水) 23:44:07.57ID:aIm9uZNt
int[] s = 条件式 ? {0, 1} : {1, 0};
って書いたら弾かれたんですがJavaは三項演算子を使っての配列の初期化は出来ないということですかね?
2017/05/18(木) 00:37:28.69ID:QINyhTse
オラクルで働きたいんだが雇ってくれんかな
java初心者だが素晴らしい言語だと思うんで
2017/05/18(木) 00:43:40.92ID:mIgvPrGJ
OpenJDKに貢献するのが一番の近道だと思うが
オラクルはそんなにいい会社じゃないぞ多分
2017/05/18(木) 00:53:33.86ID:gS0Z1nN7
>>415
int[] s = 条件式 ? new int[]{0, 1} : new int[]{1, 0};
2017/05/18(木) 07:23:18.00ID:mhJy8/8/
ArrayListを作るときよく入門書だと
List<String> list = new ArrayList<String>();
と書いてありますが、将来的にListとして扱う予定が全くない場合でもこう書くものですか?
とにかく広く受けとけばいいなら極論ジェネリクスも要らないですよね?
ArrayListで必要十分なところをListと書くのはどうも型安全から外れてる気がして抵抗があるのですが
2017/05/18(木) 07:47:59.91ID:hMdHD0v3
Listで必要十分
2017/05/18(木) 07:58:02.36ID:DonT+oLB
>>419
ArrayListで必要十分ってことはArrayListクラスで定義されたものを使ってるんだからListで書いたらダメだろw
あとArrayListをListとして使うことがないってのはありえない
なぜならArrayListはListを実装してるから
2017/05/18(木) 08:25:23.87ID:hXrMTvib
>>421
それはそうですね、すみません、言い方を間違えました
ArrayList固有の機能を使わない前提でないとこの問いは成り立たないですね
ただ拡張性を意図してないときにインターフェースで宣言するメリットがあるのだろうかと思った次第です
2017/05/18(木) 08:55:42.22ID:DonT+oLB
>>422
なぜ具象クラスではなくインタフェースなのかってことなら、英単語の意味のとおりインタフェースだから
この話が特に問題になりやすいのはメソッドシグネチャに使われるときと、クラスの特性を利用するときなんで、
メソッド内部のローカル変数として宣言/定義するだけで外部に影響なく使うならぶっちゃけ何でもいいよ

逆に言うと、影響が出るなら(特に)最上位のインタフェースを使ってはいけない
Map<String, String> m1() { return new WeakHashMap(省略); }
・このm1はヤバい。戻り値を普通のMapのように使ってると、GCでいきなりエントリーが消えたりする
・戻り値の型をWeakHashMapにするべき
Set<String> s1() { return new TreeSet<String>(); }
・これもヤバい。戻り値にset()すると勝手にソートされる
・戻り値の型をSortedSet(インタフェース)にすべき
2017/05/18(木) 08:57:08.36ID:X6c7i21D
汎用性も拡張性も皆無の個人レベルのゴミソースなら
いくらでもArrayListで型宣言すればいい
2017/05/18(木) 08:59:24.71ID:DonT+oLB
途中送信になっちゃった

上のような例外的なケースを除き、基本的な使い方しかしていないなら最上位のインタフェースで宣言すべき
それはコードを読む人に変なメソッドやクラス特性を使っていないから安心して使えるというメッセージになる
#バグとかはまた別の視点だよ?
2017/05/18(木) 12:35:06.27ID:hXrMTvib
>>425
詳しくありがとうございます
出来る限り最上位のインターフェースで宣言した方が安心感があるのですね
例えば(あまりないと思いますが)addとforEachしか使わないなら
ListよりCollectionで宣言した方がいいということですかね

インターフェースだけでなくクラスも同様に、出来る限りObjectクラスに近い方がいいのでしょうか
例えばListに数字を入れるならList<Integer>よりList<Number>の方がいいですか?
2017/05/18(木) 13:06:42.91ID:DonT+oLB
>>426
そういうのをやりすぎって言うんだよ
自分で書いてて不親切というか不便だと思わない?
CollectionやNumberのJavadoc読んでみ
2017/05/18(木) 13:26:08.84ID:hChOTcwf
コードによるんじゃ
2017/05/18(木) 13:27:02.92ID:hChOTcwf
>>423
setは順番を保証しないから良くないか?
2017/05/18(木) 13:30:10.52ID:hChOTcwf
>>419
.netはlistが実装を持ってるからその指摘は的を得ていると思う
2017/05/18(木) 13:30:43.70ID:7OpOK0t2
なんで.NETの話してんの?
2017/05/18(木) 14:12:31.44ID:QINyhTse
ArrayList<String> list = new ArrayList<>();

普通に上記のような書き方でも大丈夫ですか?
どう違うのかな…糞初心者が便乗で失礼しました。
2017/05/18(木) 14:42:56.14ID:DonT+oLB
>>429
setの例は確かにまずかったね
実際やってみるとわかるけどさ、SortedSetに突っ込むものはComparable実装してないと実行時例外起きるのよ
Stringは実装してるからいいけど例えば自作のComparable実装してないクラスを突っ込むSetだと死ぬ
2017/05/18(木) 16:08:06.15ID:YsT8kXyi
>>427
最大限の抽象化を目指しつつ、必要に応じて落としどころに着地させる技術が必要なのですね
何となくわかりました。ありがとうございます
2017/05/18(木) 17:27:32.89ID:X6c7i21D
中途半端に理解力の悪い馬鹿だね君は
特定のインターフェースを受け皿にするのは意味があるからやってるんだから
君のような馬鹿は凡例に倣っておまじないのように真似して使ってればいいんだよ
2017/05/18(木) 18:04:44.47ID:pcJKb7uP
>>431
ベタージャバ
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は相性悪くないですかね?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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