Java入門・初心者質問スレ Part.6
■ このスレッドは過去ログ倉庫に格納されています
>>392
1ulpの範囲で誤差は常にあるよ
想定する入力桁数から結果のオーダーを見積もって、適切な桁数で結果を丸めてやらないとダメ 整数で厳密な数字を出したいような計算で出てくるのなんてせいぜい二乗か三乗だろ
pow使わないで定義に従ってベタに掛け算した方がいい
powは科学技術計算とかに使うもんだ >>395
powの結果の話な
結果の桁数がdoubleの有効桁数と比較してそれほど大きくなければ、単に整数に丸めとけば厳密に正しい数字になるはずだけど powは速度遅いから使ってないわ
速度求めるならJavaがそもそもって言われるかもだがw >>386
親クラスの this と子クラスの this は値は同じ
そういうもの おはよう。
なんだ、その表情は?
俺に掘れるてんのか?wwww 拙者www 惚れる と 掘れる
を間違えてしまったでゴザルwwww
予測変換と検索ワードを考慮して、おらなんだwwwで、ゴザルwww 答えてくれた方々、ありがとうございます。
>>382
最低限の知識はあります。
知識で解く系の問題じゃないので調べようがないんです。
>>383
スーパークラスの変数はfでは?
>>385
サブクラスでの代入により、スーパークラスのtypeも変わってしまったってこと
ですか?
>>387
>オブジェクト指向のやりたいことを理解して
>プログラミング言語がそれをどのように実現してるか知る
スッキリはそのように書いてあります。
>>388
スーパークラスに属してるんですか? >>402
>スーパークラスの変数はfでは?
Cougarクラスは、Felineクラスをextendしていると
何となく考えてみよう。
そう考えると、Cougarのインスタンスがgoメソッドを実行すると
絶対にtypeはfにならないという事が分かるだろう。
ところで「extend」はどんな意味か分かるかな?
調べてみよう。 ってブロンズ取ったんだろ?
そこはアホみたいに問われなかったか? もうここもすっかり35歳に乗っ取られたな
答えちゃうお人好しもいるし >>403
回答ありがとうございます。
おっしゃることはもっともだと思うんですが、super.とついているので
スーパークラスのtype変数を指しているんですよね?
その中身がgoメソッド内でcに変わったという理解でよろしいですか?
それとextend(s)の意味は知ってます。拡張するとかいう意味です。
Javaにおいては継承ということで使われているようですが。
>>404
何しろ3割間違えてるので、その中でこのような設問における失点もあったかも
しれません。 >>405
俺が質問しても気にしなきゃいいのに何が気に入らないのかチャチャ入れるから
一見さんが近寄りにくくなってるんだよ。
ここは質問スレなんだから、純粋に質問して、回答が返ってくるという流れは
自然だろう。それが気に入らないなら無理に来なくていいのに。 >>402
今みました
それは
>>406 https://ideone.com/sI9xXn
の15行目「 type = "c ";」
にて自分で super.type すなわち Feline::type を c に書き直しているからなんですよ >>407
>>410
自分で super.type を "c" に書き直しているからです 以下のプログラムは {1, 2, …, n} 上のすべての位相(開集合系)を求めるプログラムです。
とりあえず、適当に作ったのですが、デザインについて添削してください。 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();
■■}
■■ ■■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("]");
■■■■}
■■} ■■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;
■■} ■■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());
■■} ■■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();
■■}
■■
} 数学のことはまったくわからんが
数学とまったく関係ないところで
オブジェクト指向初心者にありがちな超絶スパゲッティなのはわかる >>420
ありがとうございます。
そういうオブジェクト指向のデザインの本でおすすめの本はありますか?
自然言語でいえば、文法の本ではなく作文の本にあたる本。 そういう本読みまくったけど
結局実務で人に修正してもらうまで自分のなにがだめかわからんかったから
自分から進められる本がない コードについての説明ですが、
例えば、 n = 3 の場合、
集合 {1, 2, 3} の部分集合の集合のうち
空集合 { } と {1, 2, 3} を含み、
共通部分をとる操作について閉じていて、かつ
和集合をとる操作についても閉じているようなものを
すべて求めるというプログラムになります。 >>422
ありがとうございます。
とりあえず、読んでみます。
>>423
本を読んで習得したいのですが、そう言われるのではないかと恐れていました。 さんすうのことはわからない
でもまず根本的にだめなところとして
変数が実質すべてグローバル変数になっている。
これならprivateなメソッドはStaticにして引数渡しにすべき。メソッドが何やってんかわからん
コンストラクタでクラスのメンバにアクセスするようなメソッドを呼び出してはいかん、
上と同じ理由で極力引数渡しにして戻り値を自分で設定すべき
ついでにクラス設計がひどい。トポロジーの配列を返すようなメソッドじゃいかんのか
自身のメンバ変数を更新しながら随時計算するようなクラスは典型的なアンチパターン do-whileのまわしかたがおかしい
数を1足しつつ最大値まで計算するだけなのになんでこんなことになってるのか
計算中に最終的な計算結果を作らずに
Print中になんか変なもんをたしてるのはどうか >>428
向いていないというか問題の領域が違うんじゃね? >>410-411
ありがとうございました。
何となく分かりました。 >>435
そのような漢字を使うと35歳に配慮しろと言われますよ 自分に技術がないのは教えてくれないからって言い訳もおかしい 無駄なレス多過ぎ。
>>342
はいはい。
>>343
そうでもないんじゃ。
>>347
まず先に荒らす連中に言ってくれますか?
>>348
子ども扱いしてごまかすなよ。先に荒らす連中は無罪放免か?
>>349
お前が失礼
>>350
先に仕掛ける方が消えれば両方消える。
>352-352 馬鹿は黙ってろ。
>>357
この男には取って欲しくない。 ウィンドウプログラムを作ってるんですが、Eclipseのコンソールに変数の値とか出力しますよね。
あの出力はプログラムが完成したあとはどうなるんですか?単に捨てられるだけですか?
何か悪影響はありますか?コードは消すかコメントアウトしといた方がいいですか? >>363
はいそれ差別用語ね。
>>367
荒らしが邪魔をしなければ何も問題は無い。
>>370
人のことは気にするくせに自分は何もしようとしない。
>>371
自分に自信が無いもんだから人をおとしめてプライドを保ちたいんですよ。
>>376
Mind your own work.
>>378
するわボゲ
>>429
変な言い回しするなボゲ >>442
スーパーウルトラハイパー大池沼キチガイアスペ糖質ガイジマン乙!!!!!!!!!!! >>441
ログに出力するようにしといて
開発時はコンソールに出したり
運用時はログファイルに出したりファシリティを変えたりする
ただそれも書き方によっては悪影響があったりする >>441
プログラムを実行した時の標準出力に表示される
例えばターミナルとかコマンドプロンプトから実行すればそこに出る感じ
Javaに限らずだけど、ログ出力ライブラリ(log4j, java.util.logging, commons loggingなど)ってのがあるからそれを使うといいよ
大抵のは設定ファイルでログの出力先を変更できる仕組みがあるから開発中は標準出力とログファイル、本番はファイルだけとか融通が利く スタンドアロンなクライアントアプリならログなんかどうでもいい
わざわざライブラリ覚えなくても適当にコンソールに垂れ流しときゃ十分 >>440
>まず先に荒らす連中に言ってくれますか?
恨みを買うような非礼や荒らしを散々したから粘着されてるんでしょ。
まず君が土下座して今までの非礼を詫びるのが筋だね。
先に手を出したのは君なんだよ。 すごく初歩的な質問で恐縮ですが、リストに突っ込んだ複数の内容のうち
途中のある内容を削除したら、後ろにあった内容は何も指定しなければ(勝手に)前に詰められる、ということでいいのでしょうか? 4月にJavaにvarが導入されるのを希望に生きる たかが掲示板に書いてあることぐらいで恨む方も何か病的なものを感じるけどね >>448
普通はそうだと思う。特別にそうでない動作をするように作られたものでない限りは。 >>444->>446
ありがとうございました。勉強になりました。 ファイルのIOの部分難解すぎて意味がわからない。
・文字列を処理したいのにchar型とかint型とか byte型とか
出て来るしtry catchとかIOExceptionとか何なのかがよくわからない。
・なんとかOutputStreamとか なんとかReader Writerが
おおすぎてどれを使っていいかわからない。
・オブジェクトを生成して別のコンストラクタの引数に渡している部分が
何をしているのかさっぱりわからない。
・BufferedReader / Writerとかを使う必要があるのかないのかよくわからない。
・結局文字列を読み書きするのとバイトを読み書きするのが何が違いがあるの?
・for(item : list){}文は使えないの? >>454
プログラム書かずにここに書き込んでるからわからないんだよ
5chやめよう 手短に書かれてる良さげなサンプルをコピペして細かいこと気にしないで利用する >>454
Exceptionは例外だ。
例えば、ディスク容量がいっぱいで保存できなかった、権限がなく読み取れなかったとか。
メインシナリオとは別の例外シナリオを考える必要がある。
設定ファイルを読み取れなかったからデフォルト値を使う、ユーザーに知らせる、ログを取る、何もしないのもアリだ。
ただし、ファイルやネットワーク接続は不要になったら閉じなければいけないのでfinally。
IOはJava外の制御できないとことやりとりするわけで、例外は大事。 try catchや拡張for文はまだしも、標準入出力用のソースが複雑ってそりゃそうだと思うんだけどw >>454
ファイルにとって文字かどうかは関係ないので基本byteでやり取り。
1byteずつやり取りすると効率悪いのでBufferに一度貯めてまとめてやる。
プログラム的には文字列として扱う方が簡単なのでReaderを使って内部でbyteにする。
これらを流れ作業で繋いでパイプラインのようにする。
時代がかわれば要不要もかわるかもな。
そういうのにいくらでも対応できる。
スペルチェックするWriterや語尾をにゃんにするReaderとか作ってかませることもできるぞ。 http://codepad.org/ANK9JtwS
GUIプログラムがAWTの入門みたいなのしかかいたことがなくて
Sceneを使うと複雑なグラフが簡単にかけるらしいので
テストコードをかいてみたんですが
表示の更新タイミングがよくわかりません
repaintみたいなのをよぶ必要があるんでしょうか
35行目までだとすぐにチャートが表示されるのに
スリープをはさむと最初何も表示されずにスリープ後に一気に表示される感じになります
数秒に1回データが更新されてグラフも更新するようなのを作りたいのですがどうしたらいいでしょうか ごめんなさい、これだけ書かせて下さい。
>>443 死ね。書き込まなくていい。
>>434
別に身勝手ではない。使い分けてるだけ。
>>438
そんな言い訳俺はしてない。
失礼しました。 >>463
Java以外の事を書くなって何度言われても理解出来ないのか?
幼児脳って本当なんだな。 >>463
オマエは巣で他人に配慮すべきと煩いが、ここでの配慮は無いのか? はいっ! はいっ!!
「ハイ! ハイ!」 「ハイ! ハイ!」
ぶひいいいいいいいいいいwwwww
「アイィィィ!ポイ!ポイィィィ!」
「んっ! 」 「んっ!」
35歳 「あっ。あっああ。。。」 「あっ。あっああ。。。」 はいっ! はいっ!!
「ハイ! ハイ!」 「ハイ! ハイ!」
ぶひいいいいいいいいいいwwwww
「アイィィィ!ポイ!ポイィィィ!」
「んっ! 」 「んっ!」
35歳 「あっ。あっああ。。。」 「あっ。あっああ。。。」
遊園地「ぶひいいいいいいいいいいwwwww」
ぬーぷ 「冬の大空に降り注ぐ彗星」
35歳&ぬーぷ&遊園地「 はいっ! はいっ!! 」
「ぶひいいいいいいいいいいwwwww」 ( ゚д゚ )クワッ!! ヘ(゚∀゚ヘ)アヒャ ┌(_Д_┌ )┐ >>462
残念ながらJavaFXなんか誰も使っていない
グラフ描きたいんならPythonかJavaScriptあたり使っとけ グラフ表示なら、Python の、matplotlib、
JavaScript の、D3.js とか
「java 再描画」で検索! うー ここ初心者スレなのにグラフ描くために独学で新言語覚えないといけないんですね…
Javaだけプログラムの授業があったからたまたまかけるだけで
実行環境のインストールすらわからない…
ちなみにその2つってスクリプト言語ですよね
ウェブサーバーインストールしてブラウザでアクセすして動かす感じになるんですか? >>473
PythonのmatplotlibはAnacondaだけ入れてスクリプト2,3行実行するだけで簡単にウィンドウが開いてグラフが出るよ。
この際だから覚えておくといいけど、基本的にJavaはWebアプリケーションを作るのに使われていて、
クライアントPC上で動かすものを作るのには全く使われていない。 トリ割れでも、
2年前から俺の行動を真似た奴は一人も居ない現実が有る。 馬鹿だから使いこなせないだけでSWTで何でもできるけどな >>475
Androidのスマホやタブレットをお忘れなく。 設計思想としてはどんなマシンでも動くクライアントアプリケーションが目的っぽくはあるけどな
最初からWEBアプリケーション目指してた訳ではないだろう Windowsで問題なく開発できて、UNIXで運用できて、
開発者にも特にUNIXの知識がいらないという点が、業務ドカタ開発には最適だったということだね
結果として、作ったもののポータビリティではなく、作る人間のポータビリティが評価されたわけだ 誰も回答できなくて挙句違う言語使えとか笑える
知らないなら黙ってればいいのに javaFXもコードとUIとスタイルの分離がしやすくてわりと便利
全然流行ってないけどな guiで流行っている言語ってなんですか?
やっぱりwindowsが多い世の中なので、C#とかなんですか? 今はElectron(HTML/JavaScriptでGUIアプリを作れるプラットフォーム)が流行り
クロスプラットフォームだし 知識は無いけど偉そうにしてる人しかいないから
初心者なら親切な人が多いC#がおすすめ java8では非同期処理に使うテクノロジーってなんなの?
ThreadクラスとコールバックとRxがあるってのは調べた
当方C#erだからTaskやasync awaitと類似のものがあると嬉しいんだが無いのかな? ■ このスレッドは過去ログ倉庫に格納されています