1 名前:デフォルトの名無しさん mailto:sage [2016/11/11(金) 20:25:11.04 ID:zFksT2Ki.net] Java初心者のためのスレッドです。 ※前スレ Java入門・初心者質問スレ echo.2ch.net/test/read.cgi/tech/1462997913/
3 名前:デフォルトの名無しさん [2016/11/13(日) 02:41:12.34 ID:VRYY5LKg.net] このスレ見てれば初心者がどんどん問題書いてくれるよw
4 名前:デフォルトの名無しさん [2016/11/13(日) 18:18:29.05 ID:pyB0h3Wo.net] >>2 「すっきりわかるJava」って本は読みましたか?
5 名前:デフォルトの名無しさん mailto:sage [2016/11/13(日) 18:58:35.51 ID:Ju5lzgBU.net] >>4 はいー。入門編だけですが読みました。 あーでもまだ再読してないや。 読み直してみるか( _´ω`)_
6 名前:デフォルトの名無しさん mailto:sage [2016/11/13(日) 22:51:43.58 ID:nt2c7s4y.net] 本だと井上信幸のJavaシリーズが割と好きです
7 名前:デフォルトの名無しさん mailto:sage [2016/11/14(月) 17:49:44.90 ID:59NPHk9K.net] >>6 ありがとう。 安いのでkindle for PCで読んでみます。
8 名前:デフォルトの名無しさん mailto:sage [2016/11/14(月) 21:53:09.88 ID:LGJBYXKn.net] >>7 かなりアクが強いけど、値段の割に超骨太な内容だから焦らずゆっくり読むといいよ
9 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 12:02:13.09 ID:IUxhFka0.net] >>8 ありがとう。 行間がたっぷり取られてて見やすいね。 とても100円とは思えない充実ぶりだよ。 色々種類があって順番がよくわからないけど、 とりあえず「はじめてのJavaプログラム」から読み始めてます。
10 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 12:54:53.82 ID:PzwFNOhz.net] >>9 はじめてのJavaプログラム 範囲:条件文、繰返文までを学習 Java経験目安:環境設定を行っている方 入門Javaプログラム 範囲:Java言語の文法全体を学習 Java経験目安:はじめてのJavaをお読み頂いている方 Javaプログラム 範囲:Java言語の文法全体をより深く学習 Java経験目安:新人研修修了レベル 実践Javaプログラム 範囲:プログラムの書き方。アプリケーション設計。 Java経験目安:新人研修修了レベル Javaオブジェクト指向 範囲:Javaにおけるオブジェクト指向の学習 Java経験目安:半年から2年目の新人技術者 らしいから文法やら書き方はわかるけどオブジェクト指向がわからないっていうなら他のは 飛ばして「Javaオブジェクト指向」から入ってもいいかも あんまりやると業者に思われるからここまでにしとくが、頑張れ
11 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 13:15:44.77 ID:IUxhFka0.net] >>10 オブジェクト思考って始めてから半年〜2年目以降から身に付けるものなんだ・・・ (個人差があるのはわかるけど) 「はじめてのjavaプログラム」のおかげでいまいち理解出来てなかった 拡張for文の使い方がわかったし、読むのが楽しいから順番通りに勉強してみようと思います。 ありがとうございましたm(_ _)m
12 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 16:08:33.29 ID:joeepLAm.net] 同じクラスを参照してるインスタンスの数だけメモリも消費するんですか?
13 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 19:23:23.95 ID:9YUjbK/H.net] >>12 クラスを参照ってのは、あるクラスを複数インスタンス化した場合に各インスタンス毎にメモリを確保しますか?って質問なのかな それもと同一のクラスオブジェクトを複数のインスタンスが参照(フィールド変数に保持)した場合に参照先のクラスオブジェクトの領域は参照毎に別のメモリを確保しますか?って質問なのかな 前者であれば答えはyes ただStringはnew意外にもString str1 = "aaa";のようにインスタンス化出来るけど、この場合はString str2 = "aaa";としても同じインスタンスが返る。これはコンスタントプールから取得されるので、この辺は特別な仕様なので追々覚えればいい 後者であればno 変数が表しているのはクラスインスタンスのアドレスと同等なのでコピーを保持する訳でわない
14 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 20:33:43.66 ID:T/AMZyvr.net] Object o1 = new Object(); Object o2 = o1; この時にo2が使うメモリ量はどのくらいなんだろ アドレス保持のための少ない量ってことでいいのかな
15 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 20:52:14.16 ID:HID4UF9K.net] 初心者だけどnewしてないから参照分だけと予想
16 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 20:53:32.36 ID:PzwFNOhz.net] その程度のメモリ気にするならJavaは諦めて別言語にすべき
17 名前:デフォルトの名無しさん [2016/11/15(火) 20:59:44.80 ID:1EWgrrZR.net] >>14 実装にもよるとは思うが、多分中ではポインタ使ってるだけなので4バイトとか8バイト使ってるだけになると思う。
18 名前:デフォルトの名無しさん [2016/11/15(火) 22:11:35.58 ID:5RW/XHdG.net] 多態性とかオブジェクト指向っていう言葉が何を指すのか理解できないんですが、どうしたらいいでしょうか? 例えば、 1.同じインターフェイスを複数のクラスで実装して、そのインターフェイス型参照変数でインスタンスを参照することで、実装を知らなくても、抽象メソッドの引数と戻り値の仕様だけ知っていれば、同じ感覚で使用出来る。 2.抽象クラスを継承した具象クラスのインスタンスを抽象クラス型変数で参照すれば、配列やジェネリクスや抽象クラス型引数を持つメソッドで、色んなサブクラスを同じように使える。 というのは多態性なのかなーっていう程度の印象なんですが、 ソースコードを見て、それが多態性を持っているとかオブジェクト指向かどうか判断しろとか言われても、出来ません。
19 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 22:17:33.43 ID:m0x9jm7k.net] そんなこと言われないだらー
20 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 23:09:54.87 ID:joeepLAm.net] >>13 答えありがとうございます。言葉足らずですいません、その説明の後者のほうでした
21 名前:デフォルトの名無しさん mailto:sage [2016/11/15(火) 23:50:26.28 ID:APHjFyJV.net] >>18 オブジェクト指向かどうかは、言語で決まる。 C++, Java, C#, Python, Rubyなど、たいていの言語はオブジェクト指向 JavaScriptでは、prototype.メソッドという形を使っているなら、オブジェクト指向 「スッキリわかる Java入門 第2版、2014」を読んで、 is-a, has-a など、オブジェクト指向の基礎を学ぶこと
22 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 00:10:24.69 ID:4pmQ/TAu.net] シグニチャって何ですか?
23 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 00:15:06.38 ID:0ADEflcW.net] >>18 「どうしたらいいか」と問われるなら、正直「どうもしなくていい」と思う アカデミックにオブジェクト指向について論文でも書きたいならすまないが力にはなれない 多態性もオブジェクト指向も、「より効率的なコードを書くための一手段」以上の観点から考えると混乱するよ 例えば、Javaが搭載している多態性という機能を利用することが、どれだけコードの再利用性を高めていることか もっと言えば、どれだけ安全にコードを再利用できることか そこを実感できない内から多態性とは何か、オブジェクト指向とは何かを考えるのは、個人的にはナンセンスだと思う
24 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 00:25:05.39 ID:szm0B3fV.net] >>21 ありがとうございます。 is-a は継承関係を表現した言葉( Javaでいえば、全てのクラス is a Object) has-a はコンポジションを表現した言葉( System has a (InputStream・OutputStream・PrintStream)) という感じで、理解してるんですが、これでいいんでしょうか?
25 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 00:38:49.90 ID:szm0B3fV.net] >>23 ありがとうございます。 自分が実際のコードレベルで普段気にしてる所といえば、カプセル化と差分コーディングと疎結合くらいです(しかも出来てるかどうか怪しい) 理解には設計知識も必要になりそうなので、設計も勉強してみようと思います。
26 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 16:06:16.25 ID:4pmQ/TAu.net] スッキリわかるJava実践編を読んでいると、拡張for文でつまずいていた自分が、いかに小さかったかが分かる。
27 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 16:33:00.87 ID:Io8tNnmj.net] >>22 関数やらを特定できる名前 本体の名前にクラス名の修飾、さらに 引数のオーバーロードがあるから引数リストまで含める
28 名前:デフォルトの名無しさん [2016/11/16(水) 21:20:00.92 ID:YbY07hGi.net] >>21 > オブジェクト指向かどうかは、言語で決まる。 いや、無理すればだいたいの言語でオブジェクト指向のプログラム作れると思うよ。 ただ言語がオブジェクト指向をサポートしていないと困難が伴うだけのことでな。 C++なんかは元々C言語はのコンバータだったしな。Perlは未だにhssh利用してちょっと拡張ただけで実現してるし。
29 名前:22 mailto:sage [2016/11/17(木) 01:30:21.12 ID:jmQD4E/4.net] >>27 遅くなりましたが、ありがとうございました。
30 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 00:43:30.96 ID:OD6yeudH.net] Javaで今のグラフィック事情はJavaFX を学んでおけばいいのでしょうか。 WritableImageはBufferedImageと同様の事が出来そうと思ったのですが、 直線や円をWritableImage上で描く関数、方法等はあるのでしょうか?
31 名前:デフォルトの名無しさん [2016/11/18(金) 07:58:50.94 ID:ifsRvlL1.net] TomcatでServlet + JSPで作った物のテンプレートエンジンをThymeleafに変更したいのですが、どうすればいいでしょうか。 サンプル探しても、ThymeleafはSpring + Maven or Gradleのものばかりで、web.xmlでの依存性設定の方法が分かりません。
32 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 14:27:06.78 ID:uW9WflJo.net] Javaでwebカメラの映像を画像で保存したいのですがどうすれば良いのですか? 検索しても動画保存しかなくわかりません
33 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 22:23:44.87 ID:x7iYBXzm.net] repaint()を1秒間に60回呼び出したら画像が表示されないのですがこれは表示が間に合っていないからなのでしょうか? エラーも出ずコマンドプロンプトには60回任意の文字が表示されるのですが
34 名前:デフォルトの名無しさん mailto:sage [2016/11/18(金) 23:44:20.16 ID:cz8hZ4UD.net] >>30 やりたいことによるけどJava上でProcessingの アプレットを走らせる方法もあるよ。 または最初からProcessingをプラットホームにして そこにJavaのライブラリを組み込むってのもある。
35 名前:デフォルトの名無しさん mailto:sage [2016/11/19(土) 21:57:03.67 ID:/T3dv8Ui.net] >>32 なんか、こういうライブラリあるようだ。使ったことないけど。 netbuffalo.doorblog.jp/archives/4528385.html あと Android みたいなカメラが付いてて当たり前みたいな環境だとそれはそれなりになんかあるんだろうね。 俺は知らないけど。 👀 Rock54: Caution(BBR-MD5:f2c519fe5384e767e1c9e99abdcfc293)
36 名前:デフォルトの名無しさん mailto:sage [2016/11/20(日) 12:26:13.50 ID:rUGeTkRI.net] >repaint()を1秒間に60回呼び出し そういうのは Java じゃなくて C++ とか使うべき
37 名前:デフォルトの名無しさん mailto:sage [2016/11/20(日) 17:06:43.40 ID:I061FkHI.net] >>34 BufferedImageからGraphicsを取得して 直線等を描画してSwingFXUtilsを利用し、 WritableImageにしてました。 裏画面、メモリとして独自に持ちたいと思ったので。 Canvasを入れ替えるというのはあり得るのでしょうか。 Javaのシンプルな環境で出来たらと考えています。
38 名前:デフォルトの名無しさん mailto:sage [2016/11/21(月) 12:08:07.73 ID:qdDmf7CK.net] >>37 目的が分からないけど、PAppletをJFrameか何かに貼り付けた上で public class YourApplet extends PApplet{ public void setup(){ (Processingの一般構文:設定系) } public void draw(){ (Processingの一般構文:ここで直線を書く) } } という話ではなくって?
39 名前:デフォルトの名無しさん mailto:sage [2016/11/22(火) 16:39:28.05 ID:ae5ITMjf.net] 初歩的な質問で恐縮です Monsterクラスを継承したSlimeクラスとGolemクラスを作成したのですが、インスタンス化の際に Slime slime = new Slime(); Golem golem = new Golem(); とするのではなく、新たにmonsterFactoryクラスを作成し、その中の メソッドでインスタンス化し、戻り値として該当のインスタンスを返したいと考えています そういった場合のときにSlimeやGolemといったクラスの数だけメソッドを作成するのではなく、 引数にMonsterクラスの子クラスを指定し、その型のインスタンスを返したいのですが、 そういったメソッドは作成可能でしょうか? ご教授いただければ幸いです
40 名前:デフォルトの名無しさん mailto:sage [2016/11/22(火) 17:18:06.57 ID:BChNgOUn.net] >>39 例外処理とかは書いてない public Monster create(Class<? extends Monster> c) { return c.getConstructor().newInstance(); }
41 名前:デフォルトの名無しさん mailto:sage [2016/11/22(火) 17:18:41.62 ID:G/lzbAc1.net] >>39 Monster createMonsterOf(Class<? extends Monster> c){ try { return c.newInstance(); } catch (InstantiationException | IllegalAccessException ex) { return null; } } Monster m = createMonsterOf(Golem.class);
42 名前:デフォルトの名無しさん mailto:sage [2016/11/22(火) 17:24:24.53 ID:BChNgOUn.net] >>41 Class#newInstance()はコンストラクタが送出する例外を素通ししなかったっけ? 最後にThrowableをcatchしないとマズいと思うよ
43 名前:デフォルトの名無しさん mailto:sage [2016/11/22(火) 17:30:54.79 ID:G/lzbAc1.net] >>42 確かに。指摘thx
44 名前:デフォルトの名無しさん mailto:sage [2016/11/22(火) 17:47:54.37 ID:BChNgOUn.net] ごめん、Throwableはマズいな class#newInstance()使う場合は送出される可能性のあるExceptionも捕まえておきましょう ちなみにConstructor#newInstance()の場合はInvocationTargetExceptionでwrapされて送出するのでそいつを捕まえて処理しましょう
45 名前:デフォルトの名無しさん mailto:sage [2016/11/22(火) 21:45:25.64 ID:/0LpSjau.net] >>40 >>41 ありがとうございます ジェネリクスを使えばいけそうだなとは思ったのですがなかなかうまくいかなかったので助かりました 独学で聞ける人がいないので本当に感謝です……
46 名前:デフォルトの名無しさん mailto:sage [2016/11/24(木) 17:18:26.85 ID:z1OycYrK.net] Androidアプリ制作を学びたくて独学でJavaを勉強し始めたプログラミング初心者です(VBAは少しやってました) CUI一通り理解できたらまずはGUIとか勉強したほうが良いのですかね、いつ本題のアプリ開発に手を付けられるのかお聞きしたいです スレチでしたらすみません
47 名前:デフォルトの名無しさん mailto:sage [2016/11/24(木) 17:31:53.50 ID:m4cFoWGx.net] >>46 AndroidStudioインストールして、付属のサンプルコード動かしたり改造するればいいんじゃないかな GUIはJavaFXとかあるけど、Androidには不必要だし、Android固有のUIやった方がいいよ
48 名前:デフォルトの名無しさん mailto:sage [2016/11/24(木) 17:34:41.57 ID:z1OycYrK.net] >>47 お早い回答ありがとうございます。JavaのCUIは見ておいた方がいいですよね? Android studioも色々見たのですがイマイチどこでJavaの知識が役立つのかイマイチ分からなくて…
49 名前:デフォルトの名無しさん [2016/11/24(木) 20:02:09.19 ID:m4cFoWGx.net] >>48 CUIと言っているのがどの辺りかは分からないけど、Javaの言語仕様とjava.lang、java.util、java.net、java.ioパッケージは基本なのである程度把握しておいたほうがいいと思いますよ 上記が把握できたらAndroidでもサーバサイドでも始められるとおもます あくまで始められるだけで、作るためにはそれぞれのフレームワークの理解など色々覚えることがありますが、、 Javaスレなので、Androidのことを長々と書くのもアレなのでAndroidの導入部分だけ まず、AndroidStudioを起動るとプロジェクトの作成やインポートのリストが出るので一番下の「Import an Android code sample」からサンプルコードを選びます 最初はUIカテゴリあたりから選ぶのがいいと思います プロジェクトがロードされるとたぶんApplication/src/main/java以下にJavaファイルがいくつかあると思いますが、java.*なんて利用してるクラスはほとんどなく、android.*を利用してると思うので愕然とすると思います public static void main() はどこにあるの?と涙目になると思いますが、Androidでmainに相当するのがActivityクラスです(と書くと苦情が来そうですが最初はその理解でいいと思います) Activityが何かはAndroid APIを見ると細かく書いてあります https://developer.android.com/reference/android/app/Activity.html 多分サンプルコードだとMainActivity.java があると思うのでそこから見てみましょう ってか実機に入れて動かしてみましょう
50 名前:デフォルトの名無しさん mailto:sage [2016/11/24(木) 21:41:58.42 ID:z1OycYrK.net] >>49 こんな初心者丸出しな質問に丁寧に答えてくださって本当にありがとうございます ほぼ手探りで始めたもので、こういったご指南はとても助かります Javaスレでする質問ではなかったかもしれません、お許しください。
51 名前:デフォルトの名無しさん mailto:sage [2016/11/24(木) 23:27:24.88 ID:g1cJ7kXy.net] WEB+DB vol.94 の特集が、Kotlin, Electron Kotlin・IntelliJ IDEAは、JetBrains が作っている。 そして、Android Studioは、IntelliJ IDEAから作られているから、Kotlinが使いやすい Android Studioで、Java・Kotlin は変換できる。 Kotlin Bytecode で、Javaのバイトコードも見れる Try Kotlin のサイトで、ブラウザからプログラミングできる Androidでは、言語の勉強はほとんどない。 ほとんどは、フレームワークの勉強だから、Java8よりも、Kotlinがベター
52 名前:デフォルトの名無しさん mailto:sage [2016/11/25(金) 00:05:26.48 ID:b+zcYe4E.net] >>50 48ですがAndroidはじめ最近のJava開発だとビルドシステムのgradleやコード管理にgit、githubも必須の知識になってくるのでその辺も押さえておいた方がいいですね Androidのフレームワークの理解を進めるのは必須ですがIDE(AndroidStudio)の使い方を深く知るのも開発の早道だと思います AndroidStudioの補完機能は強力なのでAPI Reference調べなくても補完候補の名前見て意図した機能を探す事が多いので Androidだと最近Javaで書かずにkotlinを使う事もありますが、まずはJavaでの開発をお勧めしますよ kotlinはいい言語ですがフレームワークがJavaの所でkotkinを使うケースがほとんど(AndroidやSpringが今だと当てはまりますね)なのでJavaの知識がないと問題が起きた時にはまると思います 初心者はkotlinの開発効率向上の恩恵を受けるより情報の少ない言語でのハマりの方が多いですね
53 名前:デフォルトの名無しさん mailto:sage [2016/11/25(金) 09:47:12.02 ID:kblhq0Mt.net] >>51 >>52 ID:z1OycYrKです。 分かりやすいご説明ありがとうございます。やはり単純にJavaの知識があれば良いと言う訳でもないのですね… Android開発を目標とする場合にはまずJavaの基本知識とAndroidのフレームワーク、IDEを知ることが最優先事項といったところでしょうか。 本当にまだまだプログラミング自体初心者ですので順を追って勉強していきたいと思います。 kotlinなど初めて聞いたものもあったので参考にさせていただきます。 また何かあった時にはここで質問させてもらえると嬉しいです。
54 名前:デフォルトの名無しさん mailto:sage [2016/11/26(土) 02:50:02.97 ID:e02/+VR6.net] やっとpaizaのC級クリアできた 地味に嬉しいなこれ
55 名前:デフォルトの名無しさん [2016/11/26(土) 12:49:37.40 ID:2qYRbLWv.net] interfaceって、設計したところで、実装したクラスがきちんと実装してないと無意味ですよね? abstract String getName(); ってメソッドがあったとしても、それを実装した各クラスのメソッドで、 return name; //正しい実装 return "UNKO!!"; //間違った実装 とかされたらダメで。 ということは、設計上の規約を実装に持ち込む(?)使い方をしないと意味ないってことですよね?
56 名前:デフォルトの名無しさん mailto:sage [2016/11/26(土) 12:59:57.73 ID:xNzmg7ff.net] そりゃそうでしょ それって 2つの整数の和を返す関数 int add(int a,int b); があったとしても、その実装を return a+b; にしなければ意味ないよねって言ってるのと同じでしょ?
57 名前:デフォルトの名無しさん mailto:sage [2016/11/26(土) 13:30:38.20 ID:UakanFrx.net] >>55 んな事気にしてたら公式でinterface使えないなw
58 名前:デフォルトの名無しさん mailto:sage [2016/11/26(土) 13:51:05.43 ID:iTK/Df17.net] >>55 それはその通り。interfaceはあくまでもinterfaceであって外部からどのような形でメソッドが呼び出し可能なのかを表している表面的なものでしかない。
59 名前:デフォルトの名無しさん mailto:sage [2016/11/26(土) 13:59:52.48 ID:0VRSln7v.net] よくJavaの本ではクラスありきで最初の方に書いてあるけど 実際に設計する機会はあまりなくて インターフェースの方をきちんと勉強した方が実用的だ
60 名前:デフォルトの名無しさん mailto:sage [2016/11/26(土) 16:29:32.68 ID:BIqdSJpb.net] >>55 意味ないっていうか、そこでエラーを吐かせるのも設計の大事な役目なんだよ 実行時エラーの面倒くささに比べてコンパイルエラーの何とありがたいことよ
61 名前:デフォルトの名無しさん mailto:sage [2016/11/26(土) 20:58:39.18 ID:n+yuLe3f.net] >>60 >>55 の例だとコンパイルエラーにはならんだろう。
62 名前:デフォルトの名無しさん [2016/11/27(日) 15:12:18.48 ID:FXT5KC1a.net] >>54 C級ってなんのことかと思ったら paiza.jp ってのがあったんだな。 コード入れとく方の paiza.io なら知っていたがそっちは知らなかった。 暇だからやってみたがとりあえずB級まで行ったよ。 A級のは1問やろうとしたけど数学的に難しくてわからない点があって調べるの面倒なので中止した。
63 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 15:19:19.13 ID:FXT5KC1a.net] B級だと paiza査定 年収759万円 って出るのな。 今の実際の年収はこれ以上なのでやっぱA級クリアすべきだな。
64 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 18:54:23.69 ID:FNYe3/AV.net] 例外をいつどんなものを投げれば良いかがわかりません。 例のなるような、また皆さんが参考にしたソースコードがあれば 教えてもらえないでしょうか。
65 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 19:38:47.95 ID:7rsS/I5l.net] >>63 どうやったらそんなに貰えるんですか?
66 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 19:49:19.84 ID:Zu2gLat0.net] >>65 知らない。単に paiza.jp がそう出して来るだけ。
67 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 19:54:13.39 ID:Zu2gLat0.net] paiza.jp はいわゆる転職支援サイトで、プロフィール登録してあそこで出ている問題を 解き続けるとそれを見た企業が連絡してくるかも知れないということ。 かといって俺は転職希望してないのでプロフィールはほとんど入力せずそのまま 問題解いてるだけ。俺は暇つぶしにクイズみたいに問題解きたいだけなので。
68 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 20:00:24.38 ID:fruCkXex.net] 某所で拾った問題なのですが、わからなかったので質問します(多分学校の課題だと思います) 任意のxとnを指定しx面のサイコロをn個投げたとき、 出る目の総和sumと、sumが出る組み合わせの数casesと、 sumが出る確率probを、sumの小さい順に「sum:cases:prob」の ように一覧表示するプログラムを書けというものです sumはn〜x*nの範囲で1ずつ増やすとして、casesの出し方がわかりません 合計がsumになるn個の自然数の組み合わせを全て取得し、 sumが同じだったらカウントを1増やせばいいんじゃないかと 思ったのですが、どんなコードを書けばそうなるのか検討もつかず…… あるいは他のベターな方法などありましたらご教授いただければ幸いです
69 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 22:11:43.54 ID:FXT5KC1a.net] >>68 総和の最小値はnで最大値はx*nなのでこの数(x*n-n個=(x-1)*n個)のカウント値を入れておく配列を用意しておいて、 後は全パターン出して総和に従ってその配列の値を1加算すればいいだけ。 全パターンの求め方は、この場合はx進数でn桁あるのと同じで、最小値が1で最大値がxになっているので、 まずn桁分の値を入れておく配列を作っておいて全桁を1で初期化し、それに対して1加算する処理を作れば良い。 これは簡単だと思う。一番下の桁に1足してxよりも大きくなったら桁溢れなので1に戻して一つ上の桁に1を加え、 その桁で桁溢れしたら更にその上の桁という具合に必要なだけ上位桁まで繰り返す。全桁最大値になって1を 加算した時は最上位桁で桁溢れするのでそこで終わり。 まあでもこれは全パターンについて調べなくても数学的に何か良い方法ありそうな気がするなあ。
70 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 22:15:53.01 ID:FXT5KC1a.net] あ、そうだ。x進数n桁なら0〜(x^n)-1の整数値のループにしてしまって各桁はxで割った余り+1でも出せるな。
71 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 23:26:50.66 ID:FXT5KC1a.net] できた。 https://paiza.io/projects/SG0-jSDjsp39n6qB97ieUQ 下の所の入力のタブで面と個数を入れられる。1行目がxに入り2行目がnに入る。これでx面、n個になる。 今の値は6面3個になっている。
72 名前:デフォルトの名無しさん mailto:sage [2016/11/27(日) 23:51:30.95 ID:TwPmxj16.net] >>71 うおぉぉ ありがとうございます! じっくり見ながら勉強させていただきます
73 名前:デフォルトの名無しさん mailto:sage [2016/11/28(月) 02:41:41.42 ID:TQQs9y8p.net] Javaと関係ない気がするのだが >>68 のは単に多項分布の話をしてるのだろう x=2のときを2項分布と言うんだよな、例を示すと 1, 1,1 1,2,1 1,3,3,1 1,4,6,4,1 と続くやつ
74 名前:デフォルトの名無しさん mailto:sage [2016/11/28(月) 04:49:37.31 ID:ZvcFWjYe.net] >>64 Error : catchする必要がない Exception : catchすべき RuntimeException : catchしなくてもよい 内容は、例外の一覧表を参照 >>73 シャンパングラスで、ピラミッドみたいな構造を作って、上から水を流すようなヤツか
75 名前:デフォルトの名無しさん mailto:sega [2016/11/30(水) 11:21:15.72 ID:tLQNhhd0.net] jdk と j2se と j2ee の言葉の意味を教えてください jdk は開発に使うプログラム群でコンパイラと実行環境を含んでいて j2seは基本のライブラリ群で j2eeはもりもりのライブラリ群 という認識であってるか? jreやjdkをダウンロードすると、もれなくj2eeもついてくるの?
76 名前:デフォルトの名無しさん mailto:sage [2016/11/30(水) 12:56:22.81 ID:3Q1IinyT.net] J2EEは、J2EE1.2〜1.4まで。 J2EE1.4の次からは、JavaEE5〜7 に変わった 1.x という表記方法は、昔のもの よく知らないけど、J2SEも、JavaSE に変わったのかも? SEはスタンダード版で、EEはエンタープライズ版
77 名前:デフォルトの名無しさん mailto:sage [2016/11/30(水) 14:14:26.80 ID:m8TXkg9z.net] JDK は開発者用 JRE はユーザーが使う最小環境 自分がどちらの立場かでわかれる SE/EE は開発ターゲットでわかれる EEは(大規模)企業向け、サーバー構築用の機能がもりもり増える ちなみに ME(M=モバイル、携帯など)もあるよ 特に限定なしに Java と言ったら SE だと思うよ
78 名前:デフォルトの名無しさん mailto:sage [2016/11/30(水) 17:01:51.61 ID:tLQNhhd0.net] >>76-77 ありがとう じゃあ普通は JavaSE で、JavaEE はとりあえず存在忘れて良くて JDKやJREを普通にダウンロードするとおりてくるのは JavaSE と いう認識でいいのね
79 名前:デフォルトの名無しさん mailto:sage [2016/12/01(木) 20:14:35.02 ID:rebgM91e.net] JAVAというわけではなく、初歩的なことかと思いますが テスト要領書って、本来コーディング前に作っておくものでしょうか? うちの会社じゃ いつもコーディングの後半に作ってるんですが 一般的にはどうなんだろうと思いまして
80 名前:デフォルトの名無しさん mailto:sage [2016/12/03(土) 01:26:27.43 ID:3wKrHXtA.net] streamを練習中です。 string配列のlistをstreamでわちゃわちゃやって、 タブ連結の標準出力までは出来たのですが bufferdwriter.writeでファイル出力しようとすると例外処理を求められ、 tryで囲んでもエラーが消えません どのように書けばいいのでしょうか
81 名前:デフォルトの名無しさん mailto:sage [2016/12/03(土) 08:57:37.85 ID:rRAOeu3n.net] エラーの内容示して
82 名前:デフォルトの名無しさん mailto:sage [2016/12/03(土) 13:49:28.45 ID:hgmu3ScG.net] 今どのように書いてあるのか?
83 名前:デフォルトの名無しさん mailto:sage [2016/12/03(土) 18:40:26.32 ID:WlJHS2BC.net] >>81 Exception in thread "main" java.lang.Error: Unresolved compilation problem: 処理されない例外の型 IOException 簡略化したArrays.stream(array).forEach(x -> bw.write(x)); でもエラーになるので根本的に使い方を間違っている感じがします おまけにこれで書けたとしてもnewLineが書けないですよね
84 名前:デフォルトの名無しさん mailto:sage [2016/12/03(土) 19:13:20.96 ID:2l44vQ0O.net] >83 main に throws Exception を書いとけば? public static void main(String[] args) throws Exception
85 名前:デフォルトの名無しさん mailto:sage [2016/12/03(土) 19:49:01.45 ID:WlJHS2BC.net] >>84 こちらでは解決しませんが そちらの環境ではエラー消えますか? 改行と書き込みを行うwrite(BufferedWriter bw, String str)メソッドを作成して Arrays.stream(array).forEach(x -> write(bw, x))から呼び出せば 動作するのはわかったのですが、出来れば分割したくありません
86 名前:デフォルトの名無しさん mailto:sage [2016/12/03(土) 23:59:44.58 ID:hgmu3ScG.net] 長くなるが、こうだ。 Arrays.stream(array).forEach(x -> { try { bw.write(x); } catch (IOException e) { e.printStack
87 名前:Trace(); } }); サンプル https://paiza.io/projects/mQUV1ao9f2lGajsPfUQlpg [] [ここ壊れてます]
88 名前:デフォルトの名無しさん mailto:sage [2016/12/04(日) 19:44:01.58 ID:7DvwJVFy.net] >>86 おおー、ありがとうございます forEachの中を{}で括ることで複数処理を書けるんですね 処理が1行であれば{}を省略できるだけな事を知りませんでした ちなみに、複数行処理はmapなどの中間操作でも使えますか? ためしに次のようなコードを書いてみたところ、型推論が上手く出来ない感じでエラーになるのですが https://paiza.io/projects/9MR0Rm40osn4TMXVOVQPog
89 名前:デフォルトの名無しさん mailto:sage [2016/12/04(日) 21:10:34.51 ID:dK8nOpyX.net] return まずStreamよりlambda式を完璧に覚えた方が良くはありませんでしょうか
90 名前:デフォルトの名無しさん mailto:sage [2016/12/04(日) 21:36:25.09 ID:7DvwJVFy.net] >>88 ありがとうございます ラムダ式の文法を調べたら自分が引っかかっていた部分が全て書いてありました まずはこちらを勉強します
91 名前:デフォルトの名無しさん mailto:sage [2016/12/06(火) 19:17:36.58 ID:AM+X22VM.net] サブクラスのインスタンスをスーパークラス型の参照変数で参照するのって、どういうメリットがあるんでしょうか? 機能を制限してるだけのように見えるんですが。
92 名前:デフォルトの名無しさん mailto:sage [2016/12/06(火) 19:42:21.31 ID:yS9rSl8q.net] >>90 スーパークラスが同じなら違うサブクラスでも同じように扱える。 例えば Object クラスは全てのクラスのスーパークラスなので Object クラスの配列に色々なクラスのインスタンスを入れておいてループさせて頭から全てに対して toString() やらせたりなんてことができる。 この時全てのインスタンスは Object クラスのインスタンスとして扱われている。つまり機能は縮小されている。しかし全てのインスタンスを同列に扱える。
93 名前:デフォルトの名無しさん mailto:sage [2016/12/06(火) 19:43:40.02 ID:bM0bSRB2.net] >>90 例えば一括処理が楽になる
94 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 00:09:59.47 ID:xt5+p8pC.net] >>90 例えば、JavaのListクラスについて考えてみる Listクラスのサブクラスは、Listクラスと同じメソッドを持つ事が保証されている (代表的なものは、Listに要素を加えるadd(E)メソッド、Listから指定した位置の要素を取り出すget(int)メソッド、List内の要素をすべて消すclear()メソッドなど) Listクラスのサブクラス、ArrayListで、以下のような実装をしていたとする List<Integer> list = new ArrayList<>; list.add(new Integer(1)); list.add(new Integer(2)); System.out.println(list.get(0)); list.clear(); System.out.println(list.size()); 何かしらの事情で、上記のコードで使用しているArrayListを、LinkedList(※)に変える必要がでた場合、ArrayListをList型の変数に代入しているため、new ArrayList<>の部分のみを書きかえればよい ※Listクラスのサブクラス もし、ArrayListとLinkedListに共通のスーパークラスが無かった場合、2つのクラスで同じメソッドを使用できるとは限らなくなるため、listで使用しているメソッドを書きかえなければならない(規模が大きいと大変)
95 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 07:01:38.13 ID:UOk7UU+s.net] Listはシーケンスを実装するインターフェース、クラスじゃないよ
96 名前:デフォルトの名無しさん [2016/12/07(水) 18:58:23.74 ID:k92WTPwA.net] ttp://www.javadrive.jp/start/ope/index7.html このページ見て勉強してるんですが、納得いかないことがあります。 int a = 7; int b; b = a++; System.out.println(a); //8 System.out.println(b); //7 について、 >変数「b」に変数「a」を代入していますので数値の7が変数「b」に代入されます。それから変数「a」の値を1だけ増加させます。 とのことなのですが、これをいじって、 int a = 7; a = a++; System.out.println(a); //7 とした場合、 >数値の7が変数「左辺のa」に代入されます。次に「右辺のa」の値を1だけ増加させます。 のはずなのにaは増えていません。 a = a++; だと、インクリメントされないけれど、 a++; だと正常にインクリメントされます。 a = a++; の場合、左辺のaと右辺のaが指している場所が違う(実はaが2つある)んですか?
97 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 20:41:00.08 ID:MF980GNn.net] javadriveは演算子の優先順位説明されてたっけ?
98 名前:デフォルトの名無しさん mailto:sage [2016/12/07(水) 20:41:20.64 ID:B6706IAk.net] 順番逆じゃね 先に右辺が評価されて評価値は7 aはインクリメントされて8 評価値がaに代入されて7に戻る
99 名前:デフォルトの名無しさん [2016/12/08(木) 00:17:49.54 ID:tUPRtp48.net] >>95 javap -c で逆アセンブルすると分かるけど int a = 7; int b; b = a++; バイトコードは 1:bipush 7 2:istore_1 3:iload_1 4:iinc 1, 1 5:istore_2 1:スタックに7を積む 2:スタックの値(7)を変数1(a)に入れる 3:変数1(a)の値をスタックに積む(7) 4:変数1(a)に1追加(7->8) 5:スタックの値(7)を変数2(b)に入れる
100 名前:デフォルトの名無しさん [2016/12/08(木) 00:18:23.52 ID:tUPRtp48.net] 疑問のコード int a = 7; a = a++; 1:bipush 7 2:istore_1 3:iload_1 4:iinc 1, 1 5:istore_1 1:スタックに7を積む 2:スタックの値(7)を変数1(a)に入れる 3:変数1(a)の値をスタックに積む(7) 4:変数1(a)に1追加(7->8) 5:スタックの値(7)を変数1(a)に入れる ってことでこれが答えです
101 名前:デフォルトの名無しさん [2016/12/08(木) 00:18:39.13 ID:tUPRtp48.net] ちなみに int a = 7; a = ++a;
102 名前:フ場合はiload_1とiinc の順序が逆になります この疑問は自分も??となったので調べてみておもしろかったです [] [ここ壊れてます]
103 名前:デフォルトの名無しさん mailto:sage [2016/12/08(木) 19:26:40.58 ID:ZhYL35Hp.net] >>100 横からで申し訳ないけど int a = 7; a++; の場合ってどうなってます?