Java入門・初心者質問スレ Part.7
■ このスレッドは過去ログ倉庫に格納されています
ぼくの反論できない相手はいじめられてることにしたいゴミマヌケ馬鹿w
もう少しがんばろうよぉ低能ぼくちゃんw
アホ 35歳Java歴1年半Java Bronze持ちが作成した最高傑作
https://ideone.com/JQbabV >>634
やるじゃん
自力で作ったなら大したもんだよ >>635
それは誉め言葉と受け取っていいんですか? >>637
西暦1年から1,000,000,000年まで対応できるように変更してみましょう
ユリウス暦とグレゴリオ暦の存在と切り替え月に注意 >>637
1日の曜日によって分岐させて個別に出力しているが、これを一つにまとめてみな。
最初にスペースをいくつ出すか、どのタイミングで改行するか、及び何日まで出すかの問題で、全て計算と条件判断でできるから。 >>634
これは何か制約があって、こんな狂ったコードになってるの?
納入条件が1.5kstep以上になっているみたいな。
昭和の時代の、1行で中身を書ける関数なのに規模を水増しするために
if文で入力対復帰値を全部書いてたような狂気を感じる。 724 : 仕様書無しさん : sage : 18/05/27(日) 19:34:26.51
論評。
>https://ideone.com/JQbabV
わざととしか思えない。人の領域を超える作品。
序盤はコピペとコピペを少し直しながらつなげつつ、最終的には
論理が破綻し崩壊していきながら、目的の実行結果になるためには
どうすればいいかと分からないながらも挑む苦悩が見え隠れし、
破綻したままコードは終焉を迎える。
>https://ideone.com/WZmNs5
ほっとする作品。
不慣れな感じと新しい技術を積極的に取り入れようとする姿勢が見え、
初心者が作りました、というのに相応しい作品。
逆に言えば1作目に比べて面白みに欠ける。よくあるフレーズを
よくまとめただけの作品。だがその中身はリファクタリングの域を
遙かに超え、元作の雰囲気を持ちつつリメイク・リビルドと言える
別作品に仕上がっている。
>https://ideone.com/bLfLVt
まあなんというか、ふつう。
練習用に提示したことを考えれば、難易度を抑えて教えたいポイントを
絞り、よくまとまっている。作者のやさしさが垣間見れる普通のコード。 >>643
2つ目
最終日の後ろにもスペースが付く
3つ目
メンバー変数がpublic
ここらへんはそれぞれか 2つ目はうるう年でないときの2月も29日まで出るんじゃないか?
maxDaysの2つ目の29は28でないとだめだろう。 プログラム初心者にはjavaとkotlinとどっちがおすすめですか? >>638
以下のように解釈することにします。
(35歳にしては)やるじゃん
(35歳の実力からすると)自力で作ったなら大したもんだよ >>646
Java
勘違いしてるようだけど、KotlinはJavaより覚えること多くて難しい言語だし、
Javaができないとライブラリの使い方分かんなくて話にならないよ 初心者には、か、実際どうだかなあ?
最終的にどちらも覚えるのが良いとは思うが。 数年後にはなくなってるkotlinとかいうクソ言語の布教活動はいい加減やめような
な? 現代の世相を刹那に描き切った名作がkotlinなんだから、数年後のことを言うのは違うだろな。
アートを全く理解していない。 なくならんだろう。GoogleがAndroidでサポートするって言ってそこで爆発的に使用者増えたようだし。
Googleがやっぱ止めたと言い出しても有名になりすぎたのでもう消えようがないと思う。 どっちにしろJavaができない人には使えない言語だから最初はJavaから javaの継承についての質問です
Humanクラスを継承して、TeacherクラスとDoctorクラスを作りました
別のメソッドが引数にTeacherだろうとDoctorだろうと引数に取れるように、
Humanクラスを引数に取るように設定しました
someMethod(Human human)
このメソッドの中でTeacherやDoctor固有のメソッドを使いたい場合はどうするのが正解ですか?
if(human instanceof Teacher){
((Teacher) human).teacherMethod();
}
とかキャストして使うしか無いでしょうか? >>656
そう。
何度もキャストするのが面倒ならその型の変数作ってキャストした結果を代入して使えばいい。 human クラスに professon とか付随するメソッドを用意しておくのが正統なやり方か。 >>642
java.util.LocalDate 使って自分では何も考えずに作ったほとんど出力してるだけのもの。
https://ideone.com/ujLA0Y javaが有料になるって本当なの?
今まで作ったものも金を払わないといけなくなるのか? booleanが条件式のif文で質問させてください
boolean bl ;
if(this.bl){
}
って書かれていたら、ifの条件文はどんな意味があるんでしょうか?
blがtureならif文を実行という意味でしょうか? >>663
this が付いているということはインスタンス変数なので if 文のあるメソッド内で
宣言されている bl とは別の変数だ。
true なら if のブロック内に入るというのはその通り。 >>664
先生、ありがとうございます!!
よく理解できていないので先生の文章を読み返し、理解できるように頑張ります
ありがとうございます >>656
型を判別して、処理を切り替えるのは、継承プログラミングではない。
型を判別している部分があったら、即ダメ!
継承すると、型判別が消えるはず。
それが継承プログラミング
Teacher・Doctor のどちらのインスタンスを渡しても、動くように作っていないとダメ Humanにabstructなメソッドか空メソッド用意しておいて、
Teacherのほうだけ中身を書く、Doctorのほうは何もしないで復帰にしてoverride、
Humanのメソッドからは単にそれを呼び出せばいい。 ティーチャ特有のメソッド呼ぶならティーチャ型の引数にするべき Ch[] c1=new Ch[3];
c[0]=new H();
c[1]=new T();
c[2]=new W();
for(Ch ct:c){
ct.setNo(ct.getNo()+1);
}
というコードがあったとして、
Ch ct ってインスタンスを生成しているように見えるのですが、そういう理解ではいけませんか? >>674
ループのところでChのインスタンス作ってるわけじゃないっしょ
代入してるだけでござろう
ゆえにそういう理解では良くない 変数名間違ってるしインスタンスの意味も理解してない
入門書読み直し ct はループの中で、c の0から2をそれぞれぞれ参照していくというのが正しい言い方なんですか? ヒント1:拡張for文
ヒント2:ググる
ヒント3:説明読む
ヒント4:初心者以前のレベル
ヒント5:上記のことが理解出来たら入門書読み直して理解できるまで絶対に質問しない >>668
>型を判別している部分があったら、即ダメ
Hotelクラスを作りました
checkIn(Human human)メソッドを定義して、配列Human[] guestsに入れていきます
そのホテルはDoctorに対しては特別割引をしていました
その場合の宿泊料計算についても型判別を使ったらダメですか? >>681
それは職業の属性を持たせるという方式でやった方が良いのではないか?
Job クラス作ってそのインスタンスで職業を保持するようにしておいてそれを Human クラスの中に持つ感じ。
何故かというと同じ人の職業が変化する可能性があるため。 >>682
なるほど、確かにそうですね。その通りです
感覚的に継承の使い所だと思って安易に継承を使ってしまうと後で困ってしまうということになりかねない
設計レベルで何をするのか固まってないと使うのは難しいのか >>683
というか継承いらない
継承は基本的に悪なので使わなくて済むなら使わないほうがよくて、原則としてインターフェイスと移譲を使えというのが今時のオブジェクト指向
継承は、どうしても継承を使ったほうが自然にコードを共通化できる場合に実装テクニックとして使うもの 言語仕様なんでしょうけど、
何で普通のfor文は遅いのでしょう? どうせループの閾値をループ毎にコストの掛かる冗長な計算してましたってオチだろ 継承is-a よりも、包含has-a(委譲・インターフェース)の方が柔軟性がある。
継承を使うと、長期間仕様が固定される
怪物クラスの派生で、スライム・ドラゴンクラスがある時、
攻撃・属性とか、長期間に渡って、仕様が固定される
その代わりに、後に、幽霊クラスを追加しても、
同じ仕様だから、修正箇所が無い
もし、型判別するのに、switch 文を使っていたら、
何か所も修正して、テストしないといけないから、新たな怪物を作れなくなる
switch monster {
case slime:
case dragon:
case ghost: // 追加 すみません、またまた正規表現でつまずいたので教えてください。
-------------------------
String mail = "mailto:info@jafrec.org?subject=title" ;
Pattern pattern = Pattern.compile(
"(([0-9a-zA-Z!#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\}\\|~]+(\\.[0-9a-zA-Z!#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\}\\|~]+)*)|(\"[^\"]*\"))"
+ "@[0-9a-zA-Z!#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\}\\|~]+"
+ "(\\.[0-9a-zA-Z!#\\$%&'\\*\\+\\-/=\\?\\^_`\\{\\}\\|~]+)*");
Matcher m = pattern.matcher(mail);
if (m.find())
System.out.println(m.group());
-------------------------
info@jafrec.org?subject=title
-------------------------
このパターン文字列は、このサイトからもらってきて、行頭の「^」と行末の「$」を消しただけのものです。
[メールアドレスのチェックをするサンプルコード]
https://www.sejuku.net/blog/13215
要するにメールアドレスでは「?」は使用可能な文字ということですが、
subject=title という文字列を含まないちゃんとしたメールアドレスはどうやって抽出すればいいのしょうか? Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net
ttp://mevius.2ch.net/test/read.cgi/tech/1489511075/ 基本を理解してれば5秒で解決できようなことも
コピペするだけで自分で考えることを完全に放棄して
「どうすればいいですか?!(ブヒッ w」って言う奴がたまに沸くけど
俺から言えることは一つ
とりあえずプログラム勉強するのやめて死ぬか肉体労働でもしてろアホ String mail = "mailto:info@jafrec.org?subject=title";
int start = "mailto:".length();
int end = mail.lastIndexOf("?subject=");
System.out.println(mail.substring(start, end)); 自分は中括弧なしの一行のif文よく使うのだけど、
別の事情でたまたまそれ全部取ったら動作早くなった気がするのだけど気のせいでしょうか? >694 ←なんだこれw
馬鹿は回答側に回るなって何度言えばわかるんだ?
入門書読み終わるまでROMってるか釣りじゃなかったら
思考能力が小学生以下だからとっとと死ぬか肉体労働でもやってろ低能 >>697
よう天才
最高のコード頼むわ
無理だろうけど 正規表現で何してるかわかれば
上の方でアホっぽい奴が書いてるように最後の行の「?」と「*」消せば
?に当たった時点で抽出されなくなる
それを>694みたいに固定文字列検索してsubstringするような馬鹿は馬鹿と言われて当然
こんなコピペだけして何も考えてなく応用力0の奴に回答すると延々と質問してくるし回答してやる価値もないし
?残してそれ以降の文字だけ消したいとかこの?が何を意味してるかもわかってないし
そもそもこんなことしたい奴なんてwebクローリングとかして怪しいことする気満々の糞業者だし
とりあえず死ねって感じ ∧_∧ / ̄ ̄ ̄ ̄ ̄
( ´∀`)< オマエモナー
( ) \_____
│ │ │
(__)___) まぁ勉強初めて2日目とかの初心者なんだろうけど
よくそんなゴミコード晒せるな
ビックリするわ >>703
はよ自信満々のコード晒せよ
無理だろうけど >>703
派遣切りされて暇なのか?
現場で頑張りなよ土方くん >>700
後出しで偉そうに言ってんじゃねえよw
おい土方コード書け *消したらドットが複数ある時どうするんだ
そもそもドメイン名にハテナ無理じゃね
消すのは最後だけじゃない
でもまあ土方にしては回答頑張ったんじゃねえの 現場土方は他人に馬鹿と言う割に頭悪いよね
高卒土方と呼んでやろうか? 正規表現もわからずゴミコードしか書けない池沼が6連投www
>*消したらドットが複数ある時どうするんだ
書いてある正規表現も理解できない馬鹿なんだから無理して書き込むなって糞馬鹿w
こんな奴が回答してたりするからゴミスレすぎる
馬鹿はプログラムやるなってwマジでw 昨日ふと夜空を見上げたら微分が流れた
思わず願い事したの 昔もこのスレはこんなに馬鹿が溢れてなかったんだけど
今はすごいね
まともな奴はみんなどっか他所に行ったみたいだな
馬鹿しかいねぇw >>718
馬鹿はお前だけだよ高卒くん、あんま調子乗ってっと微分せざるを得ないが? 正しい修正案を提示できない高卒土方がさっき微分を殺してました 最後の?と*消すなんてそんないい加減な修正したら
現場では速攻微分だから public class sure{
public static void main(String[] args){
System.out.println("ここは初心者の質問が許されているスレですか?");
}
} >>722
public class sure{
public static void main(String[] args){
System.out.println("はい。");
}
} String[] come=
{"コ","メ","ン","ト","が","辛","す","ぎ","て",
"質","問","し","づ","ら","い","で","す","わ","(汗"};
for(String c:come){
System.out.println(c);
} すまないが生きている価値のないごみクズは35歳だけにしてくれないかな。 皆さんレスどうもありがとうございました。こんな感じになりました。
if (m.find()) {
int index = m.group().indexOf("?subject=");
if (index > -1)
System.out.println(m.group(0).substring(0, index)) ;
----------------
String mail = "mailto:info@?subject=.org?subject=title" ;
これだとちゃんとしたアドレスを抽出できませんが、こんなドメインなどほとんどないだろうってことにしときます。
実際のところ「?」を含むドメインにもほとんどお目にかからないのでパターン文字列から「?」を取り除いても実用上ほとんど問題ないって気がします。
あと余談になりますが、
<a href = "mailto:info@?subject=.org?subject=title">連絡先</a>
このリンクをクリックすると、メーラーが立ち上がりますが、宛先は「info@;」、件名が「.org?subject=title」になりました。 ■ このスレッドは過去ログ倉庫に格納されています