X



Java入門・初心者質問スレ Part.6
■ このスレッドは過去ログ倉庫に格納されています
0393デフォルトの名無しさん
垢版 |
2018/01/13(土) 10:52:02.12ID:YXV8ZXe2
>>392
1ulpの範囲で誤差は常にあるよ
想定する入力桁数から結果のオーダーを見積もって、適切な桁数で結果を丸めてやらないとダメ
0394デフォルトの名無しさん
垢版 |
2018/01/13(土) 10:58:21.51ID:lyDkb74n
整数で厳密な数字を出したいような計算で出てくるのなんてせいぜい二乗か三乗だろ
pow使わないで定義に従ってベタに掛け算した方がいい
powは科学技術計算とかに使うもんだ
0395デフォルトの名無しさん
垢版 |
2018/01/13(土) 11:08:01.97ID:Tv/PYA/V
>>393
マジでか
0396デフォルトの名無しさん
垢版 |
2018/01/13(土) 11:16:22.52ID:YXV8ZXe2
>>395
powの結果の話な
結果の桁数がdoubleの有効桁数と比較してそれほど大きくなければ、単に整数に丸めとけば厳密に正しい数字になるはずだけど
0397デフォルトの名無しさん
垢版 |
2018/01/13(土) 11:24:16.28ID:i2Zn+Xt8
powは速度遅いから使ってないわ
速度求めるならJavaがそもそもって言われるかもだがw
0398 ◆QZaw55cn4c
垢版 |
2018/01/13(土) 12:39:22.70ID:9/EYlaQy
>>386
親クラスの this と子クラスの this は値は同じ
そういうもの
0400デフォルトの名無しさん
垢版 |
2018/01/13(土) 14:33:31.30ID:2zGybbO2
拙者www 惚れる と 掘れる
を間違えてしまったでゴザルwwww

予測変換と検索ワードを考慮して、おらなんだwwwで、ゴザルwww
0401デフォルトの名無しさん
垢版 |
2018/01/13(土) 14:34:35.56ID:2zGybbO2
これではwww
掘ってしまうでゴザルwwww
0402364
垢版 |
2018/01/13(土) 16:40:05.63ID:tfs6Dakv
答えてくれた方々、ありがとうございます。

>>382
最低限の知識はあります。
知識で解く系の問題じゃないので調べようがないんです。

>>383
スーパークラスの変数はfでは?

>>385
サブクラスでの代入により、スーパークラスのtypeも変わってしまったってこと
ですか?

>>387
>オブジェクト指向のやりたいことを理解して
>プログラミング言語がそれをどのように実現してるか知る
スッキリはそのように書いてあります。

>>388
スーパークラスに属してるんですか?
0403デフォルトの名無しさん
垢版 |
2018/01/13(土) 17:05:30.55ID:FyPyK4H/
>>402
>スーパークラスの変数はfでは?
Cougarクラスは、Felineクラスをextendしていると
何となく考えてみよう。
そう考えると、Cougarのインスタンスがgoメソッドを実行すると
絶対にtypeはfにならないという事が分かるだろう。

ところで「extend」はどんな意味か分かるかな?
調べてみよう。
0407364
垢版 |
2018/01/13(土) 19:47:12.42ID:tfs6Dakv
>>403
回答ありがとうございます。
おっしゃることはもっともだと思うんですが、super.とついているので
スーパークラスのtype変数を指しているんですよね?
その中身がgoメソッド内でcに変わったという理解でよろしいですか?

それとextend(s)の意味は知ってます。拡張するとかいう意味です。
Javaにおいては継承ということで使われているようですが。

>>404
何しろ3割間違えてるので、その中でこのような設問における失点もあったかも
しれません。
0408364
垢版 |
2018/01/13(土) 19:52:04.48ID:tfs6Dakv
>>405
俺が質問しても気にしなきゃいいのに何が気に入らないのかチャチャ入れるから
一見さんが近寄りにくくなってるんだよ。

ここは質問スレなんだから、純粋に質問して、回答が返ってくるという流れは
自然だろう。それが気に入らないなら無理に来なくていいのに。
0412デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:22:17.08ID:wiN0PDfT
以下のプログラムは {1, 2, …, n} 上のすべての位相(開集合系)を求めるプログラムです。

とりあえず、適当に作ったのですが、デザインについて添削してください。
0413デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:23:18.22ID:wiN0PDfT
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class AllTopologies {
■■private final List<Set<Integer>> topologies;
■■private Set<Integer> setOfSubsets;
■■private int setOfSubsetsID;
■■private final int n;
■■private final int m;
■■private final int maxSetOfSubsetsID;
■■public AllTopologies(int n) {
■■■■topologies = new ArrayList<Set<Integer>>();
■■■■setOfSubsets = new HashSet<Integer>();
■■■■setOfSubsetsID = 0;
■■■■this.n = n;
■■■■m = (int) Math.pow(2.0, (double) n) - 1;
■■■■maxSetOfSubsetsID = (int) Math.pow(2.0, (double) m - 1) - 1;
■■■■computeAllTopologies();
■■}
■■
0414デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:23:36.74ID:wiN0PDfT
■■public void printAllTopologies() {
■■■■System.out.print("The number of topologies on the set {");
■■■■int i;
■■■■for (i = 1; i < n; i++) {
■■■■■■System.out.print(i + ", ");
■■■■}
■■■■System.out.print(i);
■■■■System.out.println("} is " + topologies.size() + ".");
■■■■System.out.println();
■■■■
■■■■System.out.print("The all topologies on the set {");
■■■■for (i = 1; i < n; i++) {
■■■■■■System.out.print(i + ", ");
■■■■}
■■■■System.out.print(i);
■■■■System.out.println("} are:");
■■■■
■■■■for (Set<Integer> s : topologies) {
■■■■■■System.out.print("[");
■■■■■■System.out.print(convertIntToSet(0));
■■■■■■System.out.print(", ");
■■■■■■for (int e : s) {
■■■■■■■■
■■■■■■■■System.out.print(convertIntToSet(e));
■■■■■■■■System.out.print(", ");
■■■■■■}
■■■■■■System.out.print(convertIntToSet(m));
■■■■■■System.out.println("]");
■■■■}
■■}
0415デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:23:58.33ID:wiN0PDfT
■■private Set<Integer> convertIntToSet(int s) {
■■■■Set<Integer> set = new HashSet<Integer>();
■■■■for (int i = 1; i <= n; i++) {
■■■■■■if ((s & 0x00000001) == 1) {
■■■■■■■■set.add(i);
■■■■■■}
■■■■■■s >>= 1;
■■■■}
■■■■return set;
■■}
■■
■■private boolean nextSetOfSubsets() {
■■■■if (setOfSubsetsID == maxSetOfSubsetsID) {
■■■■■■return false;
■■■■}
■■■■setOfSubsetsID++;
■■■■setOfSubsets = new HashSet<Integer>();
■■■■int t = setOfSubsetsID;
■■■■for (int i = 1; i < m; i++) {
■■■■■■if ((t & 0x00000001) == 1) {
■■■■■■■■setOfSubsets.add(i);
■■■■■■}
■■■■■■t >>= 1;
■■■■}
■■■■return true;
■■}
0416デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:24:16.43ID:wiN0PDfT
■■private boolean isSetOfSubsetsTopology() {
■■■■List<Integer> list = new ArrayList<Integer>(setOfSubsets);
■■■■loop:
■■■■for (int i = 0; i < list .size(); i++) {
■■■■ for (int j = i + 1; j < list .size(); j++) {
■■■■ ■■int intersection = intersection(list.get(i), list.get(j));
■■■■ ■■if (intersection != 0 && intersection != m && !setOfSubsets.contains(intersection)) {
■■■■ ■■■■return false;
■■■■ ■■}
■■■■ ■■int union = union(list.get(i), list.get(j));
■■■■ ■■if (union != 0 && union != m && !setOfSubsets.contains(union)) {
■■ ■■■■■■return false;
■■■■ ■■}
■■■■ }
■■■■}
■■■■return true;
■■}
■■
■■private void computeAllTopologies() {
■■■■do {
■■■■■■if (isSetOfSubsetsTopology()) {
■■■■■■■■topologies.add(setOfSubsets);
■■■■■■}
■■■■} while(nextSetOfSubsets());
■■}
0417デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:24:41.80ID:wiN0PDfT
■■private static int intersection(int subset1, int subset2) {
■■■■return subset1 & subset2;
■■}

■■private static int union(int subset1, int subset2) {
■■■■return subset1 | subset2;
■■}

■■public static void main(String[] args) {
■■■■// TODO Auto-generated method stub
■■■■AllTopologies allTopologies = new AllTopologies(4);
■■■■allTopologies.printAllTopologies();
■■}
■■

}
0420デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:37:35.59ID:ogercqIA
数学のことはまったくわからんが
数学とまったく関係ないところで
オブジェクト指向初心者にありがちな超絶スパゲッティなのはわかる
0421デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:40:33.04ID:wiN0PDfT
>>420

ありがとうございます。

そういうオブジェクト指向のデザインの本でおすすめの本はありますか?

自然言語でいえば、文法の本ではなく作文の本にあたる本。
0423デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:42:49.20ID:ogercqIA
そういう本読みまくったけど
結局実務で人に修正してもらうまで自分のなにがだめかわからんかったから
自分から進められる本がない
0424デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:44:39.36ID:wiN0PDfT
コードについての説明ですが、
例えば、 n = 3 の場合、

集合 {1, 2, 3} の部分集合の集合のうち

空集合 { } と {1, 2, 3} を含み、
共通部分をとる操作について閉じていて、かつ
和集合をとる操作についても閉じているようなものを
すべて求めるというプログラムになります。
0425デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:47:33.55ID:wiN0PDfT
>>422

ありがとうございます。

とりあえず、読んでみます。

>>423

本を読んで習得したいのですが、そう言われるのではないかと恐れていました。
0426デフォルトの名無しさん
垢版 |
2018/01/13(土) 20:56:00.55ID:ogercqIA
さんすうのことはわからない
でもまず根本的にだめなところとして
変数が実質すべてグローバル変数になっている。
これならprivateなメソッドはStaticにして引数渡しにすべき。メソッドが何やってんかわからん

コンストラクタでクラスのメンバにアクセスするようなメソッドを呼び出してはいかん、
上と同じ理由で極力引数渡しにして戻り値を自分で設定すべき

ついでにクラス設計がひどい。トポロジーの配列を返すようなメソッドじゃいかんのか
自身のメンバ変数を更新しながら随時計算するようなクラスは典型的なアンチパターン
0427デフォルトの名無しさん
垢版 |
2018/01/13(土) 22:23:26.26ID:ogercqIA
do-whileのまわしかたがおかしい
数を1足しつつ最大値まで計算するだけなのになんでこんなことになってるのか

計算中に最終的な計算結果を作らずに
Print中になんか変なもんをたしてるのはどうか
0432364
垢版 |
2018/01/14(日) 00:42:01.44ID:uRN4GGkv
>>410-411
ありがとうございました。
何となく分かりました。
0440 ◆BrBq2CJg6HGd
垢版 |
2018/01/14(日) 12:11:47.81ID:uRN4GGkv
無駄なレス多過ぎ。

>>342
はいはい。

>>343
そうでもないんじゃ。

>>347
まず先に荒らす連中に言ってくれますか?

>>348
子ども扱いしてごまかすなよ。先に荒らす連中は無罪放免か?

>>349
お前が失礼

>>350
先に仕掛ける方が消えれば両方消える。

>352-352 馬鹿は黙ってろ。

>>357
この男には取って欲しくない。
0441デフォルトの名無しさん
垢版 |
2018/01/14(日) 12:15:44.71ID:uLivRIX+
ウィンドウプログラムを作ってるんですが、Eclipseのコンソールに変数の値とか出力しますよね。
あの出力はプログラムが完成したあとはどうなるんですか?単に捨てられるだけですか?
何か悪影響はありますか?コードは消すかコメントアウトしといた方がいいですか?
0442 ◆BrBq2CJg6HGd
垢版 |
2018/01/14(日) 12:22:22.00ID:uRN4GGkv
>>363
はいそれ差別用語ね。

>>367
荒らしが邪魔をしなければ何も問題は無い。

>>370
人のことは気にするくせに自分は何もしようとしない。

>>371
自分に自信が無いもんだから人をおとしめてプライドを保ちたいんですよ。

>>376
Mind your own work.

>>378
するわボゲ

>>429
変な言い回しするなボゲ
0443デフォルトの名無しさん
垢版 |
2018/01/14(日) 12:44:26.02ID:kJzL10A4
>>442
スーパーウルトラハイパー大池沼キチガイアスペ糖質ガイジマン乙!!!!!!!!!!!
0444デフォルトの名無しさん
垢版 |
2018/01/14(日) 13:14:27.09ID:Ll4Y/1qa
>>441
ログに出力するようにしといて
開発時はコンソールに出したり
運用時はログファイルに出したりファシリティを変えたりする

ただそれも書き方によっては悪影響があったりする
0445デフォルトの名無しさん
垢版 |
2018/01/14(日) 13:18:11.08ID:iVL1VSVx
>>441
プログラムを実行した時の標準出力に表示される
例えばターミナルとかコマンドプロンプトから実行すればそこに出る感じ

Javaに限らずだけど、ログ出力ライブラリ(log4j, java.util.logging, commons loggingなど)ってのがあるからそれを使うといいよ
大抵のは設定ファイルでログの出力先を変更できる仕組みがあるから開発中は標準出力とログファイル、本番はファイルだけとか融通が利く
0446デフォルトの名無しさん
垢版 |
2018/01/14(日) 14:04:55.71ID:7MpxOyR3
スタンドアロンなクライアントアプリならログなんかどうでもいい
わざわざライブラリ覚えなくても適当にコンソールに垂れ流しときゃ十分
0447デフォルトの名無しさん
垢版 |
2018/01/14(日) 15:16:10.90ID:L+PK1JUZ
>>440
>まず先に荒らす連中に言ってくれますか?

恨みを買うような非礼や荒らしを散々したから粘着されてるんでしょ。
まず君が土下座して今までの非礼を詫びるのが筋だね。
先に手を出したのは君なんだよ。
0448デフォルトの名無しさん
垢版 |
2018/01/14(日) 17:42:15.94ID:Rx8+bqnC
すごく初歩的な質問で恐縮ですが、リストに突っ込んだ複数の内容のうち
途中のある内容を削除したら、後ろにあった内容は何も指定しなければ(勝手に)前に詰められる、ということでいいのでしょうか?
0450デフォルトの名無しさん
垢版 |
2018/01/14(日) 17:54:37.68ID:q1SBtCCQ
たかが掲示板に書いてあることぐらいで恨む方も何か病的なものを感じるけどね
0451デフォルトの名無しさん
垢版 |
2018/01/14(日) 17:57:44.51ID:q1SBtCCQ
>>448
普通はそうだと思う。特別にそうでない動作をするように作られたものでない限りは。
0454デフォルトの名無しさん
垢版 |
2018/01/14(日) 22:05:40.26ID:t1pyzP2Y
ファイルのIOの部分難解すぎて意味がわからない。
・文字列を処理したいのにchar型とかint型とか byte型とか
 出て来るしtry catchとかIOExceptionとか何なのかがよくわからない。
・なんとかOutputStreamとか なんとかReader Writerが
 おおすぎてどれを使っていいかわからない。
・オブジェクトを生成して別のコンストラクタの引数に渡している部分が
 何をしているのかさっぱりわからない。
・BufferedReader / Writerとかを使う必要があるのかないのかよくわからない。
・結局文字列を読み書きするのとバイトを読み書きするのが何が違いがあるの?
・for(item : list){}文は使えないの?
0455デフォルトの名無しさん
垢版 |
2018/01/14(日) 22:14:06.66ID:ioBhoZpn
>>454
プログラム書かずにここに書き込んでるからわからないんだよ
5chやめよう
0456デフォルトの名無しさん
垢版 |
2018/01/15(月) 01:10:14.74ID:HUxIyqtw
手短に書かれてる良さげなサンプルをコピペして細かいこと気にしないで利用する
0457デフォルトの名無しさん
垢版 |
2018/01/15(月) 01:52:42.00ID:sGlCIifU
>>454
入門書をよく読むことをお勧めする。
0458デフォルトの名無しさん
垢版 |
2018/01/15(月) 05:48:15.24ID:sS0AnRdF
>>454
Exceptionは例外だ。
例えば、ディスク容量がいっぱいで保存できなかった、権限がなく読み取れなかったとか。
メインシナリオとは別の例外シナリオを考える必要がある。
設定ファイルを読み取れなかったからデフォルト値を使う、ユーザーに知らせる、ログを取る、何もしないのもアリだ。
ただし、ファイルやネットワーク接続は不要になったら閉じなければいけないのでfinally。

IOはJava外の制御できないとことやりとりするわけで、例外は大事。
0459デフォルトの名無しさん
垢版 |
2018/01/15(月) 05:55:25.87ID:uOPIDlxY
try catchや拡張for文はまだしも、標準入出力用のソースが複雑ってそりゃそうだと思うんだけどw
0460デフォルトの名無しさん
垢版 |
2018/01/15(月) 07:18:27.58ID:sS0AnRdF
>>454
ファイルにとって文字かどうかは関係ないので基本byteでやり取り。
1byteずつやり取りすると効率悪いのでBufferに一度貯めてまとめてやる。
プログラム的には文字列として扱う方が簡単なのでReaderを使って内部でbyteにする。
これらを流れ作業で繋いでパイプラインのようにする。

時代がかわれば要不要もかわるかもな。
そういうのにいくらでも対応できる。
スペルチェックするWriterや語尾をにゃんにするReaderとか作ってかませることもできるぞ。
0462デフォルトの名無しさん
垢版 |
2018/01/16(火) 00:24:45.16ID:DxqPwkAO
http://codepad.org/ANK9JtwS

GUIプログラムがAWTの入門みたいなのしかかいたことがなくて
Sceneを使うと複雑なグラフが簡単にかけるらしいので
テストコードをかいてみたんですが
表示の更新タイミングがよくわかりません

repaintみたいなのをよぶ必要があるんでしょうか

35行目までだとすぐにチャートが表示されるのに
スリープをはさむと最初何も表示されずにスリープ後に一気に表示される感じになります

数秒に1回データが更新されてグラフも更新するようなのを作りたいのですがどうしたらいいでしょうか
0463 ◆BrBq2CJg6HGd
垢版 |
2018/01/16(火) 00:29:43.27ID:x7rspFcE
ごめんなさい、これだけ書かせて下さい。

>>443 死ね。書き込まなくていい。

>>434
別に身勝手ではない。使い分けてるだけ。

>>438
そんな言い訳俺はしてない。

失礼しました。
0467遊園地 ◆ExGQrDul2E
垢版 |
2018/01/16(火) 01:44:32.63ID:/gUVmc1B
はいっ! はいっ!!  

「ハイ! ハイ!」  「ハイ! ハイ!」

ぶひいいいいいいいいいいwwwww

  「アイィィィ!ポイ!ポイィィィ!」

「んっ! 」 「んっ!」

35歳 「あっ。あっああ。。。」 「あっ。あっああ。。。」
0468遊園地 ◆ExGQrDul2E
垢版 |
2018/01/16(火) 04:06:45.38ID:/gUVmc1B
はいっ! はいっ!!  

「ハイ! ハイ!」  「ハイ! ハイ!」

ぶひいいいいいいいいいいwwwww

  「アイィィィ!ポイ!ポイィィィ!」

「んっ! 」 「んっ!」

35歳 「あっ。あっああ。。。」 「あっ。あっああ。。。」

    遊園地「ぶひいいいいいいいいいいwwwww」

ぬーぷ 「冬の大空に降り注ぐ彗星」


35歳&ぬーぷ&遊園地「 はいっ! はいっ!! 」

 「ぶひいいいいいいいいいいwwwww」 ( ゚д゚ )クワッ!!  ヘ(゚∀゚ヘ)アヒャ ┌(_Д_┌ )┐
0469デフォルトの名無しさん
垢版 |
2018/01/16(火) 06:48:28.87ID:5cBq9KSA
>>462
残念ながらJavaFXなんか誰も使っていない
グラフ描きたいんならPythonかJavaScriptあたり使っとけ
0471デフォルトの名無しさん
垢版 |
2018/01/16(火) 12:31:42.52ID:1yOH1J8J
グラフ表示なら、Python の、matplotlib、
JavaScript の、D3.js とか

「java 再描画」で検索!
0473デフォルトの名無しさん
垢版 |
2018/01/16(火) 19:30:49.09ID:DxqPwkAO
うー ここ初心者スレなのにグラフ描くために独学で新言語覚えないといけないんですね…

Javaだけプログラムの授業があったからたまたまかけるだけで
実行環境のインストールすらわからない…

ちなみにその2つってスクリプト言語ですよね
ウェブサーバーインストールしてブラウザでアクセすして動かす感じになるんですか?
0475デフォルトの名無しさん
垢版 |
2018/01/16(火) 20:12:11.25ID:EcWnXWqw
>>473
PythonのmatplotlibはAnacondaだけ入れてスクリプト2,3行実行するだけで簡単にウィンドウが開いてグラフが出るよ。
この際だから覚えておくといいけど、基本的にJavaはWebアプリケーションを作るのに使われていて、
クライアントPC上で動かすものを作るのには全く使われていない。
0476デフォルトの名無しさん
垢版 |
2018/01/16(火) 20:14:16.74ID:vhqfaNac
C#なら大丈夫なのかもね
0477遊園地 ◆ExGQrDul2E
垢版 |
2018/01/16(火) 20:22:35.89ID:/gUVmc1B
トリ割れでも、

 2年前から俺の行動を真似た奴は一人も居ない現実が有る。
0481デフォルトの名無しさん
垢版 |
2018/01/16(火) 21:13:54.13ID:1jHrM1eO
設計思想としてはどんなマシンでも動くクライアントアプリケーションが目的っぽくはあるけどな

最初からWEBアプリケーション目指してた訳ではないだろう
0482デフォルトの名無しさん
垢版 |
2018/01/16(火) 21:34:54.25ID:EcWnXWqw
Windowsで問題なく開発できて、UNIXで運用できて、
開発者にも特にUNIXの知識がいらないという点が、業務ドカタ開発には最適だったということだね
結果として、作ったもののポータビリティではなく、作る人間のポータビリティが評価されたわけだ
0483デフォルトの名無しさん
垢版 |
2018/01/16(火) 21:39:07.98ID:b7oTI93s
誰も回答できなくて挙句違う言語使えとか笑える
知らないなら黙ってればいいのに
0484デフォルトの名無しさん
垢版 |
2018/01/16(火) 22:24:19.25ID:hWpj+IiO
これからの時代は awt
0486デフォルトの名無しさん
垢版 |
2018/01/16(火) 22:33:03.49ID:nnS6C3fa
javaFXもコードとUIとスタイルの分離がしやすくてわりと便利

全然流行ってないけどな
0487デフォルトの名無しさん
垢版 |
2018/01/16(火) 22:46:58.76ID:xZ+sY7MY
guiで流行っている言語ってなんですか?
やっぱりwindowsが多い世の中なので、C#とかなんですか?
0488デフォルトの名無しさん
垢版 |
2018/01/16(火) 23:17:14.98ID:5cBq9KSA
今はElectron(HTML/JavaScriptでGUIアプリを作れるプラットフォーム)が流行り
クロスプラットフォームだし
0491デフォルトの名無しさん
垢版 |
2018/01/17(水) 04:44:48.93ID:QQoXqEJq
知識は無いけど偉そうにしてる人しかいないから
初心者なら親切な人が多いC#がおすすめ
0492デフォルトの名無しさん
垢版 |
2018/01/17(水) 07:30:36.39ID:PLdUAXaX
java8では非同期処理に使うテクノロジーってなんなの?
ThreadクラスとコールバックとRxがあるってのは調べた
当方C#erだからTaskやasync awaitと類似のものがあると嬉しいんだが無いのかな?
■ このスレッドは過去ログ倉庫に格納されています

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