トップページ⇒tech
1002コメント343KB

Java入門・初心者質問スレ [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/05/12(木) 05:18:33.40ID:nzHoBPh8
Java初心者のためのスレッドです。
0552デフォルトの名無しさん2016/09/13(火) 21:05:32.58ID:rV9Mfo0R
あ、ちょっとまちがえた。
でもどうでもいいや。
0553デフォルトの名無しさん2016/09/13(火) 22:00:17.18ID:A0k4wyKX
コンストラクタが惜しいな
0554デフォルトの名無しさん2016/09/14(水) 10:17:33.21ID:dxbAn+4W
public class チンポ {
 public チンポ() {
 }

 public ザーメン キンタマ(マンコ まんこ) {
  return new ザーメン(まんこ);
 }
}
0555デフォルトの名無しさん2016/09/14(水) 11:05:50.95ID:JBjOkyU9
空コンおくなし
0556デフォルトの名無しさん2016/09/15(木) 12:29:26.50ID:IvREkbG2
空コンは儀式(その程度の理解しかしてない
0557デフォルトの名無しさん2016/09/15(木) 15:29:00.97ID:Yk84xP/m
空コンでググっても空港でやる合コンしか出てこなくてわからないなんて言えない…
0558デフォルトの名無しさん2016/09/15(木) 17:13:33.93ID:nUBpNMp2
空のコンストラクタ。
デフォルトコンストラクタがあるんだから中身がないならわざわざ書く必要がない
0559デフォルトの名無しさん2016/09/16(金) 09:24:30.47ID:g1O3U5Rf
しかしチンポなのだからここはやはり可読性を上げるために書く必要があるだろう。
大きな声で朗読してもらうためにも。
0560デフォルトの名無しさん2016/09/18(日) 14:01:56.85ID:oVWtnygU
ゲームでセーブデータを作る時は何形式がいいの?
初心者すぎてよくわからん
0561デフォルトの名無しさん2016/09/18(日) 14:57:30.48ID:mx2jBCOo
んなもん好きなように作ればいい
0562デフォルトの名無しさん2016/09/18(日) 15:27:05.59ID:TDLmSDwc
改変を許すかどうかにかかってるような
0563デフォルトの名無しさん2016/09/19(月) 09:43:01.85ID:d/dsjAXw
初心者なら 項目名=値 をずらずら並べたテキストにでもすればええ
JSON とか楽

販売・公開するようなやつだとテキストはあり得なくていろいろ注意点が増える

・ユーザーののぞき見と改変を防ぐ
・ネットワークを使うか・パスワードなどを格納する
→ 暗号化
・複数箇所のセーブデータを持つか&収集系のRPGなどで総合的な履歴を持つか
→ 複数ファイルへ分割
・将来のバージョンアップによる項目追加・拡張にある程度たえられるか
→ バージョン管理
0564デフォルトの名無しさん2016/09/19(月) 16:39:02.44ID:Veov9Zpw
新明解Java相変わらず解答別売りなのね
0565デフォルトの名無しさん2016/09/20(火) 00:04:21.59ID:AyI8WQUs
>>563
けっこう複雑なのか...
参考になった
0566デフォルトの名無しさん2016/09/21(水) 15:35:49.49
import java.util.*;
(中略)
int [] base = new int[40] ;
for (int i=0 ; i<40 ; i++ ) {
base[i] = i ;
} ;
Collections.shuffle(base) ;
(略)

これでコンパイルした時、

エラー:不適合な型: int[]をList<?>に変換できません:
Collections.shuffle(base) ; //(baseのbのトコに「^」が表示されている)

注意:一部のメッセージは簡略化されています。-Xdiags:verboseで再コンパイルして完全な出力を取得してください

と、コンパイルエラーが出てしまいます。何が悪いのでしょうか?
0567デフォルトの名無しさん2016/09/21(水) 15:57:10.30ID:lqTjg4Df
Collections.shuffle() の引数がListのみだからじゃね?
List<Integer> で作ってシャッフル後にtoArray、、いや
int[] にうつしては
0568デフォルトの名無しさん2016/09/21(水) 19:03:37.78ID:G+rtKY2K
「じゃね?」ってしゃべり方する奴は育ちが悪い
ドカタやってろ
0569デフォルトの名無しさん2016/09/21(水) 19:16:23.93ID:RBbq4bmS
元は「〜じゃん」とかと同じでただの方言だろ
0570デフォルトの名無しさん2016/09/21(水) 19:23:49.04ID:z/WsDaib
>>568
どんだけ繊細なんだよw
0571デフォルトの名無しさん2016/09/21(水) 19:26:11.33ID:23vZJdQL
プログラマであることは育ちが良いことの十分条件ではない
終了
0572デフォルトの名無しさん2016/09/21(水) 19:43:52.97ID:dzx4ZLs+
見事な糞レス
0573デフォルトの名無しさん2016/09/21(水) 20:28:28.06ID:W1ct9vWu
小クラス extends 親クラス{} を作成しました。

親クラスにあるprotected createData()メソッドを小クラスにoverrideして作成しました。
しかし作成されたデータを見ると、親クラスのcreateData()で作成されていました。
デバッグでもきちんと小クラスのcreateData()が動いていたのですが。。。

なぜでしょうか
教えて下さい。
0574デフォルトの名無しさん2016/09/21(水) 20:30:24.97ID:O8zsEtDk
夢でも見たんでしょう
次の方どうぞ
0575デフォルトの名無しさん2016/09/21(水) 20:41:39.96ID:L0rnaOo4
斬新な回答
0576デフォルトの名無しさん2016/09/21(水) 20:48:23.71ID:W1ct9vWu
eclipseの保管機能でoverrideしたとき、
returnがsuper.createData();
となっていたのが原因でした。教えてくれてありがとうございました
0577デフォルトの名無しさん2016/09/21(水) 20:57:59.84ID:7s5fi6AJ
まず何がしたいのかというと、5つの変数それぞれに1〜30の乱数を代入しようと思います
ただし、5つ全て違う数字にする必要があります

if文やwhile文で
(a != b || a != c || a != d || a !=e || b != c || b != d || b != e || ・・・・・
のように一つ一つ比較していくのではどう見ても見づらいし、タイプミスもあり得るでしょうので
もっとすっきり被ってるかどうかがわかる方法、もしくは被らない乱数を発生させる方法はないでしょうか
0578デフォルトの名無しさん2016/09/21(水) 21:01:38.30ID:O8zsEtDk
配列に1から30まで連番を入れて
https://ja.m.wikipedia.org/wiki/%E3%83%95%E3%82%A3%E3%83%83%E3%82%B7%E3%83%A3%E3%83%BC_-_%E3%82%A4%E3%82%A7%E3%83%BC%E3%83%84%E3%81%AE%E3%82%B7%E3%83%A3%E3%83%83%E3%83%95%E3%83%AB
で5個取り出せばいい
0579デフォルトの名無しさん2016/09/21(水) 21:22:27.63ID:7s5fi6AJ
とりあえず再現が楽そうな
ダステンフェルドの手法というのをやってみます
0580デフォルトの名無しさん2016/09/21(水) 21:24:02.61ID:L0rnaOo4
>>577
乱数一つ作ったら配列に入れておいて、次にまた乱数作ったら配列に入れておいた値と比較して同じ値があったら捨てて再度乱数を求め、なかったら配列に追加。というのを要素数5になるまで繰り返す。

要素数が多い場合はMap使った方が同じ値があるかを探すの速くなるかも知れないが、要素数5でしかも数値ならforでループさせて単純に比較した方が速いかも。
0581デフォルトの名無しさん2016/09/21(水) 21:33:29.39ID:O8zsEtDk
なぜMap, Setじゃないのか?
0582デフォルトの名無しさん2016/09/21(水) 21:34:40.87ID:7s5fi6AJ
ありがとうございます
書いてなかったですが要素数は後から増える可能性も僅かながらあるので
それを考えると今回に限れば578の方が楽かなって感じはします
0583デフォルトの名無しさん2016/09/21(水) 21:39:24.07ID:O8zsEtDk
よく見るとCollections.shffleがあった
https://docs.oracle.com/javase/jp/6/api/java/util/Collections.html#shuffle(java.util.List)
0584デフォルトの名無しさん2016/09/21(水) 23:00:52.12ID:lqt2aOV6
>>581
使いたきゃ使えば?でも5つだしなあ。なんか無駄な感じしない?
0585デフォルトの名無しさん2016/09/21(水) 23:02:44.15ID:lqt2aOV6
>>583
>>566とか>>567で話題になってたんだよね。ちょっと上見れば話簡略化できたね。
0586デフォルトの名無しさん2016/09/21(水) 23:04:45.29ID:lqt2aOV6
更に shuffle() のサンプルを俺は >>541 のリンク先で公開してたりする。
0587デフォルトの名無しさん2016/09/21(水) 23:28:40.58ID:O8zsEtDk
別に怒ってないからそんなにまくし立てなくてもええで
0588デフォルトの名無しさん2016/09/21(水) 23:36:51.71ID:lqt2aOV6
for でぐるぐる。
https://paiza.io/projects/8Su6iH6cG4K4Zm-WvI6pDA
Set を使った例。
https://paiza.io/projects/MRh-3DNoFSdvrhkxgjiXUw
0589デフォルトの名無しさん2016/09/22(木) 03:29:08.51ID:wg+WFgph
サンプルから使ったものは抜いていけば比較なんていらない

https://ideone.com/bHzxZP
0590デフォルトの名無しさん2016/09/22(木) 04:40:27.52ID:9oQWhw/A
おー。なるほど。
0591デフォルトの名無しさん2016/09/22(木) 15:48:39.49ID:9oQWhw/A
int 型変数をビットフラグとして使った例。別メソッドにしてみた。
https://paiza.io/projects/GxaY-HCC8oNbO1_lb1QYWg
0592デフォルトの名無しさん2016/09/23(金) 10:07:05.81ID:SX8kvg/a
Streamならdistinctが使えるぞ

Random r = new Random();
IntStream.generate(() -> r.nextInt(30) + 1)
.distinct()
.limit(5)
.forEach(System.out::println);

もしくは
Random random = new Random();
random.ints(1, 31).distinct().limit(5).forEach(System.out::println);
0593デフォルトの名無しさん2016/09/23(金) 12:44:14.11ID:ou22iYX0
おー。ストリーム使ってもできそうな感じがしたがよくわからなかった。そうやればよかったのか。
0594デフォルトの名無しさん2016/09/23(金) 22:28:33.93ID:+M2xSlAW
コマンドプロンプトでclassファイルabc(仮)を何度か実行するとき、毎回いちいち
>java abc(仮)
と入力するのが面倒なのですがショートカットみたいなのはないのでしょうか
0595デフォルトの名無しさん2016/09/23(金) 23:13:35.84ID:jW0MNAyQ
コマンドプロンプトで↑押せば履歴が出てくるだろハゲ
0596デフォルトの名無しさん2016/09/23(金) 23:23:04.40ID:fPbYt4vI
ハゲは言い過ぎだろ…
0597デフォルトの名無しさん2016/09/23(金) 23:41:41.46ID:Krl8LY6k
alias 別名を付ければ?
0598デフォルトの名無しさん2016/09/23(金) 23:56:57.26ID:BvOffHOz
バッチファイル作っておくとか
0599デフォルトの名無しさん2016/09/24(土) 03:35:04.57ID:ts45zeFc
「ハゲ」は別に相手をけなす言葉じゃないだろ
それからちょっと薄いくらいの人のことをハゲっていうのもやめろよな!
0600デフォルトの名無しさん2016/09/24(土) 12:01:42.85ID:cKy0IgTy
>>599
うるせえハゲ
0601デフォルトの名無しさん2016/09/24(土) 12:38:22.17ID:oYgGfkv1
うるせー亡者
0602デフォルトの名無しさん2016/09/24(土) 13:07:19.25ID:d951yjmo
public class ハゲ {
 public static void main(String[] 禿) {
  System.out.println(禿[0]);
 }
}
0603デフォルトの名無しさん2016/09/24(土) 13:43:08.13ID:7+Pq0d3W
コマンドプロンプトやエクリプスのコンソール画面を一旦クリアしてカーソル位置を一番上へ持って行ってから文字を表示するにはどうすればいいのでしょうか
画面をクリアにするだけならできるのですが続く表示が下の方になってしまい見ばえが悪いです
0604デフォルトの名無しさん2016/09/24(土) 13:51:17.35ID:d951yjmo
>>603
eclipseは知らないがコマンドプロンプトならバッチファイルで最初でclsしとけばいいのでは?

まあしかし本当ならtermcapみたいな出力先端末の定義が書かれた設定ファイルを元にして出力すべきではある。同じ画面クリアするのであっても端末ごとに方法が違うかも知れないからね。
Javaでは基本的なライブラリにはそういうのはないんじゃないかな。誰かが作っていそうな気はするけど。
0605デフォルトの名無しさん2016/09/24(土) 13:58:30.73ID:d951yjmo
あるにはあるな。Java の curses ライブラリ。これはメンテされてなさそうだけど。
https://osdn.jp/projects/sfnet_javacurses/
0606デフォルトの名無しさん2016/09/24(土) 14:00:14.03ID:ts45zeFc
カーソル位置を変えよう
https://www.grapecity.com/tools/support/powernews/column/clang/047/page02.htm
0607デフォルトの名無しさん2016/09/24(土) 14:30:04.92ID:cKy0IgTy
>>603
\rを先に出力すればいいよ
0608デフォルトの名無しさん2016/09/24(土) 15:44:28.97ID:7+Pq0d3W
System.out.printf("\033[2J") ; //画面をクリア
System.out.printf("\033[0;0H") ; //カーソルを0,0の位置へ
System.out.println("テスト") ; //本文表示

ありがとうございます
コマンドプロンプトだけで言えばこれでいいでしょうか
0609デフォルトの名無しさん2016/09/25(日) 17:22:51.07ID:422b5eKT
試してみればいーじゃない
0610デフォルトの名無しさん2016/09/25(日) 17:39:54.92ID:fXLErY67
コマンドプロンプトって呼び方してるとこみるとWindows?
Windows7以降だとANSI.SYS無いから、ansiconとか入れないとならん気が
0611デフォルトの名無しさん2016/09/26(月) 15:38:10.93ID:lL1M4dov
ググると出てくるが、Windows 10 (10.0.1058) のコマンドプロンプトはそのままでできるようだ。
実際今やってみたらできた。

Windows 7 はできなかった。ansocon でやる必要あるみたい。
0612デフォルトの名無しさん2016/09/28(水) 01:04:27.23ID:rUV0k2Q4
for ( int a : x ) {
  System.out.print(a+" ")
}

いわゆる拡張for文と言う奴で配列xの内容を順に表示していくとして
ループの最初の一回だけ処理をせずに飛ばす(continue)ことはできますか?
0613デフォルトの名無しさん2016/09/28(水) 01:12:05.45ID:+6qgdOE2
>>612
余裕です

boolean first = true;
for ( int a : x ) {
  if ( first ) {
    first = false;
    continue;
  }
  System.out.print(a+" ")
}
0614デフォルトの名無しさん2016/09/28(水) 01:17:11.63ID:rUV0k2Q4
>>613
ありがとうございます
0615デフォルトの名無しさん2016/09/28(水) 04:18:03.56ID:rUV0k2Q4
参照先となるint型配列 a = { 1 , 2 , 3 , 4 , 5 } ;
参照元となるint型配列 b = { 2 , 3 , 4 , 5 , 7 } ;

2つの配列を比較して、含まれてない数字だけ(上記で言えば7)を抜き出したいのですが


for (int i=0 ; i < a.length ; i++ ) {
 for (int k=0 ; k < b.length ; k++) {
  if ( a[i] == b[k] ) b[k]=0 ;
 }
}
int x = 0 ;
int [] y = new int [ b.length ] ;
for (int i =0 ; i < b.length ; i++) {
 if ( b[i] > 0 ) {
  y[x] = b[i] ;
  x += 1 ;
 }
}

これだと見苦しいでしょうか?
0616デフォルトの名無しさん2016/09/28(水) 07:49:13.32ID:W+UWiO4B
>>615
int[] y = IntStream.of(b).filter(t -> Arrays.binarySearch(a, t) < 0).toArray();
0617デフォルトの名無しさん2016/09/28(水) 12:02:39.05ID:RrnZ6URf
Rubyみたいに、b - a みたいな差集合演算が、出来ないの?

そういうライブラリも無いの?
0618デフォルトの名無しさん2016/09/28(水) 13:55:25.18ID:quoItQJb
え?
0619デフォルトの名無しさん2016/09/28(水) 13:58:21.69ID:LrnfCbIH
Setのこと聞きたいのかなあ
0620デフォルトの名無しさん2016/09/28(水) 14:05:09.02ID:3qfI4Nbr
そもそもやる種類によるけどそうそう配列差分とるような出来事ないからなぁ...
0621デフォルトの名無しさん2016/09/28(水) 15:13:08.48ID:LOSUa8nH
printlnの引数と戻り値ってどう定義されているんですか?
06226212016/09/28(水) 17:49:57.58ID:LOSUa8nH
話題は変わりますが
0623デフォルトの名無しさん2016/09/28(水) 18:48:51.92ID:kdBXM31p
>>621 toStringメソッド
0624デフォルトの名無しさん2016/09/28(水) 20:53:02.02ID:iTE2MfXm
>>621
ライブラリのソース見ればわかるのでは?
0625デフォルトの名無しさん2016/09/28(水) 22:52:19.94ID:pHF1g6v7
for文やif文で多重に入れ子になってくると訳わからなくなるけど
なんとかなりませんか
0626デフォルトの名無しさん2016/09/28(水) 22:59:17.27ID:aIUMbzyY
>>625
深いネストを避ける
0627デフォルトの名無しさん2016/09/28(水) 23:54:25.15ID:xia32VFg
>>625
ラベル付きcontinueで爆死
0628デフォルトの名無しさん2016/09/29(木) 02:01:58.82ID:8BdwfvHa
>>625
中身をメソッドにして外出し、という方法もある。
06296212016/09/29(木) 02:24:10.71ID:PBNJeDAR
>>623>>624
ありがとうございます。
0630デフォルトの名無しさん2016/09/29(木) 03:03:25.34ID:3Qnxj2An
フィールドのドックコメントってどんなこと書いたらいいの
0631デフォルトの名無しさん2016/09/29(木) 04:51:49.73ID:6joghEm8
>>630

System.outとか見れば

http://hg.openjdk.java.net/jdk8u/jdk8u20/jdk/file/f5d77a430a29/src/share/classes/java/lang/System.java
0632デフォルトの名無しさん2016/09/29(木) 18:09:31.11ID:iz5N5Y7N
>>631 thanks
0633デフォルトの名無しさん2016/09/29(木) 21:19:31.88ID:iz5N5Y7N
なんでいちいち英語のやつ渡すんだよわかるかよ
0634デフォルトの名無しさん2016/09/30(金) 01:07:13.20ID:uFRLLqks
俺頭悪いから英語分からへんわ。
0635デフォルトの名無しさん2016/09/30(金) 02:29:05.91ID:88GOzilz
Googleで、ページ丸ごと翻訳すれば?
0636デフォルトの名無しさん2016/09/30(金) 04:06:13.88ID:87+JbCgZ
SpringとかPlayとかのフレームワークのWeb部分って、JSP/Servletのラッパーだと考えていいんでしょうか?
0637デフォルトの名無しさん2016/09/30(金) 08:45:34.31ID:b27JHcuC
>>635 ありがとう実はもう解決したから大丈夫
0638デフォルトの名無しさん2016/09/30(金) 12:25:21.58ID:IsuwtoYa
>>636
springはそう

playはそもそもサーブレットじゃないはず
0639デフォルトの名無しさん2016/09/30(金) 12:28:15.87ID:SeEJvjvc
>>633
thanks とか書いちゃって本当は英語ペラペラなくせに。俺を騙そうったってそうはいかねえぜ。
0640デフォルトの名無しさん2016/09/30(金) 12:28:33.98ID:IsuwtoYa
>>638
細かく言えば
jsp/servletじゃなくてservlet
テンプレートエンジンはjsp以外選べる
0641デフォルトの名無しさん2016/09/30(金) 13:09:18.69ID:dgXw6UDz
>>636
Spring MVCのCはservletの上で動く、VはJSPも使えるけど推奨されていないのでthymeleafが多いかな

Playはservlet非依存でVは独自のデンプレートで雑に言うとJSPのScala版
0642デフォルトの名無しさん2016/09/30(金) 18:35:03.77ID:gDcqzZDz
springはservletのラッパーとは言わないでしょw
scalaはjavaのラッパーか?w
0643デフォルトの名無しさん2016/09/30(金) 19:00:16.70ID:b27JHcuC
>>639 内心イラつきつつレスしたから英語になったわw
0644デフォルトの名無しさん2016/09/30(金) 19:03:39.25ID:KnhhoGXj
自分の無能を棚に上げてイラつくとかワロタ
0645デフォルトの名無しさん2016/09/30(金) 19:04:46.81ID:b27JHcuC
>>644 翻訳してクレメンス
0646デフォルトの名無しさん2016/09/30(金) 19:24:52.04ID:k6QPLsM1
>>645
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/System.html#in
0647デフォルトの名無しさん2016/09/30(金) 20:32:40.37ID:uFRLLqks
Javaの参照はCやC++のポインタとほとんど同じと考えていいですか?
0648デフォルトの名無しさん2016/09/30(金) 20:40:20.30ID:b27JHcuC
>>646 右クリックして翻訳だろ知ってるけどさ元々英語のコメントを翻訳してもニュアンス変わるだろ
0649デフォルトの名無しさん2016/09/30(金) 20:41:37.79ID:b27JHcuC
だからおれAPIの書き方好きじゃないもん
あれは英語読める奴が原文読むべきだわ
0650デフォルトの名無しさん2016/09/30(金) 20:42:18.26ID:FM0LwWhQ
うるせー死ね
0651デフォルトの名無しさん2016/09/30(金) 21:42:32.76ID:b27JHcuC
うるせえニートども
ググって原文持ってきてんじゃねぇよカス
0652デフォルトの名無しさん2016/09/30(金) 23:45:45.67ID:+IPuUceA
>>647
ああ。まあ。そうだな。
なにせぬるぽ
■ このスレッドは過去ログ倉庫に格納されています