[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 05/05 05:37 / Filesize : 295 KB / Number-of Response : 1047
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2018/06/07(木) 20:17:08.87 ID:N8MsK2gr0.net]
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.7
mevius.5ch.net/test/read.cgi/tech/1515549964/
VIPQ2_EXTDAT: checked:vvvvvv:1000:512:----: EXT was configured

301 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 18:40:28.63 ID:0VvnPUup0.net]
間違い。0から3じゃなくて0から2ね。

302 名前:デフォルトの名無しさん [2018/08/02(木) 19:06:35.74 ID:SFe9zIxEa.net]
>>287
言語は何?Javaではないよね?見た感じCのようだが。
C言語の質問はC言語のスレでするように。ここは Java のスレだ。

まあだいたいの Java プログラマはCもわかるとは思うがここに書いたらスレチだ。
Javaの情報を求めるものにはノイズにしかならない。

303 名前:デフォルトの名無しさん [2018/08/02(木) 19:50:05.85 ID:J3O8/chO0.net]
>>290
黙れ無能

304 名前:デフォルトの名無しさん mailto:sage [2018/08/02(木) 20:03:56.37 ID:dPAstyc30.net]
Cに見えるんだってwww

305 名前:デフォルトの名無しさん [2018/08/02(木) 20:50:37.59 ID:J3O8/chO0.net]
>>287
できまちた
https://

306 名前:paiza.io/projects/Gscp1N0GhBv_HhDZj_f_YQ

・randに()がついてない
・you = ans 代入になってる

を修正したらok
[]
[ここ壊れてます]

307 名前:デフォルトの名無しさん [2018/08/02(木) 21:10:07.77 ID:J3O8/chO0.net]
>>271
ファイルのダウンロードについて教えてください

CSVファイルを動的に作成してそれをダウンロードする機能を
作成しているのですが、サーバのメモリが少なくてメモリに
出力するとメモリーオーバーフローのエラーが発生します

そこでCSVファイルを一旦HDDに出力してそれをレスポンスとして
返そうと思うのですが、ダウンロードの途中に中断されたとか
ネットワークエラーが起こったときに一時ファイルがサーバに残ってしまい
いずれストレージを圧迫するのではないかと危惧しています

このようなときはどのように実装すれば良いのでしょうか?
一時ファイルのクリーニングをどうやれば良いのか教えて欲しいです
他に良いやり方をご存知でしたら教えて欲しいです
どうぞよろしくお願いいたします

308 名前:デフォルトの名無しさん [2018/08/03(金) 00:55:46.70 ID:98gPvf7X0.net]
>>294
CSVファイルを特定のディレクトリ以下に毎回新しいファイル名で作る事にして、
新しいファイルを実際に作り始める直前にそのディレクトリ以下の古いファイルを
削除する、なんてのどう?
時間で制限すると短時間に沢山リクエストが来た時にまずいという場合は更に
ファイル数でも制限して新しいファイルが100個以上残らないようにするとかね。

あと、ファイルの内容が同じなら古いファイルのタイムスタンプを更新して新たに
作ったことにして実際に新たに作った方はすぐ削除するとかね。同じ内容の
CSVになる事が事前に与えられたパラメータからわかるのであれば最初から
作らないっていう手もある。

309 名前:デフォルトの名無しさん [2018/08/03(金) 06:08:02.22 ID:KD3tz5Tj0.net]
>>295
ありがとうございます



310 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 10:43:18.14 ID:ioCor75Ha.net]
>>296
CSVを作成し始めた時点でテーブルにファイル名等々を保存、レスポンスを返したらそのレコードに正常終了のフラグを立てて、ファイル本体は削除

任意のタイミングでそのテーブルを舐めて、正常終了にならないまま時間が経ってるCSVはファイル削除してデータ上は失敗ステータスに更新

という実装をしたことがある。メリットとしてはどういうCSVがいつ失敗したのか把握しやすい

311 名前:デフォルトの名無しさん [2018/08/03(金) 16:53:38.35 ID:X+nM2ZWla.net]
>>287
俺が Kotlin で大幅に書き換えてやったから参考にしなさい。
無駄な処理はガバッと削除したので小さくなった。
https://paiza.io/projects/so9F6hmbk2mnHO_KKsg85Q

312 名前:デフォルトの名無しさん [2018/08/03(金) 19:41:38.60 ID:GOZ9L8DI0.net]
>>297
ありがとうございます

313 名前:デフォルトの名無しさん [2018/08/03(金) 19:45:26.78 ID:GOZ9L8DI0.net]
>>298
えげつない記述力ですね

314 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 19:57:48.67 ID:seFAJe100.net]
// ドアが3つならどのドアをオープンしたかは
// 求める必要がないので省略。

これだめだろ
そんなこと言ったら変更ありなしで固定確率の結果返せばいいじゃん

315 名前:デフォルトの名無しさん [2018/08/03(金) 20:21:23.49 ID:X+nM2ZWla.net]
>>301
最初は馬鹿正直に作ったのだがオーブンするドアを求めても表示しないのなら無駄になることに気づいたんだよ。
ということは処理そのものが無駄だと。

ということで人力で超最適化。

316 名前:デフォルトの名無しさん mailto:sage [2018/08/03(金) 20:52:06.74 ID:seFAJe100.net]
多少頭がいいばっかりに火傷するタイプだな(遠い目

317 名前:デフォルトの名無しさん [2018/08/04(土) 00:45:40.61 ID:2zclIjyW0.net]
ドア開けバージョンはこれだ。結果を毎回出力するので出力が多い。
https://paiza.io/projects/BC39iPHBLiGoCzaRE03jOg

318 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 09:43:44.1 ]
[ここ壊れてます]

319 名前:6 ID:+vznLLf60.net mailto: ついでに最終選択ドアも出力してください []
[ここ壊れてます]



320 名前:デフォルトの名無しさん [2018/08/04(土) 17:19:57.47 ID:2zclIjyW0.net]
ドア変更がある場合に変更後のドアも出すならこんな感じか。
https://paiza.io/projects/LLQwJ1l5cFMab6otYcI74A

321 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 17:51:43.93 ID:+vznLLf60.net]
println("[$i] You=$you, Open=$opn,${if (change) " You2=${changeDoor(you, opn)}," else ""} Ans=$ans, $wlstr")
エレガント?なコードがちょっと要件に沿うよういっただけで一瞬でエディタもバグる超スパゲッティに

てかkotlinきめえw

322 名前:デフォルトの名無しさん mailto:sage [2018/08/04(土) 17:58:42.48 ID:2zclIjyW0.net]
>>307
${} を入れ子にしたからな。外にも出せるよ。Java と同じ String の連結で + も使える。

323 名前:デフォルトの名無しさん mailto:sage [2018/08/06(月) 12:40:16.38 ID:fu+3+K8Ia.net]
>>307
そりゃわざとキモくなるような書き方してるからだろw

324 名前:デフォルトの名無しさん [2018/08/07(火) 01:32:48.21 ID:oBkDl7ym0.net]
色々変えて見やすくなった。
https://paiza.io/projects/Jxs2ws2XzZ8MrquYAjYMFg

325 名前:デフォルトの名無しさん mailto:sage [2018/08/07(火) 16:08:14.49 ID:VuYJRj/9M.net]
この夏java極めようと思っていたのですがもうオワコンなんですか…?

Androidエンジニアになりたいです

326 名前:デフォルトの名無しさん [2018/08/07(火) 17:21:08.43 ID:r/NXRNz/a.net]
そんなあなたに Kotlin

結局は Java 覚える事になりそうだけどなw

327 名前:デフォルトの名無しさん mailto:sage [2018/08/08(水) 02:39:32.48 ID:o1XsaDKS0.net]
Cに書き直してみた。
https://paiza.io/projects/8aPAf5jUp4-nIZ_T6iS-tw

328 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 09:09:40.78 ID:GW9IT4yi0.net]
kotlinってjava覚える必要ある?
結局はインスタンスやメソッドの取り扱い方を覚えるだけでしょ
java→kotlinといより
kotlin→場合によってjava調べる的な

329 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 09:17:01.61 ID:4t5DQamya.net]
他のOO言語の経験があるならあえてJavaやらなくてもサンプルコードくらいはなんとなく読めるだろうから
経験ないならいきなりKotlinはまともな初心者向けの書籍ないから無理



330 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 09:54:41.39 ID:4ie0qQxWM.net]
長澤さんのKotlin本はどのくらいのレベルが対象?

331 名前:デフォルトの名無しさん mailto:sage [2018/08/10(金) 12:55:08.73 ID:xghqpyUKa.net]
Twitterで本人に聞いてみれば

332 名前:デフォルトの名無しさん [2018/08/13(月) 03:04:53.34 ID:hqkLiaZ40.net]
コメント化ってどんな時に使えばいいんですか?
今やってるプロジェクトで一切コメントを置いてないせいでコードがスパゲッティから毛糸のほつれに進化しかけています。
//と/**/はどっちの方がいいのか、どのタイミングで入れたらいいか等が知りたいです

333 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 08:10:45.77 ID:CiYwNC/na.net]
メソッドやクラスにはできるだけJavaDocコメントを付けて、そのメソッドやクラスの説明を書く
そして原則として、メソッドの中にはコメントは極力書かない
説明を一言書きたくなるようなパッと見何やってるか分かりにくい部分は、コメントの代わりに別のメソッドとして切り出してメソッド名で説明する
それを徹底してればprivateメンバなんかはいちいちJavaDocコメント書かなくても問題にはならない

334 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 08:23:54.17 ID:HTY6GtFCa.net]
>>318
「リーダブルコード」という、素晴らしい名著があるからそれを読んでみることをおすすめする。

335 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 10:15:39.16 ID:9hQNlq880.net]
企業によるアンチ規約あるあるだな

336 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 15:56:23.52 ID:8BISUvphd.net]
ローカル変数に引数を代入する

337 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 16:38:50.33 ID:9hQNlq880.net]
参照でなければ引数自体がローカルなんだがw

338 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 17:00:44.15 ID:3xCIU7sj0.net]
クリップボードについて質問です。

Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable object = clipboard.getContents(null);

String s = "Test"; // 保存するテキスト
StringSelection selection = new StringSelection(s);
clipboard.setContents(selection, null);

String str = "";
try {
str = (String)object.getTransferData(DataFlavor.stringFlavor);
} catch(UnsupportedFlavorException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(str);

まずエディタか何かで人力でクリップボードに何かの文字列をコピーします。例えば"ABC"をコピーして、
このコードを走らせると
ABC
と表示されます。そしてそのままもう一度このコードを走らせると、今度は
Test
と表示されます。ABCと表示されるのは何が悪いんでしょうか?

339 名前:デフォルトの名無しさん [2018/08/13(月) 21:22:00.43 ID:wBJkicYb0.net]
>>324
なるほど、完全に理解した

clipboard.setContents(selection, null);
これのあとに
Transferable object = clipboard.getContents(null);
これを書けばおk



340 名前:デフォルトの名無しさん [2018/08/13(月) 23:25:56.73 ID:z6+TJcGX0.net]
>>324
そのプログラムだとこうなってるよね。

1. 2行目の getContents() でエディタでコピーした "ABC" が取り出される。

2. setContents() で "Test" がクリップボードにセットされる。

3. 1で取得した object の中身を取り出して出力する。(取り出されるデータは "ABC")。

"ABC" が出力されて当然の作りになっている。
上記の3の所で "Test" を取り出したいなら 2 の直後で 1 の処理をしなければならない。

341 名前:デフォルトの名無しさん [2018/08/14(火) 07:07:01.81 ID:IYCmiTRH0.net]
Listを複数のリストに分割したいのですがやり方がわからず教えていただきたいです

// たとえば要素の数が10のリストがあったとして

List<Integer> list = new ArrayList<>();

for (int i = 0; i < 10; i++) {
 list.add(i);
}


// それを4つのリストに要素の数ができるだけ均等になるように分割したいです

List<Integer> list1 = new ArrayList<>(); // <- 要素は0,1,2
List<Integer> list2 = new ArrayList<>(); // <- 要素は3,4,5
List<Integer> list3 = new ArrayList<>(); // <- 要素は6,7
List<Integer> list4 = new ArrayList<>(); // <- 要素は8,9

どうぞよろしくお願いいたします

342 名前:デフォルトの名無しさん [2018/08/14(火) 07:31:28.19 ID:IYCmiTRH0.net]
>>327
自己解決しました、もう良いです
返信しないでください

343 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 09:51:15.67 ID:nGrU4rwG0.net]
>>325
ありがとうございます。それはうまく行きました。しかしごめんなさい。どうも私が問題をちゃんと把握出来ていなかったようです。

try {
Thread.sleep(7000);
} catch (InterruptedException e1) {
// TODO 自動生成された catch ブロック
e1.printStackTrace();
}

Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable object = clipboard.getContents(null);

String str = "";
try {
str = (String)object.getTransferData(DataFlavor.stringFlavor);
} catch(UnsupportedFlavorException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(str);

どうもJTextField が関係しているらしいです。このプログラムにはテキストフィールドがいくつかあるのですが、
そこに"ABC"と入力し、それを選択、Ctrl+C でコピーします。
そしてこのコードを走らせ、スリープしている7秒の間に別のエディタで Test をクリップボードにコピーします。
すると出力が ABC となります。7秒の間にエディタ上でペーストするとちゃんとTestがペーストされます。
ABCをコピー、続けてTestをコピーしてからこのコードを走らせるとちゃんとTestとでます。
ABCをエディタでコピーした時はこの症状は出ません。

344 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 22:37:46.47 ID:w7/teWcla.net]
public static void main()って
メソッドなんですか?

345 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 22:44:24.53 ID:z3VJK4Uca.net]
メソッドです。
Javaで書かれたプログラムはMainクラスのmainメソッドを実行すると決まっています。

346 名前:デフォルトの名無しさん mailto:sage [2018/08/14(火) 23:13:33.44 ID:w7/teWcla.net]
なるほどkotlinのmain ()関数のようにエントリポイントになっているんですね

コンストラクタもメソッドですか?

347 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 00:49:57.59 ID: ]
[ここ壊れてます]

348 名前:BN2igdfy0.net mailto: >>331
クラス名は Main じゃなくてもいいんだよ。
[]
[ここ壊れてます]

349 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 05:08:46.27 ID:JGyCTF+Aa.net]
>>332
どちらもその理解で合ってる



350 名前:デフォルトの名無しさん mailto:sage [2018/08/15(水) 05:10:31.45 ID:JGyCTF+Aa.net]
>>333
あ、はい

351 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 08:36:03.18 ID:nBIOAicW0.net]
すいません教えてもらってjdkは何とか導入成功したんですが
eclipseってやつと日本語化のを導入してコードを実行しようとしたら
選択は起動できず最近の起動もありません。とエラーが出て実行できません。何度か再インストールしましたが結果変わらず。
何が原因なのでしょうか?導入で参考になるサイトあれば教えてほしいです
後JDKだけじゃjavaのコードを実行とか出来ませんよね?eclipseってやつを導入して初めて意味があるものって認識で大丈夫ですか・
そこら辺もかなり曖昧なのですが…

352 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 09:15:49.93 ID:z0v/PTWta.net]
>>336
間違ってる。JDKが入っていればあとはメモ帳でjavaのプログラムを書いて実行できる。

eclipseはあくまで超高機能なメモ帳だと思ってればいい。

で、そのeclipseなんだけど、そもそも古くて昔から使ってる人以外はもうほとんど誰も使ってない。
理由は今まさに君が直面しているように、自分の期待する動きをさせるのがとても大変だから。あと重い。

今からプログラムを始めるならIntelliJ IDEAの無料版か、Android Studio (無料)を使うことをお勧めする。
どちらも基本的には同じメーカーが作ってるほぼ同じものだけど、ただjavaを書くだけならIntelliJの方が余計なものが入ってなくていいかもしれない。

353 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 09:18:39.00 ID:z0v/PTWta.net]
>>336
IntelliJの無料版のインストールをしてる記事も見つけたから貼っとくね。

https://qiita.com/syu_chan_1005/items/46f94412f7493d6e60eb

354 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 11:06:42.84 ID:nBIOAicW0.net]
>>337
レスありがとうございます
メモ帳でもプログラムの実行って出来るんですか。テキストドキュメントですよね?
コンパイルとかも勝手にしてくれるなら一番軽くて楽そうですね

>>今からプログラムを始めるならIntelliJ IDEAの無料版か、Android Studio (無料)を使うことをお勧めする
こちらの方も特性まで教えていただきありがとうございます。調べてみます
後、C++やろうと想ってvisualstudio入れてあるんですけど、これはjavaでは使えないですよね

355 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 11:54:47.10 ID:nBIOAicW0.net]
https://gyazo.com/e3fe0cd9ac22553f62241cbe9285f1d1
手順IntelliJ IDEAの構成のここまで出来たんですが説明にある(Project name)のついたフォルダの横にある▶を押して見ましょう。
というのが見当たらず詰みました;どこにあるのでしょうか

356 名前:デフォルトの名無しさん [2018/08/16(木) 13:00:59.59 ID:yLNqa6vha.net]
>>340
それのプロジェクト名は untitled だからそれの左横。

ていうかプロジェクト名を自分で入力しないで先に進んじゃったようだね。

357 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 13:39:19.41 ID:nBIOAicW0.net]
>>341
おかげさまで見つかりました。ありがとうございます!
フォントもdokojavaよりかっこよくモチベーション上がりそうです
Run押したら下に結果表示されたので全て導入うまくいってそうです
本当にありがとうございます

358 名前:デフォルトの名無しさん mailto:sage [2018/08/16(木) 16:06:09.21 ID:OpTecYpPa.net]
うまくできたようで良かった。
IntelliJは本当に素晴らしくて、入力補完も神がかってるから勉強にはちょうど良いと思う。

359 名前:デフォルトの名無しさん mailto:sage [2018/08/17(金) 13:27:44.81 ID:GpawSU9CM.net]
aかbかどちらか値が入ってる方を使いたく
defaultIfEmptyという便利なものを見つけたのですが
aもbもどちらも初期値というわけではないんですよね
初期値設定以外で使うのは変ですか?



360 名前:デフォルトの名無しさん [2018/08/18(土) 00:59:17.77 ID:jNUruXDd0.net]
言語そのものじゃない質問ですが、IDE(Android Studio とか IntelliJ IDEA)使ってても、ビルドツールって必要なんでしょうか?
もしくは有用なんでしょうか?

361 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 16:56:22.20 ID:ouPv64vz0.net]
今まで Eclipse からしかプログラムを走らせたことがなかったのですが、昨日プログラムをエクスポートしてノートPCに持って行ったら、

A JNI error has occurred, please check your installation and try again

というエラーが出ました。色々試行錯誤しているうちに、「実行環境JREの使用」の問題らしいと分かりました。
JavaSE-9だとエラーになって、JavaSE-1.8だと大丈夫です。
他の人にプログラムを使ってもらう時とか、どうすればいいんでしょうか?
プロジェクト固有のJREの使用という項目もありますが、このあたりは何を意味してるんでしょうか?

362 名前:デフォルトの名無しさん [2018/08/19(日) 17:23:49.79 ID:Kq0ObHsK0.net]
>>346
スタックトレースを見ないとエラーの原因がわからないよ
原因がわからないと解決策もわからないよ

コマンドから実行したらスタックトレースが出力されると思うから
それを教えてちょんまげ

363 名前:デフォルトの名無しさん mailto:sage [2018/08/19(日) 17:41:46.22 ID:KG8+gtiYF.net]
JREが9ならJDKも9
でコンパイルしなければね

364 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 19:57:08.28 ID:4jiZ931E0.net]
>>347
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: handymanPackage/HandymanBMain has been compiled by a more recent
version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0

ノートPCがwindowsアップデートでクラッシュし、再インストールという惨事に見舞われてしまってレスが遅くなってしまいました。
JREは昨日初めてインストールしたのに、何でこんなことになるんでしょうか?最新版じゃないんでしょうか?

365 名前:デフォルトの名無しさん [2018/08/20(月) 20:20:40.35 ID:7cywDiIN0.net]
>>349
翻訳
| handymanPackage / HandymanBMainはJava Runtime(クラスファイルバージョン53.0)
| のより新しいバージョンでコンパイルされていますが、このバージョンのJava Runtimeは
| クラスファイルバージョンを52.0までしか認識しません

バージョン53.0はJava9
バージョン52.0はJava8

Java9以上のJDKでコンパイルしたものを
Java8のJREで実行しようとしてるんじゃないかな

対応策は、実行環境にJava9を入れるか
もしくは、Java8でコンパイルするかってところ

他の人にプログラムを作ってもらう時は実行環境のバージョンと
同じかそれよりも古いバージョンでコンパイルしてもらえば良い

366 名前:デフォルトの名無しさん mailto:sage [2018/08/20(月) 20:41:39.99 ID:4jiZ931E0.net]
>>350
だいたい分かりましたが、よく分からないのが1.8の次が何で9なんでしょうか?
1.9とか2なら分かるんですが、何でいきなり9になるんでしょうか?

367 名前:デフォルトの名無しさん [2018/08/20(月) 21:53:30.11 ID:7cywDiIN0.net]
>>351
Java9からバージョンの形式が変わったんだよ

変えられた理由は
・メジャーアップデート
・マイナーアップデート
・セキュリティアップデート
を区別しやすくするため

368 名前:デフォルトの名無しさん [2018/08/20(月) 23:26:30.62 ID:D6aa3xEz0.net]
ソースコード読むときにインスタンスなのかメソッドなのかがすぐに分からないんだけど、
ソースコードを読むときのコツみたいなものってありますか?

369 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 00:31:47.69 ID:kxzeRRBS0.net]
VSCode などでマウスホバーすれば、宣言が表示されるのでは?



370 名前:デフォルトの名無しさん mailto:sage [2018/08/21(火) 12:02:11.35 ID:5hCHO/+ya.net]
java本格入門って本を勧められたのですが読んだことある方います?感想が聞きたいです

371 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 08:02:55.21 ID:9OhLuljd0.net]
すいませんスッキリわかるjava入門をやってるのですがファイルの分割の項が
環境が本

372 名前:ニ違うので分かりません;
intelli IDEAを使ってるのですがどのようにすればいいのでしょうか?
[]
[ここ壊れてます]

373 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 08:20:12.87 ID:9OhLuljd0.net]
今までずっと閉じるを使って来たので保存方法も分かりません
ググっても自動保存をオフにするとかそういう記事しか出てきません;
どこをいじればいいのでしょうか

https://gyazo.com/62228b87ec37fdce11d0b0ebfae7626d

374 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 09:28:06.86 ID:Q+aoBvc3M.net]
Javaはビルド周りが腐っててファイルの配置やパスの設定に対してかなりセンシティブなんだよ
そのへんで嵌るとJavaに慣れてる人でも結構厄介だから、諦めて本の通りの環境を用意したほうが結果的に時間の節約になる
今の君の経験値で取り組むべき優先度の高い問題ではないし、ましてファイルの保存方法すら類推できないレベルでは、
今目の前の問題だけ付け焼き刃で解決できたところで今後同様の問題にぶち当たったときに自分で解決できるとは思えない

375 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 20:01:02.13 ID:9OhLuljd0.net]
多分自己解決しました
save allを押したのにPCから何も応答がないので出来てないのかと思ってました

376 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 20:16:08.41 ID:jFi7Ee350.net]
普通に左側にProjectペインを出してファイルを作りたい場所の上で右クリックするだけでしょ。
そもそもパソコンをあまり使ったことがない?

377 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 21:51:35.73 ID:9OhLuljd0.net]
いえ、3年使ってます
ただゲームくらいでしか使ってなかったのであまり分かりません;

378 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 22:36:06.37 ID:jFi7Ee350.net]
ああ、まあそれじゃあしょうがない
とりあえず大抵のことをやっても壊れはしないから、調べたり聞いたりする前に適当にいじってみるのも大事だよ
それで勘みたいなものを覚えていくものだから

379 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 03:33:02.64 ID:5X50Ptai0.net]
パソコンは壊れないけど環境はよく壊れる



380 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 07:43:07.07 ID:sP/ywaCGa.net]
そうしたらそれを直すのもまた勉強

381 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 08:23:38.59 ID:0hzqlpOdM.net]
説教臭いスレだな

382 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 13:36:26.24 ID:J3AVJGwl0.net]
スッキリ分かるjava入門の多態性の説明がよくわからないんですが
親クラス型の配列を作って派生先クラスのインスタンスを代入して配列を回して一気に似たような処理を簡単に記述する
のが多態性って認識であってますか?
もうちょっと分かりやすく説明してる所あったらお願い致します

383 名前:デフォルトの名無しさん [2018/08/24(金) 13:45:30.50 ID:MEArwTdwa.net]
>>366
ま、配列に入れて使うとは限らないが親クラスまたはインターフェースの型でインスタンスを扱えるって事だよ。

こういうのは実装を隠したい時にも使える。

384 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 14:33:37.18 ID:J3AVJGwl0.net]
>>367
ありがとうございます
abstract,interfaceのクラス型でインスタンスを作れないから、このやり方を使って
インスタンスを扱えるようにするってことですかね?
親の所にないメソッドは使えないみたいなので利便性がよくわかりませんが・・

385 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 14:41:49.42 ID:ZgK6e0Tb0.net]
cat.cry
dog.cry

猫は猫のように鳴き、犬は犬のように鳴く。
親は親のように泣き、子は子のように泣く

自動的に実体に応じた、動作をする

386 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 14:59:55.60 ID:l959lfiYd.net]
>>368
そこが最大の利点でだな

同じ親を持つ個別のクラスを比較して比較したりとか
ファイルのオープン/クローズとデータベースのオープン/クローズを使う側は同じ処理で使えるようにするとかが出来る

387 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 06:57:20.11 ID:b/emt3jR0.net]
>>370
ありがとうございます
この

388 名前:{自体があまり計算問題を使って解説してないのでメリットがパッとしませんが
とりあえず何となくで覚えとこうと思います
[]
[ここ壊れてます]

389 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 07:56:40.41 ID:BMpD23L5a.net]
>>371
それはJavaというかオブジェクト指向の特徴なんだけど、いずれもうちょっと複雑なことをするようになれば自然にメリットがわかるよ。
今はそんなもんか程度の理解でいい。



390 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 08:03:03.50 ID:b/emt3jR0.net]
すいませんフィールドにnullなんて入れてないのにnullって表示されるんですけど
どこ直せば正常に名前が呼び出されますか?
https://ideone.com/lfTf9n
やっぱりあまり理解できてなかったかもです;

391 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 09:19:55.50 ID:EHvwSMrp0.net]
>>373
これの見方がよくわからんのだけど何がnullになってるの?

392 名前:374 [2018/08/25(土) 10:26:08.92 ID:EHvwSMrp0.net]
自分もjava勉強中なので試しに作ってみた
これで動いたよ
違うところだけ書いてみる

public class Hero extends Caractor {
Hero(String name){
this.name = name;
}

public void attack(Caractor m){
System.out.println(this.name + "のこうげき!");
System.out.println(m.name + "に10のダメージを与えた!");
m.hp -=10;
}
}
public class Slime extends Caractor {
Slime(String name, int hp){
this.name = name;
this.hp = hp;
}

public void run(){
System.out.println(this.name+"は逃げ出した!");
}
}

あとはだいたい同じです。

393 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 10:36:53.08 ID:EHvwSMrp0.net]
あ、あとキャラクターのフィールドがprivateになってるからprotectedにしたら動いたよ
これが綺麗なコードかはわからないけどとりあえずどうでしょうか

394 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 11:33:36.67 ID:ldpy0bgQ0.net]
>>373
継承先のクラスで同じ名前でフィールドを定義しても別のフィールドになる

attackメソッドにSlimeのインスタンスを入れているけど
Monsterクラスのnameを見てるのでSlimeに設定したnameは表示されないでnullが表示される

395 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 12:54:17.01 ID:gxBSyOuw0.net]
子クラスで、親クラスと同じ名前のフィールドを定義したら、ダメ!
オブジェクト指向としては、明らかな間違い!

同名のメソッドは、上書き(オーバーライド)するけど、フィールドはしない

396 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:14:33.12 ID:gxBSyOuw0.net]
for (Character c : list) { c.attack( ); }

list に、モンスターや勇者などを混ぜて入れて、
その親クラスのCharacter として、抽象化して扱えば、
if 文で、モンスターや勇者の処理を、場合分けせずにすむ

モンスターや勇者は、それぞれ実体に基づき、自動的に攻撃する。
見かけの型は親クラスだが、攻撃は子クラスのメソッドを呼ぶ

つまり、抽象化する事によって、型による分岐がなくなる!
逆に言えば、型によって分岐していたら、オブジェクト指向ではない

if モンスター型なら
if プレイヤー型なら

397 名前:デフォルトの名無しさん [2018/08/25(土) 13:24:39.80 ID:KMExyDFm0.net]
>>379
オブジェクト指向ではポリモーフィズムが大事なんだって考えだね

398 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 13:51:30.74 ID:QXNuAaPsM.net]
時代遅れな考えだよね
最近は関数型の影響によって型による分岐が市民権を得つつある
C#もついにパターンマッチを導入して型による分岐を積極的に推奨するようになった
Javaも10年くらいしたらそうなるよ

399 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 14:36:23.71 ID:t7aLMQyua.net]
推奨はしてない
ポリモーより型スイッチの方が書きやすい場合も存在するよね
全否定しないでそういうのもサポートしていこうよってだけ
型スイッチがポリモーを置き換えるかというと全くそんなことはなくて
せいぜいデータドリブンのアプローチで書かれた僅かな部分の記述が綺麗になる程度



400 名前:デフォルトの名無しさん [2018/08/25(土) 14:53:44.82 ID:KMExyDFm0.net]
>>382
なるほど、それなら分かる






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<295KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef