Thread thread = new Thread();
thread.res.add(">>1乙") 例外について質問させて下さい。
「起動直後にIOExceptionを送出して異常終了するようなプログラムを作成して
下さい」という問題に対して、以下のようなコードを作成したのですが、
https://ideone.com/wW1fnW
コンパイルエラーになってしまいます。どこがいけないのでしょうか。 っつーかさぁ
ほんとに勉強したいならideoneなんて使うのやめろアホか
eclipse落として来てローカルでやれ
例外のやつもideoneのトップページから初期のコードと自分のコードみりゃ
何が悪いか一発でわかるのにどうやったらこんなザマになるんだよ
>>8
私は適正が有ると言われており、javaは一年間学習してます。
なぜ、そんなに偉そうなんですか?
おそらく、私の方が学歴が上だと思いますよ。 ゴミ
チラシの裏にでも書いてろアホ
質問以外のくだらねぇことは他所でやれカス
適性や学歴なんざ関係ねーよ
やるかやらないかの二択だ
あぁ。。ああ。。。
すいません。頭の悪い人に対して、どの言葉を使えば良いのか分からないんです。
ところで、IF文はどうやって使うのですか?
俺を肯定してくれる方には
読むにあたりストレスを与えてしまいますが、すいません。ご了承ください。
>>8,>>12みたいに世の中にはおかしな人もいるので…。 頭のおかしい人は自分と違うだけで狂ってると思ってしまうものさ
多様性を排除したければ引きこもってな
いきなり気持ち悪いカスが表れたな、おいwww
でもまあ、35歳って名前で固定してくれれば、透明人間にできるから助かるわ
頼むから、名前は変えないでくれよ
一番いいのは消えてくれる事だけどさw
それより、>>9の評価を頂けれませんか?
コードが読めないんですか? 無能な人間に限って「w」が多いんですよね。
可哀そうです。
>>16
気持ち悪いカスは黙っといて下さい。 >>20
具体的な大学名は?
後、ソース見たけど、
メッセージ出てるだけでMP回復してないよね? 真面目に質問してるのに、訳の解らない事を言わないで下さい。
メッセージは出てます。 怒りますよ?
>>4
まずは出力されているエラーメッセージを自分がよく理解できる言語に翻訳しましょう。 >>22
お前のプログラムで、
>天に祈ったMPが?ポイント回復しました!
ってメッセージで出力してるけど、
何で実際のmpを回復してないの?
お前ドラクエで
MPが回復してますってメッセージが出てて
実際のMPが回復しなくてもおかしいと思わないのか? なぜ、JAVAのライブラリにはCにあるような単純なスワップメソッドが無いのでしょうか?
簡単なのだから個々で実装しなさい、ということでしょうか?
「35歳」のコテハンは私の立てたスレを荒らす愚か者です。
皆さん迷惑を掛けてすいませんでした。
お手数ですが、無視/スルーを続けて下さい。お願いします。
>>26
了解
つか、わざわざ全角で35を書き直してngから外れようとするとか、本当に迷惑なゴミクズだよな 「 ◆BrBq2CJg6HGd」のコテハンは私の立てたスレを荒らす愚か者です。
皆さん迷惑を掛けてすいませんでした。
お手数ですが、無視/スルーを続けて下さい。お願いします。
>>28
タヒなすぞこいつ 今日のコードです。
クレリッククラスの作成例です。少し解答を参考にしましたが…。
http://ideone.com/24RQIb
mainメソッドはありません。
どうして、エラーなんですか?
はやく答えて下さい。
学歴が低いと答えれない内容でしたか? 今日のコードです。
クレリッククラスの作成例です。少し解答を参考にしましたが…。
http://ideone.com/24RQIb
mainメソッドはありません。
どうして、エラーなんですか?
はやく答えて下さい。
学歴が低いと答えれない内容でしたか? 今日のコードです。
クレリッククラスの作成例です。少し解答を参考にしましたが…。
http://ideone.com/24RQIb
mainメソッドはありません。
どうして、エラーなんですか?
はやく答えて下さい。
学歴が低いと答えれない内容でしたか?
すいません、頭の悪い人に何て言えば良いのでしょうか? 今日のコードです。
クレリッククラスの作成例です。少し解答を参考にしましたが…。
http://ideone.com/24RQIb
mainメソッドはありません。
どうして、エラーなんですか?
はやく答えて下さい。
学歴が低いと答えれない内容でしたか?
すいません、頭の悪い人に何て言えば良いのでしょうか?
数学わかります? 私は解るんですけど? 分かりませんか? 今日のコードです。
クレリッククラスの作成例です。少し解答を参考にしましたが…。
http://ideone.com/24RQIb
mainメソッドはありません。
どうして、エラーなんですか?
はやく答えて下さい。
学歴が低いと答えれない内容でしたか?
すいません、頭の悪い人に何て言えば良いのでしょうか?
数学わかります? 私は解るんですけど? 分かりませんか?
私は適性が有りますけど、無い人には解らない問題ですか? spoj: The program compiled successfully, but main class was not found.
Main class should contain method: public static void main (String[] args).
エラーメッセージにダイレクトに書いてあるじゃねーかwwwwwwwwww
マジでアホやんこいつ
今日のコードです。
クレリッククラスの作成例です。少し解答を参考にしましたが…。
http://ideone.com/24RQIb
mainメソッドはありません。
どうして、エラーなんですか?
はやく答えて下さい。
学歴が低いと答えれない内容でしたか?
すいません、頭の悪い人に何て言えば良いのでしょうか?
数学わかります? 私は解るんですけど? 分かりませんか? >>40
分かった。お前のコードはよく出来ているから。
元のスレッドに戻ろう、な。頼むから。 ドラクエとかオワコンだろUIは別に実装するとしてソシャゲで頼むわ
>>43
ID変えてまで自分のコード褒めるとか大丈夫? >>45
失礼しました。ちょっとパニクってました。
何とか彼をなだめようとして自分のコードを褒めるというアホらしい結果に
なってしまいました。
あの個所は、「お前の気持ちは分かるから」、と書くべきでした。 >>42
犯罪地君は35歳に成り済ましてないで、
早く被害者のPCを弁償しようね Javaのように普及した大衆言語は
利用者が多いのでここの嵐のように
頭のおかしい人間も出てくる罠
犯罪者にパンや米を
食べている奴が多いのと同じ
>>48
日本人は大人も幼稚って世界的に有名だよね >>53
まあ、お前は世界を語るほど世界を知らねえけどなw >>◆BrBq2CJg6HGd
時間や年齢は関係無いと思うけど、10ヶ月でそのコードなら
もう少し、いろいろ考えた方が良い
>>55
いや、みんなして子供のようだから今の状態になっているだけ。 >>57
ゆとりと言えばみんなで手を繋いでゴールするだの円周率3で教えるだのが言われていたが、これは実際にやっている学校はなく都市伝説だったそうだな。 >>61
無知と誤解によってそうなってしまう。
そしてだいたいの人間はそのまま大人になる。
結果的に体の大きい歳を取った子供が世に溢れる状態になり、無知と誤解を本物の子供に植え付ける。 Javaは今後消滅する可能性が非常に高い言語だけど、割とクラスのパーツをつなげる作業が暇つぶしになって面白いよな
消滅するとしてもC言語並みに何十年も尾を引くのではないかと思う。
まぁ馬鹿には使いこなせない言語だからな
消えることはまずないけど使いこなせない馬鹿が勝手に消えていくから
新規案件および馬鹿が存在する前の保守案件は非常に快適なソースコードになるだろう
Kotlinはまだまだ下の方だなあ。
Swiftが上がってきたな。
ぬるぽ対策が無い生のJavaってこの先生き残らないと思う。
マジョリティはkotlinで、ぬるぽと無縁なマイナー賢者はscalaかclojureに移行するだろう。
>>63
言語ランキングで一番人気だぞ
あと半世紀は残るんじゃないか 残ってしまう、というべきだろうね
COBOLと同じ立場
ほとんどウイルスのようなものだ
Springなんかのフレームワークが息してる内は残るだろうね
レスが遅くなってしまい、すいませんでした。
>>4にレスをくれた方、ありがとうございました。
>>5
解答を見ても分からなかったので質問しました。
今は何となく理由が分かりました。
>>8
勉強自体はJDKでやっています。(コマンドプロンプトとメモ帳)
比較しても分からなかったです。
>>23
はい。やってみます。
>>56
しばらくスランプの時期もありまして…。
少し前くらいから気合入れて勉強を再開しています。
何とかしなきゃいけないというのはよく分かってますので…。 だから「eclipse」っていう開発ツール落として来てそこでソースを書けって
そのレベルのくだらないエラーはコンパイルするまでもなくツールが教えてくれるから
ググってこんなことも出来ないなら向いてないからマジで諦めろ
_,,...,_
/_~,,..::: ~"'ヽ
(,,"ヾ ii /^',)
:i i"
|(,,゚Д゚) ・・・
|(ノ |)
| |
ヽ _ノ
U"U
∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧∧
<JDK!JDK!JDK!JDK!JDK!JDK!JDK!JDK!JDK! >
∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨∨
、 、 、 、 、
/っノ /っノ /っノ /っノ /っノ
/ / ∧_∧ / / ∧_∧ / / ∧_∧ / / ∧_∧ / / ∧_∧
\\( )\\( )\\( )\\( )\\( )
lヽ ノ l l l l ヽ ヽ
)'ーーノ( | | | 、 / l| l ハヽ |ー‐''"l
/ J | | |/| ハ / / ,/ /|ノ /l / l l l| l J ヽ
l ・ i´ | ヽ、| |r|| | //--‐'" `'メ、_lノ| / ・ /
| D l トー-トヽ| |ノ ''"´` rー-/// | D |
| ・ |/ | l ||、 ''""" j ""''/ | |ヽl ・ |
| K | | l | ヽ, ― / | | l K |
| ! ! | / | | | ` ー-‐ ' ´|| ,ノ| | | !! |
ノー‐---、,| / │l、l |レ' ,ノノ ノハ、_ノヽ
/ / ノ⌒ヾ、 ヽ ノハ, |
,/ ,イーf'´ /´ \ | ,/´ |ヽl |
/-ト、| ┼―- 、_ヽメr' , -=l''"ハ | l
,/ | ヽ \ _,ノーf' ´ ノノ ヽ | |
、_ _ ‐''l `ー‐―''" ⌒'ー--‐'´`ヽ、_ _,ノ ノ
 ̄ ̄ | /  ̄
>>81-82
そういやFalcom Sound Team jdkは、再来年で結成から30周年を迎えるようだな >>79
初学者が迷惑するから相手するの辞めてくれ。
知らない人居るの?
◆BrBq2CJg6HGd は無職の35歳で10ヶ月javaを勉強しています。
職歴、大学後に新卒で入社、28から35まで無職(自称、アセンブラ経験5〜6年)。
就職したいですと発言し、ハロワ行きません。
体力有りませんが、靴が痛むので歩くの嫌です。
失敗するのが嫌です。10ヶ月の期間JAVAを学習しました。
先行投資と言う名目で、無職ですが親に高級ノートPC買わせました。
10ヶ月の間、プログラミングの問題といたら?→時間制限がry 失敗したく無いです。準備ができてからetc
最後は無敵の40歳までに就職します。
私たちは、つい反応したくなる気持ちをぐっとこらえ、彼らに影響されないようにする方法を見つけなくてはなりません。
彼らが私たちに影響を与えることを許してしまったら、絶えずイライラしていなくてはならないでしょう。
今後の皆さんの課題は、超然として反応しないようにすることです。 >>86
誰が誰にレスしようとその人の勝手で外野が喚く事ではない
スルーを求めるなら関連レスすらスルーしておけばいい
知らない人居るの?
真・スルー 何もレスせず本当にスルーする。簡単なようで一番難しい。
偽・スルー みんなにスルーを呼びかける。実はスルーできてない。
予告スルー レスしないと予告してからスルーする。
完全スルー スレに参加すること自体を放棄する。
無理スルー 元の話題がないのに必死でスルーを推奨する。滑稽。
失敗スルー 我慢できずにレスしてしまう。後から「暇だから遊んでやった」などと負け惜しみ。
願いスルー 失敗したレスに対してスルーをお願いする。ある意味3匹目。
激突スルー 話題自体がスルーの話に移行してまう。泥沼状態。
疎開スルー 本スレではスルーできたが、他スレでその話題を出してしまう。見つかると滑稽。
乞食スルー 情報だけもらって雑談はスルーする。
質問スルー 質問をスルーして雑談を続ける。
思い出スルー 攻撃中はスルーして、後日その思い出を語る。
真・自演スルー 議論に負けそうな時、ファビョった後に自演でスルーを呼びかける。
偽・自演スルー 誰も釣られないので、願いスルーのふりをする。狙うは4匹目。
3匹目のスルー 直接的にはスルーしてるが、反応した人に反応してしまう。
4匹目のスルー 3匹目に反応する。以降5匹6匹と続き、激突スルーへ。 質問です。
同一ディレクトリ・同一パッケージ内に、共にpublicで2つのクラス(RenshuA、
RenshuB)を作り、それぞれmethodA、methodBをpublicかつstaticで定義し、
methodB内でRenshuA.methodA();と呼ぶコードを作成したのですが、
コンパイルが通りません。
どなたか原因を教えて頂けないでしょうか。
それとエラーは「シンボルを見つけられません」というものです。
よろしくお願いします。
それだと推測でしか答えられないから
ソースをコピペしてほしい
kenshou2という名前のディレクトリ・パッケージ内に、クラスRenshuA・
RenshuBが入っています。
以下RenshuA.javaのコード
package kenshou2;
public class RenshuA {
public static void methodA() {
System.out.println("A");
}
}
以下RenshuB.javaのコード
package kenshou2;
public class RenshuB {
public static void methodB() {
System.out.println("B");
RenshuA.methodA();
}
}
RenshuAはコンパイル通っています。
コマンドプロンプトにおいて、javac RenshuB.javaと入力しました。
>>92
javac - Java programming language compiler
http://docs.oracle.com/javase/7/docs/technotes/tools/windows/javac.html#searching
| The compiler searches for class files first in the bootstrap and extension classes,
| then in the user class path (which by default is the current directory).
| The user class path is defined by setting the CLASSPATH environment variable
| or by using the -classpath command line option. (For details, see Setting the Class Path).
コンパイラは、まずブートストラップクラスと拡張クラスのクラスファイルを検索し、
次にユーザークラスパス(デフォルトではカレントディレクトリ)を検索します。
ユーザークラスパスは、CLASSPATH環境変数を設定するか、
-classpathコマンドラインオプションを使用して定義します。
クラスパスのオプションが指定されていないのでユーザクラスパスはカレントディレクトリですよと
パッケージ名がついてるときはパッケージ名と同じディレクトリがないといけないですよと
なのでこうかな
javac -cp ..\ RenshuB.java
cd ..
javac kenshou2\RenshuB.java Java は、実際のフォルダ階層と、
各クラスのパッケージ階層を、同一にしないといけない
JSFを勉強しているのですが、JSF2の参考書は分厚い難しそうなのしかないのですが、JSF1とかの参考書は
Amazonの中古で割と砕けた感じのがありとっつきやすそうなのですが、JSF1と2ではやはりだいぶ違いますか・・?
根幹とかが一緒なら、やってみたいとも思うんですが・・。
>>96
俺は1覚えた状態から2を覚えたけど、今なら最初から2の方がいいでしょ。というか、俺は5年前にJSFを捨てた。当時は気に入ってたけど、今時のweb開発とは全く違うから。
内部で使う管理ツール的なアプリならいいけど、普通のアプリはちょっと辛いよ 実際の現場で、新入社員等に○○されたら
ブチ切れる……みたいなことありますか?
JAVAか、少しスレちですが開発現場関係で
教えてくださいませ!
だいぶ亀レスですが、ご容赦ください・・。
>>97
やっぱそうですよね・・。どのWebページ見てもJSFは2からやったほうが良いようなことを書いてあります。
JSF1はくだけた解説書があるのですが、JSF2はあんまりないです(´・ω・`)…
Kindle本で評判悪いですが、あるのでやってみようと思います。KindleUnlimtedに加入すると0円らしいです・・・
お礼が遅くなりすみません。どうも体調が悪くて・・・。しかし、今時のWeb開発とは違うんですね・・。
私がやってたころは、Strutsしかなかったのに・・・。 保守作業するんでもない限り今からやるならspringのほうが良いだろ
むしろspringがあるからJava使うレベル
>>105 Springってそんなにいいんですね。図書館にSpringの本がたくさんあったので
それやってみようと思います。J2EE関連の本はJSFばっか取り扱っているので、Springなんておまけみたいなものなんだろうと思っていました。それ、やってみます。
どうもありがとう。 プログラミング GROOVY、2011
Spring Framework 4 プログラミング入門、掌田津耶乃、2014
Spring Boot プログラミング入門、掌田津耶乃、2016
プログラミング速度を上げる方法を教えてください。
バリバリの初心者で、とにかくベタベタ上から書いています。
しかし、先を見据えてないので、書いて消して悩んで……で
時間だけが無駄に過ぎていきます(;;)
(料理の初心者が、あたふた料理している感じ)
何回なアルゴリズムをすぐに思いつく! ではなく……
普通のアルゴリズムの普通のソースコードを、
たんたんと書いていけるようにしたいのです。
(料理人が危なげなく、並列して料理している感じ)
みなさんは、どうやって開発、記述しているのでしょうか?
>>108
行き当たりばったりに書かないで
全体から書いていくと良い
具体的にはUML(のクラス図とか)を書く
慣れたらいちいち書かなくてもいいけど
最初のうちは書いて全体の見方を覚える
そうすると料理で言ったら煮込んだり
時間のかかる調理をしながら
下ごしらえをするみたいなことができる
要するにムダがなくなる >>108
プログラミングで言うソースは
料理で言うレシピみたいなもんだからな
慣れだよ慣れ >>107
ありがとう。その2冊は図書館にあったので、見てみます。前から、ちょっとは見てみたいな…と思ってたやつです。
あと掌田津耶乃さんはけっこうSpringとかGroovyとか推してますよね(´・ω・`) JSFでググったときに出てきました。
一度読んでみます。ありがとう。ステマじゃないよw >>109
UMLは全図を勉強しましたが、もっぱらクラス図を見るだけですね。(〜_〜;)
クラス図以外は使っていないので、だんだんと記憶が……。
例えば、下記のような仕様のソースを109様が開発するときは、すらすらとクラス図にできるのでしょうか? もしコツがあるならご教授ください……!
稚拙な例ですいません(><)
「なんでも計算機」
・基本機能は加減剰余のみ。
・プラグイン形式で数学的計算機能を追加可能。
(開発者が追加していくパターン)
・プラグイン形式でユーザー独自の関数を追加可能。
・方法:テキストファイルに決まった形式でユーザーが関数を書き込み、
それを取り込み、機能を実現。
>>110
慣れ……ですか。(><)
110様の普段のコツは無いのでしょうか? >>112
>「なんでも計算機」
3D描画エンジンとかもそうだけど
そういう専門的なものを作る場合は
UMLとか一般的なOOP手法だけじゃなくて予備知識がいる
例というだけじゃなく本当にその仕様を実現したいなら
インタプリタとか言語処理系の知識が必要
「バリバリの初心者」向きの題材じゃない >>112
自分用にあったら便利そうな小さなツールから作っていく
次第に「あれとあれ組み合わせたらいいのできるかも?」みたいに思いつくから
段々規模を大きくしていく
でももし趣味とか好きだからじゃなく仕事で仕方なくとかなら思いつきにくいかも
後々土台の変更が必要になったりしてもいいなら
まず単純に加減乗除の式だけテキストから読み込んで実行できるようなのを作ったら
後は機能追加でいいから土台だけでもやってしまうとか
何桁まで扱うようにするのかとか多倍長整数まで扱うのかとかも要検討かな 面白いことに「数式を入力して計算するアプリを作る」よりは「色々な数式ボタンをつけた電卓を作る」ほうがずっと簡単なのだ
テキストパーサの知識はゆくゆくはあったほうがいいが、初心者がやるもんじゃねーな
んで、もし
プログラミング行為自体が遅い(1時間に打つ文字数が少ない、等)と思った場合:
・ 文字列やコレクションが持つメソッドの動作、高度な制御構造の使い方だけは絶対に記憶しておく
(書き方は覚えなくていい。「配列を○○する方法ってそういえばあったな」と気付ける程度でいい)
・ メジャーなデザインパターンを、これまた基本的な動作だけやって納得しておく(書けなくていい)
7割くらい機能ができた時点でかなり消して3割くらいから書き直すが動かない、みたいなことが頻発する場合:
・ gitや、gitや、あとgitのようなバージョン管理システムを利用する
(git類は「ここまでできたので保存しておく」「壊してしまったので保存時点まで戻す」「試しにコピーして改造する」がすぐできる。必須)
・ 上記に関し、メソッド単位で編集保存するという作り方を心掛ける(いきなりあちこち書き換えない)
メソッドAを使うメソッドBを作ったのだがそのまま動くと思ったメソッドAでエラーが出る、みたいな「このメソッドいきなり動かなくなった」が多発する
・ "ユニットテスト"を導入する。小難しい議論が大量にあるが当座「このメソッドはこの引数Aの時戻り値Bを返す、Cのときは実はD」という使い方でいい
UMLやクラス構成図を使っているのにぐちゃぐちゃになるという場合:
・いまのあなたに必要なのはもっと自由ならくがきである可能性が高い。方眼プロジェクトペーパーと書きやすいペンを用意しよう
UMLは設計を整理したり人に伝えたりするもので
それ自体が分析設計を生み出すものではない
分析設計を生み出すのは開発手法
RPとかOMT
>>108
大きな問題を小さな問題に段階的に繰り返し分解する
十分に粒度の小さな問題の解法は何度も必要になるのでメモするなりしてすぐ参照できるようにする
>>117が書いてるような文字列操作・コレクション操作・制御構造なんかはこのレベル
少しやってれば上のようなレベルは資料を見なくてもすぐ出来るようになるので
次はそれらの小さな問題を集めたもう少し粒度の大きい問題を解くパターンを認識して
それらをメモするなりしてすぐ参照できるようにする
これを繰り返していけば問題に対する解法をすぐに思いつけるようになる
それぞれの解法に対応したスニペットや汎用的な抽象化コードを用意しておけば
考える速度だけじゃなく書く速度も上がる
小中学校の算数・数学の問題を速く解くための勉強方法と基本的に同じ もしにひょっとしてIDEを使っていないのならIDEは使ったほうがいいよ
IDEなしにいまどきのJavaなんてタチの悪い修行だよ
書かないと覚えないだろなんてのはその「書くべきこと」が1行で済むような場合だけだ
IDEの使い方(正確には実行設定の仕方)とトラブル対処を覚えないといかんのでちょっとアレなのだけれど、そこをなんとか
「あるサブクラスのオブジェクト」から、
「そのスーパークラス」や「スーパーのスーパークラス」の
属性やメソッドを使用するのが苦手です。
サブクラス上から見えないからです。
エディタなどで上手く一覧する機能ありませんか?
importしたライブラリのメソッドや属性もどういう構成になっているか
がわかりません。
そもそも実装を継承しないのが良い
「継承より委譲」
>>123
継承を委譲に互換できるようにリファクタリング
する方法はありませんか? 普通に継承を委譲(集約)に
置きかえていけばいいんだよ
>>113
なんとこの例は専門的なものだったんですね。
思いつきで考えた例なので申し訳ありませんでした。
>>114
設計がうまくなりたいです。
そうすれば眠る時間も増えそうです……。
(z_z)
>>115
小さなツールというのは再利用可能なクラスということでしょうか?
正直、私の作ったクラスはネストと専用処理だらけで再利用できないのです……。
>>116
怒られたというか、注意されました。
上司、先輩に確信を持ってコーディングしろと……。
担当レベルで「バグ0」にして提出と言われたので、今回のような
質問をしたら、「根性で学んでこい、とにかく動けばいい」と……。
根性で何を学んだらいいのか教えてもらえませんでした。
スレのみなさんの意見で、たぶん「設計」を学ぶと良いのかなと思いました。 >>117
丁寧に助かります。
GIT調べてみます。
ユニットテストはprintlnでログを確認してます。
私の開発手順は……
・口頭で「xxxなクラスを作ってくれ」と指示を受ける。
・クラス名を考えて、とりあえず必要そうなフィールドを書く。
・ここで手が止まる。(何か書かなきゃ、そうだ! アクセッサ!)
・全フィールドのアクセッサをかく。(焦る。とにかくメソッド書かなきゃ!)
・時価の商品価格を計算するとしたら、メソッド名(calcPrice)を書く。
・とりあえず分岐はするはず! そうだif文の枠だけ書こう!
・(省略)以下、確信なく恐怖でベタベタ書く……
・ifネスト、forネスト、switchネストな恐ろしいメソッドが1つできあがる。
(アクセッサ抜かすと、大抵はpublicメソッドが1〜2個しかない)
・printlnでログみてテスト。一応動くが、確信は無い。
・(そして大抵は)仕様変更、追加のお知らせが届き、デスマーチへ。
(合間に結果としてのエラーも当然でて、ブレークでトレースしてると
あっというまに1時間経ってます……)
>>118
RP、OMT、調べて参考書探してみます。
>>119
その粒度を小さくするという作業が「設計」ということでしょうか?
数学(簡単なもの)ならその分解作業が可能なのですが、
ことシステム設計になると、とっかかりが見つからないのです……。(><)
数学で言えば、計算式は解けるが、文章題から計算式が導けない感じです。
>>120
エクリプス使っています。
といっても、フォルダ管理と構文チェック、結果ログ見る程度です。 >・口頭で「xxxなクラスを作ってくれ」と指示を受ける
この時点で既に常識的な開発現場としてありえないんだが
ユニットテストまでやって仕様変更云々って言ってるってことは
もう詳細レベルまで落とし込んだ仕様があるのに口頭でやってとかありえんだろ
詳細設計書あるならどういう作りすればいいか壊滅的な馬鹿でもない限り誰でもわかるし
作り終わったらテスト仕様書作ってテストするから仕様変更やデスマーチも糞もねぇだろっていう
お前のところ色々おかしいかお前が意地悪されてるか敢えて何かを試されてるか何かだと思うわ
ネストしまくるような複雑な条件の仕様を口頭で言うとかありえないから
とりあえず実際にどういう指示されたか書いてみ
配列定数はイニシャライザーにおいてのみ使用可能です
これどういう意味ですか?
>>131
それ自体はそのまんまの意味だが、配列リテラルを代入し損ねてるときに言われることが多い
その代入の書き方は本当に合ってる? arrじゃなく arr[ ] とかが必要なんじゃない?? >>127
>その粒度を小さくするという作業が「設計」ということでしょうか?
設計の一部だけど全部じゃない
一つの問題に対して解法は一つではないので
複数ある選択肢からどの解法の選択するかが設計の核
問題の分解方法は解法選択の一部
>数学で言えば、計算式は解けるが、文章題から計算式が導けない感じです。
これは問題を明確に定義できてないから
明確に定義されてない問題は解けない
「xxxなクラスを作ってくれ」と指示を受けたらまず以下3点を明確にする
1. なぜそのクラスが必要なのか? クラスの責務は何か?
2. そのクラスに必要なパブリックインターフェースは?
- 例外を含めた入力・出力の型(メソッドシグニチャ)
3. どういうテストをパスしたら十分なのか?
- 事前条件、事後条件、不変条件
3点とも指示を出した側に質問する必要がある(嫌がられてもしつこく)
特に3の何ができたら問題を解けたと言えるのかを明確にするのが一番大事
問題の定義と解法の選択、解法の選択の主要な方法として問題の分解がある
算数で考えればものすごく当たり前だよね >>126
設計を考える上で標準ライブラリを参考にするといい
たとえばどの言語でも日付なんかは標準になってる
そういう共通してて何度もおこなう処理を考えよう
たとえば価格の計算であちこちで何度も
税額を算出してるならメソッドにくくり出すとか
>>127
とりあえずクラス使ってるってだけで手続き的な
オブジェクト指向らしくないコードのようだね
なるべく深いネストは外していこう
メソッドに抽出してその組み合わせで処理する
そうして粒度を細かくすると
クラスやメソッドの数が増えて不安かもしれないが
重複が減るし読み書きしやすいから
その方が全体として作業量は減っていく 皆様、いろいろご丁寧にありがとうございます。
指示は先輩が手帳を見ながら口頭で伝えられるので、
それを急いでメモするという感じです。とにかく忙しそうです。
具体的な内容は業務内容に触れてしまうので控えさせてください。
とりあえず、下記のことをやってみようと思います。
・設計の本で良いのがないか本屋で探す。
・仕様詳細をもっと聞く。
・まずクラス図を書いて、責務の粒度を細かくする。
・再利用できるメソッドを作るよう心がける。
(といっても、どうやればいいのか……)
あとは、みなさんのレスを反芻していきます。
本当にありがとうございました。
最後の質問ですが、設計に関してのおすすめの書籍はありますか?
ぜひ、購入したいと思います。
>>135
>設計に関してのおすすめの書籍
まずJavaやOOP自体に慣れてないなら
『スッキリ Java』が一番やさしい
狭義の設計じゃないけど設計力の土台になるのが
『Javaで学ぶアルゴリズムとデータ構造』
本題の設計は難解な本が多いから
UMLの本とかデザインパターンの本とか個別のテーマで
やさしそうな本から読んでいくのがオススメ
メソッドの抽出とかは『リファクタリング』に
いろんな手法が載ってるから
ある程度JavaやOOに慣れたら読んでみよう >>127
アクセッサは、アノーテーションを付けるだけだろ
テスト駆動開発(TDD)でやる。
最初は関数で処理を作っていき、だんだん高度になってくると、クラスにする 書いてる内容見る限り、立ち位置的に設計云々とかクラス図とか
考えるレベル以前の問題で職場の奴はそういうのは求めてないように見える
言われて作ったクラスがどういう使われ方してるのかもよくわからんし
書いてる事から想像するに、勉強も兼ねた誰かの手伝いとして適当に使われてるだけだろ
いずれにしても作業指示の仕方が糞すぎるからそこは辞めた方がいいよ
>>136
>『Javaで学ぶアルゴリズムとデータ構造』
あっ今検索したら同名の書籍があったけど
望洋の明解シリーズの奴ね
図解が多くて分かりやすいから >>135
> ・再利用できるメソッドを作るよう心がける。
1, これは再利用するだろうなってのをメソッド化
2, この処理は別の所でもやったなってのをメソッド化
3, 機能毎にメソッド化(分割や統合)できそうだなってのをメソッド化
他にもあるだろうけどこんな感じでいいよ 自宅で自分用の(自分で勉強するための)プログラムを書いて慣れるというのがいちばんだと思う
業務指令で範囲限定されたコードだけ書いててもまっっっったくメソッド感覚(?)は身につかないよ
だって「そんなことしなくても動く」もの、業務中にやる理由ないよね
口頭で伝えるのは後から改変するための常套手段
証拠は残さない
なぜこのクラスが必要なのですかと訊くと
キレ気味にいいから黙ってやれと言われる
別にイヤとかやりたくないとかじゃないんだけど適当な仕様だと文脈背景わからないと間違いの元
他の奴が黙ってやっちゃうから味を占めたんだろうな
また無駄な後戻り工数が生まれて実装のせいにされる
わかってないだけだって
人はわからないことを聞かれた時に不機嫌になるってのはわかるだろ
>>142
そのせいなのかメールで聞くと返事が返ってこないやつはマジでイラつく
そういう奴は無責任の意気地なしとみなす >>135
>・再利用できるメソッドを作るよう心がける
間違ってもいないんだけど実際には
最初から再利用を目指すより
リファクタリングで重複した処理を
メソッドに切り出す方が簡単なんだけど
「動いた物をいじるな」という職場だと
まあそっちもそっちで難しいよな >>145
口頭で聞いた後に
先程の備忘です。
認識齟齬などあれば返信にて訂正願います。
とかなんとか理由付けてこっちからメール送ればいい
一手間かかるけどある程度身を守れる >>142
じゃあ録音しとけ。
または忘れやすいということにして詳細にメモをする。 >>136
書店で推薦書を購入し、
1「スッキリ」の2冊
2「Javaで学ぶアルゴリズムとデータ構造(明快シリーズ)」
の順番が良いかと思いましたので、
本日からスッキリを学んでいこうと思います。
ありがとうございました。
>>138
おっしゃる通り、重要業務は任されていないと思います。
今はとにかくスキルを上げたいと考えています。
>>140
たぶん再利用可能メソッドは標準ライブラリで提供されているような
ものだろうと思っています。
なんとかくくり出せるように考えてみます。
>>146
デザインパターンをマスターすると保守しやすいクラスや
メソッドになると知りました。
デザインパターンとリファクタリングも学んだほうが良いようですね。 今から「スッキリ」で勉強を始める、素人か。
そんな奴に、一々説明していたら、数年かかる
オブジェクト指向を知らない奴は、仕事でプログラミングしたら、いけないレベル
少なくとも、Java の本を10冊読んで、資格や数年以上の経験が必要
本10冊くらいはそりゃ読む必要あるけど
資格や経験年数はほとんど関係ないよ
本人の素質と努力次第
新卒?中途採用?
何歳か知らんけどプログラミングほとんどやったことないなら
普通研修みたいなの1か月ぐらいは与えられるもんだが今がそれなのか?
その辺はその会社次第なんじゃないの? 教育やる余裕がない小さい会社とか
大きくてもその辺のこと分かってない会社とか色々あるだろうし。
ま、しかし、基本的にワザは教えて貰うよりは盗んだ方が良いだろうな。
自分で求めてこうだと分かったことなら忘れないが教えて貰ったことは忘れるから。
なんてことをこの前テレビで坊さんが言っているのを聞いてその通りだと思った。
Javaの「スッキリ」はRPGで言うと
「ひのきの棒」や「竹のやり」みたいな初期装備だが
丸腰よりはるかにマシ
「明解」でやっと「銅のつるぎ」
ファウラーの「リファクタリング」や
GOFのデザパタやエヴァンスのDDD本は
もっと高級な剣だが
レベルが足りないと装備できない
ひのきの棒という役割を演じるゲームか
シュールだな
>>154
そのスッキリは入門編(黄緑の方)のことですよね? >>156
そうだよ
でもスッキリ2冊読んで終わりとか
それほど甘くはないよ
スッキリは基本的に初心者向け オブジェクト指向はあまり良くないだろな。
GUIと相性が良かっただけで、その他一般的な問題とは親和性が低い。
オブジェクト指向が一番汎用的だと思う
DDDがOOメインなのもそこだし
>>157
レスが遅くなってすいません。
そうですよね、ありがとうございます。
でも今の自分には実践編(緑の本)の中盤以降が結構難しいです…。 オブジェクト指向がマッチしないと言っているのは
設計を構造化とかどやっといて
オブジェクト指向プログラミング使えないと言ってる奴がよくいる
機能とか流れって出てきたら注意
オブジェクト指向がよくわかってないからマッチさせられないだけではないか?
>>156
リストの頭だけを掻き集めてリスト化したような良書ではある メモリー使用量が個人利用の壁になっているんだろうな。
Javaの個人利用が難しいのは
安いレンサバで使えないのが大きいのでは
大抵PHP.良くてPython.ruby止まりかな
何故使えるようにならなかったのか考えないのがJavaユーザぽくていいよね。
スクリプト言語はその場で書き直しゃ動くからねぇ
JavaとかC#とかはビルド→デプロイまたは
ビルド→パッケージング→デプロイとか面倒
GAEはどこまでショートカットしてくれるのか知らん
俺って大体そこらへんの能無しより2倍ぐらい仕事早いほうなんだけど
金融系の内部管理システムで1画面にボタンが20個ぐらいあって
段階的に5回ぐらい認証する機能で鬼のように状態持ってるから
設計書の相関チェックも凄いことになってて当然こんなレベルの機能だと
設計書にも不備ありまくりで実装してく度に何十回も設計者と確認しないといけないレベルで
外部結合で持ってくる情報も鬼の用にあるからSQLも100行超えるわ
外部ファイルも取り込んだりするわでエビデンスのページ数も余裕で100ページ越えるレベルで
これが最初テスト完了まで2週間ぐらいの線表で
毎日残業して1か月かけて作ったらプロパーが後ろで「こんだけ時間かけられるとは思わなかったわ」とか
嫌味言ってくるのが典型的な能無し無能システム会社なんだよな
そういう無理のあるものを断れない立場に居ること事態が既に能のある状態とは言えない
過疎ってるから暇つぶしに書いただけだ
プログラムやらず嫌いのプロパーしかいない無能会社の中でも大ハズレの部類
当たりはバグ調査が全然できないプロパーがいるところのバグ調査担当
JDK 8u151と8u152、2つ出てるけどどっちをインストールすればいいの?
>>171
スクリプトでもバージョン管理してるから他で書いてやっぱりデプロイしてる
個人でも ストリームバッファについて質問です。どれがいいのでしょうか?
FileInputStream fis=new FileInputStream("file");
0.
InputStreamReader r=new InputStreamReader(fis);
1.
InputStreamReader r=new InputStreamReader(new BufferedInputStream(fis));
2.
BufferedReader r=new BufferedReader(new InputStreamReader(fis));
3.
BufferedReader r=new BufferedReader(new InputStreamReader(new BufferedReader(fis)));
そもそもバッファの効果もよくわかってません
訂正
3.
BufferedReader r=new BufferedReader(new InputStreamReader(new BufferedInputStream(fis)));
BufferedReader br = Files.newBufferedReader(path,charset)
>>180
バッファがあると一回の読み書きに時間が掛かる機器の場合に効率が良くなって速度が上がる可能性がある。
例えばHDD。一回の読み書きが遅いのでまとめて読んだり書いたりした方が速度は上がる。
ということでファイル入出力にはバッファがあった方が良い。 その手の質問には「1万回繰り返すと2倍くらい違う」と答えることにしてる
割合算でいいんじゃないの
つまり速い方に書き換えると「その部分だけが」2%くらい速い
そこの処理が0.03秒だった場合は処理速度が0.0294秒になって0.0006秒の改善になる
どっちかってと速度なんかじゃなくHDDとメモリ酷使するのを良しとするかどうかで動作決めていいよバッファ系は
>>188
するよ
そこまで行ったならオブジェクト生成コストやGC負荷とアルゴリズム、加えて「コ ン パ イ ラ が 完 全 最 適 な オ ブ ジ ェ ク ト 構 成 に 置 き 換 え て く れ る」まで考えて、
結局は実際に計測して遅くなきゃいいや、人力脳内最適化は無意味でクソである、といういま一番トレンドな結論に至る
おめでとう >>184
接続されてるHDDやプログラムがどのぐらい細切れにデータを読み書きするかで変わる。
ま、なんだったら自分でバッファありとなし作って試してみな。だいたいはバッファありの方が速くなる筈。
速度差が出ないとか、むしろ遅くなる場合はバッファの大きさがそのプログラムでの一度の読み書き量に対して適切ではないとか接続されているHDDに対して適切ではないのかも知れない。
あるいは最初から適切だったためにバッファありにしても殆ど変わらないかかな。固定長の大きな電文を自分で作ってその単位で読み書きする場合はその電文の塊がバッファみたいなものなので変化がないかも知れない。 OSはほぼ確実にバファリンしてるのでHDDの読み書きではなく、システムを呼び出すオーバーヘッドで
変わるだけじゃないだろか。
BufferedReaderを使うとシステム呼び出し回数が減らせるのでスレッドの切り替え確率が
減るという説明のほうが納得がいくような気がスルスル。
OS・HDD は、バッファリングしてる
だから突然の電源断により、書き込まれない事があるため、
必ず正常にシステムを終了させること
普通OSは、5秒ごとに、HDDに書き込む
フラッシュメモリーには、書き込み回数の上限があるため、
SSD の書き込み回数が気になるなら、15秒ごとに書き込むように設定できる
Javaの最大の欠点は100kbのデータを扱うプログラムにGBクラスのメモリーが必要になるような
効率の悪さ。
大学の課題なんだが、for文のi<5のあとにlengthをつけなくてもこの課題は解決できるのかを教えてくれ。 >>198
どういう場合にそうなんの?
普通なら大丈夫なんじゃね >>200
この問題
「am[0]」の使い方に違和感があるな
AMCounterクラスとか作って
カウントの責務を分離したい感じがする >>202
3つ目のクラスを作るってことか?それはまだ習ってないからそうしないのかも。 >>202
ああ。違和感あるな。これダメな設計だよなあ?
am[0].countAutomobile() や am[0].countHeavy() でカウントした結果が出るということは
new Automobile() した時にコンストラクタで Automobile クラス内にある static のクラス変数の
カウントをしていて countAutomobile() や countHeavy() メソッドでそれを読み出すという
ことになるが、そんなクラスは一つのVMで同時に一つしか動かせない。複数のスレッドで
同時に使おうとすると意図した通りに動かない。Java のクラスとしてはなんだかとても
嫌なクラスだ。 せっかくだからシークエルを渡せるようにしてはどうか。
>>200
可能
5台と固定だから付ける意味ないんじゃないかな
クラス変数の挙動を知る課題かな
その使い方や設計としては悪いが >>200
amもweightも同じ要素数だから5回繰り返せばぴったりじゃん 何この糞問題wwwひっでぇな・・マジで
これ作ったの教員?生徒?
なんで配列の一要素でしかないクラスが配列全体の情報を持ってこれるんだよw
こんなレベルだと生徒もダメになるゴミ問題だな
しかもこれで大学だからなwww
>200も相当な馬鹿っぽいし100%Fランだなw
あーこれあれかw
最初から車の総数と大型車の台数わかってるから
countAutomobileとcountHeavyは5台と2台を直打ちで返すようにしてるだけなのかwww
中学校のマイコン倶楽部の問題かよwwwwwww
>200です。みんな色々とありがとう。まあFランなのは否定しないですw lengthなくてもいけるのはわかったのでもうちょい頑張ってみます
countAutomobile()やcountHeavy()は
コレクションクラスに持たせるのが普通でしょ
AMCounterクラス作って切り出すほどでもない
この規模ならHighwayクラスのメソッドでも十分
for文の中括弧省略はアンチパターン
あと大型車を数えるのにcountHeavy()という名前は不適切
>>214
まあ一応課題に沿って作成しないといけないんで与えられたクラス内でやるしかないみたいです。ご指摘ありがとうございます。 >>204
その通りだね
課題の範囲だとstatic使うくらいしかないよな
>>205
それもアリだと思う
countメソッドはAutomobileよりかは
Highwayが持つ方が自然
ただ何を作るかにもよるけど
Highwayが将来的に肥大化しそうだから
Counterクラスに切り出す場合もありそう >>214
コレクションクラスでもいいというか
課題だとそっちの方がいいね
ただ課題のはサンプルコードで超小規模だけど
実用的なプログラムだと
カウントの仕方が多種類で複雑になるから 俺様が素晴らしい解答を用意してやったぞ
但し実行結果は見てない
class Automobile {
private static AtomicInteger count = new AtomicInteger();
private static AtomicInteger weight = new AtomicInteger();
public Automobile(int weight) {
this.weight.addAndGet(weight);
}
public int countAutomobile() {
return count.incrementAndGet();
}
public int countHeavy() {
return this.weight.get();
}
}
よく考えたらincrementAndGetはコンストラクタでやるしかねえな
オブジェクト作る意味無いコード書いたの初めてだから中途半端なコードになっちまった
ダメだ・・このあまりに低レベルな流れ見てると吐き気がしてくる・・
問題の質があまりに低レベルなの見れば設計とかそういう以前の問題で真面目に考える余地なんかないのに
staticだのコレクションだの将来性だのアホか・・
>>220
だったら参加しなきゃいいのに
この話題が何日も続くわけじゃあるまいし スレタイ読めない奴は国語の勉強から初めた方がいいと思うの
初心者どうこういう以前にお前等のその解釈って無駄というか”無意味”なんだよね
問題文がインスタンス作りましょうとかっていうレベルのものなのに
問題に書かれない範疇のことまで勝手に想像を膨らませてあーだこーだ考えて
逆に質問者を混乱させ、陥れる無能の典型というか馬鹿の代表というか
なんだろうねこのド素人特有の客観的に問題点とそれに対する回答を指摘できない低知能ぶりは
いや学校の課題の質問だったから
わざとやってんだよ……
>>198
普通のパソコンが512mbくらいしか積んでなかったときからjavaは動いていたと思うが・・・
お前はどの世界線から来たんだ?
それとも、ただのうすら馬鹿か? 仮にまともなこと言っていても口が悪い奴の相手するのは時間も精神的にも無駄
嘘つきがチヤホヤされるべきだとでも言うんかね
このバカは
つか、お前がうすら馬鹿かよwww
あ、うすら馬鹿に話しかけられると鬱陶しいから、消えてくれよな
頼むわw
なんかさぁ
俺はjavaを勉強してるつもりだったのに気づいたらSQLやHTML/CSSの本を読んでるんだが間違ってないよな・・・?
バカがたむろってる所でしか粋がれないやつなんだからほっといてやれよ
入門書未満のくだらない質問の回答はお前等馬鹿の担当だけど
それですらまともにできないから呆れるわ
いつ見てもアホしかいない
>>237
CLI、GUIアプリ系の本を選べばだいたいJavaで完結する
あとは隠蔽するようなフレームワークとか使えば、とりあえずは知らなくてもできる >>237
web系なら他言語行ってもつぶし効くから損はないと思う >200です。もう無理だw大学で配られた資料だけじゃだめだ、理解が追いつかない。本とか買わないとまずいかな。まあ勉強不足なのはわかってるんだがやっぱ無理なもんは無理だ。誰か教えて…
>>247
実現するならstatic変数を作ってコンストラクタでインクリメントするだけ
staticを解説するためだけのアンチパターンな設計だから深く考えたらだめなやつ >>247
とりあえず何がわかんないのか箇条書きで書いて見なよ
親切なおじさんと不親切なおじさんがレスするから >>249
まず、合計台数だけを出力するプログラミングを作ろうと思ったんですけど、
整数型配列の初期化とかはあってるはずなんだけど、Automobileクラスでint countAutomobile(){(←コンストラクタ?)内で何を打てばいいのかわからないです。ただ、return weightだと配列の1つ目の値だけが出力されますので。
>>249
もちろん課題の内容としてはさらに大型車の台数も出力しないといけないんですけど、まず簡単なとこからと思って合計台数だけをやり始めたらそこすらできない次第です。 >>250
コンストラクタじゃなくて、インスタンスフィールド?適当なこと言ってすみません… >>250
なるほど、それほど筋悪く無いと思うよ
他の人がいろいろ書いてるように1台の車を表現してるAutomobileクラスのインスタンスが
全部で何台あるのかを把握してること自体がおかしい、つまり課題のコードのほうがおかしい
だからそこは分からないほうが普通というか
100人いたら100人ともam[0].countAutomobile()とは書かないから
他のやり方したらいいんでないの? Automobile(int g)がコンストラクタだよ
int weight → static int weight って変えてみたらわかると思う
253が言うように筋はいいと思う
>>253
残念ながら課題として出てるのでこれに回答せねばならないんだよ
とてつもなく不服だがな >>253
課題がおかしいんですかね…どこか一部を直せばいいんでしょうか?それか他の意見でもあったように新しいクラスを作るべきなのでしょうか?たびたびすみません。 >>254
そちらがコンストラクタでしたか、ご指摘ありがとうごさいます。 >>255
HighwayクラスにcountAutomobile()やcountHeavy()を作って上げるのが一番簡単
どうしても課題のコードに従ってやるならAutomobileクラスに
クラスレベルの変数として台数合計を管理するものを用意する >>257
前者の方法についてもう少し詳しく教えていただけませんか?自分の解釈ではまずHighwayクラス内にint countAutomobile()と int countheavy()をつくる。 >>257
countAutomobileに関してはreturn weightで返して、heavyに関してはif文で大型車の時だけreturn で返せる。と考えたのですが、あってますでしょうか?無知ですみません int weight → static int weight って変えてみたらわかると思う
>>260
先ほどの画像にstaticを足してみたところ5つ目の配列の要素が表示されたのですが、どこがおかしいんですかね? >>261
配列の5つ目と言ったほうが正しいでしょうか >>261
8って出たならあってるよ
出力してるところでは1番目を指定してるのに5番目が出たってところが大事 またアホどもが初心者を混乱させてるwww
問題が糞で最初から台数わかってんだから台数はハードコーディングングでそのまま返せばいいんだよ
なんでsataticにすんだよ阿呆
>>263
まだ途中の段階ってことですか?結果は8と表示されました。 >>264
ちげぇねぇwww
その発想はなかったわ >>265
まだまだ途中
そもそも台数を出すのであれば重さを設定する必要はない
static int weight → static int weight=0 って変えて
weight=g → weight++ って変えてみな >>267
言われた通りやってみたのですが、コンパイルでエラーが出てしまいました。int countAutomobile()の()内のintを消したのがまずかったでしょうか?
>>268
yes
int gは消さずにそのまま
後で必要になるからね >>270
いけました!まあこれもまだ途中だと思うと…
しっかり5台と表示されました! >>271
ok
じゃあ次は
weight++ → if(11<=g) weight++ って変えてみな あとはint countHeavy()を作るだけでしょうか?
>>267
せめて static int total = 0 とかにして >>274
ひとまず、な
できるだけ手を加えずまずは動き
命名も大事だがまずは動かすことを目的とした
>>275
後はstatic変数を増やして
さっき5台って出たものと今2台って出たモノを組み合わせれば完成 キモすぎてもう見てられん・・早く終わってくれ
public class Automobile {
static int TotalMobile = 0;
static int TotalLargeMobile = 0;
Automobile(int weight){
TotalMobile++;
if(weight >= 11){
TotalLargeMobile++;
}
}
public int countAutomobile(){
return TotalMobile;
}
public int countHeavy(){
return TotalLargeMobile;
}
}
public class Highway{
public static void main(String[] args) {
Automobile[] am = new Automobile[5];
int[] weight = {1, 15, 12, 5, 8};
for(int i=0; i<5; i++){
am[i] = new Automobile(weight[i]);
}
System.out.println("自動車総数:" + am[0].countAutomobile() + "台");
System.out.println("うち大型車:" + am[0].countHeavy() + "台");
}
}
皆さんありがとうございます!おかげでどうにか出来ました!この恩は一生忘れないです!
>>279
恩は忘れていいのでこの問題の設計はウンコだって事だけ覚えててくれ >>280
けれどこんなヽ(・∀・)ノウソコ設計でもみなさんちゃんと理解して完成まで持ってけるなんてほんとにすごいと思います。 こちとら仕事でこんなもんじゃないレベルのウンコを相手にしてるからな
本来いらないスキルだからお前は真っ当に育ってくれ
>>282
反論の余地もないです。これからも精進します… >>283
センスないと言われたらそこまでですが、将来IT系で働きたいと考えているのですがどう思いますか?ちな理系です。 >>285
働くだけなら誰でも行けるよ
スキルは後から付ければいいけどあればあるだけ有利にはなる >>281
完成については最初に問題を見た直後に大半のやつはわかっていて、
それだからクソだと言っていたのだ。この程度は誰でも慣れてくると
すぐに頭に浮かぶようになる。というか見た直後にまず違和感を覚える。
それからその違和感の原因はなんだろうと心の中を探り、それから
ソースを二度見して気づく。 ネットで色々調べ物してたら大学生とか院生でも仕事でjavaってる奴よりも
遥かに賢いコード書いてる奴が腐るほどいるのに
大学で出る課題がこれでそれに悪戦苦闘してる奴が仕事とか夢見すぎだろ
初歩中の初歩的なことで申し訳ないんですが、Windows 10上でのJava開発環境の構築は
a. JDKインストール → Eclipseインストール →Pleiades プラグインインストール (一般的?)
b. Pleiades All in One [Eclipse 4.7] Java (Full Edition)
どちらの方法がお勧めでしょうか?最近まで開発にMacを使っていたものでどうすべきか悩んでいます。
後者は最初からよく使うプラグイン類が導入済で便利とは聞きますが...
>>292
本当の初心者とか楽したいなら後者
開発経験あるなら前者で必要なプラグインだけ選出して入れる 必要ないプラグインは外せる
だからプラグインと呼ぶ
学校でのプログラミングの課題はあくまで穴埋め的に特定手法の記憶度を見るものであり
独習時の問題とも業務実習時の課題とも違うものだから出来不出来は気にしないのがよい
ネイティブだろうがプロ翻訳家だろうが「学校の」英語「習熟度ドリル」は満点取れなかったりするものだ
あー。帰国子女で日本語片言のやつがなぜか満点取れないと。
この課題はインスタンス変数とクラス変数の違いを知るためのものだから
こういう間違えをして調べるのを期待してるんだろ
ま、しかし、もうちょっとましな課題作れないもんだろうか。
疲れてたのかな。
やっと流れに追いついた
>>200のは、設計がどうのという以前に
キチガイの所業
あるいはお前らの脳を疲弊させるための実験
お前らマトモにとりあってたらダメだぞ あー。そうか。スレを活性化させるために投下された燃料だったのか。
一般的にこういう課題ってam[0]の箇所を
自分なりに修正して提出したら減点対象になるの?
もしそうなら大学レベルの教育方法ではないよね
配列ってホッチキスで止められた書類みたいなもんだから最近嫌いだわ
>>304
要素一つ一つaddする地獄もなくなったし、これからはListの時代 >>307
処等後にプロセスがすぐに死ぬなら
閉じる必要もないでしょ
flushだけでいい
キャッチはまるまるいらない closeとセットで作るようにしないといつかclose忘れ起こすと思うけど
まあ実際的にも教育的にも「closeなんてしなくていいよ」ということはないな
自動でcloseしてくれる普段使い用コンビニエスメソッドが本家でもあるべきではあるが
Javaってc#のusingみたいな構文ないんだっけ?
プログラミング完全初心者でこれから始めようと思っているんですが
何を何からやれば良いでしょうか
お勧めの本やサイト等もご教授ねがいます
OSはLinux Mintでとりあえずeclipseというのとopen java8というのを入れました
>>314
プログラミングで何をやりたいの?
学ぶ目的は? C#と座間林が話題になってたからそっちのほうがいいのかも
>>314
>何を何からやれば良いでしょうか
>お勧めの本やサイト等もご教授ねがいます
全部おんぶに抱っことかアフィかッ!
やんわりマジレスすると最初の最初はJavaでないほうがいいよ
これはたとえ小難しくても業務でカッチリ書けるという面が重宝された言語だから、個人がいきなり趣味でやるとしんどい
ひょっとしたらアンドロイドアプリが頭にあるかもしれないけど、もしゲームならUnityがいいよ 環境見てなかったwwww
もしリッチなマシンがLinuxマシンしかなく、それでもGUIアプリを世に出したいのだとしたらJava...しかないかなあ
アンドロイドアプリをLinuxで作りたいなら実質Java/Kotlinしかないよ
ただ、あなたの中では知名度ないかもしれないけど Python をやるという手もあるよ
よかったら検討してくれ
ありがとうございます
webアプリ作成、Androidアプリ作成、機械学習をやってみたいと考えております
調べていてpythonというのも候補には挙がったんですが
javaをやると基礎がしっかりつくと聞いてjavaにしてみようかなと思いました
学生で新しいパソコンを買う余裕がなく、お下がりのにlinuxを入れて使っています
すいませんちょっと嘘つきました
お金がないよりも、勉強の邪魔になるからって買わせて貰えない
の方が正しかったです
学生さんならJavaなんてやるのは勿体ないよ
あとLinuxでのアンドロイドアプリ作成はメモリ4GB必要だから気をつけてね
何件かレスを頂き、ありがとうございます。
仕事でJavaを使う際、catch文の中にclose処理を入れるのは有りなんでしょうか?
引き続きで恐縮ですが、皆様の見解をよろしくお願いします。
>>322
規約と契約による
あなたの会社がしても良いといえばどっかのJavaのエラい人がなんと言おうとあなたの会社では正しいし
Javaのエラい人が顔をしかめネットで炎上し掲示板で荒らし扱いされる手法であっても上司がそのようにしてくれと言えばあなたはその書き方をすべきである >>317
え?Javaってそんなに難しいか?
まあでも元の質問してる人はOSがLinuxなので多分何も知らない初心者じゃないと思うぞ。
多分他の言語はわかるんじゃないか? あ、ごめん。リロード忘れてた。なんでLinuxか書いてあったな。
まあでもLinux入れてまで使おうとするやつはもはや初心者ではないと思うが。
>>324
まーなんだ、「小難しい」のは間違いないな
1行実行するために10行書くような言語だ
IDEがあるとはいえ学生さんにはもっと前のめりな言語で遊んでほしいところ
あと君が何歳かは知らないけど今のデスクトップ用Linuxのインストールと使用はスマホの設定変更くらいの難易度だぞ >>326
いや、今時のLinuxはインストール始めれば後はだいたいマウスポチポチ押してればなんとかなる事は知ってる。
しかしPC初心者は普通はLinuxの存在すら知らない。あるいはWindowsの上で動くソフトだと誤解していたりする。
そういう誤解がないということはそれなりにわかっていると考えて良かろう。 314です
泥アプリの作成にもRAM4GB必要だそうなので何とかしてもうちょっと新しいPC手に入れて出直してきます
ありがとうございました
泥アプリ開発ならvsでxamarinとかブラウザでmonacaみたいな選択肢もあるし
一旦言語選択から考え直してみたら
>>314-321
まずこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014
その後、この2冊をこの順に読む
たのしいRuby 第5版、2016
みんなのPython 第4版、2017
ここまでが基礎で、実際にアプリを作れるようになるには、数年掛かる。
アルゴリズム・OS・環境構築運用で、少なくとも数年は掛かる クラス名からインスタンスを生成して、
そのインスタンスが保持するフィールドにダミーの値をセットする機能を作りたいのですが、
privateなメンバ変数にも値をセットすることはリフレクションで出来ますか?
class Entity{
@getter @setter
private Long age;
}
があったときnew Entity()のインスタンスとその中のageに何か数値が入っている状態にしたいです
>>314
Progate行ってこい
やれそうだと思ったらスッキリ入門編 >>323
分かりました。ありがとうございました。 H2 Databaseに接続するプログラムをコンパイルし実行したいのですが、
クラスパスを何て書けばいいか調べても分かりません。
どなたか教えて頂けませんでしょうか?
>>338
レスありがとうございます。
具体的には、javac -cp h2*.jar Main.java (Main.javaはクラス名)と入力し、
java -cp h2*.jar Main と入力すればいいんですか? 今時クラスパスを手動で解決するとは
mavenとかgradle使え
>>339
いや、h2*.jar が入っているディレクトリごと指定しないと普通はダメなのでは?
カレントディレクトリにあるならそれでも良いのかも知れんが。 >>340
すいません、今回はコマンドプロンプトで書かせて下さい。 >>342
javacで取り込むわけではないので
javaで実行時にもCLASSPATHを通して見つかるようにしてやる必要がある >>342
コンパイル時と同じ classpath にしてもダメなの? >>344
はい。それは分かります。javacと同じクラスパスをjava実行時にも付けています。
実は根本的に、h2*.jarファイルがどこにあるのかよく分かってない気もするんですが、
H2 DatabaseのホームページからDL出来るh2-setup-2017-06-10.exeファイルの
中にあるんですよね? >>345
はい。
なのでjarファイルの位置指定がそもそも間違ってるんじゃないかと思い始めて
いるんですが…。.jarという拡張子のファイルが見当たらないんです。 >>346
知らないけど
それは自己解凍ファイルなのかな
検索して実際のjarファイルを探してみればいい
コンパイル時はインタフェースさえわかればいいから
その実装のclassには通ってない可能性がある
ちゃんと何してるかから理解した方がいいと思うぞ >>348
あれからいろいろ調べて、Cドライブを検索した結果、h2*.jarファイルが
見つかりました!やはり.exeファイル内には無かったようです。
クラスパスを更新したら実行(javaコマンド)も無事成功しました。
回答して頂いた方々、ありがとうございました。 コンストラクタで引数チェックをし、例外を投げることは設計上良くないのでしょうか?例えば
class hoge {
private final int i;
hoge(int i) {
if(i >= 0)
this.i = i;
else
throw new IllegalArgumentException
}
}
フィールドiに負の数を持たせたくない場合このようにするのが自然かなと考えたのですがいかがでしょうか?
>>350
クソだと思う
値をチェックする責務は専用のクラスに任せて
それ以外のクラスに持ち込むべきじゃない >>350
別にいいと思うぞ
作ってからIsValidで確認するか
そもそも作らせないようにするかの違い
どっちのやり方も良し悪しがある 空のオブジェクト作って後でsetter使って入れるのも微妙だしコンストラクタで値チェックとかしていいと思うぞ
俺ならPattern.compileメソッドみたいに自分自身を返すstaticメソッドで価チェックする
>>351
値チェック専用のクラスを作る場合どのように作るべきでしょうか
値チェッククラスでOKだった数値(正の数)をどのようにhogeのコンストラクタに渡すのかいまいち正しいイメージがつかめません
値チェッククラスのインスタンスをhogeの内部に持たせる(フィールドとコンストラクタの引数を変更する)のが良いのでしょうか?
とんちんかんな質問かもしれませんがよければお答えいただけると嬉しいです
>>352
なるほど
isValidメソッドであとからチェックするというのは思い付きませんでした >>350
>コンストラクタで引数チェックをし、例外を投げる
問題ない
バグでおかしくなるのが一番の問題 Hibernate Validatorみたいなバリデーションフレームワークは一般的に作ってから確認する方式
そもそも作らせないようにするのは”always valid”と呼ばれてる
“always valid model”とかで検索すれば参考になるサイトが出てくる
長所短所を理解して使い分ける
俺だったらPositiveNumberみたいなジェネリッククラスを作るか、@positiveみたいなアノテーション作る
>>353
ありがとう
>空のオブジェクト作って後でsetter使
>って入れるのも微妙だし
私もそう思ったのですがコンストラクタで例外を投げるのは良くないというような意見をどこかで目にしたので聞いてみました
>>357
ふむふむ
個人的にはそもそも作らせないって方が好みな感じがします
調べてみます情報ありがとう コンストラクタとセッタに同じことを示す文が複製されるのもちょっと良くないな
>>351
クソ?しかし API にも new した時に例外出すやつ沢山あるわけだが、そういうのは全部クソ? >>360
コンストラクタで最初に値をセットして後から変更できないようにsetterは持たせないというつもりでした
(フィールドをfinalにしているのはそのためです) >>355
オブジェクト作る前にValidatorクラスでチェックするだけ >>361
全部クソ。
オブジェクトの責務をわかっていない。 インスタンス変数(やクラス変数)は
そのオブジェクトに付属するデータだから
コンストラクタなどでデータチェックの責務を
オブジェクト自身に持たせるのはおかしくない
ただしチェックが複雑化したときに
責務を委譲するのもアリ
>>365
そのただしが問題
検証はシステムの関心ごとだから
集約するべきでオブジェクト毎に持つものじゃない
コンストラクタはオブジェクトを初期化するという
特別な処理であってここでデータチェックが必要になるのは
責務の分離ができてないシグナルみたいなもの
staticメソッドでtryCreateという名前なら100歩譲ってオーケーだ 負の値を持たせたくないのは業務の要件なんですよ!!
>>366
>検証はシステムの関心ごとだから
>集約するべきでオブジェクト毎に持つものじゃない
責務を分離するのは重要だがそのオブジェクトの
規模が大きくなって複雑化するにつれて分けていくもの
たとえば生成の責務をファクトリに分離してもいいが
何でもかんでも全部ファクトリにする必要はない
だからコンストラクタでチェックしてもいいし
バリデータみたいのに分離してもいい 思わず激昂してしまいましたがとにかく小生が言いたいのはコンストラクタで例外投げるのおかしいですよということなんです
>>368
どっちでもいいなんていうそんな優柔不断で玉虫色な考えに真実があるわけない、あなたは思考を放棄しているに等しい、ここにはこういう値しか保持したくないんです、立派な業務要件でしょうが!!
じゃあその要件をまとめましょうよ、システムの関心ごととして切り出しましょうよ >>367
業務要件で例外処理を考えてるってなかなかおもしろいね もっと具体的にちゃんと説明して
小生良い事言ってるからそれちゃんと説明して
>>370
いやそれは極端でしょ
OOPの要素はどれも使い分けじゃないの?
複雑化したら切り出すが抽象化にはキリがないので
IF文を全部ポリモーフィズムにするわけでもないし
最初から全部デザパタにするわけでもない >>374
ifの話じゃないだろ
なんでもかんでも一緒にするな
極端なのはそなたの方
こなたが言いたいのはとにかくコンストラクタでチェックするのおかしくないですかってこと >>375
コンストラクタでチェックするのはおかしくない
JavaのAPIでやってるくらいなんだから
むしろやるなって方が押しつけ コンストラクタでチェックして例外投げるのは
ようわからんけどオブジェクト作ってみるわー
でけへんかったわーゲヘヘーと言ってるようなもの
文明人のやることじゃない
アサートを使うべき
アサートは本番では動かさないからね
検証は専用のオブジェクトでやりましょう
>>376
アホかお前は、お前はアホか
JavaのAPIははっきり申し上げてクソでござる
クソがやってるから大丈夫なんだとはならんだろうが
どこがクソかはお前に任せるよ アサートでもいいが例外投げてもいい
つーかコンストラクタで例外投げるのが大問題なら
Javaの言語仕様でできないようにするだろ……
普通に考えて2ちゃんの一個人より
Java(API)のやり方の方がいいわ
>>379
ファイナライザでは例外投げないようにしましょう
というのがベストプラクティスだけど言語仕様ではできるでしょうに
言語仕様ってその程度のものですよ
コンストラクタでも例外投げるのやめましょうよ
2chネラーだから信用しないっていうのは権威主義的というか誰が言ってるかより中身で判断していただきたい、小生絶対良い事言ってるから!! それでええんか?
議論って考えを広げるためにあるんやで
キチガイとレッテルを張っておしまいでほんとにええんか?
小生が可哀想だと思わない?罪悪感を感じない?お前のお母さんもお前には優しい人に育ってほしいと思ってたのじゃないか?
ありがとうの後にはございますを付けろ、それが礼儀だ
コンストラクタでデータチェックしない人になって欲しい
>>377
何が悪いか分からん。
オブジェクトの生成失敗も業務メソッドの実行失敗も、中断すべき状況になったら例外飛ばして何が悪いのか。
コンストラクタで例外飛ばすなって話はC++ならメモリの回収がややこしくなるんで一利あるけど、JavaやC#なら問題ない。 遡及IDは嘘つかないな
ソノトキ何をしたかよりもソノアト何をしたかが一目瞭然である
便利でよろしい
>>367
なんというか、それそのものは Java 自体の問題のようにも思えるね。
つまり、unsigned が型として用意されてないからとか、PASCALみたいに数値の範囲を指定した新たな型を作れないからとかね。
まあそういう数値型のクラスを自作してしまえば良いだけかも知れないが。 >>385
そんなにそれを求めるなら最初からそれができない新言語作れば?
大丈夫。君にも作れるよ。実装までできなくても言語仕様考えてネットで晒してフォーラム作って議論してまとめ直してから作ってくれる人募集すればその内なんとかなるだろう。全てを君が作る必要はない。 たまに生成されたクラスファイルが分割されることがあるんですがどういう条件で起きるんですかね?
ファイル容量の問題かと思いきや大きいものでも分割されてなかったり…
>>392
1ファイルに複数のクラスを書いてるんじゃない? >>391
これがPHPというのがわかりました
スレ汚し失礼致しました。 >>392
インナークラスの悪寒…
$付いてない? >>394,395
色々調べてみたらどうもシリアライズ可能なクラス?というのが原因みたいでした…
お手数おかけしました >>362
final見逃してただけだった
それなら尚更コンストラクタだね >>359
範囲外の入力値エラーだろ
private、つまりクラス内では、戻り値でエラーを示すが、
public、つまりクラス外では、例外でエラーを示す
なぜなら、クラス内をコーディングしているのは、普通は同じ会社だから、
その会社内で規定したエラー値を使っても、見落としが少ない
でも、クラス外の場合は、クラスをコーディングした会社と、異なる会社が使うから、
そのクラス内で規定したエラー値を使っては、いけない。
なぜなら、他社の人は、クラスのドキュメントを読まずに、クラスを使うから
つまり、クラス外部の人に対しては、絶対にエラーが起こるように、例外を使う
クラス内をコーディングする人と、そのクラスを使う人は、
異なる会社を想定している。
他社の場合は、クラスのドキュメントを読まないことを想定すべき
「スッキリJava」にも書いてある。
クラスを使う側と、フレームワークなど、他社が使うクラスを作る側の、
コーディングの違い。
他社を想定している場合は、全く違う
この辺は、品質管理をやってないと知らないはず >>398
どうしてもスッキリの宣伝をしなきゃ気が済まないようだな
その一節がなけりゃいいのに 「スッキリJava」では、クラスの責務を、明確に分けている
前半は、クラスを使う側の知識で、
上級編はフレームワークなど、他社が使うクラスを作る側の知識
フレームワークを作る側では、検査例外を使って、コンパイルエラーにしないと、
ドキュメントを読まずに実行した客が、実行時エラーを起こして、
電話をかけてくるから、商売にならない
本を読んで、実行時エラーを起こした客が、出版社に電話をかけてくるだろ。
それと同じで、商売にならない
だから例外にして、その例外をキャッチしない人は、実行できないようにする
サポート契約をしない、無料相談の客をはじかないといけない。
無料で見積もりさせる客も
javaでWebアプリ作ってるのですがグラフ表示をしたいです
jfreechartとかchart.jsとか出てくるんですがおすすめとかってありますか?
>>380
しばらく2ちゃんを見れない状況だったので亀レスとなってしまいましたが、コンストラクタで例外投げるのが良くない理由をできれば聞きたいです コンストラクタっていうのはオブジェクトを初期化する特別な処理を書くところ
渡された値をそのまま何の加工もせずにフィールドにお納めするのが義務なんです
どうしても例外を投げたいならtryCreateというスタティックメソッドを作って
例外投げますよ作れないかもしれないですよということをメソッド名で
陽に示すべきだ、この処理は検証も含んでいますよと示すべきだ
なぜならば検証も含むからだ、オブジェクトを作るメソッドなのにだ
FileStreamもコンストラクタで例外を投げるが
あの設計も大間違いだから
コンストラクタでリソース確保しようとするのが完全に間違ってる
closeの処理でリソースを解放するならばリソースを確保するのはopenだ
openの責務をFileStreamは持つべきでそれはオブジェクトを初期化する
コンストラクタとは役割が根本的に100憶パーセント異なるわけ
>>406
何もしなかったら意味ないだろ……
直通のゲッターセッターと同じただのお飾り >>409
フィールドを初期化するという大事な処理がある
セッターは代入だから、初期化じゃないから UI -> アプリ(バリデータ) -> ドメイン -> DAO
レイヤーはこのように分けてドメインから先にバリデーションのコードを持ち込んではいけない
オブジェクトをクリーンに保つためのベストプラクティス
バグがないように引数をチェックするという目的でやるなら
アサートを使うべきだ
ただしアサートを使うのは開発時のみで本番コードには含めない
本番コードで引数チェックが必要になるようならそれは
業務要件として抽出するべきだ
なるほど
405~410まではなんとなくわかりました
411, 412は私の経験or勉強不足でいまいち理解できませんでした
でも、解説してくれてありがとう
>>413
ありがとうの後にはございますだ
それが礼儀だ なるほど。わかった。スレが過疎って来たらコンストラクタで例外の話を出せば書き込みで溢れてスレが活性化するのだな。
時折反論を書きありがとうの後にございますを付けなければなお良いと。
コンストラクタに不正なもの渡された場合に例外を出すことが
なぜいけないのかについては1ミリも説明されてなくて草
>>418
責務の分離ができてない証拠だから
100ミリくらい説明してますけど
10メートルですよ むしろ初期化の異常で例外を投げるのは
コンストラクタの責務だろ
なぜならコンストラクタの引数で渡されたデータから
インスタンス変数(やクラス変数)を初期化するわけだから
情報エキスパートの原則からして
データの処理はデータを持ってるオブジェクトが行うのが原則
ただ処理を全部抱え込むと肥大化するから
他に委譲することは構わない
newの代わりにファクトリを使ったりするのと同じ
しかしそれは「newを使うな」ではない
「外部に委譲してもいい」のであって
「コンストラクタで例外を投げてはいけない」ではない
>>419
責務を理解できてない典型だね
君がそういう規約で開発するのは勝手だけど
それをベストプラクティスだからとか言って
他人に押し付けるのはよくないよ >>421
ベストプラクティスってそういうものだよ
こういう実装もできるけどこっちの方が好ましいよねっていうものだから
そういう意味で言ってるわけよ
たとえばModel View ControllerのアーキテクチャがあるけどViewに
Modelのコードも全部書きまくっちゃってもいいわけよ
でも分離するのが好ましいだろ、そういう意味で言ってるわけよ
その真意をくみ取って欲しいわけよ
コンストラクタでデータチェックヤラナイのが好ましいわけよ
え?ヤラナイの?なんていうふしだらな誘いに乗らないで欲しいわけよ >>422
理解できてないことを1ミリも説明してないじゃん
話にならないよ 自分の考える責務の分離はこうっす
自分こう思うっすとはきはきと説明できないかね
若さが感じられない
どんなに外部でチェックしてもインスタンス生成に失敗することはあるわけで、
そういうときに失敗を通知する手段は例外しかないわけで、
コンストラクタで例外を投げてはいけないとする方が問題だ。
モデルに存在するべきコードがコントローラに存在するものをファット・コントローラと言うけれども
バリデータに存在するべきコードがコンストラクタに存在するものをファット・コンストラクタと呼んで
クラスの生活習慣病に位置付けるのはどう?
徐々にシステムを蝕んでいきます
コーディングの習慣を見直しましょう
>>427
どんなに外部でチェックしてもインスタンス生成に失敗するときは例外投げて良い
そんなのケースバイケースだろ、柔軟に対応しろよ ベストプラクティスっていうのは柔軟っていう意味もありまぁす!
入力値チェックは、MVC のビューでやるけど、
ドラクエ10 の記事によると、
通信データの500バイトに、1バイトは間違っているから、
通信データは、絶対に信用しちゃいけない。
必ずサーバー側でも、チェックすべき
途中のルーターが、データが間違っていても、データを破棄せず、
間違ったデータで、パリティを再計算して送ってくるから、
正常なデータのように見える
サーバーが受け取ったデータが外部入力なんだから
それをチェックするのは当たり前
ユーザー入力と同じ
境界の外から入ってきたデータを
どのレイヤーでチェックしてエラーハンドリングするかということと
モデルレイヤーのコンストラクタが事前条件に反した不正値を受け取った場合に
例外を投げるかどうかは関係はしてるが種類の違う問題
という話をしてる
できれば不正値はコンパイル時にエラーになって欲しいものではあるな。
不正な値を引き渡せるようにプログラミングできること自体がなくなった方が良い。
I/O絡みのエラーは実行時じゃないとわからないから別としてね。
(指定したファイルがなくて読み出しオープンでエラーとかは仕方がない)
>>431
へー、チェックサムも独自に仕込むのかな >>432
事前条件ってまさにアサートの領分じゃん モデルの引数を間違えてるっていうのはバグなのでー
開発時に分かればよいことなのでー
アサート使うべきだよねー
コンストラクタをぶくぶくと太らせる理由にはならぬよ
メタボリッククラスから脱却してスマートクラスにしよう
>>436
Javaの場合はアサートって言うとビルトインのassertをさすからね
事前条件なら自動的にアサート使えとはならないよ
それともコンストラクタでは
ExceptionではなくErrorを投げるべきって言いたいのかな? >>439
何言ってんだおめー
assert使うべきで
例外を投げるべきじゃない javaなら、コンストラクタで例外スローでいいでしょ。
>>441
でも設計的に大間違いですよそれ
コンストラクタの使い方完全に間違ってますよ 以下のコードをideoneで実行できません。(ブラウザとしてエラーが発生)
どなたか理由を教えてもらえないでしょうか?
import java.lang.reflect.*;
class RefSamp {
public int times = 0;
public RefSamp(int t) {
this.times = t;
}
public void hello(String msg) {
this.hello(msg, this.times);
}
public void hello(String msg, int t) {
System.out.println("Hello, " + msg + " x " + t);
}
}
public class Main {
public static void main(String[] args) throws Exception {
Class clazz = RefSamp.class;
Constructor<?> cons = clazz.getConstructor(int.class);
RefSamp rs = (RefSamp) cons.newInstance(256);
Field f = clazz.getField("times");
f.set(rs, 2);
System.out.println(f.get(rs));
Method m = clazz.getMethod("hello", String.class, int.class);
m.invoke(rs, "refrection!", 128);
boolean pubc = Modifier.isPublic(clazz.getModifiers());
boolean finm = Modifier.isFinal(m.getModifiers());
}
}
ideoneは知らんけどリフレクションはjavaセキュリティマネージャ動いてたら実行できないからそれじゃねーの
35歳に親切にすると君の職場に現れて付きまとわれるぞw
>>445
決めつけるなよ。それに初心者認定したのはあんたらだろ?
>>447
レスありがとうございます。
ideoneではなにかしらそういう安全装置が働いているということですね。 まず質問の仕方がおかしいんだよなぁ
ここは学校じゃないし、相手は先生じゃない
質問者の言わんとしてることを一生懸命に汲み取ってくれる人なんてほとんどいない
もっと相手に伝わるように質問しろ
>>450のリンク見てもエラーが出てるんだよな?
正直エスパーしようにも限界 >>452
なんで質問が分かりにくいって指摘に対
し、
俺が親切な人だったのか聞かれてるの?
全然意味分かんないんですけど そもそももっと答えの得られやすい質問が出来るようになれば解決なんだけど、
なぜ君は指摘に対してわざわざ「じゃああんたはごにょごにょ」とわざわざ全く関係ない事持ち出して喧嘩売ってきてるの?
中学生なの?反抗期なの?
自分の行動を振り替えって恥ずかしくない?
>>459
前回はみんなが教えちゃったけど
正直ためにならないと思うんだよね
でも一個だけヒント言うなら一行ずつ処理を追ってみ(2番目の)
「この変数にはどんな値が入っているか(入るべきか)」意識しながら
現状インプットからアウトプットまで線でつながってない
インプットの仕方は「Java コマンドライン 入力」でググれ >>461
ごめんなさい、褒められてると思ってなかった
字面で反応してしまったのは俺も同じでした
反省してきます >>462
ありがとうございます。時間かけてやって見ます >>459
5月の宿題を今やってんじゃねーよ
せっかくお金払って学びに行ってるんなら先生に聞きな 課題の内容および詳細がバッドノウハウの固まりだな
やっぱ学校はCかLispでいいと思うよ
javapro wwww
前に安易に答え教えたせいか変数の使い方すらろくに理解してなくてひでぇな・・
金ドブだからもうやめた方がいいぞマジで
問題も毎回酷すぎてガチでビックリすんだけど学校の名前教えてくれよ
こんなゴミみたいな問題できても全く勉強にならんレベルの酷さだぞ
public class Month {
int hi;
int[] days = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Month(int num){
hi = days[num-1];
}
public int getDays(){
return hi;
}
}
public class Calendar{
public static void main(String[] args) {
int tsuki = Integer.parseInt(args[0]);
if(tsuki >= 1 && tsuki <= 12){
Month m = new Month(tsuki);
System.out.println(tsuki + "月は" + m.getDays() + "日あります。");
}
else{
System.out.println("1〜12月を指定してください。");
}
}
}
days = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
month = 2
puts days[month] #=> 28
Ruby では、これだけ。
ただし、days[0]は使わない
画像などを貼るな!
paiza.io, codepad などのサイトに、ソースコードを貼って、質問しろ
>>471
何で教えるんだ?
1,2,3,4,5の配列から3番目の値を得る方法を教えろよ。
そうすれば月から日数得る方法も分かるだろ。
考え方が分かって無い人には答えを教えるべきじゃない。 >>350
上級Javaグラマーアカデミー一般命令・規約
規約6第23項18節
パラメータとして渡される値に関して
クラスの不変式を破っているオブジェクトの生成を防ぐため一般原則の特殊な場合として
メソッドおよびコンストラクタは後で使用されるパラメータの正当性を検査すべき
非公開メソッドに関しては一般に、アサーションを用いて検査すべき
上記規約に対する例外として、正当性検査のコストが高いか現実的でなく、かつ
正当性検査が計算の処理の中で暗黙的に行われる場合はこれに該当しない
また暗黙的検査によって誤った例外がスローされる場合はエラーアトミック性が失われることになるため
このような状況下においては抽象概念に適した例外をスローできるようにイディオムを使用すべき クソな問題は逆に頭を悪くするので、すぐに答えを教えるべき
だいたいハードコーディングというところがもうダメなのに。
こういう場合は月の値がおかしかったら例外投げるのが良さそうに思うが、そうすると今話題のコンストラクタで例外になる。
かといってそれをしないならどのタイミングで例外投げるのが良いのか?
(まあそもそもこんなもんクラスにすべきではないのかも知れんが)。
さて、このネタでまたスレが活性化するかな・・・
最近Javaを始めた者です。
質問させてください。
質問1)
店から客が弁当を買うような仕組みのプログラムを作りたいのですが、
用意するクラスは「店」「商品の弁当」「客」「実行するためのメインクラス」で良いのでしょうか?
変数は「店と客の所持金」、「客の腹の空き具合」、「弁当によって満たされる満腹度」のようなものを考えています。
質問2)
この様なプログラムの場合、売買のメソッドはどのように作ればいいのでしょうか?
「店が売る」メソッドか「客が買う」メソッドのどちらかだけ必要なのか、両方必要になるのかが分かりません。
現実的に考えれば客が居なければどんなに商品があっても意味が無いので、「店は商品を用意する」それを「客が買う」ような設計になると思うのですがどうでしょうか?
質問3)
現実的には客が弁当を買えば店の在庫は減り、客が所持する弁当が増えます。
このようにオブジェクトの中のオブジェクトが違うオブジェクトに移動するようなプログラムはどのように書けばいいのでしょうか?
質問4)
「客が買った弁当を食べる」という行為を行った場合、客が所持している弁当が無くなるわけですが、この様な仕組みはどのように書けばいいでしょうか?
以上、長くなりましたが良い方法があればご教授ください。
よろしくおねがいします。
空腹度なんて抽象的すぎてゲームの中でしか成立しないぞ
ひっでぇ質問の内容w
何したいのかさっぱりわからん
>>478
そのシステムの軸がどれなのか?
店、客、弁当を眺めるシステム? >>478
売買を真面目に考えると面倒くさい。
弁当のクラス以外に、店と客が「持ってる弁当のリスト」を持つか、
弁当リストクラスを別に作って、弁当に持ち主「店」「客」を持つとか、そんなんじゃないの?
どこにも属してない弁当が存在し得れば後者だと思うし、今回はどこにも属してない弁当があったほうが便利。
食った=無くなった=オブジェクトをリストから削除するか、弁当の満たされる満足度を食ったら残り0にするかじゃないかな。
腹の空き具合と弁当の容量のコンバート関数でももたせりゃ便利じゃねえの?後々。
その空き弁当箱は、捨てるときに、持ち主無しにしといて、たまに持ち主無しの弁当箱をバサッと消したほうが楽かも。
客が来たら作る、となるとまた面倒くさい。
店の方の在庫数で、負在庫に突入しそうなら補充とか、残り○個になったら補充、そういう風にするんじゃないの?
業務アプリみたい。 >>478
いかにも初心者らしい疑問だけど
同時にどれももっともな質問だね
>質問1)
>用意するクラス
ソフトの規模の大きさに応じて
クラスは細分化していく
>「店」「商品の弁当」「客」「実行するためのメインクラス」
でもまあ小規模な前提なら
それで大筋でおかしくないと思う
もし規模が大きくなるなら
「金」とか「(弁当の)具」とか「客の行列」とか
クラス化する場合もあるかも
>「客の腹の空き具合」
ゲームなの?
業務アプリとゲームだとかなり考え方が違う >>478
>質問2)
>売買のメソッド
これは二者関係だから
複雑になりがちなんだよね
まず話を簡単にするためゲームだとして
店視点の販売目的のゲームなのか
客視点の満腹目的のゲームなのかで違う
小規模ソフトならプレイヤー視点の方に
メソッドをつければOK
じゃあもっと複雑な場合どうするか?
客の買うメソッドから
店の売るメソッドを呼ぶという
二重呼び出しもありうるし
第三者が「売買」メソッドを
持って仲介するケースもありうる
「デザインパターン」とか学ぶと
そういう複雑な関係のさばき方が分かってくる >>478
>質問3)
店の弁当を減らす処理と
客の弁当を増やす処理を同時に行う
>質問4)
客クラスの変数で弁当の所有数を表現して
食事メソッドなどで消費したら減らす
店側で帳簿をつけていて
客側でも家計簿をつけているとイメージして
それをプログラムで表現すると
何をすればいいか分かりやすいかも なお今回は弁当だから店と客の所有数の増減の
つじつま合わせだけやればいいと思うけど
組織間の社員や会員の移動みたいに
個体識別が必要なものが移動する場合は
参照したりIDを振ったりやはり複雑になる
やろうとしていることがシミュレーションゲームだよな。
みなさんありがとうございます。
質問にあいまいな部分が多すぎて分かりにくい文章ですいません。
自分はまだ始めたばかりの初心者なので、大規模なものでは無くeclipseの練習がてら細々と色々作ってコンソールで実行しようと考えています。
いくつかご指摘があった通り、確かに「客視点」なのか「店視点」なのかを決めてしまったほうが良いですね。
とりあえず486の通り客視点で作ってみようかと思います。
あまり規模を大きくすると混乱すると思うので、「店1つ」「客1人」「弁当1種類」でやってみます。
485で書いていただいたような「通貨」や「弁当の具」や「客の行列」などはまだ考えないことにします。
>>487
この場合、客と店にそれぞれカウンター変数を作ってそれぞれカウントするような認識で良いでしょうか?
それとも弁当自体にカウンターを持たせてオブジェクト数をカウントするのでしょうか?
>>484
リスト構造はLinkedListしか使ったことが無いので他にどのようなものがあるか調べてみようかと思います。 >>491
>客と店にそれぞれカウンター変数を作って
>それぞれカウントするような認識
「カウント」が弁当の数のカウントならそうだよ
(販売数のカウントだと一度に複数売るとズレてしまう)
弁当の所有数を店と客の変数で表現するのが一番簡単
ただ弁当の種類が増えたり売買が複雑になってくると
リストなどに入れて店や客に直接弁当オブジェクトを持たせる
というやり方の方が逆に分かりやすくなってくる
弁当が100個なら100個オブジェクトを生成するというように
ゲームの世界とオブジェクトが一対一対応すると認識しやすい
ミニゲームにはそこまでいらないけど本格的なゲームなら必要 >>478
直接の答えじゃないんだけどオライリーの「HeadFirstデザインパターン」を
読んでみるのもいいかも
質問のような店、商品、客のクラスを例にしてデザインパターンを使ってどう扱うかを
サンプルコードで説明しているので参考になると思う これは、プログラムの問題じゃない。
システムの設計。SE の仕事。
図書館の貸し出しシステムとか
情報処理資格上級のデータベーススペシャリストの、過去問題集に一杯載ってる。
上級SE とか、部長クラスの資格
privateとpublicはよく使うけど protected とか未指定って何!
パッケージとかサブクラスって何!
finalって何!
なんで無駄に継承して作るの!!
みたいなこと思うのは私だけでしょうか メリット・デメリットが一切わからん・・・
>>474
ありがとう
上級javaグラマーアカデミー調べてみます >>478は私じゃないですが
コンストラクタの件もそうなのですが、自分でこうしてプログラムを書いてみようとすると、同じようにい設計面での様々な悩みが大量に出てきて
どうしていいかわからなくってしまう
なにか指針となる良い本とかないだろうか >>478
>>499
質問の仕方からプログラムの基礎ができて無い。
過去スレのjava入門スレや図書スレとggる事ぐらいしろ。
言い訳するな まずこの本で、オブジェクト指向を学ぶ。
スッキリわかる Java入門 第2版、2014
スッキリわかる Java入門 実践編 第2版、2014
スッキリわかる サーブレット&JSP入門、2014
実践Javaコーディング作法 プロが知るべき、
112の規約と21の心得、森崎雅稔(まさとし)、2014
Java 最強リファレンス、田中裕一、2014
EFFECTIVE JAVA 第2版、2014
Spring Framework 4 プログラミング入門、掌田津耶乃、2014
Spring Boot プログラミング入門、掌田津耶乃、2016
これらはプログラミングの本だから、これらを読んでも設計はできない。
システムの設計は、SE の仕事
図書館の貸し出しシステムとか、中古車販売システムとか、
情報処理資格上級のデータベーススペシャリストの、過去問題集に一杯載ってる。
上級SE とか、部課長クラスの資格
実際の仕事では、プログラミングよりも、設計とフレームワーク、
サーバーの環境構築・運用が重要で、10年以上掛かる
10年経つと学習速度が追いつかなくなってお払い箱になる
SEとは成れの果てだ
だが毎日感謝の正拳突きを続ければ道が開ける、生涯現役
>>431
どのみちチートがあるからサーバ側でvalidateするんじゃ
MVCのViewがjavascriptだったりローカルアプリでもするでしょ >>499
Javaは俺も初心者だが本立ち読みして、買って、ネット検索して苦労することが成長させてくれると思うけどね。
お手軽に手に入れても深みが足りないんじゃないかな。 >>506
実務がないのにあんなにやってもどれほど意味があるのかどうか。 Java始めます。
eclipseインストールしました。
よろしくお願いします。
>>508
インストールするようなものではない。
初めから間違っている。 eclipseはソースコード呼んだほうがいいと言われた
それなりに読めるようになるまでどれ程かかるか…
>>510
そして気づいたらKotlinの方にハマってると >>513
慣れたいのがEclipseなのかJavaなのか?
まあEclipseの使い方から入ってもいいが、Java環境の基本の勉強なら遠回りになる。 eclipseがオワコン言ってるのは泥目当ての子たちだろう
皮肉にもAndroidのおかげでJavaに関心が集まったのも事実だ
でなきゃ悠久の時の中で緩やかに死んでいた
>>513
アーカイブ展開するだけのことをインストールとは言わないと思ってる人が最近増えたっぽいね
最近はeclipseもインストーラー提供してるけど、そっちでインストールしたら> >509も納得なんじゃない?w 日本ではセットアップと言うのが無難。準備でもいい。
インストールは日本語にない概念だから、日本人には定義が難しい。
ポータブル版
ダウンロードして解凍するだけだから、安全。
フォルダごと移動できるし、アンインストールも削除するだけ
システムをいじっていない
インストール版
システムをいじっている
環境変数PATH などに、インストールしたフォルダを追加しているため、
単純にアンインストールしただけでは、システムは元に戻らない
所定のアンインストール作業が必要で、フォルダごと移動したりも出来ない
客の見るメソッドで店頭にある弁当の在庫を確認
客の購入メソッドで弁当を客の注文リストに追加、店の在庫を減らす
客の支払いメソッドで店のレジに客自身のオブジェクトを追加してレジに並ぶ
店のレジで追加された客の注文を参照して、客に支払いを要求する
単に買い物する仕組みならショッピングカートで実現されてる
アマゾンも楽天も流れは同じだよね
システム改良や業務改善ではなく売上を上げることを目標にしているなら
客の不信感を想起させないようこれら大手と同じアプローチを採用した方がいい
一方、システム改良というのは例えばレジ無人化のためにICタグをどこにつけるとか
実店舗の在庫とオンラインの在庫を統合して即日配送するとか、そういう話だろうね
このスレで聞くべきでなかったらすみません
2年前にjavaシルバーse7の資格を取りましたが、今更になってgoldを目指そうと思っています
今はもうse8が新しく出てるみたいですが、やはり取るならse8のゴールドをとるべきなのでしょうか?
その場合、移行試験でシルバーse7→シルバーse8をとり、ゴールドse8を取る流れであっていますでしょうか?
補助が一回でるだけですけどね
se8でなくse7でも大丈夫なのかどうか…
>>531
移行試験の試験対策情報は少ないから気をつけた方がいい。 eclipseでpostgresqlデータベースにアクセスしようとするとこのエラーが出てしまいます。
解決策を教えていただけませんか?お願いします。
org.postgresql.util.PSQLException: Connection to 10.0.0.5:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:262)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:52)
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:216)
at org.postgresql.Driver.makeConnection(Driver.java:404)
at org.postgresql.Driver.connect(Driver.java:272)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at test.conectDAO.Conect(conectDAO.java:22)
at test.Main.main(Main.java:6)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.postgresql.core.PGStream.<init>(PGStream.java:61)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
... 8 more
>org.postgresql.util.PSQLException: Connection to 10.0.0.5:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
ここに書いてある。
このエラーメッセージで検索すれば?
正確なエラーメッセージで検索するのが、開発者の基本!
システムの構築・運用は、プログラミングと関係ないから、勉強に数年掛かる
psqlを使って10.0.0.5にログインできるか試しファイアウォールの設定を見直すんじゃないかな
つかJavaどころかeclipseの話にすらなってなくね
技術というか歴史?思想?についての質問です
Cを一通りやってからJavaに入ったんですけどもうとにかく長々と書くことが多くてゲンナリしています
例えば勉強の一環でオンラインジャッジとかやってるんですが、Cならscanf一発で済むのがbufferedreader云々……とあーもーと
文法上でもCを下地にしてるのは感じ取れるのですが、ならなんでもう少し分かりやすい方向に行かなかったんでしょう。複雑すぎる気がしています
>>533
Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. >>536
慣れの問題。
それと、短く書きたいなら Kotlin やってみるのもいいかも知れないが、まだ Java を知らない人向けの入門書はないようだ(少なくとも日本語の本には)。 そういえば、出てきたメッセージが英語というだけで全く読もうともせずに人に聞く人が昔から居るように思うのだが、なぜ居なくならないんだろうか?
英語が全然わからないのか?まあわからなくてもいいんだが、しかしコピペするだけで自動翻訳してくれるサイトもかなり前からあるわけで、なぜそういうのを活用しないのか?
>>536
Cから来ると最初はそうだと思うけど
Javaの方が分かりやすくなってくる エラーメッセージ程度の英語すら理解できないような残念な人に限ってすぐに人に聞くというだけのことでしょう
何も不思議ではない
>>536
そもそも、Cよりシンプルであることを目指して作られた言語じゃないから 全力出してないのに過小評価されてしまいます。
どうしたら良いでしょうか?
>>543
全力出せばいいんじゃないでしょうかね。
これにて一件落着。 出そうと思ってますが体力が無いです
体力つけるには靴が擦り減るんです
1000円も大事なので靴が買えないんです
それに選ぶの面倒じゃないですか
これじゃあ全力出せまでんよ
あえて基礎から学んでますがね
靴は座敷の入り口に色々なものが並んでるから合うのを持ってきたらいいのでは。
>>536
組込用の言語だったから、初期の設計の時点では機能的に欲張れなかったのが第一の理由
ン十年前の組み込みだからメモリなんかほとんどない、16Mbytes「もあるのか」レベル
たぶん必要ないってなったらかたっぱし実装を諦めていくことになる
で、その言語をWeb系に転用したら大評判になった
評判になってしまうとヘタに仕様いじれないでしょ、互換性の問題で
これが、Javaがときおりやたら回りくどい理由の主因
はなから機能が少ないものがなぜか流行ってしまったわけです
で、例えばバッファリングとかでWebアプリ高速化的な需要があるんス、とかいうと
「既存のコードをラップするクラスでごまかす」以上の手がなくなるわけで
彼らはそうしたというか、まぁそうなるわ
おっしゃられるbufferedreaderとかは「過去の互換性の問題でラップラップをキメにキメてキメまくった結果
初心者にはイミフでチェケラなんて言えんわ逝ってよし、になってしまったもの」と諦めてください
つまり定型文として飲んでしまうしかないわけ >>551
ユーザーにラップさせなくても、commonsみたいによりシンプルなAPIを提供することはできたわけだし、
そうすりゃ互換性云々は関係ないし、その考察は筋が悪いね >>536
scanfに相当するのはDataInputStreamあたりで、
BufferedInputStremはエンコードとかオーバーフローの問題を見てくれるから、ちょいと複雑になるのはしょうがない。
例題がマズイのかもしれんが実は実現されていることが1と10ぐらい違うよ そういや printf() はあるんだから scanf() のようなものも標準で作れば良いのにね。
Cみたいに代入先の変数のポインタ渡す必要なくて、入力元とフォーマットだけ受け取って
戻り値は List か配列に並べて返して戻された側が(必要であれば instansof で型チェック
してから)値を受け取ればいい。
というか、そんなもんは標準になってないだけで多分誰かもう作ってるだろうな。
あ。Scanner の findInLine() があったか。
んなもん誰も使わねーよと思ったがJava9でrepl追加されたしな、ありかもしれない(手のひら返し
プログラミング初心者です
以前までCを学習しており苦Cを一通り終えました
そしてJavaを始めようと思ったんですがVS2017でのJavaのインストールがわかりません
スレチでしょうか?
それとおすすめの解説サイトを教えてもらえれば光栄です
>>556
既に scanf() なんて個人で勝手に作ったのが世界中に溢れかえっていてちょっとクグれば何万箇所もダウンロードサイトが出てくる、
と思ったら一件も出てこなくて世界中Javaでscanf()と同じようなないのかという質問だらけ。どうやら今までに作ったやつは居ないか物凄く少ないようだ。
これはチャンスだ。
初心者向けのお題としても良いかも知れん。 >>557
統合開発環境はVSだけじゃないんだから少しは調べてみてはどうだろう? あのーJava9とかでたみたいだけどいろいろ見てたらいまだに現場はJava7ですとかいうのをみました
ほんとのところはどうなの?
新しいJava9とかつかってる人はいないの?
新プロジェクトが始まってJavaのバージョンが6から7になったぞ
やったー!
>>552
JSRみたいなの見てると、Java界は大きな機能入れづらい風土なんだろなーって印象はあるわ
外部の誰かが楽になるものを書いたら似たようなのが次のJavaSEなりEEに入る感じで、後追い
EEに関してはEclipse移管で開発速度上がるんだろうか? Java MVCが結局おしゃかなのは残念だ >>561
うちの会社は古いプログラムでは1.1で、新しいやつは1.6使ってるよ。
なんでバージョンアップしないのかというと、既に膨大な量が作られていて検証するのが大変だから。
まあその内またJavaで新しいの作るかも知れないけど、その時はその時のバージョンで作ると思う。
しかし年月が経ってJavaのバージョンが上がってもそのプログラムに対してはそのバージョンのJavaを使い続けると思う。
業務用のプログラムはだいたいそんなもんだ。一度動いたものをそう簡単には変えないんだ。
変えて動かなくなったら損失になるからね。金と信用が掛かってるから物凄く保守的なの。 COBOLとか.docや.xlsが未だに生き残ってる理由
逆にバージョンアップするたびに変えてたら
莫大な更新費用が掛かるのは明白だからな
サポート切れのシステムを使うと、
セキュリティーホールがあるから、顧客から損害賠償請求される
サポートが切れると穴が空くというわけじゃないがな。穴があるとすれば最初から空いているもの。
そういう意味では新しすぎるものよりある程度枯れたバージョンの方が安全だったりする。
どっちにしても、サポートが切れてもリプレースせずに使い続けるのは顧客の責任だわな。
バージョンアップなんて簡単でしょ
テスト整備してないのかな
>>570
空いた穴が塞がれないのが問題なんだろアホか 若干スレチで板違いですがJavaFXでゲームを作ってます
Timelineでゲームループ作って0.何秒ごとにループを回してキーボード方向他入力→処理→画面描画をやる、みたいなの守って作ってみたのですが
標準のListViewみたいなのを持ち物選択とかに使おうとするとキーボード入力→描画を1ループに収めたりするのが困難または苦痛になってきました
もしかしてゲームループみたいなものと標準の単独操作可能なコントロールコンポーネントは相性悪いのでしょうか
ゲームループを使うと決めたらCanvasに表もボタンも一覧も全部自前で絵として描いて全主導権を得るような感じじゃないとよくないのでしょうか
>>566
以前 .JXW という拡張子のファイルを見つけて、調べたら一太郎のファイルだったことが判明。 >>578
いや特には
描画が終わってから次のフレームに行くことさえ守られてればいいんだろうなと思って
だからイベントリスナーはSceneにキーボード一つだけだしプロパティ同士のbindによる即時反映も使えないっぽいのでお互いがとっても遠いです >>570
新しいバージョンで塞がれ既知となったセキュリティホールが
サポート終わったバージョンではそのままかもよ セキュリティホールごときにびびってんじゃねえよ
男ならもっと大きく構えてろ
外向けの案件なんてまずほとんどないんだから
セキュリティホールあろうが何だろうが全く問題ない
strutsですら現役なんだからな
>>575
だから完成したゲームはプレーンな機能を駆使して複雑に組み上げた俺俺フレームワーク+データになる
ビジネスフォームやレイアウトノード(かなり罠)とゲームの画面制御の考え方が相性悪いのもその通り
勉強にすらならんので、ゲーム作るならJavaFX以外、JavaFX学ぶならゲーム以外、をお勧めするよ >>575
なんでJavaでゲーム制作が少なかったかっていうと
Javaは業務アプリ作るのに使うことが多いから
リアルタイムのGUIをあんま想定してない
一方C#はJavaに似てるけど
MSがゲーム(本体)作ってるから
GUIライブラリで差が付く JavaでゲームだとLWJGLやjMonkeyEngineやlibgdxなど
ライブラリやフレームワークがいくつもあるみたいだね
どのみち応答速度や描画更新を考える必要があるから
JavaFXで作ろうとするとすぐ限界になると思う
あるwebから読み込んだhtml内の改行コードに、「0x0A」が含まれていて
windows環境ではこの改行を正規表現での置換ができないっぽいんだが
対処方法おしえて
別に高速描画でなければならないゲームだけではないから作れるゲームジャンルは少なくはないのだが
使ったのはCanvasとImageとTextとTimelineだけだったみたいな「JavaFXのメリットって何だったっけ?」というオチになる
どうせなら>>586が挙げてるようなOpenGLとかにもっと近いライブラリがお勧めだ
困ったことに話題のKotlinでも同じ問題があって、新規さんが注目しそうなゲーム関連が標準ライブラリで超苦手という…
まあ、ゲーム製作なんてそんなもんだということで >>588
正規表現で変換すればいいの?
s/\x0a// で空になるんじゃないの?
(""の中では \ は \\ な) >>588
LINE_SEPARATOR_PATTERNで検索すると目当ての正規表現がScanner.javaの中にみつかる
参考にしながら自前で用意しなおすとか 正規表現て\r→0x0d \n→0x0aにヒットするんじゃなかと?
>>592
Javaだとそれ固定だったっけ?
だったらそれで良い。 >>588
その質問、どういう状況なのかもうちょっと詳しく書いてみて。
何をやりたくて自分では何をやりそしてどのようにうまく行かなかったのか? Javaで実戦積むにはやっぱりプログラマーとして就業するしかないかな?
Javaのコレクションについて詳しく解説している本はありますか?
実装でどのようなデータ構造が使われているのか知りたいです。
>>596
スッキリわかるの実践編でも説明されている。
アマゾンでJavaの本を見てる?
業務システムだとArrayListばかりだけど。 >>597-598
ありがとうございます。
スッキリわかるの実践編は見ました。
が、実装について詳しく書いていません。
たとえば、TreeSetが赤黒木を使って実装されているとかそういうことを知りたいです。 >>599
『(新)明解 Javaで学ぶアルゴリズムとデータ構造』
でアルゴリズムの基本を押さえれば実用上は問題ない
そうではなくどうしてもJava自体の実装が知りたいなら
Javaのソースコードを自力で読むしかないと思う いつでもオンラインリファレンスとsrc.zipへジャンプできるようにしときなよ
intelliJもeclipseも設定あるよ
遥か昔、惨舞黒という武人がいた
彼は邪葉という流儀を拓き、人々は目盛管理から(ひとまず)解放された
…そこに目を付けたのが親日派を筆頭に持つ悪羅狂である
民明書房刊「こんにちは世界!」より抜粋
>>600-601
ありがとうございました。
ソースコードを見られるとは知りませんでした。 すみません。
src.zip がパソコンの中に見つかりません。
どこを探せばいいでしょうか?
Javaのダウンロード&インストール時にはデフォルトを選択しています。
>>606
ありがとうございました。
Eclipseから見られるようになりました。 今使っているjavaの入門書がインナークラスを多用しすぎていて
実務的に使い物にならないのでいい本・・・というか
しっかり1クラスずつ分けて書いてある本が欲しいです。
入門用のサイトでも、インナークラスが大半で
アクションイベントの説明がインナーで書かれてる長すぎるコードで困っています。
どういう本を買う ないしはどういうサイトを参考にすれば良いでしょうか?
自力でアウタークラスに書き直せ、名前を追加するだけでよいのではないか?
>>608
それな
実は超実用的だぞ
業務で好き勝手にファイルを追加なんてしたら処刑されてしまう
だからファイルを作らずにクラスを作れる内部クラスはありがたい >>608
それは説明が面倒だからインナークラスになっているのかもしれない。 見やすさ考えたら別のクラスに分ける方がいいと思うんだけどね
入門書の違和感が凄いのは パッケージを使って複数の単純なjavaファイルを組み合わせろって言ってるのにも関わらず
実際にはインナー使いまくって
javaファイル1個で収めてしまってるっていうところかな
勉強にならないっていう
コンパイルしたらクラスファイルがもりもりできてびっくりするやつ
>>614
イベントハンドラ記述するのにインナークラス多用っつったら十中八九Androidでしょ TreeSetのソースコードを見てみましたが、Red Black Treeの実装はそこには含まれていませんでした。
たくさんのクラスやインターフェースが関係しているようで、全貌を理解するのは容易ではないみたいですね。
そこで質問なのですが、入門書を読み終わった後に、本格的に勉強するにはどの本を読めばいいのか
教えていただけないでしょうか。
本屋で見てみた結果、どうも日本語のJavaの本はやさしい入門書ばかりのようです。
Javaによるライブラリーの設計の仕方の本のようなものはないでしょうか?
リスナーはインナーで当然としても、
各種機能は別クラスで書いて欲しいよ
実際には別クラスにする事が多いだろう
その為の教則本であり参考書なんだから頼む
それとも今はネイティブなんてどこも書かんのかね
>>619
クラス分けでどう役割を分けるかとかならデザインパターンで、処理の効率とかメモリ消費とか言ってるんならアルゴリズムら辺じゃない? >>621
Javaのような広く使われている言語のライブラリーがどのようなものなのかを
理解したいです。
アルゴリズムとデータ構造の本のあるトピックを読んだ後に、実際に広く使われている
ライブラリーではどのように実装されているのかが知りたくなります。
細かいテクニックも使われていると思いますし、プログラミングの勉強にもなると思います。 >>619
入門書ちゃんと読んでればTreeSetはTreeMapを使ってるってわかるっしょ
TreeMapがRed Black Treeの実装だよ >>622
ありがとうございます。
TreeSetのソースコードを読んでみてあまりにも沢山のクラスやインターフェースが
からんでいるので、圧倒されてしまいました。
肝心のRed Black Treeの実装部分以外の部分がコードの行数の大半を占めている
というのに驚きました。
デザインパターンの本を読んでみようと思います。 >>624
ありがとうございます。
コアな部分を見つけるのですら大変な感じで、見つけられませんでした。 >>627
TreeSetはTreeMapに処理を委譲してるスカスカのクラスじゃん
見つけられないわけないだろ
たとえばTreeSetのaddメソッドを見ればこうなってるから
mがなんのオブジェクトか調べるだけっしょ
public boolean add(E e) {
return m.put(e, PRESENT)==null;
} そんな実装だったんか…w
共通ライブラリのくせにムダすぎんだろ
平衡二分木の赤黒木を図解している本は、あまりない。
川中真耶の本で、図解していたかも知れない
まず、AVL の図解で、木の回転・縮約などを勉強する。
それから赤黒木
AVL では、木の高さをそろえるため、最小最大の高さの差が、2になると、
木の回転・縮約をして、差を1以内に収束させる。
この処理が頻繁に入るため、赤黒木が考案された
赤黒木では、最小最大の高さが2倍になるまで、何もしない。
例えば、最小の高さが10、最大の高さが20になると、木の高さをそろえる
Linux で、数ミリ秒毎にプロセスを切り替える、プロセス実行ツリーは赤黒木。
プロセスをツリーに挿入し、実行されたら、ツリーから削除する
同じノードの挿入・削除が繰り返される場合に、
一々、木の高さをそろえないから、赤黒木は効率的
>Linux で、数ミリ秒毎にプロセスを切り替える
間違えた。もっと速い。
コンテキストスイッチは、1秒間に10万回だったな
javafxのButtonでボタンの大きさ変えるには?
>>633
scenebuilder使って大きさ変えれば分かるだろ Java始めるためにEclipseダウンロードしました
人気らしいんですが使ってる人いますか?
あと他の言語を使う場合Eclipse一つで賄えるのですか?
ここにいる人たちのおすすめ統合開発環境かエディタ教えてもらいたいです
ほとんどの入門書がeclipse導入を前提にしていると思う
だから学習用途でならユーザー数は多いんでないかね
>>635
何せ古いからねー
困ってもググればなんとかなるし、
よほど複雑な事しない限りはeclipseでいいと思うよ Vimでええやん
Eclipseは大した機能ないくせに動作が緩慢すぎてイライラする
xyzzyにantでビルドするという時代もありました
>>641
Kotlin用またはAndroid Studioのベース用
既存プロジェクトがIntelliJで動いてるとか職場になんでも知ってるIntelliJマイスターがいるとかでない限り新規で選ぶ積極的理由はない
加えて、きちんとしたプロジェクト方向性(と有償IDEに使えるお金)があるならAndroidスマホはC#&UnityでもC++でもいいからAndroid Studioの優位性は思ったほど高くない
IntelliJはいまが踏ん張りどころ >>642
なるほど
素直にEclipseにしとくのが良さそうですね Java使ってる人って何作ってるの?
ゲームで使うにしてもJavaダウンロードしなきゃ動かないんじゃないの?
てか同人ゲーの主な言語って何?C#?C++?
>>644
サーバ用プログラムとAndroid用プログラムが一番多いんじゃないかな。
PCでクライアント用プログラムというのも業務用だとたまにある。
個人向けPC用だとやはり JavaVM インストールしなきゃいけなかったりするのがあってかあまりないように思う。
2chの専ブラにJavaで作ったやつがあったが、2chが接続に関して制限をした時に対応しなかったので
2ch用としては終わった(その他互換性のある掲示板には使えたが)。 >>644
>同人ゲーの主な言語
ツクール(RGSS) >>644
ゲーム製作はゲーム用ライブラリやゲームエンジンに強く依存する
むろん、言語から選んでOpenGLバインディングをゼロからごりごり書いてもいいが、それは言語の理解のためにゲームを利用してる状態で、あんまりゲーム製作とは言えない
(企業ならそうやって時間とコストかけて特定言語の自社製フレームワークを作ってもいいが、それは企業だから維持できることだ)
いまいちばん新しくて個人人気があるのがUnity+C#。PC/スマホの両対応。有料アセットストアのゲーム用リソース支援が強すぎる。おかねは正義
ゲーム用途ではJava+JavaライブラリはAndroidですら少数派だと思う(昔はこれしかなかったから今もこれで作ってる人は多いが)
もっとプログラミングレベルを下げたもの、つまりやれることが減ってるがその分作りやすいもの、となると各種ゲームエディタやツクールになる(スマホ向けはあまりうまくいってないようだ)
ゲーム製作プログラミング自体をしたいわけじゃない、ネタやリソースはすでに持っててありものに反映させたいだけ、という人が効率よく使う
ツクールツクール言って煽る人がいるが、そう馬鹿にしたものでもない。だって願望の実現効率がいいんだから そんな融通の利く奴がプログラマやってるわけ無いだろ
彼の言ってることを3行にまとめると
Unity3Dスキスキだいすきー
あれC#だ、Java使わない
金ないならツクールで作れ
やっぱなんかソフトを思い描いて作りながら勉強するほうが効率的なのかなぁ
今スッキリ入門、実戦、SQLまで読んだ、というか何回も読んでる途中だけどソフト作れる気がしねぇ
最初から実用レベルのアプリを作るのは難しくて
小さいツールをたくさん作っていくうちに
パターンが分かってきて作れるようになっていく
>>655
あんがいそうでもない
プログラミングの思考が好きでプログラミングをやっている、という向きもある プログラミングのお題スレでも見て作れそうなの作れば良いのではないかな
この本で、オブジェクト指向を学んだら、
スッキリわかる Java入門 第2版、2014
その後、この2冊をこの順に読む。
たのしいRuby 第5版、2016
みんなのPython 第4版、2017
これで基礎ができるから、パズルを解くか、ツールを作れる
・スッキリわかる Java入門 第2版、2014
これは読みました。
わかりやすさに感銘を受けました。
ところでこの2冊を読む意義はなんでしょうか?
言語としてのRubyとPythonには興味がない人でも読む価値はありますか?
・たのしいRuby 第5版、2016
・みんなのPython 第4版、2017
Ruby, Python は、シェルスクリプトの代わりになる。
OS のコマンドを実行できる。
その後に、PowerShell もやった方が良い
Vagrant, Chef も、Rubyだから、仮想OS, Linux で使える。
つまり、環境構築に強くなる
関数型言語の勉強にもなるから、Kotlin, JavaScript へ移行しやすい。
さらに、ツールも作りやすくて、パズルも解きやすい
ここまでが基礎で、その後に数言語を学ぶ
Eclipseを使っていますが、タブキーを押すとスペースが4個入力されるようにするにはどうすればいいのでしょうか?
>>655
作ってみたいプログラムならあるよ
データベースとウェブを組み合わせた何かを作ってみたい
具体的にはゲームのwikiページみたいなのとか
ネットによくある装備シュミレーターみたいなのとか
ネットショップとかの会員管理や取引決済管理みたいなのとか
ネトゲがどういう形でデータベースを使ってるのかわからないけどネトゲみたいな自由自在にデータベースの使う方法を知りたいとかもある
ただどれも今は雲をつかむような感じで出来る気がしねぇ
>>657
何書いていいかわからないんだから書けないよ
C言語から入って入力を求めて数学的処理をしてテキストに出力するようなプログラムは数個書いた
でもなんか思ってたのと違うと思ってJava勉強してるんだけどこっちでも何書いて良いかわかんない あとスッキリの例題なんかもやってるけどミナト君のRPGとかなんか書いててしょぼく感じるんだよなぁ・・・
>>668
俺もスッキリの問題解いてみたけど、問題を解くだけだとアルゴリズムを考える力が
あまり付かない感じがした。ああ、あくまでも入門書なんだなあって。
前AOJのサイトこのスレで勧められたんだけど、良かったらやってみたら?
本見てコード打つより考える力が付く気がする。 >>668
GUIがないからだろ
でもGUIは複雑で別物になるから
まずはCLIから始めるのが王道 息抜きにawtでもswingでも簡単なguiをつくればモチベには繋がると思う
自分の思い描いていたプログラミング感みたいな
>>667
こんな感じのそれぞれのやり方を調べてやってみれば勉強にはなるんじゃない?
Springとライブラリ使った方が簡単だけど
1.JSONを解析して内容を返すクラスを作る
2.JSONをPOSTされたら内容に応じて特定の応答を返すWebアプリを作る
3.そのWebアプリをDB使うように変更する
4.ブラウザで見られるページを作る
5.WebページからJSONをPOSTできるようにする
6.レスポンスに応じてWebページを変えてみる java始めたきっかけは
仕事の効率化やったな
エクセル集計やpdf整理や雛形メール送信できたらなあってのがきっかけだった
目的があれば逆引きで勉強しながらトライアンドエラーの繰り返しですぐできるようになるよ
まず本を読む
良いコードとは何かについて考える
考えをまとめたら実際に書いて確かめる
書くものは実用性のないサンプル用の課題でいい
例えば架空のオンラインショップなど
この思索の経験が実務で活きてくる
これをやらない奴のシステムはいつもめちゃくちゃ
>>675
ちょっと違和感がある
目的に沿うのが良いコードだと思う
コードがきれいなのも使いやすさのうち 確かに寄せ集めだったり 動けばいいって感じだから最初は汚いなwww
でもまずは動くものを完成させるというのが大切よ
そこがスタートライン
1年前に自分が書いたソースはまるで他人が書いたソースだしなw
ほんとここって質問に対してゴミみたいな返しばっかだなw
まぁここで質問する奴も馬鹿なんだが回答とは程遠い的外れレスしかなくて呆れるわ
座学と実技は交互にやるのがいいよ
飽きにくくなるし
Javaに限らず
なかなか座学に戻るきっかけがない
通勤中の読書とかいいね
ゲーム作るなら正直C#のがいいの?
マイクラのMOD作りたかったらやっぱマイクラと同じJava使わないといけないの?
modがjavaのクラスファイル読み込むならjavaで作るしかないだろ
バカかお前?
サーブレットの勉強をしているのですが、web.xmlの仕様がよく分かりません。ググっても説明を羅列しているのが多く、具体的にどういう時に使用するのか理解できていません。
(Welcomefile、アノテーションで代替されたサーブレットのタグは除く)
なにかよい本かサイトはありますでしょうか
GoFの入門にお勧めの本ありませんか
Java言語で学ぶデザインパターン入門は買って見たけど全然意味解りませんでした
>>688
あれって、サンプルプログラムなかったっけ
ちゃんとプログラムを動作させてみた?
単にコピペするだけじゃなくて、多少アレンジしてどのような挙動をするのかの確認とかもしないとね Javaのfocusの使い方が分かりやすい本があれば教えて頂きたい(Swing)
トップコンテナをFlameとして
子コンテナをjpanel
孫コンポーネントをlabelとかtextとか
キーイベントで画像出すとか
簡単なもの作って見ようかとやってたんだけど focusの使い方がサッパリ分かりません
今持ってる入門書は明快入門javaですが
Guiについてはほとんど書かれてない
書店や図書館行って見てきたけども
これといってguiの本は無かったので
どのように勉強すればいいか
ご教授お願いします
>>686
スッキリわかる サーブレット&JSP入門、2014
>>690
Javaで、GUI の本は無いね。
Kotlin で、Android とか、Web(HTML)とかかな? >>691
遅くなりましたがスッキリシリーズの本紹介ありがとうございます。
実は何年版かわかりませんが既に持っているのですが、2014版が詳しく載ってるんですかね
まずは持っている版を見なおしてみます セジウィックとウエインのcourseraのオンライン講義を聴講しています。
java.util.List
java.util.Stack
java.util.Queue
は最低だそうですね。
Best practices: Use our implementations of Stack, Queue, and Bag.
だそうです。
まあ誰も使ってなさそうなListIteratorとかgetがO(1)である保証がなかったりするのとかはクソだと思う
zipファイル、7zファイルを読み込み、圧縮されているファイルを
ランダムアクセスで処理するプログラムを作ろうと思ってます
ファイルを実際に展開してそのファイルをランダムアクセスする、
ということになるのかなと思ってるのですが、一応、パスワード付きzipにも
対応する必要があって、例えばプログラムを強制終了したときに
パスワードを入れて展開した一時ファイルが残ると嫌だなあと思ってて、
メモリ上に展開し、メモリの内容をランダムアクセスして、ということが
できないかと思ってます
圧縮ファイルの内容をメモリ上に展開し、それをランダムアクセスする方法を
教えてください
npm とかの、immutable.js が流行っているからかな?
>>697
Ruby なら、IO の振りをする、StringIO というクラスがあるけど
つまり、メモリ内だけに存在する、単なるバッファ >>701
スーパークラスのコンストラクタで0に初期化されてしまうからじゃない? インスタンスフィールドが初期化されるのはオブジェクトが作られたときでは
あるけれどもコンストラクタではないっすよ
なぜならばコンストラクタよりも先に実行される初期化ブロックで
すでに初期化された値を使用できるから
細かいようだけれども細かいことを問う試験なので用語は慎重に選んだがよいかと
>>701
0になる理由がわからないということだけれども
100になると思ったとするならば、クラスとオブジェクトの理解が不十分かと
クラスは設計図でオブジェクトはクラスをもとにメモリを確保したもの。
値を保持するのはオブジェクト。
Employee emp = new Employee();
Sales sal = new Sales();
これらの2つは別のオブジェクトなので
empに設定した値がsalに引き継がれるわけじゃないっすよ java10からはvarとかexprswitchとか大分モダンになりそうだな
特にvarは左辺にジェネリクス書く必要性で代入のコードが大分見苦しかったから嬉しいわ
>>701
emp.empNo には 100 を代入してるけど sal.empNo には何も代入してないからだ。 javaがモダンになるならc#で良いよ
もうjavaに余計な仕様追加すんな
Item が Generic Type Parameter のときに
new Item[n]
とするのが禁止されている理由は何ですか?
>>710
Javaのジェネリクスは引数渡すときと戻り値受け取るときに暗黙的に片っ端からObjectからのダウンキャストを挿入しまくるだけ
当時のSunにはJVM弄る金がなくて、無理にC#に対抗しようとしてこんな手抜き実装になった
Javaのジェネリクスの不可解な制限は、「型パラメータの箇所は実際には全てObjectになる」と考えると理解できる >>711
訂正
引数受け取るときはダウンキャストの挿入は不要だな
コンパイル時に型チェックが入るだけだ 相変わらずここで回答してる奴等のレベルが糞すぎて呆れるw
なんで関係ないことをごちゃごちゃと書くんだ
見ててイライラするわアホ
>>714
言ってやってくださいよ
関係あることだけをバシッと varになるんだ
varがくるんだ
var
リリーススパン短くなるんだよな
リリースはいつだ
パターンマッチングはinstanceof書きまくってうんざりしてた諸兄に朗報だな
参照型変数は、普通何バイトの容量を食うのでしょうか?
instanceof書きまくってた時点でおかしいと気付こうよ
>>721
今さっき俺環境で調べたところ
Boolean=16
Character=16
Byte=16
Short=16
Integer=16
Long=24
Float=16
Double=24
であった やっとスッキリ全4巻読んだわ
4ヶ月かかった
なんかプログラムのイメージ変わったわ
プログラムといったらGUIソフトウェアや組み込みやゲームソフトっていうイメージだったけど
スッキリ(特にサーブレットJSPの本)読んでからようやくWEBアプリもプログラムという認識持てたわ
まぁ、あとになれば当たり前といえば当たり前だけど意識が変わってちょっと感動した!
質問です。
Dogクラスと、それを継承したShibaDogクラスがあるとした場合、
Dog dog = new ShibaDog();
と宣言するのと、
ShibaDog dog = new ShibaDog();
と宣言するのでは、どう違いが出るのでしょうか?
生成されるインスタンスに間違い出るのでしょうか?
>>726
後者で書くとコードレビューで意識高い系に
なんとなく俺は気に入らないという理由でリジェクトされるという違いはある >>723
参照先で変わるの?
Object型で定義した変数にInteger型やLong型を代入したらどうなるの
普通に考えると参照先のアドレスの桁数分食うんじゃ
アドレスの替わり(本来逆)に値を直接入れるのが値型
そこらへんは書籍「なぜjavaで作るのか」にわかりやすくあった気がする >>726
ShibaDog dog = new ShibaDog();
こうするとDogが提供してないけれども
ShibaDogが提供してる機能を使えるよ
一方で
void useDog() {
Dog dog = createDog();
...
}
Dog createDog() {
return new ShibaDog();
}
こういうふうにしてShibaDogの型情報を隠蔽すれば
ShibaDogの実装を変える必要があったときも
それを使う側に影響を与えなくできるよ
ケースバイケースで >>726
親クラス型 = 子クラスのインスタンス
子クラスのインスタンスを、親クラス型の変数へ代入して使うのは、
オブジェクト指向の基本だろ
まずこの本を読んで、オブジェクト指向の基本を学べ。
スッキリわかる Java入門 第2版、2014 オラクル認定 Java SE Bronzeのレベルの知識もないのか。
ここはJavaの初心者というより、プログラマの初心者のスレッド?
頼むから回答する馬鹿はまともな回答できるようになってからレスつけろって・・マジで
質問者が知りたい回答に対して1、2行で端的に回答できることを
混乱させるようなゴミみたいな内容でダラダラとレスするなよくっそイラつくわ
>>736
何だこいつ こんなとこで喧嘩売ってくんじゃねぇ >>735
まともな回答を端的に示してくださいよ
あなたいつも他人にケチつけてるだけで
自分は何も書かずに安全圏から石投げてるヘタレじゃないですか
みんなそれわかってますよ、ちゃんとしてください イラつくアピールしても何も改善しないでしょうに
手本を示してそれが素晴らしいものならみんな真似すると思うんだよね
自分ならこう答えるっていうのをすれば良いのに
それをしないからフラストレーションを溜め込むことになるんだよ
でも結局できないだろうけどね
質問者が知りたい回答なんて質問者しか知らないから想像して書くしかない
他人に文句付けた以上、自分の想像が外れていたらどうしようもない
怖くて結局自分では回答できない
その循環に陥って最終的にイラつくアピールするしかない
自ら作った檻に閉じ込められているプライドが高い臆病なケモノ
そんなこと言われても、あんまりこじらせるとまたGCでフリーズしちゃうよ
掲示板なんだからみんなであーでもないこーでもないとわいわいやったら良いじゃん
気軽に書き込めば良いじゃん、そしたらイラ立ちも減るんじゃないかな
>>735
そもそもまともに質問してるやつがいるのか? 学校の宿題みたいなものなら簡単だが、そうでない質問は情報不足ばかりで答えようがない。
>>743
想像力を膨らませるんだよ
きっとこの人は子供のころにこういう風な体験をして
星空を見上げながらこうつぶやいたんじゃないだろうかと
そういうことを想像しながら質問者の立場に思いを馳せて息遣いを感じれば回答できるよ!
もしくは欲しい情報を聞くとか >>745
学生じゃないよ、学生かどうかは関係ないと思うけどね
そういうのってどういうの?
想像力を膨らませること?
欲しい情報を聞くこと?
情報不足だから教えて欲しい
と、まあこのように聞くことができるわけです >>747
ニートじゃないよ、ニートかどうかは関係ないと思うけどね 学生とかニートとかそういう社会的な立場を持ち出すのってどうなの?
しかも社会的には下に見られるようなものばかりじゃん
相手を貶める意図があるのかな? ん? どうなんだ?
自分が上だと思い込みたい卑しい思いがあるんだろ?
ちなみに俺は黒色のパンツを履いてる29歳の女医だ
書いてないこと、言ってないことを想像で決めるなんて実務ではありえない。
>>750
マジで? これよろしくやっといてよって仕事任されない? それは多分任されたのではなく丸投げと言う
右から左でスルーパスが彼のSIGOTOなんだろう
ある程度想像で進めておいて詳細はあとで詰めるなんてことザラにあるよ
不明な点をすぐに確認しないと仕事進められないこともあるけどね
仕事っていうのは何でもあり、想像力も調整力も観察力もコミュ力も
使えるものは何でも使ってとにかく頑張るんやで
>>752
パスして責任はきちんと取ってくれる上司がいるなら
仕事を任されてると言っていいのじゃないかな
俺にはそういう上司がいるし俺は本当に運が良くて恵まれてる
天が俺に幸せになれって言ってる 上司に恵まれないみなさん
自分が上司になったときは部下を幸せにするんやで
ガチの5年無職 スキル無しが来てやったけど、
お前ら、震えてんの?
>>726
Dog dog = new ShibaDog(); と書いた場合は dog が ShibaDog クラスのインスタンスを
指してはいるが dog は Dog クラスとしてしか扱えない。つまり Dog クラスで定義されていて
アクセス可能になっているメソッドや変数にしかアクセスできない。
このようにすると折角新たな機能を追加したのにそれが使えなくなるために損をしたかの
ように見えるかも知れない。しかし他の Dog クラスまたは Dog クラスを継承したクラスの
インスタンスでも同じ Dog クラスとして扱えるという利点がある。
すると例えば Dog クラスの配列やリストを作って ShibaDog やその他色々な Dog クラスを
継承したクラスのインスタンスを要素として代入して同列に扱う事が出来たり、Dog クラスの
インスタンスを引数とするメソッドを書けば Dog クラスのインスタンスだけでなく Dog クラスを
継承したクラスのインスタンス(今回の話の場合は ShibaDog のインスタンス) であっても
受け付けられる。 どうでもいい話でよく続けられるな
Dogを何に使うのか不明だが、おそらくこの場合はデータ構造としての犬だろうから
ShibaDogを作るよりenum BreedTypeを用意しShibaInuを追加した方が自然じゃないか
世界自体が究極的にはデータの羅列
クラスは人間が決めた枠組みだ
人間が柴犬は特別だとおもえばそれはクラスになるんだ
文句あるか
Runnable の run() メソッドの中で計算した結果をメソッド終了後に取り出したいと
考えています。
インスタンス変数を用意して run() の終わりに保管し、getter メソッドで読むことは
できたのですが、他に簡単な方法はないでしょうか。
>>758
Dog型の配列やリスト構造でShibaDogを扱った場合に、ShibaDog固有のメソッドが必要になった場合はどうすれば良いのでしょうか?
諦めるしかないですか? >>764
CallableとかFutureを使う
同期化してないインスタンス変数を使って状態を共有するのは、バグの元だからやめた方がいいよ >>767
ありがとうございます!
Thread の join() のかわりに Future<V> の get() でいけました。 >>768
キャストすると出きるんですね。
ありがとうございます。 >>766
>Dog型の配列やリスト構造でShibaDogを扱った場合に、
>ShibaDog固有のメソッドが必要になった場合は、どうすれば良いのでしょうか?
>諦めるしかないですか?
オーバーロードは、オブジェクト指向の基本だろ
だから、こういう事をさせないために、親子クラスで、同名の関数を使っても、
各クラス独自の処理が呼ばれるようになっている
親クラス型の変数.f()
と書くと自動的に、インスタンスのクラスを判別して、各クラス独自の処理が呼ばれる
モンスター型の変数.攻撃()
と書けば、その怪物がドラゴンでもスライムでも、
各クラス内で書いたメソッドが呼ばれる
>>731 を読め
「スッキリわかる Java入門 第2版、2014」を読まないと、わかるのは無理 モンスター型の変数.攻撃()
と書けば、その怪物がドラゴンでもスライムでも、
各クラス内で書いたメソッドが呼ばれる
switch (モンスター型の変数){
case ドラゴン:
case スライム:
}
つまり、オブジェクト指向で書くと、型を判別していた、switch 文が消える。
ここに新たな怪物、ゾンビを加えても、switch 文を修正しなくてよい
逆に言えば、switch 文で型を判別していたら、オブジェクト指向ではない!
> オーバーロードは、オブジェクト指向の基本だろ
そうなんですか。
非OOでもあり得るので、なんか本質的じゃない気もしますが。
つまり、オブジェクト指向で書くと、型を判別していた、switch 文が無くなる。
ここに新たな怪物、ゾンビを加えても、switch 文を修正しなくてよい
設定ファイルに、怪物を追加しても、ソースコードを修正しなくてよいから、
簡単にテストできる
設定ファイル側を、ノンプログラマーに任せることができるので、
プログラマーとノンプログラマーなど、開発人材の配分がしやすい
>>771
>オーバーロードは、オブジェクト指向の基本だろ
間違い。
Overload ではなく、Override スッキリを読むとバカになるという見本ですね、わかります
いくら初心者スレとはいえ、オーバーライドとオーバーロードを混同する人は
回答側でレスしないでもらいたい。typo だとしても。
スッキリ4冊を読むのに、4か月掛かった人がいるようだが、4冊で、100時間ぐらいだろ。
サラリーマンかな?
ニートなら、2週間ぐらいで読める。
サラリーマンは、ニートの1/8の能力しかない
しかしニートの場合付けた能力を発揮する場所がない。
あー。でもこの頃はGoogle PlayとかあるからAndroid用アプリを作って有料販売すれば収益プラスになって仕事してるのと同じになる場合もあるかな。
その場合はニートではなくなってしまう。
サラリーマンで勉強している奴なんか、いない。
資格も、何十年も取らないし
勉強している奴は、ニートだけ
ただし、勉強はできるが、食えないw
>>766
SibaDogに必ず依存してるなら抽象型Dogとして扱う必要はないSibaDog型でいい お前ら甘く見すぎ。
俺の所の35歳はスッキリjava入門を11か月で読んだ猛者だぞwwww
さらに、勉強として15万のPC購入させて、自分は風俗、テレクラで
靴が擦る減るからハロワ行かない!!(年に一回だけハロワ行くも門前払いwww)
週に2,3回ww 作業所で自給100円で働いてるから無職じゃないって発言する最強のチートコンボだ!!!
お前らが背伸びしたって、28からニート貫いてる!!!
俺らの[狂乱の大卒エリート35歳ちゃん]に
勝てる訳ねぇだろwwwww
そいつ(>>789)はちょっと頭がかわいそうな奴なんだ。
大目に見てやって欲しい。 どんどん新しい技術や方法が出てくるから常に学んでいる状態でないと息切れしてくる
Javaはenumサイコーなんて言っていたのはすでに過去のことで今はラムダ教である
オラクルのチュートリアルにC++の二倍速いと書いてあったのでJava始めました。
java.lang.Objectを継承すると何かいいことはありますか?
IntelliJ>>>>>>>>>>Eclipse>その他
Oracleのチュートリアルやってると、C++を目の敵にしてるみたいだけど。
JavaのライバルはPythonじゃないのかなあ。
あれはミギー
一方的に寄生してきたのに結局共生関係にされてしまった
アプリケーションサーバーはJettyに決めました。
>>808
マジかぁ
Eclipseダウンロードしたわ・・・ ネットビーンズとどっちがいいだろう。
C++の時はネットビーンズ使ってたんだが。
C++の時は、VSで開発して、Linuxに持っていくのにネットビーンズ使ってた。
もうめんどくさくなってきたのでJavaにしようかと思ったが、Javaもいろいろめんどくさいね。
>>814
Eclipseではこんな簡単なコードさえコンパイルできないので
Java8やJava9の勉強ならIDEAがいいよ
List<String> list = Arrays.asList();
Stream<String> stream = list.stream();
System.out.println(stream.collect(Collectors.summingInt(Integer::parseInt))); Eclipseはラムダ式の中でコード補完ができなくなったりもするよね
もっといい感じにならないもんかね
今んとこ、この前ぐぐ様が爆誕させてくれたIDEAサーバにするやつでvimがさいつよ
>>826
できるってば!
Javaのコンパイラのバージョン古く設定してんじゃねーの うがー!!!!
eclipseのバージョンとプロジェクトのJavaコンパイラのバージョンいくつになってる?
>>832
EclipseはOxygen.1a Release (4.7.1a)
Javaは1.8 >>836
アパッチェオープンソース廃棄所に捨てられたって聞きました エビデンスを貼らざる得ない
お前らの力でEclipseのコンパイラなんとかしてくんない?
IntelliJなんて国内の会社で使ってるところなんてまずないのに
平気で初心者に嘘つく馬鹿がいるのがやべーんだよなここ
いろんな開発現場行ってるけどIntelliJなんぞただの一度も見たことないわ
うちはIntelliJだぞ
そりゃドナドナ先の土方現場なんかいくつ回っても一緒だろ
>>841
そりゃ客先常駐マンは有料IDEなんて使わせてもらえんやろ… >>841
使ってるところないはさすがに視野が狭すぎ 新宿一等地の外資系企業の完全技術重視のところですらeclipseだったわアホ
そもそもプラグインもeclipseの方が圧倒的に多いしeclipseで全て事足りるから
有料モードですらeclipseより劣ってるIDE使う馬鹿がどこにおるっつー話だ
Oracleのサポート方針が変わったそうだが、今後もJavaは無料で使えるのかい?
基礎は学習し終えました。
次は何を作ればいいですか?
みたいな人って、なんでプログラミングやろうとしたんだろうと思う
俺が始めたときは作りたいものが有り過ぎて一日24時間じゃ足りないとおもいながらやってたのに
勉強することが目的なんだよ
何かを作りたい訳じゃない
色々調べた結果、IDEはエクリプスが良いと決まりました。
作りたいものが無いのにプログラミングを身に付けるって苦行じゃね?
java勉強したならサーバーやるか泥アプリ作ろうよ
jar xf [既存jarファイル] [X]
jar cf [新規jarファイル] [X]
この一連の処理をjar xf〜を使わずjar cf〜だけでやる方法ってありますか?
Eclipseにめーぶんって一体いつの人だ
きっとさーばーにはTomcatを使うんだろうな
>>863
今出先からスマホで書いてて調べられんけど、jarコマンドでできないならzipコマンド使えばできるんじゃね? >>862
個人開発や小規模ならPHPでいい
Javaは大規模開発向き ファイルサイズを小さくするためにWinRarや7zで圧縮しなおしてた時代もありました
あれは確かDojaとって、うっ頭痛が
インナークラス(メンバクラス、ローカルクラス、匿名クラス)ってどういう場面で
使うのでしょうか?
どなたか回答お願いします。
>>868
jarファイルってzipファイルだからzipを扱えるソフトならなんでも良いんだよ。
なんだったら自分でJavaでプログラム作れ。 外にクラス定義してファイル増やすと
プロマネやSEが文句言ってくるような
窮屈な現場で使う
>>873
お前は何がやりたいんだ
xは展開
cは作成
fはテープでなくてファイルを指定するオプションだ
tarというコマンドに由来する
展開して作成するだけなら単にcpで済みそうだ Mavenはインクリメンタルビルドできないのかい?
俺の書き方が悪いのだろか。
>>858
知識欲っていうのがあってわからなかったものがわかるようになると
脳内麻薬がドバドバ出てとても気持ちの良い状態になるから
それでハマった人もいるんじゃないかな
人より先に解決策がわかると優越感を感じられるし
人に教えられるくらいの知識や経験があれば自信を持てるし
ここのようにプログラミングのコミュニティで会話をできるし
プログラミングの成果はプログラムだけじゃないっしょ セックスのアーティファクトが子供だけではないみたいな感じか。
>>880
じゃあそういう人が自己解決しようとせず聞くのはなぜ? ここに出てくる奴らはやることが目的だからな
やったら満足するんだよ
Version: Mars.1 Release (4.5.1)
Build id: 20150924-1200
うそつきよばわりされたのではらざるをえない
デグレしてるようだ やっとEclipseから実行で自作サーブレットをJetty上で稼働できるようになったぞ。
Hello World!表示させるだけだけどな。
プログラム起動時の最初は読み込むべき場所は未定で、
起動した後でライブラリとなる.jarの場所が決まる場合、どう動的読み込みすればいいの?
ちなみにjava8は対象ではなくjava9のみが対象。
以前マルチスレッドからの戻り値の受け取り方の質問をしたものです。
一つのクラスの中にマルチスレッドで実行したいメソッドが2種類以上ある場合は
どう定義するのがいいでしょうか。
いまは、Callable を実装した無名インナークラスのインスタンスを返すメソッドを
複数定義して、そのCallableインスタンスを使用してスレッドを起動しています。
マルチスレッドで実行したいメソッドを持つクラス: (N=1, 2,...)
Callable<VVV> callableN = new Callable<VVV>(){ <--- メソッドを呼び出すための Callable クラス
public VVV call() throws Exception {
return methodN();
};
VVV methodN(){ <--- マルチスレッドで実行したいメソッド
...
}
Callable<VVV> getCallableN(){ <--- Callable を返すメソッド
return callableN; <--- これを使ってスレッドを生成
}
>>880
基礎学びました次何すればいいですか?
と書くような人はそういうタイプではないと思うが メソッドの引数に、2つ以上のインターフェースを同時に実装してるクラスだけを取らせたいですが
うまいやりかたってあるでしょうか。
2つのインターフェースを継承したインターフェースを新たに作るやりかたしてましたが
実装が必要なインターフェースの数がネズミ算的な勢いで増えて破綻気味です。
<T extends A & B> void method(T param);
これでえーんちゃう?
>>896
ありがとうございます!
まさに自分が探してたものです
JavaのGenericsはコンパイルすると消えるらしいのでメソッドが増殖することもないはず
たぶん 問題は初見だとすごく混乱することぐらいでしょうか
型定義をGenericsに吐き出しただけで、トリッキーさはないようにも思えるが
現場で使ったら何と言われるやら
プログラマ殺すにゃ刃物はいらぬ
全角英数混ぜりゃいい
いまどきIDEがエラー出してくれるしJavaはUTF8対応だ
全角ごときで死ぬものか
JavaにC/C++のconst相当の物はないですかね?
>>899
誤解がある気がする
| TypeParameter:
| TypeVariable TypeBoundopt
|
| TypeBound:
| extends TypeVariable
| extends ClassOrInterfaceType AdditionalBoundListopt
|
| AdditionalBoundList:
| AdditionalBound AdditionalBoundList
| AdditionalBound
|
| AdditionalBound:
| & InterfaceType
TypeVariableとTypeBoundがあって
TypeVariableは実行時に指定できるのだけれども
TypeBoundは具体的なクラス型・インタフェース型を取るみたいよ
なので、インターフェースの組み合わせの数だけメソッドを定義しないといけないし
ジェネリクスはオーバーロードできないのでそれぞれ別の名前を付けないといけない すっきりJAVA入門読んでる素人だけど
はよウィンドウアプリつくりたい!はよ!はよ!
とりあえず実践編も買って今日届く
それならゲーム製作で学ぶJava的な本も同時進行でやるといいかもしれんな
javaでpcのguiアプリ作るメリットって何?
linuxならそもそもguiじゃなくてコマンドラインで動かすことが多いだろうし、windowsで動かすだけならクロスプラットフォームのjavaじゃなくて良くね?って思っちゃうんだけど。
javafxとかってどう使われてるの?
>>910
メリットはないし、事実ほとんど使われてない
クロスプラットフォームは今だとelectronが人気だね >>909
おーそうですか
参考にします
ゲームじゃなくてもウィンドウアプリに特化したような本が出てるといいんですけどね
まぁ足りないところは検索を駆使すればいいかな
>>910
自分はVBAしかやったことなくて
VBAとは違って幅広く使えそうな言語を、ある程度のレベルまでしっかりやってみたくて。
ウィンドウアプリはローカルで動かせるから手軽にテストできるだろうから、学習の成果を試すのによさそう
そういう意味で。 >>910
CLIとGUIとHTTPどれでも動くアプリを作ったりしたよ ほ〜JavaFXやSwingというものがあるのか
この辺で検索すると書籍もたくさんでてくる
参考になるわぁ
身近なものならV2CもOmegaTもJavaだしeclipseもJavaで動作してる
OpenOffice.orgもJavaが必要だ、MinecraftにもJava Editionがある
事情はさまざま
なんか俺の書き込みが彼の文体に似ている気がするが誤解だ
しかも半分ぐらいは俺じゃない
丁寧語使ったぐらいで特定されたらかなわん
JavaBronzeの試験は、何割くらい取れれば初心者卒業と言っていいでしょうかね?
合格の6割というラインは、結構低めに設定されていると思うんです。
もちろんこの試験だけでは指標にはならないのかもしれませんが…。
残念ながらゴールド完答できてようやく初心者卒業レベルなんだよね、ブロンズやシルバーは論外
もっともオラクルの試験は社員の福利厚生のためにあると思ってるから
難易度はどうでもよかったりする
>>914
GUI の本は、おもちゃみたいな本しか無い! >>919
どうもです。
そんな…。俺は論外の中の論外なんですね…。 バイナリファイルを読み込みテキストに変換するという、
逆アセンブラみたいなプログラムを作ってます
いまはRandomAccessFileを使いseekしてreadやreadByteする、で作ってるのですが、
java.nio.file.Files.readAllBytesという、ファイルをbyte[]に読み込み処理するものも見つけました
前者でも後者でも動きはするのですが、ではどちらを使うかを選ぶ際に、
こちらの方がよい、と評価する基準みたいなものは何があるでしょうか
readAllbytesはその名の通りファイル全部メモリに置くから小さいファイルなら良いけど大きいものは無理
>>924-925
nio の方が、新しい
I/O は、一気にファイル全部を読み込むものか、
バッファサイズ分だけを読み込んで、処理したら、そのデータを捨ててから、
新しいデータをバッファサイズ分だけを読み込んむもの(Stream、都度読み込み)のどちらか プログラマにもなってNGすら知らないの…?
コイツID変えてないからすぐなのに
プログラマだからバグを見つけたら排除したくなるんだよ
インターフェース使うと他のプログラマーがプラグインとかを作れる、と思うんですが
その場合、基盤開発者もプラグイン開発者も同じインターフェース定義を使わないといけないと思うんですが
インターフェースは基盤とプラグイン両方に含めるのが普通ですか?
その場合は含めるのが普通ですどころではなく
このインターフェース○○とはこのようなクラスに機能□□を実装するのに必要で
その使い方は〜〜等々ステップ形式のハウツーまでJavaDocに書き
すぐ動作するサンプルソースまでつけておく
多くの場合はそのサンプルをコピペするかまんまextendsできるようにしとかないとお子様がこじらせてくる
もちろんインターフェースも見ちゃいない、が普通だろう
>>947
ビルドするときはもちろんいるわけだが、
バイナリとして(jarファイルとかで)配るときは
外すのが普通だと思う。
バージョン違いのJAR Hellみたいにならないとも限らないし。 >>950
可能。
ていうか考えてないでやれってレベルだと思うが、そこまで配列のことがわからないレベルなのか? 学校で出た課題をwarファイルの形で家に持ち帰り作業後再度学校で開いたところエラーで全く開けなくなりました
動的webプロジェクトなのですが、jspで同プロジェクトもmodelパッケージ内のjavaファイルインポートが出来ずにエラーを吐いています。
再度家に帰ってみると普通に開く始末。学校でも家でもeclipseを使っています。原因としてどんなことが考えられるでしょうか。
> warファイルを持ち帰り
この時点でおかしいからどうでもいい
解決する必要なし
eclipse使ってるならワークスペースもごと持ち運べばいい
warファイルで持ち運びダメだったんですか
エクスポートで簡単に作れるしチーム間で受け渡ししたりするのに使ったりしてたのですが……
学校と家のEclipse だろ
両方のEclipseで認識できる、
プロジェクトフォルダ・ワークスペースごと持ち運ぶべき
war とは、サーバーに配置するように、変換された書庫。
開発中のフォルダ階層とは、異なる
>>950
添字は zero origin だから、label[0] から label[4] のようになる。 コマンドプロンプトに
java -jar atm.jar
と入力しても、atm.jarにメイン・マニフェスト属性がありません、
と表示されてしまうのですが、どう対処すればよいでしょうか?
>>960
jarを作るときに適切なマニフェストを指定する
jarとはアーカイブで中にマニフェストファイルが含まれていることが期待される
そこにはどのクラスのmainから始めるかなどが書かれてる
アーカイブを展開して探してみればいいよ DecimalFormat df = new DecimalFormat("#####") ;
これで5桁未満の数字を表示した時に左詰めになっちゃうんだけど
5桁未満の時は左はその分空白にして右詰めで表示したいんですがどうすればいいのでしょうか。
>>963
String.format("%5d", x) でやれば? javaが3個存在してて
中身のある奴とかファイルが足りなり奴とか
パスが通ってるけど環境変数は作ってないとか
いったん綺麗に消してちゃんとしたいんですけど
アンインストールにあるアップデート消してから
インストーラーで削除して
残ってるjavaのフォルダを手動で消して
最後に?パスを消せばいいですか?
このパスを消す作業が一番怖いです
プロジェクト持ち運びの件だが、やっぱEclipseのバージョンも揃えたほうがいいのかな
家と会社で使ってるんだけど、会社での制定版がちょっと古いんだよね
そろえられるものは全部そろえるの原則な気がする…
可能ならOSごとVMで持ち歩きたいぐらい
もうAWSのWorkspacesでも使えよ
プロジェクトフォルダを家に持ち帰るようなお粗末な会社ならセキュリティ的にもその方が遥かにマシだ
>>966
よくわからんがとにかく全部アンインストールしろ。話はそれからだ。 >>966
正しくアンインストールすれば、環境変数PATH も、元に戻してくれないの? 基礎を理解してないやつはこれだから
IDEによる促成栽培は危険
java(eclipse)でメインから呼び出されるクラスを作成したのですが、
呼び出し元がまだ出来ていないので、自分のクラスのテストだけをしたいと思っていますが、
自分のクラスにはmainがないので実行できません。
テスト用にダミーのmainクラスを作ってデバッグしようかと思っておりますが
他に方法等があるのでしょうか?
学校出たあとデジタル土方として長くやっていきたいなら自動テストなんかに傾倒するのはお勧めしないけどね
代わりのmain書いてシコシコ手で実行してたほうがいい
現場の実態とのギャップにショックを受けて辞めたくなるから
自分用に書けばOK
逆に呼び出すクラスがまだなくてインターフェースだけ決まっていればmockito
>>977
かつてそう思ってたが
テストツールでスタブを差し込む方法と
テストが現状に追随して死なないように書くコツがわかってから考えかわった
あれはいいものだ >>975-979
974です。JUnitについて調べて見ます。ありがとうございました。
難しそうで、覚えるのに時間がかかりそうです >>980
アドバイス?
エラーメッセージを読め
それでもわからないならエラーメッセージを含め
どうやったか、どうなったかを具体的客観的に書け
考えてくれる人に最大限の労力をかけさせたいならスルーしてくれ >>982-983
お手数をお掛けします。
(980の)上のコードは
javac -cp (省略);(省略) Bank229.java
で無事コンパイルできました。
下のコードも
javac -cp (省略);(省略) Main229.java
で無事コンパイルできました。
また、このコードは
java -cp (省略);(省略) Main229
で無事実行できました。
つまりキチンとやったら自己解決出来ました。
ありがとうございました。 ビルドパスに追加したJAR同士のクラスの重複でエラーが出た。
追加する順番を変えてエラー回避したけど、根本的解決じゃないような。
姑息な解決策で、いつかまた問題が浮上しそうで怖い。
何十個もあるファイルから重複クラスを探すだけでも気が遠くなる。
たびたび失礼します。
https://ideone.com/QhI9r8
上記のコードのように、Bookクラスを一通りオーバーライドし、Mainクラスで
フィールドをあえて空にしてequalsメソッドで比較したら例外が発生して
しまいました。
きちんとfalseが返るようにしたいのですが、どのように対処すればよいでしょうか?
どなたかよろしくお願いします。 フィールドが null の場合に equals が例外を吐かないようにしたいのなら、
フィールドが null の場合は falseを返し、null でないときだけ equals で比較
すればいいのでは。
>>987
エラーの中見たら一発で原因解ると思うんだけど、
ちゃんと自分で考えたの?
色々考えて色々試してみたけどどうしても解決出来なくて聞きに来た感じでは無いんだけど。
「もう初心者は脱している、馬鹿にするな」とか豪語しておいてこれ自力で解決出来ないとか、職場にいたらぶん殴るレベルですよ?
解決方法は他の偉い人が丁寧に書いてくれているから、こちらから言うことはないんだけど、
35歳はその解決方法はちゃんと理解した?
「こうやればぬるぽにならないんだ、へー」ってコピペするだけだと、次に同じような問題に直面したときにまた解決出来ないという事態が発生するんだけど、大丈夫?
次に同じような問題発生して「分かりません、教えてください」とか言ったらやっぱりぶん殴るレベルですよ? >>985
探すプログラム作れば?
あ、でも既に誰か作ってそうだな。 >>985
バージョン違いとかなら、ファイルシステムのシンボリックリンクで必要なものを唯一のバージョンに見えるよう指すようにする >>993
本に書いてある事しかできないなら向いてないからやめた方がいい >>995
なんかわかる気がする。
プログラマーでも致命的だけど、百歩譲ってプログラマーで生きていけても
エンジニアにはなれない。
てかプログラムに限らずあらかじめ定義された手順でしか物事進められ
なかったら終わってるべ。仕事だけじゃなく万事。 >>996
本のサンプルコードを参考にしました。
31倍した後、フィールドのhash値を加えていました。
>>995
知識で、要求されている事を出来ないとなれば、常識で考えます。
それでも分からなければ、質問します。 >>997
プログラマーからしてもお断りだよ
プログラムから状況を読みとろうともしないやつは邪魔なので来ないで下さい
コーダーなら相手してくれるんじゃない?
>>998
質問する前に調べな Hash で、31を掛けるのは、「スッキリJava」を読んでいるのか
lud20221018115219ca
このスレへの固定リンク: http://5chb.net/r/tech/1506675205/ヒント:5chスレのurlに
http://xxxx.5ch
b.net/xxxx のように
bを入れるだけでここでスレ保存、閲覧できます。
TOPへ TOPへ
全掲示板一覧 この掲示板へ 人気スレ |
Youtube 動画
>50
>100
>200
>300
>500
>1000枚
新着画像
↓「Java入門・初心者質問スレ Part.5©2ch.net ->画像>7枚 」を見た人も見ています:
・Java入門・初心者質問スレ Part.8
・Java入門・初心者質問スレ Part.8
・Java入門・初心者質問スレ Part.7
・Java入門・初心者質問スレ Part.9
・Java入門・初心者質問スレ Part.11
・Java入門・初心者質問スレ Part.10
・【入門】FX初心者質問スレPart98
・【入門】FX初心者質問スレPart92 [無断転載禁止]
・【FEH】ファイアーエムブレム ヒーローズ 初心者質問スレ Part.17
・【FEH】ファイアーエムブレム ヒーローズ 初心者質問スレ Part.10
・MTB初心者質問スレ part103
・【FEH】ファイアーエムブレム ヒーローズ 初心者質問スレ Part.15 [無断転載禁止]
・【FEH】ファイアーエムブレム ヒーローズ 初心者質問スレ Part.12 [無断転載禁止]
・MTB初心者質問スレ part106
・ロード初心者質問スレ part444
・ロード初心者質問スレ part424
・ロード初心者質問スレ part443
・ロード初心者質問スレ part445
・ロード初心者質問スレ part457
・ロード初心者質問スレ part426
・ロード初心者質問スレ part458
・クロスバイク初心者質問スレ part9
・クロスバイク初心者質問スレ part10
・【海外通販】AliExpress初心者質問スレ Part2
・Cakewalk by BandLab 初心者質問スレ Part 18
・MTB初心者質問スレ part114
・MTB初心者質問スレ part126
・MTB初心者質問スレ part118
・MTB初心者質問スレ part115
・ロード初心者質問スレ part464
・ロード初心者質問スレ part395
・ロード初心者質問スレ part 469
・クロスバイク初心者質問スレ Part51
・クロスバイク初心者質問スレ Part49
・【入門】ヴェポライザー初心者質問スレ【喫煙】
・【入門】ヴェポライザー初心者質問スレ5【喫煙】
・ロード初心者質問スレ part394 [無断転載禁止]
・ロード初心者質問スレ part408 [無断転載禁止]
・ロード初心者質問スレ part397 [無断転載禁止]
・ロード初心者質問スレ part356 [無断転載禁止]
・ロード初心者質問スレ part401 [無断転載禁止]
・【入門】ヴェポライザー初心者質問スレ12【喫煙】
・ロード初心者質問スレ part407 [無断転載禁止]
・クロスバイク初心者質問スレ part6 [無断転載禁止]
・糖尿病初心者質問スレpart45
・Blender 初心者質問スレッド Part35
・【入門】ヴェポライザー初心者質問スレ2【喫煙】 [無断転載禁止]
・糖尿病初心者質問スレpart35
・糖尿病初心者質問スレpart42
・糖尿病初心者質問スレpart40
・糖尿病初心者質問スレpart38
・宝塚初心者質問スレッド〜Part76
・ロード初心者質問スレ part449
・銃所持許可&初心者質問スレPart5
・クロスバイク初心者質問スレpart27
・Blender 初心者質問スレッド Part48
・【投資一般板】 初心者質問スレッド Part46
・セキュリティ初心者質問スレッド Part143
・セキュリティ初心者質問スレッド Part142
・Blender 初心者質問スレッド Part32(ワッチョイ有)
・◆◆園芸初心者質問スレッド PART104◆◆
・◆◆園芸初心者質問スレッド PART102◆◆
・Blender 初心者質問スレッド Part29 [無断転載禁止]
・【UE4】Unreal Engine 4 初心者質問スレッド part1
05:27:56 up 5 days, 15:52, 0 users, load average: 9.25, 9.02, 9.46
in 0.054152011871338 sec
@0.054152011871338@0b7 on 121719
|