16/09/23 23:23:04.40 fPbYt4vI.net
ハゲは言い過ぎだろ…
601:デフォルトの名無しさん
16/09/23 23:41:41.46 Krl8LY6k.net
alias 別名を付ければ?
602:デフォルトの名無しさん
16/09/23 23:56:57.26 BvOffHOz.net
バッチファイル作っておくとか
603:デフォルトの名無しさん
16/09/24 03:35:04.57 ts45zeFc.net
「ハゲ」は別に相手をけなす言葉じゃないだろ
それからちょっと薄いくらいの人のことをハゲっていうのもやめろよな!
604:デフォルトの名無しさん
16/09/24 12:01:42.85 cKy0IgTy.net
>>599
うるせえハゲ
605:デフォルトの名無しさん
16/09/24 12:38:22.17 oYgGfkv1.net
うるせー亡者
606:デフォルトの名無しさん
16/09/24 13:07:19.25 d951yjmo.net
public class ハゲ {
public static void main(String[] 禿) {
System.out.println(禿[0]);
}
}
607:デフォルトの名無しさん
16/09/24 13:43:08.13 7+Pq0d3W.net
コマンドプロンプトやエクリプスのコンソール画面を一旦クリアしてカーソル位置を一番上へ持って行ってから文字を表示するにはどうすればいいのでしょうか
画面をクリアにするだけならできるのですが続く表示が下の方になってしまい見ばえが悪いです
608:デフォルトの名無しさん
16/09/24 13:51:17.35 d951yjmo.net
>>603
eclipseは知らないがコマンドプロンプトならバッチファイルで最初でclsしとけばいいのでは?
まあしかし本当ならtermcapみたいな出力先端末の定義が書かれた設定ファイルを元にして出力すべきではある。同じ画面クリアするのであっても端末ごとに方法が違うかも知れないからね。
Javaでは基本的なライブラリにはそういうのはないんじゃないかな。誰かが作っていそうな気はするけど。
609:デフォルトの名無しさん
16/09/24 13:58:30.73 d951yjmo.net
あるにはあるな。Java の curses ライブラリ。これはメンテされてなさそうだけど。
URLリンク(osdn.jp)
610:デフォルトの名無しさん
16/09/24 14:00:14.03 ts45zeFc.net
カーソル位置を変えよう
URLリンク(www.grapecity.com)
611:デフォルトの名無しさん
16/09/24 14:30:04.92 cKy0IgTy.net
>>603
\rを先に出力すればいいよ
612:デフォルトの名無しさん
16/09/24 15:44:28.97 7+Pq0d3W.net
System.out.printf("\033[2J") ; //画面をクリア
System.out.printf("\033[0;0H") ; //カーソルを0,0の位置へ
System.out.println("テスト") ; //本文表示
ありがとうございます
コマンドプロンプトだけで言えばこれでいいでしょうか
613:デフォルトの名無しさん
16/09/25 17:22:51.07 422b5eKT.net
試してみればいーじゃない
614:デフォルトの名無しさん
16/09/25 17:39:54.92 fXLErY67.net
コマンドプロンプトって呼び方してるとこみるとWindows?
Windows7以降だとANSI.SYS無いから、ansiconとか入れないとならん気が
615:デフォルトの名無しさん
16/09/26 15:38:10.93 lL1M4dov.net
ググると出てくるが、Windows 10 (10.0.1058) のコマンドプロンプトはそのままでできるようだ。
実際今やってみたらできた。
Windows 7 はできなかった。ansocon でやる必要あるみたい。
616:デフォルトの名無しさん
16/09/28 01:04:27.23 rUV0k2Q4.net
for ( int a : x ) {
System.out.print(a+" ")
}
いわゆる拡張for文と言う奴で配列xの内容を順に表示していくとして
ループの最初の一回だけ処理をせずに飛ばす(continue)ことはできますか?
617:デフォルトの名無しさん
16/09/28 01:12:05.45 +6qgdOE2.net
>>612
余裕です
boolean first = true;
for ( int a : x ) {
if ( first ) {
first = false;
continue;
}
System.out.print(a+" ")
}
618:デフォルトの名無しさん
16/09/28 01:17:11.63 rUV0k2Q4.net
>>613
ありがとうございます
619:デフォルトの名無しさん
16/09/28 04:18:03.56 rUV0k2Q4.net
参照先となるint型配列 a = { 1 , 2 , 3 , 4 , 5 } ;
参照元となるint型配列 b = { 2 , 3 , 4 , 5 , 7 } ;
2つの配列を比較して、含まれてない数字だけ(上記で言えば7)を抜き出したいのですが
for (int i=0 ; i < a.length ; i++ ) {
for (int k=0 ; k < b.length ; k++) {
if ( a[i] == b[k] ) b[k]=0 ;
}
}
int x = 0 ;
int [] y = new int [ b.length ] ;
for (int i =0 ; i < b.length ; i++) {
if ( b[i] > 0 ) {
y[x] = b[i] ;
x += 1 ;
}
}
これだと見苦しいでしょうか?
620:デフォルトの名無しさん
16/09/28 07:49:13.32 W+UWiO4B.net
>>615
int[] y = IntStream.of(b).filter(t -> Arrays.binarySearch(a, t) < 0).toArray();
621:デフォルトの名無しさん
16/09/28 12:02:39.05 RrnZ6URf.net
Rubyみたいに、b - a みたいな差集合演算が、出来ないの?
そういうライブラリも無いの?
622:デフォルトの名無しさん
16/09/28 13:55:25.18 quoItQJb.net
え?
623:デフォルトの名無しさん
16/09/28 13:58:21.69 LrnfCbIH.net
Setのこと聞きたいのかなあ
624:デフォルトの名無しさん
16/09/28 14:05:09.02 3qfI4Nbr.net
そもそもやる種類によるけどそうそう配列差分とるような出来事ないからなぁ...
625:デフォルトの名無しさん
16/09/28 15:13:08.48 LOSUa8nH.net
printlnの引数と戻り値ってどう定義されているんですか?
626:621
16/09/28 17:49:57.58 LOSUa8nH.net
話題は変わりますが
627:デフォルトの名無しさん
16/09/28 18:48:51.92 kdBXM31p.net
>>621 toStringメソッド
628:デフォルトの名無しさん
16/09/28 20:53:02.02 iTE2MfXm.net
>>621
ライブラリのソース見ればわかるのでは?
629:デフォルトの名無しさん
16/09/28 22:52:19.94 pHF1g6v7.net
for文やif文で多重に入れ子になってくると訳わからなくなるけど
なんとかなりませんか
630:デフォルトの名無しさん
16/09/28 22:59:17.27 aIUMbzyY.net
>>625
深いネストを避ける
631:デフォルトの名無しさん
16/09/28 23:54:25.15 xia32VFg.net
>>625
ラベル付きcontinueで爆死
632:デフォルトの名無しさん
16/09/29 02:01:58.82 8BdwfvHa.net
>>625
中身をメソッドにして外出し、という方法もある。
633:621
16/09/29 02:24:10.71 PBNJeDAR.net
>>623>>624
ありがとうございます。
634:デフォルトの名無しさん
16/09/29 03:03:25.34 3Qnxj2An.net
フィールドのドックコメントってどんなこと書いたらいいの
635:デフォルトの名無しさん
16/09/29 04:51:49.73 6joghEm8.net
>>630
System.outとか見れば
URLリンク(hg.openjdk.java.net)
636:デフォルトの名無しさん
16/09/29 18:09:31.11 iz5N5Y7N.net
>>631 thanks
637:デフォルトの名無しさん
16/09/29 21:19:31.88 iz5N5Y7N.net
なんでいちいち英語のやつ渡すんだよわかるかよ
638:デフォルトの名無しさん
16/09/30 01:07:13.20 uFRLLqks.net
俺頭悪いから英語分からへんわ。
639:デフォルトの名無しさん
16/09/30 02:29:05.91 88GOzilz.net
Googleで、ページ丸ごと翻訳すれば?
640:デフォルトの名無しさん
16/09/30 04:06:13.88 87+JbCgZ.net
SpringとかPlayとかのフレームワークのWeb部分って、JSP/Servletのラッパーだと考えていいんでしょうか?
641:デフォルトの名無しさん
16/09/30 08:45:34.31 b27JHcuC.net
>>635 ありがとう実はもう解決したから大丈夫
642:デフォルトの名無しさん
16/09/30 12:25:21.58 IsuwtoYa.net
>>636
springはそう
playはそもそもサーブレットじゃないはず
643:デフォルトの名無しさん
16/09/30 12:28:15.87 SeEJvjvc.net
>>633
thanks とか書いちゃって本当は英語ペラペラなくせに。俺を騙そうったってそうはいかねえぜ。
644:デフォルトの名無しさん
16/09/30 12:28:33.98 IsuwtoYa.net
>>638
細かく言えば
jsp/servletじゃなくてservlet
テンプレートエンジンはjsp以外選べる
645:デフォルトの名無しさん
16/09/30 13:09:18.69 dgXw6UDz.net
>>636
Spring MVCのCはservletの上で動く、VはJSPも使えるけど推奨されていないのでthymeleafが多いかな
Playはservlet非依存でVは独自のデンプレートで雑に言うとJSPのScala版
646:デフォルトの名無しさん
16/09/30 18:35:03.77 gDcqzZDz.net
springはservletのラッパーとは言わないでしょw
scalaはjavaのラッパーか?w
647:デフォルトの名無しさん
16/09/30 19:00:16.70 b27JHcuC.net
>>639 内心イラつきつつレスしたから英語になったわw
648:デフォルトの名無しさん
16/09/30 19:03:39.25 KnhhoGXj.net
自分の無能を棚に上げてイラつくとかワロタ
649:デフォルトの名無しさん
16/09/30 19:04:46.81 b27JHcuC.net
>>644 翻訳してクレメンス
650:デフォルトの名無しさん
16/09/30 19:24:52.04 k6QPLsM1.net
>>645
URLリンク(docs.oracle.com)
651:デフォルトの名無しさん
16/09/30 20:32:40.37 uFRLLqks.net
Javaの参照はCやC++のポインタとほとんど同じと考えていいですか?
652:デフォルトの名無しさん
16/09/30 20:40:20.30 b27JHcuC.net
>>646 右クリックして翻訳だろ知ってるけどさ元々英語のコメントを翻訳してもニュアンス変わるだろ
653:デフォルトの名無しさん
16/09/30 20:41:37.79 b27JHcuC.net
だからおれAPIの書き方好きじゃないもん
あれは英語読める奴が原文読むべきだわ
654:デフォルトの名無しさん
16/09/30 20:42:18.26 FM0LwWhQ.net
うるせー死ね
655:デフォルトの名無しさん
16/09/30 21:42:32.76 b27JHcuC.net
うるせえニートども
ググって原文持ってきてんじゃねぇよカス
656:デフォルトの名無しさん
16/09/30 23:45:45.67 +IPuUceA.net
>>647
ああ。まあ。そうだな。
なにせぬるぽ
657:デフォルトの名無しさん
16/10/01 00:07:44.09 4GbhNNOQ.net
>>648
リンク先は日本語だよ
馴染みのフィールドの英語なんだからわかんだろ
そんな語力じゃドキュメントの質も知れてるけど
658:デフォルトの名無しさん
16/10/01 00:19:49.10 kr3+PnGk.net
>>653 おまえらに聞かなくても一発OKだったわめんご
659:デフォルトの名無しさん
16/10/01 00:20:36.03 kr3+PnGk.net
リンク先見るまでもねぇよ
めんご
660:デフォルトの名無しさん
16/10/01 00:25:40.75 kr3+PnGk.net
まあでもたいしたことないのは事実だからいいんだけどな
661:デフォルトの名無しさん
16/10/01 00:26:46.57 kr3+PnGk.net
はあ雑魚すぎてしにてぇ
662:647
16/10/01 01:55:19.16 hwPNFikt.net
>>652
ありがとうございます。
663:デフォルトの名無しさん
16/10/01 03:59:04.06 j95ses3M.net
>>652
ガッ
664:デフォルトの名無しさん
16/10/01 11:20:09.18 kr3+PnGk.net
ぬるぽの後ガッってノリ意味わかんねよ、ほんと2ちゃんってくそだな
665:デフォルトの名無しさん
16/10/01 12:23:28.64 /eq2yH6H.net
>>660
お前はもういいよ
なに居座ってんだよ
666:658
16/10/01 13:55:48.38 hwPNFikt.net
>>652の方は、なにせヌルポインタエグゼプションって言葉で「ポインタ」って言ってるぐらいだしな、って続けたかったんでしょうね、きっと。
667:デフォルトの名無しさん
16/10/01 14:49:04.18 JmoJwfEH.net
Sqlに文字をインサートする時、
iphoneやandroidの絵文字などがあった場合、エラーになってしまうので、
インサート前に取り除きたいのですが、
何か良い方法はありますか?(SQLで文字セットは変更できないので、Javaで絵文字だったら取り除きたい)
668:デフォルトの名無しさん
16/10/01 15:50:36.99 onRosRXh.net
ASCII.jp:最強のJava入門書はどれか?(2016年秋)
URLリンク(ascii.jp)
『プログラムはなぜ動くのか』『コンピュータはなぜ動くのか』の著者・矢沢久雄、
「たのしいRuby 第5版、2016」の著者・高橋征義らによる、討論会
669:デフォルトの名無しさん
16/10/01 16:00:26.65 b1627Shz.net
>>661 これはあなたのスレなんですかね~
670:デフォルトの名無しさん
16/10/01 22:05:29.89 VDFFrXl+.net
突然すいません。質問なんですがpackageでaiueoと指定したクラスが2つあります、クラスの名前はAbcとDefで2つともコンパイルに成功してclassがdocumentsに保存されています。続く
671:デフォルトの名無しさん
16/10/01 22:05:47.64 VDFFrXl+.net
続き、これを使ってMainクラスを作りたいのですがパッケージaiueoは存在しませんとなり、コンパイルに失敗してしまいます。
なにか手順に間違いがありますか?
どうかお答えいただけたらと思います。
672:デフォルトの名無しさん
16/10/01 22:08:37.60 kr3+PnGk.net
>>667 パッケージした1行みせてみ
673:デフォルトの名無しさん
16/10/01 22:09:11.74 kr3+PnGk.net
てかコードをレスに書いてくれなきゃ
674:デフォルトの名無しさん
16/10/01 22:11:27.89 kr3+PnGk.net
メインクラスだけでもいいからみせて
675:デフォルトの名無しさん
16/10/01 22:16:26.95 VDFFrXl+.net
>>668
反応いただきありがとうごさいます。
携帯からの書き込みで少し時間がかかります。すいません、ちなみにAbc Defともに最初の文はpackage aiueo; としております。
676:デフォルトの名無しさん
16/10/01 22:19:17.06 r6T55aIp.net
思い切った名前だよね
NHK教育番組の案件かな
677:デフォルトの名無しさん
16/10/01 22:22:52.24 kr3+PnGk.net
>>671 メインクラスはそのパッケージに属してる?
678:デフォルトの名無しさん
16/10/01 22:25:32.77 kr3+PnGk.net
>>671 メインクラスにimport文書き忘れてるとかじゃない
679:デフォルトの名無しさん
16/10/01 22:26:37.05 VDFFrXl+.net
import aiueo.Abc;
pubilc class Main{
public static void main(String[] args)
throws Exception{
Abc.zenhan();
Abc.kouhan();
aiueo.Def.mae();
aiueo.Def.usiro();
}
}
680:デフォルトの名無しさん
16/10/01 22:27:21.37 VDFFrXl+.net
>>672
あくまで例でやっております、分かりづらくてすいません。
681:デフォルトの名無しさん
16/10/01 22:29:26.04 VDFFrXl+.net
>>673
メインクラスにpackageは入れておりません。
682:デフォルトの名無しさん
16/10/01 22:34:03.04 kr3+PnGk.net
>>675 気になったんだけどさ、Defもimportしたらいいんじゃないか、後、ABCクラスもそうなんだけど、インスタンスにしなきゃメソッドは動かないよ
683:デフォルトの名無しさん
16/10/01 22:36:36.10 kr3+PnGk.net
例えば、Abc.zenhan();ね
Abc abc = new Abc();
abc.zenhan();
あーアイホォン打ちづらいw
684:デフォルトの名無しさん
16/10/01 22:37:59.34 kr3+PnGk.net
あとthrows Exception これいらない
それで動くと思うよ
685:デフォルトの名無しさん
16/10/01 22:40:51.22 VDFFrXl+.net
>>678
片方はimportして片方はしないでpackageを使えと言う課題なのでそれにしたがっていますが両方importした方がいいと言うのはその通りだと思います
686:デフォルトの名無しさん
16/10/01 22:44:12.90 kr3+PnGk.net
>>681 学生さん?
687:デフォルトの名無しさん
16/10/01 22:48:08.50 kr3+PnGk.net
クラスパスとかじゃないかなー
コンパイルエラーはそのままググればたくさん出てくると思うよ
688:デフォルトの名無しさん
16/10/01 22:48:31.84 VDFFrXl+.net
>>679
察しが悪くてすいませんそれらの文はargs){
の後に入れればよろしいでしょうか?
689:デフォルトの名無しさん
16/10/01 22:49:48.80 VDFFrXl+.net
>>682
すいません学生ではなく独学で勉強をしておりますが友人など聞ける相手がおりませんのでここで聞かせてもらっております涙
690:デフォルトの名無しさん
16/10/01 22:52:12.08 kr3+PnGk.net
>>684 そうだよ
import aiueo.Abc;
pubilc class Main{
public static void main(String[] args)
throws Exception{
Abc abc = new Abc()
abc.zenhan();
abc.kouhan();
aiueo.Def.mae();
aiueo.Def.usiro();
}
}
691:デフォルトの名無しさん
16/10/01 22:53:51.74 kr3+PnGk.net
>>685 真面目ですね、応援してます
692:デフォルトの名無しさん
16/10/01 22:53:57.21 VDFFrXl+.net
>>683
調べ不足かもしれませんがなかなか理解できる内容のものがなくここでつまずいております...もしかしたらクラスパスとのことでしたがpackageの2つともはdocumentに入っているのですがdocumentを読み込んでいないと言う事でしょうか?
693:デフォルトの名無しさん
16/10/01 22:58:06.17 kr3+PnGk.net
>>688 ドキュメントってWindowsの?
普通にフォルダの中にいれて、環境変数で登録でいいんじゃないかな
694:デフォルトの名無しさん
16/10/01 22:59:59.19 VDFFrXl+.net
>>687
ありがとうございます。本当に嬉しいです
695:デフォルトの名無しさん
16/10/01 23:00:52.76 VDFFrXl+.net
>>689
すいません osはmacのosXです
696:デフォルトの名無しさん
16/10/01 23:01:27.27 kr3+PnGk.net
IDE使えないとかめんどくさいな
コンパイルの時はjavac aiueo.Abc aiueo.Def Main でやってみたらいい
697:デフォルトの名無しさん
16/10/01 23:02:06.77 MIaIeT8n.net
ちなみに誰が出してる課題?
698:デフォルトの名無しさん
16/10/01 23:02:28.95 kr3+PnGk.net
>>691 ならeclipse入れたほうが早いよ、その辺全部やってくれるからコード書くだけでいいし
699:デフォルトの名無しさん
16/10/01 23:06:04.41 kr3+PnGk.net
>>681 課題という事はIDEダメなパターンか
てか独学って話と矛盾してるなー
最後は自分の力で解いたほうがいいと思うよヒントとしてMac クラスパスでググるのと、パッケージが見つかりませんでググってみそれで解ける問題だよ
700:デフォルトの名無しさん
16/10/01 23:06:24.88 VDFFrXl+.net
>>693
課題は本から練習問題としてでております
701:デフォルトの名無しさん
16/10/01 23:07:36.81 VDFFrXl+.net
>>694
今はターミナルでやっていたのでExlipseを試してみようと思います
702:デフォルトの名無しさん
16/10/01 23:08:39.48 VDFFrXl+.net
>>695
すいません言い方が悪かったですね本はjava入門第二版を使っております。
703:デフォルトの名無しさん
16/10/01 23:09:11.39 wXi+U7q2.net
>>663
DBの符号化方式でエンコードしてNGなら削除してしまえばいんじゃないかな
URLリンク(paiza.io)
704:デフォルトの名無しさん
16/10/01 23:11:31.78 kr3+PnGk.net
>>697 それがいい
705:デフォルトの名無しさん
16/10/01 23:15:06.37 MIaIeT8n.net
こんなことで詰まってると3日で飽きるからな
706:デフォルトの名無しさん
16/10/01 23:21:57.93 VDFFrXl+.net
>>700
今日は本当にありがとうございました
707:デフォルトの名無しさん
16/10/01 23:24:03.63 VDFFrXl+.net
>>701
恥ずかしながら全くもってその通りだと思います。才能が無い事は承知しておりますがこれからも精進させていただきます。
708:デフォルトの名無しさん
16/10/01 23:29:35.31 kr3+PnGk.net
>>703 才能ないなんて簡単に決めるなよ
次の章のほうが大切だからそっからやったら前半の章は充分だろその知識使わないし
709:デフォルトの名無しさん
16/10/01 23:59:22.65 fIXH2k8W.net
飽きさえしなければどうにでもなる
710:デフォルトの名無しさん
16/10/02 08:36:31.88 v1qy4+iE.net
>>647
Java VMが管理しているアドレスだから概念は同じと思っていいが、CやC++みたいなアドレスとしてプログラムは作れない。
711:デフォルトの名無しさん
16/10/02 08:40:13.37 v1qy4+iE.net
>>662
あいつは英語の一般的な意味のポインタがなんなのか知らないだけだろ。
712:デフォルトの名無しさん
16/10/02 12:32:57.39 4o4y3Pue.net
>エグゼプション
には突っ込まんのか
713:デフォルトの名無しさん
16/10/02 14:27:57.94 SUd5Exqx.net
インターフェイスのインスタンスは作れないと思ってんですが、こうするとインスタンス作ってるっぽくなるんですが、どういうことなんでしょうか?
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
Runnable runnnable = new Runnable(){
public void run(){}
};
}
714:デフォルトの名無しさん
16/10/02 14:38:32.13 O1+Xevaf.net
>>709
インタフェスを継承したクラス(匿名クラス)を定義して匿名クラスのインスタンスを作成してる
715:デフォルトの名無しさん
16/10/02 14:44:40.68 SUd5Exqx.net
>>701
ありがとうございます。
確かに、MainClass.classとは別に、MainClass$1.classというクラスファイルが作られていました。
716:スッキリ厨
16/10/02 14:58:44.60 mO5jHYyT.net
>>664
C++で、賞を取った、平山尚のセガ本が、2008年に出た。
この本の中で、C++・オブジェクト指向・ゲームプログラミングを、
1冊で説明できる本があれば、ベストセラーになるって、平山が言ってる
その後、2011年に、無名の著者2人による「スッキリJava」が出た。
C++では無理だったことを、Java・オブジェクト指向の説明で、1冊を仕上げた。
また、イラストをふんだんに使い、最初からコストを度外視して、本を作ったw
2011年を、オブジェクト指向のエポックと呼んで、
2011年を境に、スッキリ以前・スッキリ以後と呼ぶ
今では、C++・オブジェクト指向を学ぶ人も、この本から始めるという、道筋も作った
これは、林晴比古・柴田望洋・宮本信二・結城浩・高橋麻奈など、
大御所たちが成しえない偉業であった
717:デフォルトの名無しさん
16/10/02 18:58:36.14 +XYb/4p3.net
俺のスレ
718:デフォルトの名無しさん
16/10/02 19:16:33.86 +XYb/4p3.net
>>707
猟犬だよな
719:デフォルトの名無しさん
16/10/02 19:20:04.24 +XYb/4p3.net
>>712
へー。そんな本が2011年に出ていたとは知らなかった。
720:デフォルトの名無しさん
16/10/02 22:37:08.72 v1qy4+iE.net
>>712
C++自体がオブジェクト指向設計専用ではないために、C++プログラマが説明しても、学習する方からしたら実際には全然、オブジェクト指向プログラムでないものができて動くから理解が難しいんだよ。
721:デフォルトの名無しさん
16/10/04 19:04:40.41 rJSgKoMJ.net
public static void main(String[] args) {
int i = 2;
System.out.println(1+i++);
}
が3になるのはなぜでしょうか?
722:デフォルトの名無しさん
16/10/04 19:15:35.05 ksk/TL7I.net
表示されるときはまだ++まで辿り着いてないからかな
723:デフォルトの名無しさん
16/10/04 19:18:07.09 WEyUe7wf.net
>>717
後置インクリメント演算子は処理が終わった後+1するから。
つまり1+i(この時点では2)の値を表示し、その後iは3になる。
もしiを1加算した結果を表示したいのなら++iを使う必要がある。
724:デフォルトの名無しさん
16/10/04 19:34:21.50 rJSgKoMJ.net
>>719
ありがとうございます。
>処理が終わった後+1
という点ですが、どういう事が起きれば"処理が終わった"ということになるのでしょうか?
例えば、
int i = 2;
System.out.println((double)(i++)); //出力2
だと、自分の頭の中では、i++した後に、double型への変換という"処理が終わった"から3になっていて欲しいと考えてしまうんですが。
根本的に頭おかしかったらすみません・・・
725:デフォルトの名無しさん
16/10/04 19:47:20.31 KPMHhtfC.net
スレチかもしれないけど
基本情報技術者のJavaってどこらへんまで理解してればいいの?
何問か解いたらコレクションやジェネリクスとかくらいまでだったから安心してたけど
他の年の見たらスレッドとか出てた...
726:デフォルトの名無しさん
16/10/04 20:02:04.37 fCGdMFkh.net
基本情報・応用情報ともにJavaで受けたけど当時はPHPの経験のみでJavaの経験ほぼ皆無だったけど行けたぞ
そんなに意識するほどJavaだけに依存するような問題でない
727:デフォルトの名無しさん
16/10/04 20:10:20.62 WEyUe7wf.net
>>720
printlnを実行したら、だと思う。
>>717のプログラム文の後に、System.out.println(i);で表示してみて。3になってると思う。
728:追記
16/10/04 20:42:57.79 WEyUe7wf.net
>>720
doubleでのキャスト→printlnによる表示(この時点でiは2)→後置インクリメントによるiへの1加算、の順だと思う。
729:デフォルトの名無しさん
16/10/04 20:54:16.80 L2FSf/5N.net
>>717
1+(i++) と同じだからでは?
730:717
16/10/04 20:59:41.12 rJSgKoMJ.net
すみません。キャストとか何も考えずにですが、頭まとまってないままレス書いてます。
int i = 2;
System.out.println(++i);
の場合
0 : iconst_2 //int型の2をオペランドスタックにpush
1 : istore_1 //ローカル変数領域の1番目に2を格納(0番目は違うデータ)
2 : getstatic #16 //System.out.PrintStream
5 : iinc 1, 1 //1番目のローカル変数(ここではi(=2))を1インクリメントする
8 : iload_1 //ローカル変数 i をオペランドスタックへpushする
9 : invokevirtual #22 //println実行
int i = 2;
System.out.println(i++);
の場合
0 : iconst_2
1 : istore_1
2 : getstatic #16
5 : iload_1 //ローカル変数 i をオペランドスタックへpushする
6 : iinc 1, 1 //1番目のローカル変数(ここではi(=2))を1インクリメントする
9 : invokevirtual #22
これだと、
++i の場合、ローカル変数領域でインクリメントした値をオペランドスタックにプッシュしてprintlnしている。
i++ の場合、iをオペランドスタックにプッシュした後、ローカル変数領域でインクリメントしている。
つまり、printlnで出力される値はオペランドスタック内での値で、インクリメントされるのはローカル変数領域の値。
ローカル変数領域の値をインクリメント前後のどっちのタイミングで取り出すかで結果が違った。
これでいいんでしょうか?
731:デフォルトの名無しさん
16/10/04 21:03:58.76 L2FSf/5N.net
>>720
処理が終わった後というか、変数から値を取り出した後と考えた方が良いと思う(でないと (i++) + (i++) みたいな式はどうなるのかわからなくなる)。
式の計算を実行する時には変数から値を取り出してそれを利用するわけだが、取り出した直後に変数の方にだけ1加算するのが後置の++。
732:デフォルトの名無しさん
16/10/04 21:07:47.13 L2FSf/5N.net
>>726
そうそう。ズバリそれ。
733:デフォルトの名無しさん
16/10/04 21:10:07.17 rJSgKoMJ.net
>>727
ありがとうございます。
そのケースだと、最初の(i++(値は2))+((i++)左でインクリメントされて3)
で、合計5になると思います。だいぶスッキリしました。
734:デフォルトの名無しさん
16/10/04 23:06:35.38 qcWHR4bx.net
すいません、日付の取得について教えてください。
年・日付でyyyymm
1回目:201610
2回目:201609
?
12回目:201510
のように1ヶ月ずつマイナスの値が取りたいのですが、どのようにロジックを組み立てれば良いでしょうか。
735:デフォルトの名無しさん
16/10/04 23:12:00.06 YN9fMNzy.net
mm = (mm+11)%12 というロジックを組み立てましょう
736:730
16/10/04 23:33:28.45 qcWHR4bx.net
カウンタが12以上だった場合と
カウンタが月より大きかった場合と
素直にカウンタが月より小さい場合の3パターンぐらい作ればOKですか?
737:デフォルトの名無しさん
16/10/04 23:37:38.44 rJSgKoMJ.net
>>730
public static void main(String[] args) {
LocalDate date = LocalDate.now(ZoneId.systemDefault());
for(int i = 0; i < 10; i++){
LocalDate date2 = date.minusMonths(i);
System.out.println(date2.format(DateTimeFormatter.BASIC_ISO_DATE));
}
}
こんなのどうでしょう?
738:デフォルトの名無しさん
16/10/04 23:48:00.86 qcWHR4bx.net
>>733
こちらのほうが早いですね。
カウンタが12以上
カウンタが月より大きいが12未満
カウンタが月と同じ
カウンタが月以下
のパターンで考えていましたが733さんのやり方を採用させていただきます。
ありがとうございました。
739:デフォルトの名無しさん
16/10/05 02:30:23.26 D107n7zL.net
他スレでも似たようなことを聞いたのですが、コンストラクタはメソッドとは「異なる」ものでしょうか?
740:デフォルトの名無しさん
16/10/05 04:32:37.11 6T6LA8v8.net
>>735
異なります。
まずクラスからインスタンスが生成されるのは分かると思います。
インスタンスを生成する際に、1つのインスタンスにつき最低1回自動的に実行されるものです。
(メソッドは意図的に呼び出さないと使われない)
※最低1回というのは、コンストラクタから他のオーバーロードコンストラクタを実行することも可能な為。
また、メソッドは定義しないと存在しえないけれど、コンストラクタは定義しなくても引数なしのデフォルトコンストラクタが勝手に作られます。
741:デフォルトの名無しさん
16/10/05 06:41:11.69 SMYY1Ign.net
一つのクラスにメソッドはいくつまで作れますか?
742:デフォルトの名無しさん
16/10/05 07:28:34.08 .net
最初の配列の中身が { あ , い , う , え , お } だとして
例えば、要らない3番目の要素を削って、 { あ , い , え , お }としたいのだけど
for文で回したいと言う事もあって配列の要素の数減らしたい場合はどうすればいいのですか
743:デフォルトの名無しさん
16/10/05 08:13:14.18 EDqQ344L.net
固定長でないなら配列の用途外だ
Listを使え
744:デフォルトの名無しさん
16/10/05 08:20:02.52 5Xz9WIc6.net
>>730
1引く。
結果 modulo 100が0ならさらに88引く
201501 -1
201500 -88
201412
745:デフォルトの名無しさん
16/10/05 08:37:57.34 UjqhNziY.net
>>740
Stream<Integer> yearmonth = Stream.iterate(201610, i -> {
if (--i % 100 == 0)
i -= 88;
return i;
});
yearmonth.limit(12).forEach(System.out::println);
746:デフォルトの名無しさん
16/10/05 09:52:26.11 Aes2Pyfc.net
>>740
このロジック思い浮かぶやつは頭おかしい。
747:デフォルトの名無しさん
16/10/05 12:08:28.26 5Xz9WIc6.net
>>742
確かど貧民なプロジェクトで書いたはず。
組み込みかなんか。
足す方も作った覚えがある。13なら88足す。
748:735
16/10/05 20:10:55.24 D107n7zL.net
>>736
なるほど。
ありがとうございました。
749:デフォルトの名無しさん
16/10/06 02:31:43.46 qC7uJdLp.net
>>737
いくつでも作れるんじゃない。容量が許す限り。
コンストラクタは引数の性質上作れるバリエーションは限られるけど。
750:デフォルトの名無しさん
16/10/06 10:43:24.14 j4+P2uPZ.net
URLリンク(stackoverflow.com)
どのくらいメソッドを扱えるかはJVM側の仕様でJava自体は制限ないらしい
751:デフォルトの名無しさん
16/10/06 12:21:38.86 Yw0Cruyw.net
>>738-739
java.util.Vectorは、オワコンらしいので、ArrayList を使うのかな?
752:デフォルトの名無しさん
16/10/06 20:29:56.72 NGtUq8vU.net
そういや昔Vectorって中で配列使ってたりして効率悪いって話を聞いたことあるんだけどその後どうなったんだろう?
中身をこっそりListの何かと同じになるように書き換えちゃえばさほど効率悪くならないような気がするが。
753:デフォルトの名無しさん
16/10/06 21:05:11.45 JthKKgNo.net
*Array*Listって中で何使ってると思う?
754:デフォルトの名無しさん
16/10/07 02:42:47.54 SQT7x/O/.net
あれー
755:デフォルトの名無しさん
16/10/07 08:01:12.25 ZgfNPSik.net
URLリンク(docs.oracle.com)
> このクラスは、Java 2プラットフォームv1.2の時点でListインタフェースを実装するように改良された結果、
> Java Collections Frameworkのメンバーとなりました。新しいコレクションの実装とは異なり、Vectorは同期をとります。
> スレッドセーフな実装が必要ない場合は、Vectorの代わりにArrayListを使用することをお薦めします。
つまり……どういうことだってばよ?
756:デフォルトの名無しさん
16/10/07 08:33:18.57 RR6e4vg9.net
スレッドセーフな実装はStringBufferとStringBuilderの関係に似ているね
757:デフォルトの名無しさん
16/10/07 09:19:54.59 NAyeSbqf.net
>>751
翻訳するとおそらく以下のようなことを言っているものと思われます。
中はどうなってるか言ってもどうせお前らアホにはわからないから言わないがinterfaceはとにかくListだ。忘れるなボケ。
スレッドセーフにしたいなら Vector を使え。そうじゃなくていいなら ArrayList だ。わかったかクソ虫ども。
758:デフォルトの名無しさん
16/10/07 12:28:23.51 5FJeiwoZ.net
そして、ArrayListを同期で使用したいなら、Collections.synchronizedList使えってことか。
759:デフォルトの名無しさん
16/10/08 04:25:38.70 MCoYyYao.net
このスレの最初の方って結構重要な事書いてありますね。
760:デフォルトの名無しさん
16/10/08 08:45:08.84 .net
for文、while文の { } に入れてループさせるのではなく、
条件が合った場合(=合わなかった場合)、まるでリセットさせるがごとく最初からまるまるもう一度やり直すことはできるのでしょうか
761:デフォルトの名無しさん
16/10/08 09:14:17.22 OjXU7tHb.net
再帰構造にするとか?
762:デフォルトの名無しさん
16/10/08 09:48:46.83 i5kDCKwM.net
本質的に条件が整うまでループと何が違うのかと
763:デフォルトの名無しさん
16/10/08 10:28:54.32 4paVmbm0.net
continueみたいなキーワードで、そーゆーことができるか?という問いなら
「できません」
764:デフォルトの名無しさん
16/10/08 12:23:10.31 I5GBlv/H.net
>>759
ラベル付きcontinueで出来るでしょ
あまりやらないけど
765:デフォルトの名無しさん
16/10/08 12:23:56.52 I5GBlv/H.net
間違えた
ラベル付きbreakだった
766:デフォルトの名無しさん
16/10/08 12:38:17.30 y0liF3+j.net
これが D になるのはなぜでしょうか?
文字列リテラルが不変なのは分かるのですが、newすれば普通にヒープに作られる参照型ですよね?
String d = new String("D");
String e = new String("E");
String f = new String("F");
String[] str3 = new String[]{d,e,f}; //文字列定数でなく文字列インスタンスへの参照の配列のつもり
String[] str4 = new String[str3.length];
System.arraycopy(str3,0,str4,0,3); //参照をコピー
str3[0] = new String("P");
System.out.println(str4[0]); //実際はDだけど、str4[0]はstr3[0]からコピーされた「文字列インスタンスPへの参照」なのでPであって欲しい。
767:762
16/10/08 12:40:41.84 y0liF3+j.net
すみません間違えました。忘れてください・・・
768:デフォルトの名無しさん
16/10/08 14:57:31.05 vUUOaV1U.net
日本情報技術取引所
口座借り
多重ぐるぐるドナドナ案件
コンピューターレスキュー
角度があがります
769:デフォルトの名無しさん
16/10/08 17:34:37.69 nKRNJJPF.net
>>763
自分のやっていた事の真実に気付いたようだね。
770:755
16/10/08 20:39:45.53 MCoYyYao.net
スッキリわかる=最強だと思ってたのに…。
771:デフォルトの名無しさん
16/10/08 22:38:12.56 cRcu85q4.net
スッキリ最強説は、以下を参照
推薦図書/必読書のためのスレッド 80
スレリンク(tech板:222-236番)
772:デフォルトの名無しさん
16/10/08 23:29:22.24 XNEtFwHJ.net
シングルスレッドでのプログラムで
メンバ変数に値をセットするやり方は間違ってますか?
メソッドのネストが引数として渡して渡して・・・ってやり方が本来は正しいのかもしれませんが…
Javaだとそういう場合もセッタゲッタでのやり方が望ましいんでしたっけ?
773:766
16/10/09 00:56:36.11 CesbDVy8.net
>>767
スッキリ厨って人のレスはアテになりませんからねぇ。
774:デフォルトの名無しさん
16/10/09 02:52:17.93 h5veqgjK.net
>>768
日本語でおk
775:デフォルトの名無しさん
16/10/09 12:36:05.23 yMllKpMI.net
>>768
基本メンバ変数は値を保持しとく必要がある物にとどめたほうがいい、publicな(外部から呼ばれる)メソッド無いで共通して利用するものとか
今回のケースでは引数で渡していくほうがいいと思う
776:デフォルトの名無しさん
16/10/09 13:10:13.87 .net
Math.random で1~99までの乱数を何万回発生させるとなると、実行するたび違う値、順番になりますが、
プログラムをもう一回実行したら毎回同じ数字の順序でちゃんと乱数っぽい数字を発生させる方法はありますか?
自分で乱数をあらかじめ用意しておくという手もありますが、できればコンピューターのほうで用意してもらえればと
実行環境によって結果が違ってくる分には構わないのですが・・・
777:デフォルトの名無しさん
16/10/09 13:32:38.51 okPyT/Vt.net
java.utl.Ramdomで同じseedを使えばよい
778:デフォルトの名無しさん
16/10/09 14:59:12.57 .net
import java.util.Random ;
Random a = new Random( ) ; //普通の乱数
int x = a.nextInt
779:(99)+1 ; Random b = new Random(1) ; //1をシードとして指定 int y1 = b.nextInt(99)+1 ;; int y2 = b.nextInt(99)+1 ; Random c = new Random(1) ; //1をシードとして指定 int z = c.nextInt(99)+1 ; System.out.println( x + ":" + y1 + ":" + y2 + ":" + z ) ; 実行結果 40:16:29:16 95:16:29:16 56:16:29:16 ありがとうございます
780:デフォルトの名無しさん
16/10/09 19:18:21.24 QWyuhQzX.net
一回試した結果をファイルに保存して
それを毎回読み込めば
どの環境でも同じ
781:デフォルトの名無しさん
16/10/10 05:07:03.45 8XCDXeCE.net
初心者がリファレンス見てもいちいち難しい言葉で書いてあって何ができるのか意味不明
ここをどうやって乗り越えればいいんだろう
782:デフォルトの名無しさん
16/10/10 05:12:43.32 QYgl3YHZ.net
>>772
seed同じにすればいいんじゃねえか?
783:デフォルトの名無しさん
16/10/10 05:14:08.33 QYgl3YHZ.net
とっくに答えがサンプルプログラム付きで書いてあるとはorz
784:デフォルトの名無しさん
16/10/10 05:15:43.15 QYgl3YHZ.net
>>776
わからない言葉は全部調べる。
今ではだいたいはググれば出るんだから楽なもんだ。
785:デフォルトの名無しさん
16/10/10 16:51:30.34 d7lWr1RB.net
String str1 = "ab";
String str2 = str1+"c";
System.out.println("abc" == str2);
これがfalseになるのはなぜでしょうか?
1行目 = コンスタントプールに"ab"作成
2行目 = プールに"c"作成して、それを取り出してstr1とあわせてプールに"abc"作成
3行目 = "abc"はstr2としてプールに存在してるので、それと比較して true になるはずだったんですが。
+ した時点で StringBuilderでも呼ばれてstr2はヒープに配置されてるのかとも思ったんですが、
String str2 = "a"+"b"+"c";
System.out.println(str2 == "abc");
だと true になります・・・
786:デフォルトの名無しさん
16/10/10 17:00:37.68 YyG8QWAM.net
>>780
下のtrueのケースはビルド時に最適化されてる
787:デフォルトの名無しさん
16/10/10 17:15:41.68 d7lWr1RB.net
>>781
ありがとうございます。
文字結合時に最適化がされるのであれば、2行目の結合で最適化がされないのはなぜなんでしょうか?
788:デフォルトの名無しさん
16/10/10 17:22:32.42 d7lWr1RB.net
もしかして、
ダブルコーテーションで囲んだリテラルを指定した時はプールから探す。
str1のように、リテラルでない場合は、その文字列を使って new String(str1);してるんでしょうか?
789:デフォルトの名無しさん
16/10/10 18:04:46.45 Nj78fZza.net
内容が同じでも同じオブジェクトを参照しているとは限らないってだけの話だよなあ。
Stringの場合はinyern()使えば==での比較で内容が同じなら同じになるけど、そういうことしないなら同じになることを期待してはいかんよ。
特に最適化によって変わるようなのはあてにしたらダメ。
790:デフォルトの名無しさん
16/10/10 18:05:36.37 Nj78fZza.net
あー。タイプミス。intern()ね。
791:デフォルトの名無しさん
16/10/10 18:29:59.03 57MPv8Sh.net
Javaの仕様で定められてることと、実装によって異なる最適化を一緒にすんなアホ
792:デフォルトの名無しさん
16/10/10 18:34:31.02 TB/+k4cs.net
>>780
javapしてみればわかるけどこうなるよ
String str1 = "ab";
String str2 = new StringBuilder(String.valueOf(str1)).append("c").toString();
System.out.println("abc" == str2);
StringBuilderのtoStringはこうだから参照が異なる
public String toString() {
return new String(this.value, 0, this.count);
}
793:デフォルトの名無しさん
16/10/10 22:00:58.28 6bVjh2uR.net
javaの文字列の比較は、String.equals()を使う
== では、オブジェクトIDの比較になる。
同一オブジェクトかどうか
794:デフォルトの名無しさん
16/10/11 14:32:11.26 2NSr+frL.net
WindowsAPIで作成したサーバーと通信するTCPクライアントを作成しています
WindowsAPIで作成したサーバーとWindowsAPIで作成したクライアント同士の通信では問題無いのですが
基本的には問題無く動作していて
たまにInputStreamのreadの戻り値がdata.lengthになり
欲しいデータの後ろに不必要なデータが入っていたり(ここはヘッダ情報から特定可能なので対処可能です)
欲しいデータの前に不必要なデータが入っている事があるのはどうしてですか?
試しにまったく同じデータを間隔を開けて送信すると問題が再現できる時とできない時があります
InputStream input; = socket.getInputStream();
byte data [] = new byte[1024];
int position = 0;
ループ {
receivesize = input.read(data, position, data.length - position);
// 必要なデータが300でもreceivesizeが1024になる事がある
position += receivesize;
}
最少構成のコードはこんな感じです
分かる人がいたらお願いします
足りない情報があったらすみません補足します
開発環境は Windows Vista
動作環境は Androidです
795:デフォルトの名無しさん
16/10/12 00:49:24.57 lbt4Kn9B.net
質問です
裏画面に書き込みしたいんですけどgetGraphics()でエラーになります
どうすればいいですか?
お願いします!
awtです
Image buf[];
Graphics h;
buf[0]=createImage(640,480);
h=buf[0].getGraphics();
796:デフォルトの名無しさん
16/10/12 01:40:47.34 bPYmxR+A.net
>>789
ループ内で、positionを足すからだろ
>position += receivesize;
常に、0に戻してから始めればいい。
そうしないと上限値、1024を越えてしまうだろ
ループ内で毎回、配列のどの部分に読み込むのか?
>>790
>Image buf[];
>buf[0]=createImage(640,480);
buf[] 配列など使わずに、普通の変数を、使えば?
a = createImage(640,480);
まず、createImage でエラーになっているのかも?
797:デフォルトの名無しさん
16/10/12 01:47:14.01 lbt4Kn9B.net
普通の変数にしましたがやっぱりエラーになります…
798:デフォルトの名無しさん
16/10/12 01:52:21.79 lbt4Kn9B.net
NullPointerExceptionになります…
799:デフォルトの名無しさん
16/10/12 04:02:00.72 bPYmxR+A.net
動かないソースコードに、こだわっても仕方がない。
違うサンプルを探して、ソースコードを比べてみれば?
名前欄に、790と入れて、投稿して
800:デフォルトの名無しさん
16/10/12 04:23:30.45 lbt4Kn9B.net
なぜか分かりませんが、コンストラクタ内の最後に書いたら動きました!
お騒がせしましたm(__)m
801:デフォルトの名無しさん
16/10/12 12:12:40.14 9pPXC/Ld.net
>>791
最少構成にする時に忘れていました
ループ内でヘッダー情報にあるデータサイズ分受け取ったらpositionを0にしています
802:789
16/10/12 18:03:26.07 9pPXC/Ld.net
試しに input.read(data); でやってみても
たまに欲しいデータの前に不必要なデータが入っている事があります(この時はヘッダサイズ未満の受信です)
この時はデータの順序が前後した状態で届きます
例えばABCがそれぞれこうであるとすれば
A ヘッダ(Sizeなどが入っている)
B Size分のデータ
C 0フィル
正常なデータはABの順番に格納されているのに対し
順序が前後する時はCBAの順番に格納されています
受信サイズがヘッダーサイズ未満なのに先にデータが届いています
これはどういう現象ですか?
803:デフォルトの名無しさん
16/10/12 18:12:24.99 9pPXC/Ld.net
長いので分けました
1, WindowsAPIで作成したクライアント
2, javaで作成したクライアント
データの流れとしてはまずクライアントがサーバーへ送信します
→サーバーは受信したデータを整形(先頭に時間をつけたり)して全クライアントへ送信します
→クライアントはサーバーから受信して初めて表示します
サーバーは同じデータを全クライアントへ送信しているのにもかかわらず
1では正常に受信・表示されていても
2ではデータの順番が違っていたりします
804:デフォルトの名無しさん
16/10/12 21:45:30.69 /S1G0fYz.net
>>798
それはUDPなのかそれともTCPなのか?
805:デフォルトの名無しさん
16/10/13 00:45:39.57 aniHJH6t.net
UDPなら、データの順番は、保証されていない
そもそも、サーバーが送ったパケットが、
クライアントに送った順番で届くことが、保証されているのか?
806:デフォルトの名無しさん
16/10/13 08:32:12.03 CM7Dl0hH.net
>>799
socket = new Socket();
socket.connect(new InetSocketAddress(IPAddress, PortNumber), Timeout);
ソケット生成時はこのようにしているのでTCPです
807:デフォルトの名無しさん
16/10/13 09:11:29.49 CM7Dl0hH.net
すみません
サーバーの方もTCPです
808:789
16/10/13 11:32:18.11 CM7Dl0hH.net
原因が特定できました
A データ1(仮に1234567890)
B データ2(仮にABCDEFG)
ヘッダ情報にあるサイズ以上受信した場合
(>>789で言う所の戻り値がdata.lengthになり欲しいデータの後ろに不必要なデータが入っていた部分)
1回目の受信でAの後ろにBの前半も一緒に受信され(1234567890ABC)
2回目の受信でBの後半が受信されていました(DEFG)
お騒がせしました
809:デフォルトの名無しさん
16/10/13 13:59:14.92 eQzvx4KQ.net
あ、ずれただけね。
固定長の電文やりとりではよくあるバグだな。
810:デフォルトの名無しさん
16/10/13 18:07:51.23 CM7Dl0hH.net
SocketChannelについて質問です
ByteBuffer buffer = ByteBuffer.allocate(size);
buffer.clear();
buffer.put(data, 0, size);
buffer.flip(); // A
socketchannel.write(buffer);
このコードが実行される前にsocketchannel.read()は成功していて
受け取ったデータ末尾の文字列が例えばAddDataなら追加して
成功した事を送り返す部分です
dataは既にヘッダや他の情報も整形済みです
Aがあるとwriteで異常終了、Aが無いと何も起きずで困ってます
何が原因かわかる人いたらお願いします
811:デフォルトの名無しさん
16/10/14 01:51:33.85 4bSlGLeL.net
>>803
戻り値が上限値、1024の場合は、バッファに入りきれていない、
データがまだ残っているということだろ?
たぶん説明には、そう書いてあるはず
>>805
flip の説明を読めば?
それと、動く他のサンプルを探す。
動かない、間違ったコードにこだわっても、仕方がない
812:デフォルトの名無しさん
16/10/14 09:44:46.40 DLzZN/YU.net
>>806
WindowsAPIの方では
1回目の受信でデータ1のみ
2回目の受信でデータ2のみ
になっていたのでjavaもそうかと思い込んでいたのが原因です
putでpositionがsizeに移動するので
flipでpositionを0に移動させてpositionからlimitまでをwriteするようにしてるんですよね
813:デフォルトの名無しさん
16/10/14 12:29:13.99 36Uu0S/U.net
>>805
異常終了ってなんだよハゲ
814:デフォルトの名無しさん
16/10/14 12:32:47.95 JHuSi47G.net
HageException
PikapikaError
815:デフォルトの名無しさん
16/10/14 14:50:17.64 wFYcRLmm.net
HageはもうExceptionじゃなくてErrorだよな....ほんと
816:デフォルトの名無しさん
16/10/14 15:33:48.99 7cDJ4MsQ.net
throw new NullHairException("No hair");
817:デフォルトの名無しさん
16/10/14 17:08:16.31 7/LUO9Fb.net
HairNotFoundException
818:デフォルトの名無しさん
16/10/14 17:26:08.95 2skfhgoc.net
だからハゲはExceptionじゃねぇんだよッ!!!
Errorだよッ!!
もう生えて来ないんだよ....致命的なんだよ....
819:デフォルトの名無しさん
16/10/14 18:03:33.21 E9wFZVCw.net
やめなさい
820:デフォルトの名無しさん
16/10/14 20:21:51.87 t+vmOHtU.net
if (! head.isHair()) throw new HageError("無毛");
821:デフォルトの名無しさん
16/10/14 23:59:53.31 SrS85Be2.net
何で継承したクラスのコンストラクタにsuper(引数)ってわざわざ書かないといけないんでしょうか?
822:デフォルトの名無しさん
16/10/15 00:14:09.50 RcuOg7fy.net
>>816
コンストラクタは継承できないので、サブクラスのコンストラクタからスーパークラスのどのコンストラクタを呼び出すか、
明示的に書かないとわからないからです
823:816
16/10/15 02:20:57.51 /YQeGRPm.net
>>817
レスありがとうございます。
どのコンストラクタか分からないからですか?
ただ本には、親クラスで引数ありのコンストラクタを「1つ」でも定義した場合、先の処理をする必要がある、と書いてあるんですが、
1つならデフォルトコンストラクタも無いわけですし、迷うこともないと思うのですが…。
824:デフォルトの名無しさん
16/10/15 02:31:43.62 BKHcV3g3.net
>>818
コンストラクタは継承してないということは、スーパークラスのコンストラクタとサブクラスのコンストラクタはなんの関係もない別物です
ということは、スーパークラスにStringを受けとるコンストラクタをひとつ定義して、サブクラスにはintをひとつ受けとるコンストラクタを定義するっていうことができるわけ
そのとき、スーパークラスのコンストラクタに渡す引数はどうやって決定する?
825:デフォルトの名無しさん
16/10/15 03:07:25.05 /YQeGRPm.net
>>819
理解力乏しくてすいません。
オーバーロードのように、引数を渡す際に、string型ならスーパークラスのコンストラクタ、int型ならサブクラスのコンストラクタが呼び出される、って仕様になってないんですか?
826:デフォルトの名無しさん
16/10/15 04:32:14.24 V7L1rVP7.net
まだオラクル社は正式に発表していないが、Java EEから手を引くのはほぼ間違いない。
JavaのWebアプリは将来性に問題があるから無駄に手を出さない方がいい。
827:デフォルトの名無しさん
16/10/15 05:38:11.62 BNWpAgCM.net
>>820
ない
そもそも親のコンストラクタだけ呼ばれたら子の初期化ができないだろ
828:デフォルトの名無しさん
16/10/15 09:59:11.58 R9FpU0X6.net
キーボードから入力させる場合に、
例外処理を入れてないとコンパイルエラーになるのはどういう意図があってそういう仕様なのでしょうか
829:820
16/10/15 10:40:33.92 /YQeGRPm.net
>>819 >>822
ありがとうございました。もう少し自分でも研究してみます。
830:デフォルトの名無しさん
16/10/15 12:33:41.49 /6kKmyix.net
>>823
検査例外で調べる
831:デフォルトの名無しさん
16/10/15 15:32:52.94 CMu4YX8d.net
たいていの言語では、例外処理を書いていなくてもコンパイルできるけど、
Javaは、他の言語よりも厳しい
I/Oエラーは数十種類あるから、例外処理を書いていないアプリは、どこかで強制終了される
そういうアプリを、コンパイル時のチェックで、実行できないようにしているので、
一々デバッグして、エラーを確かめる必要がない
832:デフォルトの名無しさん
16/10/15 15:50:16.70 YHGzX/8J.net
>>826
例外処理を書くべきクラスを使っているのに書かない初心者プログラマ用としてもチェック例外はある。
833:デフォルトの名無しさん
16/10/15 20:40:11.10 LAQ6gYyi.net
1, TCPクライアント Java (非同期通信 SocketChannelを使用)
2, TCPサーバー WinSock (非同期通信 WSAAsync**を使用)
3, TCPクライアント WinSock (サーバーと同じ)
接続した状態で5分位放置してると何の通知も無しに
Javaで作成したクライアントだけ接続が切れてる(sendでIOException)のはなぜ?
時系列で言うとこんな感じ
サーバーを起動
→クライアント2つをサーバーに接続
→何回か発言するも問題無し
→5分くらい放置 (この間何も操作せず)
→1で発言 sendがIOException
→3で発言 問題無し
→さらに4分くらい経ってからサーバー側がFD_CLOSEの形でWSAECONNABORTEDを受け取る
834:デフォルトの名無しさん
16/10/15 20:59:11.81 LAQ6gYyi.net
sendじゃなくてreadでした (発言した内容が返ってくる)
30秒毎とかこまめに発言していたら10分経っても切断されないって状況です
835:デフォルトの名無しさん
16/10/15 20:59:12.52 VH4cAxzD.net
>>828
> Javaで作成したクライアントだけ接続が切れてる(sendでIOException)のはなぜ?
なぜ?じゃなくてさあ
その IOException のメッセージを自分で読むか
せめてここに貼れよ
836:デフォルトの名無しさん
16/10/15 21:14:31.51 LAQ6gYyi.net
すみません
ECONNRESET (Connection reset by peer)となっていました
837:デフォルトの名無しさん
16/10/15 23:33:41.25 CMu4YX8d.net
タイムアウトかな?
接続が生きているか、5分毎に確かめるのかも
TCPの規格を調べて
838:828
16/10/16 11:38:15.89 eEuHW07G.net
TCPの仕様で切れるならWinSockで作成したクライアントの方も切れるはずなんですが切れないんですよね
2分放置で発言では問題無く
3分放置で発言したら接続が切れています
839:デフォルトの名無しさん
16/10/16 11:50:50.48 aX3VI+23.net
ソース読め
840:デフォルトの名無しさん
16/10/16 12:32:37.07 eEuHW07G.net
データ通信で(PCのグローバルIPアドレスへ)接続した時は問題が発生するのですが
Wi-Fiで(PCのローカルIPアドレスへ)接続した時は問題無かったので
とりあえず1分毎に生存確認のメッセージを送受信してやってみる事にします
841:デフォルトの名無しさん
16/10/16 16:42:38.64 e1qF8gd7.net
経路の途中にルータやらなんやらが挟まっているのが違う。
その辺との兼ね合いでデフォルトのsocketオプションだとうまく行かなくなる何かがあるんじゃない?
842:デフォルトの名無しさん
16/10/21 05:45:17.59 yOgnBDsC.net
WEB+DB vol.94 が出た
特集は、Scala, Groovy の対抗馬となる、JVM上で動く、Android用言語、Kotlin
JS/HTML/CSSで、デスクトップアプリを作る、Electron
Kotlinは静的言語で、Scalaに似ている。
ついでに、Kotlinも勉強すればいい
843:デフォルトの名無しさん
16/10/21 12:53:14.09 tBmxpz4u.net
コトリンはAndroid用言語じゃねえよw
844:デフォルトの名無しさん
16/10/21 13:15:00.94 e1cHOABs.net
すいません、基本的なことですが教えて下さい。
定数ってfinal で 大文字で宣言するのが普通ですよね?
インスタンスフィールドor staticフィールド上で
private final String addr ="www";
や
public static final String num ="1";
のような例を見るのですが、一般的な習わしとしては間違ってるという認識で良いでしょうか?
あと定数がインスタンスメソッドからしかアクセスしない場合はstaticをつけずprivate やprotected public等のアクセス修飾子で
良いですよね?
845:デフォルトの名無しさん
16/10/21 16:34:10.80 tBmxpz4u.net
>>839
定数は大文字で定義するのが慣習っていうのはその通り
で、インスタンスメソッドからしかアクセスしない定数だとしても、インスタンスの数だけ定数を持つのは無駄だからstaticでいいじゃん
846:デフォルトの名無しさん
16/10/21 21:16:08.28 sMm9jGgF.net
その辺はfinal付けとけば勝手に最適化してくれそうな気がするが、気になるならstaticかな。
847:デフォルトの名無しさん
16/10/22 15:03:33.08 cXJJxRYi.net
dbにアクセスする際、
try catch finallyで
finallyでconnectionをクローズして
try句の末尾に return するというやり方は可読性的にどうですか?
848:デフォルトの名無しさん
16/10/22 15:05:58.68 i8375nNB.net
>>842
別に普通
849:デフォルトの名無しさん
16/10/22 16:26:19.71 nuGLd0Th.net
>>842
try with resource でクローズは勝手にしてもらうのが今の書き方
finallyでクローズするのは今はしない
850:デフォルトの名無しさん
16/10/22 18:09:51.83 daytFnn9.net
try {
if (x < 4) Goto Exception
} catch (Exception e) {
}
if文結果で例外に投げたいのですが、どうすればいいでしょうか?
851:デフォルトの名無しさん
16/10/22 18:52:36.46 Y/WKiXhx.net
>>845
try{
if(x < 4) throw new Exception(
852:デフォルトの名無しさん
16/10/22 18:53:43.20 Y/WKiXhx.net
try{
if(x < 4) throw new Exception("例外メッセージ");
}catch(Exception e){
}
853:デフォルトの名無しさん
16/10/22 20:22:37.77 daytFnn9.net
>>847
ありがとうございます.
854:デフォルトの名無しさん
16/10/26 00:50:27.08 PCuofn8Y.net
個人的な事ではありますが、ついにJavaの本三冊目(正確には三種類目)に突入しますた。
855:デフォルトの名無しさん
16/10/26 16:52:34.11 AyEmyE7Q.net
日記スレじゃないんだわ
856:849
16/10/26 17:35:43.66 PCuofn8Y.net
すいません、目的外利用してました。
857:デフォルトの名無しさん
16/10/26 21:48:30.73 KK2a1M8e.net
throw new IllegalPostException();
858:デフォルトの名無しさん
16/10/27 19:25:16.09 dM08lZSa.net
プログラムを複数のパッケージに分けるとコンパイルが複雑になるんですか?
859:デフォルトの名無しさん
16/10/28 00:51:27.57 pg93hTIV.net
>>853
やってみればいいんじゃないの?
860:デフォルトの名無しさん
16/10/28 06:20:08.37 ZSEeTNr3.net
ジェネリクスなんですが、
List<? super A> list = new ArrayList<A>();
のようにsuperで型宣言した場合、
list.get(); した時に全部Object型になります。
? の部分にどんな型が来ても互換性が取れるようにってことだと思うんですが、
それなら極力 super なんて使わずに、
List<A> list = new ArrayList<A>();
にするほうがいいと思うんですが、ジェネリクスでの<? super *>の活用しどころってどういうケースでしょうか?
861:デフォルトの名無しさん
16/10/28 06:43:40.93 l/3+OTVv.net
なんでextendsでなくsuper…
862:デフォルトの名無しさん
16/10/28 12:17:18.19 0c0ESAbt.net
>>855
出力のみに使う型はextends
入力のみに使う型はsuper
入出力両方で使う型には変性を付けない
863:デフォルトの名無しさん
16/10/28 14:29:30.59 dom53pU3.net
utilクラスはすべてstaticでもいいでしょうか?
例えばDBにアクセスするutilなどです。
864:853
16/10/28 16:02:47.03 wDKSwFbg.net
>>854
ネット環境が無いんです。
865:デフォルトの名無しさん
16/10/28 16:21:15.04 GNbMn5al.net
ネット環境がないとネットの掲示板に書き込んでる矛盾
866:859
16/10/28 18:22:32.29 wDKSwFbg.net
>>860
ガラプーって表示されてないですかね?
パソコンがオフラインです。携帯から書き込んでます。ガラケーです。
867:デフォルトの名無しさん
16/10/28 21:40:52.11 EqqPNtKi.net
プログラミング初心者でやさしいjavaとネットの講座で独学でやっているのですが、java se8 silverを受けてみようと思うのですが、
黒本は初心者ならbronzeからやったほうがいいのでしょうか?
868:デフォルトの名無しさん
16/10/29 02:44:29.93 4FyVr6lP.net
diしたいのですが
@resouceでインジェクトされないんです。どうしてですか?
869:デフォルトの名無しさん
16/10/29 03:51:39.00 qP5vgiL/.net
>>862
実際のSilverの問題は、わざとか難しい部分を繰り返し聞いてくるので簡単ではありませんよ。
Bronzeから受けてください。
国家試験と違って出題範囲をまんべんなく聞いてくる試験ではないのと、試験が短いのでSilverはあせります。
870:デフォルトの名無しさん
16/10/29 04:39:13.23 29FSllRn.net
個人的にはブロンズのほうが時間がなくて怖かった(たしか65分で60問?)
ブロンズを71点でギリギリ取って3日後にシルバー97点だった。
871:デフォルトの名無しさん
16/10/29 09:40:34.45 JrxI+Gxs.net
>>865
変態か、簡単な問題セットに当たったんだろうな。
872:デフォルトの名無しさん
16/10/29 17:56:15.23 ePGlEX2J.net
>>859
話の繋がりがわからない。
なんでプログラムを複数のパッケージに分ける話からネット環境の話に飛ぶ?
パッケージに分けるのにネット関係なかろう。
873:859
16/10/29 20:30:31.50 TXDQcz+f.net
>>867
上で、実際にやってみたら、と提案されたので、ネット環境が無いのでそれは出来ないんです、と伝えたわけです…。
874:デフォルトの名無しさん
16/10/29 21:25:41.35 tec52ry+.net
Javaを勉強し始めて2ヶ月ほどの初心者です
気になることがあったので質問させていただきます
参考書には親クラスの型を使って子クラスのインスタンスを参照する参照変数を宣言できると
書いてあったのですが、それをするメリットって何なんでしょう?
例えばHumanクラスを親とするChildクラスがあるとして、
Child child = new Child();
ではなく
Human human = new Child();
とするメリットです
文法上そういうことができるのは理解しましたが、それをすることが何に役立つのかがわからなくて…
まだ自分はそこを気にかけれるレベルではないのだと思いますが、回答いただけるとありがたいです
875:デフォルトの名無しさん
16/10/29 21:33:58.43 Xtl4N18Y.net
2ヶ月もかけてポリモーフィズムにも届いてないんか
サンデープログラミング?
876:デフォルトの名無しさん
16/10/29 21:38:47.67 tec52ry+.net
>>870
仕事終わって帰宅してからと休日に細々と勉強してます
元々頭の出来も良くなかったので面白い反面パンクしそうです
877:デフォルトの名無しさん
16/10/29 22:07:22.05 P6pOx9h1.net
>>869
抽象化を上げることができて嬉しい
ボンヤリさせとくメリットってのがあるじゃん?
細かいとこまで興味がないっつうか
細かいとこまで感心持ちたくないっつうか
抽象化を一番下げた状態が
Child child = new Child();
の形だよね
interface I {}
class A implements I {}
class B extends A {}
class C extends B {}
class D extends C {}
のとき、
C c = new C();より
B b = new C();より
A a = new C();より
I i = new C();のほうが抽象化されてるよね
こうやって、好きなだけ抽象度を上げていくことができる
そしてこれの何がうれしいのか、については自分で考えてほしいw
878:デフォルトの名無しさん
16/10/29 22:09:15.81 P6pOx9h1.net
一行目修正:
抽象度を上げることができて嬉しい
これ削除:
class D extends C {}
879:デフォルトの名無しさん
16/10/29 22:31:47.93 i+DlxK4w.net
関数の引数とかクラスのメンバしたときに意味がある
ローカル変数を抽象化するメリットはあんまりないぞ
880:デフォルトの名無しさん
16/10/29 22:33:50.82 i+DlxK4w.net
>自分で考えてほしいw
自分もわからんっていうならともかく
長々と説教たれてしまいにこんな答えが返ってきたら
もう二度と聞きにいきたくない…
881:デフォルトの名無しさん
16/10/29 22:48:42.45 tec52ry+.net
>>872
ありがとうございます
とりあえず今の自分の知識だと理解できないレベルの話だということはわかりました
一旦脇に置いて別の部分を進めていくことにします
>>874
ありがとうございます
応用が出来るようになればメリットが出てくるのですね、スッキリしました
使いこなせるように精進します
いえ、分不相応な質問だったことがわかっただけでも収穫でした
また何かあったら質問させていただきます
882:デフォルトの名無しさん
16/10/30 00:12:25.83 ekX97W9d.net
>>869
例えば、配列作りたいとき、
Human[]にしとけば、
ChildもHumanも、他の何かしらのHumanの子クラスも入れとけるじゃん。
実際の処理はChildやら他の子クラス側に書けば、子クラスの追加とか削除とか修正だけで、他の部分に影響を与える事なく機能追加や修正できるっしょ。
同じ道理で、new Childするのをやめて、
static Human createInstance(なんやらかんやら)
と、HumanとかHumanFactortなんかに子クラス作って返すメソッド書けば、どのインスタンスが妥当かも考え無くて済むじゃん。
って事。
883:デフォルトの名無しさん
16/10/30 00:20:54.82 3d0adPIb.net
その理屈だと全部Object[]にしとけで終わってしまう
なんていうかな、あの手の本はほんとにロクなことを教えないよね
884:デフォルトの名無しさん
16/10/30 00:54:27.06 rQxX2zI2.net
まず「スッキリわかる Java入門 第2版、2014」を読んで、オブジェクト指向をきっちりと勉強する
継承は、ゲームで使う。
例えば、怪物クラスの子クラスに、毒マタンゴ・ゾンビドラゴンがある時
怪物配列に、毒マタンゴA・B、ゾンビドラゴンA を入れる
for (怪物 monster: 怪物配列){
怪物.攻撃
}
こういうように、個々の種別ではなく、抽象化して怪物として扱った方が、
簡単に書けるし、また仕様変更にも強い
例えば、骸骨剣士A を追加しても、ソースコードを変更する必要がない。
DB内の怪物マスタを、修正すればよいだけ
つまり、オブジェクト指向を使うと、型による分岐が無くなり、ソースコードの変更に強くなる。
もしソースコード内に、型による分岐があれば、抽象化してそれを消すべき
885:デフォルトの名無しさん
16/10/30 01:07:46.99 t4ilsIoO.net
先輩の険悪な人間関係を取り持ち
別のところから答えも引き出す
新人にしては恐ろしい子…
886:868
16/10/30 02:58:58.22 tifMCILv.net
そして出来たら>>868にも触れてやって下さい。
887:デフォルトの名無しさん
16/10/30 09:27:55.22 uCf20103.net
>>881
アロハー
オフラインでも試せるんじゃ?
888:デフォルトの名無しさん
16/10/30 14:41:04.36 7WMxM/JH.net
抽象クラスのインスタンスは作れないって思ってたんですが、明示的に作る事が出来ないだけで、実際は作られてるんすか?
こうやって抽象クラスのサブクラスをインスタンス化した時、"AbClass"は出力されます。
public class Main extends AbClass{
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
new Main();
}
}
abstract class AbClass{
public AbClass(){
System.out.println("AbClass");
}
}
javapしてみても、
abstract class main.AbClass
minor version: 0
major version: 52
flags: ACC_SUPER, ACC_ABSTRACT
っていう、ACC_ABSTRACTフラグがついてます。
889:デフォルトの名無しさん
16/10/30 15:35:58.53 fTcBbX+E.net
>>883
その AbClass ってメソッドに一つも abstract がないよな。
だから Main クラスに継承した段階で全てのメソッドが定義された(元からそうだけど、これで完全にabstractクラスではなくなる)ということだと思うが。
890:デフォルトの名無しさん
16/10/30 15:37:31.85 fTcBbX+E.net
>>868
なんで実際にやるのにネット環境が必要なんだよ。
複数のパッケージに分けるだけならネットに繋がってなくてもできる、てかネット関係ないだろう。
891:デフォルトの名無しさん
16/10/30 15:48:29.79 zpgPT2nV.net
>>885
だったら回線切ってやってみろや
結果を書け、それで解決するだろ
892:デフォルトの名無しさん
16/10/30 15:49:41.97 zpgPT2nV.net
ネット関係ないと言い切った御仁がおられるのでやってもらいましょう
いったい何の作業をするのか見ものですね
893:デフォルトの名無しさん
16/10/30 16:13:14.82 asmRMmwq.net
>>885
887が言っている複数の「パッケージに分ける」というフレーズは
我々の知っている作業とは違う作業を指していると思われる
そうでないとここまで自信満々な理由が分からん
俺だったら1週間はこのスレ開かないわ
894:デフォルトの名無しさん
16/10/30 16:13:21.76 qgjs7ee5.net
やばい、第五章で頭こんがらがってきた…
895:881(868)
16/10/30 18:37:40.53 tifMCILv.net
>>882 >>885
ネットに繋がってないのでJDKやエクリプスをダウンロード出来ないんです…。
896:デフォルトの名無しさん
16/10/30 19:53:13.17 uaaD1pSq.net
実行できもしないのになぜJavaスレにいる…
それならパッケージを分ける分けないなんて気にする必要ないだろ
教えたところで実行できないんだから
学校や職場に行けば実行環境があるってんなら、そこで試せ
897:デフォルトの名無しさん
16/10/30 19:59:47.72 zpgPT2nV.net
>>891
偉そうなくせに大したこといってなくて草
�
898:墲ゥらないなら黙ってろよ雑魚
899:デフォルトの名無しさん
16/10/30 20:00:27.65 zpgPT2nV.net
>>890
俺は応援してるぞ、ここに巣くうサルレベルの知能の雑魚どもに負けるな
900:デフォルトの名無しさん
16/10/30 20:15:47.63 OuHrL0RN.net
>>891みたいなの一番いらんよなw
901:デフォルトの名無しさん
16/10/30 20:50:51.91 asmRMmwq.net
応援するだけで答えませんけどね:)
902:デフォルトの名無しさん
16/10/30 20:53:31.00 zpgPT2nV.net
>>895
はい雑魚2匹目
903:デフォルトの名無しさん
16/10/30 20:54:11.88 zpgPT2nV.net
俺が餌になる、頑張れ
904:デフォルトの名無しさん
16/10/30 20:59:43.05 Z+Cepnas.net
>>886
複数のパッケージに分けるだけなら簡単だろうがよ。
先頭に packge とパッケージ名入れるだけ。使う側はそのまま指定するか import するだけ。
てか、なんでネット必要なんだ?お前は何を想像しながら「複数のパッケージに分ける」と言っている?
905:デフォルトの名無しさん
16/10/30 21:06:46.67 zpgPT2nV.net
>>898
簡単ならさっさとやれよ、結果をレポートしろ
簡単なんだろできるよな
906:デフォルトの名無しさん
16/10/30 21:07:32.67 Z+Cepnas.net
>>890
あ、JDKのダウンロードができないって話か。
どこかダウンロードできる環境でダウンロードしてUSBメモリにでも入れて持ち帰れば?
まあでもネット環境は何とかして用意した方がいいと思うよ。
携帯をテザリングもできるスマホに変えて無線LAN接続とか、回線増やさずにネットに繋げる方法もあるよ。
契約内容に気を付けないと高くなるかも知れないけど。(あとPCに無線LANないとダメだな。有線でテザリングできるならなんとかなるかも知れないけど)
907:デフォルトの名無しさん
16/10/30 21:09:05.12 zpgPT2nV.net
>>900
お前が自分でやれば済む話だろうが、横着すんな
908:デフォルトの名無しさん
16/10/30 21:10:03.72 Z+Cepnas.net
>>899
あたりまえだろ。おまえバカか?てか大丈夫か?
909:デフォルトの名無しさん
16/10/30 21:11:20.23 Z+Cepnas.net
>>901
お大事に。
910:デフォルトの名無しさん
16/10/30 21:14:51.93 zpgPT2nV.net
なんだ結局できないのか
911:デフォルトの名無しさん
16/10/30 21:25:06.45 +8NL+Ds1.net
>>891
912:デフォルトの名無しさん
16/10/30 21:28:24.47 +8NL+Ds1.net
あ、途中で押しちゃった
913:デフォルトの名無しさん
16/10/30 22:04:29.62 asmRMmwq.net
なんか怒りを買ってしまったみたいですね
草
914:890
16/10/31 00:47:32.32 G6HLyhYb.net
アドバイスをして頂いた方ありがとうございました。
ネットが繋がるまで本(スッキリJava)で独習しています。
前述のパッケージの分割コンパイルの項目が読んでて理解できなかったので質問させて貰いました。
915:デフォルトの名無しさん
16/10/31 02:15:35.73 sJgNRili.net
MVCのWebアプリについて教えて下さい。
リクエスト毎にインスタンスを生成するControllerクラスがあります。
ControllerクラスにServiceクラスをインスタンス変数として、DIコンテナでインジェクトします。
この際に、DIのライフサイクルをシングルトンにします。
1回目のリクエストのControllerクラスでは indexメソッド内でserviceのメソッドがメソッド内で呼ばれるとします。
2回目にリクエストでもController.indexメソッドが呼ばれます。
この時、serviceクラスはnullでしょうか?
それとも1回目のControllerクラスでDIしたインスタンスが2回目も使われるのでしょうか?
916:908
16/10/31 02:18:51.56 G6HLyhYb.net
何か俺が争いの火種になってしまっているのかな?
そうだとしたら不快な思いをした方すいません。
持っているパソコンのOSがXPなんでネットに繋げないんです。新しいOSを入れる容量も無いんで新しく買おうと思っています。
917:デフォルトの名無しさん
16/10/31 07:34:49.69 sEDt+ZDb.net
>>909
同じインスタンスがDIされる
918:デフォルトの名無しさん
16/10/31 08:38:04.45 r/gQTNbf.net
>>910
恒例の「外野が勝手に騒いでるだけ」だから気にしなくていいよ
919:デフォルトの名無しさん
16/10/31 08:52:18.47 X5kXOLud.net
せやな
920:デフォルトの名無しさん
16/10/31 10:01:24.16 3MWuUQcB.net
>>910
Linux 入れればいいのでは?
Ubuntu とか本屋でDVD付きで売ってたりするからインストール自体はネットなしでもできる。
921:909
16/10/31 12:01:32.93 sJgNRili.net
>>911
ありがとうございます。もう1つ質問させてください。
ではServletとDIコンテナを併用して使う場合のケースです。
サーブレットクラスのインスタンス変数にserviceクラスを持つとします。
通常だとServletはシングルトンなのでクラスのインスタンス変数はスレッドセーフではないですが、
DIコンテナの設定をリクエスト毎にした場合は、
1回目、2回目、3回目・・・と
アクセスされるたび、serviceにインスタンスがDIされますか?
それとも呼び出し元のクラスが新たにインスタンス生成されないので同じインスタンスが共有されますか?
922:デフォルトの名無しさん
16/10/31 20:08:38.55 RYpBavAY.net
int resurt
assertThat(resurt, is(not(0));
resurtの値には0以上の値がランダムに代入される時、0以外をtrueで返す式は上記であってますか?
923:デフォルトの名無しさん
16/10/31 20:53:46.43 p7TPitCz.net
>>915
よくわかんねーけど、どのインスタンスがDIされるかなんて制御できないよ。
根本から理解が間違ってる
924:デフォルトの名無しさん
16/10/31 21:34:08.02 sJgNRili.net
>>917
どういうことですか?
925:910
16/11/01 00:50:00.31 68tlbbHF.net
>>912 >>914
ありがとうございます。
Linuxは大学の時にやって苦戦したので、Windowsでいきたいんです…。
926:デフォルトの名無しさん
16/11/01 00:56:10.41 FUOnuiX2.net
ネカフェでインストーラだけダウンロードすればいいんでないの?
927:919
16/11/01 01:41:24.27 68tlbbHF.net
>>920
地方在住なので近くにネカフェ無いです。
まあもうじき新しいパソコン買うので…。
928:919
16/11/01 01:41:53.51 68tlbbHF.net
>>920
地方在住なので近くにネカフェ無いです。
まあもうじき新しいパソコン買うので…。
929:デフォルトの名無しさん
16/11/01 01:43:14.40 68tlbbHF.net
連続書き込み失礼しました。
930:デフォルトの名無しさん
16/11/01 02:50:43.94 lWEkG1Wt.net
>>916
合っている。実行して確かめろ
それに、resurtは、result だろ
931:デフォルトの名無しさん
16/11/01 07:21:55.41 YKGFAfzS.net
>>918
そもそも、どういう事がしたくてそうしてるの?
あと、そこまでいくとDIコンテナにもよるでしょ。
932:デフォルトの名無しさん
16/11/01 09:11:02.25 8QttcA43.net
>>919
一応インストールしなくてもCDかDVDでブートして動くようなのあるけどね。インストーラでそういう起動させるかどうか選べる(確かUbuntuもそういう風になってた)。
なので、Windows用の何かをダウンロードしたいだけだとしてもそうやって起動後にUSBメモリ挿してそこにダウンロードするという方法がある。
するとLinuxインストールせずに使えてネカフェに行く必要もなくなる。
まあ、XPでもセキュリティリスク無視するならそのままできるだろうけどね。(Oracleとか、特定のサイトにしか行かないなら多分大丈夫だとは思うが)
933:919
16/11/02 00:33:40.21 T1qBuIQL.net
>>926
忙しくてレスが遅くなってしまいすいません。
丁寧にありがとうございました。
技術評論社とかの本はCD-ROMが付いてますね。
俺が買った本はダウンロードを推奨するものでした。
934:デフォルトの名無しさん
16/11/02 08:12:21.70 JaTBDkBi.net
今日日こんな質問があるとはな
935:デフォルトの名無しさん
16/11/02 16:46:07.89 KtthnrOq.net
Windows2000全盛期の質問だよね。
936:デフォルトの名無しさん
16/11/02 18:02:47.63 WL73ssGd.net
超貧困JKって奴だろ
937:デフォルトの名無しさん
16/11/02 19:04:14.21 6QvosKf/.net
キーボードだけ買ってタイピング練習ってか?
938:デフォルトの名無しさん
16/11/02 22:16:59.49 QrC60bZw.net
俺のキーボード。
URLリンク(i.imgur.com)
なんとこれだけで計算もできる。
939:デフォルトの名無しさん
16/11/03 01:58:29.25 8VAyqA8t.net
ObjectクラスのhashCode()ですが、どういう判定方法をしているのでしょうか?
equals()でfalseとなるインスタンス同士(パラメータは一緒でインスタンスが違う)でも、同じ値が返ってきます。
940:デフォルトの名無しさん
16/11/03 02:52:13.45 9qfKx4O0.net
>>933
ObjectクラスのhashCode()はメモリのアドレスだよ
> equals()でfalseとなるインスタンス同士(パラメータは一緒でインスタンスが違う)
これはObjectクラスではないのじゃないかな
パラメータからハッシュ値を計算するようにオーバライドしてるんでしょ
941:デフォルトの名無しさん
16/11/03 03:23:17.42 0y7uoQTe.net
ジャパニーズオールドアナログコンピューターキーボード
942:デフォルトの名無しさん
16/11/03 03:54:34.50 QFrf3CuS.net
mainクラスをコンパイルすると全パッケージコンパイルに成功して実行できるのに
個別にコンパイルするとサブパッケージが因数の受け渡しで別クラスを認識できずシンボルを見つけられませんエラーが出るのは何が考えられるでしょうか
構成は
main→パッケージ→a
└→b
でmainがabの内容を表示しbが再びaの内容を表示するものです
bを個別にコンパイルするとaのメソッドを参照できず、指定したクラス名を変数名と勘違いしてる感じです
943:デフォルトの名無しさん
16/11/03 05:16:28.40 TDi/4+oI.net
bファイル内で、import a
と、していないから
mainファイル内では、
import a
import b
の順番で読み込まれているから、bファイル内で、aのクラスを使えていたとか?
まあ、import宣言する順番に、依存しないかも知れないけど。
漏れは、知らない
944:デフォルトの名無しさん
16/11/03 14:20:39.76 QFrf3CuS.net
>>936
ですが解決したかもしれないです
環境変数をHPを参考にしてPATHと設定したのですがCLASSPATHとすべきだったのかもしれないと
環境変数の違いなんて全くわからないけど試してみます
945:デフォルトの名無しさん
16/11/03 20:13:39.41 QFrf3CuS.net
駄目だどうしても別のプログラムにしても別パッケージを参照しようとするとをパッケージ~は存在しませんもう泣けるつらい
946:デフォルトの名無しさん
16/11/03 21:21:18.02 QFrf3CuS.net
どなたか助けてください、すいません…
スッキリの例題出申し訳ないですがこのプログラムに限らずパッケージをまたごうとするとパッケージやクラスが発見できないエラーが出ます
CLASSPATHを WORK や Calc や calcapp.main に設定しても駄目
PATHは設定してjavaもjavacも通ります
URLリンク(i.imgur.com)
947:デフォルトの名無しさん
16/11/03 22:08:01.44 CtrzsuW8.net
例題にはnotepad.exeとコマンドプロンプトを使えって書いてあるのか?
書いてあるなら、そこまでに説明されていることの何かが欠けてるんだろうよ
書いてないなら、書いてある方法で問題は解けよ
948:デフォルトの名無しさん
16/11/03 22:08:26.76 kVn2ZEfC.net
質問させてください。
これまでC言語を学んで趣味としてプログラミングをやっていましたが、
ひょんなことからJAVA Black bookを入手することになり、いい機会なので新しい風を入れるつもりで
この本でJAVAを学びはじめました。
しかしながら、この本が2000年9月出版で、もしかしたら今と大きく変わった部分があるのではと
心配しています。
そのあたり、ご存知の方にご教示いただけたら幸いです。
949:デフォルトの名無しさん
16/11/03 22:17:14.22 CtrzsuW8.net
1.3時代の本か
少なくとも1.6以降じゃないと、予約語を覚える以外の役には立たない
950:デフォルトの名無しさん
16/11/03 22:21:30.80 QFrf3CuS.net
>>941
メモ帳とコマンドプロントを使うって書いてたんでそれが一般的かと思ってたんですが違うんですか?
どっちにしてもこれが通らないのが納得行かないですが
951:デフォルトの名無しさん
16/11/03 22:36:56.93 g7gHuu9b.net
>>940
URLリンク(docs.oracle.com)
CalcLogicを先にコンパイルして、クラスパスにCalclogic.classファイルの場所を設定するか、
いっこ上のフォルダに上がって、クラスを2つ同時に指定するかで行けんか
952:デフォルトの名無しさん
16/11/03 22:37:38.25 g7gHuu9b.net
あと、PATHとCLASSPATH混同しとるな
953:デフォルトの名無しさん
16/11/03 22:47:12.50 kVn2ZEfC.net
>>943
あちゃ~そんなに変わってますか
JAVAがC言語学習者にとって学びやすい言語であることは今の本のさわりでわかったので、
改めて別の本を買ってみることにします。
954:947
16/11/03 22:47:37.54 kVn2ZEfC.net
ありがとうございました。
955:デフォルトの名無しさん
16/11/03 23:32:50.63 QFrf3CuS.net
>>945
PATHはjavaの定義のため、CLASSPATHはクラス指定のためと分かったんですが一つ目の方法では駄目でした
二つ目のクラスを二つ同時に指定するというのが分からないのですが試しにcalcapp.mainとcalcapp.logicsにクラスパスを設定してCalcディレクトリでjavac Calc.java
→Calcファイルが見つからない
calcapp.mainディレクトリでjavac Calc.java
calcapp.logicsが存在しない
複雑な構成のプログラムではないし、何らかの設定でつまづいてる気がするんですが暗中模索がこんなにしんどいとはと実感してます
956:デフォルトの名無しさん
16/11/03 23:37:47.60 x/s1yBiE.net
パッケージとディレクトリの対応は「calcapp.main」という名前よディレクトリじゃなく「clacapp¥main」だぞ
calcappディレクトリの下にmainディレクトリ作らないと
957:デフォルトの名無しさん
16/11/03 23:39:47.53 x/s1yBiE.net
calcapp¥mainとcalcapp¥logicsの二つのディレクトリを作れば解決するはず
958:デフォルトの名無しさん
16/11/03 23:58:11.81 g7gHuu9b.net
あw
959:デフォルトの名無しさん
16/11/04 00:10:29.41 9L4bsxNE.net
皆さんにアドバイス頂いていろいろやるも通らず…
その外こんなのも駄目で
javaのバージョンが良くないのか自分を疑うべきなのか
URLリンク(i.imgur.com)
960:デフォルトの名無しさん
16/11/04 00:12:46.15 tO492IJ7.net
と思ったけど
おい普通にいけたぞ
xxx\Calc> C:\Program Files\Java\jdk1.8.0_92\bin\javac" calcapp.main\Calc.java calcapp.logics\CalcLogics.java
961:デフォルトの名無しさん
16/11/04 02:46:44.66 A/+Iym3t.net
スッキリJavaの「複数クラスを用いた開発」の章の最後に書いてある。
クラスローダーの動作原則
パッケージ階層と全く同じ、ディレクトリ階層を作って、そこにクラスファイルを置く
こういう環境構築が難しいから皆、paiza.IO, codepad などで、ブラウザから実行する
962:デフォルトの名無しさん
16/11/04 08:55:17.07 hTUXm8GA.net
>>953
ディレクトリ構成を見せてくれ
963:デフォルトの名無しさん
16/11/04 12:13:16.04 0ltYjQIh.net
>>949
CLASSPATH には calcapp.main や calcapp.logics そのものではなく
それらの上のディレクトリを指定するんだぞ。
そしてコンパイルも実行も calcapp.main や calcapp.logics に
降りてはダメなのもわかってるのか?>>954 みたいにするんだぞ。
964:デフォルトの名無しさん
16/11/04 20:13:25.77 9L4bsxNE.net
>>954
わざわざ試していただいてありがとうございます!
>>953
については成功しました
WOKS¥Main2¥hontai¥Main2.java
WOKS¥Main2¥comment¥Zenhan.java/Kouhan.java
という構成でMain2をCLASSPATHでMain2.javaをjavacして成功
JVMの性質を考えると納得できます
しかし同じ構成のCalc
WOKS¥Calc¥calcapp.main¥Calc.java
WOKS¥Calc¥calcapp.logics¥CalcLogic.java
でCalcをCLASSPATHにしてCalc.javaをjavacしても何故かcalcapp.logicsは存在しませんといった状況です
正直練習問題の初めて作ったMain2がうまく動作しなくて確実に動くだろうCalcを動作確認のため作ったらMain2の方だけ実行できて本末転倒状態です
965:デフォルトの名無しさん
16/11/04 20:31:51.14 4SeM2Q5g.net
>>958
.(ドット)はパッケージの区切りを示すものなので、
WOKS\Calc\calcapp\main\Calc.java
WOKS\Calc\calcapp\logics\CalcLogic.java
こうやって
calcappの下にmainとlogicsの階層を作らないといけないよ
966:デフォルトの名無しさん
16/11/05 01:48:38.64 0FZEaghz.net
>>955
に書いてあるページを、読んでからやれ。
ここに書いてある通りにやれ
本を読まずに、やるな
967:デフォルトの名無しさん
16/11/05 04:53:30.02 edcXpxnV.net
>>958
いいか。まず Calc ディレクトリの下に calcapp っていうディレクトリを作れ。
それから calcapp の下に main と logics っていうディレクトリを作れ。
その main の下に Calc.java を置け。logics の下には CalcLogic.java を置け。
で、コマンドプロンプトでカレントディレクトリを Calc ディレクトリに移動した後で、こうする。
javac calcapp\main\Calc.java calcapp\logics\CalcLogic.java
するとそれぞれのソースと同じディレクトリにクラスファイルが作られる。
この時の環境変数 CLASSPATH は Calc ディレクトリになっていてもいいが、なってなくてもいい。
というのは javac ではカレントディレクトリは自動で CLASSPATH に含まれるからだ。
で、実行はそのまま Calc ディレクトリでこうする。
java calcapp.main.Calc
この時もし CLASSPATH に何かがセットされていてそれがカレントディレクトリを含まない
場合はエラーになる。かといって CLASSPATH を一々セットし直すのは面倒だ。
という場合はこうする。
java -cp . calcapp.main.Calc
この -cp で指定している . (ドット) はカレントディレクトリだ。これで CLASSPATH に
カレントディレクトリを指定した上で実行したことになる。またドットの代わりにカレント
ディレクトリの絶対パスを指定しても同じになる。更にそのように絶対パスで指定
するならカレントディレクトリをどこに移動しても実行できる。
968:デフォルトの名無しさん
16/11/05 13:27:53.71 mhverHUI.net
>>961
>>959
>>957
まさに試そうとしたところで丁寧に教えていただきありがとうございます!
実は
>>950
のコメントを頂いたときに似たようなことを試したんですがうまく行かなくて
これこらもう一度試すんですが、calcapp.mainやcalcapp.logicsみたいに"."が入るパッケージ名自体は不正じゃないんですか?
パッケージ名を修正しなかったから失敗したのかと思ったんですが
969:デフォルトの名無しさん
16/11/05 13:32:23.18 0pOl8O7N.net
>>962
パッケージ名が aaa.bbb.ccc だとしたら
ディレクトリー構造が aaa\bbb\ccc になる
パッケージ名のドットを\に置き換えたのがpath
970:デフォルトの名無しさん
16/11/05 15:17:41.43 edcXpxnV.net
おまけ情報
java コマンドで実行するクラスを指定する時は区切りのドットに代わりに / で書くこともできる。
しかし \ はできない。つまり java calcapp.main.Calc で実行できるなら java calcapp/main/Calc でも実行できる。
しかし java calcapp\main\Calc はできない。
これはおそらくSunがJavaを作っていた当初は UNIX (Solaris) 使っていたことの名残だと思う。
(UNIXではディレクトリの区切り文字は / を使う)。
971:デフォルトの名無しさん
16/11/05 15:29:17.38 mhverHUI.net
>>961
>>963
通りました!本当にありがとうございます!
一つだけ疑問が残ってるんですが、Main2プログラムの方はMain2だけを指定、
つまりMain2をCLASSPATHでMain2.javaだけでjavacする事が出来たのに対してCalcの方は
>>961
にあるように javac calcapp\main\Calc.java calcapp\logics\CalcLogic.java
と二つのクラスを指定してjavacしないと通らないのには何か明示的な理由があるんでしょうか?
極端な話プログラムによっては大量のクラスをコンパイル時に指定する必要があるのかという疑問が浮かびます
972:デフォルトの名無しさん
16/11/05 15:56:23.66 yMN3xLAC.net
標準出力へのアンバッファな出力ってどうやればよいですか?
973:965
16/11/05 16:00:02.68 yMN3xLAC.net
自分が考え付くのは、BufferedReaderをバッファサイズ=1でnewする
程度です。
974:デフォルトの名無しさん
16/11/05 17:16:29.78 anO0HCtb.net
>>965
依存してるからだよ。Calcクラス内からCalcLogicを使っているからコンパイラはCalc.javaコンパイル時にCalcLogicクラスのことがわからないとダメだ。
つまり先にCalcLogicがコンパイルされてクラスファイルになっている必要がある。
で、依存関係のあるクラスをCLASSPATHを起点とするディレクトリ以下でコンパイルする時に全て指定した場合はコンパイル順序は自動で考慮してコンパイルしてくれるってこと。
もし依存がないならひとつづつ順序考慮せずにコンパイルすることも可能だ。
ただ場合によっては大量のソースを一度にコンパイルする必要があるわけだが、その場合はコマンドラインに書ききれないならテキストファイルにスペースまたは改行区切りでファイル名を並べて書いておいて javc の引数で @ 付けてそのファイルを指定するという方法が使える。
これはWindows用javcだけの機能かも知れない。昔からDOS用コマンド等でやられてきた方法だ。DOSは引数の文字列制限がとても小さかったからね。
UNIX系OSではそんなこと考えずシェルスクリプトに引数並べちゃえばいいんだけどね(見辛い場合は行末に \ 入れて次の行と繋がってる事にする)。
975:デフォルトの名無しさん
16/11/05 17:20:04.72 anO0HCtb.net
ああ。でもその辺はこの頃は eclipse 使ったりすれば自動で考慮して無駄なくコンパイルしてくれるからあまり考える必要ないと思う。
976:デフォルトの名無しさん
16/11/05 17:23:33.18 Vdk40yXv.net
>>966
バッファせずに出力したいなら
Writer out = new OutputStreamWriter(System.out);
でいいのではと思ったら、そもそもそういう話ではなく、毎回flushを呼ぶ必要がある
URLリンク(ideone.com)
977:デフォルトの名無しさん
16/11/05 18:00:46.58 zg/6JUlg.net
>>966
参考
URLリンク(d.hatena.ne.jp)
978:デフォルトの名無しさん
16/11/06 02:21:03.04 nNdE2u+1.net
こうやってバッファなしを out にセットしちゃえばいいのかな。
System.setOut(new PrintStream(new FileOutputStream(FileDescriptor.out)));
979:デフォルトの名無しさん
16/11/06 11:44:21.04 4ZaT28cB.net
System.out.close()しておきながら以降出力されませんとかとぼけてるドジっ子かもな
どのみち実務では利用する機会のないネタだね、いわゆるトリビア
980:966
16/11/06 12:40:21.24 jofbsDf+.net
>>970
ありがとうございます。読ませていただきます。
OutputStreamWriterはnioのcharBufferとbyteBufferでバッファリングしながら
エンコードしているようなので、>>970さんのおっしゃるように駄目でした。
>>972
ありがとうございます!FileOutputStream(FileDescriptor.out)で出来るように
なりました!FileOut~は直接native writeを呼んでいる様でした!
981:デフォルトの名無しさん
16/11/06 19:21:27.22 rNdTzEdK.net
>>968
なるほど依存によってはコンパイル順で指定する必要がある訳ですね
つまりJVMの優先順位次第だけど基本的には全部指定した方が無難そうですね
今回つまづいて皆さんに助言をいただいたおかげでかなりJVMとコマンドプロントについての理解が深まりました。ありがとうございます!
いずれは統合開発環境を使うと思いますがやっぱり基本構造は理解したいのでこのままコマンドプロントでもう少しやってみます
982:デフォルトの名無しさん
16/11/06 20:38:06.30 5/z3Ppl4.net
JAVAはいい人多いな
983:デフォルトの名無しさん
16/11/07 02:12:01.71 LVMUK9Ip.net
ハゲも多いけどな
984:デフォルトの名無しさん
16/11/07 04:50:06.17 4jym6Vde.net
>>976
Javaというかこのスレにね。
C++のスレカオスだよ。
985:デフォルトの名無しさん
16/11/07 13:28:02.93 f+d8GbUt.net
type="hidden"のボタンをクリックする方法はありますか?
986:デフォルトの名無しさん
16/11/07 13:40:01.53 /8UUm0jP.net
type=hiddenはボタンじゃない
URLリンク(www.htmq.com)
987:デフォルトの名無しさん
16/11/08 18:43:02.58 jUCVZHcM.net
>>978
C++は基地外ばっかです
988:デフォルトの名無しさん
16/11/09 20:10:07.13 loi9raWA.net
日付(時刻)を扱うクラスにも習熟しとかないといけませんか?
989:デフォルトの名無しさん
16/11/09 22:31:54.88 f1pFjyzB.net
StringとString[](配列)の違いを教えてください
文字列は複数なので必然的に配列になってしまうような気もするのですが
前者に格納できていれるのでなぜなのかと
990:デフォルトの名無しさん
16/11/09 23:28:39.36 kFU4IgnS.net
>>983
String自体がjava開発者がそういう風に文字を扱えるように作ったクラスの集合体だから
そして頻繁に使うからStringと書くだけでそのクラス集合体を呼び出せるようにちょっと特別扱いした
と後々説明されます