X



★★Java質問・相談スレッド180★★ [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2017/04/21(金) 22:13:17.42ID:Sf0TFsly
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 (p)ttp://www.wikiroom.com/java/?path,classpath
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

質問時の心得
・コンパイルエラーか実行時エラーか、エラーではないが意図しない動作なのかはっきりしろ。あとエラーメッセージちゃんと読め。
・前提条件としてOS、開発環境、バージョン、使用フレームワーク等を明記。

前スレ
★★Java質問・相談スレッド179★★
http://echo.2ch.net/test/read.cgi/tech/1476706523/
0002デフォルトの名無しさん
垢版 |
2017/04/21(金) 22:14:40.20ID:Sf0TFsly
「質問用テンプレ」
下記の各項目のうち不要・不明な項目や選択肢は消してください。
自分にとって適切な項目や選択肢がない場合は、項目や選択肢を追加して構いません。

【言語のバージョン】
【フレームワーク】
【OS】
【開発環境】
【使用しているIDE】
【Java歴】
【javadocは見たか】
【質問事項】
【エラー内容】
【エラーの経緯】
【回答期限】
【その他自由記入】
0007デフォルトの名無しさん
垢版 |
2017/04/22(土) 15:39:14.27ID:Btp73K0S
javaをやるためには基礎知識が必要っていうことで基本情報技術者の資格を取ろうとしてるんだけど補数のところで分からない事があるから教えてほしい
10進数の4-3っていう計算をするとき4と3はそれぞれ
0100と0011じゃん
で、3を反転させた値に1を足したら1101←これが-3となる
で、二進数方式でこれら二つを足すと10001、そして一番上の位は切り捨てるそうだから1になる、これはなんとなくわかる
では3-4となると、これと同じやり方で計算すると1111になった
1の補数的な意味では確かにこれはマイナス1になるけどこれが実際の数なのかそれとも負の値を持った補数なのかってどうやって判断するの?
つまり最初の計算ででてきた10001っていう答えはそのままの数として扱っているのに最後の計算で出てきた1111っていう計算結果は負の数ではなくもしかしたら15かもしれないじゃない
長くなってしまったが回答よろしく
0009デフォルトの名無しさん
垢版 |
2017/04/22(土) 15:53:28.13ID:XRNdcvpY
>>7
型しだい
マイナスの符号を持つ型なら最上位ビットはこの値がマイナスですよー
というフラグなので、値は-1
0011デフォルトの名無しさん
垢版 |
2017/04/22(土) 16:34:37.45ID:Btp73K0S
もう一個質問お願いします
javaでブラックジャックのゲームを作りたい、その際に分からない事が
・52枚のカードを一枚ずつ書かないために多次元配列を使ってすべてのカードを表すことができるかどうか、そして1-13のカードを全て書き並べるのではなくfor文などで配列の中に表せるかどうか
・カードを配列の中からランダムに引くことが出来るかどうか、そして一枚ひかれたらそのカードは次からひかせないようにするにはどうしたらよいか
・web上で実行した際ユーザー側にスタンドorヒットを選択させるボタンの配置方法
・具体的なカードの画像をネットで拾ってそれを配列に反映させる方法

繰り返し処理がかける程度の初心者なのでどれか一つでもいいのでやり方を教えてくれると助かります
一番下のはおまけ的な意味なので簡単だった場合でいいです
自分が今まで作ったプログラムでは実行したら10000までの素数は何か、みたいな計算結果だけを表示させるようなプログラムだけなのでユーザー側にアクティブにさせるのがまだよくわかってないです
0014デフォルトの名無しさん
垢版 |
2017/04/22(土) 16:43:46.75ID:Btp73K0S
>>11
追記
オブジェクト指向が少しだけわかったのだけどこのプログラムを組む際にどこで使ったらいいかも教えてほしいです
自分の中のオブジェクト指向はクラス(車だったり人間だったり)は皆とりあえず一律の動きができるっていうイメージ
しかいdealerもuserも一人ずつしかいないのだからオブジェクト指向にする必要があるのかなっていうのが今自分が抱いている疑問
0015デフォルトの名無しさん
垢版 |
2017/04/22(土) 16:52:28.64ID:+hjaOcO8
>>7
>>9 の言うように2の補数表現だと最上位ビットは符号を表すから 4bit だと -8〜7 までしか扱えない
0016デフォルトの名無しさん
垢版 |
2017/04/22(土) 16:58:43.59ID:hC7lZfMR
プログラムは二進数!って言うけど滅多に使わないよな
フラグの指定くらいか?
0017デフォルトの名無しさん
垢版 |
2017/04/22(土) 17:00:16.20ID:+hjaOcO8
>>11
まずは java ブラックジャック ソースコード 辺りでググって適当なソースコードを見てみることをおすすめする
0020デフォルトの名無しさん
垢版 |
2017/04/22(土) 22:17:18.25ID:x8LqAlRP
>>11-19
2次元配列[4][13]のようにはしない人が多い。
1次元配列[52]のようにする

その配列の要素には、カードクラスの参照を入れる。
そして、カードクラスには、便利なメソッドを追加する
0021デフォルトの名無しさん
垢版 |
2017/04/23(日) 03:06:52.12ID:wQhD8zAd
>>14
自分で作ることを考えてみたらこんな感じ
もちろん人によってかなり変わると思うけど、どんなものがクラスになるのかのイメージにでも

bj パッケージ
Bootstrap ・・・ mainメソッド

bj.game パッケージ
Match ・・・ 1回分のゲームの管理

bj.cards パッケージ
Deck ・・・ 山札
Hands ・・・ 手札
bj.cards.cardパッケージ
Card ・・・ カード
Number ・・・ 数字
Suit ・・・ スート

bj.player パッケージ
Participant ・・・ 参加者(抽象クラス)
Dealer ・・・ ディーラー
Player ・・・ プレーヤー

bj.player.strategy パッケージ
PlayingStyle ・・・ カードをひく基準を決めるインタフェース
DealersStyle ・・・ ディーラーがカードをひく基準(17より小さければひく)
GenericStyle ・・・ 21より小さければカードをひく
RandomStyle ・・・ さいころふって偶数ならカードをひく
0022デフォルトの名無しさん
垢版 |
2017/04/23(日) 03:40:12.93ID:q6MqXCrn
>>7
Javaで実際に整数計算するプログラム作って2進数で表示させてみればわかると思うよ。
0023デフォルトの名無しさん
垢版 |
2017/04/23(日) 17:57:11.34ID:fsvPYIZO
>>16
組み込みとかだと出てくるんじゃない
あと仕組みを知っておくとトラブルシューティングで役立つ
0024デフォルトの名無しさん
垢版 |
2017/04/23(日) 18:04:31.15ID:fsvPYIZO
>>11
まずデッキとカードクラス作っていろいろ遊んでみればいいんじゃない
シャッフルするとか一枚引くとか
カードが一枚もないデッキから1枚引こうとして例外とか

次にそれらのクラスを利用するブラックジャッククラスを作るわけだが
前に作ったクラスは後に作ったクラスに依存しないように作るのがポイント
0025デフォルトの名無しさん
垢版 |
2017/04/24(月) 09:03:36.42ID:IVlW4HWK
出された課題通りにブラックジャックの作成をやってみてるのだが早速ここでエラーが出てきて困ってしまった
正直抽象クラスどころかオブジェクト指向の理解も危ういのだがテンプレートを使いながらの作成
配列を引数に持たせよといわれてなんのこっちゃって感じで課題を進めてみてるのだがとりあえず見てほしい
abstract class human{
abstract public void open();
abstract void setcard(int num[]);
abstract public void checksum();
int myCards;
}
class Dealer extends human{
int cards[]={1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13,1,2,3,4,5,6,7,8,9,10,11,12,13};
public void deal();

}
class User extends human{
}

アドバイス頼む、分からなくて困ってる
0026デフォルトの名無しさん
垢版 |
2017/04/24(月) 09:20:42.11ID:jdd5Ifgu
>>25
dealerクラスとuserクラスへabstractのメソッドを下記のように実装したらひとまずコンパイルできると思うよ
public void open(){}
void setcard(int num[]) {}
public void checksum() {}
0027デフォルトの名無しさん
垢版 |
2017/04/24(月) 09:53:32.48ID:IVlW4HWK
>>26
できた
どうもありがとう。
抽象クラスにはメソッドを書かせる事を強制させる効果があるという事か
0029デフォルトの名無しさん
垢版 |
2017/04/24(月) 21:23:53.16ID:MN8pW2Am
誰かにやってもらったら課題の意味がないよ
聞く分には調べ方を知るって点で意味あると思うけどね
0030デフォルトの名無しさん
垢版 |
2017/04/28(金) 09:58:58.91ID:9cLmCsbT
jdk9.java.net がヒッソリと消えたな……
検索のURLはまだ変わってないのに 301 も返してないんだな
0032デフォルトの名無しさん
垢版 |
2017/04/29(土) 19:32:35.83ID:hcXxZ9K5
>>29
単純脳死作業者になるための課題ならいいな
そうでないならエラーメッセージ読め
今回たまたま当たっただけでパスとか別のエラーの可能性もある
0033デフォルトの名無しさん
垢版 |
2017/05/03(水) 16:56:58.73ID:vae9tRPy
>>16 に浮動小数点数の計算で予期せぬ挙動に苦しむ呪いをかけた
0034デフォルトの名無しさん
垢版 |
2017/05/03(水) 19:15:40.71ID:C3ziDNaA
不動小数点
0036デフォルトの名無しさん
垢版 |
2017/05/07(日) 14:34:15.89ID:y87U8XUp
バイナリデータ扱う時に2進表記使ったな
2進表記使える前のバージョンで苦労した覚えがある
0037デフォルトの名無しさん
垢版 |
2017/05/07(日) 17:51:40.16ID:UtdAAWfL
0b とかアンダースコア入れられるとか知らなかった。Java7から使えるようになってたのか。
0038デフォルトの名無しさん
垢版 |
2017/05/07(日) 17:53:01.73ID:UtdAAWfL
でもprintfで2進文字列化ってできないよね?
こないだ探したけど見つからなかった。
0040デフォルトの名無しさん
垢版 |
2017/05/07(日) 22:51:58.27ID:rIPClhkl
フォーマットを %032s とかにしといて Integer.toBinaryString(x) かな。
0041デフォルトの名無しさん
垢版 |
2017/05/07(日) 23:29:44.11ID:rIPClhkl
sには0フラグだめだったんだな。面倒臭いな。
0043デフォルトの名無しさん
垢版 |
2017/05/08(月) 01:08:56.19ID:fEvZ8r+7
>>42
Integer.toString(i, 2) は Integer.toBinaryString(i) と同じだろ。
>>40-41 は桁数固定で上位桁0パディングする話。
こんな風にすりゃできるけどね。スマートな感じしないよな。
String s = String.format("%32s", Integer.toBinaryString(i)).replace(' ', '0');
0044デフォルトの名無しさん
垢版 |
2017/05/08(月) 23:26:56.42ID:6xooNmVM
JavaでGUIのゲームを作ろうと思うんだけど
ゲームならGUIってJavaFXとswing、どっちを採用するのが良いかな
JavaFXの方が新しいけど、swingだと過去の遺産が多いっていう魅力があって……
0046デフォルトの名無しさん
垢版 |
2017/05/08(月) 23:59:06.86ID:sBIUkarF
どっちにしろJavaを要求する時点で誰もやりたがらないからどうでもいい
君がマインクラフトを作れるなら別だけど、だとしてもわざわざハンデを負うメリットは何もないよ
0048デフォルトの名無しさん
垢版 |
2017/05/12(金) 18:26:19.55ID:MJv8Zbqq
一般的なJavaやサーバーサイドの話ならともかく、GUIならほとんどのJava開発者にとっては実際どうでもいいと思うぞ
0051デフォルトの名無しさん
垢版 |
2017/05/21(日) 12:59:43.02ID:ub1FGkoP
Windowsのコマンドプロントでabe backapからabファイル作成→abファイルをAndroid Backup Extractorを使ってtar変換する際に

exception in thread main java.lang.reflect.invocationtargetexception
以下いっぱい文字列

がでて、tarファイルは作成されるものの、ファイルサイズが220mから170mくらいまで減って上手く変換できてないようなのですが、ここで詳しいを質問してもよろしいでしょうか?
0053デフォルトの名無しさん
垢版 |
2017/05/21(日) 15:27:48.48ID:ub1FGkoP
>>52
了解です
スレ汚し失礼しました
0054デフォルトの名無しさん
垢版 |
2017/05/21(日) 16:34:24.78ID:pRELyxti
>>50
いきなりKotlinからはじめるのは難しいのか
でもJavaより読みやすそうに見えるんですよね
0057デフォルトの名無しさん
垢版 |
2017/05/22(月) 12:30:53.96ID:0jDVmNHt
Javaやってて知らんのなら素人と紙一重くらいだな
日本でJavaやってる奴の8割はそのレベルだけどね
0059デフォルトの名無しさん
垢版 |
2017/05/22(月) 13:51:56.90ID:X+l5vrxK
コトリン(*´∀`*)ポッ
0060デフォルトの名無しさん
垢版 |
2017/05/22(月) 15:56:57.89ID:qzI8l5B/
>>57
名前知ってるかどうかは別にして
ほとんどの奴がやってるだろ
やってない奴は、こーやったらこーなる的なプログラミングしてるやつ
0062デフォルトの名無しさん
垢版 |
2017/05/22(月) 18:05:40.08ID:ydRKGq7n
リスコフの置換原則という単語は知らなかったけどis-aは常に意識してる
と言うか継承を滅多に使わない
0065デフォルトの名無しさん
垢版 |
2017/05/22(月) 22:16:49.63ID:ydRKGq7n
>>64
0066デフォルトの名無しさん
垢版 |
2017/05/23(火) 00:32:52.20ID:Vjf5EXYM
androidだと、よく分からんが仕方なく継承するしかなくなる
まぁ機能を使う以上、そこまで親子関係おかしい訳ではないが
0069デフォルトの名無しさん
垢版 |
2017/05/23(火) 09:29:01.10ID:oLMKx381
Javaの場合は何もしなくてもObjectが継承されていることはみんなには内緒にしておこう。
0070デフォルトの名無しさん
垢版 |
2017/05/23(火) 14:58:41.09ID:+VZhYDLB
継承を使わないっつうのはそういうことじゃないだろアホ
得意気に馬鹿晒してなにがしたいんだか
0071デフォルトの名無しさん
垢版 |
2017/05/23(火) 15:41:36.98ID:oLMKx381
キリッ
0072デフォルトの名無しさん
垢版 |
2017/05/23(火) 16:01:22.50ID:UVgxThtR
Objectクラスのメソッドについてリスコフの置換原則守ってるなら間違ってない
0073デフォルトの名無しさん
垢版 |
2017/05/23(火) 16:53:24.23ID:A5t1zfLR
>>69
それは知ってるけど、それをわざわざ「継承する」とは普通言わないやろJK
0076デフォルトの名無しさん
垢版 |
2017/05/23(火) 20:54:01.87ID:mYQ+ynVM
>>73
言う。
0077デフォルトの名無しさん
垢版 |
2017/05/23(火) 21:00:29.01ID:RzWtz9Yc
言わないコンテキストと
言うコンテキストがあるわけだから
お互いのコンテキストをぶつけて消滅させて
人類が滅びれば地球に平和が訪れます
それが真のユートピア
0078デフォルトの名無しさん
垢版 |
2017/05/23(火) 21:00:52.63ID:RzWtz9Yc
地球平和のためのオブジェクト指向
0079デフォルトの名無しさん
垢版 |
2017/05/23(火) 21:29:33.07ID:A5t1zfLR
>>76
文脈考えような
0080デフォルトの名無しさん
垢版 |
2017/05/23(火) 23:45:40.00ID:hoEPyhx6
>>79
あほか
0082デフォルトの名無しさん
垢版 |
2017/05/23(火) 23:55:26.23ID:A5t1zfLR
>>80
常識的に考えて「継承はあまり使わない」って言ったら暗黙的なObject継承は除くやろ
Object継承含んだら、継承率100%になるやん
アスペかよ
0083デフォルトの名無しさん
垢版 |
2017/05/23(火) 23:56:04.61ID:A5t1zfLR
いちいち「暗黙的なObjectクラスの継承以外の継承はあまり使わない」って書けって事か?
0088デフォルトの名無しさん
垢版 |
2017/05/24(水) 07:21:05.75ID:sXHe3Xzk
>>87
いきなりObject
0089デフォルトの名無しさん
垢版 |
2017/05/24(水) 07:25:08.22ID:sXHe3Xzk
相手が言ってることがおかしいと思ったら
相手の前提と自分の前提が違うんじゃないかと思わないと
自分の前提で相手の発言を解釈して相手がおかしいと
いうのは簡単だけど、それって会話が噛み合ってないだけだよね

たしかにJavaのすべてのクラスはObjectを継承するけれども
その意味での継承と、自分はあまり継承を使いませんというときの継承は
概念が異なることに気付けると思うし気づくべきだと思う
0090デフォルトの名無しさん
垢版 |
2017/05/24(水) 07:35:37.60ID:sXHe3Xzk
言葉が同じだから同じことを話しているんだと思うのが危なくて
言葉は同じでも概念が異なることがある

自分の概念を相手が言うことに当てはめておかしかったら置換可能でないということ
継承してはいけないものを継承してる

これがリスコフの置換原則
0091デフォルトの名無しさん
垢版 |
2017/05/24(水) 09:20:49.63ID:IXUmJ/sE
Effective Javaが名著だと聞いて読んでみたことがある
継承より委譲を使うこと、と書いてあって、すぐにクソ本だと見抜いたよ
Objectを継承しないオブジェクトは存在しないが、委譲は必ずしも必須ではない
そんなこともわからない著者が書いた本をありがたがってるんだから、世間のJavaプログラマのレベルなんてお察し
0092デフォルトの名無しさん
垢版 |
2017/05/24(水) 09:25:04.61ID:rgjqqiZm
>>91
中身ちゃんと読んでない事丸分かりでワロタ
なぜ名著と言われてるか分からん頭なのに、なぜ自信満々なのか本当に理解できん
0093デフォルトの名無しさん
垢版 |
2017/05/24(水) 11:52:04.86ID:RPJTgULc
どの言語でも「Effective 何々」という本は、プロ必須本。
ここまで読めば、ひとまず上司に聞きながら、仕事ができるレベル

これ以上のレベルの本は「メタプログラミング 何々」という本。
これは、ライブラリ・言語実装者向けの本

最近の本では、委譲を勧める方が多い。
Web開発を想定して、委譲の方が柔軟性があるから

それに委譲は、コンポーネントの疎結合にも使える

オブザーバー、発行・購読
中央管制塔ありのメディエイター
メッセージキュー
0096デフォルトの名無しさん
垢版 |
2017/05/24(水) 14:14:28.08ID:SSLM/4UF
>>89
自分で気づいて欲しくて遠まわしに言ったんだがな
Javaでは必ず継承してるからリスコフの置換原則は必ず付きまとう
と言うか継承を滅多に使わないとは間違いで上書きしてないだけでメソッドはそのまま継承されてる
そのまま継承しただけではクラスの意味合いによって置換原則に従わないこともある
例えば数値を表すインスタンスのequalsとかそうじゃないか常識的には
new Counter(5).equals(new Counter(5))?
0098デフォルトの名無しさん
垢版 |
2017/05/26(金) 07:24:33.27ID:Mhihnqx0
>>96
自分で分かってないの丸出しだな
equalsは置換原則に反する典型的なメソッドなので例としては最悪
Counterを継承すると適切に機能しなくなる
■ このスレッドは過去ログ倉庫に格納されています

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