じゃばーアホなのですぐ重複スレを立ててしまう
>>1 どんまい
さっさと削除依頼出してこいマヌケ
JavaのSwingとアプレットの違いがわかりません。 Swingは描画クラスですよね?アプレットとの関連は?
7 :
デフォルトの名無しさん :2011/10/18(火) 22:24:21.59
8 :
デフォルトの名無しさん :2011/10/18(火) 22:31:04.45
>>7 ありがとうございます。アプレットクラスってありますか?
9 :
デフォルトの名無しさん :2011/10/18(火) 23:26:09.04
じゃあ、あなたたちは何のためにいるんですか?
暇つぶし
13 :
デフォルトの名無しさん :2011/10/19(水) 05:07:57.39
はじめまして 今度JOGLを勉強しようと思っているのですが、ダウンロードできる場所と インストールの方法が良く分かりません。 java.netの説明がたくさんあるのですがそこに行っても、ダウンロードできません。 よろしかったら教えてください。 スレ違いだったらすいません。誘導していただければ幸いです。
ソケット通信に使うパケットって、どんな風に設計しますか? パケットクラス作るものだと思ってたんですが、 byte[]が普通なんでしょうか。
まさか if(buf[243]==OK) とかやっとれんから作るでしょ
UDPのパケットだったら java.net.DatagramPacket あるけど、 そういう話じゃないのか? 普通はストリーム垂れ流しでパケット単位とか面倒くさい事しないと思うが。
パケットをSerializableにしてObjectOutputStreamを使ったのですが、 非常識な実装でしょうか。 非常識なら非常識で良いのですが、普通はどのようにするのでしょうか。
それパケットとか言わんよ、普通。
eclipse で エディタプラグイン作っており ツールバーにトグルボタン追加して ボタンがONの時に、キャレット位置の文字列を取得して OFFにしたら、その文字列を表示する というのを試しているのですが public void run(IAction action) { if (action.isChecked()) { //文字列取得 }else{ //表示 } } if文の中で、文字列の取得やってるんですけど 今の場合だと、ボタンをONにした時しか文字列を取得しません。(つまり1回だけ) ONの間にキャレット位置を変更したら、文字列も取得しなおす というようにするには、どうしたらいいでしょうか? 一応javaなのでここで質問したのですが、違ったらすいません。
>>19 言わんのはわかったのですが、普通はどうするのでしょう。
ByteStreamで各値を入れていく様な形でしょうか。
普通は好きにする。
普通と好きとが対立した場合、どちらを選ぶのが普通なんでしょうね。
ジャバではprivate void meth()となっている関数はprivate fianl void meth()とどう違うのでしょうか?
privateなメソッドは暗黙にfinalを宣言したのと同等になる。 finalクラスの中のメソッドと同じ扱い。
ですよね。継承できないんだからfinalでもprivateでも違いはないですよね。
27 :
デフォルトの名無しさん :2011/10/19(水) 23:49:55.24
うん
好きに選ぶのが好き
普通を選ぶのが好きになればいいでしょ
普通を選ぶのが普通なら、普通を示してほしいのですが。
自分で自由に定義した一つの通信データの形式をパケットっては言わないでしょ せいぜいリクエストとか、コマンドって言うんじゃね GETリクエストを、GETパケットとか言うのかなり違和感がマッハだし
つまり貴方の仰る普通とは、クラス名はPacketではなくRequestにすべきと。 それだけでしょうか。 Socketに対するPacketのつもりで書いただけだったので、 その誤解は想定外でした。 申し訳ない。
俺は電文って呼んでる。 業界用語だろうか?
電文でもパケットでも通じると思うけど
口語だと電文は紛らわしい
>>32 がエスパーしてくれるまでずっと意味不だった
arraylistで list.remove(10); とやっても要素が削除されないんですがなぜでしょう?
後ろの11番目のが詰まってきたんじゃね
あー foreachで取り出してるからかー
41 :
デフォルトの名無しさん :2011/10/21(金) 00:05:56.55
String str = new String[]{}; この{}って何ですか?
配列の初期要素値
ArrayInitializer 配列初期化子
44 :
デフォルトの名無しさん :2011/10/21(金) 21:41:26.13
(´・ω・`)うん
45 :
デフォルトの名無しさん :2011/10/22(土) 00:07:54.03
FileReaderクラスを作成し、read()でテキストファイルを一文字ずつ読み込んだところ、 改行コードが \r\n として読み込まれてしまいます。 C言語では、\r\n は \n に自動的に置き換えられると思うのですが、 Javaで自動的に置き換えるにはどのようにすればよいのでしょうか?
Collection<Cloneable>のオブジェクトをdeep copy(格納されている要素すべてをclone()してコピー)したいと考えています。 ですが、Cloneable自体はclone()を宣言していないのでcloneableObject.clone()とは書けません。 このような場合、 cloneableObject.getClass().getMethod("clone").invoke(cloneableObject); と書くしかないのでしょうか。 良い書き方があれば教えてください。
はあ
>>45 System.getProperty("何か忘れた")で改行文字をOS毎に識別してみては?
>>46 確かCollection<Cloneable>のオブジェクトは最初からcloneメソッドを実装していないと思います。
実装者がcloneメソッドをオーバライドしてdeepcopyするロジックを書かないといけないのかもしれません。
まちがってたらごめんなさい。
Java7で導入されるプロパティっていうようなアクセッサって どんなメリットがあるんですかね… ゲッタとセッタで間に合ってるような気がするんすけど。
52 :
デフォルトの名無しさん :2011/10/22(土) 02:24:21.75
ですね
53 :
デフォルトの名無しさん :2011/10/22(土) 09:23:11.06
直接・間接問わずに、あるクラスを継承、またはあるインタフェースを実装 しているクラスを探すにはどうしたらよいですか? また、ロードしている全クラスの中から上記のようなクラスを探すことは 元のクラスの量的に大変でしょうか?
>>53 まず前者はどういう規模でやりたいんだ?
一つのプロジェクトで、とかならソース集めてgrepするのが速い。
全世界で、とかいうなら諦めろ。
後者については「どのクラスローダーが?」って問題があるけど、時間をかければ十分可能。
55 :
53 :2011/10/22(土) 10:01:42.19
ありがとうございます プログラム自身が自分を構成するクラス群の中から あるクラスを継承しているクラスを探します なので検索対象はメモリの中のクラスになります 時間をかければ可能ということは、遅いということですね クラスローダなどから、検索対象を基本的なクラス(JRE内のクラス?) ではなくユーザ定義のクラスのみに限定することはできるでしょうか?
>>55 プログラム自身ってのがフレームワークのコンテナみたいなものを考えているのなら、
クラスローダを自作してloadClass()をoverrideするときにロードしたクラスを記録しとけ。
>>55 やろうとしていることがいまいち分からん。
「あるプログラムを構成するクラス群」なんて、メモリ内を検索するまでもなく、
ソースコードの段階で、(基本的には)一意に決まってる物なんじゃないの?
それとも、外部からライブラリを持ってきていて、
その中であるクラスが使われているかを調査したい、みたいな事なのか。
その辺の事情も書かないと、有効な回答は出ないと思うよ。
58 :
46 :2011/10/22(土) 12:22:46.24
>>49 コード例を挙げると、
List<Cloneable> cl = Arrays.asList(cloneableObjectArray);
List<Cloneable> copyOne = new ArrayList<Cloneable>();
for(Cloneable c : cl.iterator()) {
copyOne.add(/* ここにc.clone()のようなものを書きたい */);
}
引き続きよろしくお願します。
59 :
53 :2011/10/22(土) 12:40:00.59
当然外部ライブラリのクラスも含みます。 プログラム自身が実行中にメモリ内から探すので ソースコードを用意してその中から探すのではありません。 そして、クラスの利用の有無ではなく 直接・間接を問わずあるクラスを継承、またはインタフェースを実装しているクラスを探します。
>>58 List createDeepClone(List list) {
for(Object o : list) {
if(o instanceof List) {
createDeepClone(o);
} else {
// オブジェクトをクローンして値を格納。
Object newObj = o.clone();
(省略)
}
}
}
List型のみに限定するとこんな感じかな。ちょっと詰めが甘いけど。。
>>60 Object#clone()はprivateだから無理。
すまん嘘ついた。 private じゃなくて protectedだな。
>>62 ああそこはcloneメソッドを実装しているクラスかインタフェースにルール決めするしかないかな^^
AbstractCloneableみたいなの作ってpublicなclone持てばいいんじゃないの? Cloneableはただのマーカーだからcloneの成功が保証されるわけじゃないから結局実装クラスで呼び出さないとわからない。
>>64 だから
>>46 はList<Cloneable>ってCloneable限定してるじゃないか。
>>46 deep copyする必要があるクラスがわかっているのなら、
自分ならインタフェースを別で作る。
public interface MyCloneable extends Cloneable {
public Object clone();
}
んで、Collection<Cloneable>の代わりにCollection<MyCloneable>を使う感じ。
67 :
45 :2011/10/22(土) 13:16:06.03
>>48 C言語のコードを移植したいので、
できればread()で得られたint型が改行かどうか判定する方法を探しています。
System.getProperty()で改行文字を得る方法は、戻り値がString型になってしまうので、困っています。
>>67 >戻り値がString型
えー
Windowsなら13 → 10 の順番に来た文字コードを怪しめばいいと思うけど
JAVAの仕事がしたいので勉強しようかと思います お勧めの書籍やサイトを教えてください。フレームワークというのも重要と聞きました それも教えてもらえるとありがたいです
HttpClientやHttpPostクラスから、URLクラスのopenConnectionのようなメソッドの呼び方を教えて下さい。
>>69 まず書店に足を運んで初心者向けの書籍を立ち読みする。
初心者向けと銘打たれている中にも難易度の差があるから実際に読んでみて一番しっくり来たものを1冊購入する。
フレームワークは重要だけどこれからJava始めますってレベルなら無用の長物。
まずは基本をがっつり固めて勉強するべきだと思う。
あとは・・・Oracle認定Javaアソシエイツ(OCJ-A)かOracle認定Javaプログラマ(OCJ-P)の勉強をすると文法には詳しくなる。
オブジェクト指向を知らないならJavaの入門書を買って 詰まらないサンプルコードとにらめっこして クラス定義、メソッド、プライベート、パブリックなど初歩から地道にやってくことになる 他のオブジェクト指向言語を知っているなら Java APIドキュメントやWebに転がってるサンプルコードを見ながら簡単なものを作ってみるのもいい。 テキストエディタでゴリゴリ書いてもいいけど開発環境使うならEclipseがオススメ
>>45 >>67 ファイルを行ごとに分けたいが、行末判定は自前で書きたくない、というのであれば、
BufferedReader#readLine() がおすすめ。"\n" と "\r" と "\r\n" で勝手に区切ってくれる。
>>71 >>72 ありがとうございます。オブジェクト指向すら知らないので本屋にいって探してきます
>>70 HttpClientクラスがHTTP送受信の機能を提供してるみたいだけど何がやりたいの?
76 :
57 :2011/10/22(土) 14:38:14.93
>>75 えっと、HttpClientからサイトに描画している文字列をinputstream経由で取りたいんです。
ジャヴァを頑張って勉強してみても馬鹿には無理
80 :
45 :2011/10/22(土) 16:36:30.50
>>73 一行ごとだと、そんな便利な機能があるんですね。
でも、今は、一文字ごとの読み込みで考えています。
一文字ずつ読み込んで、字句解析の様な事をするプログラムを作ってます。
解る方いらっしゃいましたらよろしくお願いいたします。
>>80 字句解析なら1バイト長で取得したほうがきれいに作れる気がしますが・・
82 :
45 :2011/10/22(土) 16:53:12.84
>>81 一バイト長の読み込みが良いのですが、\r\nは自動的に\nに変換してほしいんです。
windows環境でC言語を始めるにはvisual studio以外にどういう無料の選択肢やコンパイラがありますか? guiは不用でnative dll作成 (jni,jna)とdirectx,sse,avx,gpu(intel,amd)など常に最新のnative機能とライブラリにそのコンパイラ環境でアクセス出来るかどうかがメインです。 出来ればgplライセンスでなくフリーでプロジェクトの活動も活発なものを期待していますが、そんなオープンソース・コミュニティーみたいな都合がいいwindows用のC言語プロジェクトはwindows環境には存在しないですよね?
84 :
デフォルトの名無しさん :2011/10/22(土) 17:28:08.12
>>83 その前に、中学校の勉強をしっかりやった方がいいんじゃないかな。
そのまえにスレタイ100回読み直せ
でも俺は中学のときにはプログラミングばっかりやってた。
>>82 1byte長で読み込むけどCR-LFを判別したいってことか。
標準にはそんな仕様ないから自分でCR見つけたら次の1byte読んでLFなら捨てるようなメソッド組めばいいんじゃない?
あ、LFだったとしても文字コードによってはマルチバイトで次がある可能性があるから気をつけて実装しないとダメだよ。
89 :
57 :2011/10/22(土) 18:19:57.87
正規表現について質問させてください X<B#>A<B#>というStringがあったとして <*>で囲まれたもの以外のalphabetをreplaceAllを用いて"|"に変換するにはどうすれば良いのでしょう? Javaでの正規表現の書き方について、参考になるホームページなどがありましたら、教えていただけると助かります。
正規表現はやめたほうがいい
92 :
デフォルトの名無しさん :2011/10/22(土) 21:18:59.07
俺、正規表現は全く分からねえ。 どうしてもできないのなら、俺みたいにJython使えばいいんじゃね? でもきっと、ちゃんと正規表現が使えると便利なんだろうな・・・・
93 :
45 :2011/10/22(土) 21:30:29.96
>>68 すみません。コメントしていただいたのに見逃してました。
そうですね。少し手間はかかりますが、そうすることにします。
>>88 なるほどです。そうすることにします。
ありがとうございます。
>>91 正規表現は不味いんですか?
char[]に分解して書くとかなり大変なので
正規表現で片付けようと思ったのですが。
>>92 学校の課題なので、Jythonはちょっと・・・
理屈自体はTuringMachinの講義を受けた際、勉強したはずなのですが
実際に使うとなるとさっぱりです。
ただ、正規表現が使えるといろいろ夢が広がりそうなので、
O'reillyのMastering Regular Expressionsでも読んで見ることにします。
abstruct で定義されているメソッドのうち、いくつかしか実装しないんだけど その場合警告が出るのを避ける方法って無いかな? abstructクラスの部分集合のクラスかインターフェイスを定義したいんだが無理ですよね?
警告じゃなくエラーじゃないのか そのクラスも”abstruct ”って宣言しないと
実際の文字列がどんなのかわからんが 例の文字列を対象にするなら replaceAll(".*?(<[^>]*?>).*?", "l$1") ってのはどうだろう
98 :
デフォルトの名無しさん :2011/10/23(日) 03:34:13.90
昨日まで動いてたプログラムが全部 「Could not find the main class」 になって突然全く実行できなくなった。 JUnitのテストコードも、動いてたものが全部 java.lang.ClassNotFoundException: と言われた。 どんな原因が考えられますか?
JREインストールしたときにwin7で関連付け最設定されたとか
一旦クラスファイルを全消し(clean)した後、 再コンパイルせずに起動スクリプトまわしたとか
101 :
98 :2011/10/23(日) 03:52:11.14
>>100 確かに、最近cleanしました。
その後起動スクリプトを実行すると何か障害が発生するんですか?
英語の問題だろ。cleanの意味を考えろ。
103 :
98 :2011/10/23(日) 04:16:31.04
automatically buildにチェック入れてたので大丈夫かと思ってたんですが 実際はbinにクラスファイルがありませんでした 原因は最近アンインストールしたsoyatec eumlというプラグインで、 インストール時にプロジェクトのビルドパス設定にsoyatecのものが自動的にセットされていたようで アンインストールした事でそれが見つからなくなりクラスファイルが出力されていませんでした
>>95 adapterパターンでググれ
ただしそのabstractクラス設計者が意図している対応かは知らん
105 :
デフォルトの名無しさん :2011/10/23(日) 10:22:51.24
public static void main(String args[]){ Runnable r = someMethod(); Thread t = new Thread(r); t.run(); Runnable r2 = someMethod(); t = r2; } ってやったら、rへの参照がなくなって実行中なのにGCされてしまう可能性はありますか?
106 :
105 :2011/10/23(日) 10:23:33.60
t = new Thread(r2); でした。
>>97 俺も似たようなのしか思いつかなかったんだけど、
それはreplaceAll使えっていう出題者の意図に沿った回答なんだろうか…
>>105 自分が書いたコードの範囲だけみると確かに参照が無くなっているように見えるけど、
内部的には参照が保持されてる(ThreadGroupでググろう)。
なのでそういう心配はない。
あとは…デーモンスレッドについてもググっておけばOK。
>>105 そんなことを心配する前に、mainスレッドがGCされるかどうかを心配すべきだ、って書いてあった。
(つまり実行中のスレッドはGCされないから心配するな、ということ)
おいらには別スレッドが開始されているようにはみえないや
iTextを使って、PDFファイルを開いてダイレクト印刷するサンプルとかってどこかにありませんかね? プログラム内でPDFを作成して印刷するのはあったんですが…
113 :
デフォルトの名無しさん :2011/10/23(日) 18:44:11.95
115 :
デフォルトの名無しさん :2011/10/23(日) 19:09:52.12
javaプログラミングの課題がわかりません。 問題:二次元配列に、文字a,b,c,d,e,f,g,h,iを初期値として設定して、二重の繰り返し分を用いて二次元配列の値を出力させて次のように表示するプログラムの書き方がわかりません。 a d g e i a c b e h f d 初期値の設定まではわかるのですがその後の処理が見当もつきません。
116 :
113 :2011/10/23(日) 19:10:09.94
Groovyで #{set title:'arg'} の'arg'に変数を使う方法を知りたい 変数には %{'variable.name'} これでアクセスできるんだけど、入れ子に出来ないみたいで #{set title:&{'this.page.title'} /} これはエラーになる 誰かわかんないかなあ
>>115 宿題スレ行け。
for (int i=0; i<配列.length; i++) {
....for ( int j=0; j<配列[i].length; j++) {
........ // 配列[i][j]出力
....}
}
>117 たらい回しされ過ぎワロタ for (int i = 0; i < 配列.length; i ++) { for (int j = 0; j < 配列[i].length; j++) { // 配列[i][j]出力 } // 改行出力 (←new!!) }
初期値はどうやって設定したんだろう?
char[][] a = { {'a', 'b', "c"}, ・・・ } とか、 a[0][0] = 'a'; a[0][1] = 'b'; a[0][2] = 'c'; ・・・ とかなんじゃないの。
121 :
デフォルトの名無しさん :2011/10/24(月) 01:05:28.61
へえ
すみません。今週の月曜日の日付を取得するには どうしたらいいでしょうか?
事故解決しました。
もとい自己解決しました。
データ通信についての質問なのですが、 JMFを使いキャプチャした画像を他のPCに送り表示させようと考えているのですが、 250KB/Sの送信量になり、受け取るPCで大量の取りこぼしが発生し、画像を再構築することができずにいます。 現在、DatagaramChannelを使い、画像を1024byteのパケットに分割した上で、送っているのですが、 取りこぼしが少なくなるように改善することはできないでしょうか? よろしくお願いします。
JMFってなーに?
ググれ
>>125 取りこぼしが嫌なら、なんでDatagramChannelを使っているの?
>>128 データ量が多いのでUDPを使って通信したいと思ったからなのですが、
socketを使用するべきでしょうか?
取りこぼしや破損時の再送信とか並べ替えのやり方を 他人に聞かないとできないなら、素直にSocket使った方がいい。
UDPは取りこぼしが起きていい通信に使うもんだ
132 :
125 :2011/10/25(火) 17:17:49.20
特性を考えると、確かにそうですよね 取りこぼしたなら、取りこぼしを補填するような方法を考えるべきでした Socketを使う前にその辺を改めて考えてみます ありがとうございました
マルチキャスト使う場合はDatagramSocket使わざるを得ないんだっけ?
TCPはユニキャストだからな
JavaEEがなんなのかよくわからないので教えてください。 自分の中では↓の認識なのですが、合っているでしょうか。 JavaEEはWebの大規模開発に必要な機能の仕様を一式まとめただけで、 実際に実装されるコンポーネントやらなんやらは「APサーバ製品」が各自で提供する。 OSSのフレームワークとは違い、提供される部品やらなんやらはAPサーバのものなので、 JavaEEの仕様通り作って、なんかあったらAPサーバのサポートでなんとかしてもらえる。 だから企業とかで色々キビシイ状態?でシステムを作る場合は、JavaEEに準拠してれば安全だね。って仕組み?
JavaMEってなんですか? 昔あったWindowsMEみたいなもんですか?
JavaSEってなんですか? 効果音のライブラリですか?
JavaFXってなんですか? 株式やデイトレード用のシステムですか?
以上アホジャバーのお笑いのセンスでした
自分でもちょっとひどいと思ったわ
windows meは販売当初「ついに発売!ウィンドウズ・わたし(I,My,Me)」とかいうキャッチで販売促進していたらしい。
\インポ!インポが抜けとる!/ ,..-──- 、 /. : : : : : : : : :: \ /.: : : : : : : : : : : : : : ヽ ,!::: : : : : :,-…-…-ミ: : :', {:: : : : :: : :i '⌒' '⌒'i: : :} {:: : : : : : | ェェ ェェ | : :} ∩___∩ { : : : : : :| ,.、 |: :;! / ヽ __ヾ: : : :: :i r‐-ニ-┐| :ノ | ● ● | ゞ : :イ! ヽ 二゙ノイ‐′ | ( _●_) ミ <ハァ? あ、import java.io.*;ね。 ` ー一'´ヽ \ ,,-''"彡 |∪| __/`''--、 ) |@ |ヽ/ ヽノ ̄ ヽ | | ノ / ⊂) メ ヽ_,,,--- | .|@ | |_ノ ,へ / ヽ ヽノ ̄ | |_ / / | / | | ヽ_,,-''" __|_ \\,,-'"\__/ / ,────''''''''''''''""""""" ~フ⌒ ̄ ̄ ~ヽ ヽ  ̄ ̄"""'''''''--、""''''---,,,,,,__ /  ̄''、|ノ )ヽ ___/  ̄ ̄) / |___
>JavaEEはWebの大規模開発に必要な機能の仕様を一式まとめただけで、 >実際に実装されるコンポーネントやらなんやらは「APサーバ製品」が各自で提供する。 そう。 JavaSEだってそう。Oracleが公開してるものがデファクトになってるけど。 >JavaEEの仕様通り作って、なんかあったらAPサーバのサポートでなんとかしてもらえる。 ホントに仕様通り作れる? あの膨大な英文ドキュメント目通した? それに、JavaEE仕様だけでなく、その前提も知ってないと。 たとえば、Deployment DescirptorファイルはXML形式だからXML仕様知ってないと。 まぁ、仕様通りにできてなければ、何がダメだったか回答してくれるとは思うけど。 >だから企業とかで色々キビシイ状態?でシステムを作る場合は、JavaEEに準拠してれば安全だね。って仕組み? JavaEEに準拠して作れば、どこのAPサーバでも動くモノになるね。って仕組み。 色々キビシイ状態?でも動く、ってところはAPサーバのウデの見せ所。
意味不明
Open Java, Sun Java, Oracle Java, JRockit, IBM JavaとJavaにも色々あるけれどー
>>143 ご丁寧にありがとうございます。
追加で1点><
APサーバの中身がどうなっているのかよくわからないのですが、
例えばJavaEEが動く仕様のAPサーバで、EJBの代わりにSpringを使いたい場合は、
APサーバにSpringの部品?を入れて、EJBの部品を使わないイメージなんでしょうか?
>>146 >EJBの部品
EJBアプリはプログラマが作るモノ。部品として用意されてるわけではない。
(APサーバによってはアプリの部品となるようなEJBを同梱してたりするけど)
APサーバはServlet仕様やEJB仕様に基づいて作られたアプリを動かす実行環境。
>EJBの代わりにSpringを使いたい場合は、APサーバにSpringの部品?を入れて
EJB使わなきゃいけないて訳じゃないし、実際、EJB使わない、ってプロジェクトが多いし。
>>148 むむむ。
ではEJBコンテナとかSpringuコンテナとか言われているのは、
具体的には何のことを指すのでしょうか?
EJBアプリ=EARファイル のイメージなのですが。
それをコンテナ?上に配置するとはどういったことを指すのでしょうか?
ggrkasu
>>149 APサーバが持つEJBコンテナの上でEJBアプリが動く。
クライアントアプリ(Servletとか)からの呼び出しはEJBコンテナが受ける。
EJBコンテナはDeployment Descriptorの情報に従い、権限チェックを行ったり
トランザクション準備といった前処理をした後、EJBアプリを呼び出す。
EJBアプリを呼び出した後、トランザクション決着(コミットやロールバック)といった後処理をして
呼び出し元に返す。
SpringはAPサーバから見ればアプリの一ロジックにしか見えない。
ServletやEJBのお作法は難しいしめんどくさいから、面倒なところは誰かやってよ、ってことで
SpringとかStrutsとかのフレームワークがあると思っとけばいいんじゃね。
EARファイル=Webアプリ(WARファイル)+EJBアプリ(JARファイル)を固めたもの。
なんか入門読めば済むだろ
>>151 なんとなく理解できました。ありがとうございます。
まとめるとこんな感じであってますかね?
JavaEEサポートのAPサーバは、WebコンテナやEJBコンテナなどの実行環境のみを提供する。
中で動くアプリは勝手につくりなさいよ。JavaEE仕様のものだったら動くって保証するんだから。
でもJavaEE仕様でつくるのはめんどいし、痒いところに手が届かない場合もあるので、
OSSとかの各種フレームワークを使ってアプリを作りますよ。
んでつくったアプリ(WARファイル、JARファイル)をAPサーバにデプロイしてあげれば、
JavaEE仕様に準拠してなくても、フレームワークが色々補完してちゃんと動きますよ。
>>153 >なんとなく理解できました。ありがとうございます。
お疲れ様でした。
日本語でおか
あさんといっしょ
158 :
154他 :2011/10/26(水) 04:36:51.32
あ、確かに間違ってるね。
質問です。 InputStreamとかが投げるIOExceptionの中に、何種類か意味が違うものがありますが あれの内容によって別の処理を走らせるというのは、一般的な手法でしょうか。 また、そうする場合、Exceptionのどのパラメータを基に判別すれば良いでしょうか。
クラスAの非静的パブリックメソッドは、Aの任意のサブクラスでオーバーライドできる これの答えが手持ちの問題集では×らしいんだが、 ◯だよな?
finalついてる場合…? てか解説載ってないの?
飛ばされてきました 例えばRADツールでframeとpanelを作って、panelにlabelを配置して、そのpanelをframeに配置したとしますよね その後でlabelに変更を加えて、その変更をframeに反映させたいときはどうすればいいのでしょうか 一度frameからpanelを削除して、また改めてpanelを配置するしかないのでしょうか
どういうエスパーだ
んなもんRADツールや編集の内容によるだろ。分かるかボケ。 普通はlabelクリックしたら編集モードに入るだろ。そこで編集しろ。
165 :
デフォルトの名無しさん :2011/10/26(水) 19:05:13.76
一度frameからpanelを削除して、また改めてpanelを配置すれば良いよ!
167 :
デフォルトの名無しさん :2011/10/26(水) 20:19:13.44
Windowsでは文字が正しく表示されていましたが、Macでは…と表示されてしまいます。 同じフォントサイズで表示するにはどうしたらいいのでしょうか。
せめて、どこに表示される文字なのか、位は書くべきだろ。 どんだけエスパー頼みなんだよ。
169 :
デフォルトの名無しさん :2011/10/26(水) 21:32:41.60
すみません。 JButtonクラスのオブジェクト内に表示させる文字です。
JavaでAWTとSwing使ってゲームを作ったのですが C言語とGDIに変換したいです。 JavaをC言語に変換するツールってありませんか? ぐぐってもどこもリンク切れだったりDLしてもなぜかバグってるのばかりです。
171 :
デフォルトの名無しさん :2011/10/26(水) 23:36:49.30
同じ長さのbyte[]が2つあったとして その2つのバイト列の論理積を取ろうとした時、 for(int i=0; i<a.length; i++){ a[i] &=b[i]; } みたいに書くと1バイトずつ論理積とっていきますよね。 しかし昨今のCPUなら8バイト以上同時に論理積を取れます。 Cならこのへんは最適化されるだろうけど、Javaだとどうなんですか?
昨今のcpuなら256bitsづつ処理できますよ。
>>168 すみません、ただフレームに張り付けたパネルに張り付けたオブジェクトに変更を加えた場合の一般的な表現をしたかっただけです
伝わらなければ家に帰ってからソースをそのまま張り付けようと想うのですが
そもそも開発環境に依存した話なのかjava自体の話なのかも分からないのです
>>171 Cだとそのへんはどういう最適化がされるんですか?
>>174 少なくともキャストが可能だからint配列として処理できるし
複数バイト同時に論理積を取る事で実際のループ回数を減らせるはずです
ジャバ言語のプリミティブ配列ではアラインメント連続であることが言語仕様で保障されているんですか?
いいえ
私は全くもって
>>176 とは関係無いのでが
もう少し誠意を持って答えるべきじゃないのかと思います
私は
>>176 とは縁もゆかりもありませんけれどもそう思いました
jvmの[]オブジェクトはアラインメント連続であることがjvm仕様で保障されているんですか?
でが?!でがぁ?!!
調べておくので待っててください
182 :
168 :2011/10/27(木) 01:59:38.92
>167 >169
追加で3点
@ Win でコンパイルしたクラスファイルを Mac に持っていったのか、それとも、Mac でコンパイルし直したのか
A System.out.println(button.getText()); の結果
B setFont() しているならば、その部分をコメントアウトして実行した結果
>>173 安価ミスかな?
「Label の変更」とは、具体的に何なのか。
その変更は RAD ツールで静的に行うのか、それとも、実行時に動的に行うのか。
前者ならば、使用している RAD ツールは何なのか。
後者ならば、そうだね、まずはソースを貼ってもらった方が、話は早そうだね。
>複数バイト同時に論理積を取る事で実際のループ回数を減らせるはずです この程度ならJITがやってる。プログラマの仕事じゃない。
うそくさ
8このbyte並べてlongに直してlongとlongで論理積とって8このbyte配列にぶっこむと早くなるの?
186 :
デフォルトの名無しさん :2011/10/27(木) 05:59:45.62
そう言えば最近Swing弄ってないんだが、 Zオーダーだっけ?アレの解消って皆どうやってる?
>>185 いや同じバイナリデータについて
long[]とbyte[]双方で論理積のベンチとって見たら明らかになるかな
最適化されてなければ、データが十分にでかいと
long[]のほうが数倍速い
188 :
170 :2011/10/27(木) 07:22:26.37
ちなみに用途としてはGCCでコンパイルしたいからです。 GCJでやったらとんでもなく重たくなったのでC言語にして GCCでコンパイルしたいです。なにかないですか?
C言語で書けばいいですよ
TomcatでWebアプリを開発したんですが、実際に稼動させるのに 良いサーバーってありますか?
>>159 ふつうは catch で分ける。
try {
...
} catch (FileNotFoundException notFound) {
...
} catch (EOFException eof) {
...
} catch (IOException ioe) {
// それ以外
}
>>170 いっそのことVMをC言語で書くってのはどうだ。
>>176 スタック上のbyte型値は32bitとVM仕様で決まっているが、
byte配列の1単位が何bitかは何も決まっていない。
JNI仕様との兼ね合いもあるので、
まあどのVM実装もみっちり詰め込んでんだろうと思うよ。
>>171 Java7のFork/Join Frameworkってそういうのに使えるんじゃなかったっけ。よく知らんけど。
>>176 ググったらダイレクトbyteバッファー使えって出てきた。よく知らんけど。
>>192 JNI仕様では(必要があれば)コピーして渡すことになってるのでみっちり詰め込んでなくても仕様上の不都合はない。
そんなことしてるJVMがあるのかは知らんけど。
>>194 fork/joinはスレッドで並列処理するシロモノだから関係ないぞ。
>>171 Windows SDKのコンパイラで/O2 /archオプションをつけて
コンパイル
ここの部分のCのソースコードに対して
for (i = 0; i < 8; i++) {
a[i] &= b[i];
}
こんなコード吐き出した
; Line 15
xor eax, eax
$LL6@main:
; Line 16
mov dl, BYTE PTR _b$[esp+eax+260]
and BYTE PTR _a$[esp+eax+260], dl
inc eax
cmp eax, 8
jl SHORT $LL6@main
全然最適化されてない模様
>>196 i < 8をaとbの長さに一致させたら?
変わらない
>>190 Tomでいいじゃん。
知らず知らずのうちに、Tomに依存した作りになってるかもしれんぞよ。
>>199 世の中にはTOMって略す奴もいるんだなw
javaプログラム内でオブジェクト同士がもつ木構造的な関係を外部ファイルに保存し、 再利用、また人の目で確認するためにはxmlで保存するというのが 普通のやり方になるのでしょうか? java.xml.parserでパースすると、<element>hoge</element>みたいな場合に hogeがelementの値ではなく子要素になるところや、改行もテキストノードになってしまうところが なんとなくもやもやして、他の方法はないのかなあと考えています。
>>201 ><element>hoge</element>みたいな場合にhogeがelementの値ではなく子要素になる
え?
"element"のElementノードの下に"hoge"のTextノードができるだろ?
>改行もテキストノードになってしまう
DocumentBuilderFactory#setIgnoringElementContentWhitespace(boolean whitespace)
このファクトリで作成されたパーサが、XML ドキュメントの構文解析時に要素の内容の空白
(大まかに「無視できる空白」と呼ばれることがある) を排除するように指定します (XML Rec 2.10 を参照)。
>>203 >"element"のElementノードの下に"hoge"のTextノードができるだろ?
はい、言葉足らずですいません。
<element>hoge</element>のように書いたときは
"element"ノードの値としてhogeをもってほしい感じがするのですが
実際は下にできる、つまり親子関係のようになってしまうということです
<parent><child></child></parent>のようにタグの入れ子なら親子関係なのも理解できるのですが。
>DocumentBuilderFactory#setIgnoringElementContentWhitespace(boolean whitespace)
ドキュメント見ろ、という話でしたね。ありがとうございます!
205 :
170 :2011/10/27(木) 23:24:09.52
C言語できるにはできるけどJavaで作ったソースをいちいちコピペで翻訳なんて面倒くさいです。 自力で翻訳プログラム作ってみようかなとも思うんでJavaのプログラム解析するパーサとかってないですか?
xml理解して出なおしてこい
XMLはそういうものだ、というとそうなのかもしれないのですが その考え方がなんとなくしっくりこないので他のやり方は ないのかなあと思い質問させていただいた次第です。
>>204 そんなキミはjavax.xml.xpath辺りのAPI使うといいかも。
XPathFactory xpf = XPathFactory.newInstance();
XPath xp = xpf.newXPath();
String val = xpf.evaluate("/element", doc); // valに"hoge"がセットされる
>>204 <element value="hoge" />
にでもしたらいいのでは。
XML以外だと、JSON で頑張るとか。
初心者なのですが質問させてください オライリーの「Head First Java」という本の中で以下のような問題がありました。 問:コンパイル可能かを答えてください (※DogクラスはAnimalクラスを継承している、どのコードも文法的に正しいクラス、メソッドに属しているものと考える。) 1, ArrayList<Dog> dogs1 = new ArrayList<Animal>(); 2, ArrayList<Animal> animals1 = new ArrayList<Dog>(); 3, List<Animal> list = new ArrayList<Animal>(); 4, ArrayList<Dog> dogs = new ArrayList<Dog>(); 5, ArrayList<Animal> animals = dogs; 6, List<Dog> dogList = dogs; 7, ArrayList<Object> objects = new ArrayList<Object>(); 8, List<Object> obList = objects; 9, ArrayList<Object> objs = new ArrayList<Dog>(); 正解は以下のように示されていました。 3× 6× 7× 8× まず×印がコンパイル可能なものに付けられているのか、あるいは不可能なものにつけられているのかすら分からないのですが 仮に可能なものに付けられているとしてもEclipseで実際にコードを打ってみた結果と符合しませんし 不可能なものでも同様でです。いかんせん解説がついてないので困りました。 どなたか正しい答えがわかるかたいらっしゃるでしょうか。
>>207 XMLにこだわりがないのならYAMLとかJSONとか調べてみると幸せになれるかもね。
213 :
デフォルトの名無しさん :2011/10/28(金) 22:11:01.16
tomcatを使っています。 セッションスコープのデータをレプリケーションできるのに アプリケーションスコープのデータをレプリケーションできないようですが、 代替となる方法はありますか?
ここで質問していいかわかりませんが質問させてください 携帯のjavaアプリがいまあるんですがこれをPC上で動かして遊びたいのですが可能ですか?
プログラミングじゃねーだろ。 アンドロイドアプリならエミュレータが必要
単一ペアを一度だけ保持できるKey-Value Mapを使いたいと考えています。 JavaDocを漁ってみたところ、AbstractMap.SimpleImmutableEntry<S, T> というものをみつけました。 内部クラスではありますが、public宣言されているので普通にインスタンス化は可能です。 ここで質問なのですが、このような内部クラスはたとえpublicであっても使わないほうが良いのでしょうか。 パッケージプライベートとかprotectedなら使うなという意思表示がされていると思うのですが。
へえ
クラスパスにあるjarを巡回してClass.forName()で アノテーション付いてるクラスを探すことをしています。 Class.forName()でクラスロードしたときに 呼ばれるイベントリスナーみたいなものありますか? SLF4Jのクラスをロードすると警告が出力されて、 これを握りつぶしたいのですけどThrowableが投げられてるわけでは 無い様で困ってます。
警告を出しているのがクラスローダなのか 該当クラスのstaticイニシャライザなのかは既に調査済み?
220 :
デフォルトの名無しさん :2011/10/29(土) 08:44:19.67
?query=a1&query2=a2 みたいなURL引数を自動的にパースしてくれるライブラリってJavaSEに無いんですか?
Java初心者です プログラムを打ち込み、コマンドプロンプトから実行しようとすると この文字は、エンコーディング MS932 にマップできません というエラーが出ます。 MKEditorやテラパッド、メモ帳などでShift_JISで保存したのですが どうしてもエラーがでます。 もう3時間はパソコンの前で格闘しています 原因としては何が考えられるでしょうか??
格闘のやりすぎでパソコンのモニターに鉄拳を入れちゃったんじゃないですか?
>>221 ソースコードから日本語全部取り除いて一度試してみては
ちょこちょこアホが湧いてるな。
>>216 特に決まりはないと思う。
自分なら使用する箇所が基盤系か業務系かで分けるかな。
基盤系なら、内部クラスだろうとinternalだろうと必要なら気にせず使う。
業務系なら、基本は使わない。どうしても必要なら、新しいクラスを作ったうえで外部に見せないように利用する。
そりゃ日本語全部取っ払えば通るのは当たり前じゃないか 「@」とか IME変換時に「環境依存文字」て出るのは大抵ダメだった気がする
MS932同士なら大丈夫だろ
>>216 ソフトウェア工学上、内部クラスを別パッケージから使ってはならないという
慣習はたぶんないよ。
java.text.NumberFormat.Field使っちゃいかんといわれたら困る。
囲みクラスのカプセル性を内部クラスが台無しにするのとかは論外だけど。
老害マネージャーがかわいそうだから内部クラス禁止
という職場もあるそうだが…
SimpleImmutableEntryって「ネストしたクラス」や「メンバクラス」には該当するけど 「内部クラス」には該当しないからなぁ。
EntryインタフェースはMapの内部構造だけどアクセサも用意されてるしいいんじゃないかな。 具体的な実装はみてないけど、 普段の内部保持がSimpleEntry、Map#entrySet()とかやるとImmutable版が戻るのかな。
>>228 うちがまさにそういう職場だ。
1. 無名クラス禁止って言われてGUIのイベント駆動を全部クラス化させられた。
2. メソッド分割禁止って言われて1業務1クラス1メソッド構成。
理由は「客が」理解しにくいから。
PMがどんなにがんばって説得してもダメだったよ。
構築+保守で食っていく予定を変更して構築だけで撤退。
main()に全て詰め込みってこと? ライブラリ作成の都合上コメントつきで1000行越えるクラスをよく書くけど、main()1つしか使わないのはすごいクラスになるだろうね。
>>232 あくまでもメソッド分割が禁止なだけだから業務ごとにクラスは分かれてる。
AD03M1HogeGyomu hoge = new AD03M1HogeGyomu();
hoge.execute();
って感じで起動するわけだが、AD03M1HogeGyomuクラスにはexecute()メソッド一つしかないし、業務ロジックはここにしか書けない。
DBアクセスもデータの詰め替えも全部ここに書いていて読みにくいことこの上ない。
客曰く、いちいち他の場所を見にいくのは非効率的だ。一ヶ所で全部網羅してるこっちの方がいい、そうで。
>>232 追記。今話したシステムは1業務クラス1メソッドでJavadoc込み4,000行オーバーのファイルサイズ150kとかだよ。
関係者全員が口を揃えて「こんなクソに自分の署名残したくない」ってぼやいてた。
それで問題ないんじゃないの?
236 :
デフォルトの名無しさん :2011/10/29(土) 15:32:47.21
ほんとに?
javadoc込みとかいわれてもな
>>224 ソースです!!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ImageStep extends JFrame implements ActionListener {
ImagePanel panel; //イメージ描画用パネル
JButton button; //移動ボタン
public ImageStep(String title) {
super(title);
setSize(700, 800);
setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);//[x]ボタンでフレームを閉じる
setLocationByPlatform(true); //開始時の表示位置はOSに任せる
setLayout(new BorderLayout()); //画面の下にボタンが置けるレイアウト
//ファイルからイメージを読み込む ファイル名を指定する。
Image im = new ImageIcon("zeng01.jpg").getImage();
panel = new ImagePanel(im); //パネルを作る
add(panel, BorderLayout.CENTER); //パネルを中央に配置
button = new JButton("移動"); //移動ボタンを作る
button.addActionListener(this); //押された時のアクション指定
add(button,BorderLayout.SOUTH); //下に配置する
public static void main(String args[]) { ImageStep frame = new ImageStep("張り付け+移動"); frame.setVisible(true); } public void actionPerformed(ActionEvent e) { JButton b = (JButton)e.getSource(); if(b == button) { //移動ボタンが押された。 panel.moveImage(); //イメージを移動させる。 repaint(); //再描画(中身が変わったとき必要) } } } class ImagePanel extends JPanel { int width=450,height=300; //パネルの幅と高さ Image image; //描画するイメージ int x=10,y=10; //描画する位置 // ImagePanel(Image im) { super(); //通常のパネルを作る。 image = im; //イメージを保持 setMinimumSize(new Dimension(width,height)); //パネルの大きさセット setPreferredSize(new Dimension(width,height)); } public void paintComponent(Graphics g) { super.paintComponent(g); //描画のデフォルト動作 g.drawImage(image, x, y, this); //イメージを描画 } public void moveImage() { x = x+10;//x,y座標とも10づつ動かす。 y = y+10; } }
日本語が容量食ってるだけじゃね?
へんなwebサイトからコピー&ペーストした部分があると スペース文字や日本語の一部が文字コードおかしくなったりする。 手打ちでソースかきなおしてみ。
やってみます!!
ログレベルのWARNとERRORの使い分けだけど、 サーバからのエラー通知をログに残して クライアントでは何事も無かったかのように処理を続行する場合、 エラーなんだから、ERRORレベルでログに残すべき? それとも、別にクライアント側の動作には そんなエラー通知など必要ない情報なのだから、WARNレベルでログに残すべき?
>>240 >>241 もう一度自分で打ち直してみましたが同じエラーが出ました...///
原因がさっぱりわかりません!!
もう一度やりなおせ MS932…なんてエラーでないぞ
メモ帳ANSIでもS-JISでも行けるよな?
コマンドプロントじゃなくてEclipseやAntで実行するとか? いや、もしかしてソースをjavacコンパイルして.classにしないで .javaのまま実行しようとしてる可能性もあるな
マッピングできませんなら実行時に変わったことやってない限りjavacでコケるんじゃないの?
>>238 実行じゃなくてコンパイルじゃないのか?
C:\tmp>javac ImageStep.java
ImageStep.java:6: 警告:この文字は、エンコーディング MS932 にマップできません。
JButton button; //遘サ蜍輔?繧ソ繝ウ
^
ImageStep.java:10: 警告:この文字は、エンコーディング MS932 にマップできません。
setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);//[x]繝懊ち繝ウ縺ァ繝輔Ξ繝シ繝?r髢峨§繧?
^
ImageStep.java:10: 警告:この文字は、エンコーディング MS932 にマップできません。
setDefaultCloseOperation(JFrame. EXIT_ON_CLOSE);//[x]繝懊ち繝ウ縺ァ繝輔Ξ繝シ繝?r髢峨§繧?
ちなみに↑はUTF-8でソースファイルを保存してコンパイルしたもの。
Shift-JISで保存したらコンパイルも実行も成功した。
あいぽんからすいません
>>244 です。
いまパソコンが使える環境じゃないので
>>245 >>246 MKEditorとTeraPad,メモ張で
それぞれ打ち直して見ましたが同じエラーです
>>247 コンパイルするとエラーがでます
eclipseではまだ打ち直してないのですが
大学のパソコンで打ったときは
タブの左にバツ×が表示され
実行できませんでした。
eclipseで打ったソースを
コマンドプロンプトからコンパイルしても
これまた同じエラーがでます。
自分のパソコンにeclipseがインストール
されていないので、インストールしてからeclipseでも
もう一度打ち込んでみようと思います。
自分のパソコンがおかしいんすかね??
ちなみに友達に送ってもらった
動作確認済みのソースも動きません。
ぐぐってみても、自分と同じような
ケースがみつからないし。
また明日がんばります。
変化があり次第書き込みます
ありがとうございました!
なんだよ。リア充かよ。
>>249 MKEditor,TeraPad,メモ張
どれも間違いなくShift_JISで
保存し、コンパイルしたのですが
やっぱりエラーがでます。
もう一回メモ帳でやってみます。
>>252 せめて名前くらいつけろ
NGするやつが困るだろ?
しょーもない話題で
>>243 みたいな良質な質問が流されるのは勘弁してくれ
>>243 ログレベルはなん種類使ってて
どーいう運用してるのか?位は書かんと
答えようないな
プログラム書く以前のとこでつまづく人には Javaは向いてない。 もっと低級向け言語あるんだからそっち使えばいいのに。
アセンブリか
エディタ、ワープロのマクロでやれ
どこで質問すればいいのか分からなかったので質問させてください。 行列aをコレスキー分解するプログラムを作ったのですがうまくいきません。どこが間違ってるのでしょうか?ご教授お願いします。 public static void main(String[] args) { int[][] a = {{1,2,-1,2,1}, {2,5,0,5,4}, {-1,0,6,2,2}, {2,5,2,10,4}, {1,4,2,4,11}}; double[][] l = new double[a.length][a.length]; double sum1=0.0; double sum2=0.0; for(int j=0; j<a.length; j++){ for(int k=0; k<j-1; k++){ sum1 +=l[j][k]*l[j][k]; } l[j][j]=Math.sqrt(a[j][j]-sum1); for(int i=j; i<a.length; i++){ for(int k=0; k<j-1; k++){ sum2 +=l[i][k]*l[j][k]; } l[i][j]=(a[i][j]-sum2)/l[j][j]; } } matrix(l,a.length); } public static void matrix(double[][]a,int l){ for(int i=0; i<l; i++){ System.out.print("\t["); for(int j=0; j<l; j++){ System.out.print(a[i][j]); } System.out.println("]"); }}
259 :
デフォルトの名無しさん :2011/10/30(日) 05:32:38.85
>>258 > for(int k=0; k<j-1; k++){
二ヶ所ともj-1回ループ回さにゃいかんのにj-2回しか回ってなくね?
>>258 >sum1 +=l[j][k]*l[j][k];
lじゃなくaじゃないの、とか
>l[j][j]=Math.sqrt(a[j][j]-sum1);
どう考えても sqrtの中身が負だろ、とか
根本的に考えなおしたほうがいい。プログラミングの問題じゃないような気がする。
wiki の「コレスキー・バナキエヴィッツ法」ってやつ?
ttp://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%AC%E3%82%B9%E3%82%AD%E3%83%BC%E5%88%86%E8%A7%A3 少なくとも、「sum1,sum2 の初期化位置」と「i の初期値」は違ってそうだね。
for (int j = 0; j < a.length; j ++) {
// L[j][j] を計算
double sum1 = 0.0;
for (int k = 0; k < j - 1; k ++) {
sum1 +=l[j][k] * l[j][k];
}
l[j][j] = Math.sqrt(a[j][j] - sum1);
// L[i][j] を計算
for (int i = j + 1; i < a.length; i ++) {
double sum2 = 0.0;
for (int k = 0; k < j - 1; k ++) {
sum2 += l[i][k] * l[j][k];
}
l[i][j]=(a[i][j] - sum2) / l[j][j];
}
}
>>258 のダメなとこは
自身が全くわかってないだろう「コレスキー分解」という概念を
何の説明もなくそのままの用語で使うことに
何の疑問も抱けないあたりだな
数学とか見る気にもならないんだけどプログラマ向いてないかな
馬鹿の相手をするな 馬鹿が伝染るだろ
265 :
デフォルトの名無しさん :2011/10/30(日) 14:06:21.53
String配列から重複なしでランダムに要素を取り出すにはどうすればいいでしょうか? 例えばString[] s = {"あ","い","う","え","お"}; とあった時、ランダムに "あ","え","い","お","う" とか "え","お","あ","う","い" という風に取り出したいです ただし配列のインデックスと文字の対応は崩したくありません s[0]="あ"、s[1]="い" のままでってことです
java.util.Random
>>265 インデックスの配列を作ってシャッフルする
デフォルトコンストラクタの役割って何ですか?良く分かりません。 コンストラクタは初期化に必要なものだとは分かりますが。
初期化
>>268 C++と違って、デフォルトコンストラクタに文法上の特別な便宜はたぶん無いよ。
こんにちわ!
ちーす
Cloneableもいいけど、 コピーコンストラクタに配慮してくれる文法がJava言語にも欲しかったな。 なんか問題があって、あえてCloneableになったんだっけ?
んー。イメージわかないな 例えばどんなことやりたいかコードで書いてもらえないか
コンストラクタにprivateを付けると、クラス間でしかアクセスできなくなる んですか?
んだ
んなこたーない
クラス間じゃなくてクラス内だな
んー。クラス内という理解で困ることは余りないけど、 正しくはないよ
>>.282 正しい説をおねがいします
亀だけど、vista以降は、ShiftJISで打ち込んでいいのか? 俺はXP使いだから知らんけど・・システム規定の文字コードで単純に保存じゃないの?
if(you instanceof Pritty) ((Pritty)you).run(); else you.walk(); についてですが、この場合何で(Pritty)のキャストが付くんですか? youがif()内でtureだったらPrittyクラスなんだから 付けなくて良くないですか?you.run()じゃだめなんですか?
ダメって決まってるからダメ。 他のスレッドがyouを書き換える可能性を否定できない、 とかイチャモンつけたりもできるな。 所詮イチャモンだけどな。
>>287 キャストつけなかったらどうなるんですか?
javaの場合、参照の型のメソッドなりを返すから
つけなくてもいいんじゃ?
> javaの場合、参照の型のメソッドなりを返すから 意味不明
キャストが必要な時。
言語仕様上必要な時。
>>294 オブジェクトがどのクラスにあるか分かるときは
キャストの必要なくないですか?
>>295 プログラマだけが分かってても意味ないんじゃね?
xの参照先がクラスPrittyのインスタンスであれば、xをPritty型への 参照型にダウンキャストした上でメソッドを行わなければならない? 良く分かりません。Prittyのインスタンスなのにダウンキャストする? 理解できん。何で?
アーリーバインドするためだろJK コンパイラさんの役割がまるで理解できてなさそうだな。
300 :
sage :2011/10/31(月) 22:16:53.27
>>286 コンパイラが(you instanceof Prity)の結果を覚えていられないから
という理解じゃダメ?
if文の外でもキャストが必要なら、then部でもelse部でもキャストが必要。
301 :
300 :2011/10/31(月) 22:17:38.18
あぁ、sage間違えた。
>>300 キャストが必要な時ってどんな時ですか?
自分はキャスト=型を変換するって理解なんですがダメでしょうか?
例えばxはPrittyクラスなのに、(Pritty)xとキャストする意味が分からなくて・・
staticメソッドやフィールドだと隠蔽があるからキャストしないと どのメンバにアクセスするのか曖昧になる可能性があるな。
>>304 分かってるならinstanceofする必要ないじゃん。
if (x instanceof Pretty || x instanceof Kid) { /* ここでは x は何型として扱われるべき?*/ }
>>305 すいません、変な部分だけ切り取って質問したんで・・
明快Java入門編の413pなんですけどね、見てくれたら分かると思います。
instanceofの説明が良く分からなくて・・
>>308 買って送ってくれ。たぶん見たらわかると思うから。
310 :
デフォルトの名無しさん :2011/10/31(月) 23:05:17.28
入力ファイルの英文から単語を読み込みたいので 空白や改行、タブを区切りとしてStringのデータを得たいのですが 何か良い手段はないでしょうか? StringTokenizerやCharaceter.isWhitespaseやら試してみたのですが この馬鹿には使いこなせない物だったらしくうまくいきませんでした よろしくお願いします
String#split(String)
暗黙のうちにキャスト・・・っていう意味が良く分からない。
どう試して どううまく行かなかったか? をまず示してもらわないと何とも。
Prittyクラスは、Humanクラスかなんかのサブクラスじゃないの?
class Pritty extends Human
な感じで。
ついでに、
>>286 のyou変数は
Human you = new Pritty();
みたいに(Prittyから見た時の)スーパークラス型の宣言してない?
この時、you.run();とやっちゃうと、
Humanでrunメソッドを宣言してなければエラーだし、
宣言してればHumanのrunメソッドを使っちゃう。
どうしても、Prittyのrunメソッドを使いたい時に
>>286 みたいな書き方をする。
で良かったと思うけど。
明快Javaとか言う本は知らない。
>>308 作者名で検索かけてメールだの本人主催の掲示板だので直接質問すればいいんじゃね?
>宣言してればHumanのrunメソッドを使っちゃう。 インスタンスメソッドだったら、そんな事にはならんよ。 実際にはPretty#run()でなくてPrettyKid#run()呼ぶかもしれんけど。
型推論やってくれって話か
Eclipse Heliosを使ってプログラムしています
StringTokenizerで試した方のソースはこれです
http://ideone.com/t9uuL これは単語をひとつも読み込めず
Result:
there is no word.
total : 0 words
とコンソールに出て終わってしまいました
FileReaderクラスのreadメゾッドでファイルから読み込みintからcharへキャスト演算子で変換するループを
(Character.isWhitespace(hoge) != true)をWhileの判定式に使って終了させるというのも試しましたが
こちらは空白で読み込みを終了できず失敗しました
319 :
314 :2011/10/31(月) 23:32:53.99
>>316 あれ、そうだった。
× Humanでrunメソッドを宣言してなければエラーだし、宣言してればHumanのrunメソッドを使っちゃう。
○ Humanでrunメソッドを宣言してなければエラーになっちゃう。
でいいのか。
320 :
デフォルトの名無しさん :2011/10/31(月) 23:34:32.57
>>311 split(String hoge)のhogeを複数設定することは出来るのでしょうか?
>>318 catchWordが呼ばれてないような
323 :
デフォルトの名無しさん :2011/10/31(月) 23:53:52.88
>>321 ありがとうございました
>>322 ありがとうございます
ここで聞く以前のミスですみません
直したら java.lang.IndexOutOfBoundsExceptionが47行目のwhile出でたのでそこも直してきます
324 :
デフォルトの名無しさん :2011/10/31(月) 23:56:18.03
>>314 いやサブクラスのPritty型でnewでyouを宣言する設定で考えましたが。
明快Java入門の413ページなんで、良ければ見て教えてください。
この本ではPetがスーパーで、Robotpetがサブという設定ですが。
>>324 コード貼れよ
いつまでだらだら続けるつもりだ
326 :
314 :2011/11/01(火) 00:19:54.88
やだ。自分で考えてください。 キャストしなくても結果が変わらなければ蛇足なキャストなんじゃない? キャストしなけりゃ結果が変わるんなら何か意味のあるキャストなんでしょ。
327 :
310 :2011/11/01(火) 00:23:44.89
>>322 さんのご指摘の後いくつかのエラーと格闘して無事解決しました
アホな質問に付き合っていただきありがとうございました
今後はこのようなことがないように気をつけます
>>298 youはPritty型として宣言されてないでしょ、多分。
だからキャストしてあげる必要がある。
youはPritty型として宣言されているんでしょ、多分。 だからinstanceofやキャストは必要ないんじゃないかと疑問を呈している。
>>326 キャストしなけりゃコンパイルエラー
キャストすればコンパイル通って実行もできる
なら意味があるんじゃね?
ゆとり乙
333 :
デフォルトの名無しさん :2011/11/01(火) 13:03:14.37
自作ライブラリ内で使用するデータの一部をシングルトンで定義しました。 そのライブラリを他のアプリでも使えるように修正中なのですが、 シングルトンを継承させるような感じで 動作を定義することって出来ないでしょうか?
できます
まず定義したシングルトンを提示してください
異次元の会話だな
シングルトンをファクトリで生成するように変更。 ファクトリは設定ファイルを見てインスタンスを生成するように変更。 継承クラスを定義。 設定ファイルを継承クラスのインスタンスを生成するように変更。 とかすれば何とかなるんじゃね?
Object o = map.get("hoge"); if (o instanceof Foo) { ((Foo) o).bar(); } こういう場合ならキャストが必要なことに納得してくれるのかなぁ。
>>333 継承したくなった時は移譲で実現可能かを検討しろ。
338のやり方でやってみましたが、 いまいち分からなかったので 移譲する形でやってみます。 ライブラリの設定さえできればいいので、 呼び出す前に設定を渡す形にした方が簡単でした
>>339 それジェネリックスつかってinstanceofできない時と未チェックでたときと実行時にClassCast例外出たときにパニクるんじゃないか?
343 :
324 :2011/11/01(火) 20:36:11.28
>>325 すいません、
配列で宣言していて、
普通に本ではPet []aみたいな感じでした。
中のa[i]=new PetRobotの右辺だけ見て判断してました。
すいません。 Pet A[]みたいなところ見逃してました。
自分のミスです。ちゃんとスーパークラスで宣言されてました。
ダウンキャスト必要ですよね。
"UTF-8" "Shift-JIS" とかのファイル保存時のエンコーディングの文字列ってどこかに定義されてます?
instanceof でオブジェクトの型を確認した後の分岐は(少なくともローカル変数に対しては) そのブロック内にてその型でアクセスできることは明らかなのに、 なぜ型推論もされず、ダウンキャストがないとその型でアクセスできないの? っていう話のはず
要素がすべて埋まってしまった配列に新しい要素を足す処理を付けたのですが arrayが既存のClass型の配列でelementが足す要素だとすると Class[] newArray = new Class[array.length + 1]; for(int i = 0;i < array.length;i++){ newArray[i] = array[i]; } newArray[array.length] = element; array = newArray; という処理をいつもメソッドに書いているのですが 簡単にすることはできないでしょうか? ちなみにListなどのクラスは使いたくないです。
Class[] newArray = (Class[])org.apache.commons.lang.ArrayUtils.add(array, element);
標準API縛りならArrays#copyOf(T[], int)で3行削れる。
>>347-348 ありがとうございます。
個人的に
>>348 みたいなイテレータを使ったメソッドを真似て
自分でスタティッククラスとメソッドを実装したいのですが、
イテレーターというかジェネリクスというかよくわからないですが、
どんなクラスの配列でも引数にできるメソッドの作り方が乗ったドキュメントとか無いでしょうか?
>>345 全く明らかじゃない。論理破綻しすぎだぞw
>>349 わかってない単語を背伸びして使うのやめれ
バカにしか見えない
>>349 ありますよ。
キーワードのヒントはジェネリクスとかイテレーターです。
これでグーグルエンジンでサーチすると、ジェネリックなクラスやインターフェースのコーディングのホームページがヒットします。
探せばイテレーターのメソッドをインプリメントしているようなサンプルソースをホームページでゲットできるかもしれません。
でもドキュメントをサーチしてきてコンテンツをもとにラーニングするよりも、
ArraysやArrayListのようなコレクションのジェネリクスクラスのソースコード中の
ジェネリクスのインプリメンテーションのイグザンプルをダイレクトにリファーした方がベターだと思います。
354 :
353 :2011/11/02(水) 02:14:48.13
>>349 アディショナル・インフォメーションですが、他にもMapインターフェースをインプリメントしたクラスのソースコードもリコメンドしておきます。
インターフェースMap<K,V>をインプリメントしているクラスで、
public V put<K key, V value)
public void putAll<Map<? extends K, ? extends V> m)
をどのようにインプリメントしているか見てみて、それをベースにトライしてみると、どんなクラスの配列でも引数にできるメソッドが作れると思います。
ルー大柴か
上の方見たけどこの板ってID無いから自演し放題だな
ジーエンド
>>356 スルーできないお子ちゃまなのかい?早くおうちに帰りなさい。
360 :
349 :2011/11/02(水) 09:06:53.22
>>351-354 超絶暇人さんもご苦労様です。
ググる前になんとな〜く適当な単語並べて聞いただけなんで助言とかどうでもいいです。
死ねウンコ共。
なんだこいつ? 雑魚ゆとり?(笑)
このスレが質問スレとして機能する日は来るのか?w
暗いと不平を言うよりもすすんで灯りをつけましょう
GoF以外のデザインパターンで、 使い勝手よさそうなものってある? GoF以外の物を説明してるのほとんど見たことないから、 いいものがあるなら、教えてほしい
転売用にAmazon自動予約スクリプト使いたいけど、パソコンの台数と、回線の数、どっちが大事?
すいません、javaを趣味で勉強してるのですが、 あるStringが3行目以上あったら、表示を打ち切りたいのです。 if( message.replaceAll("[^<BR>]", "").length() >= 12){ //<BR>のみ残して、<BR>が3個以上あったら for (int n = 0; count >=3; n++){ message.charAt(n); if(★message().charAt(n).equals("<BR>")){ count++; } } System.out.println(message); } ここまで頑張ったのですが、★のif文が解りません。。 どなたがご教授頂けませんか?
368 :
デフォルトの名無しさん :2011/11/02(水) 21:48:49.09
javaでバイトコード どうやって操作してるんだ? だって、本家がそういう仕組みを提供してないのに asmなどはどうやって操作してるのだ?
369 :
デフォルトの名無しさん :2011/11/02(水) 21:51:15.66
確かに不思議だな
370 :
デフォルトの名無しさん :2011/11/02(水) 22:01:40.17
なるほど そういうことかよ
371 :
デフォルトの名無しさん :2011/11/02(水) 22:06:22.29
医師臨床研修のマッチングシステムをgsアルゴリズムでつくろうと思うんですが、どなたか作った方いませんか?合コンのほうはできるのですが定員をどうつくればいいかわからないです。お願いします。
>>368 message.charAt(n)って何のメソッドか分かってる?
一回生成されたStringは不変だからね?
メソッドを呼び出して文字列に何かしらの操作をしたら、
返り値のStringを見てみないと結果を見れないからね?
宿題は宿題スレへ
String[] s = message.split("<BR>"); int cnt=0; for (String ss : s) { System.out.println(ss); cnt++; if (cnt == 3) break; }
376 :
デフォルトの名無しさん :2011/11/02(水) 22:43:22.77
バイトコード操作の理解は このスレのレベルじゃないだろ 本当に理解してる人は一握りの猛者のみ あとはカスばかりだよ
そんな深い分野を理解してる人なんていないだろ 雑魚ばかりですよ せいぜいフレームワークの提供するAPIが使える程度 それさえも設定ファイルの書き方がわからずに嵌ってる土方PGばかりが集ってるw
>>376 うるせー煽ってる暇があったらなんか話題振れハゲ
>>378 そうですね
バイトコードが理解できる達人レベルなら
こんな糞スレには来ないでしょうから^^
381 :
デフォルトの名無しさん :2011/11/02(水) 23:57:56.87
キャラクタセットの、x-JIS0208とShift_Jisってなにが違う? x-JIS0208は、5の途中のバージョンから使える?
Shift_JIS = MS932 ・・MS独自規格 JIS X 0208・・・日本工業規格
こういう
>>360 みたいな頭が残念な子って
不思議と性根も悲惨なの多いね。
ワンレスで化けの皮が剥がれたり。
>>367 ご教授くんは日本語をまずなんとかしてくれ。ご教授って。。。
肝心のコードだな一行目からしてイミフ、動かんよそれ。for文もおわらんでしょ。charAtのAPI見直してこい。
などなど酷すぎて目が潰れそうだ。
なによりコンパイラ位使ったあとにに貼れ、と。
こうるさいスレですね
ここは「禿げ」か「雑魚」しかいない糞スレだからなw
むかーしはこのスレもちゃんと機能してた時代があるんだぜ
初歩すぎて申し訳ないが、1〜100が入った配列を楽に用意したい int[] A; for(int i=1;i<100;i++){ A=new int[i]; A[i-1]=i; } ではダメだよね? どうすれば良いか教えてほすい
>>389 説明不足すまん、最初にnew int[100]しないでいい方法が知りたい
なにが発狂してんの?
>>390 forの中でappendするってのはダメ?
あとはnumpy使うとか。
1個ずつaddしていきたいのかな? 配列ではなくリストならそうするね
楽に、以前にそれ満足に動いてないですやん
配列なんて時代遅れ 今はListの時代
>>389 ver list = (1 to 100).toList
399 :
デフォルトの名無しさん :2011/11/03(木) 12:29:47.71
byte[] b = new byte[]{1,0}; とあったとき、 0000000100000000 0000000000000001 のどちらをイメージすべきですか?
>>399 こういうのが知りたいってこと?
0000 0000(2) 0(10)
0000 0001(2) 1(10)
0111 1111(2) 127(10)
1000 0000(2) -128(10)
1111 1111(2) -1 (10)
401 :
399 :2011/11/03(木) 12:43:38.09
>>400 違います。
b[0]の右側と左側どちらにb[1]があるのか、ということが知りたいです。
b[0]の最上位ビットの左側がb[1]の最下位ビットでしょうか
b[9]の最下位ビットの右側がb[1]の最上位ビットでしょうか
402 :
399 :2011/11/03(木) 12:44:24.91
訂正 × b[9]の最下位ビットの右側がb[1]の最上位ビットでしょうか ○ b[0]の最下位ビットの右側がb[1]の最上位ビットでしょうか
ちんげ
じゃあ、これで 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
>>385 ご教授に噛みつく人何人か見かけるけど
別に間違ってるわけじゃないから。
間違ってるのは君の知識の方。
屁がだた
407 :
デフォルトの名無しさん :2011/11/03(木) 13:44:57.03
俺も教授の使い方は間違ってると思う。 間違ってる高卒が多すぎて、訳が分からなくなってるけど。
ま、人に物を頼む態度としては恥ずかしいな。どうでもいいだろうと言う言葉づかいは。
お前に聞いてないから安心しろw
>>401 ビッグエンディアンかリトルエンディアンかって話?
byte[]はどっちでもないよ。
java.io.DataInput DataOutput はビッグエンディアンだけど。
java.nio.Buffer は自由に指定できる。
>>399 元素崩壊による半導体のソフトエラーの話なら、
メモリセル間でどんな誘爆パターンがあってもおかしくない。
面白くないけど笑ってください
414 :
デフォルトの名無しさん :2011/11/03(木) 22:10:45.35
IBM JDKで、permanent領域増やすのどうすればいいの?
>>408 院卒だよ。
どこの病院かは教えてあげないけど。
余計恥ずかしいことに気づけ
>>399 おそらく 0000000100000000 じゃないのかな
でないと、b[1] のアドレスが b[0] より小さくなってしまってややこしい
リトルエンディアンなら 1000000000000000 かな
>>417 ビッグエンディアンが1000000000000000で
リトルエンディアンが0000000100000000じゃないの?
419 :
418 :2011/11/04(金) 10:44:02.00
ああ違う、 ビッグエンディアンが0000000000000001だ
Javaで簡単に使えるB木の実装ってない? ASCIIの文字列入れれたらいいんだけど。
B木ってなんぞ?
>>385 >>407 どうおかしいのか具体的な指摘が無いのでなんともだけど、
教授に「ご」をつけるのがおかしいっていう意図なら、教授するのは相手なので問題ないよ。
あとは…自分の知ってる教授の意味と違う!っていう意図ならもう一度辞書引いてみて。
どっかで聞きかじった知識なんだろうけど、生まれたての雛鳥じゃあないんだから
初めて聞いた知識をそのまま鵜呑みにするんじゃなく自分で正誤を確かめようよ。
指摘も具体的にしなくちゃ。そんなんだとプログラミングに携わる者として大成しないよ。
×ご教授 ○ご教示
>>399 をイーサネットに流すと 10000000 00000000 だ。
トークンリングに流すなら 00000001 00000000 だ。
PCI-Expressではどうなんだかよく知らん。
スイッチングハブやPCIブリッジを設計する人でもない限り、
LSBより先にMSBを知りたい、とかこだわる人はいない。
正直Javaプログラマにはどうでもいい。
>>424 だからさ、それだと
×ご教示
○ご教授
と同程度の意味合いにしか読み手には伝わらないんだ。
もうちょっとがんばろう!ね!
「汚名挽回」と同レベルの話 間違いだと言う人もいれば日本語として問題ないって人もいるから別にどうでもいい
いやいやいやww
なにこの糞スレw
この糞スレっぷりで149まで行ってるのがすごいw
ニート乙
Javaの言語仕様や歴史的な経緯からの観点から charAtメソッドの果たす役割とその価値を1年かけて体系的に教えて欲しい ってくらいで「ご教授」になるかしらん。まだ足りないかな
調べもせずに感覚でモノを言ってるなら、その辺でやめとけ。
javaって文字列型って何バイトなんですか? C言語だと'A'だけで1byteでしょ?
>>427 教授と教授の違いなんてググれよksg。いつまでもスレチなことやってんじゃねぇ。
教授と教授にどんな違いかあるのかご教授願います
439 :
デフォルトの名無しさん :2011/11/04(金) 23:08:02.67
高卒が増えれば「ご教授」が一般的になるかもしれんし、いいんじゃね? もっと、堂々と「ご教授」を使おう!
准教授
「どなたがご教授頂けませんか?」を否定されてレスしてる奴はそろそろ気づけ。そんな話をしに来たのかよw
443 :
デフォルトの名無しさん :2011/11/05(土) 03:46:02.15
糞スレ保守
外野がうるさいだけ
445 :
デフォルトの名無しさん :2011/11/05(土) 03:56:59.96
class my implements Comparable<my> { int x,y; public my(int a,int b) { x=a; y=b; } public int compareTo(my arg0) { if(x==arg0.x) return y-arg0.y; return x-arg0.x; } } これが何をやってるクラスかどなたか教えていただけないでしょうか…
質問が「何のためのクラスか」という意味なら、そこまでは分からない。 そのコードを見て分かるのは、せいぜいこの位。 ・ 2つの int 値 x, y をプロパティとして持つ ・ そのクラスの大小比較に当たっては、y の大小よりも、x の大小の方が優先される そうではなくて、「Comparableって?」とか「implementsって?」とか聞いてんだったら 人に聞く以前の問題だから、ggrk(ry
447 :
446 :2011/11/05(土) 07:40:54.75
さすがにこの説明だけだとピンとこないのかな。 例えば、3年x組 出席番号y番の生徒を new my(x, y); で表す事にし、 ymd = new my(3, 5); // 3組5番の山田さん tnk = new my(1, 5); // 1組5番の田中さん szk = new my(1, 8); // 1組8番の鈴木さん の三人から、生徒名簿に最も早く出現する人を探すとき、 tnk.compareTo(ymd) < 0、かつ、tnk.compareTo(szk) < 0 つまり、「田中<山田」、かつ、「田中<鈴木」だから、答えは田中さんだ! ・・・みたいに使う。
ちょっと何言ってるかわかんないです
449 :
デフォルトの名無しさん :2011/11/05(土) 08:33:27.77
>>446 >>447 親切にありがとうございます。
my[]p = new my[n];
for(int i = 0 ; i < n ; i ++)
{
nm = in.readLine().split(" ");
int x1 = Integer.parseInt(nm[0]);
int y1 = Integer.parseInt(nm[1]);
p[i] = new my(x1,y1);
}
Arrays.sort(p);
それをこんな風につかっているのですがpの中がどどう動いてるか
解説おねがいします。
>>447 どうでもいいけど、斬新な命名規則だな。。。
自分は書き捨てコードでもMyFrameとかMyClassとかにしてるのに。。。
個人の自由だから別に良いけど
452 :
446 :2011/11/05(土) 10:22:32.84
>>449 n = 3 だとして、山田さん、田中さん、鈴木さんの順に入力すると、
順に p の先頭から埋まっていく。
3人入力し終わったところで、何とびっくり!!
名簿の出現順(田中,鈴木,山田)に並び替わる。
並び替えは Arrays#sort() が、my#compareTo() の結果を元に行っている。
具体的にどうやって並び替えてるの?って質問は、
もうすこしおおきくなってからにしようね。
>>450 おいおい、おれは >445 に合わせてるだけなんだぜ?
ご教授について勘違いするスレでJavaの質問をするのはスレチでしょうか?
Java 7 のリリース直後に騒がれたバグはもう治ったのか? Solr では使わないでとか言ってた奴。
456 :
デフォルトの名無しさん :2011/11/06(日) 00:32:56.34
Java3DのInterpolatorによるアニメーションで, 回転+移動や,移動+スケール変更など,2つ以上の動きを同時にさせるにはどうすればいいでしょうか? 2つの動きをシーングラフに追加したり, TransformGroupを個別に用意したりしても, 片方が優先されてしまいます.
457 :
デフォルトの名無しさん :2011/11/06(日) 01:26:48.68
458 :
デフォルトの名無しさん :2011/11/06(日) 02:35:13.67
>>452 親切にありがとうございます。
なぜyよりxの大小が優先されるのですか?
ワラタ
ワロタ
461 :
デフォルトの名無しさん :2011/11/06(日) 08:53:13.11
ワラタ...
>>456 Transform3D 同士でをかけ算すればいいんじゃないかな
Swingを利用したいのですが、どんなパッケージライブラリを選べばいいでしょうか?
swing
466 :
デフォルトの名無しさん :2011/11/06(日) 17:16:38.61
>>462 Transform3Dによる回転や移動を,Interpolatorクラスでアニメーション表示させることは可能なのでしょうか?
InputStreamってカーソルを戻して最初から読み直すことできないの?
できますん
>>467 InputStreamのjavadoc読んだ?
質問に質問で返すのはやめたまえ君
紋切り型に質問に質問で返す扱いすることこそやめたまえ君
>>467 mark(int) reset() ぐらいしか。
素直にもう一回開きなおすか、
どこかに貯めておいてそっちから読み込む方が楽っちゃ楽。
474 :
デフォルトの名無しさん :2011/11/07(月) 12:49:34.25
複数スレッド作って負荷のかかる処理やらせてみても タスクマネージャで1コアしか負荷が発生していない なんでだろう? 各スレッド開始時にprintln()してるから複数スレッド走ってるのは間違い無いし 処理内容は全部一緒なんだけど
同期してる箇所はあるか? IOが時間喰ってないか? もっとスレッド数を増やしたらどうなる?
476 :
474 :2011/11/07(月) 13:49:44.23
同期は無い IOはあるが1コアに負荷が集中する理由にはならない スレッド数は4コア8スレッドのマシンで8スレッド作ってるからこれ以上増やす意味は無さそう JVMオプションに使用可能なコア数を指定できたりしないかと思って検索してみたけど見当たらず たぶん、何スレッドあっても1コアで処理するような設定になってしまってる。どこかで。
スレッドダンプ取ってみたら。
478 :
474 :2011/11/07(月) 14:11:30.25
t.run() と t.start() の違いがわかってなかった!
動違うの?
>>467 何読んだか覚えているんならPushbackInputStream使え。
違いっていうか自分で実装したrunを普通に同期的に呼んでることになるな
482 :
474 :2011/11/07(月) 20:50:14.02
なるね
そういうオチか
484 :
デフォルトの名無しさん :2011/11/08(火) 00:21:13.46
うん
JavaでDBの1レコードを表すクラスを考えます。 テーブルには各種制約(not null, unique, referenceなど)があるのですが、 Java上にこれらの制約を持ち込むのはマズいのでしょうか。 特にそういうのを気にせずにSQL投げてSQLExceptionが発生したら対処するパターンはよく見るのですが。 制約を持ち込んだ場合の利点としてはアプリ側で更新できないものを前もって判別できる、 欠点は制約内容の確認のために1回以上のSELECTが発生する、DBの制約を変更するたびにJavaソースも変更されるところかなと考えてます。
486 :
デフォルトの名無しさん :2011/11/08(火) 11:27:54.40
え?
>>485 >Java上にこれらの制約を持ち込むのはマズいのでしょうか。
この、「Java上にこれらの制約を持ち込む」というのが、
Java上でどういったことをすることを意味しているのかがわからないんだが。
daoにassertかくくらいならたまにみかける。 でもエラー検出したとこでなにかできるわけじゃないしな。
結局同じこと(同じデータの制約)の定義を 違う場所(スキーマとJavaのソース)に二つ書くことになるから、 色々問題が生じる。 典型的には制約を変更を加えた場合、 両方を書き換えなければならなくなる。 SQLException で処理していれば、スキーマだけ書き換えれば済む。 (もちろん、いずれにしても結合テストは、変更、再実行が必要になる)
>>487 DBで制約として定義されている内容をJava側でもチェックする感じです。
制約が原因となるSQLの例外が出ない状態までvalidateする実装になると思います。
O/R マッパーなどでテーブル間の関係(1:nとか)をJavaに持ち込むのはよく見ますが
制約についてはみないなと思ったのが質問のきっかけです。
>>490 ORマッパは、DBのテーブルの関係を Java に「持ち込む」というより、
むしろ、「持ち込まない」ためのツールだと思うけどな。
データ保持の都合で設計されたデータベースのテーブルと、
Java の処理の都合で設計された Java のクラスを、
それぞれにとって都合の悪いことを
(なるべく)「持ち込まずに」対応づけられるようにするのが、
ORマッパの目的でしょ。
そもそもORマッパは良くない 生SQLが良い
493 :
デフォルトの名無しさん :2011/11/08(火) 15:10:13.76
まっぱ!まっぱ!
>>488-489 ,491
ありがとうございます。
やはり制約を持ち込むのはNGですね。
491さんの「持ち込まない」という説明がとてもしっくりきました。
お忙しいところレスいただきありがとうございました。
これからプログラム(Java)の勉強をはじめようと思って いま jdk-7u1-windows-i586.exe をDLしてきました。 使っているのはWindow XPです。 いまJavaのアプリケーションは動いています。 プログラムの追加と削除のところに J2SE Runtime Environmenr 5.0 Update 10 J2SE Runtime Environmenr 5.0 Update 6 Java 2 Runtime Environmenr SE v1.4.2_12 Java(TM) 6 Update 23 というのがあります。 それでjdk-7u1-windows-i586.exeをインストールする前に 上記の4つを削除する必要がありますか? 削除した場合、jdk-7u1-windows-i586.exeをインストールすれば 前と同じように今使っているJavaのアプリケーションは動きますか?
削除の必要があるかないかといったらないんだけど、 既知のセキュリティホール放置する事になるので削除を推奨する。 今までのアプリはたぶん動くけど、 特定バージョンに依存してる可能性もあるので絶対じゃない。
winxpは2001年頃のだから10年経っても普通に現役なんだよね。 win95,win98は2005年頃に消滅したから10年しかもたなかってけど、xpはまだ5年はもつつまりjdk8でもサポートするんだろうね。 ubuntuは日本語も完全に整備されてるしideもあるから既にubuntu環境に移行したからwindows platなんてどうでもいいけど。
つか、JDK要るの? JREでいいんじゃないの?
Eclipse動かすだけならいらないけどね Android環境入れたいのかもしれないし
500 :
デフォルトの名無しさん :2011/11/09(水) 10:00:24.86
すごーいね
もう少し褒めてください
502 :
デフォルトの名無しさん :2011/11/09(水) 15:08:39.86
なんでinterfaceでstaticなメソッドを宣言できないんですか? なんでinterfaceのメソッドをstaticなメソッドで実装できないんですか? ユーティリティークラスみたいなものを外部から与えてもらいたい時にどうしたらいいですか? staticなメソッドを宣言したinterfaceが書ければ実装は外部から渡してもらうという事が出来ます。
素直にimport staticしろ。
>>502 ヒント:インターフェースは実装するためのもの
>>501 例えばそれができたとして、
public interface InterfaceA {
static void MethodA();
・・・
public class ClassA implements InterfaceA {
public static void MethodA() {
・・・
}
とかした場合、呼び出し元では、 MethodA() をどうやって呼び出すの?
506 :
502 :2011/11/09(水) 15:55:37.29
>>505 俺へのレスかな
public void proc(InterfaceA util){
util.MethodA();
}
public static void main(String args[]){
proc(new ClassA());
}
これでClassA.MethodA()が呼び出されれば良いと思う。
interfaceじゃなく継承とオーバーライドで同じ事を試すと、
継承元のメソッドしか呼ばれない。(メソッドシグネチャに書かれた型が呼ばれて、渡されたオブジェクトの型は関係しなくなる)
>>506 その使い方なら、メソッドが static 呼び出しである必要はなんかあるの?
インスタンス作らなきゃならないなら、
通常のメソッドでも何も変わらんと思うけど。
508 :
502 :2011/11/09(水) 16:08:34.83
>>507 他のプロジェクトで使われてるstaticなユーティリティークラスを受け取って
その機能を使うにはどうしたらいいか
複数種類あって、実装は外部のプロジェクト任せでinterfaceしか分からないという場合
俺の結論としては、staticクラスをラップしたクラスを作るって事になった。
っつか、言語仕様まるまるとっかえないと 実装先でstaticメソッド宣言してもinterfaceのstaticメソッドを隠蔽するだけで上書きできんよ?
まんこ
>>508 「〜という場合」、というけど、今の Java の仕様では、そもそも、
そういう場合というのがありえないわけだから、対応する必要もないのでは?
「やりたいこと」と「解決すべき問題をかかえた現状」をごっちゃに語ってないかい?
512 :
502 :2011/11/09(水) 16:43:09.87
>>511 なぜJavaがこういう仕様になっているかの説明を聞いて、他の実装方法を思いつければと思っていた。
でも結局、staticなユーティリティークラスを使っているのは、
主にインライン展開を期待したパフォーマンス上の理由なので
staticクラスのままで、必要な時だけラッパーを使うという形が妥当だと思った。
俺がこの件に関して持った認識はそれだけ
crack up to the heaven
JITコンパイラによるインライン展開の対象にはインスタンスメソッドも含まれる。 (というか、staticメソッドを特別扱いしない) javacはstaticメソッドだからといってインライン展開したりしない。
apiの呼び出しの型(インターフェイス)がわかっている →ジャヴァの interface を使ってみよう!! という発想?
>>512 >なぜJavaがこういう仕様になっているかの説明を聞いて、他の実装方法を思いつければと思っていた。
いや、だから、なぜ、「他の実装方法を思いつ」く必要があったの?
自分の認識では、 単に Interface に static メソッドを定義できるようにしても、
それに整合するように他の部分の仕様を変えていくと、
>>506 のようになってしまい、最終的に satatic ではないメソッドとの相違点がなくなってしまうから
実装以前に言語仕様的に無意味だとしか思えない。
(だからそのような仕様になっていないのは当然と思える)
517 :
502 :2011/11/09(水) 17:18:50.52
>>516 俺が今つくってるものを実装しなきゃいけないから実装方法を思いつく必要があった
@Before public void setUp() { obj = new MyObject(); obj.setWhatImReading( new Book( "Java 2 From Scratch" ) ); } こんなふうに@Beforeとか@TESTみたいに@の付いコードの意味はなんでしょうか?
>>519 アノテーション
身も蓋もない言い方をすれば、リフレクションするときの目印
アノテーションでぐぐれ。
java6のjavadoc日本語版ってどこでしょか ダウンロードできるやつ 7はありませんよね?
>>520 ,521
勉強になります
どうもありがとうございます
private ArrayList<String> locationCells; public void setLocationCells(ArrayList<String> loc) { locationCells = loc; } 本来だと一行目はArrayList<String> locationCells = new ArrayList<String>();だと思うのですが、 newされずに使われてるのはどうしてなんでしょう?
初期状態はnullにしたかったんだろ
setLocationCells() は呼び出し元で new された ArrayList<String> のオブジェクトを、 locationCells にセットするためのメソッドだから。
DBと連携しつつも同時に大量の処理をさせたいと思った場合、もっと良い方法はありますでしょうか? 現在はorder,agent,reporterといった3つのスレッドで処理してます order thread ・DBより作業要求を取得 ・スレッドプールでagent threadを動かす agent thread ・要求を受けて処理実施 ・結果をreporterに渡すためにConcurrentLinkedQueueにpush reporter thread ・ConcurrentLinkedQueueよりpoll ・DBに結果を保存
orderスレッドが、スレッドプールでagentスレッドを動かす のはないな。あれこれやりすぎ。
>・DBより作業要求を取得 で、orderという命名はないな
reporterスレッドは、たぶん価値ないな。 動かしてみないと何ともいえないが。ボトルネックにはならんでしょ。
これ、なんで並列に処理しなきゃなんないの? 要求が Web から来るとかなら分かるんだけど、 DBにプールされてるなら、逐次処理してもかまわなさそうな気がするけど。
orderはagentに指示(命令)して動かすものってだけで命名してます (DBからタスクを取得してagentへ渡す) 当初これを別のシステムで作っていたのだが ・同時かつ大量に処理させたい ・agentで実行される処理時間が異なる(数秒から数十分) ・決められた時間内で終わらせる という理由がありましたのでこれを作りました reporterはorderと統合もできたのですが、 役割を明確にするためにも分離しました コードを書いたのが2年以上前で同様の処理をさせたい案件が最近出てきたので もっといい案があればとご高説は承りたく質問いたしました
534 :
デフォルトの名無しさん :2011/11/09(水) 23:50:16.49
え?
>>533 命名センスが致命的に欠落してることはわかった。
司令だすからorderって、あんたそれじゃ全部のクラスがorderになるわ。
> ・DBより作業要求を取得 って要約したくなるようなクラスに > rder thread って命名する時点でおわってるってことね。 どうせゴミみたいな設計なんだから、1日くらいかけて再設計・実装しなおせよ。
538 :
デフォルトの名無しさん :2011/11/10(木) 01:16:59.27
文字列の文字コードをUnicode(UTF-8?)からShift-JISに変換した時、 全角の〜(から)や−(ハイフン)、NEC特殊文字などが?(ハテナ)になります どうすれば文字化けさせずに文字コードを変換できますか?
まず「?」をとれ。話はそれからだな。
540 :
デフォルトの名無しさん :2011/11/10(木) 01:22:43.44
ああ、元の文字コードのところの?(ハテナ)ですね? Javaのデフォルトの文字コードです
つまり?
542 :
デフォルトの名無しさん :2011/11/10(木) 01:27:17.66
うーん、UTF-8でしょうか・・・? とにかくそれをShift-JISにしないといけないのです そうしないと出力したファイルをEXCELで開いたときに文字化けするのです
だから
>>539 だな。自分が何してるかすら理解せずに、どうやって問題を解決するんだか。
544 :
デフォルトの名無しさん :2011/11/10(木) 01:36:21.06
すみませんでした ちょっと調べてみます
俺が浅知恵化も知れないけど 確か「〜」「−」とかは文字化けしちゃうから replaceで類似文字に変換するべきだったはず
>>536-537 センスうんぬんは分かってます
だからこそ実装方法について質問しているのですが…
回答ほしいなら別のスレ行った方がいいよ。ここはアホしかいないから
おかしなネーミングをまっとうにしていく過程で良い設計が見えてくるよ。
言葉尻とらえるみたいだけど、
実装方法がダメなんじゃない。設計がなってないんだ。
もっというと、要件
>>533 の整理の仕方がなってない。必然的に伝え方もなってない。
> 決められた時間何に終わらせる
ってなーに?決められた時間が来たらどうすりゃいいのさ?これで伝わると思う方がどうかしてる。
>・同時かつ大量に処理させたい
こんなのが理由なわきゃねえ、そりゃ手段だよ。あってるかどうかも怪しい浅知恵かもしれん。
とりあえず
>>532 に答えて、今のクラス構成の必然性を説明できるようにしないとね。
で、おそらくそれを試みると今の設計の贅肉が見えてくる。
>>548-549 要件についてはまず申し訳ありませんでした
具体的に書くとまずい部分もあったので大分濁したの結果、分かり辛くなってしまいました
ちなみに大量というのは後に数千単位のオーダーを数分おきに実行する事が予想されるので
あらかじめそれを考慮した設計をしておきたかった為です
(数秒から数十分ってのは過去の実装時で、今回は1秒未満から長くとも10秒の予定)
決められた時間内に終わらせる
→短時間で繰り返し行わせる予定となっているからです
規定値を超えた場合は失敗したものとして終了報告させる予定です
このコード自体は昔のも趣味で作ったものなのですので、この方法を採用するかも未定なので
実装方法については再度検討します
また行き詰った際には質問をさせて頂くかもしれませんが、その時はよろしくお願いします
遅くまで質問に答えていただき、ありがとうございました
>>538 windows-31jとかms932使えって話でなくて?
3Dゲームの行列計算するクラスを5段階で継承したらもうわけわかめ状態で死にたい…。
>>550 いずれにしても並行処理させなきゃいけない理由がわからない。
その要件を見る限り、どうしても並行処理させる必要があるのは、
要求を受け付ける処理だけのはず(取りこぼしを防ぐため)。
一旦要求をDBに入れた後は、逐次取り出して処理し、
所定時間を経過した要求はエラーにする、という処理の仕方をしても、
複数のスレッドに処理を分配しても、1つのCPUで処理する限り、
単位時間内に処理できる要求の数はさして変わらないはず。
(マルチスレッドにした分、処理効率が少し下がる可能性も大きい)
もちろん、マルチコアや分散処理で処理効率を上げようとしているなら
話は別だけど、その場合は、構成の是非の判断材料は、
その処理効率を上げるための戦略やシステム構成であって、
それが示されてないとアドバイスのしようがない。
じゃあ矯正しようか 一年間継承禁止、インターフェースだけ使う
555 :
デフォルトの名無しさん :2011/11/10(木) 16:04:20.54
昨夜、文字化けについて質問した香具師ですが、 SJISではなくWindows-31Jにしたら文字化けがなくなりました。 次の課題としては、JavaMailに機種依存文字を使うのがあります。 UTF-8にすれば一発ですが、どうにかしてISO-2022にしたいです。 どうやればおkですか?
自作クラスのメソッドを使う時に、 ついつい戻り値があるのにvoidと勘違いして変数に代入するのを忘れてしまいます。 アノテーションの@Overrideを付けるとオーバーライドしなかったら警告を出してくれるみたいに、 変数に代入しなかったら警告を出すようにすることはできないでしょうか?
それがミスかどうかは使う人の意図次第だから無理がある 戻り値を使わないこともある
そもそも何か仕事をしてほしいとか結果が欲しいとか目的があって メソッド呼ぶんだろ? その上で戻り値忘れてたってことは戻り値はその目的上要らなかったってことだろ? じゃあ戻り値無視しても問題ないじゃないか C言語のエラーコードじゃあるまいし
eclipseでjava7使うとコード補完で死にまくるな。 補完候補出すタイミングでビジーになってそのままプロセス殺す しかなくなるから保存してない変更はパーになる。 hotspotバグの影響があると顕著に出るな。
560 :
デフォルトの名無しさん :2011/11/10(木) 18:48:17.09
うん
561 :
デフォルトの名無しさん :2011/11/10(木) 20:08:42.84
デビルサバイバーオーバークロックで 逆引き悪魔合体表を作ろうかと思うんですが、 どのくらいの修練積めば、プログラミングできるようになりますか? javaはまだ始めて5日です。
562 :
デフォルトの名無しさん :2011/11/10(木) 20:10:05.22
うん
>>557-558 値を計算するスタティックメソッドを作ってるだけであって、メソッドの本質なんて聞いてません。
無いならないでいいです。
>>556 自前のアノテーション定義して、
Compiler Tree API使って
そのアノテーションがついたメソッドが
代入式の右側以外で使われてたら警告出すようにする、とか?
どうやったら値を計算するスタティックメソッドの戻り値をわすれるんだよw
out引数の真似事でもしてればいいよもう
public static int calcValue() {・・・} ・・・ int value; ・・・ calcValue(); ・・・ print value; あれ?value の値がおかしいぞ? ・・よく見たら、「value = calcValue();」とするはずが「calcValue();」って書いちゃってた、 「value = 」を忘れないためにはどうしたらいいんだろう? みたいなことが言いたいのかな? でもワーニングチェックすれば事足りるよな・・・。
double value = 3.14; Math.cos(value); System.out.println(value); これで角度が求めれるはず…。 >3.14 あれ?みたいな?
569 :
デフォルトの名無しさん :2011/11/10(木) 22:18:21.52
うーん
こ
まーん
ち
検査例外使えばいい void keisan(int x) throws ReturnValue<Integer> みたいな
自作クラスのメソッドを使う時に、 ついつい戻り値があるのに戻り値を代入した変数を使うのを忘れてしまいます。 アノテーションの@Overrideを付けるとオーバーライドしなかったら警告を出してくれるみたいに、 戻り値を代入した変数を使うのを忘れたら警告を出すようにすることはできないでしょうか?
その後。。。 教えていただいたアノテーションで検出出来るようになりました。 そのアノテーションをつけ忘れてしまうことに気づきました。 「戻り値を代入した変数を使い忘れた場合に警告を出すアノテーション」をつけ忘れた時に警告を出すようにすることは出来ないでしょうか? さらにその後のその後。。。 プログラムを書くのを忘れてしまうことに気づきました。 プログラムを書き忘れた時に警告を出すようにすることは出来ないでしょうか?
全行「これで本当にいいの?」って警告出すコンパイラーを作れば…
1だらけ
checkstyleやPMDといったコード診断ツールなら 自作のコーディングルールを追加することもできるので、 「戻り型が非voidなメソッドの戻り値は評価されなければならない」 ぐらいは自動検出できるはず。
例えば、コレクションのremoveやsetは以前の値を返す設計になってるから すごいことになりそうだね
未使用のローカル変数大量だな
コンストラクタの中で自クラスをnewすると無限ループするんですか?
>>581 5分で試せるようなことは、人に聞くよりやったほうが早いぞ。
おースタックオーバーフローエラー出た どうも
JavaのプラグラムをC言語に変換できるソフト無いですか? 僕はゆとりで、Javaは覚えましたがC言語は覚えてません。 課題のプログラムのソースをC言語で出せとゆとりの僕に不可能な無茶ぶりをされました。 色々試しましたが折角、英語を訳したり、意味不明なソフトをたくさんインストールしたのに 拡張forをバンバンに使ってるのに古すぎて拡張forに対応していなかったりとか マイナーなUnixオンリーでCygwinもMingwも使えなかったりとか 説明書通りにやっても全くファイルが出力されないとか誰得なソフトばかりです。 C言語と文法が似てて15年も歴史があるJavaですし、 まさかCへ翻訳という至極簡単な処理をするソフトが無いわけ無いですよね。 崇高寛大な知識人たる団塊の世代の皆々様のお力添えを承りたく存じます。(^_^)v
プログラムの規模にもよるけど、課題のプログラム程度のものなら、 手で書き換えたほうが早いよ。 無茶ぶりっていうけど、 >拡張forをバンバンに使ってるのに古すぎて拡張forに対応していなかったりとか >マイナーなUnixオンリーでCygwinもMingwも使えなかったりとか >C言語と文法が似てて15年も歴史があるJavaですし、 この程度の知識があれば、C知ってる人間に聞きながらやればなんとかなるはず。
できの悪い釣り
phpとJavaを連携したいんですが、以下のようなことはできますか? 1. Javaからphpを呼び出す 2. phpで出力した値をJavaが受け取る 今こんな感じです。必要な部分のみの抜粋です。GET_INFO_URLというのはphpのURLのことです。 Java : HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(GET_INFO_URL); List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1); nameValuePair.add(new BasicNameValuePair("order", null)); try { ___httppost.setEntity(new UrlEncodedFormEntity(nameValuePair,HTTP.UTF_8)); ___HttpResponse response = httpclient.execute(httppost); ___ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ___response.getEntity().writeTo(byteArrayOutputStream); ___if(response.getStatusLine().getStatusCode() == HttpStatus.SC_OK){ ______// (A)ここで値を受け取る予定 ___} } catch (Exception e) { ___System.err.println(tag, e.toString()); } php: <?php ___$order = $_REQUEST["order"]; ___// (B)ここで値を送る予定 ?> (B)でデータを送信、(A)で受け取る、という構造です。 phpを呼び出すところまではうまくいっているようです。 Javaのクラスをphpから呼び出すのはぐぐったらいっぱい出てくるのですが、逆は少なくて…よろしくお願いします。
>>588 なにをよろしくお願いされてるのか知れない
こちらこそお願いします
>>589 確かにそうですね(´・ω・`)すみません
HTTPヘッダに結果用のフィールド追加した方が楽なんじゃね
XMLでやりとりすべき
>>586 やっぱりそうなりますよね…。
C言語はだいたいはわかってますが課題のプログラムって言っても数千行くらいあるので
ポチっと一発でCに翻訳されないかなと思ったんですが…。
Janusは拡張for以外はほぼ翻訳できてそうだから
そういうプログラムあっても良いのにって思うんですが。
うーん、とりあえず拡張forを外してJanus使ってから考えてみます。
>>587 こういう流れかなと思いまして。
>>592 phpのheader関数でヘッダーを作り、javaのgetHeaderでそれをgetするということですよね?
なるほどそれならできそうです。
>>593 確かにxmlとjavaの連携の方が簡単そうですね。その発想はありませんでした。
実装できそうな気がしてきました。ありがとうございました!
596 :
デフォルトの名無しさん :2011/11/12(土) 12:26:41.51
複数の文字列を1ノード1文字でツリー構造に格納したいんですが なにかいいライブラリとかありますか?
DOM
cookieManager = new CookieManager(); CookieHandler.setDefault(this.cookieManager); でCookieの処理をCookieHandlerに任せてるんだけど HttpURLConnectionが実際にサーバに送ってるクッキーを Javaプログラムの中で確認するにはどーしたらいい?
CookieHandlerの自作ラッパを作って盗聴するのが簡単じゃないかな いやCookieStoreのラッパの方がいいか
>>600 リンク踏むのめんどいから引用して要約しろ
>>601 すいません・・・
class ExceptionClass extends RuntimeException {
public ExceptionClass(String message) {
super(message);
}
}
この部分ですかね・・
>>602 継承した例外クラスで付け加えるメソッドって例えばどんなものがあります?
基本的にエラーメッセージを表示させるくらいしか思いつかないのですが。
エラーが発生した原因によって (つまり例外のクラスによって) catchしたりcatchしなかったりcatchし分けたりしたいから
606 :
デフォルトの名無しさん :2011/11/12(土) 22:30:00.34
文字列の置換で String str1 = "x x1 x2 x3 x4" System.out.println(str1.replaceAll("\\?x[^.]", "Y")); str1があったときに、xの文字だけを置換して "Y x1 x2 x3 x4" としたいのですが(x1などは置換しないようにしたい)、 該当する箇所を正規表現で指定できますか?
replaceAll("\\bx\\b", "Y") でどう
public class 紙がないException extends Exception {} public class ウンコ漏らしたException extends Exception {} public void 排便() { if(紙がない) { throws new 紙がないException() } if(ウンコ漏らした) { throws new ウンコ漏らしたException() } ・・・・ } public static void main(String[] args) { try { 排便() } catch (紙がないException()) { 手で拭く } }
609 :
606 :2011/11/12(土) 22:46:45.00
>>607 回答ありがとうございます。上記例は達成することができました。
str1 = "!x !x2 !x3 !x";
System.out.println(str1.replaceAll("\\b\\!x\\b", "Y"));
!xを置換して"Y !x2 !x3 Y"としたいのですが、これは可能ですか?
>>609 自己解決しました
replaceAll("\\!\\bx\\b", "Y"));
としてできました。
>>608 public class 紙がないException extends Exception {} ←{}内は何もないのは
何故ですか?
>>603 引用にやる気がなさすぎて、回答者がやる気なくしたぞ
どうしてくれるんだ。
>>608 なんかもコンパイルエラー出る位やる気なくなってるぞ
>>611 必要ないからだろ。
あと少なくともこの辺は熟読してこい。
java.sun.com/javase/ja/6/docs/ja/api/java/lang/Throwable.html
なんでRuntimeExceptionはExceptionを継承してんだ チェック例外だけキャッチしたいときはどうしたいいの
try{ //処理 }catch(Exception e) { if(e instanceof RuntimeException) throw (RuntimeException)e; //例外処理 }
そういうキャッチの仕方しないから。 その必要が出るのは、おかしなコード書いてるんだと思った方がいい。
>>606 >>610 replaceAll("x(?![0-9])", "Y")
ってのもいいかもね。
スレッド内から例外投げれないから チェック例外をまとめてキャッチしたいけど 非チェック例外はキャッチしたらまずいとかない?
非チェック例外をキャッチしたらまずい理由は?
ぬるぽとか想定外のことが起きてたら それをキャッチして何事もなかったかのように処理続けたらまずいだろう
ぬるぽのことまで想定する、そんなしっかりした設計を始めから出来るわけないだろボケ
そういう切り分けしたい場合は、 想定内の例外とやらを専用の例外クラス(またはそのサブクラス)にするんでねーの?
>>621 これはアホっぽい意見だな。自分の無知さを呪った方がいい
ジャバラーの皆々さんは設計とデザパタの鬼ですから全ての事象について想定済みじゃないとマインドが落ち着かなんですよ
あれ?「い」が抜けてたw やっぱり「い」がないだけでも落ち着かないですよねw
とりあえず前提条件書いただけの適当なコードでもnullは想定すると思うんだが違うの?
ぬるぽを想定すべきと言ってるんじゃなくて 想定外のぬるぽが起きたときはキャッチして握りつぶすべきでないといってるんだけどね で、↓みたいに何個も同じ例外処理を書きたくないから Exceptionで一括キャッチしたいけど、それだとぬるぽもキャッチしちゃうのが嫌ってこと。 public void run() { try { //処理 } catch(チェック例外1) { //例外処理 } catch((チェック例外2) { //例外処理 } ・・・・ catch(チェック例外N) { //例外処理 } }
>>627 そんな時こそJava7のMulti-catchですよ!奥さん!
ってかドルフィンより前でも
>>622 で充分っしょ?
ライブラリ全てに渡って、そもそもnullは許容しない設計を推奨する
その理由は?
try { 2chよみ(); } catch (疲れた例外 | 眠い例外 | … | 秋田例外 e) { 2ch荒らし(); }
null許容しないって ArrayListのgetとかもnull返すよね
え?
CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDL
まるで答えになってない件
許容しない、の定義を明らかにしないと評価できんな そもそも参照型の初期値nullだし
SLWS: Smells Like Warped Spirit
null赦さないとなんでも例外投げるハメになってtry-catch地獄になるぜよ
package tcpechoserver; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.net.SocketAddress; public class tcpechoserver { private static final int BUFSIZE = 32; // 受信バッファサイズ public static void main(String[] args) throws IOException { int servPort = 5000; // サーバソケットの作成 ServerSocket servSock = new ServerSocket(servPort); int recvMsgSize; // 受信メッセージサイズ byte[] receiveBuf = new byte[BUFSIZE]; // 受信バッファ // クライアントからの接続を待ち受けるループ while (true) { Socket clntSock = servSock.accept(); // クライアントの接続を取得 SocketAddress clientAddress = clntSock.getRemoteSocketAddress(); System.out.println("接続中:" + clientAddress); InputStream in = clntSock.getInputStream(); OutputStream out = clntSock.getOutputStream(); while ((recvMsgSize = in.read(receiveBuf)) != -1) { out.write(receiveBuf, 0, recvMsgSize); } clntSock.close(); } } }
ぬるぽは、全てのnull じゃなくて予期しないnull ってことでしょ。
null許容しないって”物”が無いという状態をどうやって表すんだ
物がない状態が必要になるコードを書いてくれたまへ たぶんアッというまに直されるから
どこにも必要になるなんて書いてないから
この場合はList#addが適当だとおも 物が無いことも必要
なんでnullの話してんの?
この流れだとぬるぽと書いてもガッされない。
がっ
>>647 >>648 無いを表現するためにListにnullいれるとか斜めすぎる
仮にそれを使うなら小汚いコードになるのが必至。
そんなことしない。
なによりぬるぽだ。
じゃあMap#getとかnull要素いれなくてもnull返すけど?
656 :
デフォルトの名無しさん :2011/11/13(日) 10:30:56.69
>>652 おまえのレベルがわかったからもういいや
ちなみに俺は
>>629 では無いので
>>629 の真意はわからんが
null撤廃を一度くらい試みる価値はあると思う、自分の技術力を試す意味でね。
少なくとも、何もわかってない奴がnull判定の汚いコードをまきちらすような
そんな醜態を晒すことがない
javaドカタは質問スレなのにいつも自説の披露やっとるな
わかった。 つまりぬるぽだな。
がっ
シングルトンでNOTHINGインスタンスを提供 と、釣ってみる
SLOS: Smells Like Obaka's Spirit
SLNS : Smells Like Nibansenji Spirit
ジャヴァラーはニルヴァーナなんか知らねーよw
来年の4月にある「基本情報技術者」に受かるために、今からjava言語を どのように勉強すればいいでしょうか? また、オススメの参考書等を教えていただければ嬉しいです。
このスレの全てのレスを理解できるようになるまで 100回位繰り返し読んで理解できないところは調べる それが出来るころには君は立派になってる
何の立派かはわからないけどね。 ぬるぽ。
てか、C言語とjava言語ならどっちを勉強すべき?
ぬるぽで100レス越えるなんてどんだけジャヴァなんだよ
Javaをまともに使える技術者で ひとつの言語しかできない奴はいない。つまりそういうことだ どっちからでも好きな方選べばいいよ
ひとつ言えるのは > 「基本情報技術者」に受かるために、今からjava言語を というような 一見近道目指してるつもりの遠回りはやめた方がいいかもね。 試験に受かるために特化すればするほど、現実では使いものにならない方向に偏ることになるから。 普通にJavaを習熟すればあの試験落ちようがないし。 まっとうに使えるようになりなさいな。
ウィンドウに表示したTextArea、ウィンドウの下の方に表示したいのですがどうすればよいの? 練習でサンプルを打ち込んだんですが、サンプルにはそれを指定する記述がないようです。 import java.awt.*; import java.awt.event.*; class BkWin extends Frame implements ActionListener { addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); // TEXT Area setLayout(new FlowLayout()); TextArea b1 = new TextArea("Hello World!!", 30, 60); add(b1); show(); (以下省略)
677 :
675 :2011/11/13(日) 19:13:05.67
事故解決しました
マインドすれ保守
一応スレをざっと読んだけどもし既出だったらごめんなさい。 List型のオブジェクトを取得するメソッドなんですけど、 public List<TGoods> getGoodsAll() { List<TGoods> goods = (List<TGoods>)getHibernateTemplate().find("from TGoods"); return goods; } eclipse ver3.6.2で、「Type safety: Unchecked cast from List to List<TGoods>」 というwarningが出てしまいます。 @SuppressWarnings("unchecked")を記述すれば、warningを消せるのですが、メソッドすべてのwarningに影響が及ぶので 使いたくありません。 プログラミングで解決できる方法ありますか?
public List getGoodsAll()にすりゃいいんじゃない?
>>680 ジェネリックを外すと、今度は「List is a raw type. References to generic type List<E> should be parameterized」
のwarningが出るので外せんのです。
getHibernateTemplate().find("from TGoods")の戻り値の定義は?
>>682 List<TGoods> です。
"TGoods"は普通のbeanでフィールドとアクセッサメソッドだけなんだけど、"String"型にしたとしても同じようにwarningが出るはず。
Spring frameworkを使った例なので分かりづらかったけど、JSPやサーブレットでsessionを使うと同様のwarningが出ます。
例えば、
Set<String> hoge = (Set<String>)session.getAttribute("hoge");
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ここで「Type safety: Unchecked cast from List to Set<String>」のwarning
ちなみに、sessionはObject型を返すんで(Set<String>)でキャスト。 getHibernateTemplate().find("from TGoods")もObject型を返します。
685 :
679 :2011/11/14(月) 15:38:01.66
たびたび申し訳ない。
getHibernateTemplate().find("from TGoods")はObject型じゃなくて、List<TGoods>型を返します。
なので、キャスト不要だと思うのだけど、キャストしないと
「Type safety: The expression of type List needs unchecked conversion to conform to List<TGoods>」のwarning
が出て、(List<TGoods>)でキャストしろと怒られます。
で、キャストすると
>>679 のwarning。
やっぱりジェネリックスは鬼門だ。
686 :
デフォルトの名無しさん :2011/11/14(月) 15:56:23.43
List<String> hoge = new ArrayList<String>() ↑ジャネリクスってこっちも書かないとだめなん?
だめ、ってかワーニングが出る。 「ArrayList is a raw type. References to generic type ArrayList<E> should be parameterized」
でないけど?
ためしにこんなコードを書いてみました。 import java.util.*; class MyClass { public static void main(String[] args) { List<String> bar = (List<String>)Foo.getStr(); ^^^^^^^^^^^^^^^^^^^^^^^^^^ for (String str : bar) { System.out.print(str); } } } class Foo { static Object getStr() { List<String> list = new ArrayList<String>(); list.add("This "); list.add("is "); list.add("a "); list.add("pen."); return (Object)list; } } ^^^^部でワーニングが出ます。 Objectをキャストするとワーニングになるようです。
Java7は省略できるようになったよね = new ArrayList<>()みたいに <>も省略しても警告でないかは知らなんだけど
>>690 このPCはJDK6だからかな?
7だと確かにその記述でいけるっぽい。
692 :
片山博文MZ :2011/11/14(月) 16:27:44.55
ふふふ、諸君はわたくしに勝てるかな。。。
693 :
デフォルトの名無しさん :2011/11/14(月) 16:34:17.11
695 :
679 :2011/11/14(月) 17:23:03.21
>>697 そこだけ。
JRE7をインストールして
>>690 みたいに、FooクラスのgetStr()メソッドを
List<String> list = new ArrayList<>();
書いたけどやっぱり
(List<String>)Foo.getStr();
の部分ワーニングが出ました。
696 :
679 :2011/11/14(月) 17:24:23.25
↑ 訂正 ×JRE7をインストール ○JDK7をインストール
697 :
デフォルトの名無しさん :2011/11/14(月) 17:34:40.13
Javaでリフレクションを使わずに 引数を変えることで呼び出す処理を変えるには (1)のようにswitch文で分岐する、(2)のように処理を実装したクラスを渡す 以外にどのような方法が考えられますか? (1) public void method(int arg, Object obj) switch(arg){ case A: //処理A case B: //処理B ・・・・ } } (2) public void method(Proc proc, Object obj) { proc.execute(obj) ・・・・ } class ProcA implements Proc { ・・・・ } class ProcB implements Proc { ・・・・ }
>>685 返り値が単純なListであって、元からジェネリクス使われてないんじゃない?
List<?> goods = getHibernateTemplate().find("from TGoods");
とするととりあえずは警告防げるんじゃね
結局TGoodsのListでreturnするならキャストは必須だし
Unchecked castのwarningは必ず出る
キャストして警告が嫌ならeclipseの設定で
Java→コンパイラー→エラー/警告→総称型→未検査の総称型操作で
警告をするかしないか設定すればいい
それから
>>689 は単にFooクラスで返り値にジェネリクス使わずにObjectにしてるからでしょ
ちゃんと記述すれば警告出さずに済む
>>679 それHibernateTemplate#find(String)じゃないの?
戻り値はListなんだけど
700 :
679 :2011/11/14(月) 19:14:56.59
>>698 ,699
確かにキャストは不要だと思うんだけど、キャストしないと
>>685 のように
「Type safety: The expression of type List needs unchecked conversion to conform to List<TGoods>」
のワーニングが出るんで仕方なく(List<TGoods>)でキャストしてる。
あと、
>>689 の
return (Object)list;
でオブジェクトでキャストしてるのは、サーブレットのsession.getAttribute()のようにObject型を返すメソッド
を作るためにわざとObjectでキャストしてます。(
>>683 参照)
感じとしては、コレクション+ジェネリックスでキャストをするとType safetyワーニングが出る。
>Type safety: The expression of type List needs unchecked conversion to conform to List<TGoods> 戻り値がListなのに自分が受け取る方List<TGoods> goodsで宣言してreturn (List<TGoods>)hogeしてるからだろ。
public smallerclass extends greatclass { super(); } このsmallcerclassの存在価値ってなんですか? 良く分かりません・・ super();は何の役割を表しているのでしょうか?
import java.io.*; class A{ public static void main(String[]a)throws IOException{ BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); PrintWriter pw=new PrintWriter(new BufferedWriter(new FileWriter("pom.txt"))); String str; while((str=pw.readLine(br.readLine()))!=null){ if(str=="0") System.exit(0); pw.close(); } } } コンパイルエラーになるのですが何故なんだぜですか? ちなみにbr.readLine()は消して文字列にしても同じエラー(シンボルがみつからませんです!)
マルチ死ね
705 :
675 :2011/11/14(月) 21:52:45.53
−−−−−−− | | | | | | | | | | | | | TextArea | [ボタン] | | [ボタン] | | [ボタン] | | −−−−−−− ウィンドウ上にこんな感じで配置するにはどうしたらよいですか?
端末外にボタンを出力は無理だと思うぜ・・
>>702 コンパイルくらい通せクズが。質問する資格ねえわ
イミフすぎる。API見直してこい。 あとWriter系のコンストラクタの連ね方がおかしすぎ。 そもそもいらねえクラスあるだろ。
>>705 あきらめろ。
AWT使ってる奴なんか既に絶滅したから情報あつまらんよ。
警告されるのが
>>689 のケースだけならば
普通は
List<String> list = new ArrayList();
で済むのに、このケースのwarning出さないためだけに
コンストラクタ呼び出し時に書き方を↓に揃えるって
Bad Practiceじゃね?
List<String> list = new ArrayList<String>();
>>710 AWTやSWINGって実務で使うのかな?
趣味の範疇かと思うんだけど。
>>705 のようなレイアウトはPanelを使えばできないこともない。
713 :
デフォルトの名無しさん :2011/11/14(月) 22:40:33.64
SWINGは使ってる
715 :
679 :2011/11/14(月) 23:00:26.35
いろいろ調べてみたけど、ジェネリックスでキャストした場合、Type safetyのwarningを回避する方法はないみたい。 仕方ないから、キャストするだけのメソッドを作成して、そこで@SuppressWarningsをつかってワーニングを抑制するようにしました。 みなさん、いろいろとありがとうございました。
それで正解
717 :
デフォルトの名無しさん :2011/11/15(火) 00:58:46.14
代入式の評価について教えてください。
「解きながら学ぶJava入門編」の3章の錬成問題で
int a=1,b=3,c=5;
System.out.println("a=b=c:"+(a=b=c));
System.out.println("c=b=a:"+(c=b=a));
の実行結果がそれぞれ「5」となるとありました。
参考:
ttp://www.bohyoh.com/Books/TokinagaraJavaA/TKMJA03.pdf 実際に以下のように書いて実行すると、出力はどちらも「5」に
なりました。代入演算子=は右結合となるので、1つ目は「5」ですが
2つ目は「1」になりそうですが、実際は結果が違いました。
なぜこのような結果になるのか教えて頂けないでしょうか。
よろしくお願いします。
public class Test {
public static void main(String[] args) {
int a=1,b=3,c=5;
System.out.println("a=b=c:"+(a=b=c));
System.out.println("c=b=a:"+(c=b=a));
}
}
public static <T> List<T> cast(List<?> list, Class<? extends T> clazz) {
List<T> checkedList = new ArrayList<T>(list.size());
for(Object o : list) { checkedList.add(clazz.cast(o)); }
return checkedList;
}
とか、どこかにありそうで見つからない。うんkでいいなら
@SuppressWarnings("unchecked")
List<TGoods> goods = getHibernateTemplate().find("from TGoods");
>>717 public static void main(String[] args) {
int a=1,b=3,c=5;
System.out.println("a=b=c:"+(a=b=c));
System.out.println(a);
System.out.println("c=b=a:"+(c=b=a));
}
>>717 > それぞれ「5」となる
がミスリード。それぞれじゃないのにそれぞれと書くから混乱する。
本当にその言葉のまま書かれてるなら、その本はやめとけ。
720 :
717 :2011/11/15(火) 02:15:42.06
>>718 あっ、そうですね。
理解できました。ありがとうございます。
721 :
717 :2011/11/15(火) 02:18:24.17
>>719 「それぞれ「5」となる」としたのは私です。
書籍では単純に出力結果だけが書かれてました。
お騒がせしました。
>>718 そのキャスト意味ないからList<?> goods = getHibernateTemplate().find("from TGoods");の方がましだと思うんだが。
おまえに意味がわからないからといって 意味がないことにはならない コード書けば意味がわかるぞ
馬鹿だろおまえ
725 :
デフォルトの名無しさん :2011/11/15(火) 10:27:00.94
うん
726 :
デフォルトの名無しさん :2011/11/15(火) 11:02:31.64
//
>>705 swingなら
import java.awt.BorderLayout;
import javax.swing.*;
public class Sample {
public static void main(String[] args){
new Sample().go();
}
public void go(){
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 500);
Box buttonBox = new Box(BoxLayout.Y_AXIS);
JPanel panel1 = new JPanel();
JPanel panel2 = new JPanel();
JTextArea textArea = new JTextArea(20,50);
JScrollPane scroller = new JScrollPane(textArea);
JButton btn1 = new JButton("button1");
JButton btn2 = new JButton("button2");
JButton btn3 = new JButton("button3");
buttonBox.add(btn1);
buttonBox.add(btn2);
buttonBox.add(btn3);
panel2.add(buttonBox);
panel1.add(scroller);
frame.add(panel2,BorderLayout.EAST);
frame.add(panel1,BorderLayout.CENTER);
frame.setVisible(true);
}
}
解決したのでもういいです^^
728 :
デフォルトの名無しさん :2011/11/16(水) 00:38:38.02
/::::::::::::::::::::/:::::::::::::::::::::::::::::::::::::::::::::::::::::::::\ / / /:::::::::::::::::::::::/:::::::;:::::::::::::::::::::::::::;---- 、 _::::::::::ヽ / / / おにいちゃーーん アルカを保守してーー ::::::/:::::::::::::::::::::≠、::/:/::::::::::::::::/⌒V⌒ヽ>ミュ:::::i .// / / ̄ ̄`\ ::::'::::::::/::::::;;;::::(^_^)::'::::::::::::::::::∠ゝ¥人,-、ィ '' iY'}:::::i l// / ,.:::::、 _ ヽ ::::::::::/:::::/,-、ヽ::T:::::::::::::::::/:::::::::フ::::7::ーテ-ミメV|゙::::ll/ / i:::::::::'´::`i l ::::::::/::::::| ! ノ )|::::|\::::::/::::::::::/:::::/::::::/::::::/::Y:::::::/ l !:::::::::::::ノ l ::::::/:::::::::! i,{ヘ |::::| `'´_,`ー∠:::::/:::::;:イ::::::/ハ:/::::/ __,ム └''''゙゙´ 丿 ::::/:::::::/:::ゝニ゙.|::::| ゙ヾミミ、、`゙ー-'∠;;;;/:/:ノ::::/ ヽ、____,/ ::/::::::/:::::::::{|| >く = `` ==≡/!'゙゙フ'-ニー―‐--- ......,,,_ /::::::/:::::::::::|`~ー=ミL__  ̄ i> = !:ノ 'ー,-、  ̄ ̄`゙'ー--、 :::::::/:::::::::::::| `゙ー-、.丶 __,´ __ム'-‐ァ:::::::::`ヽ、 / ::::/i:::::::::::::::| `ー<^< ̄ /::::::::::::::::::::::::`ヽ、_ i :/.i::::::::::::::::| \\ヽ /::::::::::::::::::::::::::::::::::::::/`゙TTー+┘ i:::::::::::::::::| ヽ`゙メ:::::::::::::::::::::::::::::::::::::::/ /::! ノ
解決したのでもう保守です
730 :
デフォルトの名無しさん :2011/11/16(水) 14:04:01.64
javaFXって使ってる?
JavaFXを使う用途にJavaを使わない
post通信を使ってサーバー上のDBにBLOB型で格納された ファイルを取得するにはどうしたらよいでしょうか?
>>730 java7入れたら抱き合わせで付いてきたけどAPIが微妙に変わってよくわからんかった。
Graphic2Dでダブルバッファ描画しているアニメーションを連番のPNGで出力しているの ですが、バッファへの描画が間に合っていないようで、画像の一部が欠けてしまいます。 ちなみに、以下のような雰囲気のコードを実行しています。 (実物をお見せできなくてすみません…) Graphics2D gBuf; Image imgBuf; private void Init(){imgBuf = createImage(400, 300); gBuf = (Graphics2D)imgBuf.getGraphics();} private void outImage(int step){ try{ImageIO.write((BufferedImage)imgBuf, "PNG", new File("hoge_" + fileNum.format(step) + ".png")); }catch(Exception e){System.exit(1);} } public void paint(Graphics g){ (gBufへの描画コマンド); g.drawImage(imgBuf, 0, 0, this); } public static void main(String[] args){ myClass w = new myClass(); w.Init(); w.repaint(); w.outImage(0); for(int i = 1; i <= 100; i++){(アニメーション処理); w.repaint(); w.outImage(i);} } repaintとoutImageの間に適当な時間のSleepをかませるとPNG画像の欠けはなくなります。 imgBufの更新を待ってからPNG出力したい場合、どうするのが適切でしょうか?
myClassはなんの親クラスでスレッドはシングルとマルチどっち?
>>731 java使ってるのにswingも使わないんですか?
も?
クライアントJavaでまともに使われてるのなんてAndroidくらいだろ 正確にはJavaではないけど
で?
740 :
734 :2011/11/17(木) 08:00:19.47
>>735 どの親クラスをextendsしているのかという
意味でしたら、親はFrameクラスです。
規模の小さいプログラムなので、Frameの
サブクラスをひとつ定義して、その中で
全ての計算、描画処理を行っています。
複数のスレッドを生成するような処理も
実装していません。
>>740 じゃあ画像に書き込む処理が完了する前にpaintが呼ばれてるだけだと思う。
ゲーム画面のスナップショットじゃないからコンポーネントのpaintが呼ばれるたび画像の書き出しは
間違ってるような気がするのでスナップショットと書き出し要求をキューに突っ込んであとで暇な時
に別スレッドにでもやらせればいいと思う。
複数のスレッドを生成してるつもりがなくてもイベントディスパッチスレッドというものがあってな
743 :
デフォルトの名無しさん :2011/11/17(木) 19:57:38.32
JWSって使ってる?
Calendarクラスのディープコピーで質問です。
ーーーーーーーーーーーーーーーーーーーーーーー
Calendar c1;
Calendar c3;
c1=Calendar.getInstance();
c1.set(2000,1,1);
c3=(Calendar)c1.clone();
c1.add(Calendar.YEAR,10);
PrintCalendar(c1);PrintCalendar(c3);
ーーーーーーーーーーーーーーーーーーーーーーー
上記のような実験したところc3はc1のインスタンスをディープコピー出来ていました。
が、
http://www.syboos.jp/java/doc/object-clone-deep-copy.html など見ると
Java Object#clone()は単なるシャローコピー とあります。
でも試してみたらclone()を使ってもディープコピー出来ました。
これはどういうことなんですか?
他の(ミュータブルな)クラスのインスタンスへの参照を持たないオブジェクトのシャローコピーは ディープコピーと同じ
ディープコピーとシャローコピーを勘違いしてると思う シャローコピーもディープコピーもそのインスタンス自身は複製されるよ 違うのはそれが参照してる他のオブジェクトも複製されるかどうか
>>744 Calendarクラスでcloneをオーバーライドして
中で使ってるプリミティブの配列とかもnewして
forで回してディープコピーしてるから
リフレクションで汎用ディープコピーを作ろうとして (しかもデスマの真っ最中に)色々ハマったのは いまではいい思い出。
>>744 仕様上シャローコピーだけどクラスによってコピーの意味が異なるから実装次第ってjavadocに書いてある。
その前にコピーの定義が書いてあるからそれ満たしとけばいい。
Groovyとかのテンプレートエンジンでコントローラからビューにオブジェクトを渡した時、 ビューでCtrl+Space(Eclipse)きかないと思うけど ものすごく不便じゃない? スクリプト言語みたいに型を明示しないのってなんかメリットあるの?
そんな中途半端なのじゃなくてPythonとかRubyとか本格的なスクリプトやれば いかにJavaが冗長かわかるよ
そりゃスクリプトで事足りる用途にコンパイラ言語が冗長なのは当たり前だろ。
753 :
750 :2011/11/18(金) 01:27:45.38
普段Ctrl+Spaceでどんなメソッドあるか確認しながらコーディングしてるので Groovyでテンプレート書こうと思ったらどうしたらいいかわからなかった。 いちいちクラス開いてメソッドシグネチャを確認しながら書くの?っていう それとも何か良い方法があるの?
ゆとり乙
実際Javaのクソまどろっこしいライブラリ使うんなら大してスクリプトの意味ないよな Scalaなんかも思いっきりJavaのライブラリが足引っ張ってるし
scala? 日本人ならjruby一択でしょ
Scalaが良いっていうよりGroovyがダメ過ぎる JavaのテンプレートエンジンはScalaになっていきそう
scala? ただの流行なだけでしょ
ドヤ顔で中二病発言すんなよw
以下のようなコードを書いたのですが、Runクラス(Runnableを実装)のrunメソッドが 1回しか呼び出されません。 ScheduledExecutorService service = Executors.newScheduledThreadPool(1); service.scheduleAtFixedRate(new Run(), 0, 500, TimeUnit.MILLISECONDS); peliodの値をもっと小さくするとrunメソッドは何度も実行されます。 scheduleAtFixedRateメソッドでは、実際には指定した周期で実行されないのでしょうか?
私の心の中をエスパーしないライブラリの方が間違っているのです。
762 :
デフォルトの名無しさん :2011/11/19(土) 16:16:47.51
ArrayList<ByteBuffer> Letter = new ArrayList<ByteBuffer>(); ByteBuffer buf; bufに"unko"を格納 Letter.add(buf); bufに"manko"を付け足し System.out.println(Letter.get(0)デコード); これでunkomankoが出力されるのだがおかしくね??
763 :
デフォルトの名無しさん :2011/11/19(土) 16:23:22.75
テキスト中にある文字列が出てきた回数をカウントしたい HashMap<String, Integer> count; を定義して Integer old = count.get(str); count.put(str, old == null ? 1 : old + 1); こんな感じに書いてみたけど結構遅い。 他に良い方法ありますか?
>>762 てめー、ウンコとマンコを一緒にすんじゃねーよ
>>763 HashMapで遅いと感じるなら、ハッシュ化を自分でやるしか無い。
>>763 Auto Boxingがいちいち動くのが気になる
768 :
デフォルトの名無しさん :2011/11/19(土) 16:46:46.00
>>764 Letter.get()は元データ先を参照してるってこと?
>>768 ArrayListがどうよりも、ByteBufferが変更可能オブジェクトかどうかの方が問題。
>>768 プリミティブはコピー。その他は参照。
Javaの基本だよ。
772 :
763 :2011/11/19(土) 17:22:19.61
以下のコードの出力結果は 1 1 1 になりますが、Integerがオブジェクト型であるなら1 2 3になりそうですがなぜこうなるんでしょうか? public class TestMap { private static final HashMap<String, Integer> t = new HashMap<String, Integer>(); private static final String a = "a"; public static void main(String[] args) { increment(); System.out.println(t.get(a)); increment(); System.out.println(t.get(a)); increment(); System.out.println(t.get(a)); increment(); } private static final void increment() { Integer r = t.get(a); if (r == null) { t.put(a, 1); } else { r++; } } }
773 :
デフォルトの名無しさん :2011/11/19(土) 17:24:55.01
Integerは一回作ったら不変
public Integer ++(Integer old){ return new Integer(i+1); } Integerに対する++演算はこうなってると思えばいい。
間違えた。 return new Integer(old+1);
777 :
デフォルトの名無しさん :2011/11/19(土) 17:49:28.22
ん、これってelse文でインクリメントした値を HashMapに入れてないってだけじゃないの?
HashMapに入れたIntegerを++で内部的に 書き換えたつもりになってると思われる
mutableじゃなくて単純に参照とコピーの区別がついてないだけじゃないの? clone使えばimmutableと同じだし。
r++は((r.intValue() )++)
>>780 こうなるよ。
> Integer.valueOf( i.intValue() + 1 );
概念は同じだろ
ここで質問することなのかわからんけどもちょっと教えて欲しいことがあるんだ 知り合いにjavaでゲーム作る本をもらって、それのガイドの通りに「JBuilder8personal」ってやつをインストールした その後それを使うためのライセンスってやつを取らなきゃいけないみたいなんだけどそのページに繋がらない どうすればいいんだろか、自分はプログラムとか全くの初心者なのでよくわからん 要点をまとめると そもそもJBuilder8personalってのはまだ使えますか? javaについて学べるわかりやすい参考書があれば教えてください なんか意味わからん文章になっててすいません
ぐぐって見たがJBuilder 8 って、2002年だか、2003年の製品? 10年前のチラシみてパソコンを買う人でなければ、考え直した方がいい
参考書を人に選んでもらう感覚って 今は普通なのかね? ちょっと信じられないんだな
やっぱ古すぎるよな、本は返してくる 今さっきjavaをパソコンに入れたばかりの本当に右も左もわからん状態なんだ amazonとかで調べてみたけどどれがいいかわからなかった 有名そうだしとりあえず独習って参考書の内容を一通り理解すればいいかな?
右も左もわからん程度なら とりあえず、そこら辺に落ちてるWebページを見ればいいんじゃまいか
swingのJFrameでウィンドウを表示するサンプルと、ウィンドウにボタンを1個表示するサンプルを 打ち込んでみました。ボタンを表示するサンプルにはJFrameを使用せずにgetContensPaneを使用していました。 getContentPaneはJFrameのメソッドらしいのですが、こいつを呼び出せばJFrameを呼び出したと等価なのでしょうか?
すまん、自己解決しました
>>785 このスレでも「Java EEやるんだけどどの本がいいですか?」などといった質問はよくあるでしょ
最初に嘘がかいてある本で勉強すると大変だもんな
>>790 良くあるんだとしたら
教育失敗した世代だな
793 :
デフォルトの名無しさん :2011/11/20(日) 07:20:21.61
ByteBufferのディープコピーのやり方を教えてください
参考書は購入前に立ち読みするに限る。 どうしても向き不向きがあるから自分にあったものを選ばないと投げ出す可能性があるよ。
紙の辞書ですね。分かります。
interface I { public void print() throws IOException; } class A implements I{ public void print() throws NullPointerException{ System.out.println("A"); } IOExceptionとNullPointerExceptionに継承関係がないのにエラーが起きないのはなぜ?
799 :
デフォルトの名無しさん :2011/11/20(日) 09:37:08.86
staticメソッドの抽象メソッドって作れないんだっけ? インスタンス作るまでもないクラスに、あるメソッドが定義されてることを保証したいんだけど。
無理
インターフェイスじゃ駄目なの?
無料RPG製作ツール「ロープレジェネレーター」 直感的操作で簡単なゲームが作れます。 簡単に配布可能な状態に出力する ことができます。(HSP製のソースコード付きで、スクリプトの知識があれば 自由度の非常に高いカスタマイズができます) 他にも仲間預かり機能(100人も)や、仲間の状態/状態異常を細かく設定 できたり、乗り物が作れたり、ゲーム中に画像を差し込んだり、回転や フラッシュなどのエフェクトなんかも簡単に作れる様です。 移動は矢印キーの他に、キャラがマウスを追っかけたりするとのこと。 戦闘はデフォだとドラクエ系。 ・次期バージョンのロープレジェネレーター2.00アルファ版2を公開しました。(2011/10/29)
インスタンス作るまでもないクラスに非staticメソッド設けたところで、 設計上大して恥ずかしい話とも思えないのだが。 MathやStrictMathも、継承とシングルトンで実現すべきだったかもしれない
それはない
どちらを優先するかってことなんだけどね。 「このクラス、状態持ってるわけでもないしユーティリティっぽいし全部staticメソッドでいいんじゃね?」 「ここでこういう使い方をしたくてインタフェースが必要なんで仕方なく非staticにしてます」 みたいな。
StrictMath使う場合は利用側のstrictfp指定がセットだから それだけ差し替えられてもあまり意味がない
DIするような場合もスタティックは使わん方がいい
>>798 NullPointerExceptionは非チェック例外だから
798ですが、クラスはインタフェースのメソッドpublic void print()を 実装しなければならないけどIOExceptionの部分は継承関係になくてもよいって認識でおk?
>>792 あなたは日本国政府からどういう教育を受けたんですか?
>>809 検査例外が緩くなるの(IOExceptionの子クラスか、例外なし)は問題ない。
親が定義してない検査例外を子クラスのthrows節につけるのはダメ。
NullPointerExceptionは検査例外じゃないから好きなだけthrows節につけられる。
けどコーディングスタイル的にthrows節には検査例外しかおかないって人も多い。
ライブラリ設計のときのjava言語特有の悩みとしてはfinalizerを宣言(実装)するべきかどうかはいつも悩む
>>811 なるほど。なんとなくわかったよありがとう。
馬鹿には無理
J2EE実務で使ってる人いる?
>>812 ふつーは、いつ呼び出されるかわからんfinalizeに後始末を任そうとするな、じゃないの?
悩むことある?
new WindwoAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } } 無名内部クラスがWindowAdapterのメソッドwindowClosingをオーバーライドしてSystem.exit(0)を実行している。 というとこまで分かるのですが、WindowEvent eってなんですか? 仮にWindowEvent型のeを受け渡してるってことでしても、eって値を持っていないですよね?
818 :
デフォルトの名無しさん :2011/11/20(日) 17:17:03.43
質問の意味がイミフ
819 :
デフォルトの名無しさん :2011/11/20(日) 17:21:28.32
820 :
デフォルトの名無しさん :2011/11/20(日) 18:39:12.87
コメントの部分でエラーが出てコンパイル出来ないので困っています。 なぜT型のインスタンスが作成できないのでしょうか? ご存知の方いらっしゃいましたら、教えてください。 お願い致します。 class Test {} class Data<T extends Test> { public void func() { T t = new T(); //※ここでエラーが出ます } }
仕様です
823 :
820 :2011/11/20(日) 19:47:30.75
>>821 >>822 newInstanceとは、ClassクラスのnewInstanceでしょうか?使い方、調べてみます。
どうしてこのような仕様になってるのでしょうか?凄く不便な気がするのですが。。。
キャストを挿入するだけのなんちゃってジェネリクスだから VMを弄るのが嫌だからそうなった 実際にはTのところがすべてObjectになるだけと覚えておけば理不尽に見える制限も理解できる
825 :
デフォルトの名無しさん :2011/11/20(日) 21:05:55.60
質問です。 hoge.jarの中にpiyo.classとfuga.jarが入っているとして、 fuga.jarにクラスパスを通してpiyoを実行することは可能でしょうか? その場合、hoge.jarのMANIFESTにはどう書けばよいのでしょうか? よろしくお願いします。
int型の八桁の変数を例えば day = 20111120 なら 2011/11/20, short方の四桁の数字 time = 2245 を 22:45 のようにSystem.out.println();で表示するのにはどのようにすればいいですか?
printlnf()
828 :
デフォルトの名無しさん :2011/11/21(月) 00:05:13.37
質問です。 javaで生成遅延を実装したいです。 目標は組み合わせを一つずつ生成するというものです。
>>826 toString -> slice -> print
>>823 不便も糞も、
どんなクラスが不明なのに引数なしのコンストラクタがあるとは限らんだろ
どんだけJavaにエスパー求めてるんだ
実行時の型がObjectだからエスパーもできんよな
834 :
デフォルトの名無しさん :2011/11/21(月) 10:58:02.44
それが出来る言語もあるんだけどね
835 :
820 :2011/11/21(月) 11:01:46.58
TをObjectに変えても、エラーは出ないと思うのですが。 public void func() { Object t = new Object(); //※ここでエラーが出ます } 私は、ジェネリクスを基礎から勉強しないと駄目かもしれないです。 全く解らないです。 C++のテンプレートとは、やはり、かなり違うのですね。 まだ、ジェネリクスは、実行時に形が作られることくらいしか、知らないです。
836 :
デフォルトの名無しさん :2011/11/21(月) 11:07:17.18
しか?
.NETはTが引数なしのコンストラクタを持たなければならないという 制約を指定することでnew T()ができる Javaでそれができないのは実装の都合 実行時に型が作られるんじゃなくて、実際はObjectで利用側のコードでダウンキャストを省略してるだけ
838 :
デフォルトの名無しさん :2011/11/21(月) 11:08:39.38
かもしれない?
VC++はMS拡張が凄まじくもう手が付けられないぐらいMSカオスになってるんでしょ?
ArrayList<String> list = new ArrayList<String>(); list.add("a"); String s = list.get(0); これは、コンパイルされて ArrayList<Object> list = new ArrayList<Object>(); list.add("a"); String s = (String)list.get(0); こうなる。ただこれだけの仕組み。Tに何が指定されてたかの情報は失われる。 だから new T() はTが何かに関わらず「常に」new Object() と同じなので意味がない。 T[] なんかも同様に Object[] になってしまう。 クソだろう? 互換性の都合。
馬鹿には無理
久しぶりにJavaを使うことになったけど全く覚えてないよ(つД`) 勉強し直したいんだけど最近のものでお勧めな本ってある?
勉強しなおすだけならググって出たサイトをさらっと見れば問題ないんじゃね
844 :
デフォルトの名無しさん :2011/11/21(月) 18:16:41.73
どの程度劣化してるかによるだろ。
言語仕様みれば思い出すんじゃないの? それよりツールのトレンドに付いていけるかじゃね?
>>837 > .NETはTが引数なしのコンストラクタを持たなければならないという
> 制約を指定することでnew T()ができる
ワイルドカードと組み合わせたら鼻血が出そうだな
847 :
820 :2011/11/21(月) 21:20:02.59
>>840 解ってきました。丁寧に書いていただいて、ありがとうございます!
848 :
デフォルトの名無しさん :2011/11/21(月) 23:54:05.53
ちょっとググって見たけど、C#ってワイルドカードって無いんだな。 よく考えてみれば、実行時に型を取得可能ってことは、 コンパイル時に型変数を必ず何らかの型へ解決することが必要なんだよな。 new T() をやりたいがためにワイルドカードを捨てるってどうなのよ?
ワイルドカードって?
851 :
デフォルトの名無しさん :2011/11/22(火) 00:02:11.99
ふーん。 で、ワイルドカードの有無と new T() の関係は?
ワイルドカードを使った型変数に、どうやってコンパイル時に型を当てはめる? 型が割り当てられなかったら、そこからどうやってインスタンスを生成する?
ワイルドカード悪いやつだな!
new 制約あればワイルドとか関係ない そもそもJavaの話じゃないしスレちだが
ワロタw 他言語のメタプログラミング知らなくてjavaが普通だと思ってたんだろ。許してやれよw
メタプログラミング?
C#はワイルドカードが使えないかわりに読み取り専用または 書き込み専用のインターフェースで共変と反変が使える 柔軟性は劣るけどワイルドカードよりはずっと分かりやすい
>>854 Javaでnew T() が出来ないのは、
単に実装上の都合や互換性の都合(クソ?)のためだけではなく
ワイルドカード等を持つJavaの仕様から来ているのでは?
と言いたかったので、Javaの話
>>855 メタプログラミング?w
実行時に型を取得可能なら当然実行時にnewすることもできる つかワイルドカードならnew T()じゃなくてnew ?()になるんじゃないの ワイルドカードじゃない方の制約と混同してるんだな
860 :
デフォルトの名無しさん :2011/11/22(火) 02:03:00.34
仕様云々より使う側の組む能力の極端な不足を見せ付けられた。
コンパイル時に型変数を解決しなければ、new制約は意味を成さないだろう。 動的に型を取ってきても意味がない。 つか、ワイルドカードは使う側の話で、new T() は呼び出される側の話だろ。例えばこう↓ class Data<T extends Test> { public void func() { T t = new T(); //※ここでエラーが出ます } } class Invoker { ... void invoke() { for(Data<? extends Test> data : dataList) { data.func(); } }
>>861 だからそれはJavaの実装に起因する問題。ワイルドカードは全く関係ない。
テンプレートや実行時展開方式なら実行時には必ずTに具体的な型が入ってるんだよ
実行しないと型が入らないなら、new制約って意味ないじゃん 実行してみて、new制約に違反していたら例外でも投げるの? それじゃ、new制約があってもなくても変わらん
newのバインドは実行時でも制約のチェックはコンパイル時にできるだろう 思い込みで騒ぐ前にちょっとは視野を広げてみたら?
ワイルドカードとか関係なく、インスタンスがあるなら 少なくともどっかでnew Data<HogeTest>()と型を具体的に指定してインスタンス作ってるはずで そこでコンパイル時にチェックすればいいだけの話 それくらい知らなくてもちょっと考えたらわかりそうなもんだけど
WebアプリのテストってJUnitとかTestNGとかでできるの?
>>855 「他言語のメタプログラミング」をいくつか具体的に挙げてもらえませんか?
スレタイ
871 :
デフォルトの名無しさん :2011/11/22(火) 19:21:42.72
型推論でインスタンスを生成すれば 具体的な型が当てはまらないようなものができそうだな
型推論は型がコンパイル時に具体的に推論できるから型推論なの
作ってみた。インスタンス p には具体的にはどんな型が割り当てられてる? class A {} interface I {} public class P<T> { static <T extends A & I> P<T> get() { return new P<T>(); } public static void main(String[] args) { P <?> p = get(); } }
特殊化したジェネリック型をエントリーポイントとして使うことが可能なら当然 P<具体的な型> それが許されないなら推論不可
ジェネリックな型って、基本はどこかで P<型> と具体的に指定されるまで本来は実体が存在しないの。 型引数が完全には指定されてない状態ではインスタンス化も静的メンバへのアクセスも一切できない。 Javaは実装上そのへんがどうしても中途半端になってるから混乱しやすいんだが、本来は 「P<X> と書いた時点で PのTがXに置き換わった新しい型ができる」というだけの簡単な話なんだよ。
Javaの話をしてたんじゃないのか
878 :
デフォルトの名無しさん :2011/11/22(火) 22:12:12.37
ArrayListにaddしていってiteratorで順次取得したら 必ずaddした順番に出てきますか?
Javaの話なら?が制約を満たさないので普通にコンパイルエラー class B extends A implements I{}で P.<B>get()に変えればそりゃ通るけどもw
>>878 はい
Iが無ければ
>>874 は P<? extends A> p = get(); で一見型引数が不定なインスタンスが作れてるように見えるが
これは単に P<A> だね。P<? extends A & I> p = get(); だとコンパイルエラー。
意図的に型引数が不定なインスタンスを作れなくしてるっぽい。
881 :
デフォルトの名無しさん :2011/11/22(火) 23:23:21.26
>>879 古いEclipseだと何故かコンパイルが通らないことはあった。
>>880 A は I を実装してないので、少なくともP<A>ではない。
>>882 static <T extends A> P<T> get() に変えたら P<? extends A> p = get(); でコンパイル通るってこと
T extends A & Iのままだと? extends Aでは当然制約を満たさないのでコンパイルエラー
1.6 の oracle の javac で通らねぇわ 言語仕様が変わったのか?何この糞言語
仕様見てみたけど難解すぎワロス そりゃ俺なんかより遥かに頭いい人たちが設計して実装してるんだろうけど こんなもん実装どころか言語仕様にバグあっても全然不思議じゃないな
おまえには無理でも、彼らにはできるんだよ。
現にバグ出してるじゃないか
888 :
デフォルトの名無しさん :2011/11/23(水) 02:05:31.17
JavaScriptってどのようなゲームが作れるのですか? また、身近な物でJavaScriptを使っているのがあったら教えて頂きたい
890 :
デフォルトの名無しさん :2011/11/23(水) 02:12:13.83
891 :
デフォルトの名無しさん :2011/11/23(水) 02:17:12.61
>>889 ああっ!!!失礼しました
JavaとJavaScriptを間違えてました、すみません…
イタチスレチですみません、ではでは
そういやごく最近JavaScriptでJVMを実装したって話し聞いたな 本格的にブラウザだけインストールしたらなんでもできる時代が来るかも試練ね!
sl: not foundだと・・・!?
895 :
デフォルトの名無しさん :2011/11/23(水) 10:44:04.44
synchronized(obj){ } これでobjをロックできますが 他の部分でobjにsynchronizedを使わずにアクセスしていたら 完全なロックは出来ないという理解で合っていますか? つまりobjに対するアクセスで常にsynchronizedを使わなければ完全なロックはできない
アクセスしたいオブジェクトをロックしないといけないわけでもなくて、他のオブジェクトでもいいけどな objをロックしているというより、objをロックに使っている 同じオブジェクトをロックに使うsynchronizedブロックは同時に一つしか実行できないってこと
いったいなにを読むと
>>895 みたいなオレオレ解釈が生じるんだ?
898 :
896 :2011/11/23(水) 11:31:33.05
失礼、ロックに使うというのは言葉の使い方が間違ってるな 同期化に使うに訂正 オブジェクトをロックするっていうのは特にそのオブジェクトの性質に影響を与えるわけじゃなくて 単純にsynchronized(obj) のところでobjがロックされていたらロックが解放されるまで待機し、 ロックが解放されて順番が回ってきたらロックしてブロックに入る仕組み そのフラグみたいなのを便宜上ロックと呼んでるだけで、あんまりロックという言葉は気にしないほうがいいよ
899 :
デフォルトの名無しさん :2011/11/23(水) 11:35:15.58
>>828 javaで生成遅延?
素直にpythonとか使っとけ。
というか、わからん。俺も知りたい
生成遅延って何語だよ
遅延生成じゃないの?
事前に配列やリストにしないでfor each(拡張for)でループ回すときにはじめて一つずつ要素作るやつだろ めんどくさいけどIterator<E>を実装すればできる
903 :
デフォルトの名無しさん :2011/11/23(水) 11:45:58.23
お。.NETとかのyield returnみたいなこと出来るのかな? ちと読んでみるか
PythonやC#のアレはスレッド使わないことに意味があるんでしょ
もうJVM言語でいいじゃん
python? 漢なら普通にjrubyでしょ。
ジェネレータちっくだが特に使い道がなかったでござる。
910 :
デフォルトの名無しさん :2011/11/23(水) 13:35:58.46
>>909 ジャバの単調なコーディング作業ばかりでそれを使うような場面に出逢ったことがないんでしょ
うーん。やっぱ似た構文どまりだな。 言語でサポートしてくれないと厳しいよな。わかってはいたが。
>>908 いちいちスレッド切り替えてるとクソ遅くなるから、
C#や910のようにコンパイラが頑張って同期的なコードをステートマシンに変換してしまうのが望ましい
>>914 ほんとそう思う。ごった煮で良くも悪くも汚れたC#だから出来ることだな。
設計思想とかは好きだが、手を入れたくなると限界がくるよなJavaって。
>>914 ジャバはそもそも糞だし切替えると遅くなるからか
それなら一理あるね
今日も明日も MS + WINDOWS + DIRECTX + C# はやっぱり最強ってことでおk?
んーなことはない。 あそびが少ないってだけ。
ほんとはVMレベルでマイクロスレッドがサポートされたら一番なんだけどな 無理にコンパイラで完結させようとすると失敗するのはジェネリクスが証明している
GAEではなく一般的なTomcat6サーバでJavaMailを使用したいのですが、 Transport.send(message)のところで、 com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'mail' or call 'Send()' was not found. となってしまいます。 mail.jarとactivation.jarは/WEB-INF/libに配置してあり、パスは通っています。
ふむふむなるほど
ふむふむなるほど
ふーん
めんどくさいやつらだな・・・
>>920 自分は GAE は知らないけど、
普通に Tomcat 上で動かすアプリで JavaMail 使ってたよ。
例外見る限り、その GAE 用に JavaMail になんか小細工してるコードを、
そのまま「一般的なTomcat6サーバ」で動かそうとしてるのが問題なんじゃないの?
926 :
デフォルトの名無しさん :2011/11/23(水) 21:26:41.74
Map<byte[], Integer> こういうマップを使いたいんですが 普通にHashMapとかで作ってもキーが同一性比較になるので byte[] k1 = new byte[] { 0 }; byte[] k2 = new byte[] { 0 }; map.put(k1, 1); Integer r = map.get(k2); このコードでrはnullになりますよね。 byte[]の同値性比較のマップが欲しいんですがどんな方法がありますか?
ラッパーを作ってhashcode()をオーバーライドかねぇ
hashcodeじゃダメだけどね
charの配列にコピーして文字列にするとか
ラッパー作って equals(), hashCode() をオーバーライド。
標準APIだけでやるならByteBuffer使う
バイト配列がキーっていうのは何かのスメル
内部クラスのprivate宣言は、その親クラスからもアクセスできるんです(><;)
934 :
デフォルトの名無しさん :2011/11/24(木) 12:11:03.91
JSPに記述してある複数のリンク先ページを1つのJSPで実現するにはどうすればいいですか? 例) a.jsp内にA,B,Cへの3つのリンクがある。 この3つのページを3つのJSPではなく1つのJSPで表現したい。
タブ文字を明示的に表現するために、\\tとしたいのですが、 str.replace("\t", "\\t");としても駄目っぽいです。 どうしたらいいですか?
936 :
935 :2011/11/24(木) 20:05:15.25
すみません・・ できました。返却結果を文字列で受け取るんですね・・ strがそのまま変換されるとおもっていました・・ すみませんでした。
二つ質問させて下さい if(tinpo.equals(penis)){ } をelseを使わないでノットイコールにするのにはどうしたらいいんでしょうか? あとsqlの話で申し訳ないのですが where句のなかで table.id >= ? というものを見かけたのですが?って何なんでしょう
>ノットイコール boolean is = tinpo.equals(penis); if( !is ){} if( is == false ){} どちらか。 >?って何なんでしょう 「わかんなーい」という意味です。 バインド変数、もしくはPreparedStatementで調べてください。
フィールドで宣言された変数は使いまわしても特に問題はないのでしょうか?
>>937 普通に if(!tinpo.equals(penis)){} じゃ駄目なの?
>>937 >?って何なんでしょう
インテロゲーション・ポイント
インポか
for文とwhile文の使い分けはどのようにすればいいのですか? どちらも同じ繰り返し文なんで、ふと疑問に思いました。
ループカウンタが必要かループ回数が決まってるならfor
拡張forが使える場合もforにするかな。 List<Foo> fooList = new ArrayList<Foo>(); for( Foo foo : fooList ) { } 古い書き方だと for ( Iterator<Foo> f = fooList.iterator(); f.hasNext(); ) { Foo foo = f.next(); }
forの式が2つ空になるようなら迷わずwhileにするが、1つ空は悩む
950 :
デフォルトの名無しさん :2011/11/26(土) 02:49:56.84
List<String> list; ... for(String e : list){ //proc } こういうコードで、なぜか1つしか入っていない要素が2回procに来る。 forに入る前、1回目のproc時どちらでブレークしてlistの中身をチェックしてみても listに1個しか入っていない要素なのに、なぜか2回procに来る。 2回来る要素はオブジェクトIDが同じで、当然、値も同じ。 1つしか入ってないオブジェクトなのに2回出てきてるとしか思えない。 そしてDrop To Frameした後に再実行すると、今度は1回しか出てこない。 アプリケーション起動後の初回実行時のみ2回出てくるという怪現象。 エスパー様はおりませんか?
拡張for文の中で何回目のループか知りたい時に 別途カウンタ変数を用意する以外で何か方法はありませんか
普通のforにする
>>926 ヘキサダンプの文字列をnew String(hex)してハッシュコード返す
954 :
926 :2011/11/26(土) 18:21:10.99
フィールド変数を複数宣言したときのアノテーションについてですが、 次のような場合、アノテーションが適用されるのは変数[a]だけでしょうか? class Hoge{ @Inject Integer a, b, c; }
a, b, c 全部に適用される
957 :
デフォルトの名無しさん :2011/11/27(日) 02:19:19.80
シングルトンのinstanceとかgetInstance()ってクラスの最後に書いたほうがいいとかある?
どうでもいい そんなこと気にするくらいならまずシングルトンを使わないことを考えるべき
え?
>>957 staticなメンバはふつークラスの頭に持ってくるよな。
コンストラクタの前か後かで流儀は割れると思うが
は?
あるフォルダの連番テキストファイルを結合したいのですが、正規表現について教えてください。 aaaa1.txt と aaaa2_2.txtというファイル名が有ったとして、 それぞれaaaa1をファイル名、1を連番数字 aaaa2_をファイル名、2を連番数字として抽出したいのです。 どう表現したらよいでしょうか?
String型の配列HogeName[]のHogeName[i]を変数名に使いたいんですが、何か良い方法はありますでしょうか? String[] HogeName = new String [number] for ( int i = 0 ; i < number ; i++ ) { HogeName[i] = str(i+1)+"番目の変数" } でHogeName[]の中に名前を作ってみたんですが、型宣言にどうやって使うかわからず・・・お願いします。
エスパーきぼんぬ
どういう意図で配列要素の値を変数名に使いたいのかわからんけど、 エスパーするに、Map はあなたの問題の解決にならんの?
フィールド変数名でいいんなら考えてやれないこともない
968 :
962 :2011/11/27(日) 18:12:28.78
こういう正規表現を考えてみたけどgroup(2)とgroup(3)の区別はどうするんでしょうか? Javaの実装なのでお願いします。 final String regex = "^(([a-zA-Z_-]+)|^([a-zA-Z_-]+\\d+[_\\-]))(\\d+)\\.txt$";
970 :
964 :2011/11/27(日) 19:21:22.31
何か見当違いな質問をしたようですいません。 任意の数の変数にそれぞれ順番をつけて用意したいのです。 たとえば、int型で三個用意したいならint Hoge1,Hoge2,Hoge3;とすればいいのですが、 入力に応じて数を増やしたいので、k個ならint Hoge1, ... ,Hogek;と宣言したいと考えています。
>>970 なぜそんなことをしたいのか、を君が説明できれば
みんなが別のいい方法を教えてくれると思うよ。
972 :
353 :2011/11/27(日) 19:27:47.59
>>970 普通にやるなら、
int[] hoge = new int[入力に応じた数];
だけど、それじゃダメなの?
どうしてもhoge1とかhoge2とかでやりたいなら
>>966 の言うとおりMapあたり使うのがいいんじゃない?
仮に宣言できたとして、 どうやってそれを使うんだ
すいません、質問させてください。 Javaの練習で簡単なSkypeみたいなチャットアプリを作りたいのですが、会話履歴を表示する部分のレイアウトをどうやったらいいのかが分からず悩んでいます。 Swingライブラリを使って、左に発言者の画像を表示してその右に発言メッセージ内容を表示。 この2つのセットを発言があったら下から上に流れていくようにしたいのですが、どのパーツを使えばいいのでしょうか・・・? (現在JTextAreaを使っているのですが、画像が表示でき無いので。。。)
JTextPane使えばいいじゃん
>>970 r ‐、
| ○ | r‐‐、
_,;ト - イ、 ∧l☆│∧ 良い子の諸君!
(⌒` ⌒ヽ /,、,,ト.-イ/,、 l
|ヽ ~~⌒γ ⌒ ) r'⌒ `!´ `⌒) よく頭のおかしい技術者やデザイナー気取りのバカが
│ ヽー ―'^ー-' ( ⌒γ ⌒~~ / 「誰もやらなかった事に挑戦する」とほざくが
│ 〉 |│ |`ー^ー― r' | 大抵それは「先人が思いついたけどあえてやらなかった」ことだ。
│ /───| | |/ | l ト、 | 基礎が何故大切か理解できない人間にまともな商品は開発できないぞ!
| irー-、 ー ,} | / i
| / `X´ ヽ / 入 |
たぶん彼がしたいのはリフレクションでフィールドに数値いれるとかじゃない?
次の糞スレはどこ?
糞スレとうとう併合されてしまうのけ
何度もすいません、かなり煩雑ですが具体的にやってることを書かせて頂きます。 ProcessingのControlP5というライブラリを用いて、n個の図形を好きな場所に配置するような事をしようとしています。 「n個」を入力すると図形の位置を決める二次元スライダー(この名前がHoge1からHogen)がn個出てくるようにしたい。 二次元スライダーが持ってる値はHoge1.arrayValue()[0]のようなカタチでしか受け取れない(?)ようなので、 Hoge1からHogenまで、逐一名前をつけなければいけないようです。 n個の変数名に拘っているのはこれが理由です。そこで、 Slider2D Hoge1 , Hoge2 , ... , Hogen ; for ( int i = 1 ; i <= n ; i++ ) { rect( よこ , たて , Hoge i .arrayValue()[0] , Hoge i .arrayValue()[1] ); } とすればよいと考え、 String[] HogeName[] = { Hoge1, Hoge2, ... ,Hogen} を作って、その要素を変数名に使えたらと質問しました。 情報の小出しやそもそも必要な情報がわからないのは典型的なアホですね・・・。精進します。 とりあえず提案頂いたMapというのを見てみようと思います。
Map以前に配列を知らないとは・・
どっからProcessingが出てきたんだ。 専用スレがあるから検索しろ
Slider2D[] Hoge = new Slider2D[N]; でがまんしとけ
あああすいません配列で簡単にできました。恥ずかしすぎます
解読しようとしてくださった方々、ありがとうございました。。。
>>984 一瞬でできました。ありがとうございます
Stringの配列は使えてるじゃんと思いきや文字列代入してないし…笑えんレベル
次スレは何処?
以下のようなプログラムを作りました。すべての配列の大きさは同じです。 hairetuは引数の配列を使って新しい配列を返すメソッドでkeisanは引数の配列を使ってdouble値を返すメソッド,hyouziは引数の配列を表示するメソッドです。 public static void main(String[] args) { double [][]a = ・・・・; double [][]b = ・・・・; int n = a.length; double [][]A = hairetu(a,b,n); System.out.println(keisan(A,n)); } public static double keisan(double [][]A,int n){ ・・・・ return x; } public static double[][] hairetu(double[][]a,double[][]b,int n){ double [][]y = new double[n][n]; ・・・・ y = ・・・・; hyouzi(y,n); return y; } public static void hyouzi(double[][]a,int n){ ・・・・・ } hyouziメソッドでは配列は正しく表示されるのですがSystem.outのところがすべての要素がNaNの配列が表示されてしまいます。 keisanメソッドは値を返すようにしたのですがなぜでしょうか?
エスパーの誕生をお待ちください
keisanの中身を晒せ 関係ないけど配列のスペースの入れ方キモイ 普通 double[][] y だろ
>>992 C出身者なら double **y のつもりでそう書くんじゃないか?
>>990 System.outって(少なくとも
>>990 には)1個しかないじゃないか。
「配列が表示されてしまいます」って何だ?
「NaNが表示されてしまいます」ならまだ意味はわかるけど。
>>992 本見たらdoule[][] yと書いてありました。記憶違いしてたみたいです・・・
エラー出来ないので気づきませんでした。ありがとうございます。
keisanは以下の通りです。配列の列の和が最大になる列の和を返すメソッドです(∞ノルム)
public static double keisan(double [][]A,int n){
double a=0.0;
double x=0.0;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
a=a+Math.abs(A[i][j]);
}
if(a>=x){
x=a;
}else if(a<x){
break;
}
a=0.0;
}
return x;
}
>>993 配列を返すメソッドについてネットを見ながら書いてみたんですがうまくいきませんでした。
System.outでkeisanで返された値が表示されると思ったんですがNaNばかりの配列が表示されてしまいます
995 :
993 :2011/11/29(火) 03:53:22.45
>>994 別に間違ってないように思える。
強いて言えば、x は 0.0 ではなくて -∞ で初期化すべきということか。
(∞ノルムが負になる場合を考慮)
正しいAが与えられているのなら、正しい結果が表示される筈。
しかしやっぱり「NaNばかりの配列が表示されてしまいます」の意味がわからない。
System.out.println が吐いた文字列をそのまま書きこんでくれ。
それと、Java の場合 n は外から与えるより A.length を見た方がスマートだと思うぞ。
996 :
993 :2011/11/29(火) 03:54:19.47
ああ、ごめん。ノルムは正値だったね。ボケてたわ。 初期化の件は無視して欲しい。
Struts1.2のActionMessageについて質問です。 メッセージは通常とエラーの2種類あると思うのですが、「警告」という3種類目を増やしたい場合はどうすれば良いのでしょうか。 何となくでは 1. Globals.WARNS みたいな定数を定義 2. Action#saveWarns() みたいなメソッドの追加 3. taglibにhtml:warn みたいなカスタムタグの追加 が必要なのかなと思っています。 これが足りない、みたいなのがあれば教えてください。
うんこスレ埋め
UTF-8ってカナや漢字に使えないんだな 外人も使うチャットで文字セットは何を使うべきかね?
今日も何か、バカなことを思いついたやつがいるらしいな。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。