Java入門・初心者質問スレ Part.3 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
前スレ >>997
onCreateってのはAndroidでそのActivityが作られたときに走る処理だからそこでgetTextしてもEditTextの中が空だから怒られてる。
確定ボタンをButtonで作ったりキーイベントReturnを捉えるイベントリスナーの中でやるべき。 >>2
わざわざありがとうございます。
ようやく思い通り動くようになりました。
まだ細かい改善点はあるのでもう少し勉強してみます。 >>999
なるほど。ポインタみたいなものでしたか。ご教授ありがとうございます。
>>1000
やはりitemにそれぞれの値を格納するほうがOOらしいですね。参考にします。
ありがとうございました。 あるクラス内の2つのメソッドの中身を途中で何度も書き換えたいんだけどどう実装したらいい?
関数ポインタを扱うのように、途中で関数を書き換えたい。
抽象クラスを継承することで、メソッドの書き換えは出来るものの、継承したクラスの宣言時の一度しか
メソッドを書き換えられないと思うんだけど、他に方法はある? >>7
インスタンス入れ替えるだけじゃだめなのか?
例えばこんな風にして同一のインターフェースを実装した A, B のクラスを作っておく。
interface X {
int methodA(int a);
int methodB(int b);
}
class A implements X {
int methodA(int a) {
// 処理A-A
}
int methodB(int b) {
// 処理A-B
}
}
class B implements X {
int methodA(int a) {
// 処理B-A
}
int methodB(int b) {
// 処理B-B
}
}
で、使う所では
X x = new A();
のようにして int a = x.methodA(1); とか int b = x.methodB(2); とかして使う。class B の方に切り替えたくなったら x = new B(); として同様に x を通して使う。 >>7
なんでそんなことしたいのか説明して
実装の話はそれから >>7
スマホからだから適当だけど
public class Sub{
private Function func;
public void setFunc(Function func){
this.func = func;
}
public Function getFunc(){
return this.func;
}
}
あとは呼び出し側で
Function<Integer,Integer> func = x -> x+1;
Sub sub = new Sub();
sub.setFunc(func);
Sysyem.out.println(sub.getFunc().apply(10));
これでどうだ
使えるかどうかは知らん >>7
Javaは静的に定義してコンパイルする言語だから実行中の動的書き換えは無理
9が言ってるように目的は何なのかを書け >>11
関数ポインタのように差し替えたいって言ってるからinterfaceの差し替えでいいんしゃないの
リフレクションでもいいけど じゃあFunctional Interfaceで
http://ideone.com/AghCys >>7
君の言う「宣言」ってのは「new」の事かな?
抽象クラス「interface XXX」を継承したクラス
「class AAA implements XXX」と、
「class BBB implements XXX」の2つ作ったとして、
「XXX XYZ=(XXX)new AAA()」としたらXYZのインスタンスはAAAだよね。
「宣言時の一度しかメソッドを書き換えられない」と言ってるけどソレって、
newした後で「XYZ=(XXX)new BBB()」と上書きしたらダメだと思ってない?
良いんだよ?XYZに元から入ってたAAAは消滅して新たにBBBが入る。
C言語の常識でmallocしたらfreeするみたいに考えてないか?
あと「メソッドを書き換える」というのは根本的に考え方がおかしい。
考えてるプログラムの構造がC言語っぽい。JAVAにはJAVAに合った構造がある。
短いサンプル書いて意見を聞いた方が良いと思うな。 https://ideone.com/Vf6xoW
上のソースコードが、イデオンだと実行時エラーに
なってしまいます。原因を教えて頂けないでしょうか。 5行目のScannerが佐藤までバッファに読み込んでいて、
7行目のScannerがなにも読み込ないから。
https://ideone.com/0RB6Do >>16
何故IDEとか使わずにコード張るサイト使うのか分からん
とりあえず普通に実行したら実行時にエラー吐かなかったから
idone使う時の入力方法を自分で調べるしかないだろ >>17 >>18
ありがとうございます。
実は前スレでも似たようなことを質問させて頂きました…。
>>18
自分のパソコンに入っているエクリプスでは普通に出力されます。
ここにソースコードを貼るためにイデオンを使ってます。
String name1 = new java.util.Scanner(System.in).nextLine();
という表記法にはどんな問題があるのでしょうか?
スッキリわかるJavaに載っていたのですが。
どなたか教えてくれませんか?
ググってもこの表記法は見つかりません…。 アイディーイーワン
1つのストリームに対して2つのScannerを使ってるのがいけない
俺の環境(1.8系)だとエラーになるよ >>16
表記法の問題じゃないよ。根本的な事が解ってない。
C言語で言う所のgets()と勘違いしているでしょ。
name1に入力してエンター押したら次にname2の入力待ちになると思ってない?
20氏が書いてる事の意味わかる?それだとname1とneme2が同時に開く。
間に「入力待ち」を入れないといけない。
ttp://tkykhk.hatenablog.com/entry/2013/08/15/172825
これで言うとhasNextInt()の事ね。 Androidウェアラブル端末のBluetoothを用いて、端末所持者同士のすれ違いを検知するアプリケーションを製作しています。
APIレベルは19、4.4のKitKatです。
プログラムでは検知したBLEMACアドレスをテキストファイルに書き込む動作をおこなっています。
端末情報の項目などで確認できるBluetooth Device Address(BDA)を取得したいのですが現在は
*Random Addressを取得している
*GATTサーバのMACアドレスを取得している
のどちらかが発生しています。
こう考えた理由は生成したログファイルを確認すると一定時間ごとに同じ端末から得られるMACアドレスが変化している為です。
具体的には、作成したプログラムを稼働させた探知機でBeacon発信機を検出しそのMACアドレスと検出時刻をログファイルに書き込んでいます。
一日の稼働でおよそ100件ほど得られたデータのおいてすべてのMACアドレスが重複しない状態となっているからです。
相手方のBDAを取得する関数またはUUIDなど固有の番号をBluetoothの”検知”段階で入手する手段を教えて頂きたいです。
ご助言宜しくお願いします。 >>23
ここはJavaスレなんで泥特有の質問は泥スレにどうぞ
Androidプログラミング質問スレ revision53
ttp://echo.2ch.net/test/read.cgi/tech/1488052551/ >>20 >>21 >>22
ありがとうございます。
アイディーイーワンって読むんですね。
ちょっと調べてみて、またレスしたいと思います。 16氏のレスは何か学生が先生に質問してるような雰囲気で若さを感じるんだが、
残念な事にIDEをイデオンと読むもんだから40歳以上とバレてしまっている。 一行辺りは半角26文字で600万行あるテキストファイルの中身を
要素の数600万として一行づつ配列にいれていこうと思うのですが大丈夫でしょうか? このテキストファイルもjavaで入力しましたが、全部書き込み終わるのに8時間から半日くらいかかってたと思います。 >>33
ありがとうございます
メモ帳でこのテキストファイル開いてもパッとは開かないので不安ですがやるだけやってみます >>36
メモ帳はね、uniscribeっていうリガチャやカーニングに対応した
高度なテキストレンダラを使ってるからもっさりしても仕方がない ランダムな26文字の文字列600万行のファイルを作ってみたが3秒くらいだった
8時間〜半日かけてどういうデータを作ったのかが気になる その内一般家庭のPCスペックが「京」並になる時代がくるからへーきへーき そういやJavaVMが使うメモリのデフォルトって今は多くなってんのかな?
これが小さい場合は自分で大きくなるようにオプション付けてVM動かさないとメモリオーバーフローになるよな。 vmが入ってる電子計算機でしか動かないjavaに深入りする価値あるんですか。 >>44
価値か。価値ねえ。それはあなたが何を求めているかで変わるんじゃないかな。
例えばAndroid用アプリを作って売るとか、無料ゲーム作ってサイト内課金で稼ぐとか、そういう商売してるなら少し遠回しではあるけどJavaに価値があるということになると思う。
実際に金稼げるわけだしね。Androidの端末は沢山出回っててユーザも多い。 >>44
私もつい最近まで貴方と同じ考えで、javaを使い始めたのは今年からです。
ホームページでの説明にApplet版CADを使い、商品はC言語みたいな事をするつもりで
まずオールJavaでAppletのCADを作ってみたんですが、想像以上に動作が軽かったです。
巨大なデータを扱うつもりで無ければAppletで充分だと思いました。
それより何より、Javaはプログラミングが物凄く楽です。
C言語ですとイベントの順序とか挙動で思い通り行かずグチャグチャになりますけど、
javaだと問題そのものが存在しないというか対策済みという感じですね。
それと、私は未だ弄ってないですが、データベースを触るのが簡単そうです。
あと、Windowsで例えば動画再生なんかはCOMコンポーネントだのDirectShowだの
数々の山を乗り越える必要が出てくる事が非常に多いのですが、
Javaだと専用ライブラリを使ってチョチョイのチョイで済む事が多いようです。
そんな感じで、私はなるべくjavaでやりたいと思うようになりましたよ。 >>28
若くはないですが、40まではいってませんよ。
あれは最初イデワンって読むと思ってましたが、Google検索の予測変換でイデオンってのが多かったから、ついそう読むのかなって勘違いしてしまったんです。 String a = new String("hello world") ;
String a = "hello world" ;
これは略し方の違いなだけで同じ意味なんでしょうか? うん。
手続き型言語では文字列を簡単に宣言できて、オブジェクト指向になったらいちいちnewするとか劣化のイメージだから、特別な記法としてC++とかからの伝統的な記法。 別じゃね?
String a = new String("hello world")では新しく作られたStringオブジェクトの参照が代入されるけど、
String a = "hello world"ではコンスタントプールにある参照が代入される。
"hello world" == "hello world"はtrueになるけど、
"hello world" == new String("hello world") や new String("hello world") == new String("hello world")はfalseになる。
equalsを使ったらどれもtrueになる String の場合は intern() が返す参照を使うと同じ文字列が既にあったら同じ参照になるけどな。
同じ内容の内容の文字列が何度も new される可能性がある場合は使うとメモリの節約になる。 >>51
ま、これでも動かしてみなされ。
public class StringTest {
public static void main(String[] args) {
String s0 = "aaa";
String s1 = new String("aaa");
String s2 = new String("aaa");
String s3 = s2.intern();
String[] ss = { s0, s1, s2, s3 };
for (int i = 0; i < ss.length - 1; ++i)
for (int j = i + 1; j < ss.length; ++j)
System.out.printf("ss[%d] %s ss[%d]%n", i, ss[i] == ss[j] ? "==" : "!=", j);
}
} >>55
Javaなら環境依存はないことになってるんだから実行結果も貼ってみなされ。 FileReaderオブジェクト作ってread、readLineでファイル読み込んだあとにcloseメソッドで閉じることになっていますが、最後まで行ってない場合、closeしなくても良いのでしょうか
そしてそもそもcloseしないでプログラム終了するとどうなるのでしょうか >>59
ファイルクローズは普通はそのファイルへの読み書きが不要になったらするものだ。どこまで読んだかなんてことは関係ない。 クローズしなかった場合はインスタンス消滅前にファイナライザでグロースされるだろうが、そんなもんあてにしてはいけない。
特別な事情がない限りプログラムは必ず自分でファイルクローズするように書くべき。 try-with-resource構文が便利すぎて気にしづらくなった感はある >>62
一応それも自分でクローズするように書いてる事にはなる。何が起きるかわかって書いてるわけだし。 エラーの原因の9割はメモリ問題っていうけど
これって解放すればいいだけじゃね?
つまり全ての作業の最後に解放するコードを常に入れてたら
エラーなんて出ようがないのでは? かってに削除しては、こまる。まだだれかが参照してるかとか… >>64
めんどくさいんだよ。
Cである程度の規模のアプリ作ってみろよ 解放し過ぎて二重にfree()して落ちたりしてなw 質問させてください。
今日パソコンにeqlipseを入れて文字の表示をしていたのですが
出先から帰って再度起動させてから他のクラスを作って実行しても
「現在、表示するコンソールがありません」というメッセージが出て反映させられません。
どちらも新規クラス作成でメソッド・スタブのmainメソッドにチェックを入れて作成しましたし、
コピペして中身が全く同じなのでどこに原因があるのかわからず困っています。
どなたかお知恵を貸していただきたいです! >>69
package jp.winschool.java.chapter1;
public class Sample01_03 {
public static void main(String[] args) {
// Hello worldと表示する
System.out.println("Hello world");
}
}
ソースコードこちらです! よくお互いをロックして制御不能みたいな実行時エラーって
あれどういう原理なんですか?
そういうプログラム逆に組んでみたいんですが… >>71
いやほら A と B の二つロックする変数があって、それを2つのスレッドで、一方のスレッドは A, B の順でロックするようになっていて、もう一方は逆順に B, A の順でロック掛けるようになっているとタイミングによってデッドロックになる事がある。 nullが入力されたらループが止まるプログラム文にしたいのですが、
うまくいきません。
https://ideone.com/N1lSZi
どこが悪いのでしょうか? それはnullっていう文字列だからnullではない
nullの入力で終わらせたいなら "null".equals(sc.next())とかにしないと >>74
入力が終わってるかどうかをhasNextLine()で調べてから読めばいいと思うが。
あとは>>76の言う通り。 http://www6.kaiho.mlit.go.jp/02kanku/aomori/tappisaki_lt/livecamera/index.html
ここのライブカメラを見たいんですがセキュリティでブロックされて見れません。
javaの例外サイトに設定すればいいらしいのですが、どのURLを入れればいいのでしょうか。
あと、これって手打ちのみ? Cをちょこちょこ勉強してたんですが並行でJavaの勉強も始めました
Cそっくりなのに無駄に文字数多くてめんどくせぇなとか思いながらテキスト眺めてたんですがこれメソッドってCで言うところの関数でいいんですか?
呼び方が違うだけ? >>75 >>76-77
ありがとうございました。 たびたびすいません。
正しく動作するようになったのでリンク貼らせて頂きます。
https://ideone.com/fJbFul >>79
関数にはレシーバー(主体)が無いけど、メソッドにはある
インスタンス(レシーバー).メソッド名()
関数名()
スッキリわかる Java入門 第2版、2014
この本を3回読んで、みっちりとオブジェクト指向を学ぶのが、
プログラミングとすべての言語の基本 >>79
ほぼ同じ いちいち使い分けるやつは見たことない
ただし C Java を混ぜこぜにやるのはNG
「見た目は似てるけど根本的に違う」という部分を見逃すとどっちも使い物にならんよ String型変数 の5〜6字目(半角の数字)を2桁のint 型変数として取得したいと思っています。
substring(5,7)で一回別のString型変数に入れてから、Integer.parseIntでint型に変換するんじゃなくて、
直接int型としてsubstring(5,7)で抜き出す書き方はあるでしょうか? >>85
そういうメソッド書けばええやん
1行節約するためにそんなことする意味があるのかわからんけどね >>85
int i = Integer.parseInt(s.substring(5,7));
これでええんとちゃうん? >>79
関数はクラスと無関係なのがメソッドと違うとこ >>82-84 >>88
ご丁寧にありがとうございました。
あと>>84さんのアドバイスですが、類似するもの関連するものを2つ以上学ぶ際は同時並行の方が学習効率が高いという研究がありましてそれに従っております Cは、まだJavaが無かった頃の、手続き型言語の代表
Javaは、オブジェクト指向の代表で、
Java以後は、ほとんどすべての言語がオブジェクト指向になった
C・Javaは、考え方が大きく異なるので、一緒に勉強できない
スッキリわかる Java入門 第2版、2014
まずこの本を3回読んで、オブジェクト指向をみっちりと学ぶ
その後、この2冊をこの順に読む
たのしいRuby 第5版、2016
みんなのPython 第4版、2017
この2冊は表裏一体だから、たのしいで苦しむと、
みんなのはスラスラと読めるようになる
その後、Groovy, Kotlin を勉強すればいい >>89
そうじゃねえ、関連度が低いから無茶だって言ってるんだよ
俺音楽やってんだよねーって弦楽とDTM同時並行とか無理だろ?
せめてバイオリンとビオラくらいに関連してないと厳しい >>89
表面は似ているが根本的に違うから
学習効果はゼロだと言った >>85
String.getChars()もしくはcharAt()で取り出して自作でa2iすればいい >>95
何に対する参考書なんだ?
入門なのか試験対策なのか何かしらの技術についてなのか設計技法なのかはっきりしやがれ ここは入門・初心者質問スレですよ
このスレで質問する人はどんな人なのかそしてどんな本を勧めればいいのか
ある程度予測できないようじゃ立派なプログラマーにはなれませんよ! >>98
すぐに読めとは言わないけど読んだほうがいいのは間違いないと思ってるよ
もちろん趣味プログラマじゃなく職業プログラマになるならの前提だけど 黒い表紙のjava SE8 Gold問題集買って完璧になればJava限定ならどこでもやっていける 95氏は勉強と技術の習得が全く別物だという認識が無いんじゃないかな?
テストで良い点取りたいなら勉強するしか無いけども、
ソフトを作れるようになりたいなら、覚えるより先に何を作るか決めないとダメだよ。
中学校の英語の勉強と同じだね。仮に英語の単語と文法を全て覚えたとしても
テストで良い点数取れるだけで、英語の映画も英文の小説も楽しめないだろ?
プログラミングも同じ事で、勉強したって本に書いてある通りの事しか出来ないよ。
海外旅行する為に日常会話程度の英会話を覚えるって良くある話だけども、
そんな感じで作りたいソフトに必要な事だけを覚えていく感じでやるといい。
私はCADのプログラマなのでCADの事でないと上手く言えないんだけども、
CADなら画面が出て線が引けてマウスとキーボードとファイルの読み書き出来れば充分。
javaは初めて3ヵ月くらいで勉強と呼べるレベルの事はしていないが、
基本的な作業なら出来る程度のCADがもう出来ている。
未だjavaのシステムの構造を理解してない故の不具合は多いし、
クラスだの継承だのpublicとprivateの違いだの、余り深く理解してないけど、
売り物になる程度にまで完成させるのには大して時間はかからないと思う。
たぶんJavaの試験やったら落第レベルだけど商品レベルの物は作れるに? よく「何を作りたいかが大事」って言われるけどそうじゃないこともあるよね
俺なんか最初は「スーパーハカーかっけえ」くらいしか考えてなかったけどなぜかいまやWeb開発だ
みんながみんな最初から明確な目的持ってるわけじゃない ExcelVBAで作ってるアプリケーションをウィンドウアプリケーションとして作りたくてあれこれ勉強してるけど、Java
のGUIがこれまた判らんというか^^;
目標はまだまだ遥か彼方ってな感じ VBAだったらVBで作ればええやん。。。
C#でも良いけどさ。 勉強するにしても何か作るにしても情報は漁るんだし
今は情報過多な時代だし、質の良い情報を得るのはそれなりのスキルがいる状況になってる
その時に一番簡単に信ぴょう性の高い情報を得られるのが公式ドキュメントとリファレンス実装
ただこの辺の情報は文章が硬い事が多いから原典を多く参照している二次情報を探せばいいんじゃないかな >>102
あぁ、ごめん。大きな目標を作れって話じゃない。
画面にボタンを配置する方法を学ぼうとするなら例えば電卓を作るとか、
ボタンを使ったソフトを何か考えろって事。覚えるだけじゃ何も作れるようにはならんのよ。
よく入門書とかで「ボタンを押すと表示が変わります」とかあるでしょ?
それを覚えたとして、それをどう使って何を作れる?
1つづつ順番に覚える学校の勉強みたいな事じゃ何も作れるようにはならんのよ。
君もそうだったはずだよ。上司から「コレ作れ」と言われて本読んだりしたろ?
その「コレ作れ」ってのが私の言う目的が先って事なのな。
何か無いかって聞いてる95氏は指導者が居ないか学生なんだろう。
何を覚えたらどんな事が出来るようになるのか、何から始めてどう進むべきか
そういう事が解らないはずだよ。指導者が居ないから自分で考える必要がある。
それに対して君は仕事の依頼という形で上司に上手く誘導してもらって
あんまり余計な事を覚えずともプログラミングが習得出来たんじゃないか? >>107
それこそ仕事で課題を振られた俺みたいに、>>95が何をしていいかわからないなら
適切な課題を振ってあげるのが指導者の努めだと思うけどね
(そもそも当時の上司の仕事の振り方は今考えても言語仕様も覚束ない初心者に
ノーヒントでやらせるものではなかったが…あのクソ野郎)
初心者に「自分で考えろ」はちと突き放しすきな気はするが、まぁここは初心者スレとはいえ所詮2ちゃんだからな
教師や上司レベルで親切にする必要もないか わかりません教えてくださいじゃ仕事まわらないからな
独学する能力は必須と言ってもいい
最初から独学できないやつをスパッと切り捨てるのはありだよ
企業だってボランティアで素人を飼ってるわけじゃないんだからさ ここは質問スレなのに脱線し過ぎ
ちゃんと仕事できる人はわきまえてるはずだよね 開いているページ内で一度実行してからでないとCtrl+F11で実行のショットカットがうまく動作しません。
ショットカットキーは何か設定する必要があるんですか? プログラミングの勉強初めて数日
何か簡単なツールとか作ってみたいけど
題材として良いものありますか? >>116
まず、GUIにするかCUIにするか?
CUIは普通は画面についてあまり考えなくても良いので楽だ。 >>116
テキストに行番号つけて表示するコマンド作る。
自分のコード表示させてはニヨニヨ出来るのでオススメ。 >>116
自分でこんなのがあったらいいなって小物を幾つも作ると取っ掛かりやすいよ 自分の場合はwikipediaのアルゴリズムで素数判定や素因数分解とか作ったなあ
bashのfactorよりかなり早いから普段から使えるし オーバーロードのメソッドで
/** method1 */
public static String hoge(String str) {
hoge(str, "hage");
}
/** method2 */
public static String hoge(String str, String hige) {
return hige + str;
}
というようなメソッドがあったとして
mehod1はmethod2を呼び出しているわけだが
こういう関係を表現するような日本語ってなんかないのかな
親とか兄弟とかそういう Java初心者なのですが
オラクルのJavaシルバー?の資格取得を目指そうと思ったら、どのぐらい勉強したらいけるのでしょうか
プログラミングの経験はPHPとRubyを齧ったぐらいです >>0121 たぶん貴方には気に入らない解答だと思うけど、
そのメソッドをC言語の関数に書き変えるなら可変長引数の関数になるよね。
int printf(const char *format,,,); こんな感じの。
何の為に言葉を必要としてるのか解らないけども、
要はオーバーロードの仕組みの説明を省こうとしてるのでは?
C言語にはオーバーロードが無くてぇ…という具合に説明するとか、
なにしろ話を聞く方からしたら解り辛い話をしようとしていそう。 https://goo.gl/Y4tSAe
これは嘘でしょ?
本当なら落ち込むわ。。 >>123
人によるとしか…
参考書や問題集が売られているので読んで自分で考えよう イデワンに複数のクラスを書くことは可能でしょうか?
publicを外すことによって。 >>128
知らねえ。
てか、やってみればいいじゃねえか。 >>128
ID:/ZfpN6QHはム板/マ板に住み着いている荒らしなのでスルーで
自分で調べりゃいいことを他人に丸投げして調べさせる、悪意ある質問を繰り返しています >>130
荒らしではない。
悪意ある質問などしてない。 >>131
まあとにかくやってみればわかるからやってみな。 Ideoneの話だからここだとスレチじゃないかね
2chだと専門で扱ってる所無いかもしれんが、他で聞いた方が良いだろうな >>129 >>132
ありがとうございました。
>>133
ソフトウェア板ですかね。 たびたび失礼します。
やってみたら出来ました!
https://ideone.com/V0Jd9h
繰り返しになりますが、アドバイスをくれた方ありがとうございます。 テーブルでA1はHTML内で5に指定、A2に<input type ="number" value ="0">があって、A1セルとA2セルを足したい場合
rowsとcellsで指定するとA2がNaNになり結果が5NaNになるんですがどうしたらいいですか?
この場合inputの初期値0は効かないのでしょうか?A2をparseIntで囲ってもだめでした Javaで、char型の変数に文字を(キーボードから)入力したいのですが、
Scannerクラスを使うとnextChar()が無いためうまくいきません。
next()やnextLine()だとコンパイルエラーになってしまいます。
どのようにすればよいでしょうか? >>139
今のJavaで積極的にcharを使う理由は全然ないんだけど、何か理由があるのかな
まあそれはともかくScannerから一度Stringで受けてからcharAt()すればいいんじゃね? >>140
レスありがとうございます。
本の課題でchar型の入力を使うものがあったので。
charAt()メソッドを使ったら出来ました。
https://ideone.com/O96vZQ
ありがとうございました。 >>142
ありがとうございます。
Scannerクラスより利用頻度は低くなると思いますが、
参考にしたいと思います。 >>143
逆逆、Scannerの方が頻度低くなる >>144
まだ詳しく理解してないですが、
char型を使う場合に、という意味ですかね。
今はScannerしか使ったことないので…。 >>145
汎用性の高さって意味
ScannerよりもIOStreamの方がやってる内容が低レベル(機械に近い)ので見る機会も使う機会も多いよ >>146
分かりました。覚えておきます。
ありがとうございます。 cvsファイルで
1 田中 りんご
3 鈴木 みかん
6 齋藤 ヨーグルト
2 根元 パン
5 根岸 サラダ
4 佐藤 ご飯
こんな感じのやつをソートしたいです。
数字の列が 配列0
名前が 配列1
食べ物系が配列2に入ってます
cvsを読み込んで数字の列を新しい配列0〜5にいれてソートして表示するとこまではできたのですが
後ろの名前と食べ物が同時にソートされません。
やり方教えてください JavaFXでゲーム作りたいけど全然解説してる所ない…・・・
そんなに見放されてるもんなのか なんどもすみません
今は
1 田中 りんご
2 鈴木 みかん
3 齋藤 ヨーグルト
4 根元 パン
5 根岸 サラダ
6 佐藤 ご飯
みたいになってます。 別々の配列じゃ連動とか複雑過ぎ。
クラス作って、クラスの配列で読込やソートすれ。 JavatrてCでいうとこの構造体って無いんすか? >>148
インデックスをソートしちゃえばいいよ
https://paiza.io/projects/Brbmeg7M6bZOYPELm1TOMQ
データは列の集合、列は行の集合になっているけれども
テーブルのようなデータ扱うときは
データは行の集合、行は列の集合
にしたがいんじゃないかな C#には構造体在るけど、Javaは無い。
メソッド無いクラス作れば、事実上の構造体。 Kotlinでは、年齢・名前で、ソートすると、
Alice, Kate, Dave, Tom の順になる
class Person(var age: Int, var name: String) { }
var list = mutableListOf<Person>();
list.add(Person(25, "Tom"));
list.add(Person(25, "Dave"));
list.add(Person(20, "Kate"));
list.add(Person(20, "Alice"));
val sortedList = list.sortedWith(compareBy({ it.age }, { it.name }));
sortedList.forEach{ println("${it.age} : ${it.name}"); } >>150
それぞれの列を別々の配列に詰めたら行ごとの関連付けが面倒くさいから行単位で関連付けてから配列に突っ込むイメージの方が楽
具体的にはもう出てるけど各行を表すEntityクラス作って各行のデータ突っ込んだインスタンスを配列化する 一括りのデータを扱う時はレコードというもので扱うんだよ
レコードには固定長レコードと可変長レコードがある
固定長レコードは各フィールドの長さが決まってるからランダムアクセスすることができる
対して可変長レコードはシーケンシャルアクセスしかできないという欠点がある TreeMap 使えばいいのでは?
TreeMap<Integer, String[]> のインスタンスに put な。 あ、行ごと扱うならキーだけIntegerにして値はそのまんまStringで入れといてもできるな。 return文の考え方が今一分からないです
public class Main05_11{
private static int add(int x, int y){
return x + y;
}
public static void main(String[] args){
System.out.println("10+20=" + add(10, 20));
}
}
この時ってreturn x + y;は一体どこに値を返しているのですか?
int ans = x + y
return ansであれば、値をansに返していると分かるのですが
ansなしでよく分からない所に返しているのに動いているのが分からず…… >>162
return x + y;はx + yの値をメソッドの呼び出し元に返してる
return ans;はansの値をメソッドの呼び出し元に返してる >>163
あ、どっちもメソッドの呼び出し元に返してるんですね
根本的に認識を間違えてたみたいです、ありがとうございます paizaでfor文で解ける問題をforEachで解いてみたら軽く2倍以上の時間がかかったのですが効率悪くないですか?
使い道あるんですかね Java随分離れたけど、forEachって何。
メソッド?
Javaのforeachって拡張for文だったはずだが。 foreachは生えてるぞ。
list.forEach(System.out::println);
とか。拡張forにしろイテレータ使うと要素数によっては処理時間に差がつくな。 ふむふむ。
Linqっぽいの付いたのね。
その用途だとmapとかの方がらしいメソッド名なんだが。 この文脈だと処理時間が2倍なのか解答時間が2倍なのか これだから理系は付き合いきれん
機械の方がまだ融通が利くわ >>168
mapは変換のインタフェースとして別であるよ
forEachはstreamの終端処理だよ 今扱ってるシステムがJava7だからstreamとかラムダ式とか使わないけど
本読んでもよくわからん…… streamなんてSQLとか扱える思考回路があれば使えるぞ 皆最初どうやってjavaを勉強したの?
自分今基本情報処理試験をあとはプログラミングのところだけっていうところまでやったのだけど、カプセル化とかモジュール分けとかオブジェクト指向とかそういう考え方があるんだってういのはわかったんだけど
いざ自分でnetbeansのjavaファイルで書こうとしたらまずはoutprintしてみようと思ったら早速エラーが出てエラー原因が何だか全く分からない
英語の基本文法みたいにそういうの知らないと厳しい気がするのだが
皆の初学の経験を教えてほしい、できれば独学でやった人から聞きたい
あと、何か作ろうって思ったときはフローチャート作った方がいい? >>177
俺は全て独学だがまずはC言語、C++、C#の順に勉強する
するとJavaを半日程度で理解できる下地が出来上がる
何事も基本が大事だ
基本ができてればJavaなどたやすく扱えるし基本ができてなければどんな勉強をしても身につかない
物事には順番がありそれはお手軽に身につくものではない >>177
ひたすらエラーメッセージを読む
エラーメッセージをググる
「java ○○」でググる
「java ○○とは」でググる
「java ○○ できない」でググる
「java ○○ するには」でググる
エラーメッセージで知らない英単語があれば意味をググってからもう一度読む
答えが書いてあるっぽい掲示板が英語で書かれてても臆せず読む
それだけ >>179
こういう知識を啄ばむような雑な勉強方法はダメ
スカスカの知識しか身につかない >>177
まずは入門書1冊買ってきてそれに合わせて勉強するしかない
エラーの原因とかも正しい書き方自体がまだ分かって無い状態だし
後はエラーが出たらググるか
ソースコードどっかに置くかかここに書いて聞くか >>180
体系的な知識を身につけるのは大前提として、エラー対処の知識が要らないわけないでしょう
少なくともJavaを勉強するために先にC#を学ぶなんてトンチンカンなことしてる暇があったらその時間でJavaの
知識を仕入れるべき スッキリわかるJava(という書籍)では、コンストラクタやインスタンスメソッドに
publicが付いてないのですが、基本的に付けない方針で問題無いでしょうか? >>183
ここに詳しく書いてある
http://msugai.fc2web.com/java/permitmod.html
まともにコード書きたいならパッケージの外から呼び出せるかとか一々考えながら書くといいかな(おすすめしないが実を言うとリフレクションで呼び出せちゃうけど) >>182
トンチンカンだとおもっているならその程度だよ君は
C、C++を知らないプログラマなど潜りの素人だし
優れた言語設計のC#をJavaより先に学ぶメリットは大きい
そしてこれらをこなせばJavaも自然とできるようになっている
したがってJavaなんぞは後回しで良い >>185
C、C++、C#を勉強するのにかかる時間はどれくらい?
それはJavaだけを勉強したときよりも短くなるの? >>186
Javaだけやって同じレベルになるより遥かに早いよ
初心者から初めて金を貰っても許されるレベルになるまで1年といったところだな
Javaだけだと10年経ってもその領域に届かないクズが少なくないということはこの業界の先人たちが証明している
急がば回れというやつだ C#を覚えるとデリゲートくれLINQくれプロパティくれ〜ってなるのでよくない >>187
C、C++、C#を勉強してJavaを勉強して到達するレベルを
基準にしたらそれはそうなると思うんだよ
Javaを勉強したいというときに
Javaだけを勉強するのとどちらが効率いいですか?ってことなので
Javaだけを基準にした場合、到達速度っていうのは変わってくるんじゃない?
いろんな言語を1年で齧って回るよりはJavaを勉強したがいんじゃないかな >>177
慣れることが大事なのでサンプルコードを書きまくるのがいいと思う
おすすめは↓の2冊
10日でおぼえるJava入門教室
https://www.amazon.co.jp/dp/4798120197/
新・明解Java入門 (明解シリーズ)
https://www.amazon.co.jp/dp/4797387602/
10日でおぼえる〜は1日目はこれみたいに区切りがいいので
やりやすいかと >>177
元々C言語は知っていて仕事でもずっと使ってた。で、C++が流行り出したので少しは学習したが仕事で本格的に使うまでには至らなかった。
その後かなり時間が経ってからJavaが流行り出して、そこで入門書読んでだいたいわかった感じ。これが20年ぐらい前の話だ。
しかし今まで仕事はずっとC言語ばかりでJavaを仕事で使うことはなかった。Linuxのサーバ側のCで作られたプログラムにずっと関わってたからだ。 >>190
Javaにはろくな参考書がないからね
良書の揃ってるCファミリとC#の方が早く深く学べる
そうして土台が出来上がればじゃあJavaの場合はどうなのという事を覚えるのは実に容易い
結果的にJavaだけを学ぶ場合よりも早く深くJavaを知ることができる >>194
JavaとC#は似てるから
JavaがわかるようになればC#もわかるかと
深くJavaを知るっていうのはつまりC、C++、C#を勉強して到達するレベルの話だよね
そうでなくてJavaを勉強して到達するレベルを基準にした場合
Javaを勉強するのが近道だと思わない? Javaがわかるようになればプログラムの考え方も身についてるから
CやC#もすっと入ってくるんじゃないかな
C++は人類にはまだ早いと思う むしろJava分かったから、C/C++のスタック/ヒープの意味(newするクラスとしないクラスの違い)や、C++特有のフレンドクラスが分かった。
順番はどうでも良いけど、Javaとは別にCは学んでおいた方がいい。 プログラマーたるもの手続き型、オブジェクト指向型、関数型に属する言語を最低でも一つずつは習得しておかんとね
そして関数型に惚れ込んでJavaでもラムダ計算やカリー化をバシバシ使い周りに疎まれる存在となるのだ ruby→javaの順だけど
オブジェクト指向の理解はし易くなった感
javaだと思いっきりソースコード変わるから実感じやすい Javaでラムダ計算はつらいとか考えてたら気がついたらマシンにClojureが導入されてる int型配列の最頻値を求めるメソッドは用意されてないのでしょうか? >>201
標準ライブラリにはないけれども、大丈夫っしょ、余裕っしょ、できるっしょ >>184
ありがとうございます。
よく見てみたいと思います。 >>90
ここに書いてある
スッキリわかる Java入門 第2版、2014
まずこの本を3回読んで、オブジェクト指向をみっちりと学ぶ
この本が、すべての言語の基本。
その後、好きな言語を勉強すればいい >>204
その本悪くないと思うし、あんまりケチつけたくないけど、
Scannerクラスの使い方が詳しく載ってなかった。
(インスタンス化についての記述が無い)
Randomクラスも同様。
過信は禁物か。 >>205
その辺詳しく書いてある本を知りたいわ
Javaは本多いけど、どのレベルまで書いてあるか全然分からん >>207
こういうサイトがある時何から学べばいいの?
俺みたいなちんぷんかんぷんだと上から全て順に読んで、わからない言葉があると調べて、それでも概念的なものがよくわからなくてとりあえずわかったふりしたまま先に進んで結果あまり頭に入ってなかったっていうのがよくある失敗パターンなのだが 「たのしいRuby」など普通の本では、オブジェクト指向の説明は、数十ページ
でも「スッキリわかる Java入門」では、250ページもある。
つまり、Javaの本と言うよりも、オブジェクト指向の本なんだよ。
そして、すべての言語の基礎になる
だから、この本は、歴史的な本と言われるわけ。
これ以前には、オブジェクト指向を勉強する、簡単な本は無かった
未だに外国では、この本が無いから、
オブジェクト指向を勉強するのに、四苦八苦している あと、javaを実行する時とJSPを実行する時、それぞれpublic class{とか<%とか必要だと思うんだけどこれがないとコンピュータが処理であると認識しないっていうこと?
それとprivate class とpublic class の違いもイマイチわからぬ
Privateはそのクラス内でしか呼び出せないっていうけど、そもそも呼び出すってなんぞや >>207
もう一個質問お願いします
extends 抽象クラス
その後に具体的な処理を書くって書いてあるけど抽象クラスを定義する意味ってあるの?
具体的な内容を記述するならそもそも抽象クラスを定義する必要あるのかなって
抽象クラスとかは使い方もわからないしそもそもなんでそういう考え方をするのかも理解ができない
何が言いたいかというと例えば車っていう抽象クラスがあったとしてそれは排気量を記述しなければいけない、メソッドとして走る機能を持つって事として
後で具象化クラスでextends車で抽象クラスを呼び出した時に結局排気量=なんたら、とかを記述しないといけないじゃない
だから、そういう制約的な意味しかないんじゃないかなと
プログラミングにおいて便利にするためにそういう事をしてるはずなのに、その利便性がイマイチ掴めないのだ
今は繰り返し処理とかつかって素数を求めるプログラムを作るっていう事を書いてるレベルだから、もっとゲーム的な方に行くとその意味がはっきりするのかね? もうはっきり言ってしまうとプログラミング初心者がオブジェクト指向型言語なんてものから始めるべきじゃないんですよ
たかだかHelloWorldやFizzBuzzするためになんでクラスやアクセス修飾子を気にせねばならんのだと
それでもどうしてもJavaから覚えたいなら身の丈に合わない疑問は飲み込んでひたすら前に進むしかないのですよ つっても、もう世に出てる言語の殆どはLL含めオブジェクト指向言語だろ。
。。。関数型言語の世界へようこそ? >>212
例えばその走るって動作には、燃料と空気を供給してエンジンを作動させて動力を生み出すという過程があって、これは二輪でも四輪でも共通である(現実にはエンジンごとに違うがここでは無視)
二輪と四輪のクラスを作るとしてそのベースになる車というインターフェースを定義するとして、両方に同じことを書くことになって、それは無駄だからその部分を抽象クラスとしてまとめてしまおうという考え
間違ってたらスマソ >>210
>未だに外国では、この本が無いから、
>オブジェクト指向を勉強するのに、四苦八苦している
それはないww
そこまで書くとステマかと思うわ >>212
そういう前提があるっていう事でしょ?でも実際処理で車のエンジンの仕組みは重要じゃなくてどのようにそれらの車が動くかが重要になるのじゃない?
マニュアル車ならクラッチ操作、オートマならレンジチェンジ(でいいんだっけ)などの具体的な操作を個々に記述して行くと思うんだけど共通の仕組みそのものを定義する事は便利さには繋がっていないんじゃないかなって
確かに車はエンジンがないと動かないけど、プログラム上では(ってかユーザーにとっては)エンジンがあるかないかなんて関係が無いんじゃないの?
定義しないといけないっていう具体的な例があったら教えて欲しい 窓はガラスでできている。そのガラスを使って窓を開け作った上でこっちに押したら閉まる、こっちに押したら開くなどのことが出来るようになる
だからまずはガラスでできているという共通前提定義が必要となる。それはわかる
でも実際プログラム上でそれがどう有効なのかがわからない
人間クラスに名前はまず名前、年齢が必要、その上で個々の動作をして行くわけだけど定義してそのクラスを呼び出しても結局年齢とかは手書きで書いて行くわけじゃん
例えばどういう時にオブジェクト指向を使ってるのかとかあったら教えて欲しい、ゲームとかでもいいので 確かに個々の動作を書くのには抽象クラスは全く役に立たないよ、ただプログラムを動かすにはその外から見て重要ではない部分が必要なわけで、その部分が共通だとコピペするのは簡単だが後々の修正が大変、だからまとめておくと >>219
具体的にプログラムの世界だと何をまとめるの?実行するための記述以外にプログラムそのものを動かすために必要なものの具体例がわからないのだが JavaにはListって可変長の配列を作るためのインターフェースがあるけど
http://docs.oracle.com/javase/jp/7/api/java/util/List.html
これだけのメソッドを実装しろと要求してくる
そしてこれを使って中身の違う実装を作るときに全部を何度も実装するのは骨が折れる作業だよね
そこでAll系のメソッド等他のメソッド呼び出しで書けるものを抽象クラスに書いておけば実際に実装するときに書かなくてよくなる(効率化したいとかだと書いてもよい)
折角クラスライブラリのソースあるんだしAbstractList辺りのソース見てみるといいよ 分かりにくい説明しかできなくてすまんの、多分現実の物体で考えずにプログラムとして直接考えるのが一番の近道じゃないかな >>220
たとえば共通の手順とか
テンプレートメソッドと呼ばれるパターンの例(HeadFirstデザインパターンより)
http://i.imgur.com/4m0ZWv7.png
コーヒーでも紅茶でも抽象化した手順は同じたし
お湯沸かしたりカップに注ぐ部分は全く同じ
今はJavaでも抽象クラスとは違う方法でも実装できるけど
こういう基礎の理解は必要 ゲームのマップを作ろうと考えています。
マップ画像を表示させ、マップ上の任意の部屋をクリックすると、その場所の名前(ロビー、キッチン、ベッドルーム、など)を表示するようにしたいです。
この処理を実装するには、どのような方法がスマートでしょうか?
各部屋の形は四角形ではなく、円や三角形など複雑な形をしているので、単純に四隅の座標を部屋名とともに配列に格納しておき、クリックした座標を内部に含むものをfor文で回して探索する・・・という方法は難しいです。
どうかお力添えください。 ゲームは、オブジェクト指向の最高峰
キャラクタークラスから、勇者・魔法使いなどを、
モンスタークラスから、スライム・ゾンビなどを派生させる
is-a, has-a とか勉強すれば?
消防車は車の一種。is-a。継承
車はハンドルを持っている。has-a。部品
「スッキリわかる Java入門」では、オブジェクト指向の説明が、250ページもある。
ここ20年間、世界中の中年のCプログラマーが、皆、C++へ移行できずに撃沈している
オブジェクト指向がどれぐらい難しいか、分かるでしょ?
だから、スッキリが日本中に、革命を起こした >>224
java.awt.Shape interfaceで定義される、containsメソッドは、
指定された点が、図形の境界の内側にあるか否かを判定する
「java 図形 内側」などで検索! 超単純にやるなら
・種別(矩形、三角形、円)
・パラメータ(最大4つ)
頂点の絶対座標もしくは円の中心座標&半径
とやって判定時などに種別に応じて処理を分ける
それと一つの部屋?を分割して単純な図形の組み合わせにする
回転が必要なら矩形を2つの三角形に変える
スクロールとか必要ならもっと面倒だけど
プロパティかパラメータを増やせばなんとかなるべ Javaプログラマはオブジェクト指向をよくわかってない人が多い
C#プログラマはみんなよくわかってる
C#マイクロソフト公式の参考書など良書が揃っているからね
Javaはろくな本がない
初心者をごまかしてわかった気にさせるような本ばかりだ それってあなたの感想ですよね?
なんかそういうデータあるんですか? いちいち部屋分割して図形の頂点座標測ったりとか種別とかやってられないでしょ
元のマップとは別に、それぞれ部屋ごとに色で塗りつぶしたマップを用意して裏で読み込ませといて、クリックした地点のカラーコード読んで色に対応した部屋名を取り出す
ってのを考えたんだけどどうよ >>230
それ「宿題家に忘れました」と同レベルじゃないですかー >>232
バカなの?
宿題と同じ感覚で会社のデータ持ち出しちゃうんだ君は >>233
説得力が皆無だからそれ以上非論理的な話をするのはやめとけと言っているだけですよ
データを他人に見せられない主張に意味などない
まぁ所詮2ちゃんだし、それでもわめきたければ好きにすれば? まぁポンコツな会社にはポンコツが集まるって言われてるし >>234
そもそも君を説得する必要もないしね
事実は事実として変わらないことだから君がどう思おうと何の影響もない 会社にありますはガイジすぎる
そんなん通るならC#プログラマーは全員屑!証拠は俺の会社にある! というか俺の会社じゃなくてもどの会社にでもある
過去の案件を分析すれば答えは出るよ
Javaがいかに失敗を生み出してきたか数字ではっきりと出てくる
GW明けにでも調べてみるといい 今から勉強しようとしてる人向けの話じゃなかったのか?
今から勉強しようとしてるのなんて学生に決まってるんだから会社の資料は見れないでしょ……
まさか社会人にもなってやっとJava勉強しようとしてる意識低い系の話なのか? 去年調べた結果だと、Javaの方がC#より三倍生産性が良かったよ。
今年は知らんが、多分同じじゃない? public class void String NewClass() {
System.out,.print ("hello");
}
実行しようとしてもエラーが出る
identifierがありません。
全く持って意味が分からない… おまじないがおかしいよ
ますおまじないをそらで書けるようになってから応用しなさい
あとoutの後ろの,はいらん >>242に関しては自己解決しました。
もう一つ質問だけどとりあえずネット上にあるサンプルを使ってコードを書きまくってみようと思ってるのだけどなにかコードを記述したいって思ったときに
public static void とかprivateとかいろいろあると思うんだけど何を基準に選んだんラいいの?
あと、いまやっとこさこれが書けたんだけどこの言葉から記号一つ一つの意味まで全部把握しておいた方がいい?
public class NewClass{
public static void main(String args[])
{
System.out.print("表示できるか??");
}
}
main このmainっていうのはクラス名?あとどこかでclassは一つのファイルに一つまでしか書けないって書いてあったけどこれにはclassが入ってないけど例えばオブジェクト指向で新しいクラスを作りたいってなった時に
classはファイル名と一緒でなければいけないって書いてあったのだけど、どうやって考えたらいいの? 多重に質問申し訳ない
言葉を覚えての色々な事を質問して回る子供だと思って聞いてほしい
javaの構文を覚えるときは皆一つの熟語として覚えてる?
例えばこういうときは
public static void main(String args[]){ を使うんだ、みたいなものを一つひとつの意味を考えないで丸ごと覚えているイメージ?
あとついでにもう一つ頼む、args[]の[]は配列を表すものだったと思うんだけどよく見るこのコードはなんで配列を指定しているの? お願いします
今まで出力はコンソール上またはjspをつかってweb上だけに計算結果を出力させてたんだけどより実践的にwebにつながなくてもコンピュータ上だけで処理させるには何が必要になってくるの?
あとテキストボックスとかラジオボタンとか使いたいのだけどその際にはimportとか必要になってくる? 全てに意味があるんだから全て覚えなさい
「ファイル名 class」
「mainメソッド」
「アクセス修飾子」
「staticメソッド」
「引数」
「戻り値」
「戻り値の型」
「コマンドライン引数」
このあたりで調べなさい
全部まともに答えるには金取らんと割に合わんレベルだよそれ public
static
void
main()
String args[]
{
それぞれの意味を覚えてる
args[]は実行時の引数の格納するから
javac test.javaでコンパイルした場合
実行時にjava test aaaとするとarg[]にaaaも含まれる
コントロールはjava コントロール名とかで調べる 個人的には最初から1から10まで理解しようとしたら
頭がパンクするだろうから、ある程度は絞ったほうが良い
@public class Tes {
A public static void main(String[] args) {
B System.out.println("hello java");
}
}
まずは
@:ファイル名とクラス名が同じじゃないと、Javaのプログラムって動かないんだなーぐらいは覚える
A:とりあえず動かすにはこの魔法の呪文が必要なんだぐらいしておく
B:文字列出力するのはこう書くのかー
ぐらいが理解できれば次に進んで良いと思うわ
最終的にはpublic、static、void、stringとかの意味も理解する必要はあるけど
それを利用する(あるいは目的を持って変更する)場面を知ってからじゃないと、結局分からず仕舞いで終わるだろうし
上で書いたソースしか知らない段階でvoid調べて、「何も値を返さない時はvoid型を指定する」とか見ても
理解できるどころか「値を返す、返さないってなんやねん!」ってなって意味が無い どこから突っ込んでいいのか。。。
ここで質問するより入門書読むなり、入門サイト読むなりした方が良いよ。
分からないことが整理出来てから質問しなさい。
そこまで何も知らない状態で質問されても、入門書くらい読んでからにしろよと呆れられるだけ。 わかりました。
じゃあすっきりJAVA入門ていうの買ってみることにします。
ちなみにこれをやれば基本的な文法は理解できるようになりますか?
自分は今コーディングするたびに〜〜classにはメソッドがありませんとか型の開始が不正ですとかidentifierがありませんとか
そういうエラーメッセージに苦しめられてる状態ですけどそういった部分も解決できるでしょうか?
それといろいろなコーディングの例ものっていたりするでしょうか?
とりあえず今やりたい事としてはアプリ上にテキストボックスなどを置いてユーザーからの入力に対して対応できるプログラムが出来ればいいなと思ってます
つまり、今は素数一覧判定するプログラムを作ってあるんですけど内部で数値を書いてファイルを実行して初めて表示されるのだけど、コードの内部を知らない人に使ってもらえるようなアプリを作れるようになるかというところです
自分全くの初心者なのでわかりやすさと、どのレベルまで行けるかっていうのを教えてもらえると嬉しいです、それと、第二版と二種類あるみたいだけど安い方を中古で買えば問題ないですか? GWでJava勉強してるやつ、進捗どう?
手遅れ感感じた? >>252
メモ帳か何かでコード書いてるのだとしたらIntelliJ使ってみるといいかもな >>252
mainメソッドねーよとか、正しいmainメソッドの書き方じゃねーよって怒られてるだけ。
入門すれば何怒られてたのかも分かるから。 入門書は大抵古い面倒な書き方->新しい楽な書き方の順で紹介する。
なので長い目で見たら新しい入門書のが良い。
到達出来るレベルは楽な文法覚えてるだけで何か作れる訳じゃ無い。
どっち読んでも大差はない。
英語覚えたから英語ペラペラか?
言語ってのは使ってナンボ。
入門したら、簡単なので良いからさっさと何か作る。 >>258
なるほど
つまり作るための下地は作れると考えて大丈夫? うむ。
最低限はね。
複雑なのはWebで本家のドキュメント眺めながらとか。
あなたのアイデア次第の部分のが多い。
作り方を思いつけるか。
調べられるか。
知ってるか。 >>260
発想の部分は好きだから多分いけると思う
むしろ色々な事をどんどん広げて行きたいと思う
事務職でマクロやってた時も結構複雑な処理をネットで調べたりして実装してた
知ってるか
っていうところがちょっと不安だけど大丈夫かな
でもとりあえず「オブジェクト指向 例 」「メソッドとは」「クラス 定義 必要性」とかわからないままを永遠にループ検索することはとりあえずなくなりそうでよかった
早くAmazonからこないかな しかしJavaで書籍というか入門書無しで勉強する人おるんだな
大体はスッキリの入門、やさしいJava、明解のどれかから手を付けて始める印象が多い
というかせっかく入門書一杯あるんだから利用しない手はないべ 知ってるかは思いつけるかと調べられるかの繰り返しによる積み重ねだから、心配は要らない。 エネルギーを2chに使うのをやめないと本読んでも意味ないんじゃないかな 配列について質問です。
…{1,2,3};
という表記法と、
…new int[]{1,2,3};
という表記は何か違いがあるのでしょうか? newの方が本来の書き方で、newしない方はCからの移行組のために単純に書けるように後から作られたもの。 >>268
そうなんですね。ありがとうございます。
どちらかではOKでどちらかでは駄目という場面とかありますかね? 無い。
楽な方選ぶ。
(なので大抵newしない方で書かれる) >>270
分かりました。ありがとうございました。 インスタンスの同一判定で違いが有るという話を見たこと有るが、
配列のインスタンスを判定する事自体がダメな事だと思ってる。
それより、int result[]=new int[10];
なんて書き方は覚えたての頃に少しした程度で、
今は、int result[]={ 0,1,2,3,4,5,6,7,8,9 };こう書くよなぁ…
C言語は知らなくても慣れてくるとみんなこうならない? なる。
実はC++だとnewする、しないはスタックかヒープかの違いがあって、new int[n]とか宣言時に[]内に変数使える、使えないとか、配列作れる限界もnewした方が大きいとか違いがある。
でも、Javaは基本型以外は全部ヒープに置くので配列はヒープにしか置かない。
C形式がまだ無かった初期の入門書には何故配列をnewするのかの解説まであった。
Javaにおいてnewするしないに違いが無いなら、してられっかよ。って誰も書かなくなった。 と納得したのですが、突っかかる箇所があるのでまた書かせて頂きます。すいません。
今読んでいる書籍の問題で、(必要な個所だけ抜粋します)
public class Player {
int[] hand; // 手札配列
}
の実行用クラス(Exec)を作成しろという問題で、
Player player1 = new Player();
とした後、player1の手札配列に{2,13,26,13,48}をセットしろとのことなんですが、
player1.hand = {2,13,26,13,48};
とするとコンパイルエラーになるんですよね。解答には、
player1.hand = new int[]{2,13,26,13,48};
と書いてあり、そう入力するとエラーは無くなります。
なのでこの二つの表記法に文法的な違いがあるのでは?
と思ったわけです。
改めて皆さんの見識を伺いたいです。
本には違いはほとんど書かれていませんでした。 >>274
new を省略できるのは初期化の時だけ。あくまでも初期化の時だけ特別に書くことを省略することが許されている。
(書かれていないだけでやることは同じになる)。 >player1.hand = {2,13,26,13,48};
>とするとコンパイルエラーになるんですよね。解答には、
そのエラーメッセージで検索すべき!
それでも分からなければ、そのエラーメッセージをここに書いて、質問する 推測で書くけど、
型 a = {2,13,26,13,48};
これは、配列リテラル。
初期化時の、特別な書き方
たぶん実行文じゃない。この行で実行されるわけではない。
アプリの開始前に、コンパイラが置き換える。
即値、つまり、既に何もせずとも値になってる
型 a = new int[]{2,13,26,13,48};
一方、これは実行文。この行で、newが実行される >>274
Cだとそもそも宣言時以外はそう言う書き方出来ないんだが、そうか、クラスのフィールドだと宣言と初期化が別れるな。
宣言と同時に初期化する時のみの特別な記述としてnewしない記述は使える。
それ以外はnewしないとダメ。
説明が雑ですまん。
理由は基本型じゃ無いから。
ヒープに置くのは全てnewが必要で、記述上特別扱いは配列の宣言と同時に初期化する時と、文字列のみ。
Cなんて、宣言と初期化が別れたらforで一個一個配列に値を入れるしか無いって言う。。。 多くのレスありがとうございます。
エクリプスでは「配列定数はイニシャライザにおいてのみ使用可能です」と表示されました。
皆さんの言うように{1,2,3}という表記法は初期化時のみしか使えないということみたいです。
でも>>274の場合は初期化に相当しないのかな、と思うのですが…。 >>279
それは初期化であってる。
んで、newしなくて良いのは「宣言と同時に」初期化する場合のみ。
クラスのフィールドでint[] a;ってなってるのが宣言。 x int[] a;
o int[] hand;
人のコードよく読んで無かった。。。 >>277
書き方違うだけでコードは同じように new する形式になっていると思うが。
というのは何れの書き方でも a[1] = 2; みたいに内容を後から変更可能だから。
ただし static の場合は書き換え可能なデータ領域に最初からインスタンスがあって
(つまりコンパイラがそれを含めた形でバイナリを作ってあって)そこへの参照を a に
代入するだけになるかも知れない。
static でない場合は普通に実行人ヒープに領域確保してからリードオンリーの
データ領域(コンスタントプール)から初期値をコピーしていると思う。 まあどうなってるか見たいならコード書いてコンパイルしてjavap通せ >>281
そうなんですね、分かりました。
繰り返しになりますが、多くのレスありがとうございました。 今日からjavaの本で学習し始めたんだけど
慣れたらpublicなんたらかんたらとか長い分も自分で一からかけるようになるの 確かに自動生成されるけど、慣れるといつのまにか暗唱できるようになってる。
という感じ。 IDEでもテキストエディタでも入力補完機能があるから
わざわざ覚える事でもない >>287
なる。
1〜2秒ぐらいで打てるようになる。 まぁでも本で勉強してればmainメソッドの成り立ちなんてじっくりねっとり解説されるから嫌でも覚えちゃうよね 画像解析のソフトを使うのにJava Library Pathを追加しないといけないのですがJavaをインストールした後の最初から躓いています(;;)
https://github.com/qupath/qupath/wiki/Working-with-MATLAB
この真ん中あたりに書いてある
Option #2: Control MATLAB from inside QuPath
-- Add MATLAB libraries to QuPath's Java Library Path
で,JVMOptionsをどうやって作ったらいいかわかりません
下記のページの最後「パスの設定は完了」ってところまでやったんですが..
http://techfun.cc/java/windows-jdk-pathset.html
関係ないソフトでてきてごめんなさい >>293
なにがしたいのかわからん
そのソフト使いたいだけならexe形式のインストーラあるからそれ使えばええやん? スッキリわかるjava入門でどこJavaじゃダメだからコマンドプロンプトっていうのを使ってくれって書いてあったんだけど、正直よくわからないからそのままnetbeansぇ続けても大丈夫? >>295
説明不足でごめんなさい
この2つのソフト(コマーシャルのMATLABとオープンのQuPath)はどちらも独立して使えてはいるんですが,片方のソフトからもう片方のソフトを呼び出せる機能があってそのことが書いてあるのが最初に添付したリンクです.
QuPath内にあるQuPath.cfgをJVMOptionに移動させるのが最初のステップなのですがそのJVMOptionが作りかたがわからないのです. 大丈夫大丈夫
これからも正直よく分からないところはどんどん飛ばしていけ
そうすれば正直よく分からないところで悩む必要無くなるから >>298
そもそもそのページがMATLAB → QuPath(op #1)とQuPath → MATLAB(op #2)の両方書かれてるのは理解してるよな?
op #1はMATLAB側の環境を整えてる
同#2はQuPath側だな
んで問題の箇所は簡単に済ませるならjava.library.pathをQuPath.cfgの中に記述しろって書いてるだろ?
実際のファイル見てないからわからんが、テキストエディタで見れば最低でも[JVMOptions]の行はあるだろうから、その下に追記してやればいい
例で書かれてるのはMAC版みたいだから自分の環境に合わせて書き換えろよ public class 素数判定 {
public static void main(String[]args)
{
int sum=0;
int a =new java.util.Scanner(System.in).nextInt();
System.out.print(a+"=");
int m=a;
boolean test=false;
for(int i=2;i<=a;i++){
if(a%i==0){
if(m!=a){
test =true;}
while(a%i==0){
a=a/i;
sum++;
}
if (sum!=1){
System.out.print(i+"^"+sum+"・");}
else{
System.out.print(i+"・"); }
sum=0;}
}
if (test==false){
System.out.println("\n"+m+"は素数です!");
}}}
書いてみたのだがすっきりしない
式の最後によけいな「・」が出てしまうし、iのループ中で一回でもtrueが出ればそのあとは判定しなくていいわけだし
改良点があれば教えてほしい >>301
trueになった時点でbreakしたら素因数分解できないでしょ >>303
そう
だからtrueを判定する適切な場所がどこだかわからない 100が素数かどうか調べる時は√100まで
つまり2〜10でええんやで >>305
ルートを出してその整数部分だけ使えばいいのか
そういうの出来たっけ? >>301
「・」は出すように書いてあるからその通りに出てくるだけ プログラミングっていうかゲーム作りって言ったらGUIとかアニメーションを使うのが一番に出て来ると思うんだけど、javaのコーディングでできるものなの? >>311
そうなんだよね
自分もそれを投稿した直後に気付いた
If(m!=a)をif(m!=i)にしたら直った
累乗の数はそうなっちゃってたみたい
今はネットビーンズでプログラミングしてコンソール上で処理を表示させてるんだけど普通のアプリと同じようにダブルクリックして起動させるようにするにはどうしたらよいの? >>315
jarファイルのMANIFEST調べろ >>310
例えばMinecraftはJavaとOpenGLのライブラリを使って書かれている >>293-300
MATLAB は、Python だろ
The Jupyter Notebook ( IPython )
ブラウザで、tmpnb クラスのフィールドとかメソッドを書き換えられないようにfinalをつけるっていうけどソースコードそのものを渡さないとクラスが使えないだろうしfinalを外したりするのは自由にできてしまうのではないの? >>320
いいやコンパイルされたクラスにシンボル情報が付いてるからソース無くても使える
余談だかこれのせいで逆コンパイルしやすいそうな 継承について質問させてください
public class Parent{
public void hoge(){ System.out.println("p_hoge"); }
private void piyo(){ System.out.println("p_piyo"); }
}
public class Child extends Parent{
public void hoge(){ System.out.println("c_hoge"); }
public void piyo(){ System.out.println("c_piyo"); }
}
public class Main {
public static void main(String[] args) {
Child child1 = new Child();
Parent child2 = child1;
child1.hoge(); // c_hoge
child1.piyo(); // c_piyo
child2.hoge(); // c_hoge
child2.piyo(); // error: piyo() has private access in Parent
}
}
ここで、child2.piyo()がコンパイルエラーになるのは何故でしょうか
確かに型はParent型ですが、単にChildインスタンスへの参照を代入しただけなので
関係ないかと思ったのですが
実際child2.hoge()はChildクラスのhogeメソッドを実行してますし、Parentクラスの
piyoメソッドのアクセス制限をpublicにするとchild2.piyo()は「c_piyo」を出力します
あるいは Parent child3 = new Child();としても同じ結果でした
コンパイルの際、型情報はどういう順番でチェックされているのですか? >>322
こんパイル時は単純に変数が何クラスなのかしか見てなくて、それの場合はParentクラスだからその定義を見てpiyo()メソッドはprivateだからエラーにしてるだけ。 >>323
なるほど、コンパイル時は型情報のみでチェックをして、中身は実行時に初めて見てるのですね
参考書の「実行時のインスタンスを想像しながらプログラムを書いてはいけない」という意味がようやくわかりました
ありがとうございます エクリプスやコマンドプロンプトから別ウインドウを開いてシンプルな折れ線グラフを表示したいのだけど、何をどうすればいいかわかりません。
swingとかいうのを使えばいいのでしょうか? System.exit(1);(数字は任意)はなるべく使わない方がよいのでしょうか? >>326
その数字は終了ステータスと言って0以外だと異常終了したって扱いになるからちゃんとしたコマンドを作るなら使い分ける必要がある メソッドの中カッコ(インデント)は改行しないで書くのが習わし?
あと、次の処理を行うまで2秒とか時間間隔を置くコードがあれば教えて欲しい もう一個質問
クラスから作ったインスタンスって他でも利用できる?
メインでheroクラスのhを作ったとしてhのhpがあるメソッドによってデフォルトの100から50減ったとする
他のメインで呼び出した時hpが50減ったまま反映されてるのかな つまり
public class main {
public static void main(String[]args){
wizard w =new wizard();
matango m=new matango('あ');
w.name="タカ";
w.attack(m);
w.fireball(m);
System.out.println(m.hp);
}
}
こういうコード書いてるんだけどこれだと毎回実行するたびに新しいmatangoが生成されてhpも全てリセットされちゃうんだ
メソッドで実行したこういう情報を保持しておきたい
他のメインメソッドで一番最後の行のmatango.m..hpをsystemoutしようとしたら変数が見つかりませんってなっちゃう 実行時引数で受け取るor外部ファイルor共有メモリ
後何があるかな 外部プログラムに情報を渡したいってこと?
いろんなとこで使うならDB保存でもすればいいんじゃないかな Javaの公式リファレンスは
https://docs.oracle.com/javase/jp/8/docs/api/index.html
これしかないのでしょうか?
出来れば実際にメソッドを使った時の挙動も示してある物が見たいのですが、どこにも見当たらないもので・・・・・・ >>333
公式はそれだけ、クラス名やメソッド名でググるしかないよ >>334
マジですか・・・・・・
プロの人はこれで動きが分かるのでしょうか
とりあえずはクラス名とメソッド名でググるようにします、ありがとうございます Pythonのリファレンスとかが詳しすぎるだけで本来こんなもんだよ、(多分俺の読解能力が腐ってるせいで)意味不明だからソース読みにいったりすることがよくある >>336
Rubyのリファレンスみたいなのを想像していたので戸惑いました・・・・・・
もし詳細な言語仕様が書かれた書籍などがあればそれも知りたいです 外部に渡すっていうより、
public static void main(String[]args){}の中に一緒に記述してたらインスタンス(勇者)を作るのと敵と戦うが同時に起きてしまって、敵にHPを減らされてもまた同じメインを実行したら勇者のHPも最初からにりせっとされちゃうじゃない
ゲームで言うセーブみたいな機能ってjavaでどうやって実現するのかなってずっと気になってた >>330
matango m を new してるから生成される
matango型の変数をグローバル(?)なところに保存しておいて、どこかで new してそれを再利用しよう >>338
それもう外部ファイルに状態を保存しかなくね >>327
ありがとうございます。
この命令を使う是非についてもどなたか教えて頂けないでしょうか? >>341
是非とは? 327が書いてる通りだと思うよ
必要なら使うし、いらないなら使わない >>341
シェルスクリプト等のバッチ処理でコマンドが正常終了したとかの判定に使われるステータスだからそういう用途に使うならちゃんとしとけ、それ以外なら適当でいい >>342 >>343
例えば、ジャンケンをするプログラムです。
https://ideone.com/EK5omF
このように気軽に用いてよいでしょうか? >>344
おk、UNIXのコマンドで実際にヘルプ出した後に1返すやつあるし >>345 >>他レスくれた方
ありがとうございました。気軽に使おうと思います。 あー。学校の課題かな?
これから switch 習うところみたいな。 >>347
>>326はプログラマ目指してる34歳発達の無職だよ
あんまり相手にしない方がいい
↓のスレの774とIDが一致
ねねっちと一緒にプログラムを勉強するスレ第2話 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1489809785/
↑と↓でトリップが一致
34歳、発達障害の無職ですが…5 [無断転載禁止]©2ch.net
http://tamae.2ch.net/test/read.cgi/prog/1492326920/ Javaリファレンスを読み始めたのですが
フィールドのサマリーやメソッドのサマリーというのは一体なんなのでしょうか?
java.lang.Systemを見るとフィールドのサマリーの方は
System.[out]←これの事を説明しているのは分かったのですが
メソッドのサマリーの方は検討もつかず・・・・・・ >>348
あー余計な事書かないでー。
なんかすいません、学生じゃないんです。
ここは速やかに返答が得られるので、使わせて頂いてます。 >>350
あ、本当にただの要約なんですね
わざわざ「サマリー」で表記してあったので、てっきり特別な意味があると思ってしまいました・・・・・・ >>352
Javaのリファレンスって、翻訳が直訳気味だから、英語の方読んだ方がマシな場合もあるよ 今はmetbeansを開いてメインメソッドを書いて、ファイルの実行ボタンを押して起動させてるけど
ファイルをダブルクリックで開いたらこのアプリケーション起動、みたいなコマンドって作れる?
Fileクラスでオープン、そしてテキストファイルに書き込みとかは一応出来るようになった それはOSの機能。
ファイルにアプリを関連付ける。 あと、ダブルクリックで起動するGUIアプリはJavaだとJarファイル作る。
作り方はググってくれ。 NETBEANSなら自動でJarファイル作るけど、
自作のJarを継承したりするとJarの中にフォルダを作って入れてはくれないので、
やっぱり自分で作るかな トランプを作りたいのだが多次元配列で組み合わせようと思ったけど結局1をAにしたり11、12、13をJQKにしたり、
あとは例えば二枚のカードを合計するってなった時は2+3とかじゃなくてハートの2たすクラブの3っていう感じになって計算ができないんじゃ無いかってところで行き詰まってる
ネットで調べたらenumって出てきたけど最後に;を記述してないし使い方がよくわからないのだ
何か知恵を貸してくれないか
欲を言えばトランプの絵の中にそれら配列(もし配列を使うとしたら)の要素一個一個に当てはめる的な事もしたいけどそれはまた後で調べる、これは出来るかできないかだけでいいから教えてくれ トランプのどんなゲームにも使えるカードクラスって簡単に定義可能なの? >>360
Suits列挙とNumber列挙、それらを持つCardクラス作るだけやん >>360
例えばハートの6とクラブの9を足して15にできる?多次元配列でint 部分の配列を取り出す事とかできるの? >>362
二次元配列でも良いけど
そういうのだったらHashMap使った方が早くね? >>363
どうして?HashMapって配列番号を文字にしただけでしょ? javaやってるのに多次元配列使う奴なんて見たことない
c言語じゃないんだから HashMapは文字通り中にハッシュテーブルを持っててそれを利用して探索するから配列を探索するよりとても速い >>359
面倒なら数値だけでやればいいじゃん。内部では0〜51で値持っといて13で割った値が種別、13で割った余り+1がカードの番号みたいにして。 javaでif文を使って文字列か数字か判断する時の条件式って何?教えてくれ頼む!! if(入力値 == String){
//処理
}else if {
//処理
}
上記のやり方じゃ駄目だよな? parseIntじゃだめですかい?
String input = "12345"
try
{
int i = Integer.parseInt(input);
} catch (Exception e) {
} >>368
入力値 instanceof Stringでおk >>368
間違えたすまん、371のやり方じゃないと >>371 >>373
ありがとう。やっぱtry文でやらないと出来ないのか >>366
Hash mapって確かに原理はわかるんだけど、hash関数にキーを通して得られた数値をアドレスにすると、アドレス飛び飛びになってメモリ効率悪くなったりしないのかね >>377
直接アドレスにしてるわけじゃない
中に連結リストが数個あって得られた数値ごとに範囲分けしてそのリストに振り分けてる
連結リストの長さだったか要素数だったかが敷居値を超えると連結リストの数を増やして再構築する
大体こんな感じで実装されてるからハッシュ値が飛び飛びなのは問題ではない、むしろそうなるように推奨されてたはず int n=1;
int[] nums={0,1,2};
nums[0]=n;
n=5;
nums[0]=?
↑
1でいいんだよね…? >>379
せやで、参照を書きかえてるだけだからね jar ファイル作ってみたのだが
netbeans上でファイルを実行したらちゃんと動くのにフォルダからそのファイルの場所まで行ってダブルクリックしても何の反応もないのだが
ウインドウがポップアップされるはずなのに何も出てこない、どうして?
それと質問なのだがこの処理を実行したら次はこの処理が実行されるみたいなのって全てメインクラスに書くものなの?
プログラムを動かすにはメインメソッドが必要だって書いてあったんだけどたとえばドラクエで、このどうくつにはいったら今度は洞くつクラスに移るみたいな
そういうのって一つのメインメソッドに書ききれるのかなとか前からすごい疑問だった
すっきりJavaを読み終えた入門者だがもし足りないのなら次に読むべき本とかあったら教えてほしい
文法を理解できたようで、enumクラスっていう新しい用語を使ってみると、どこからそれを呼び出したらいいのかとか全く分からなくなってしまう
例えば、いろいろなゲーム、トランプとかテトリスとか、そういうののソースコードを一から全て解説してくれる本とかあったら助かる
とりあえず実践をしたいのだがどうやって学んだ事を応用していったらいいのか全く分からない
誰か助け船を出してくれ >>381
ながい
→ダブルクリック実行はJava関係無くOSでjar拡張子の実行設定してるかどうか
→main()云々は作ってみたほうが理解が早い
CUIでいいからtodoアプリ作ってみ?
1でタスク一覧、2でタスク登録、3でタスク削除の3機能
DBとか無しで、アプリ落としたらタスク全部消えてなくなる感じ
これ作ったらmain()で全部書けるかどうかわかるだろう >>381
スッキリのオブジェクト指向の所から読み直しつつ
自分でソースコード漁りしてみると良い
オープンソースで一杯転がってるぞ 「テトリス入門」とかいう書籍を書いたら売れるかもしれないね >>384
しかしゲームのやり方しか書いてなかったりしてw >381
jarのくだり以外は何言ってるのか全くわからない
大丈夫かお前? 大学のjavaの授業で指定されたエディタがメモ帳に毛が生えたようなやつで、スクリプト言語しか触ったことない身には辛い
javaはIDEで書くものだと聞いてたんだけど、強い補完機能使わないほうが身につくものなの? それと、APIリファレンスの見方が分からないのだが
Arrayのなかのメソッドのequalsで
public static boolean equals(int[] a,int[] a2)
って書いてあったから引数を二つ書くのかなって思って
equals(配列A,配列b);
って書いてみたらエラーになって
配列A.euqals(配列B);にしたらエラーが出なくなった
メソッドってクラスの「インスタンス変数.メソッド」って書くのか?とか考えたけどそのあとの
sort()を見てみると普通に
sort(配列);でやったら実行できた
調べ方っていうかリファレンスの読み方がわからない
あとこれはAllayListのサマリーのやつだが
boolean add(E e)
リストの最後に、指定された要素を追加します
これの修飾子と型がbooleanだったのだがなぜvoidじゃないの?
true,falseの要素がないと思うのだが >>382
Jdkのbinファイルを設定するって書いてあったんだけどjdkファイルの中にbinが見つからない・・・ 配列はややこしいね
Arrays.equals(a1, a2)とa1.equals(a2)は別物だよ
後者は参照先の比較って言ったらそこら辺はスッキリで詳しく書いてるから分かると思うけど
あと戻り値は必ず変数に入れなきゃいけない訳じゃない
今回のに関してはAllayListの親クラスのCollectionがaddでbooleanの戻り値を返すってなってるからそうなってるけどAllayListでは多分必ずtrue返すようになってる?分かんないけど
Setとかでbooleanの戻り値使いたいからそうなってるんだろうね >>392
その辺りが物凄く理解できない
やっぱり経験積んで必要な場面に当たるしかないのかな
できれば最初から文法をマスターしたいと思うんだけど難しいのかな Javaのリファレンスはすげえ読み辛いのが辛い所だな
実際の挙動書いてないし JavaScriptやPHPのリファレンス見てると何でメジャーどころのJavaのリファレンスがこのレベルなんだ…って思っちゃう 各クラスの挙動を知りたいなら
個人ブログかQiita辺りを探した方が早いっていう何とも言えない現状 リファレンスを見た後、サンプル・例などで検索すれば? Locale locale = new Builder()
.setLanguage("ja")
.setRegion("JP")
.setScript("Latn")
.setExtension(Locale.UNICODE_LOCALE_EXTENSION, "ca-japanese")
.build();
普通は
インスタンス名.メソッド名()などのようにドットでつなげると思うのですが
上のようなソースは、なんていう機能なのでしょうか。
ググりたいので、キーワードを知りたいです。 スーパーバイリンガルダブルスタンダードジェネラルアクセッサ記法です JavaScript, jQuery などで、よく使う、メソッドチェーン
a().b().c()
メソッドを、this を返すように作っておいて、つなげていく HashMapの中身をfor文で取り出す処理のメカニズムがよく分かりません。
どなたか説明してもらえませんか?
@キーの一覧を取得
A各キーについて、対応する値を取得
と書いてはあるのですが…。 >>400
なるほどです。
戻り値が、自分自身だからチェーンに出来るんですね。
勉強になりました。ありがとうございます。 スッキリジャバの入門編も読めばさらに理解が深まるかな? javaリファレンスはカタコトの日本語だからまだしも、
androidなんて英語だから意味不明 >>401
古典かよw 今時そんな取り方しない
どうしてもやりたいならMap#keySet()調べてみ
ついでにMap#forEach()もな ファイル開くときにcloseかtry-with-resourcesを忘れないってのはわかったんですが、
BufferedReaderとかScannerで標準入力からテキストを読み込むときもこれは必要ですか? >>407
原則として標準入出力は閉じてはいけない
そのプログラム中で二度と標準入力を使わないようなタイミングなら閉じてもいいが…やらないな 一応、System.inの正体はこれな
new InputStream(new FileInputStream(FileDescriptor.in)) 無しだろ
最初から開いてるものだし
自分で開いたものなら閉じるべきだが
他人が開いたものを閉じるのは責務的に違うだろ 自分の好きな画像をguiで使うにはどうしたらいいの? >>406
調べてみます。
ありがとうございます。 int[] s = 条件式 ? {0, 1} : {1, 0};
って書いたら弾かれたんですがJavaは三項演算子を使っての配列の初期化は出来ないということですかね? オラクルで働きたいんだが雇ってくれんかな
java初心者だが素晴らしい言語だと思うんで OpenJDKに貢献するのが一番の近道だと思うが
オラクルはそんなにいい会社じゃないぞ多分 >>415
int[] s = 条件式 ? new int[]{0, 1} : new int[]{1, 0}; ArrayListを作るときよく入門書だと
List<String> list = new ArrayList<String>();
と書いてありますが、将来的にListとして扱う予定が全くない場合でもこう書くものですか?
とにかく広く受けとけばいいなら極論ジェネリクスも要らないですよね?
ArrayListで必要十分なところをListと書くのはどうも型安全から外れてる気がして抵抗があるのですが >>419
ArrayListで必要十分ってことはArrayListクラスで定義されたものを使ってるんだからListで書いたらダメだろw
あとArrayListをListとして使うことがないってのはありえない
なぜならArrayListはListを実装してるから >>421
それはそうですね、すみません、言い方を間違えました
ArrayList固有の機能を使わない前提でないとこの問いは成り立たないですね
ただ拡張性を意図してないときにインターフェースで宣言するメリットがあるのだろうかと思った次第です >>422
なぜ具象クラスではなくインタフェースなのかってことなら、英単語の意味のとおりインタフェースだから
この話が特に問題になりやすいのはメソッドシグネチャに使われるときと、クラスの特性を利用するときなんで、
メソッド内部のローカル変数として宣言/定義するだけで外部に影響なく使うならぶっちゃけ何でもいいよ
逆に言うと、影響が出るなら(特に)最上位のインタフェースを使ってはいけない
Map<String, String> m1() { return new WeakHashMap(省略); }
・このm1はヤバい。戻り値を普通のMapのように使ってると、GCでいきなりエントリーが消えたりする
・戻り値の型をWeakHashMapにするべき
Set<String> s1() { return new TreeSet<String>(); }
・これもヤバい。戻り値にset()すると勝手にソートされる
・戻り値の型をSortedSet(インタフェース)にすべき 汎用性も拡張性も皆無の個人レベルのゴミソースなら
いくらでもArrayListで型宣言すればいい 途中送信になっちゃった
上のような例外的なケースを除き、基本的な使い方しかしていないなら最上位のインタフェースで宣言すべき
それはコードを読む人に変なメソッドやクラス特性を使っていないから安心して使えるというメッセージになる
#バグとかはまた別の視点だよ? >>425
詳しくありがとうございます
出来る限り最上位のインターフェースで宣言した方が安心感があるのですね
例えば(あまりないと思いますが)addとforEachしか使わないなら
ListよりCollectionで宣言した方がいいということですかね
インターフェースだけでなくクラスも同様に、出来る限りObjectクラスに近い方がいいのでしょうか
例えばListに数字を入れるならList<Integer>よりList<Number>の方がいいですか? >>426
そういうのをやりすぎって言うんだよ
自分で書いてて不親切というか不便だと思わない?
CollectionやNumberのJavadoc読んでみ >>423
setは順番を保証しないから良くないか? >>419
.netはlistが実装を持ってるからその指摘は的を得ていると思う ArrayList<String> list = new ArrayList<>();
普通に上記のような書き方でも大丈夫ですか?
どう違うのかな…糞初心者が便乗で失礼しました。 >>429
setの例は確かにまずかったね
実際やってみるとわかるけどさ、SortedSetに突っ込むものはComparable実装してないと実行時例外起きるのよ
Stringは実装してるからいいけど例えば自作のComparable実装してないクラスを突っ込むSetだと死ぬ >>427
最大限の抽象化を目指しつつ、必要に応じて落としどころに着地させる技術が必要なのですね
何となくわかりました。ありがとうございます 中途半端に理解力の悪い馬鹿だね君は
特定のインターフェースを受け皿にするのは意味があるからやってるんだから
君のような馬鹿は凡例に倣っておまじないのように真似して使ってればいいんだよ >>435
わかりました
初心者はあまり疑問に思わずにとにかく慣れた方が良さそうですね
もうちょっと詳しくなってから改めて考察します paizaっつーか競技プログラミングにJavaは相性悪くないですかね? 34歳板の住人以外の方からのレス、お待ちしています。
>>443
競技プログラミングなんですか?誰が速いとか競うんですか? >>444
34歳板って何?
スレチにつき誘導
【CodeIQ】コーディング転職 2社目【paiza】 [無断転載禁止]©2ch.net
http://tamae.2ch.net/test/read.cgi/prog/1495051565/ >>445
スレ違いでしたか、すいませんでした。
リンクありがとうございます。 画像を読み込み、それにスタンプを張り付けて保存するGUIツールを作っています。
JFrameの左側にはコントローラーとして動作するJPanel、右側には読み込んだ画像とスタンプを表示するJPanelを配置しています。
コントローラーの操作によって画像を新しく読み込むたびに右側のJPanelを破棄し、新しいJPanelを生成するようにしたいのですが
これを実現するのに今考えているのは、コントローラーのインスタンスのフィールドにJFrameへの参照を格納しておき
コントローラーのイベントリスナーで新規読み込みを受け取ったら、JFrameからJPanelをremove()、ついでnewする、というものです。 続きです。
JPanelを再生成するためだけに3つのクラスをまたぐ、というのがどうもスマートに思えません。
可読性やメンテナンス性も悪い方法だと思うのですが、これ以外に良い方法が思いつきません。
もっと良い方法があるのか、それともそもそもの構造が悪いのか、どうかアドバイスをお願いします。 >画像を新しく読み込むたびに、
>右側のJPanelを破棄し、新しいJPanelを生成する
一々、パネルの破棄・生成を繰り返さなくても、
画像を再読み込みすれば、良いのでは?
has-a だろ。
フレームは、複数のウィジェット(UI コンポーネント)を持つ
フレームの作成(JFrameクラス)
https://www.javadrive.jp/tutorial/jframe/ ありがとうございます。
右側のパネルは、JPanelを継承したクラスのインスタンスで、読み込んだ画像の表示やスタンプの情報の保持を行っています。
画像を新しく読み込む場合、それらの情報のクリアもする必要があるので、パネル自体を破棄し再生成したほうが楽ではないかと思ったのです。
それよりも、すべての情報をクリアするメソッドを用意しておき、画像読み込みと同時にそれを呼ぶようにすべきでしょうか? 厳密に言えば、パネルの破棄・生成を繰り返すのは、
GCの仕事が増えるだけで、無駄だけど、
回数が少ないのなら、やりやすいようにすればいい >>450
すべての情報をクリアするって書いてるけど、クリアするのは画像の情報のリスト1つだけだろ?
もしかして継承したパネルの中にバラバラに情報もたせてる? 3つのクラスをまたぐっていうのは、左JPanel内で
this.jFrame.rightJPanel = new RightJPanel()
みたいなことをしてるのかな?
JFrameにreadNewImage()を作って右JPanelのnewとかの処理はそこでして
左JPanelはreadNewImage()を呼び出すだけでってのはどう? 左右のパネルが、相互に依存したら、ダメ
親 → 左の子
親 → 右の子
あくまでも、親から働きかけるようにする。
つまり、階層構造を浅くする
そうしないといずれ、スパゲッティ・泥団子のように密結合し、手に負えなくなる。
設計の基本は、疎結合 上司を通さず別部署に仕事頼んじゃうのはまずいみたいな話か >>451
そうなんですか・・・
やろうと思えば何度でも再読込はできるので、この方法はやめておきます。
>>452
パネルのフィールドとして、画像の縦横サイズ、スタンプのインスタンスなどを持っています。
>>453
それです。
コントローラーからの操作はすべてJFrameの持つメソッドから行うようにする、ということでしょうか? Javaだけで2chのスレ・レス取得、スレに書き込みできるのでしょうか? Javaだけで作られた専ブラが既にある、後は分かるな? >>457
そういうのはパネルのフィールドにばらまいてはダメなやつだよ
パネルは入れ物であって中身は中身でまとめて別に管理しないと
ついでに言うと、読み込んだ画像とスタンプは同じもの
読み込んだ画像って、ユーザが選択して重なり具合が常に最背面になってるスタンプだろ?
パネルにはList<ImageInfo>みたいなものを持たせて、Listの中身を並び順で画像表示するような設計でいい気がする
リセットはListを空にして再表示だし、複数スタンプもListに追加して再表示で終わるだろ >>454
おっしゃるとおりだと思います。
現に、現在進行形で泥団子化しているような気がします。
自分でもなんとかしたいと思っているのですが、今まで手続き型のやり方でお茶を濁してきたツケで、オブジェクト指向的な考え方に馴染めず困っています。
例えば、左のパネルを操作して右のパネルに表示されている画像上にスタンプを追加する、というような操作を考えたとき、どのように実装すればいいかこんがらがってしまって・・・
教えてくれとは申しませんので、オブジェクト指向で書かれたGUIアプリケーションのサンプルソース集などはないでしょうか。 >>460
なるほど、画像やスタンプの情報もオブジェクトに閉じ込めてしまうのですね。
確かにそのようにすれば初期化や並び順管理も容易にできそうです。
今は画像上のマウスポインタのx,y座標を保存する変数などもバラバラになっているのですが、これもオブジェクトとして扱えば良いですね。
どうもありがとうございます。 >>464
V2Cは今では2chへの書き込みできないよな。
したらばとかの2chに似ている掲示板では書き込みできるが。 パッケージ名とクラス名を同じにしないといけないってなんで?
調べても出て来なかったし、実際違う名前にしてみても問題なく動いた >>468
ああごめん
そうだった
でも結局それでも動いた どうでもいいことかもしんないけど、is○○って、boolean型を返すメソッド名のみに使うべき?
boolean型の変数名に使うのはNG? >>470
OK、Javaはメソッド名とフィールド名を区別するから関係ない >>471
動くか動かないかではなくて、命名規則的に好ましいか好ましくないかを聞きたいです 人によるといわれたらそれまでなのですが、三十代プログラミング経験無しが業務で使えるようになるにはどれくらいかかると思いますか? 出来るからって区別しないのはキモい。
日本語で変数書いても悪く無いけど、キモいでしょ。
俺俺ルールならメソッドはisXXX。
変数やフィールドはXXXflgとかXXXflagとかにしてたな。
bool型の変数やフィールドにこう付けろって慣習はJavaは無かった気がする。
Cだとflgやflagで付ける慣習(ってほどでも無かったけど)あったから、おいらはJavaでもそうしてただけだが。
ずっとずっと昔の話だが。。。 >>474
スレチ
てゆうか君>>441とか>>348の人でしょ
なんでJavaスレでそんな質問するんだよ
スレタイ読める?
ここはJavaの初心者スレであってネット初心者スレではないんだけど 人によるし業務によるとしか
なんの根拠も無いけど半年を目安にして貰ったら良いんじゃないかな >>474
まあ長くて一年で才能ある人は何かしらゲーム作れてるよ。
ジャンケンとかの簡単なのじゃなくて格ゲーみたいなの。
具体的には同級生がそう言う人種。
2-3ヶ月で作れてた気もするが。
一年で出来ない奴は、おいらみたいに10年経ってもショボいツールしか作れない。 >>476-478
申し訳ありません。
業務と平行しながら勉強してるのでここでいいかなと思いまして。
なかなか身に付かず焦って質問してしまいました。半年から一年を目処に頑張ります。 >>479
次からはこっちで質問すると良いよ。
スレ立てるまでもない質問はここで 147匹目 [無断転載禁止]©2ch.net
http://echo.2ch.net/test/read.cgi/tech/1490436082/ Windows+Java環境下でFFTを計算したいのですが感染性が無く再配布可能なライセンスのライブラリってありますか? >>481
ググったらファイナルファンタジータクティクスが出てくるぞ?
それの何を計算するんだ?(笑
とか言われないように略称じゃなくてきちんと書けやアホ
あとなぜライセンスにこだわるんだ?
作ったもので金とるからって理由なら調査費用くらい惜しむなよ 高速フーリエ変換通じないのは流石に通じない方が悪いし、通じない奴は質問の対象者じゃないんだから黙っとけよ プロゲートで無料のぶんだけひととおりやったんですがこんな単純なものだけで組み合わせたら色々できるの? プログラミングは言語は何であれアイデアや応用の世界だからな 「アホ言うやつがアホ」という言葉がまた証明されたようだな 難しいものを作るには難しいプログラムが必要じゃなくて簡単なものの組み合わせ方って言うことなの? ま、そうだな。難しい漢字みたいなものだ。
分解すると一つ一つは簡単なカタカナみたいなやつでしかない。 難しいものってのが何なのかによるんじゃないかね
計算量が膨大なものならそれなりに難しいアルゴリズムも必要になるだろうし
Javaでそこまで踏み込むかはわからんが >>492
おぉ、ありがとうございます。試してみます >>482
一番上に高速フーリエ変換のWikiが来るじゃねーかw Googleって検索者がよく調べてるものの関連のものが上に来るんだっけ? FFT っていう単語を知らないなら、さすがにヤバイ、レベル
Matlab などの数値計算なら、Python
tmpnb
Jupyter Notebook (IPython) Rubyのpメソッドみたいに
変数の中身や配列の中身を手軽に確認できるメソッドって無いのでしょうか
特に配列の中身を確認する方法が分からず、デバッグをする際に苦労するのですが・・・・・・ >>498
Arrays#toStringもしくはArrays#deepToString使えばおk
RubyみたいにpはないけどIDE使えばsysoutとかsoutから補完できるぞい Arrays.toString(調べたい配列)をよく使うわ 日付と時刻を表示するプログラムを作ったのですが、時間の表示がおかしいです。
なぜでしょうか?
https://ideone.com/Osdsox >>499
ありがとうございます
その二つを使ってチェックしていきたいと思います
>>502
デフォルトだと日本時間ではなく、グリニッジ標準時間 (GMT)になるので
時差の分ずれてると思われます >>502
IDEONEの鯖のタイムゾーンがGMT仕様だからじゃないかな、多分手元で実行すれば大丈夫 あ、すまんこれシステムのタイムゾーン取ってるわけじゃないのか レスをくれた方、ありがとうございました。
>>506の方のリンクやスッキリJava実践編を参考に改良してみたいと思います。 https://ideone.com/TgG170
配列の中身を拡張for文表示させようとした際に
上記のように上手く行かないのですが、なぜなのでしょうか? >>508
System.out.println(i); >>508
その文脈でのiはループ変数ではなく配列のそれぞれの要素そのものだから、>>509の書き方をすればいい
まぁそもそもループ変数じゃないんだからiなんて名付けちゃいかんね
nくらいにしとくといいよ >>509、>>510
ああ、ループ変数ではなく、そのまま要素になるんですね
混同してしまいました
勘違いしないようにもっと分かりやすい名前をつけるようにします
ありがとうございました! 拡張for文をちゃんと理解して
numsから要素取り出してるだけだから
iは1,2,3でnum[i]は2,3,範囲外例外になってるだけだよ。 propertiesファイルを読み込んで、そこからenumを生成するようなことは可能ですか?
つまり
#Animals.properties
enums=DOG,CAT,HUMAN, ...
と書かれたファイルを読んで
enum Animals {
DOG,
CAT,
HUMAN,
...
となるようにしたいのですが ∩___∩
| ノ ヽ
/ > ● | ムリ☆
| ( _●_) ミ
彡、 |∪| )
/ ヽノ //
ヽ| /
| /
ヽ / /
/ /ヽ
(´_ /ヾ_) やはり無理ですよね・・・
ありがとうございました。 型のメソッドdatetime(Timestamp)は引数(Timestamp)に適用できませんって出るんだけどどうしたらいいのか教えてください 違うpackageのTimestampを引数に使ってるんじゃね? >>518
うん、違うパッケージで書いたゲッター、セッターに値を入れようとしてる ごめん、間違ってた同パッケージ内の他クラスに値を入れようとしてるんだ 解決しました。どうやらTimestampのimportが間違ってたみたい FFT の本を買って読むのが一番だと思うが、Java で出版されているのはあるのかな?
https://www.amazon.co.jp/dp/4789830322/ テキスト読み始めて1ヶ月が経過した初心者なのですが
プログラムを書く練習の為にお題や解答等が
記載してある良いサイトがあれば教えて頂けないでしょうか。 新わかりやすいjava入門編というものを進めてきてオブジェクト志向に入り案の定つまづきました
そもそもクラスとメソッドというのがよくわかりません。色々なサイトを見ているとクラスというのはオブジェクトの設計書なる説明が目立ちます
HelloWorldなりif文なりをクラスの中に書いてきましたけど別にオブジェクトの設計書なんて作った覚えがなくてこれはどういうことかと
メソッド(=関数)がまとまったのがクラス(=プログラム)で、クラスがまとまってパッケージ(=大きなプログラム)になるくらいの認識だったのですが…… ただメソッドをまとめたものじゃなくてクラスのインスタンス内にはフィールドによる状態があるからね クラス=実在しない脳内の中の紙切れ。設計書でも何でもない
インスタンス=実在する紙切れ。いくらでも複製可能 static修飾子=脳内の紙に思い描いただけでそれにアクセスすることができる魔法の言葉
つまりウンコ変数やチンコ変数またはマンコメソッドなどを
脳内で想像しただけで既に実在することになるが複製はできない >>526その他の方
525の人ではないですが、
日本語のサイトでは無いですかね?英語が読めないもので…。 AOJなら一部ページ除いてちゃんと日本語が用意されてるよ >>531
https://paiza.io/ はどうだったかな?前に問題解いた記憶があるんだが、答えはあったかどうか忘れた。 >>528->>530
説明ありがとうございます。さっぱり解らないのでやはりjavaは自分には早かったようです…… プログラマで英語読めると読めないじゃ得られる知識に天と地ほどの差があるから、真面目に英語覚えた方がいいぞ。 >>531
会津大学が運営だぞ……さすがに日本語対応してることくらいは気づいてくれ レスをくれた方、ありがとうございました。
>>532
よく見たら日本語にできました、すいません。
>>533
このサイトも日本語にできますね。ありがとうございます。
>>535
単語を覚えるのが苦痛なんです…。
>>537
確かにu-aizu.ac.jpって書いてありますね。
URLに気付かないとは…自分自身に笑っちゃいました。 >>538
むしろ単語はコード読んでたら普通の人より知ってるだろ。。。 英語読めると海外サイトのQ&Aが原文で読めるっていうのが凄いありがたいからな
大概ググると海外で既に答えが出てる問題だったりするし >>539
コードに出てくる単語には詳しくなっても、専門用語に関してはあんまり…。
記憶力に自信が無い方なので…。
>>540
そうですか、それはメリットですね。
でも今から英語をマスターするなんて俺には無理でしょうね…。 失礼します。
>>536 >>542
リンク貼るの止めてもらえませんか?ニーズも無さそうですし。 問題とかアルゴリズムにやたら拘ってるけど
関数分割もできないレベルの奴がそんなもの追い求めても時間の無駄だって
ずっと教えてやってるのに一向に聞く耳持たないよなお前 >>541
マスターするというほどでなくても大丈夫。とにかくわからない単語が出てたらコピーしてすぐググれ。意味出て来るから。 教えてやってんのに無理無理ばっかりじゃもう教える気にならんわ (´・ω・`)みんながおすすめしてたからスッキリわかるJAVA入門注文しました
これ分厚いけどがんばって読んだらプログラマーになれるの?
みんなはひと月ぐらいで読み終わるの?
http://i.imgur.com/eiBgULb.jpg 少しプログラミングの経験があるなら1週間あれば読み終わる
ただ読むだけじゃ役に立たない 自分で実際に書いて動かしてみないと >>548
読むと言うよりは実際にソースコードを動かしながら勉強していく
ついでにIDEも導入して、実際に開発してる気分でやっていくとテンションが上がる上
IDEの使い方も理解できて一石二鳥 クラスがBTOパソコンのカタログスペックみたいなもんでメモリだのハードディスクの容量だの指定して注文して届いたPCがインスタンスみたいな理解したんですけど大丈夫ですかね
ただそうなると本でオブジェクト指向の手前までに載ってるプログラムもクラスってなんでクラスなんです?例えばただのHelloWorldとか
インスタンス生成しないならクラスである必要でないというかそもそもクラスじゃないんじゃないかと思うんですけれど スッキリはホントわかりやすいと思うわ
そこら辺のゴミみたいな入門書とは雲泥の差だから宣伝しなくても
口コミで勝手に売れて作者も印税ウハウハだろうな
元々ある程度Java触ったことある奴なら1日で読み終わる >>550
>>549
(´・ω・`)そうなんやー
じっさいにやりながらですね
がんばります HelloWorldが出力されてる時点でインスタンスが存在するんだが 作家の座談会によると、
スッキリは、無名の著者が、2, 3年掛かって作ったとか聞いた
イラスト代とか、途方もなく、お金が掛かっているプロジェクト。
大赤字からスタートしてるんだろ
無名の著者で、売れるかどうかも、分からないような本だった
理由は知らないけど、スッキリの編集者は、転職したらしい >>554
mainメソッドにのみ記述した場合はインスタンス作成されませんが メインメソッドが既にインスタンスなんだが
バカなんだから思い込みだけでレスつけるなよ阿呆
インスタンスの定義が何かわかってんのかお前 >>555
だから元を取るために必死にダイマしてるの? >>557
知ったかで人を阿呆呼ばわりするのはどうかと
メインメソッドにstaticって付いてるのの意味分かってる? >>557
なんでいきなりキレられてるのか全然わかんないんだけど
メインメソッドがインスタンスになることはできないよ? クラスローダーがmainメソッドのあるクラスを読みこんだ時点で
mainメソッドがインスタンス化するんだよ阿呆
小学校からやり直して来いアホども メモリの概念すらわかってなさそうな馬鹿しかいないとかビックリだわ
HelloWorldは魔法の言葉か?w メソッドがインスタンス化で草生えるわ、JavaScriptかってのw >>560
Appクラスにmainがあるとしたら、mainはApp.classというひとつしか存在しないインスタンスのメンバーだよ まあクラスオブジェクトをインスタンスって言うならそうだろうけどな インスタンスじゃなかったら何なんだよ?wwwww
メモリ上に実態がないのにアクセスできんのか?www
専門学校生レベルの奴はチンポでも弄ってろよ阿呆 >>554
new クラス名 ってやって初めてインスタンスができるのではないのですか >>571
ライブラリ内部でインスタンス作ってるケースも普通にあるからね
newを自分で書くときは、あくまで自クラスでインスタンス作るときの場合に使うってだけ >>572
コンピュータとオブジェクト指向プログラムが乖離しすぎているから。 >>574
それJava云々じゃなくてオブジェクト指向自体に疑問を呈してるってことだろ? 文脈的には単に初心者が手続き型プログラミングとオブジェクト指向型プログラミングを
一気に覚えようとするのは好ましくないくらいのニュアンスじゃないの オブジェクト思考言語が手続き型言語ではないという説は初めて聞いた >571
インスタンスって言葉に惑わされてるだけ
mainメソッドという処理を行うためのstaticな領域は既に存在する
その中で書かれた処理は順次あらたに領域が確保されていくだけ
処理を行うための領域が存在したないただのクラスはnewして初めて領域が確保される staticの概念が難しい・・・・・・
言われてる事は分からんでも無いんだけど、理解出来てる気がしない int[]よりArrayList<Integer>の方が型安全ですが、固定長なら配列の方が高速に動作しますよね?
普通はどちらを取るものですか? >>578
入門者にstaticとか領域とか申されましても……
待ってくれたまえ ことばの洪水を ワッと いっきに あびせかけるのは >>581
<>でクラス指定しとくと他のクラスのインスタンスへの参照入れられなくなるってことじゃね? >>580
普通はどちらかのみ使うではなく、用途によって使い分けるじゃね? >>584
Effective Javaでは配列はあまり推奨されてないようなので、実際のところどうなのかなと思いまして >>580
なにをもって配列の方が速いって言ってるのか知らないけど、ArrayListも中身は配列だからw >>585
しかし ArrayList は文字通り中で配列使ってるよ。
なんだったらソース見てみな。 >>586
配列のようにしか使わないなら配列の方が早いだろう。 「スッキリわかるJava入門」インプレス
昨日購入しまして、早速取り組み開始。
130P程読み進み、例題で「数あてゲーム」を書けってのがありまして、
それを何も見ないで考えて書いて出来上がり走った時の達成感
[ヵンド→]*☆*ヽ(*´Å`*)ノ*☆*[ウレ千→]
この気持ち忘れず最後まで読破します。
チラ裏失礼 普通のArrayよりArrayListばっかり使ってるわ
可変長の配列の方が個人的にイメージしやすいし
普通の配列は書く時は直感的だけど、ArrayListでは使えるメソッドが使えなかったりするから不便でしょうがない お疲れ様です。
今度、springでwebアプリケーションの業務
をすることになり2週間程学習をしているの
ですが全く理解出来そうにありません。
自学しようにも、インターネットの情報は
少なく感じますし、spring究極入門という本も
買ってみたのですが、何ヶ月かかるか
わからないほど自分には難しいです。
どのように学習を進めて行けばいいでしょうか? 基本的な事という事を承知の上で質問いたします
nextInt();で生成した乱数が 0〜10だった場合はこの処理をそうでなかったら10〜20かチェックそうでなかったら...
という処理は可能なのでしょうか...?
r = New Random()
for(int s = 0; 10 <= s; s++){
if(s = r){
//処理...
}
}else for(...){
//処理
}
と書きたいのですがelse for が構文エラーになってしまいます....
何か他の方法があるのでしょうか >>595
なんでforループになるのかわからん
書いてることそのまま翻訳したらこうならねえ?
int r = new Random().nextInt(21);
if ( r <= 10 ) { /* ... */ }
else if ( r <= 20 ) { /* ... */ } 正直フレームワーク系の本って買うだけ金と時間の無駄
最低限アノテーションの使い方とインジェクションの作法覚えて
ググりながらspringプロジェクトをローカルで作成して適当に
簡単な認証システムでも作ってりゃ覚えるだろ
springつってもいくつか種類あったと思うけど >>596
すいません説明不足でした、100ならこの景品、80〜99ならこの景品、60〜79ならこの景品、というようなコードを書きたいのでそれでは思い描いた通りにならないのですよ...
for(int s = 0; s <= 100; s++){
if(r = s){
//処理
}
}else for(int t = 101; t <= 200 ; t++){
//同上
}
というように書きたいのです... >>598
そもそもelse forなんて構文無いだろ
書くならこれで良いだろ?
package test;
import java.util.Random;
public class Main {
public static void main(String[] args){
Random rand = new Random();
int n = rand.nextInt(100);
System.out.println(n); //デバッグ用に表示
if(70 <= n && n <= 100){ //70~100まで大当たり
System.out.println("大当たり!");
}else if(40 <= n && n < 69){ //40〜69まで中当たり
System.out.println("中当たり!");
}else if (20 <= n && n < 40 ){ //20〜39まで小当たり
System.out.println("小当たり!"); // 19以下ははずれ
}else{
System.out.println("外れ");
}
}
} >>594
最初にこの本で、オブジェクト指向を学ぶ
スッキリわかる Java入門 第2版、2014
Spring Framework 4 プログラミング入門、掌田津耶乃、2014
アスペクト指向も出てくる 評価2.5のゴミみてぇな本を勧めるなよwwww
目次見ただけでゴミってわかる
こういう読むだけたいして意味も価値もない無駄な知識を入れようとするから
フレームワーク関連の本は糞で初心者はさらにわからなくなるんだよ >>599 様の通りにやってみたところ正常に動作しました、
こんなバカの質問に答えていただきありがとうございました >>601の話聞くよりは本読んだほうがマシだと思う >>603
ただのあの本は前提知識がある人向けただからな。 フレームワークの本に3000円とか金ドブもいいとこ
しかも3年前の生ごみとかありえんわ ほとんどの言語・フレームワークは、掌田だろ
JavaScript, Rails 5, Spring とか、
Unity, Unreal Engine も掌田 個人的にはむしろフレームワークの方こそ本か何か体系的に入門から学べるものがあった方が良いと思うけどな
ネットの情報だけだと大事なところ端折ってあったりある程度分かってる人にしか通じなかったりで大変な部分もある
独自フレームワークとかになるとベースを理解してなきゃ話にならないし たまに入門書に親殺された人居るけど色んな意味で謎
Java勉強し始めたら、スッキリ・明解・やさしいの3択じゃね? 漏れは、柴田望洋・林晴比古・高橋麻奈・猫でもわかるの粂井康孝などの言語学者よりも、
掌田津耶乃・山田祥寛・宮本信二など、
フレームワーク・開発系の本を書ける著者を、上に見てる
この人らの講習会も、1日4万円とか高い 漏れとかリアルタイムで使うやつ初めて見たわ
使われてたの10年くらい前なんでしょ?ww 仕事でC#ばかりやっているのでJAVAもかじっておきたいとサーティファイという団体が主催する能力認定試験1級を申し込んだのですが、試験は何の変哲もないテキストエディタでコードをガチで書くのでしょうか?受けたことのある方がいらっしゃったらお聞きしたいです。 >>610
Javaにはオレオレフレームワークが多くて結局、ソースコードを見るはめになる。 >>608
それはそのフレームワークを作っている人間どもが不親切なんだよ。 学校通ってますが
講師の先生の話を聞いてるより
スッキリわかるjavaを読んでる方が
良くわかると言う悲しい状況になっている(´・ω・`) 新入社員で研修だけど講師がCOBOLとCしか実務経験ない人がJava教えてるからスッキリしか読んでない >>620
javaとjavascriptが違うものということを知っているというレベルの証明にはなるかな >>620
javaとjavascriptが違うものということを知っているというレベルの証明にはなるかな JREにはJavaで動くJavaScriptのインタプリタが付属している、ややこしいことに JAVAの検定を受けるにあたり、試験で使うTeraPadというテキストエディタを
入れてみたのですが、これって、実務でも使うものなのでしょうか?
きっとIDEを使うんじゃないのかなと思うんですけど。。。 クソみたいな環境以外なら普通IDEだがな、というかテキストエディタでコード書く言語じゃない Terapadはテキストエディタでもマイナーだよ。 >>626
そういう決めつけはよくない。
初めからJavaは統合開発環境を使う前提で作られていない。 メモ帳で作成してUTF-8で保存
これで今まで普通にコマンドプロンプト上でコンパイルできて実行もできていたんだけど
最近方法変えてないのにコンパイル時「MS932にマップできません」とコンパイルエラーになるようになったんだけど何が原因でしょうか
class宣言のpublicの前に/ufeffとか言うのが勝手に挿入されてる?ようなのですが。心当たりがありません。 ちょっと心当たりと言えば
最近フォントをricky dimeshedとか言うのに替えたくらいです
でもこれは関係ないよね・・・ >>629
普通にシフトJISで保存すりゃいいじゃん。 TeraPad とかなら、文字コードを指定できるけど、
メモ帳で文字コードを指定できるの?
ただし、TeraPad は、4バイト文字(サロゲートペア)を表示できないかな?
コマンドプロンプトよりも、PowerShell, PowerShell_ise を使えば?
入力文字コードも指定できるかも?
スッキリJavaは、どの道、会社の新人研修でも、
副本として使われる事が多いから、買って読まなきゃならない
講師がすべて教えるのは面倒だから、家でスッキリも読んでおくように言われる。
だから、スッキリが売れる そんなに本の話がしたけりゃスレあるんだからそっちでやって
Javaのお進め図書・情報・url
ttp://echo.2ch.net/test/read.cgi/tech/1457392971/
>>629
メモ帳で保存するときのオプションで、文字コードシフトJIS選べば解決する
メモ帳でUTF保存すると全部BOM(バイトオーダーマーク)つけられるから面倒 >>629
コンパイルできてたときは日本語コメントなくて、コメント書いたらエラーが出るようになったとか? >>629
「/ufeff」が投入されるって、メモ帳が勝手にソースを改変すると言ってるの?
「最近フォントを替えた」って、何のフォントを替えたの?自分が何したのか解ってないぞ。
システムのデフォルトかメモ帳のデフォルトか…もしかしてeclipse?
ソースをバイナリダンプしてみた?コードはutf-8だったか?
メモ帳でソース書いてeclipseで読み込んでコンパイルみたいな変な事してないか? ocjp bronzeの試験で javacコマンド云々とか
○○が追加されたバージョン云々
と言う問題は出題されるのでしょうか? https://ideone.com/G50BZD
while(sc.hasNext())を使って、空白区切りの数値をまとめて読み込んだあと
エンター(改行)が入った段階で処理を止めて、
そのまま計算に入るという感じなのですが
ideoneやpaizaなどのプログラミングコンテスト用のサイトでは上手く動くのですが
実際の実行環境(IntelliJ)上だと入力が終わらず困ってます
何かしらbreakする条件を付け足さないとダメなのでしょうか? ScannerのhasNextの処理の中で再度入力を読み込むようにしてる処理があるから
ideoneとかはインポートしてるクラスの中身とか見れないから
Scannerの処理がどうなってるかわかんらし元々連続で入力受け付けるような仕様じゃないから
Scanner書き換えてる可能性が高い
そんな糞みたいなメソッドで判定するのは危険だからそういう癖は直した方がいい
入力内容を別の変数にでも突っ込んで書き直せ >>640
>ScannerのhasNextの処理の中で再度入力を読み込むようにしてる処理があるから
うおお・・・・・・マジか
根本的に変えないと不味いな
プロコンの所から引っ張ってきたけど、ヤバイ書き方だとは知らなかった
書き直すわ 書き直せとは言ったがあんな糞コードなんて誰も歯牙にもかけないレベルだから好きせぇやボケ
あと教えてやったんだから「ありがとうございました」って言え糞ボケ >>642
申し訳ありません
あまりの衝撃に素のネラーになってました
深夜に本当にありがとうございます
糞コードと言われないように、もっと良いコードを書けるように精進します
本当にありがとうございました 礼無くてそんな頭にくるくらいならレスしなければいいのに
日常生活でも傲慢な態度してそうw >>639
java.util.Scannerはデフォルトでは空白文字を区切りとするので改行では終わらない。改行も空白文字の内のひとつだから。
ではそのサイトではなぜ終わるのかというとおそらく入力をファイルからリダイレクトして読み込ませているためにファイルの終わりまで読み込んで終わっているんだろう。
これを標準入力がコンソールのキーボードになっている状態で実現するにはそのコンソールの設定にもよるが、多分WindowsだとCtrl+Zで、UNIX系OSだとCtrl+Zなのではないかと思う。
しかしやはりコンソール次第ではあるので何やってもダメかも知れない。 hasNextはEOFまでだね
647の手順でローカルでもできるしファイルからの入力でもいけるはず
礼無しで顔真っ赤のやつはずかしいな Immutableなオブジェクト作るとき、Builderパターンを使うそうですが、↓のようなコードではダメなのでしょうか?
Builderだと、Mutableクラスのインスタンス作って、それを新たにImmutableクラスのインスタンス作って返してますよね?
↓のコードであれば、Mutableクラスのインスタンス生成1回で済むので、
Builderより省エネに思えるのですが、このようなコードではダメだから、流行ってないんですよね?
自分で見つけられた問題点は、mutableMemberDtoを書き換えると
immutableMemberも書き換わってしまうことです。ただ、これはそこまで大きいデメリットなのでしょうか?
他にも問題がないか、どなたかご指摘お願いいたします。
---------------------------------------------------------------
public class Main {
public static void main(final String[] args) {
final MutableMemberDto mutableMember = new MutableMemberDto();
mutableMember.setName("javao");
mutableMember.setAge(20);
final ImmutableMemberDto immutableMember = mutableMember;
System.out.println("His name is " + immutableMember.getName());
System.out.println("His age is " + immutableMember.getAge());
}
}
class ImmutableMemberDto {
protected String name;
protected Integer age;
public String getName() {return name;}
public Integer getAge() {return age;}
}
class MutableMemberDto extends ImmutableMemberDto {
public void setName( final String name) {this.name = name;}
public void setAge(final Integer age) {this.age = age;}
}
---------------------------------------------------------------
Builderパターンを参考にした記事
http://qiita.com/disc99/items/840cf9936687f97a482b >>650
そもそもImmutableの意味が分かってる?
分かってるなら大きいデメリットどころか無意味だということが分かるはず >>651
わかんないです><;
教えて下さい>人< >>652
外側から絶対に変更できないというのがImmutable
この例だとMutableクラスの参照を保持しておくかMutableクラスかどうかを判別してキャストしてしまえばいくらでも書き換えられるのでImmutableではない
目指してるのはRubyのfreezeみたいなものだと思うからそんな感じのフラグ建てるメソッドを用意してセッター側でフラグ建ってたら例外返すようにしとけばいいかな >>653
ありがとうございます!
てことは、ガチのImmutableにしかたったら、Immutableクラスをnewするしかないんですね
う〜ん、やっぱImmutableて地味にハイコストなんですかね? 確かにsetterで例外吐いて実質Immutableにするのもよさげですけど
できればsetterの定義自体削ぎ落としたいですよね
setterが存在しないことがコンパイルで保証できるので >>654
大半のプログラムはオブジェクト生成以外の部分がボトルネックになるから気にしなくていい
Immutableによりデバッグコストを削減するほうがよっぽどいいと思うぞ 確率で分岐させようと思うのだけど、確率は一定ではなく、その時配列aに入っている数値の確率で分岐させたいと思っています
配列aに入っている数値が{ 6,0,4 }の場合、
6/10の確率で一つ目の分岐、0/10の確率で2つ目の分岐、4/10の確率で3つ目の分岐といった具合です
今までは配列bを作って{1,1,1,1,1,1,3,3,3,3 }と全部個数分入れてその中からランダムでひとつ選ぶと言う形にしてたのですが
もっとわかりやすい方法があれば教えてください >>657
int getBunki(int[] a) {
int i = new Random().nextInt(10);
if (i < a[0]) {
return 1;
} else if (i < a[0] + a[1]) {
return 2;
} else {
return 3;
}
} 配列難しいなら使わなくてもいいんでないかな
乱数とif文でもできるのでは。
後々の管理性はどちらが良いかわからぬが 配列aを元に「処理1,処理1,処理1,処理1,処理1,処理1,処理3,処理3,処理3,処理3」で
構成されたリスト作って、シャッフルして最初の奴を取り出す int[] array = { /* ... */ };
int sumTotal = Arrays.stream(array).sum();
int selected = new Random().nextInt(sumTotal);
int accumlated = 0;
for(int idx = 0; idx <= array.length; idx++) {
accumlated += array[idx];
if (selected < accumlated) return idx;
}
こんな感じ?
最後のforループをなんとかしたいけど添字をうまく処理できない… if (selected < accumlated) return idx;
return は関数を脱出する。
ループを脱出するのは、break じゃないの? idxか欲しいならそれで良いと思うんだけどなんか変かな… >>656
そうはいっても、未だにIntegerは重いから
数字のリストはint[]を使えとかいうオッサンがおるわけで Boxing, Unboxing のコストかい?
オブジェクト ←変換→ Primitive Javaはそもそも遅いものだからなぁ
少しでも軽くするか、そこは割り切ってJavaの強みを活かすかは性格が出る サーブレットでのファイルダウンロードで質問です
ダウンロードをキャンセルしたりダウンロード中に別のページ行ったりするとサーブレット側で例外が起きてるんだけど、これってどういう対応すれば良いんでしょう
発生してるのはClientAbortExceptionとかいうやつと、SocketExceptionってやつの2種類です
環境はTomcat8.5とJava8とServlet3.1で、StrutsとかSpringとかフレームワークは使ってないです >>668
クライアントにどう返すか決めて実装するだけだろw その「どう返すか」がよくわからないのでご質問しました
別のページに移動した場合は出た例外から何か返そうとしても元のレスポンスには返せないような気がします
キャンセルの場合は同じページにいるのですが、例外に対して何かレスポンス返そうとするとまた別の例外(IllegalStateException)になります
try-catchで囲んだとして、catchしたあとどうするのが普通なのでしょうか? 大人しくFW入れとけ
自前でフルスクラッチWebサービスなんて死しか見えてないぞ >>671
ご質問したってなんだよ、自分の行動に御をつけんなよw
で、もう別のページに行ってんならなにもしなくていいだろ
もうこっち側の関知することじゃない
キャンセルされたときも、こっちから特に通知することはない
だからもう無視でいいじゃん
それじゃダメな思いがなにかある? >>674
「ご〜する」は謙譲語だよ
自分の行動で問題ないっすよ 本当に教えを乞うてるのなら
誠に恐縮ながらご質問させて頂きました。
くらい言えビチグソが >>675
自分のために行う自分の行動に御はつけませんw >>674
ともに無視で大丈夫なんですね、ありがとうございます
正常なパターンは書籍もWebサイトも情報多いんですが異常な場合は情報が少なくて難しいです
具体的な方針のレスをいただけてとても助かりました
みなさまありがとうございました 異常時の処理は、君が決めること。
ビジネスロジック・仕様
ページを閉じても、保持していたデータを解放するとは限らない。
メールアプリでは、一旦ページを閉じても、
再度開いたら、ログインしたままになってる
10分間、何もしなかったら、ログアウトになっていたり、
何がエラーなのかなど、仕様は各自が考えるもの >>675
質問の場合は自分が誰かに依頼してその誰かを動かす事になるので「ご質問」はおかしい。人が自分に何か聞いてきた時は「ご質問」で良い。 >>676
「させていただく」は謙遜的傲慢表現と言われていて
みっともないからやめましょう
>>677
謙譲語だから問題ないんだよ
謙譲語は自分を低めるものだから
自分の行動につけるもの
道をお尋ねしますがとか
ご相談したいことがなど
(お|ご)〜する で謙譲語
>>680
おかしくないよ
「ご〜する」で謙譲語だから
美化語と謙譲語の違いは中学校で習ったでしょ?思い出して! 「(お|ご)〜する」で謙譲語だから
客が会社に問い合わせて、会社が客に答えるとき
「お問い合わせいただきありがとうございます」は良いけれども
「お問い合わせしていただきありがとうございます」はダメなんだよ
なぜならば「(お|ご)〜する」で謙譲語だから、問い合わせた客を下げることになるから 次スレからスレタイは敬語入門・初心者質問スレにしておけよ 客が質問してきた時はその質問は「ご質問」だよな。
自分が質問する時も「ご質問」なのか?明らかにおかしいだろうが。 なんというタイムリーな展開w
俺も先日メールのサブジェクトに「ご質問」ってつけちゃって
1) 自分の質問に「ご質問」はおかしい、どう考えても間違った
2) でも「質問」だとなんか言葉がトゲトゲしてる
おまえら質問あるときどうしてる?
俺は基本的にはいつも「お尋ね」って書いて誤魔化してた >>684
「ご〜する」で謙譲語だから
ご質問します、とかならおkだよ
相手を上げる尊敬語、自分を下げる謙譲語、中立の丁寧語・美化語
で覚えれば良い
「先程私がご質問になった」といったらおかしいよ
「ご〜なる」で尊敬語だから自分を上げることになるからね >>685
「ご質問」は美化語だから問題ないよ
ご連絡が遅れましてとか
お酒を飲んでいましたとか言うでしょ
おちんぽみたいなもんだよ
上品だよね めんどくせえなあ。
まあ言語は変化し続けるから微妙な問題ではあるが、少なくとも現代の今の時代では
自分の質問に「ご質問」は止めとけ。敬語と受け取らない人が大半だから。
https://www.google.co.jp/search?q=%E3%81%94%E8%B3%AA%E5%95%8F&ie=utf-8&oe=utf-8&client=firefox-b&gfe_rd=cr&ei=pVwzWcmgFO-Q8QfNhKO4DA あ、編集ミスった。まあいいや。わかるでしょ。変な個所は消し忘れね。 >>688
「ご〜する」は謙譲語だから立派な敬語だよ 世界中のJavaプログラマーを代表して言わせてもらうが
目上の人にご苦労様がダメとか現代のマナーと称したリクルートやNHKどもの
言葉狩りにはうんざりだ ジャップランド土人は敬語に拘って生産性を落とすのが大好き >>693
Javaにも敬語を導入すべきだ
forよりもwhileが丁寧と言っていいでしょう >>691
じゃあお前はそれを啓蒙し続けて現代の日本語を変えるがよい。 >>695
「ご〜する」が謙譲語なのは現代の日本語の常識だから無問題 うるさいでございます。
死んで頂けますでしょうか?クズ お客様、もしよろしければ回線をお切りになってそのまま首をお吊りになられてお亡くなりになって頂けませんでしょうか。 いい歳したオヤジや爺どもが子供の喧嘩のような言い合いしてると思うと悲しくなるな >>700
おじさんたちが技術的な議論を繰り広げててとても建設的なやり取りで
勉強になったし晴れ晴れとした気持ちになれました
本当にありがとうございます
こういうふうに言い換えれば周りの人もうれしい気持ちになるだろ
幸せっていうのは与えられるものじゃなくて与えるものなんだよね
悲しみは自分から動くことを止めた怠惰の証 >>701
きっしょクッサ
ワキガハゲチビデブ童貞死ね >>707
ではなぜみんなJavaについての会話をされてないのですか? >>708
基地外だからね、こういうのは気になるならNGしとくに限る java使ってみたら、画像処理おっせーなーって思いました。 オブジェクト指向(の基礎)や例外などを勉強し終えたのですが、
次はどんなことを勉強すればよいでしょうか?
自分ではSwingを考えているのですが。 GUIアプリケーションもいいですがtomcatなどでサーバを建ててServletやJSPするのも、出来ることが広がり良いと思います >>714
いまさらSwingは時間の無駄かもしれない swingで作られた基幹システムの新規画面作らされたことあるけど地獄だぞ
1回あんなゴミのようなもんを体験したら二度と作ろうと思わないだろうから
swingはいずれ絶対になくなる え,今からawt/swingをやろうとおもっていた‥なにがいいの? なんのためにやろうとしてんのか知らんけど仕事のためっていうなら
仕事でjavaのguiアプリなんてまず作らんから時間の無駄 >>718
サイズ調整とイベントではまるのはどれ使っても一緒
C#のXAMLになる前のやつが一番よかった
別にswingが他のにくらべて悪いわけじゃないと思うんだが 「*」を使って二等辺三角形をfor文で書きたいのですが、底辺の*の数を変数とした時はどうすれば出来るのでしょうか? >>719
たぶん実務経験がないような人が書いている本でも読んでいるんだろうが、好きなのやればいいよ。
画面よりデータベースとのやりとりの勉強でもした方がいい。 >>722
アナルを使って二等辺三角形をフォーとか頭おかしいね君 遅くなりましたが、レスをくれた方ありがとうございました。 >>722
どういう出力にしたいの?例えば3だったらこんなのでいいの?
*
**
***
だったら簡単だよね。forの二重ループだ。出力行数は底辺の値と同じだからその分だけ外側ループさせて、内側は*の個数に従って一回目は1、二回目は2という感じで一つづつ増えるようにして*を出して終わったら改行。 二重にしなくてもいい気もするが…
底辺の数をlengthとして、
char[] cArr = new char[length];
Arrays.fill(cArr, '*');
String base = new String(cArr);
for (int i = 0; i < length; i++)
System.out.println(base.substring(0, i + 1));
こんなんででない? >>727
俺は StringBuilder に一つづつ * 足しては出すっての思い付いたが、果たしてそれで初心者のためになるのかというと微妙なところだ。
まあ、最終的には貯めといて出す形式と全く貯めずに出す形式両方がすぐ思い浮かぶようになった方が良いだろうけどね。
そういや他にもストリームの仕組み使ってできそうだな。 >>728
お題がfor使ってだからなー
streamはレギュレーション違反じゃないか?w ストリームとかレギュレーションとか使えばできるんですねありがとうございます! int n = 3;
String c = "*";
Stream.iterate(c, x -> x + c).limit(n).forEach(System.out::println);
試してないけどこれでいけるかな? ああこれだと直角三角形か
二等辺三角形にしたいならまた別だな >>732
ま、>>726も直角三角形だし、縦横同じ間隔で*が表示される状態なら二等辺三角形に見えるものにはなる。 chromeブラウザのF12で表示される「NetWork」タブみたいに
URLにアクセスした際に送受信されるリクエスト全部取得する処理ってどうやれば実現できますか?
たぶんhttpClientかsocketあたり使うと思うけどhttpClientはレスポンスぐらいしか取れないように見える ブラウザはhtmlをパースしてリクエスト投げまくってるんじゃ…… >735
あのなぁそういう糞みてーな回答いらねぇーんだよ
できるならちゃんとした回答書け
ホントイラつく奴だな >>737
そんなに怒らないで
普通の人なら的確に分かりやすく答えてくれるけど
オタクはみんなコミュニケーションが下手糞なんだよ・・・ キーワード出たからってそんなもん質問の時点で書いてるのに馬鹿か?
httpClientなんて既に英語のサイト全部見たしレスポンスヘッダーの中身もメソッドも全部見たわアホ
こういう適当に知ったかで回答する馬鹿が最高にイラつく
まぁ最初から2chの低レベルアホどもに期待なんか1_もしてねーから別にいいけど
ほんと糞の役にも立たねぇスレだな
俺が質問側で今までに役に立ったことなんて1度もねぇわここ
ほんとレベル低すぎる ここ初心者スレやし・・・…
こっちの方が良いんで無いの?
★★Java質問・相談スレッド180★★ [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1492780397/ 煽れば回答が出てくると思ってる奴には教えないからね chromeでF12?やったことないなあ。後で思い出したら押してみよう。 >>741
そのまま一生イライラしてれば?
こちらは特に困らないし構わないぞ。
思う存分苛立っててくれ。
よかったな。 >>741
気持ちはわかるがそう言うのしかいないからココ 昔から(ココがって、別にこのスレや板だけじゃなく、サイトレベルの話な?)
知ったか理論
質問者=素人
っていう短絡的思考だから
知ったか俺氏「ん?この質問は聞いた事ある単語があるぞ?ググって見よう コレか!キリッ!!どや!!」
玄人質問者
「いやそう言う次元の話じゃないから・・・・」
今日も平常運行です ネットで他人を煽って反応を得ようとするのはコミュニケーション欠乏の典型的な症状 Chrome の F12 のネットワークタブようやっとわかった。こんなのあったんだな。知らなかった。 すげーめんどくさかったがパケットキャプチャで解決したわ
ほんと糞の役にも立たねぇ糞どもだな Javaの初心者の質問に答えるスレならJavaでの実現方法が回答として書かれるのは当然のこと。 javaの質問と言っていいのかわからないのですが、springとthymeleafでwebアプリケーションを作るとき
例えば
コントローラークラス内に@RequestMapping(path="/aaa/bbb")というアノテーションのついたメソッドがある場合、
どこかのビューの<a th:href="@{/aaa/bbb}">というタグのついたリンクを押すと上記のRequestMappingのついたメソッドが動くのでしょうか?
それともhrefはコントローラーを介さない画面遷移しかできないのでしょうか?
よろしくお願いします。 >>753
ブラウザのアドレスバーに入力されたURLだろうがaタグのhrefだろうが、サーバーから見れば同じ そのメソッドの中に、print 文でも書いて、テストすれば? >>754
ありがとうございますm(。_。)m
javaほんの少しやっただけなので、httpの仕組みやサーバの動作などが全然わかってなくて… >>751
その「低レベルアホども」に質問したお前はそれ未満ってこった そうだな、人を糞とか低レベルアホとか言うのはおかしいよな そうか、なら「期待してない」のに質問したお前はバカってこった 理屈をおかしいと否定するのには反証が必要なんだが用意できるのか? 反証可能性のないものはそもそも確からしさを証明することは不可能 証拠がなくても理屈自体がおかしかったらおかしいだろ! それってあなたの感想ですよね?
何かそういうデータあるんですか? 結局、理屈がおかしいということの論拠を示さなければならない java考えた人ってアタマいいな
というよりコンピュータ言語を開発するのが大変そう
オラクルの人すごくね? 仮想マシンのアイディア自体はJavaが世界初というわけでもない。 アルゴリズムの質問になるんだが、
1〜9までの数値が0〜16個のまでの範囲でランダムに発生する
それらを組み合わせによって2〜9のどの数で割っても余りなく割り切れるがどうか確認したい
発生した数値は1回しか使えない
こういう感じのは作るのは難しいでしょうか? 1〜9を0〜16個ランダムに
重複無し
この時点で条件破綻してない? 発生の段階で同じ数値が出た場合出た回数だけ使えるます。
数値を発生させた時に5が3回出たならば5は3回使えます。 > それらを組み合わせによって2〜9のどの数で割っても余りなく割り切れるがどうか確認したい
> 発生した数値は1回しか使えない
意味がわからない
[1, 5, 9]が発生したらどうなんの?組み合わせって? 何となく言いたい事は分かった
1:0〜16の範囲でランダム→これで0〜16桁までランダムに決まる
2:桁数分1〜9をランダム生成→5桁なら5つの数字(重複有り)、10桁なら10つの数字、と言った感じ
3:最後に数値の組み合わせを考える
4:2〜9で割るって感じか
やれないことは無いんじゃね?
1は2のループ回数を決めるだけだし、2も生成した数字を配列とかに格納すれば
3の処理は取り出した後に中身を消すっていう操作にすれば、重複無しの数値を作れるはず
(あるいはハッシュキーで一回使ったキーは使えなくするとかでも良い)
4は出来上がった数値で割るだけだし 9×8×7×5=2520で割り切れるかどうかを調べたいって話? [2, 3, 4, 5, 6, 7, 8, 9]
6 で割り切れるならば 2, 3 でも割り切れるので 2, 3を除外
8 で割り切れるならば 4 でも割り切れるので 4 を除外
[5, 6, 7, 8, 9] の最小公倍数は 2520
2〜9 のどの数で割っても余りなく割り切れる数は 2520 の倍数
2520 の倍数の1桁目は 0
1〜9までの数値で0〜16桁の数のうち1桁目が0になるのは0桁のとき、かつ、その場合に限る
なので桁数が 0 ならば ID:S4+AOz/V はJavaの前にまず日本語から勉強しろや >>788
当たり前だけど自分の考えをきちんと言語化して説明できるってめちゃくちゃ重要な能力ですよね…
これができない人とは仕事したくない… まず使える数字を決める
1が何個使えるか0〜16のランダムで決める
2が何個使えるか0〜16のランダムで決める
9まで同様に決める
使える数字を組み合わせて数値を作る
例えば1が3、2が2なら組み合わせによって11122や12211等の数値が何種類かできる
できた数値毎に2〜9が割り切れるか計算する
11122は2で割り切れる
11122は3で割り切れない
これを9まで行う
12211や他の数字についても同様
こういう事をやりたいのかと思ったんだけどどう? 説明下手ですみません。
組み合わせといのは単純に数字を足すだけです。
ただ発生させた数値は使ってもいいし使わなくても良いので組み合わせと書きました。
お手数おかけしました。
他の方法を考えてみます。 うーん。まだわからん。
そもそも何をやりたいのか?
そしてそれは宿題なのか? >>793
不完全燃焼だからできればもう一度説明してほしいな
長くなってもいいから
これは俺の我侭でもあるから面倒ならスルーしてね >>ID:S4+AOz/V
まだ見てるならみんなもやもやしてるみたいだから
◆要件1
・1〜9までの数値が0〜16個のまでの範囲でランダムに発生する。
〇疑問点
・以下のケースどちらも当てはまる。
@1〜9の数値1つずつに関して、0〜16個ランダムに生成する。
※最大生成数9*16
A1〜9までのランダムの数値を0〜16個生成する。
※最大生成数16
◆要件2
・発生した数値は1回しか使えない
・発生の段階で同じ数値が出た場合出た回数だけ使えるます。
・数値を発生させた時に5が3回出たならば5は3回使えます。
・ただ発生させた数値は使ってもいいし使わなくても良いので組み合わせと書きました。
〇疑問点
・なし
◆要件3
・組み合わせといのは単純に数字を足すだけです。
〇疑問点
・足すとは文字列としてか数値としてか。
※文字列だと思うけど念のため
◆要件4
・それらを組み合わせによって2〜9のどの数で割っても余りなく割り切れるがどうか確認したい
〇疑問点
・要件1で生成した割り切れた数字のみの結果表示でいいのか。
※要件1で生成した数値全件表示とかいらない? AOJの2問目が出来ません。
入力した数の3乗を表示する課題なのですが…。
下が提出したコードです。
https://ideone.com/NyK9NB ArrayListにおけるremoveの挙動に関して質問なのです
removeの引数として、indexの位置かオブジェクトを指定できるのですが
listが数値の場合に、数値をオブジェクトとして引数を指定する場合はどのように記載すれば良いのでしょうか?
例えば
ArrayList<Integer> ary = new ArrayList<>();
ary.add(1);
ary.add(2);
ary.add(33);
//=>[1,2,33]
System.out.println(ary.remove(33));
System.out.println(ary);
直接33を削除したくても、IndexOutOfBoundsExceptionのエラーが発生してしまうので・・・・・・
listをString型に変換して、文字としての33を指定すれば出来ない事はないのですが
何かまどろっこしいので良い方法があればご教授していただきたいです >>797
プロコンの結果(Output)は指定された通りに出力されていないとダメです
そのコードの場合だと、余計なprintが付いてるので問答無用で弾かれます
今回の場合だと、計算結果だけ出力すれば良いです
×:〜求める3乗値は125です。
○:125 >>799
ありがとうございました。
このサイトって融通きかないんですね…。 >>800
その「融通」を効かせるのがどれだけ困難かがその内わかるよ >>798
ary.remove(new Integer(33)) ってやるとどうなる? 値を直接指定するなら重複なしと考えていいはずだからListじゃなくてSetにしちゃえば >>800
AOJの説明文読むのとチュートリアルやるのくらいやれ android studioでプログラミングをしたいと考えているのですが、何か良い解説書はありませんかね?
javaの基本的な部分は理解しているつもりです 参考書色々あって何を読めばいいのか分からないですよね >>802
無事にオブジェクトを指定して削除できました、有難うございます!
削除する時に新しいオブジェクトを生成すれば良いというのは目から鱗でした
>>803
確かに重複なしの数列だったので、Setを利用すれば
引数に数値を直接指定して削除できました!
おかげで解決しました、有難うございます! removeメソッド自体が紛らわしく作ってあるとも言えるかな。
型がintではないとかオートボクシングがないとかなら紛らわしくはならないんだが。
色々組み合わさってしまった結果意図せず作り出された落とし穴っぽいものだな。 自然数がN個が入った配列がある。数値は必ず20未満
この配列をひとつの数値にしたり数値から配列に復元する方法を教えてください >>811
ビット単位にするとして、1〜19なら5ビットに収まるので例えばintなら32ビットだから6個まで入れられる。
これはビット単位でシフトしながら作って、戻す時は逆のことをする。
int[] x = { 6個の1〜19の値 };
int n = 0;
for (int i = 0; i < 6; i++) n = (n << 5) | (x[i] & 0x1f);
これでnに6つの値が詰め込まれた状態になる。
戻す時はこうする。
for (i = 5; i >= 0; i--, n >>= 5) x[i] = n & 0x1f; その他、ビット単位ではなく20進数として扱うという方法もある。
この場合は20で掛けたり割ったりがシフトレフトやシフトライトになる。 >>813
できたー!
クッソ解かりやすい解説ありがとナス! 1.データベースとつなげてECサイトを作る課題をやってるんだが(買い物かごを使うAmazonみたいなもの)、テーブル設計教えてくれ
2.同時に複数のブラウザからログインできないようにしたいんだけどどうすればいいか教えてくれ
1はスレチだったらすまん >>816
1.
商品テーブル
・商品ID
・商品名
・商品価格
買い物カゴテーブル
・ユーザID
・商品ID
・商品個数
売上テーブル
・売上ID
・売上日
・購入者氏名
・購入者住所
・送り先氏名
・送り先住所
売上明細テーブル
・売上ID
・商品ID
・商品数量
・売上金額
2.
ログインテーブルにセッションIDの列を作って
ログインしたときにセッションIDを上書きして
承認のときにセッションIDをチェックするとか コンストラクタへのパラメータにnullを許さない場合、
何を投げるのがベストですか? また、その根拠は何ですか?
1) Objects.requireNonNull()などによるNullPointerException
2) 単にIllegalArgumentException
今までは2)でずっとやってきたんですが
nullなんだからヌルポでいいんじゃないのか?
の考えも徐々に大きくなりつつあります 親商品テーブル(商品名管理)と子商品テーブル(バリエーション管理)みたいなの作って在庫テーブルも別に作った方がよくないか
カゴに入れてキャンセルとかも実装するとなると在庫テーブルで一元管理は大変だろうし引当管理テーブルもあった方がいいかも ああ。しかし、もはやJavaの話ではなくなっているように思う。
続きはDB関係のスレでやった方が良いのではないかな。 「テーブル設計教えてくれ」の時点で違うってわかるじゃん…… 課題手伝ってもらおうとしてるくせに
「教えてくれ」
教えてくださいだろアホ いっそのこと試験問題のように「〜せよ。」とか書いてほしいものだ。 お前等馬鹿が質問の仕方もろくにわからんガキに反応するから
teratailみたいなところでも意味不明な日本語で質問する馬鹿が減らないんだよ プログラム言語の勉強は本当に頭が痛くなる
しかし動いた時の嬉しさは言葉にできない。
痴呆抑制にも効果があるのではないだろうか?
ただ、眼には良くないけど… >>831
いただきます…いただきますっつってんだろー!
俺には召し上がれすら言わねーのかよ!
って息子が反抗期に言ってた 演習問題で、抽象クラスを型に持ったメソッド見たのですが
クラスを型にした場合、何を返せば良いのでしょうか?
public Record getRecord(int idx)
{
return ???;
}
abstract public class Record
{
//特にリターンは無い
}
intやstringの型ならintやstringを返すということは解るのですが
特に返り値を持たないクラスはどうしたら良いのか想像がつきません
よろしくお願いします 抽象クラスを返せば?
要するに、具象クラスA・Bも、抽象クラスXととらえる事で、
異なる具象クラスA・Bに、共通の処理を書ける
return で、抽象クラスをもらったら、
それを該当する具象クラスへ、正しくキャストする >>836
例えば、return new MyRecord(idx)
public class MyRecord extends Record {
実装略
}
実際はそのgetRecordが定義されてるクラス内の別メソッドやらプロパティ使ったアクセス経由で値返す事が多いだろうけど。 抽象クラスのシングルトンみたいなことが出来ちゃうのか?
だとしたら気持ち悪いわ 腕試しに簡単なゲーム作ってるんだけど
敵キャラクターとか見方キャラクターのデータってどう保存しておくのが良いんだ?
育成要素無いからステータスは一定だから配列でどうにかできそうな気がするけど
各キャラクターの要素敵も味方もは「キャラ名」「HP」「攻撃力」「防御力」「すばやさ」 >>843-844
csv,tsv,json,xmlなど好きな形で書いておいて、ファイルからデータ読み込んで、オブジェクトのインスタンスを生成して使うって話じゃないん?
そのデータが固定ならばjar内に同梱、可変なら外に置けるように作る >>843
そういうのこそクラス作っておくのがベスト
配列にするのは可読性が下がるから効率を追求するときだけにしとけ ありがとうございます。
せっかくなのでcsvファイルを読み込むのに挑戦してみようと思います。 腕試しって言ってるしそもそもオブジェクト指向を理解していないのでは 配列は配列で便利ですよね
同じ処理のボタンとか、配列で綺麗にまとめられると嬉しくなります
話はそれますが。 VBしかやったこと無いからJAVA能力検定1級というのを受けてみたんだけど、テキストエディタだけでコード書くのキツイね
コードフォーマッタ無いから手動でインデントしたけど、対応する鍵カッコを見失って困った
JAVAって標準のIDE無いからテキストエディタとコンパイラでやるんだろうけどキツイ世界だね まあな、メモ帳で1万行のメソッド書いてコンパイルできるようになったら一人前だ、それがJava Java8の標準ライブラリの範囲内で数値を8桁の2進数表記がやりたいのですが、良いやり方があれば教えてください
int i = 10; // 0 <= i <= 255
String actual = /* 整形 */
assertEquals("00001010", actual);
思いついたのはこれなんですが…あまりにもイマイチな気がしてます
String tmp = "0000000" + Integer.toBinaryString(i);
actual = tmp.substring(tmp.length - 8); >>853
String actual = Integer.toBinaryString(i | 256).substring(1); >>854
エンタープライズならザラにあるよ
複雑だけど信頼性の高いプログラム Java7以降の数値リテラルで、2進数は接頭辞 0b・0B だろ。
_ も無視されるから、間に使える
0b0000_1010 >>857
設計が変でもそういうのはある。
しかし設計が変なことにはかわりなし。 >>858
それが何か?
誰もそんな話してないよな。 >>855
天才現る!
ありがとうございます、すっきり書けました
意図をコメントで残しておけば混乱もないでしょうし助かりましたm(_ _)m >>859
信頼性の高いプログラム作れるんだから変じゃない
優れた設計と言っていただきたい >>860
そんなこと言っとったら話題が広がらんだろうが
誰も話してなかったら話をしちゃいけないんだもんなあ
ああ辛いわあ
すごい話があるんだけどいわないから! >>862
Javaで一万行は普通は何か変だろ。
それそのものが信頼性高くても何か作りがおかしいことには変わりはない。
>>863
なに必死になってんだ?大丈夫か?
誰もおまえのこと悪く言ったりしてないぞ。 >>864
人を刺してる人が居たら
刺されてるのが自分じゃなくても嫌な気持ちになるだろ
俺はお前の犯罪を止めたい コメント、改行のみは除いて1メソッド15行以内に収めましょう 1万行が普通じゃないと言っちゃう人は
業務経験が圧倒的に不足していると言わざるを得ない
大規模開発では普通にあるし普通に書けないと仕事にならない >>869
モデルにデータ設定するだけで1000行超えるんだが 派遣で医療系で使う基幹システム作ってる会社行ったとき
2万行越えのクラスファイルが4つぐらいあったな
変数は基本全てクラス変数で、かつ密結合でクラスファイルが
別のクラスのクラス変数参照しまくってるからバグの特定が困難で
最適な改修方法を精査するのにソースの条件分岐をメモってるだけで
何百行にもなるほどクソなソースで後にも先にもここが最凶最悪だったな でかいクラスの中身がほとんどC言語ってやつか・・・ >>874
保守のたいへんさが分かってよかったじゃないか。
世の中、そんなのばかりだよ。 オープンソースの有名な製品もコードを見るとかなりクソだったりする、 1万行にしないためのJAVA
それが1万行になるという事はJAVAを書いてるコボラ 構造化プログラムをJAVAで書くコボラがIT業界名物デスマの元凶 まともな設計できるやつがほとんどいないってことだな >>877
コードの良し悪しより、便利かどうかだからな
コードの綺麗さにこだわってるくせにろくなもん作ったことない、なのに声だけデカい奴が最近は増えたけど □ がこの様に一直線に並んでいて、選択した□の幅が広くなり、それによって残りの□の座標を変化させたいです。
□ □ □ □
↓左から2番目を選択([ ]は幅が広くなっていることを示している)
□ [ ] □ □
に表示したい。
どう書けばいいでしょうか?
for (int i = 0; i < 4; i++) {
if (i == cnt) {
} else {
}
g.fillRect(20 + (80 * i), 300, 40, 40);
} public static void sysprif(String s, Object... args) {
System.out.printf(s, args);
}
とか書くのは邪悪なんでしょうか?(いや、邪悪だろうけど、何か後で酷い目にあったりするんだろうか) >>883
そのsyspritfの存在意義ってなんなん
printfを直接呼び出すのと比べてなんのメリットがあんの? >>883
そもそもメソッド名の短縮化あたりで年配に見えてしまうが? >>884
いや彼はObject型の可変引数でいいのか聞いているのではないのか? ※882
ttps://www.axfc.net/u/3818221
とりあえず作ってみた。
こんな感じ? すごいどうでもいい質問かも知れないけど
メソッドの引数の括弧とバケットの間ってスペース入るのがデフォなの? >>889
C言語のスタイルを受け継いでいるからスペースを入れないのが普通。
if文等なら入れる。 >>889
") {"の話か。これならスペースを入れるのが主流だろうな。これがC言語だとここで改行するスタイルもある。
Javaはクラスの場合は改行、メソッドの場合は改行しないのが普通。 基本的にeclipseのフォーマッターに従っときゃいいよそんなもん
改行なんかは見やすく調整が必要だったりするけど、スペースなんて好みの入る余地はない >>891,892
なるほど!ありがとうございました! >>891
クラスも改行しないだろ
まあ好みの問題か どうなんだろうねえ。たまに真に受ける純真な人が居たりするから初心者スレではなるべくならない方が良いとは思うが。 >>894
クラスは改行するのがJava本来のスタイル。 >>887
そんな感じです。ちょっと説明しずらいので描いてみました。
ttps://www.axfc.net/u/3818541.png
□同士の間隔は変わらないのですが、選択したものの幅が広がり、
他の位置を広がった幅分だけ設定するのが難しいと感じています。 >>899
文字じゃ無くて四角を描画するのかな?
こんな感じ?
ttps://www.axfc.net/u/3818669 >>900
おおお!ありがとうございます。まさにこれです!
しかも、クリックで選択できるとは。
ありがとうございます。 >>897
おまえの言ってるのは
class X
{
}
みたいなことか?
class X {
}
ではなくて。
しかし後者のソースの方が圧倒的に多いように思うんだがなあ。
まあでも Java の場合は文法的にはどちらでもよく完全に好みの問題でしかないからどうでもいいことだが。 >>899
できればエロ広告満載のアップローダを使うのは控えて欲しかった。
隠す必要のない画像ならimgurとかもあるしな。
http://blog.livedoor.jp/easy2ch/archives/256381.html >>902
Javaはクラスの場合は後者が伝統的な書き方だよ。 >>902
前者の間違いだった。Javaはわざわざこれはクラスだとわかるように改行するのがもともとのJavaのスタイル。 >>908
そもそもエクリプスは反Java側が作ったものだから。 だからどうしたと言うのか
Javaの一般的IDEであるeclipseのフォーマッターによるフォーマットでは後者が採用されているし
各種書籍やネット上のソースでも後者が絶対的多数
伝統的と言えば聞こえはいいが結局は絶滅危惧種の古文書的フォーマット フォーマットなんて所詮言語と同じでナマモノだから
使われなくなればどれだけの伝統があろうが淘汰される、それだけ >>910
ちなみにJavaはNetBeansが本家だぞ。 >>912
悪いけどちゃんと読んでからレスしてくれるか
「一般的IDE」と言っただけで誰も本家の話はしていない >>909
そうだったの?じゃあなんで全部Javaで作ったんだ? 予告犯の主人公は変なとこで改行入れんなとか言われてたな
派遣切りでそのままネカフェ難民になってたけど、
一応java使えてれば仕事くらいはあるもんなんちゃうの? >>914
もうどうでもいいことだけど、eclipseは日蝕という言葉だから、サンマイクロシステムズの太陽へのあてつけだったんだけどな。もうそういう話も話題にならない時代になったわけか。 使えるっていうのがどのレベルか知らんけど
ちゃんと全部のデザパタ理解してソースコード書けて
オラクルゴールド取れるぐらいにSQL理解してて
メジャーなORMの仕組みを理解してちゃんと使えて
Javaのフレームワークは最低限Strutsの頃から出て物全て把握してるなら
仕事なんて吐いて捨てるほど選び放題だ
javaの言語覚えました! レベルの奴は知らん >>917
オラクルマスターのゴールドはSQLを問う資格ではない。 >>917
Java EEの定義からはずれることも言ってるけど頭は大丈夫か? >ID:wnVI7vr5
馬鹿乙
実際に仕事で使われることについてしか書いてないのに
なんでJavaEEの定義がどうとか出てくるのか まぁ揚げ足取ってるつもりで全然取れてない馬鹿みたいに
javaだけしか知らない阿呆だけでシステム作れたら誰も苦労しねぇ罠 システムはjavaだけしか知らない阿呆だけで作れます あのなぁ
俺は仕事したことなさそうな初心者に
親切心でJava、SQL、ORM、フレームワークってキーワード出してやってんのに
定義から外れてるだのjavaだけで作れますだの低次元のゴミは消えろ阿呆
馬鹿の言葉遊びはチラシの裏で一人でやってろ >>926
その親切心が皆の足かせになってることに気付こうよ めちゃくちゃ的外れな上に
知りもしないこと知ったげに言われると
初心者が混乱するから迷惑なんですが キーワードすら聞いたことない馬鹿がゴキブリのように沸いてくるよな阿呆
俺を除いてここにいるようなjavaだけしか知らない馬鹿どもには仕事はできない
これが現実だ
現実は馬鹿に合わせてレベルを下げてなんかくれないぞ?
一つ勉強になったなアホども タイトルも糞も俺は>915の疑問に回答しただけだアホ チームの人間をアホ・バカと罵ることで自らの力を誇示する人がいる
彼らはそれと引き換えにチームの人間を萎縮させチームの力を低下させる
個人の力よりもチームの力を優先できることをコミュニケーション能力と呼ぶならば
会社がコミュニケーション能力を重視するのは当然のことかも知れない 僕らはチームなんだよ!
チームプレイに徹して欲しい 認知心理学の研究で大学の教授にアンケートを取ったところ
自分が他の教授よりも頭が良いと思っている人は9割だった
知的活動では自信過剰なことがプラスに働くんじゃないか
という研究結果があるので他人の批判ではなくて自己の思考や
行動を活発化させる方向にそれを活かせればよいのだろうけどね >>904
すみませんでした。以後、imgurを使用います。
----
indexが増えた際のx座標計算がうまくできません。
IntStream.range(0,itemCount)
.filter( i -> getItemX(i) <= e.getX() && e.getX() < getItemX(i)+getItemWidth(i) ).limit(1)
の制限も考慮しなくてはならないのでしょうか?
参考ソース (ttps://www.axfc.net/u/3818669)
作成ソース (ttps://pastebin.com/i84ws4zH) >>916
ならばなおのこと全部Javaで作った理由がわからんな。Javaでこんなものまで作れますよって実績作ることにしかならないじゃない。 Javaの話じゃなくてすまんがIronPythonを.NETをdisるために作ろうとしたら想像以上によく動くものができたから自分の論文を撤回せざるを得なくなったって話思い出した 業務システムでプロジェクト分割をしようと思った時、
1. Controller + Form
2. Repository + Service + Dto
3. システム共通
の3つに別けようと思う。
このプロジェクト分割方法は馬鹿かな? >>931
現実はお前に合わせてレベルを下げてなんかくれないぞ? >>939
全部Javaなんて誰が言っているのか? >>904
すまん。899は俺に合わせたんだと思う。
>>938
79行目
誤: if (i == index) {
正:if (i == this.index) {
13行目のint index;と71行目の getItemX(int index) 、どちらもindexなんだけど、79行目では13行目の方を使う。
86行目のtmpX += interval;を83行目と84行目の間に移動。
forの外にあったらintervalは1回しか使われない。
>IntStream.range(0,itemCount)
>.filter( i -> getItemX(i) <= e.getX() && e.getX() < getItemX(i)+getItemWidth(i) ).limit(1)
>の制限も考慮しなくてはならないのでしょうか?
そっちはマウスのボタンを押した際のX座標からどの四角かを判別してる所だから関係ないよ。 >> 945
ありがとうございます。なんとか出来ました。
>>そっちはマウスのボタンを押した際のX座標からどの四角かを判別してる所だから関係ないよ。
なるほど。まだよくラムダが分かっておらずfilterとlimit(1)があったので、座標計算の一部をしているのかと思いました。
親切にどうもありがとうございました。 >>944
Java ではないのか? じゃあこれ間違ってるから書き直しておいてくれ。
https://ja.wikipedia.org/wiki/Eclipse_(%E7%B5%B1%E5%90%88%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83)
> Eclipse自体はJavaで記述されている。 EclipseはすべてJavaで作られた,と,言いたかったのか Wikipediaの編集はそうするべきと思った人が自分でやりましょう,そのためのWikipedia 初歩的な質問ですみません
例外処理について勉強しているところなのですが
以下のコードでobjメソッド内で例外エラーが発生したとして、
"throws Exception"を記述する理由が良く分かりません
その記述が無くても、tryブロックでobjメソッドを呼び出した時に例外エラーが起こるので
catchブロックに移動し問題なく例外処理されると思うのですが・・・
class Sample{
public static void main(String args[]){
try{
obj();
}catch(Exception e){ //obj()からパスされた例外をキャッチ
//例外処理
}
}
static void obj() throws Exception{
処理
}
} >>950
それがないとコンパイラも人も中身を全部読まなきゃ何の例外返す可能性があるメソッドなのかわからないからだろう。 javaってc++のシンタックスシュガーという認識で良いでしょうか >>953
何言ってんだお前、全然違う
シンタックスシュガーじゃない
センタックスシュガーだ
それ以外は合ってる >>953
似ている所はあるがかなり違うと思ってた方が良いと思うよ。 >>953
まずシンタックスシュガーって言葉の認識がおかしいわw C++はC言語、手続き型プログラミング言語に抽象データ型を実現し、
静的型付けオブジェクト指向プログラミングを書きやすくするために作られ、
C言語を継承し機械語の効率的な実行のための設計を維持しようとしている。
Javaは当初、組み込みシステム上でネットワークコンピューティングに対応(support)するために作られた。
Javaは移植性があり、セキュアであり、マルチスレッド対応であり、分散であり、そして
C++よりも単純(simple)になるように設計された。
Javaの文法はCプログラマに馴染みやすいものが選ばれたが、Cとの直接的な互換性は維持されていない。
JavaとC++の比較
-Wikipedia C++
プログラマを当てにする
明示的な型破壊
マルチパラダイム
演算子多重定義
Java
プログラマを守る
型安全性
オブジェクト指向
演算子の効果は不変
JavaとC++の比較
-Wikipedia java初心者の素人ですが、C言語は難解で難しいんやろなあと思っている >>962
それはオブジェクト指向だけ切り取った場合だろw >>961
難解というのなら Java の generics の方が難解だ
C++ のそれは instanctiate に端的に表されるとおり、至極素直だと思う え、まじですか?
Cの方がメモリ管理とかポインタとかあって難しいという噂ですよ。
その代わり、早いのだとか。
javaは、私でも初歩だけは楽しく学べました。
どんな言語にしろ、プログラムって素晴らしいですね! 「メモリ管理は、Java仮想マシンに統合されたガベージコレクションの機能によって行われる(中略)
Javaには、C/C++のような、整数とポインタの相互変換、
配列の要素へのポインタによるアクセス、ポインタ演算といった機能は、基本機能としては提供していない」
Java
-Wikipedia でも楽しくて素晴らしいなんて思えてるのは最初だからかも。
開発となれば納期とか派遣とか人間関係とかあって、つらいという噂です。
やはりプログラム言語は恐ろしいですね… >>965
ポインタってぶっちゃけかなり単純な話だよ >>969
でも void * 型を適正に使うのはむずかしい C/C++はGCがないからなぁ、まあBoehm使えば済むけど Cはアセンブリ言語がわりに使うのが丁度いい感じがする。
OS書くとか、デバイスドライバ書くとか、組み込み用マイコンの数KBのROMエリア用のプログラム書くとかな。
ああ。でもこの頃は物凄く小さいマイコンボードでもLinux乗ってたりするからあまり小さくする必要はないかな。 **
Cには、ダブルポインタ、ポインタのポインタもあるから面倒
可読性が低いし、メモリ管理が厄介なので、
生産性が低く、開発費がかかる
固定配列だから、配列.add のように、配列に要素を追加できない
漏れは、1冊丸ごと、ポインタの本も買ったけど、
まともにプログラミングするだけでも、数年以上かかるし、
生産性が低いから、どんどん自分の給料・時給が下がっていくのが、Cのおそろしさw
あの人、ずっと製品を作れないって、影口を叩かれるのに、君は耐えられるか?w ただ、アセンブラもそうだけど、生産性以前にC言語のプログラミングは楽しいよ プログラミング初心者の話でしょ?
仕事に使うかって話なの? >>973
reallocぇ。。。
GUIはMFCなりに任せて、中身はCで書くとか、新人の頃はそんなだったから、開発自体は数年もかからんよ。
バグった時のメンテが大変なだけ。 >>973
てか、Cの配列はシンタックスシュガーでありポインタ操作を分かり易く表現しているだけだ。
*(p + i) を p[i] と書けるようになっているだけ。だから添え字がオーバーしようがマイナスだろうがお構いなしにアクセスできる。
そして malloc() 等でヒープにメモリ確保してそこを配列として使うのであれば realloc() で配列の伸縮は可能。
ていうか使っていいメモリ領域を伸縮できるだけのことでそこを配列として使うかどうかはプログラマの自由。 Cの配列の重要な点として、確保した領域が本当に連続しているらしいというのがある
他の言語は、その辺がどうなってるのかわからない >>978
連続してるから配列と言う。
だから二次元配列は二次元分が一次元のメモリアドレスに並ぶが、配列の配列は中の配列は連続してて、外の配列は各配列のポインタを配列として保持する。
この辺はデータ構造だから他の言語でも実装方法に違いはあっても意味的には同じはず。
(だからPythonはわざわざリストって言ってるんじゃなかろうか) プログラミングそのものが理系って気はするけどな。
その中じゃCはハード寄りなので工学系か。 プログラム自体が理系という間違った認識
経済学部や文学部もJavaくらい必修にすればいいのに C、C++は自由度が高すぎる。C、C++を使わないといけないようなところ以外では使わないのが普通。
使う場合はコーディング規約なり、なんらかのルール、制限をかけないとたいへんなことになる。 >>979
多次元配列の時にポインタ(Javaなら参照)使うかどうかは言語によって違うが、Cはポインタ使わないで塊にした配列というのも作れる。これはメモリ上で連続している。
例えば char s[3][10]; と宣言した場合、 char型10要素の配列が3要素連続している。char[10] という型が新たに作られて、それの配列になっているからだ。
なのでこれは char *s[3]; と宣言してから各要素にメモリを割り当てた時と同じように s[2][3] みたいにしてアクセスできるが、その場合は char * の配列なので扱いが違っている。 >>983
そうそう。言語でサポートされていないことを人間が工夫するなりツール使うなりして補わないと中々うまく行かない。 ***SLAMO***
}
000-"F","TAP","0","1M","L","E-07"/0B"[9BA%]"^"2*73B"="0"/"9GA"
001-"Do"[[[%9DE=HUF%%!%$0B1OTU"NE"]]]<\b>
002-<<%!!!HNDEL%!0DAI@$7[1B]!0#!@>>
3000-{{1\B%HUF!0$$\%6/0Q\%6/GA[[7BU]]%9TE!%$en$}}
---
[[[C%%]]]
}
000-"5802"/"α"="0.1888412376155482"%en{ >>870
全部で10000ならあるよ。
1ファイル1000行は役員に呼び出される。 確かに1000行でも一体何故そうなったのか気になるレベルだな。
データを中に含めたりすれば行くだろうが、外出ししなかったのは何故かとかね。
データ含んでないのになったのならそれはそれで不思議ではある。基本的な何かを間違えてたりはしないかとかな。 プロジェクトの人間が入門書レベルのソースコードしか書けない奴等ばっかだと
関数分割してるだけで不満垂れ出す
そしてそういうプロジェクトのリーダーはただ管理してるだけの上辺だけのリーダー
コネで仕事取ってるそこそこデカい会社によくあるパティーン こんばんは、別言語を嗜んでいますがjavaは初心者です
とある勉強会に参加しようか迷っているのですが理由としてはIDEを使わずjavacコマンドでのコンパイルになるためです
勿論セッション内容はjavaについてですが、IDEを使わずの原始的な(失礼だったらすみません)方法でも勉強になるでしょうか?
アドバイス頂けると助かります >>993
なるなる
むしろ最初はIDE使わないで勉強したほうが本質的に理解できると思う spring bootを使うことになったのですが、本買って勉強した方がいいでしょうか?
Javaのオブジェクト指向が分かるレベルです
どうやって勉強した方がいいでしょうか? >>993
IDEのような開発のためのツールの勉強にはならないだろうが言語そのものの勉強にはなるのではないかな。 javaの関数が戻ってこなくてタイムアウトになる
デバッグ実行で追うと関数の最後まで行くのに、呼び出し元に戻らない
何か心当たりありませんか >>997
関数の最後に原因があるんじゃないのか? このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
life time: 87日 1時間 33分 33秒 2ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。