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/06/08(木) 09:12:33.52ID:s2Pg+MlS
>>761
違う、そうじゃない
2017/06/08(木) 09:13:12.13ID:s2Pg+MlS
なんていうか全然違う
2017/06/08(木) 09:51:13.35ID:8s3ACju2
そうか、なら「期待してない」のに質問したお前はバカってこった
2017/06/08(木) 10:24:36.27ID:s2Pg+MlS
>>764
その理屈はおかしい
2017/06/08(木) 13:04:07.64ID:5ZMHWe6Z
自分だけは馬鹿じゃないという前提
2017/06/08(木) 13:14:32.28ID:E1+CYD4H
理屈をおかしいと否定するのには反証が必要なんだが用意できるのか?
2017/06/08(木) 17:59:41.83ID:KYbxYPC/
>>767
その理屈はおかしい
2017/06/08(木) 19:30:29.30ID:5ZMHWe6Z
反証可能性のないものはそもそも確からしさを証明することは不可能
2017/06/08(木) 20:22:41.01ID:pp906l+Q
証拠がなくても理屈自体がおかしかったらおかしいだろ!
2017/06/08(木) 20:57:22.06ID:lTyTbv9E
それってあなたの感想ですよね?
何かそういうデータあるんですか?
2017/06/08(木) 21:11:01.28ID:zNBw7V4S
結局、理屈がおかしいということの論拠を示さなければならない
2017/06/09(金) 07:14:45.02ID:pZ1NMnJL
初心者スレで何を叫んでるんだか
2017/06/09(金) 18:31:46.01ID:98wynj8R
java考えた人ってアタマいいな
というよりコンピュータ言語を開発するのが大変そう
オラクルの人すごくね?
2017/06/09(金) 18:36:07.01ID:9/xTndd8
サン・マイクロシステムズ「せやな」
2017/06/09(金) 19:58:35.89ID:hjkAo8D/
うーん
2017/06/09(金) 20:43:09.35ID:NLmrtYsZ
仮想マシン考え出した人は頭いいなと思う
778デフォルトの名無しさん
垢版 |
2017/06/09(金) 20:59:18.53ID:HFELVm93
ORACLEの人はさほど凄くはない。
779デフォルトの名無しさん
垢版 |
2017/06/09(金) 21:01:00.73ID:HFELVm93
仮想マシンのアイディア自体はJavaが世界初というわけでもない。
2017/06/10(土) 09:52:04.70ID:EfK23cou
なぜここまでJavaが普及したのか
2017/06/10(土) 12:08:16.23ID:S4+AOz/V
アルゴリズムの質問になるんだが、
1〜9までの数値が0〜16個のまでの範囲でランダムに発生する
それらを組み合わせによって2〜9のどの数で割っても余りなく割り切れるがどうか確認したい
発生した数値は1回しか使えない
こういう感じのは作るのは難しいでしょうか?
2017/06/10(土) 12:13:55.94ID:LwGST/Rf
1〜9を0〜16個ランダムに
重複無し

この時点で条件破綻してない?
2017/06/10(土) 12:35:43.81ID:S4+AOz/V
発生の段階で同じ数値が出た場合出た回数だけ使えるます。
数値を発生させた時に5が3回出たならば5は3回使えます。
2017/06/10(土) 13:19:56.04ID:DbYsfAwS
> それらを組み合わせによって2〜9のどの数で割っても余りなく割り切れるがどうか確認したい
> 発生した数値は1回しか使えない

意味がわからない
[1, 5, 9]が発生したらどうなんの?組み合わせって?
2017/06/10(土) 13:21:29.61ID:Q1XzIQD3
何となく言いたい事は分かった
1:0〜16の範囲でランダム→これで0〜16桁までランダムに決まる
2:桁数分1〜9をランダム生成→5桁なら5つの数字(重複有り)、10桁なら10つの数字、と言った感じ
3:最後に数値の組み合わせを考える
4:2〜9で割るって感じか

やれないことは無いんじゃね?
1は2のループ回数を決めるだけだし、2も生成した数字を配列とかに格納すれば
3の処理は取り出した後に中身を消すっていう操作にすれば、重複無しの数値を作れるはず
(あるいはハッシュキーで一回使ったキーは使えなくするとかでも良い)
4は出来上がった数値で割るだけだし
2017/06/10(土) 13:22:00.81ID:OmAd6T/1
9×8×7×5=2520で割り切れるかどうかを調べたいって話?
787デフォルトの名無しさん
垢版 |
2017/06/10(土) 13:28:51.47ID:iX4dF/b7
[2, 3, 4, 5, 6, 7, 8, 9]

6 で割り切れるならば 2, 3 でも割り切れるので 2, 3を除外
8 で割り切れるならば 4 でも割り切れるので 4 を除外
[5, 6, 7, 8, 9] の最小公倍数は 2520

2〜9 のどの数で割っても余りなく割り切れる数は 2520 の倍数
2520 の倍数の1桁目は 0

1〜9までの数値で0〜16桁の数のうち1桁目が0になるのは0桁のとき、かつ、その場合に限る
なので桁数が 0 ならば
2017/06/10(土) 14:13:04.91ID:EfK23cou
ID:S4+AOz/V はJavaの前にまず日本語から勉強しろや
789デフォルトの名無しさん
垢版 |
2017/06/10(土) 14:15:38.99ID:iX4dF/b7
日本語ならまかせろ!

「ご〜する」で謙譲語です
790デフォルトの名無しさん
垢版 |
2017/06/10(土) 14:55:12.73ID:Aw9IeMww
問題が未だに理解できない。一体何をやりたいのか?
2017/06/10(土) 16:16:09.55ID:9/7KucPr
>>788
当たり前だけど自分の考えをきちんと言語化して説明できるってめちゃくちゃ重要な能力ですよね…
これができない人とは仕事したくない…
2017/06/10(土) 16:18:13.69ID:wDp6rpe3
まず使える数字を決める
 1が何個使えるか0〜16のランダムで決める
 2が何個使えるか0〜16のランダムで決める
  9まで同様に決める
使える数字を組み合わせて数値を作る
 例えば1が3、2が2なら組み合わせによって11122や12211等の数値が何種類かできる
できた数値毎に2〜9が割り切れるか計算する
 11122は2で割り切れる
 11122は3で割り切れない
  これを9まで行う
 12211や他の数字についても同様

こういう事をやりたいのかと思ったんだけどどう?
2017/06/10(土) 17:15:59.68ID:S4+AOz/V
説明下手ですみません。
組み合わせといのは単純に数字を足すだけです。
ただ発生させた数値は使ってもいいし使わなくても良いので組み合わせと書きました。

お手数おかけしました。
他の方法を考えてみます。
794デフォルトの名無しさん
垢版 |
2017/06/10(土) 18:39:57.26ID:YXt3H8K1
うーん。まだわからん。
そもそも何をやりたいのか?
そしてそれは宿題なのか?
2017/06/10(土) 19:01:24.42ID:LwGST/Rf
>>793
不完全燃焼だからできればもう一度説明してほしいな
長くなってもいいから
これは俺の我侭でもあるから面倒ならスルーしてね
2017/06/10(土) 21:06:14.05ID:wUHDZb6h
>>ID:S4+AOz/V
まだ見てるならみんなもやもやしてるみたいだから

◆要件1
 ・1〜9までの数値が0〜16個のまでの範囲でランダムに発生する。
 〇疑問点
  ・以下のケースどちらも当てはまる。
  @1〜9の数値1つずつに関して、0〜16個ランダムに生成する。
    ※最大生成数9*16
  A1〜9までのランダムの数値を0〜16個生成する。
    ※最大生成数16

◆要件2
 ・発生した数値は1回しか使えない
  ・発生の段階で同じ数値が出た場合出た回数だけ使えるます。
  ・数値を発生させた時に5が3回出たならば5は3回使えます。
  ・ただ発生させた数値は使ってもいいし使わなくても良いので組み合わせと書きました。
 〇疑問点
  ・なし

◆要件3
 ・組み合わせといのは単純に数字を足すだけです。
 〇疑問点
  ・足すとは文字列としてか数値としてか。
   ※文字列だと思うけど念のため

◆要件4
 ・それらを組み合わせによって2〜9のどの数で割っても余りなく割り切れるがどうか確認したい
 〇疑問点
  ・要件1で生成した割り切れた数字のみの結果表示でいいのか。
   ※要件1で生成した数値全件表示とかいらない?
2017/06/11(日) 02:09:24.91ID:5kRuFFSB
AOJの2問目が出来ません。
入力した数の3乗を表示する課題なのですが…。
下が提出したコードです。
https://ideone.com/NyK9NB
2017/06/11(日) 02:13:52.32ID:9ARLDmcQ
ArrayListにおけるremoveの挙動に関して質問なのです
removeの引数として、indexの位置かオブジェクトを指定できるのですが
listが数値の場合に、数値をオブジェクトとして引数を指定する場合はどのように記載すれば良いのでしょうか?

例えば
ArrayList<Integer> ary = new ArrayList<>();
ary.add(1);
ary.add(2);
ary.add(33);
//=>[1,2,33]
System.out.println(ary.remove(33));
System.out.println(ary);
直接33を削除したくても、IndexOutOfBoundsExceptionのエラーが発生してしまうので・・・・・・

listをString型に変換して、文字としての33を指定すれば出来ない事はないのですが
何かまどろっこしいので良い方法があればご教授していただきたいです
2017/06/11(日) 02:18:44.79ID:9ARLDmcQ
>>797
プロコンの結果(Output)は指定された通りに出力されていないとダメです
そのコードの場合だと、余計なprintが付いてるので問答無用で弾かれます
今回の場合だと、計算結果だけ出力すれば良いです
×:〜求める3乗値は125です。
○:125
800797
垢版 |
2017/06/11(日) 02:32:22.94ID:5kRuFFSB
>>799
ありがとうございました。

このサイトって融通きかないんですね…。
2017/06/11(日) 02:56:14.34ID:vYdG9fRO
>>800
その「融通」を効かせるのがどれだけ困難かがその内わかるよ
802デフォルトの名無しさん
垢版 |
2017/06/11(日) 03:55:11.06ID:8f1mqXi5
>>798
ary.remove(new Integer(33)) ってやるとどうなる?
2017/06/11(日) 05:00:56.39ID:vYdG9fRO
値を直接指定するなら重複なしと考えていいはずだからListじゃなくてSetにしちゃえば
2017/06/11(日) 11:38:23.02ID:lL7inWnj
>>800
AOJの説明文読むのとチュートリアルやるのくらいやれ
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
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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