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

レス数が900を超えています。1000を超えると表示できなくなるよ。
2017/04/04(火) 20:41:11.59ID:y0EcmGB0
Java初心者のためのスレッドです。

※前スレ
Java入門・初心者質問スレ Part.2
http://echo.2ch.net/test/read.cgi/tech/1478863511/
2017/06/11(日) 11:40:34.15ID:sLjIMjbO
>>800
>>715
2017/06/11(日) 12:27:01.73ID:d7b3ye6p
android studioでプログラミングをしたいと考えているのですが、何か良い解説書はありませんかね?
javaの基本的な部分は理解しているつもりです
2017/06/11(日) 13:42:09.78ID:ZiP5+a1w
参考書色々あって何を読めばいいのか分からないですよね
2017/06/11(日) 14:37:04.62ID:EpiV2zzw
>>802
無事にオブジェクトを指定して削除できました、有難うございます!
削除する時に新しいオブジェクトを生成すれば良いというのは目から鱗でした

>>803
確かに重複なしの数列だったので、Setを利用すれば
引数に数値を直接指定して削除できました!

おかげで解決しました、有難うございます!
2017/06/11(日) 14:53:28.80ID:m0ToqypE
オートボクシングの弊害というかなんというか
810デフォルトの名無しさん
垢版 |
2017/06/11(日) 15:46:10.49ID:8f1mqXi5
removeメソッド自体が紛らわしく作ってあるとも言えるかな。
型がintではないとかオートボクシングがないとかなら紛らわしくはならないんだが。
色々組み合わさってしまった結果意図せず作り出された落とし穴っぽいものだな。
2017/06/11(日) 18:06:24.52ID:XwLTdPC8
自然数がN個が入った配列がある。数値は必ず20未満
この配列をひとつの数値にしたり数値から配列に復元する方法を教えてください
812デフォルトの名無しさん
垢版 |
2017/06/11(日) 18:35:21.26ID:8f1mqXi5
>>811
ビット単位にするとして、1〜19なら5ビットに収まるので例えばintなら32ビットだから6個まで入れられる。
これはビット単位でシフトしながら作って、戻す時は逆のことをする。

int[] x = { 6個の1〜19の値 };
int n = 0;
for (int i = 0; i < 6; i++) n = (n << 5) | (x[i] & 0x1f);
これでnに6つの値が詰め込まれた状態になる。
戻す時はこうする。
for (i = 5; i >= 0; i--, n >>= 5) x[i] = n & 0x1f;
813デフォルトの名無しさん
垢版 |
2017/06/11(日) 18:38:39.68ID:8f1mqXi5
その他、ビット単位ではなく20進数として扱うという方法もある。
この場合は20で掛けたり割ったりがシフトレフトやシフトライトになる。
2017/06/11(日) 18:52:48.89ID:XwLTdPC8
>>813
できたー!
クッソ解かりやすい解説ありがとナス!
815797
垢版 |
2017/06/11(日) 19:07:48.03ID:5kRuFFSB
>>804
すいませんでした。
2017/06/11(日) 22:07:33.63ID:tquZEUWF
1.データベースとつなげてECサイトを作る課題をやってるんだが(買い物かごを使うAmazonみたいなもの)、テーブル設計教えてくれ
2.同時に複数のブラウザからログインできないようにしたいんだけどどうすればいいか教えてくれ

1はスレチだったらすまん
2017/06/11(日) 22:11:48.27ID:dQP1iB/o
>>797
余計なことすんなよわろた
818デフォルトの名無しさん
垢版 |
2017/06/11(日) 23:38:15.04ID:ytg9x0pA
>>816
1.
商品テーブル
・商品ID
・商品名
・商品価格

買い物カゴテーブル
・ユーザID
・商品ID
・商品個数

売上テーブル
・売上ID
・売上日
・購入者氏名
・購入者住所
・送り先氏名
・送り先住所

売上明細テーブル
・売上ID
・商品ID
・商品数量
・売上金額

2.
ログインテーブルにセッションIDの列を作って
ログインしたときにセッションIDを上書きして
承認のときにセッションIDをチェックするとか
2017/06/12(月) 00:55:59.20ID:mg3rFpBS
コンストラクタへのパラメータにnullを許さない場合、
何を投げるのがベストですか? また、その根拠は何ですか?

1) Objects.requireNonNull()などによるNullPointerException
2) 単にIllegalArgumentException

今までは2)でずっとやってきたんですが
nullなんだからヌルポでいいんじゃないのか?
の考えも徐々に大きくなりつつあります
2017/06/12(月) 01:00:55.12ID:LyToFJpl
>>819
ほい
http://www.ne.jp/asahi/hishidama/home/tech/java/throw.html#IllegalArgumentException
2017/06/12(月) 07:05:19.03ID:EUHIgh1l
>>818
ユーザーテーブルは?
822デフォルトの名無しさん
垢版 |
2017/06/12(月) 07:31:27.23ID:1lBVkHcp
>>821
お好きにどうぞ
2017/06/12(月) 13:57:51.40ID:sGejfR27
親商品テーブル(商品名管理)と子商品テーブル(バリエーション管理)みたいなの作って在庫テーブルも別に作った方がよくないか
カゴに入れてキャンセルとかも実装するとなると在庫テーブルで一元管理は大変だろうし引当管理テーブルもあった方がいいかも
824デフォルトの名無しさん
垢版 |
2017/06/12(月) 14:04:03.04ID:H3aCgKp9
ああ。しかし、もはやJavaの話ではなくなっているように思う。
続きはDB関係のスレでやった方が良いのではないかな。
2017/06/12(月) 15:09:06.93ID:JjMMHWRt
「テーブル設計教えてくれ」の時点で違うってわかるじゃん……
2017/06/12(月) 17:39:10.86ID:U1BEnqvv
課題手伝ってもらおうとしてるくせに
「教えてくれ」

教えてくださいだろアホ
827デフォルトの名無しさん
垢版 |
2017/06/12(月) 17:53:32.88ID:a//lNTfp
いっそのこと試験問題のように「〜せよ。」とか書いてほしいものだ。
2017/06/12(月) 17:57:13.28ID:X/qk8fTD
お前等馬鹿が質問の仕方もろくにわからんガキに反応するから
teratailみたいなところでも意味不明な日本語で質問する馬鹿が減らないんだよ
2017/06/12(月) 18:00:45.61ID:XJZ7MJot
プログラム言語の勉強は本当に頭が痛くなる
しかし動いた時の嬉しさは言葉にできない。
痴呆抑制にも効果があるのではないだろうか?
ただ、眼には良くないけど…
2017/06/12(月) 18:02:23.25ID:uEFWWPMQ
2chへの熱い風評被害
2017/06/12(月) 18:23:53.48ID:pgqA3Bjv
>>826
反抗期かw
2017/06/12(月) 19:16:10.02ID:2dDccTdY
>>831
いただきます…いただきますっつってんだろー!
俺には召し上がれすら言わねーのかよ!
って息子が反抗期に言ってた
2017/06/12(月) 19:40:16.61ID:jxW+MGk6
>>832
お前臭いから喋んな
2017/06/12(月) 20:30:42.94ID:mg3rFpBS
>>820
レスサンクス
2017/06/12(月) 20:33:11.67ID:pgqA3Bjv
>>832
それパクツイ
836デフォルトの名無しさん
垢版 |
2017/06/16(金) 00:21:26.44ID:pAg9stYl
演習問題で、抽象クラスを型に持ったメソッド見たのですが
クラスを型にした場合、何を返せば良いのでしょうか?

public Record getRecord(int idx)
{
return ???;
}

abstract public class Record
{
//特にリターンは無い
}

intやstringの型ならintやstringを返すということは解るのですが
特に返り値を持たないクラスはどうしたら良いのか想像がつきません

よろしくお願いします
2017/06/16(金) 01:09:23.90ID:poP4xQCz
抽象クラスを返せば?

要するに、具象クラスA・Bも、抽象クラスXととらえる事で、
異なる具象クラスA・Bに、共通の処理を書ける

return で、抽象クラスをもらったら、
それを該当する具象クラスへ、正しくキャストする
2017/06/16(金) 01:37:44.13ID:AzAJ43JZ
たしかに気持ち悪いな
階層がおかしい
2017/06/16(金) 03:02:04.76ID:jhdXcInh
>>837
キャストせず済むのが一番
2017/06/16(金) 03:25:03.02ID:jhdXcInh
>>836
例えば、return new MyRecord(idx)

public class MyRecord extends Record {
実装略
}

実際はそのgetRecordが定義されてるクラス内の別メソッドやらプロパティ使ったアクセス経由で値返す事が多いだろうけど。
2017/06/16(金) 21:10:04.87ID:NbKqOO6c
抽象クラスのシングルトンみたいなことが出来ちゃうのか?
だとしたら気持ち悪いわ
842デフォルトの名無しさん
垢版 |
2017/06/16(金) 22:35:15.61ID:qWm3MoH/
そうか?
2017/06/19(月) 17:44:20.17ID:wKau2iwt
腕試しに簡単なゲーム作ってるんだけど
敵キャラクターとか見方キャラクターのデータってどう保存しておくのが良いんだ?
育成要素無いからステータスは一定だから配列でどうにかできそうな気がするけど
各キャラクターの要素敵も味方もは「キャラ名」「HP」「攻撃力」「防御力」「すばやさ」
844デフォルトの名無しさん
垢版 |
2017/06/19(月) 19:07:31.87ID:pt8icPJA
>>843
オブジェクト指向ではないのか?
2017/06/19(月) 19:17:35.34ID:ZfjHm45J
>>843-844
csv,tsv,json,xmlなど好きな形で書いておいて、ファイルからデータ読み込んで、オブジェクトのインスタンスを生成して使うって話じゃないん?
そのデータが固定ならばjar内に同梱、可変なら外に置けるように作る
2017/06/19(月) 19:28:38.55ID:W0M1n2m6
>>843
そういうのこそクラス作っておくのがベスト
配列にするのは可読性が下がるから効率を追求するときだけにしとけ
2017/06/19(月) 19:29:23.18ID:W0M1n2m6
あーそっちか、すまん
2017/06/19(月) 19:47:36.02ID:wKau2iwt
ありがとうございます。
せっかくなのでcsvファイルを読み込むのに挑戦してみようと思います。
2017/06/19(月) 20:59:10.59ID:o0IU7wmv
腕試しって言ってるしそもそもオブジェクト指向を理解していないのでは
2017/06/20(火) 00:12:42.70ID:sy5ccpv+
配列は配列で便利ですよね
同じ処理のボタンとか、配列で綺麗にまとめられると嬉しくなります
話はそれますが。
2017/06/21(水) 07:17:21.25ID:n4ESO8N1
VBしかやったこと無いからJAVA能力検定1級というのを受けてみたんだけど、テキストエディタだけでコード書くのキツイね

コードフォーマッタ無いから手動でインデントしたけど、対応する鍵カッコを見失って困った

JAVAって標準のIDE無いからテキストエディタとコンパイラでやるんだろうけどキツイ世界だね
2017/06/21(水) 08:58:07.89ID:BZXMZb7j
まあな、メモ帳で1万行のメソッド書いてコンパイルできるようになったら一人前だ、それがJava
2017/06/21(水) 09:37:01.88ID:sUpvI2FC
Java8の標準ライブラリの範囲内で数値を8桁の2進数表記がやりたいのですが、良いやり方があれば教えてください

int i = 10; // 0 <= i <= 255
String actual = /* 整形 */

assertEquals("00001010", actual);

思いついたのはこれなんですが…あまりにもイマイチな気がしてます
String tmp = "0000000" + Integer.toBinaryString(i);
actual = tmp.substring(tmp.length - 8);
854デフォルトの名無しさん
垢版 |
2017/06/21(水) 09:57:48.03ID:A+TdX/Mq
>>852
そりゃなんかものすごい設計ミス
2017/06/21(水) 10:17:13.12ID:m473rNdf
>>853
String actual = Integer.toBinaryString(i | 256).substring(1);
856デフォルトの名無しさん
垢版 |
2017/06/21(水) 10:31:52.72ID:A+TdX/Mq
>>855
おまえあたまいいな
2017/06/21(水) 10:32:13.11ID:bqAd0GFb
>>854
エンタープライズならザラにあるよ
複雑だけど信頼性の高いプログラム
2017/06/21(水) 12:49:36.79ID:L1LFWazB
Java7以降の数値リテラルで、2進数は接頭辞 0b・0B だろ。
_ も無視されるから、間に使える

0b0000_1010
859デフォルトの名無しさん
垢版 |
2017/06/21(水) 12:53:26.47ID:A+TdX/Mq
>>857
設計が変でもそういうのはある。
しかし設計が変なことにはかわりなし。
860デフォルトの名無しさん
垢版 |
2017/06/21(水) 12:54:20.55ID:A+TdX/Mq
>>858
それが何か?
誰もそんな話してないよな。
2017/06/21(水) 13:04:11.72ID:sUpvI2FC
>>855
天才現る!
ありがとうございます、すっきり書けました
意図をコメントで残しておけば混乱もないでしょうし助かりましたm(_ _)m
2017/06/21(水) 13:05:10.78ID:bqAd0GFb
>>859
信頼性の高いプログラム作れるんだから変じゃない
優れた設計と言っていただきたい
2017/06/21(水) 13:08:10.05ID:bqAd0GFb
>>860
そんなこと言っとったら話題が広がらんだろうが
誰も話してなかったら話をしちゃいけないんだもんなあ
ああ辛いわあ
すごい話があるんだけどいわないから!
864デフォルトの名無しさん
垢版 |
2017/06/21(水) 15:18:14.32ID:K52r2H7q
>>862
Javaで一万行は普通は何か変だろ。
それそのものが信頼性高くても何か作りがおかしいことには変わりはない。

>>863
なに必死になってんだ?大丈夫か?
誰もおまえのこと悪く言ったりしてないぞ。
2017/06/21(水) 16:09:47.19ID:CwIOTiNS
>>864
人を刺してる人が居たら
刺されてるのが自分じゃなくても嫌な気持ちになるだろ
俺はお前の犯罪を止めたい
2017/06/21(水) 16:10:28.28ID:CwIOTiNS
1万行は何も変じゃない
867デフォルトの名無しさん
垢版 |
2017/06/21(水) 16:20:00.12ID:K52r2H7q
あーはいはいそうですね
2017/06/21(水) 17:50:01.76ID:CwIOTiNS
>>867
そうです、1万行は普通です
2017/06/21(水) 17:52:45.71ID:9ByPg2Qh
コメント、改行のみは除いて1メソッド15行以内に収めましょう
2017/06/21(水) 17:53:22.83ID:CwIOTiNS
1万行が普通じゃないと言っちゃう人は
業務経験が圧倒的に不足していると言わざるを得ない
大規模開発では普通にあるし普通に書けないと仕事にならない
2017/06/21(水) 17:54:52.41ID:CwIOTiNS
>>869
モデルにデータ設定するだけで1000行超えるんだが
2017/06/21(水) 17:56:18.16ID:CwIOTiNS
保険業とか著作権管理とかザラだが
2017/06/21(水) 18:21:57.13ID:8F0mxbPm
1つのクラスに1万行とかもありますか?
2017/06/22(木) 14:02:19.04ID:o0ACLL8F
派遣で医療系で使う基幹システム作ってる会社行ったとき
2万行越えのクラスファイルが4つぐらいあったな
変数は基本全てクラス変数で、かつ密結合でクラスファイルが
別のクラスのクラス変数参照しまくってるからバグの特定が困難で
最適な改修方法を精査するのにソースの条件分岐をメモってるだけで
何百行にもなるほどクソなソースで後にも先にもここが最凶最悪だったな
875デフォルトの名無しさん
垢版 |
2017/06/22(木) 17:07:27.66ID:TWN3+XGD
でかいクラスの中身がほとんどC言語ってやつか・・・
876デフォルトの名無しさん
垢版 |
2017/06/22(木) 18:35:08.32ID:06KMQ0Mv
>>874
保守のたいへんさが分かってよかったじゃないか。

世の中、そんなのばかりだよ。
877デフォルトの名無しさん
垢版 |
2017/06/22(木) 18:35:50.75ID:06KMQ0Mv
オープンソースの有名な製品もコードを見るとかなりクソだったりする、
2017/06/22(木) 19:30:31.61ID:lxRnk/Ky
1万行にしないためのJAVA

それが1万行になるという事はJAVAを書いてるコボラ
2017/06/22(木) 19:32:03.01ID:lxRnk/Ky
構造化プログラムをJAVAで書くコボラがIT業界名物デスマの元凶
880デフォルトの名無しさん
垢版 |
2017/06/22(木) 21:12:35.00ID:p66dP4Lb
まともな設計できるやつがほとんどいないってことだな
2017/06/22(木) 22:09:46.81ID:7SsgklDx
>>877
コードの良し悪しより、便利かどうかだからな
コードの綺麗さにこだわってるくせにろくなもん作ったことない、なのに声だけデカい奴が最近は増えたけど
882デフォルトの名無しさん
垢版 |
2017/06/22(木) 22:50:42.88ID:yHDavZL4
□ がこの様に一直線に並んでいて、選択した□の幅が広くなり、それによって残りの□の座標を変化させたいです。
□ □ □ □
↓左から2番目を選択([ ]は幅が広くなっていることを示している)
□ [ ] □ □
に表示したい。
どう書けばいいでしょうか?
for (int i = 0; i < 4; i++) {
if (i == cnt) {

} else {

}
g.fillRect(20 + (80 * i), 300, 40, 40);
}
2017/06/22(木) 23:13:46.79ID:Wf/TPVDN
public static void sysprif(String s, Object... args) {
System.out.printf(s, args);
}
とか書くのは邪悪なんでしょうか?(いや、邪悪だろうけど、何か後で酷い目にあったりするんだろうか)
2017/06/22(木) 23:58:20.46ID:5ZvG5KR4
>>883
そのsyspritfの存在意義ってなんなん
printfを直接呼び出すのと比べてなんのメリットがあんの?
885デフォルトの名無しさん
垢版 |
2017/06/22(木) 23:59:06.30ID:06KMQ0Mv
>>883
そもそもメソッド名の短縮化あたりで年配に見えてしまうが?
886デフォルトの名無しさん
垢版 |
2017/06/23(金) 00:00:33.41ID:BC3U1Ap1
>>884
いや彼はObject型の可変引数でいいのか聞いているのではないのか?
2017/06/23(金) 01:55:15.43ID:eMJoExoD
※882
ttps://www.axfc.net/u/3818221
とりあえず作ってみた。
こんな感じ?
2017/06/23(金) 01:56:56.84ID:eMJoExoD
※882じゃなくて>>882だな
2017/06/23(金) 16:59:14.45ID:4xTfYoSZ
すごいどうでもいい質問かも知れないけど
メソッドの引数の括弧とバケットの間ってスペース入るのがデフォなの?
890デフォルトの名無しさん
垢版 |
2017/06/23(金) 17:06:08.69ID:zs9t5glj
>>889
C言語のスタイルを受け継いでいるからスペースを入れないのが普通。

if文等なら入れる。
891デフォルトの名無しさん
垢版 |
2017/06/23(金) 17:15:16.13ID:zs9t5glj
>>889
") {"の話か。これならスペースを入れるのが主流だろうな。これがC言語だとここで改行するスタイルもある。

Javaはクラスの場合は改行、メソッドの場合は改行しないのが普通。
2017/06/23(金) 18:28:39.19ID:0SAurMDI
基本的にeclipseのフォーマッターに従っときゃいいよそんなもん
改行なんかは見やすく調整が必要だったりするけど、スペースなんて好みの入る余地はない
2017/06/23(金) 20:39:04.90ID:4xTfYoSZ
>>891,892
なるほど!ありがとうございました!
894デフォルトの名無しさん
垢版 |
2017/06/23(金) 22:18:29.83ID:+oxSuAhB
>>891
クラスも改行しないだろ
まあ好みの問題か
2017/06/24(土) 00:30:40.20ID:zN8wjmA4
一万行ドヤ顔ワロス、初心者スレだから良いのかw
896デフォルトの名無しさん
垢版 |
2017/06/24(土) 00:43:48.32ID:EAyBYnWy
どうなんだろうねえ。たまに真に受ける純真な人が居たりするから初心者スレではなるべくならない方が良いとは思うが。
897デフォルトの名無しさん
垢版 |
2017/06/24(土) 05:42:16.85ID:AiSsJYjg
>>894
クラスは改行するのがJava本来のスタイル。
898デフォルトの名無しさん
垢版 |
2017/06/24(土) 05:43:14.11ID:AiSsJYjg
>>892
はあ?
899デフォルトの名無しさん
垢版 |
2017/06/24(土) 08:15:02.93ID:pwzMZ27W
>>887

そんな感じです。ちょっと説明しずらいので描いてみました。
ttps://www.axfc.net/u/3818541.png

□同士の間隔は変わらないのですが、選択したものの幅が広がり、
他の位置を広がった幅分だけ設定するのが難しいと感じています。
2017/06/24(土) 18:01:58.54ID:Gf6BkFv4
>>899
文字じゃ無くて四角を描画するのかな?
こんな感じ?
ttps://www.axfc.net/u/3818669
901デフォルトの名無しさん
垢版 |
2017/06/24(土) 18:46:51.81ID:pwzMZ27W
>>900

おおお!ありがとうございます。まさにこれです!
しかも、クリックで選択できるとは。

ありがとうございます。
902デフォルトの名無しさん
垢版 |
2017/06/24(土) 22:36:11.32ID:EAyBYnWy
>>897
おまえの言ってるのは

class X
{
}

みたいなことか?

class X {
}

ではなくて。

しかし後者のソースの方が圧倒的に多いように思うんだがなあ。

まあでも Java の場合は文法的にはどちらでもよく完全に好みの問題でしかないからどうでもいいことだが。
2017/06/24(土) 22:39:41.70ID:jG1C/Elt
ナムナムシテルゥ??
2017/06/24(土) 22:43:45.10ID:EAyBYnWy
>>899
できればエロ広告満載のアップローダを使うのは控えて欲しかった。
隠す必要のない画像ならimgurとかもあるしな。
http://blog.livedoor.jp/easy2ch/archives/256381.html
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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