【初心者】Java質問・相談スレッド115【歓迎】
レス数が1000を超えています。これ以上書き込みはできません。
0001Javaが初心者
2008/05/12(月) 03:05:27JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理 http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド114【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1207385614/
次スレは>>990あたりで。
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
0002Javaが初心者
2008/05/12(月) 03:06:45wikiからのリンクをおたどりください。
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。
0003Javaが初心者
2008/05/12(月) 03:07:10■ AWT と Swing は --
Java低速GUI Swing 7
ttp://pc11.2ch.net/test/read.cgi/tech/1204155623/l50
■ SWT は --
Java 高速GUI SWT 3
ttp://pc11.2ch.net/test/read.cgi/tech/1164877399/l50
■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part16
ttp://pc11.2ch.net/test/read.cgi/tech/1207110104/l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 7
ttp://pc11.2ch.net/test/read.cgi/tech/1180010672/l50
■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 64 ★★
ttp://pc11.2ch.net/test/read.cgi/tech/1196543694/l50
**** 開発環境が必要の場合は ****
■ J2SE 1.4.0
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/index.html
■ J2SE 5.0 (1.5.0)
ttp://java.sun.com/j2se/1.5.0/ja/
■ Java SE 6
ttp://java.sun.com/javase/ja/6/
**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
ttp://www.java.com/ja/
0004デフォルトの名無しさん
2008/05/12(月) 03:39:10乙
0005デフォルトの名無しさん
2008/05/12(月) 03:55:12おつ
0006デフォルトの名無しさん
2008/05/12(月) 04:36:14アプレットを作る方法を勉強すればいいと思うのですが、
javaでできるのはアプリケーションとかサーブレットとかもあるがそれはしないつもりなのか?と突っ込まれました
まだ全然よくわからないのですが、アプリケーション用のjavaとかサーブレット用のjavaとかがあるわけではないですよね
アプレットを作るプログラムの基本を学んでいけば、その応用でアプリケーションやサーブレットにも対応していけると予想しているのですが
この考え方で問題ないでしょうか?
いろんな本やサイト見ても、そもそもjavaで出来るのはこれこれで、それはこういうものだっていう説明は中々見つかりません
いきなりプログラムの書き方について(クラスとかメソッドとか)ってのが多くてこの疑問がなかなか解決しなくて困っています
0007デフォルトの名無しさん
2008/05/12(月) 05:08:40Sunの米国サイトに行っても概要は分かるはず
jakartaなども覗いて見るといいだろう
0008デフォルトの名無しさん
2008/05/12(月) 10:29:10使いこなすには今生では無理。java.utilパッケージを使いこなすのは必須事項だけど
javaで何がやりたいか?(サーブレット、アプレット,swing etc)を決めて
それのエキスパートになるのが良いと思うよ。
0009デフォルトの名無しさん
2008/05/12(月) 10:52:16for (String token : allTokens)
この意味を教えてください。
0010デフォルトの名無しさん
2008/05/12(月) 11:11:420011デフォルトの名無しさん
2008/05/12(月) 11:40:03早速質問お願いします。
import java.util.regex.*;
public class TestRegex {
public static void main(String[] args) {
Pattern pattern;
Matcher matcher;
/* パターンマッチ */
System.out.println("<パターンマッチ>");
pattern = Pattern.compile("[^0-9a-zA-Z]+");
matcher = pattern.matcher(args[0]);
boolean b = matcher.matches();
System.out.println("match =[" + b +"] CD=[" + args[0] + "]");
}
}
実行時コマンド java TestRegex "a"
結果はtrueを期待していたのですが、falseになります。
なぜでしょうか?
001211
2008/05/12(月) 11:44:10falseで合ってますね、失礼しました。
0013デフォルトの名無しさん
2008/05/12(月) 11:49:53jdk5以降のjavadocの新機能の章、拡張for文のところを嫁
0014デフォルトの名無しさん
2008/05/12(月) 12:14:42thx
0015デフォルトの名無しさん
2008/05/12(月) 14:29:49ただ漫然とエキスパート目指してもその類の人間はごまんと居る
君のように何が出来るのかを考え大枠を作り出す能力こそが非常に重要
0016デフォルトの名無しさん
2008/05/12(月) 16:51:17電圧制御などはできますか?
USB扇風機をプログラムで制御できないものかと考えたのですが・・・
0017デフォルトの名無しさん
2008/05/12(月) 17:13:130018デフォルトの名無しさん
2008/05/12(月) 17:40:55kwsk
0019デフォルトの名無しさん
2008/05/12(月) 18:06:54ぐぐれ
0020デフォルトの名無しさん
2008/05/12(月) 19:10:380021デフォルトの名無しさん
2008/05/12(月) 20:03:270022デフォルトの名無しさん
2008/05/12(月) 20:05:05ありがとうございます。
色々検討してみます。
0023デフォルトの名無しさん
2008/05/12(月) 20:10:18あ なるほど・・ありです!
0024デフォルトの名無しさん
2008/05/12(月) 20:20:15class Les4_1{
public static void main(String[] args){
Scanner stdIn = new Scanner(System.in);
int y;
do{
System.out.println("整数を入力してください");
int x = stdIn.nextInt();
if(x == 0){
System.out.println("入力された値は0です。");
}
else if(x <0){
System.out.println("入力された値は正です。");
}
else{
System.out.println("入力された値は負です。"); }
System.out.println("もう一度? YES=1 NO=2");
y = stdIn.nextInt();
}while(y == 1);
}
}
・・・というような参考書に載っていた読み込んだ整数値の符号を判定するプログラムを
作っていたのですが、utilのパッケージ、Les4_1のクラスでシンボルを解決できない、
というエラーが出てしまいます。
一行目をimport java.io.*;に変えるとutilのパッケージのエラーが消えました。
開発環境はJ2SE SDKです。長くなりましたが、どうか回答お願いします。
0025デフォルトの名無しさん
2008/05/12(月) 20:23:25002624
2008/05/12(月) 20:30:28すみません、言葉足らずのようでした。
どうしたら解決できるのでしょうか?
プログラムとしては間違っていないようなのですが・・
ttp://www.javadrive.jp/start/scanner/index1.html
こちらのサイトのサンプルプログラムでも同じようなエラーが出てしまいました。
0027デフォルトの名無しさん
2008/05/12(月) 20:44:530028デフォルトの名無しさん
2008/05/12(月) 20:46:46Since:
1.5
002924
2008/05/12(月) 20:50:28気付きませんでした。ありがとうございます。
>>28
今使ってるのが1.4.2でした・・・。
新しいバージョンのでやり直してみます。ありがとうございます。
0030デフォルトの名無しさん
2008/05/12(月) 21:33:21ArrayList型の変数に格納されてる値をString型の変数に代入して行きたいのですが
C言語の配列だと最後に\0が格納されていて、終端の判断が出来るのですが
ArrayListにもその様な終端の判断が出来る要素ってありますか?
また無かったら、どの様にして終端を判断するのか教えてください
0031デフォルトの名無しさん
2008/05/12(月) 21:39:290032デフォルトの名無しさん
2008/05/12(月) 21:43:35Stringの長さならlength()
0033デフォルトの名無しさん
2008/05/12(月) 21:55:13ありがとうございます
0034デフォルトの名無しさん
2008/05/13(火) 00:18:55win+ECLIPSEでやってるのですが、ECLIPSEがちょっと重たい。
いいツールないですか?オススメあったら教えてください。
私、普段macなんですが、macでjavaを勉強しようと思ったらどういう環境がいいですかね?やっぱりECLIPSEですか?OS10.5です。
0035デフォルトの名無しさん
2008/05/13(火) 00:24:470036デフォルトの名無しさん
2008/05/13(火) 00:54:31個人的な意見だが、MacOSXのSWTはやたら遅いので、
MacでやるならNetBeansのほうがサクサク動いてお勧め。
0037デフォルトの名無しさん
2008/05/13(火) 01:17:39vimは先生が使うなって言ってたんです。
なんでかわかりませんが。
MacだとNetBeansですか。。
ちょっとチャレンジしてみます!
0038デフォルトの名無しさん
2008/05/13(火) 01:21:57まあ、初心者には敷居高いわな。
0039デフォルトの名無しさん
2008/05/13(火) 01:24:26にゃはは。敷居が高いって言ってました。うちの先生。
NetBeansでいろいろしてからvimにチャレンジしてみます!
0040デフォルトの名無しさん
2008/05/13(火) 01:45:06良いスレ見つからなかったので
簡単な質問させて下さい。
私はローテクアニオタゲーマーでブロック崩しとか
好きなんですけど、JAVAのブロック崩しって
マウス操作がおもくそ引っ掛かりませんか?
ノートだろうがハイスペックデスクトップだろうが
同じような頻度で同じように引っ掛かって
ちゃんと操作してるのにカーソルが動かなくて
玉をロストってのがめっさムカつきます。
これってJAVAゲーの仕様なんですか?
どうしようもないことなんですか?
それ以外は作り手さんが色々な工夫を
し易いみたいで面白いんですが、アレだけは
本当に嫌なんです。どうにかなりませんか?
0041デフォルトの名無しさん
2008/05/13(火) 02:08:06板違い
ここはプログラミングするひとの板です
そのゲームプログラムを>>40が改造してもっとよくしたいとかなら
>>40が作成したソースを示すことで相談に乗れる人もいるでしょう
0042デフォルトの名無しさん
2008/05/13(火) 02:34:37そんなひどい品質のゲームを出すこと自体センスを疑う
0043デフォルトの名無しさん
2008/05/13(火) 04:48:09(int)でIntegerの配列のデータをキャストしようとしたんですが無理でした。
なんで?
0044デフォルトの名無しさん
2008/05/13(火) 04:54:57自己解決しました。
Integer-int変換なんだから自動で処理してほしいですね
0045デフォルトの名無しさん
2008/05/13(火) 06:15:08Integer[] i = ...;
int[] j = ...;
j[0] = i[0];
みたいにIntegerとintの間ならauto-boxing, auto-unboxingしてくれるはずだが?
どんな代入を行おうとしたんだ?
0046デフォルトの名無しさん
2008/05/13(火) 06:19:350047デフォルトの名無しさん
2008/05/13(火) 07:17:12DataTableがInteger型です。
int [ ] DataOfSocialStudies= new int [ DataTable[2].length ] ;
for(int i=0;i<DataOfSocialStudies.length;i++){
DataOfSocialStudies[i]= DataTable[2][i].intValue(); ←この部分
}
ぷらっとフォームを確認したらJDK1.4だったんでJavaHotSpotClient VM1.6
ってのにしたんですけどエラーは変わらず出ました・・・
0048デフォルトの名無しさん
2008/05/13(火) 07:33:130049デフォルトの名無しさん
2008/05/13(火) 16:11:23>ぷらっとフォームを確認したら
PCショップか。
0050デフォルトの名無しさん
2008/05/13(火) 21:04:29昔、営団がホームドアを導入したとき、Home Doorと英表記してたのを思い出した。
0051デフォルトの名無しさん
2008/05/13(火) 21:09:54コマンドプロンプトを起動+コマンド入力→実行
をJavaプログラム内から行いたいのですが、こういうのは可能なのでしょうか?
0052デフォルトの名無しさん
2008/05/13(火) 21:20:050053デフォルトの名無しさん
2008/05/13(火) 22:14:05最近、上司の教えにより、ようやくsyncronized構文を使ったサーブレットを作成する事が
理解できるようになりました。スレッドについては他にThreadクラス、Runnableインターフェイス等あるみたいなんですが、
とりあえずsyncronizedを覚えてといわれたので上記2つは勉強しておりません。
Web系開発をするにあたり上記2つ(Threadクラス、Runnableインターフェイス)は
必要でしょうか?
よろしくお願いします。
0054デフォルトの名無しさん
2008/05/13(火) 22:47:42getXxx()する度にDBに結果を取りに行ってるんですか?
0055デフォルトの名無しさん
2008/05/13(火) 22:54:580056デフォルトの名無しさん
2008/05/13(火) 23:04:160057デフォルトの名無しさん
2008/05/13(火) 23:04:50005853
2008/05/13(火) 23:08:17なんですか!?なにかおかしかったですか??
せっかくスレッドの本を1冊かったので、もし必要ならやっとこうかなとおもったんです。
だから、教えてくれればありがたいんですが。。
0059デフォルトの名無しさん
2008/05/13(火) 23:11:55お前にはまだ早いというのが上司の判断だろう
0060デフォルトの名無しさん
2008/05/13(火) 23:18:55__,,/ _, ----`ヽ
/ _ ___ 、\
/ / i \ \\
,'./ i ヽ:. ヽ:.:.. ヽ.ヽ
,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ
|i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ}
|i .i l :N_, -弋 \弌弋ナ:}:.:}
|i∧ ', :{ ,ィjモト \ イjミトイイV
.| :メヽ.', `ozZ} izN。ハ::{
| :ヾ_! ゝ "゙゙ ' `゙ ハ.:',
| :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ
/ rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\
/ ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\
/ .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.
/ / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ',
./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ',
{ /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.}
V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ
ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧|
ヽ! )人 : : :人 : : : / \!
" ヽ : : : : :/イ{ :.ノ: : : :.\
\__///: :\______/: : : : : : : ヽ
/ //: : :|;|: : : : : : i: : : __: : : : ',
/ 、 {;{ |;| . : i/. : : : : : :|
/ `Y;{. . . .|;|. : : : /i: : : : : : : : :l
なんですか!?なにかおかしかったですか??
せっかくスレッドの本を1冊かったので、もし必要ならやっとこうかなとおもったんです。
0061デフォルトの名無しさん
2008/05/13(火) 23:24:02状況がよく分からんが・・・・・
そもそも、synchronizedを使うということは、
マルチスレッドが絡んでる領域だろう
一般論としてマルチスレッドプログラミングは、概念を理解した上で行わないと危険
しくじると簡単にデータの整合性を破壊したり、パフォーマンスを劣化させてしまう
おまけにバグが再現しにくいので修正も簡単じゃないことがある
0062デフォルトの名無しさん
2008/05/13(火) 23:26:040063デフォルトの名無しさん
2008/05/13(火) 23:26:340064デフォルトの名無しさん
2008/05/13(火) 23:33:530065デフォルトの名無しさん
2008/05/13(火) 23:40:510066デフォルトの名無しさん
2008/05/13(火) 23:55:28Javaアプリケーションで起動したときに
フレームの上半分にあらかじめ指定していたファイルから
画像を読み込み表示するというプログラムを
作りたいのですがどう作れば良いのでしょうか?
調べてもAppletに関することばかりで困ってます
0067デフォルトの名無しさん
2008/05/13(火) 23:58:48親をJFrameにすれば?
0068デフォルトの名無しさん
2008/05/14(水) 00:00:390069デフォルトの名無しさん
2008/05/14(水) 00:14:30いえ
Appletでも出来ないんです
0070デフォルトの名無しさん
2008/05/14(水) 00:16:26素直に宿題スレへ行け
0071デフォルトの名無しさん
2008/05/14(水) 00:25:08もう少し勉強してきます
0072デフォルトの名無しさん
2008/05/14(水) 00:26:03で、どこまで調べた?
0073デフォルトの名無しさん
2008/05/14(水) 00:32:19アプレットなんてもう何年も使ってないから忘れてた。
007451
2008/05/14(水) 00:44:12すいません、寝ちゃって返事が遅くなってしまいました!><
ちゃんと引数まで付けて実行出来るとは、正にやりたかったことです!
おかげさまで非常に助かりました、本当にありがとうございます!!
0075デフォルトの名無しさん
2008/05/14(水) 00:58:520076デフォルトの名無しさん
2008/05/14(水) 01:02:34乱数を利用して0〜53の値をランダムで配列に格納するプログラムなんですけど、
永久ループになってしまいます。値は一意です。
どなたか助けてくださいm(_ _)m
public class XXX {
public static void main(String[] args) {
/* 変数宣言 */
int[] card = new int[53];
int nn, num;
boolean frg = false; // 配列との比較用フラグ
/* 乱数の発生と格納 */
nn = 0;
while (nn != 52) {
num = (int)(Math.random() * 54);
for (int i = 0; i < nn; i++){
if (num == card[i]) {
frg = true;
break;
}
}
if (frg == false) {
card[nn] = num;
nn++;
}
0077デフォルトの名無しさん
2008/05/14(水) 01:03:02/* 結果の表示 */
String buf;
for (int i = 0; i < card.length; i++){
buf = " " + card[i];
buf = buf.substring(buf.length() - 4);
System.out.println(buf);
if (i % 10 == 0){
System.out.println();
}
}
}
0078デフォルトの名無しさん
2008/05/14(水) 01:14:05while (nn != 52) {
num = (int)(Math.random() * 54);
for (int i = 0; i < nn; i++){
if (num == card[i]) {
System.out.println("num=" + num);
frg = true;
break;
}
}
でやってみたらどう?
0079デフォルトの名無しさん
2008/05/14(水) 01:34:33やってみました、
num = で、1〜53までのランダム整数が永久ループで表示され続けます。
フラグ初期値falseがどんな数値でもtrueになってしまっているようで、
それでいてnnが加算されないのが永久ループの原因のようです。
うう、どうしてかわからない・・・。
0080デフォルトの名無しさん
2008/05/14(水) 01:37:22public static void shuffle(int[] array) {
shuffle(array, array.length);
}
private static void shuffle(int[] array, int size) {
if (size == 1) return;
int swapIndex = random.nextInt(size - 1);
int temp = array[size - 1];
array[size - 1] = array[swapIndex];
array[swapIndex] = temp;
shuffle(array, size - 1);
}
0081デフォルトの名無しさん
2008/05/14(水) 01:44:02すません、まだJAVAならいたてのど素人なので
そこらへんは・・・
(int)(Math.random(x + 1))で、0〜Xまでの数値のランダムというのを
ネットで発見したのでそれを使ってやろうと考えています。
008280
2008/05/14(水) 02:05:54正: int swapIndex = random.nextInt(size);
死にたい。
>>81
if (frg == false) {
card[nn] = num;
nn++;
} else frg = false;
ってしてみたら?
あとフラグの綴りはflagです。
buf = buf.substring(buf.length() - 4);
は何やってるのかわかりません。
if(frg == false)はif(!frg)でいいじゃん
008353
2008/05/14(水) 02:08:44上司からデッドロックとかスレッドの概要はおしえてもらいました。データの整合性
とか同期とかも教えてもらいました。
スレッドクラスとかランナブルインターフェイスというのは、スレッドを専門にあつかうクラスであるみたいですが、
Webアプリやるならsyncronizedだけでいいといわれました。でも、せっかく本を買ったので
必要ならやってみたいとおもったりしたわけです。
概念的なものは理解したつもりです。後はクラスの使い方だとおもうんです。
ですから、それを勉強しといたほうが得なのか、Webアプリには必要ないのかを聞きたいんですが…
ぜんぜん、つりではなく、まじめな質問なので、よろしくお願いします。
具体的には、WebアプリでThreadクラスやらRuunableインターフェイスを使う事があるのかないのかを聞きたいです。
どうか、よろしくお願いします。
008453
2008/05/14(水) 02:10:08すみませんが、軽く答えていただければいいのでよろしくお願いします。
0085デフォルトの名無しさん
2008/05/14(水) 02:15:59意識しなくてよいはずです。
そのためのアプリケーションサーバですから。
せっかく本を買ったのなら、アプリケーションサーバのベンダの人達は、
こんなめんどくさいことやってるんだなあ、と考えながら読みましょう。
0086デフォルトの名無しさん
2008/05/14(水) 02:17:01目先のことに囚われて勉強しなくていいやなんて思っているなら死んだ方がまし
008753
2008/05/14(水) 02:26:06まいど!やんなくていいですか。ありがとうございます。
せっかく買ったのでやってみようとおもいます。ありがとうございました。
>>86
スレッドってそんな大事なんですね。あちきは、単なる1部分くらいにおもってました。
じゃあ、やってみます。
みなさん、回答どうもありがとうございました。多謝です。
0088デフォルトの名無しさん
2008/05/14(水) 02:30:21あーっ、なるほど。漸くわかりました。
一度既出の値が出たときにフラグがtrueになるのがそのままtrueのまま続いてしまっていたんですね。
どうもありがとうございます。精進します。
>buf = buf.substring(buf.length() - 4);
すいません、説明不足でした。表示する内容を右揃えする制約があったので、
substringを利用して右揃えをする部分ですこれ。
0089デフォルトの名無しさん
2008/05/14(水) 03:45:49◆6月にマネージャパン、月刊アスキー、週刊アスキーの3誌が賞金総額2000万円の「シストレFXグランプリ」を開催
http://system-trading.jp/news/index.php?cID=3
5月22日より登録受付開始、6月2日よりグランプリ開始の予定。賞金総額2000万円。
デモトレードの優勝者には賞金三百万円がプレゼントされます。
▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
http://www.fx-gp.com/about/
▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
0090デフォルトの名無しさん
2008/05/14(水) 05:35:57教科書にスタックの考え方を再現したJAVAプロジェクトと、前置記法のアルゴリズムを再現したJAVAプログラムがあり、
そのうち前置記法のプロジェクトが当然のようにスタックのプロジェクト内のクラスのインスタンスを作っているのですが。
エクリプス上でその部分に赤線が引かれており、実行してもエラーが出ます。
また、別のクラスを呼び出すために「Javaのビルド・パス>プロジェクト」と「プロジェクト参照」の設定」とやらも試してみたのですが、
そうすると赤線部分はなくなったのですが、実行しても何も起こりません。
前置記法のプログラムの最初にはimport java.io.*; とあるのですがそれが関係しているのでしょうか?
0091デフォルトの名無しさん
2008/05/14(水) 07:06:40実行すると
Exception in thread "main" java.lang.NoClassDefFoundError:
↑はwikiで解決するんですが、
at java.net.URLClassloader$1.run(Unknown Sourse)
at ・・・
at ・・・
と、at何とかが7個出てくるんですがあれはなんでしょうか?
教えてください。
0092デフォルトの名無しさん
2008/05/14(水) 11:42:500093デフォルトの名無しさん
2008/05/14(水) 14:25:20スタックトレース
例外が投げられた時点でどういうメソッドが呼ばれていたのかの情報
下の行のメソッドが上の行のメソッドを呼んでいることを表す
その場合は例外は一番上のjava.net.URLClassloader$1クラスのrunメソッドで投げられた
0094デフォルトの名無しさん
2008/05/14(水) 16:23:05↑のようなファイル名のファイルが大量に入ったディレクリを引数に指定して、
中のファイル名を第XX回「hoge」.aviにしたいと考え以下のようなものを書いたのですが、
renameToの返却値がfalseになってダメです。
どうしたらちゃんとリネーム出来るのでしょうか?orz
public static void main(String [] args)
{
File dir=new File(args[0]);
String[] str=dir.list();
for(int i=0;i<str.length;i++)
{
File file=new File(args[0]+str[i]);
String newfile=new cui().toRenStr(str[i]);
System.out.print(file.renameTo(new File(args[0]+"/"+newfile)));
}
}
public String toRenStr(String str)
{
Pattern pattern = Pattern.compile(".*第");
Matcher matcher = pattern.matcher(str);
String renstr = matcher.replaceAll("第");
pattern = Pattern.compile("」.*");
matcher = pattern.matcher(renstr);
renstr = matcher.replaceAll("」.avi");
System.out.println(renstr);
return renstr;
}
}
0095デフォルトの名無しさん
2008/05/14(水) 17:01:05renameTo()を呼ぶ前に、file.getName()とnew File(args[0]+"/"+newfile).getName()
を表示して確認。
0096デフォルトの名無しさん
2008/05/14(水) 20:11:53左右マウスホイールって使えないんですかね?
(一般的にはチルトホイールという?)
少し調べたんですけど、全然出てこないですね。
0097デフォルトの名無しさん
2008/05/14(水) 20:51:21POSTのHTTPリクエストは
「ヘッダ部複数行」
1空行
「データ部1行」なので、
BufferedReader br = new BufferedReader
(new input StreamReader(socket.getInputStream()));
でHTTPリクエストを取得。そのあとに
while(br.readLine() != (""){
}
String data = br.readLine();
とやれば、データ部をdataに入れられると思ったのですが、
データ部の後ろには改行コードのCRLFがないため、readLineで1行読み込む
ことができないようです。同様にread()でもうまくいきません。
どうにかしてデータ部を取得することはできないでしょうか?
0098デフォルトの名無しさん
2008/05/14(水) 21:09:43たいていの場合はヘッダにデータ部の長さが入っているので、そのぶん
だけ読めばよろしい。
他、気になるところ:
・HTMLからのフォームPOSTでも、データがMIMEで送られることがあるので、データが1行とは限らない
・データがバイナリのこともあるので、基本的にReader類は使ってはダメ
・chunked-encodingのこともあるので、以下略
0099デフォルトの名無しさん
2008/05/14(水) 21:27:47private InputStreamReader in;
これらを使って文字列を読んでるんですが、ファイルが終端に達したかを調べる方法ってありますか?
0100デフォルトの名無しさん
2008/05/14(水) 21:32:32readメソッドの戻り値がー1
0101デフォルトの名無しさん
2008/05/14(水) 21:40:13ありがとうございます
0102デフォルトの名無しさん
2008/05/14(水) 22:50:49いまSQL Serverとjavaを繋げる勉強をしています。
INSERTした時間を後で取り出し
after()メソッドで比べたいのですが、そういった処理は可能ですか?
もし可能なら詳しく教えてください。
0103デフォルトの名無しさん
2008/05/14(水) 23:01:010104デフォルトの名無しさん
2008/05/15(木) 00:19:56また、どのタイミングでしてくれるのですか?
0105デフォルトの名無しさん
2008/05/15(木) 00:25:520106デフォルトの名無しさん
2008/05/15(木) 00:27:080107デフォルトの名無しさん
2008/05/15(木) 00:30:160108デフォルトの名無しさん
2008/05/15(木) 00:33:55InputStream input = null;
try {
// 略
} finally
input.close();
input = null; // ←
}
}
これが必要か?って話ならばイラネ
0109デフォルトの名無しさん
2008/05/15(木) 05:30:00流行しちゃったの?何か歴史的背景とかあんの?
0110デフォルトの名無しさん
2008/05/15(木) 08:45:43ちょっと難しそうですけど、ありがとうございました。
0111デフォルトの名無しさん
2008/05/15(木) 09:38:05nullを入れたほうがGCの取りこぼしが少ないとか、即座にGCされるから効率的だとか、そういう勝手な思い込みから
0112デフォルトの名無しさん
2008/05/15(木) 11:19:31input = null;
System.gc();
しても実際3行目でメモリ解放するかはGCの実装依存なんだよね。
0113デフォルトの名無しさん
2008/05/15(木) 11:47:37処理しないでそのまま流してしまうコードを書くおっちょこちょいが多すぎて
コンパイラがデフォでnullを入れてないコードをコンパイルするときにエラーをはくようになった
0114デフォルトの名無しさん
2008/05/15(木) 12:46:180115デフォルトの名無しさん
2008/05/15(木) 14:52:45public static void main(String args[]){
static int i = 0; // int i = 0;ならエラーにならないのはなぜですか?
0116デフォルトの名無しさん
2008/05/15(木) 15:10:35ローカル変数には static つけられないって言語仕様で決まってるから。
0117デフォルトの名無しさん
2008/05/15(木) 15:21:37static int i = 0;
public static void main(String args[]){
これならいいんですね。
0118デフォルトの名無しさん
2008/05/15(木) 17:27:21それだとiはローカル変数ではなくなる。
staticはインスタンスでなくクラスに属する変数であるという意味だから、
クラスやインスタンス個別でなくスレッドごとに存在しているローカル変数に付けると
意味不明になってしまう。単に、>>115でstaticを外したように書けば、
ローカル変数iとして使えるし、コンパイルも通るはず。
それともクラス変数にしようとして書く場所を間違っただけ?
0119デフォルトの名無しさん
2008/05/15(木) 17:37:44とあるObject型のobj、Sting型のstrがあるとして
((String)obj).charAt(0);
str.charAt(0):
この二つでは、静的変換が入る上のほうが実行速度にペナルティーがあるのでしょうか?
以前やっていたCではペナルティがなかったと思うのですが、Javaだと「静的型変換に失敗した」という例外を投げてくれるようなので、おそらくなかでチェック機構が働いており、ペナルティがあるかなと思っているのですが
0120デフォルトの名無しさん
2008/05/15(木) 17:48:19コードや実行環境によるとしか言えない。
例えばループ内で obj が再代入されないなら
JITコンパイラが String tmp = (String)obj; みたいなコードを
ループ外部に作成して、ループ内部では tmp.charAt(0) に変換、
みたいな事をする可能性はある。
0121デフォルトの名無しさん
2008/05/15(木) 17:49:55あと、(String)obj は動的(実行時)型変換だよ。
静的(コンパイル時)型変換じゃない。
0122デフォルトの名無しさん
2008/05/15(木) 17:58:49なるほど、最適化されるということは、裏を返せば型変換にはペナルティがあるってことですね。
>あと、(String)obj は動的(実行時)型変換だよ。
たしかに。書き方がCと同じだからって、同じものだとは限らないわけですね。
Javaには静的型変換はないようで。
ありがとうございました。
0123デフォルトの名無しさん
2008/05/15(木) 18:15:56ありがとうございます。
int変数のiが5なのかを判定したくて
if(i == 5){
と書いてみたのですが、そのif以前にiが初期化されていなかったらiがnullかもしれないから
if(i != null && i == 5){
と書かなくてはならないのか調べたくて
int i;
if(i == 5){
とするとコンパイルできなかったから、
static int i;
if(i == 5){
と書きましたが、これもコンパイル不能でしたが、コンパイラがstaticを
解釈できていないようなメッセージを出しているみたいだったので質問させていただきました。
0124デフォルトの名無しさん
2008/05/15(木) 18:17:38int型が null になる事はない
0125デフォルトの名無しさん
2008/05/15(木) 18:21:49そうですね。nullになりませんが、プリミティプの数値型は0で暗黙の初期化がされるらしいので
int i;
を書いてから、初期化を書かずに
if(i == 0){
を実行して真となることを確認したいのですが、そのようなソースは書けませんか?
0126デフォルトの名無しさん
2008/05/15(木) 18:23:40ローカル変数は暗黙の初期化はされない。
0127デフォルトの名無しさん
2008/05/15(木) 18:24:46書けません。
必ずローカル変数はその値を参照する前に初期化されていることが求められています。
そして、ローカル変数は初期化を省略した際のデフォルト値のようなものはないので、
自分で初期化しなければなりません。
0128デフォルトの名無しさん
2008/05/15(木) 18:27:37int i;
と書いただけではiの値は確定していないので必ず初期化が必要。
iに値を代入するのがそんなに面倒?
0129デフォルトの名無しさん
2008/05/15(木) 18:29:52static int i;
public static void main(String args[]){
これならiは暗黙の初期化で0ですね。
ありがとうございました。
0130デフォルトの名無しさん
2008/05/15(木) 18:36:28ローカル変数とクラス変数では全然意味が違う
暗黙の初期化をしたいがためにローカルなものをフィールドに出したら
プログラムそのものの動作が変わってしまうだろ
0131デフォルトの名無しさん
2008/05/15(木) 19:15:37一般的なJavaプログラミングには必要ない。
むしろプリミティブ型の値範囲と精度に注目して欲しい。
0132デフォルトの名無しさん
2008/05/15(木) 19:58:21おもしろかったらやってみたいんだけど、
家計がしんどいので2000円の本買うのためらってる。
Seasar2っておもしろい??
0133デフォルトの名無しさん
2008/05/15(木) 20:13:250134132
2008/05/15(木) 20:50:48働いています><; 一人暮らしでバイクのローンもあるから厳しいんです><;
原付にしときゃよかった><;
Seasarのスレがあったのでみたら、閉店するそうなので
やめます><;
0135デフォルトの名無しさん
2008/05/15(木) 21:03:040136デフォルトの名無しさん
2008/05/15(木) 21:05:57ResultSet.nextをコールしないとSQLExceptionがスローされるようなのですが、なぜExceptionになるのでしょうか?
statement.excute(SQL文)でSQLのカーソルをSQL文に対応するレコードに移し、
statement.getResultSet()でカーソルの指し示すレコードをResultSetとして渡す。
で、ResultSet.getString()なりなんなりでSQLの中身を取り出す。
複数のレコードを取り出すならばResultSet.next()を使うのが自然だと思うのですが、単独のレコードが期待される場合は使う必要がないのではないでしょうか?
excuteじゃなくてexcuteQueryだと違うんでしょうか?
0137デフォルトの名無しさん
2008/05/15(木) 21:15:23stacktraceくらい張ったらどうでしょうか?
0138デフォルトの名無しさん
2008/05/15(木) 22:24:48ResultSet のカーソルは、初期状態では最初の行の前に位置付けられています。
メソッド next の最初の呼び出しによって、最初の行が現在の行になります。
2 番目の呼び出しによって 2 行目が現在の行になり、以降同様に続きます。
0139デフォルトの名無しさん
2008/05/15(木) 22:29:52http://java.sun.com/javase/6/docs/api/java/sql/ResultSet.html
> A ResultSet object maintains a cursor pointing to its current row of data.
> Initially the cursor is positioned *before the first row*.
日本語版は誤訳だから気をつけろ
0140136
2008/05/15(木) 22:49:57ResultSetのカーソル位置が最初0で、受け取ったデータは1から始まるって事でしょうか?
0141デフォルトの名無しさん
2008/05/15(木) 22:54:570142デフォルトの名無しさん
2008/05/15(木) 23:02:39<チラ裏>
言えない…ResultSetが単体のレコードを格納すると思ってたなんて言えない…
</チラ裏>
0143デフォルトの名無しさん
2008/05/16(金) 01:09:020144デフォルトの名無しさん
2008/05/16(金) 08:31:41可能です。
以上。
↓次の方どうぞ
0145デフォルトの名無しさん
2008/05/16(金) 08:35:28質問です、文字列からColorクラスに変換することってできないでしょうか?つまり、
String colorname = "red";
のような色名を表す文字列を使って、setBackgroundやsetColorなどのメソッドの引数をつくる方法はないでしょうか?
色名を全部並べてif文とかで条件分岐をすればできるですが、それだととてもコードが長くなってしまうので・・・
0146デフォルトの名無しさん
2008/05/16(金) 08:38:52java.awt.Color#getColor(String)
0147145
2008/05/16(金) 09:11:22レスありがとうございます。やってみたのですが、たとえば
Color color;
color.getColor("red");
というふうにすると、コンパイルはできるのですが、ちゃんと色が出ませんでした。
redをblueやcyanに変えてみても、同じ黒っぽい色しか出ません。
どうしてなんでしょうか?
0148デフォルトの名無しさん
2008/05/16(金) 09:17:150149145
2008/05/16(金) 09:29:150150デフォルトの名無しさん
2008/05/16(金) 10:16:272次元の配列データを、csvファイルにして(デスクトップなどに)出力したいのですが、どのような方法があるでしょうか。
0151デフォルトの名無しさん
2008/05/16(金) 10:29:140152150
2008/05/16(金) 10:32:280153デフォルトの名無しさん
2008/05/16(金) 10:43:36使い方としては、
Color color = Color.getColor("red");
だけど、ドキュメントを見るとシステムプロパティがどうとか書いてあっ
てよくわからんね。
0154デフォルトの名無しさん
2008/05/16(金) 10:49:05自前でやるんなら、自分でCSV書き出すプログラム書くだけだよ。
0155デフォルトの名無しさん
2008/05/16(金) 11:40:26for(data[] row : array){
for(data cell :row){
data.toString()と","をファイル出力
}}
0156デフォルトの名無しさん
2008/05/16(金) 12:41:17それはダメ。
その実体は new Color(int, int, int, int) の引数を結合した数値の文字列表現。
> 指定されたプロパティが見つからない場合、
> ***または整数値として解析できなかった場合***、null が返されます。
>145 の言う「名前から色」というのは、どこかで対応表を持つ必要があるから、
公開ライブラリには向かない、と私は思う。
要は、Map<String, Color> か何かで専門クラスを作りましょう、と。
0157デフォルトの名無しさん
2008/05/16(金) 12:45:53javax.swing.txt.html.StyleSheet#stringToColor(String) とか?
0158デフォルトの名無しさん
2008/05/16(金) 12:47:53改行してない。
0159デフォルトの名無しさん
2008/05/16(金) 18:00:57JToggleButton();で押下時のボタン色を変えるシンプルな方法はありますか?
メソッドをネットで検索しても見つかりませんでしたので、
JToggleButton();を継承して、オーバーライドしたクラスを作ったんですが、
ボタンのイベントの"actionPerformed()"が、使用されるアプリのほうが
自分より早く呼ばれてしまう為、旨くいきませんでした・・・
0160デフォルトの名無しさん
2008/05/16(金) 18:05:23public class IToggleButton extends JButton implements ActionListener
{
private boolean isSelected = false;
IToggleButton(String str){
super(str);
addActionListener(this);
if (this.isSelected) setBackground(Color.pink);
else setBackground(null);
}
public void actionPerformed ( ActionEvent e ) {
isSelected = isSelected?false:true;
if (isSelected) setBackground(Color.pink);
else setBackground(null);
}
public void setSelected(boolean selected){
this.isSelected = selected;
if (this.isSelected) setBackground(Color.pink);
else setBackground(null);
}
public boolean isSelected() {
return(this.isSelected);
}
}
0161デフォルトの名無しさん
2008/05/16(金) 19:55:47プログラム言語のスレはココですか?
0162デフォルトの名無しさん
2008/05/16(金) 20:40:200163デフォルトの名無しさん
2008/05/16(金) 22:35:26若い女の営業スマイル。よく出せるなと思っていました。
コンビニやスーパーでも俺みたいなきもいおっさんによくこうも
にこやかな営業スマイルだせるなと感心しておりました。
こないだ、パチンコ屋に行きました。そこは町の中心部にあり自宅から
4,50分のところです。そこは、衣装もエロチックでミニスカートにスリットなる
切れ目が入っていて、店員さんもなかなかの魅力的な娘が多いです。
それも楽しみにときどきそこの店に行きます。
あまりでないので、自動販売機のところで一服してるとかわいい娘が
コーヒーを配っています。あまりこの店までこれないので、ついミニスカートのスリットから見える
太ももを凝視して興奮してしまいました。かなり長い間エロい目つきで見てたはずです。
相手に気づかれました。さすがに、とってもいやな顔されるだろうとおもっていました。
最初はたしかにちょっといやな顔をしましたが、すぐにあのにこやかな営業スマイルにもどりました。
これはびっくりしました。いくら店員とはいえ、俺みたいなもてないブサ男に
この場面で営業スマイルとは・・・
恐れ入りました。パチンコ屋のあの店員。
0164163
2008/05/16(金) 22:36:080165デフォルトの名無しさん
2008/05/16(金) 22:39:49女性店員よりプロ意識が低いと言いたいわけですね?わかりますw
0166デフォルトの名無しさん
2008/05/16(金) 22:54:26http://www.7andy.jp/books/detail?accd=31942656
やさしく学ぶ Sun認定Javaプログラマ
http://www.7andy.jp/books/detail?accd=32020519
この2つでどっちを買うか迷ってるんだけどどっちがオススメ?
もしくは他にオススメある?
一応研修でざっと習って「やさしいJAVA」ってのも貰った
基本をきっちり押さえつつも実践的な練習もできる本が欲しい
他のSUN認定の分厚いのや外人が書いた翻訳された本は見にく過ぎて無理だった
とりあえず逆引きの本は1冊買った
誰か助けて
0167デフォルトの名無しさん
2008/05/16(金) 23:12:15「実践的な練習」がどのレベルを指してるのか分かんない。
1.実用的なプログラムを、とりあえず動くレベルで書けるようになりたい。
2.動けばいいレベルなら既に書けるから、より良いコーディングを学びたい。
1なら言語本(Javaそのものを説明してる類の本)はやさしいJava1冊で十分。
それよりも実際に何か書いてみる方に注力して、書きながらその都度必要
な情報を検索する、それでもみつからないなら本を探して買うってやり方の
方が経済的だし効率いい。
言語本を何冊も買うのは意味ないし、言語本を2冊読む時間があるなら1
冊だけ読んでもう1冊読む分の時間で実際にコード書く方が効率いい。
あと、1のレベルに達してない人が2を求めるのは非効率。先ずは1から。
もし2ならJavaの鉄則とJavaの格言は良い本だよ。読みやすいしね。
0168デフォルトの名無しさん
2008/05/16(金) 23:27:34こんな時間にどうもありがとう!
明日その2冊を立ち読みしてみる
0169デフォルトの名無しさん
2008/05/17(土) 00:21:32javaプログラミングをするのに優れたフリーのテキストエディターを教えて下さい。
できれば文字の色を変えてくれて、Tabで列を揃えてくれるやつがいいです。
OSはWindows XPです。
よろしくお願いします。
0170デフォルトの名無しさん
2008/05/17(土) 00:36:59java.util.List は同期化されませんが、以下のようにすれば、list はスレッドセーフになって帰ってくるのですよね。
List unsyncList = new ArrayList();
List list = Collections.synchronizedList(unsyncList);
○質問1:
マルチスレッド環境において、
Collections#synchronizedList() が返した list に対しては、
synchronized ブロックでくくらずに add() や get() しても、スレッドセーフが保たれるという理解でよいですか?
○質問2:
javadoc の Collections#synchronizedList() のところに、
以下のように書いてあるのが気になります。
>返されたリストの繰り返し処理を行う場合、ユーザは、次に示すように手動で同期をとる必要があります。
>
>List list = Collections.synchronizedList(new ArrayList());
> ...
>synchronized(list) {
> Iterator i = list.iterator(); // Must be in synchronized block
> while (i.hasNext())
> foo(i.next());
>}
>これを行わない場合、動作は保証されません。
これは、list の add() や get() は質問1:で同期化されるようになったが、
list.iterator() が返すイテレータへのアクセスは同期化されていないので、
イテレータでグルグルまわすときは、synchronized 文で自分で同期化してね、という理解でよいでしょうか?
0171デフォルトの名無しさん
2008/05/17(土) 00:42:19いくつもあるし相性があるって人もいるので、
ぐぐって出てきたのを使ってみれば?
あるいはEclipse、NetBeans等の統合開発環境とか
文法ミスを指摘してくれたり、デバッグ用の機能がそろってたりと何かと便利
大規模な開発にも耐えうるし、ひとつ持っておくのをお勧めする
0172デフォルトの名無しさん
2008/05/17(土) 00:48:44なるほど、ありがとうございます。
早速ぐぐってみます。
0173デフォルトの名無しさん
2008/05/17(土) 01:17:27Effective Javaがいいよ!
0174デフォルトの名無しさん
2008/05/17(土) 01:31:30sync-List は、単にsynchronizedメソッドでラップされたインスタンスを提供してるだけ。
必要とされる同期化の手続きが、著しく改善されるわけではない。
iterator で返されるインスタンスは、ラップされたものとは違うので、
生成前に必要な手続きを行う必要がある。
0175デフォルトの名無しさん
2008/05/17(土) 01:42:45>質問1
はい。
ただし、例えば以下のようなことをしたい場合は、containsやaddがそれぞれ単体で同期されてても
間に割り込まれる可能性があるので、全体をsynchronizedで囲まないと望む結果にはならない。
if ( list.contains(x) == false ) list.add(x);
>質問2
はい。
どのみち、iterator、hasNext、nextをそれぞれ単体で同期したところで、
間にaddが割り込まれたらConcurrentModificationExceptionが起きるから、使い物にならないと思う。
ところで、CopyOnWriteArrayListという便利なものもあるよ。
状況によってはおすすめ。
0176デフォルトの名無しさん
2008/05/17(土) 02:24:22Color c = (Color)Color.class.getField(colorname).get(null);
要try-catch
0177デフォルトの名無しさん
2008/05/17(土) 07:49:46スレ違いなら誘導をお願いします。
DBから読み込んだ内容をテーブルとして表示し、レコードごとにボタンを置いて押すとそのレコードの詳細を表示するものを作っています。
レコードをテーブル表示するのはwhile(ResultSet.next())で<tr>〜</tr>を繰り返して実現できそうなのですが、詳細を表示するボタンに迷っています。
というのも渡すパラメータが10個あり、しかもそのうち9つがレコードの内容に依存しない共通の項目です。
ボタン一つ一つにformを作ってhiddenで10個のパラメータを付加してwhileで回すのも考えたのですが、例えば20個のレコードに対して200のhiddenが生成されるのはいかがなものかと他の手段を探しています。
buttonを押したときにonclickで遷移することも考えましたが、buttonに直接パラメータを付加できる属性はないものでしょうか?
0178デフォルトの名無しさん
2008/05/17(土) 08:27:13リンク"A href=恐らくdoPostの値></A"で
データをJAVAサーブレットに送信したいのですが方法がわかりません。
リンクにdoPostの情報を与えるのもわかりませんがリンクからの情報をサーブレットに値を与えデータを返す方法もわかりません。
本にも載ってないのでどうすればいいかわかりません、教えて君になってしまいますがよろしくお願いします。
0179178
2008/05/17(土) 08:52:140180デフォルトの名無しさん
2008/05/17(土) 09:55:43現場のソースで、
List list = new ArrayList();と記述し、ArrayListのメソッドを
使っているソースを見かけたのですが、
ArrayList list = new ArrayList()とのメリット上での差異が分りません。
良い点があるから、List list = new ArrayList();と記述するのでしょうが、
その良い点が分りません。よろしくお願いします。
一応、sjc-p1.4の資格は持っていて、SJCPに合格するだけのインターフェースの知識は
あります。
0181デフォルトの名無しさん
2008/05/17(土) 10:01:33そもそも、一覧から詳細にいくのに10個もパラメータいらんだろ?
なんかおかしな設計ではないのか?
POSTで送信する(Formを使用する)場合、
>9つがレコードの内容に依存しない共通の項目
レコード(繰り返し処理)の外側に配置すればいい
各列のハイパーリンクをクリックしたならば、JavaScriptで各行のキーをhidden項目に設定。
その後、隠しボタンにした「詳細」ボタンをJavaScriptでクリック
ってのが1つの方法。
詳細がボタンであっても同様。
GETでいいならば、URLのパラメータに10個のパラメータを付ければいい。
POST/GETとFORMあたりがよく解っていないならば、まずはHTTPの勉強を汁。
0182デフォルトの名無しさん
2008/05/17(土) 10:07:06ぶっちゃけて言えば、半端な知識のマが書いた中途半端なコードなだけ。
意図としてはListで定義されているメソッドしかlist変数では使えないって効果しかない。
これがメリットとなるか?というならば、ほとんどの場合は否。
これがメリットとなるケースは、一般的にいって定義されたクラス外からlistの参照を持つ場合。
つまり、あるクラスのフィールドとして、
private final ArrayList list = new ArrayList();
と書いてあっても、
public List getList() {
return list;
}
とアクセサを定義しておけば、
private final List list = new ArrayList();
とする必要は(ほとんど)ない。
クラス内でArrayListをLinkedListに変更したり、配列に変更しても、List getList()さえ仕様通りの動きをすればいいわけだ。
ローカル変数でやるならばもっと意味はない。
0183デフォルトの名無しさん
2008/05/17(土) 10:12:13極端な話、LinkedListなんて専用メソッドを活用しなきゃいらない子。
0184デフォルトの名無しさん
2008/05/17(土) 10:25:11swingでゲームを作ろうとして勉強しているものです
ゲーム中(ループ中)にJPanelを実装したクラスのコンストラクタでボタンを配置
別スレッドでループ処理する。このときアクティブレンダリングして描画命令
してるのですが、なぜかボタン隠れた状態で更新されてしまいます。
下にコードを書きますので、どなたかご教授ください
0185デフォルトの名無しさん
2008/05/17(土) 10:26:43「選択肢があるなら、抽象データ型を使え」という指針がある
Listとおけば実装の詳細がより隠蔽される
例えば実装を交換したいという状況になっても、new ArrayList();の部分だけを取り替えてやればいい
・・・・一応、理論上はそういうことになってるようなのだが、
listのスコープが狭い場合はデメリットにしかならんような?使えるメソッド減るし
0186デフォルトの名無しさん
2008/05/17(土) 10:26:48import java.awt.*;
import javax.swing.*;
/*****************************************
* パネルクラス(中間コンテナ)
*
*****************************************/
class MainPanel extends JPanel implements Runnable{
//パネルサイズ
public static final int WIDTH = 500;
public static final int HEIGHT = 500;
private Thread thread;
//コンストラクタ
public MainPanel(){
//サイズの設定
setPreferredSize(new Dimension(WIDTH,HEIGHT));
thread = new Thread(this);
thread.start();
JButton btn = new JButton("OK");
add(btn);
}
0187デフォルトの名無しさん
2008/05/17(土) 10:28:14public void run(){
while(true){
SwingUtilities.invokeLater(new Runnable() {
public void run() {
gameRender();
paintScreen();
}
});
try{
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
0188デフォルトの名無しさん
2008/05/17(土) 10:29:03// ダブルバッファリング用
private Graphics dbg;
private Image dbImage = null;
//バッファにレンタリング
public void gameRender(){
//初回時の呼び出しならばダブルバッファリング用のオブジェクト作成
if(dbImage==null){
//バッファイメージの作成(領域)
dbImage = createImage(WIDTH,HEIGHT);
if(dbImage==null){
System.out.println("no dbimage obj!");
return;
}else{
//バッファイメージに図や画像を書き込むために必要なGraphicsオブジェクトも作っておく
dbg = dbImage.getGraphics();
}
}
//バッファをクリアする
dbg.setColor(Color.WHITE);
dbg.fillRect(0, 0, WIDTH, HEIGHT);
}
0189デフォルトの名無しさん
2008/05/17(土) 10:29:39public void paintScreen(){
try{
Graphics g = getGraphics();
if(g!=null && dbImage!=null){
//バッファイメージを画面に描画
g.drawImage(dbImage,0,0,null);
}
//システムのtoolkitオブジェクトを返し、画面を強制的に更新させる
Toolkit.getDefaultToolkit().sync();
if(g!=null){
//グラフィックオブジェクトの破棄
g.dispose();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
0190デフォルトの名無しさん
2008/05/17(土) 10:33:02//コンストラクタ
public MPN(){
//タイトル
setTitle("ウィンドウ");
setResizable(false);
//ContentPaneにパネルを貼り付ける
MainPanel panel = new MainPanel();
Container contentpane = getContentPane();
contentpane.add(panel);
//フレームサイズをパネルに合わせて設定
pack();
}
private static void createFrame(){
MPN game = new MPN();
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
game.setLocationRelativeTo(null);
game.setVisible(true);
}
public static void main(String[] args) {
//イベントディスパッチスレッドにフレームを作成させる
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createFrame();
}
});
}
}
0191デフォルトの名無しさん
2008/05/17(土) 10:35:21長くなりすみません。
どうもダブルバッファリングするとボタンがうまく配置しません。
paintComponentメソッドを使った描画処理ではうまくいきました。
0192デフォルトの名無しさん
2008/05/17(土) 10:51:46trimToSize() も clone() も使う必要ない場合だと、5文字削れてラッキーとか。
メソッド境界以外では抽象型に拘る必要がないってのもわかるけど、
ArrayList と List にも拘るほど違いないから、ぶっちゃけどうでもいい。
0193デフォルトの名無しさん
2008/05/17(土) 11:23:53それとも親(JPanel)にボタンを描画させたいの?
0194デフォルトの名無しさん
2008/05/17(土) 11:54:22俺は、後でプロファイルを取ってListの実装を最適化する予定の時、よくそう書いておく
0195デフォルトの名無しさん
2008/05/17(土) 12:03:04JPanelに描画させたいっす。
コンストラクタでやってるように
なのになぜか裏にいってしまうんだああああ!なぜだあああ!
0196デフォルトの名無しさん
2008/05/17(土) 12:31:26dbImageを描画した後にrepaintして親を再描画させる
適当に考えてみたので見当違いだったらごめん
0197186
2008/05/17(土) 12:44:26パネル上に描画処理をほどこすと、かぶるものなのでしょうか
ダブルバッファ処理をしないでpaintComponentを使った描画はかさならず描画されました
ダブルバッファ処理は別スレッド処理なのでイベントディスパッチスレッドで
処理させているのですが、そこらへんがおかしいのでしょうか
うむうむ・・・・
0198デフォルトの名無しさん
2008/05/17(土) 12:47:160199186
2008/05/17(土) 13:07:34描画する領域と、描画する前のサブ領域でダブルバッファリングでは?
参考サイトにはそうかいてあった
0200デフォルトの名無しさん
2008/05/17(土) 14:17:28その参考サイトが間違ってるだけじゃね?
例えば、そのプログラムだと gameRender() と paintScreen() を
マルチスレッドで並列動作させたらチラつくでしょ。
チラつかないようにgameRender() が使う描画用の領域と、
paintScreen() が使う、既に描画完了してる表示用の領域と
二つ持つのがダブルバッファリング。
paintScreen() 相当の処理が十分速ければダブルでいいけど、
遅い場合はトリプルバッファリングが必要になったりする。
まぁ、いまどきは Window#createBufferStrategy() 使えば済む話だから
自前でダブルバッファリングする必要はあんましないはず。
0201デフォルトの名無しさん
2008/05/17(土) 14:25:11つまり、左右方向キーは入力を受け付けて上下方向キーは無視、のような
ただJtextAreaに直接KeyEentリスナーを加えてもダメみたいだたし
何かいい方法があればご教示下さい
0202201
2008/05/17(土) 14:26:47左右キーでカーソルを左右に移動、上下キーでは何も処理をいない、
というテキストアリアを実現したいと考えています
0203デフォルトの名無しさん
2008/05/17(土) 14:34:45その上から塗りつぶしたら見えなくなるよ
0204デフォルトの名無しさん
2008/05/17(土) 14:41:26何が真っ先に呼ばれるんだろう
protected void processKeyEvent(KeyEvent e)かな・・・自信ない
上手くいったら報告プリーズ
0205186
2008/05/17(土) 14:49:13ありがとうございます。
とすると、上のコードではどうなるのでしょうか
私も考えているのですがいまいち・・知識がたらず・・すみません
0206デフォルトの名無しさん
2008/05/17(土) 14:53:08Exception in thread "main" java.lang.UnsupportedClassVersionError: mix/ide/MixID
E (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
0207206
2008/05/17(土) 14:57:03javaのプログラムをコンパイルしたいのですが・・・
http://mixide.sourceforge.net/
mixideというプログラムです
jar形式で配布されてるので、それをcmdで実行すると
C:\MixIDE-1.4rc6>java -jar MixIDE.jar
Exception in thread "main" java.lang.UnsupportedClassVersionError: mix/ide/MixID
E (Unsupported major.minor version 50.0)
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
となってしまいます・・・アドバイスください
0208デフォルトの名無しさん
2008/05/17(土) 14:59:46dbImage = createImage(WIDTH,HEIGHT);
以降で自身にaddされたコンポーネントを自分で描画する
0209デフォルトの名無しさん
2008/05/17(土) 15:07:57Keymap 使って、VK_UP や VK_DOWN に何もしない Action を結び付けてみるとか。
TextAction noaction = new TextAction("noaction") { public void actionPerformed(ActionEvent e){} };
textarea.getKeymap().addActionForKeyStroke(KeyStroke.getKeyStroke(KeyEvent.VK_UP, 0), noaction);
0210デフォルトの名無しさん
2008/05/17(土) 15:08:49本当ありがとう、processKeyEventメソッドを
オーバライドしてやったら上手くいったよ
昨日1日奮闘してダメだったことを30分で解決してくれるとは、、
もっと精進せねば
0212186
2008/05/17(土) 15:41:54なるほどなるほど。
画面に描画するときに一緒に描画するんですね
ボタンのようなコンポーネントの描画に関してちょっと知識不足です
ぱねるにaddすればはりつけられることはわかっているのですが
一緒に描画というところがまだわかりません
自分で調べてみますが、よろしかったらご教授お願いします!
0213180
2008/05/17(土) 15:50:16質問に答えていただいてありがとうございます。
0214デフォルトの名無しさん
2008/05/17(土) 16:13:01コンパイルエラーがでるんですが、なぜでしょうか??
returnでbooleanを返してるんですが???
tryの外からbooleanを返すとうまくいくのですが、何故なのか理由がよくわかりません。
public boolean DBDelete(int formVal[]) {
try {
Connection con = getConnection();
Statement smt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
ResultSet rs = smt.executeQuery("SELECT * from kyuuyo WHERE 社員番号="+formVal[1]);
if (rs.next()) {
if (rs.getInt("社員番号")==formVal[1]) {
rs.deleteRow();
return true;
} else {
System.out.println("該当する社員番号がありません");
return false;
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
0215デフォルトの名無しさん
2008/05/17(土) 16:21:52全てのケースにおいて return するか例外投げるかしないとダメ。
具体的には rs.next() が true にならないケースと、
catch(Exception e) で例外捕捉したケースが漏れてる。
booleanの結果を戻すか、例外投げる必要がある。
0216デフォルトの名無しさん
2008/05/17(土) 16:31:00SQLインジェクション
0217デフォルトの名無しさん
2008/05/17(土) 16:41:21KeyStroke a = KeyStroke.getKeyStroke("ctrl A");
for (InputMap im = t.getInputMap(); im != null; im = im.getParent()) {
im.remove(a);
}
とか。
0219デフォルトの名無しさん
2008/05/17(土) 17:05:30それはそれでマズイ
0220デフォルトの名無しさん
2008/05/17(土) 17:07:28if (rs.next()) {
}
//ここじゃね?
0222デフォルトの名無しさん
2008/05/17(土) 18:00:520223デフォルトの名無しさん
2008/05/17(土) 18:08:45List list = new ArrayList();
は、List としての機能が必要だが、インスタンスを生成するには具象クラスが必要なので
とりあえずArrayList を使ったということ。
すなわち、それ以降は単に List の機能が必要なだけという、
プログラムの書き手から読み手への強い意思表示が含まれている。
これを、半端な知識のマと言ってしまうと、書き手は哀れw
0224デフォルトの名無しさん
2008/05/17(土) 18:44:13無駄に短いスコープで抽象化するのは俺も反対だな
そもそもListに関して言えば、何も考えずにgetListとか作る方が問題となるわけで。
0225186
2008/05/17(土) 19:10:01gameRenderの
dbImage = createImage(WIDTH,HEIGHT);
以降で自身にaddされたコンポーネントを自分で描画する
とアドバイスをいただいたのですが、まだ理解できずボタンが隠れてしまします
gameRender内でaddで追加してもだめでした。
どなたかご教授お願いします
0226デフォルトの名無しさん
2008/05/17(土) 19:20:40「お、ここ、List で十分じゃん」と書き換えるのは抽象化って感じだけど、
List でロジック組んでみたけど、その List のインスタンスも生成しなくちゃならない
というような場合は、むしろ具象化って呼ぶのが適当じゃね?
(そもそも、はなっから List でなく ArrayList で考えるような場合がどれだけあるのだろうか)
そのような場合、生成部分は仕方ないけどそれ以外を
わざわざ List から ArrayList へ置き換えてやる必要があるのかどうか。
いくらスコープが狭くても面倒だし
0227デフォルトの名無しさん
2008/05/17(土) 19:21:18どこか落とせるところ無いですか?
0228227
2008/05/17(土) 19:36:020229デフォルトの名無しさん
2008/05/17(土) 19:43:140230186
2008/05/17(土) 19:47:52できました!
感激です!
スキです!
0231デフォルトの名無しさん
2008/05/17(土) 20:01:14これをコンパイルしようとすると終盤でFigureTypeが見つけられないとでてしまいます
どこを修正・追加すればコンパイル可能になるでしょうか?
0232デフォルトの名無しさん
2008/05/17(土) 20:06:42むしろ最初からListではなくArrayListで考えれば充分で、Listとして考える必要もないような気がする。
>生成部分は仕方ないけどそれ以外をわざわざ List から ArrayList へ置き換えてやる
宣言と初期化は普通は同時に行うわけで、書き換える必要もないと思うけど?
0233186
2008/05/17(土) 20:13:31ボタン表示ができたのですが、ボタンとしての機能がなくなっていました!
コンストラクタでボタンをADDで貼り付けて、別スレッドでpaintで描画した結果、
addで貼り付けたボタンは結局うしろにいって、paintで描画したボタン(ボタンとしての機能なし)
が画面はじにでるだけでした!
こういうものなのでしょうか?
0234デフォルトの名無しさん
2008/05/17(土) 20:57:46クリックしたイベントが伝達されてないだけだと思う。
設計が悪い。
0235デフォルトの名無しさん
2008/05/17(土) 21:01:08バッファイメージを自分で作るってのはそういう事だよ。
ゲームなんだよね?
JButton使わずにパネル上のマウス位置とマウスイベントを拾ってボタンは画像にしたらどうだろう。
0236デフォルトの名無しさん
2008/05/17(土) 21:05:05それは順序が逆だ。使う側が必要とするのは本来はListという概念を実現している何かであって、その実現手段は知ったこっちゃない。
しかし、Listの実体を生成するためには、具体的なモノを明示的に指定する必要があって、諸々の取捨選択の結果としてArrayListを用いることになるわけだ。
だから、ListでなくArrayListを型として用いるということは、利用側が必要としているのは「Listを実現した何か」ではなく「ArrayListという実装」である、という意志の表明になる。
0237デフォルトの名無しさん
2008/05/17(土) 21:06:41まあ、どうでもいいんだけど
例えば、本来、ローカル変数で十分なところに(ループのイテレータとか)フィールドを割り当ててて、
「できることが多いからいいじゃないか」
「クラスの外からは隠蔽されているからいいじゃないか」
「最初からフィールド変数で考えれば十分じゃないか」
と言われるくらい気持ち悪い(※)
ましてや、これを、
「イテレータにフィールド変数を使わないのは、半端な知識がマが書いた云々」
とか非難され始めたら、ちょっと一言いいたくなる。
(※)それぞれ、以下から脳内変換
「ArrayList は List よりメソッドが多いからいいじゃないか」
「外向けのメソッドをつくる場合に、List にすればいいじゃないか」
「最初から ArrayList で考えれば十分じゃないか」
>>生成部分は仕方ないけどそれ以外をわざわざ List から ArrayList へ置き換えてやる
>宣言と初期化は普通は同時に行うわけで、書き換える必要もないと思うけど?
考えてみれば、仮引数とかに使うとかしなければ、そうそう必要ないねぇ。
でも、まあ、人間の頭の中では List を操作しているつもりなのに、
プログラムの中では操作している変数は ArrayList である
という剥離は気持ち悪い。プログラムは、人間が読むためのドキュメントであるべきなのだから。
0238デフォルトの名無しさん
2008/05/17(土) 21:45:36その理論でいくならば、すべてのクラスにおいて具体的なモノとインターフェイスは別々に考えなければならないともとれる。
現実ではListとして考える≒ArrayList、諸所の取捨選択なんてほとんどない。
メソッド内とかクラス内で閉じるものに対して、「使う側」を意識するんか?
実体をつくるのも使うのも自分だろ。
そりゃ外部とのインターフェイスとしてはListが望ましいけどね。
0239デフォルトの名無しさん
2008/05/17(土) 22:24:21Listでも構わんし、ArrayListでも気持ち悪くもない。
>232も必要がないとしか言ってないわけでどっちでもいい的立場なんじゃね?
0240デフォルトの名無しさん
2008/05/17(土) 22:26:57> その理論でいくならば、すべてのクラスにおいて具体的なモノとインターフェイスは別々に考えなければならないともとれる。
ある意味yes. 実装レベルでclassとinterfaceに分離するか否かは、モノの性質、作業工数、管理工数などを考慮して決めるけど。
あと、「使う側」って言うのは「List/ArrayListを使用しているコード」のこと。
それから、「表明」する主語は「コードを書いた人」で、「表明」している先は「そのコードを読むモノ(人だけじゃなくコンパイラも含む)」のこと。
つまり、List でなく ArrayList と書いたなら、そのソースコードを書いた人はそれを読むモノに対して、「ここでは (List ではなく) ArrayList である必要があるのだ」と主張しているのに等しい。
0241177
2008/05/17(土) 22:46:21確かに詳細にいくだけならプライマリキーを渡せばいいのですが、
詳細からまた一覧に戻ってくる際に同じ条件で検索する必要があるので一覧画面が受け取ったパラメータをまるまる渡してやらなければいかんのです…
ユーザインターフェスはformとボタンを使用する事を考えています。
コードとしては
<table>
<% while(ResultSet.next()){ %>
<tr><td>-----テーブル内容-----</td><td><form action="URL" method="POST"><--hiddonいっぱいとsubmit--></form></tr>
<% } %>
というのが思いついてはいるのですが、それだと生成されるレコードごとにhiddonがたくさん書き込まれてしまうなぁと思いまして…bottunタグにパラメータを埋め込めたら便利なんだけどなぁと思っているのですが…
0242177
2008/05/17(土) 22:47:300243デフォルトの名無しさん
2008/05/17(土) 22:54:05行ごとにformを作るな、ページに1つでいいだろ
どこまでも検索条件を持ちまわすのか?
検索条件が増えたとき困らないか?
なんでもセッションに値を突っ込むのは奨励されないが、2画面以上遷移して値を保持しなければならない場合、セッションに積んだ方がいい。
0244デフォルトの名無しさん
2008/05/17(土) 23:04:57axis2は今動かして(クライアントだけだけど)とりあえず動いた。
JAX-WSはJDK落とすのがかったるいのでまだ試してないw
ttp://homepage2.nifty.com/igat/igapyon/diary/2008/ig080116.html
の「いろいろ問題」ってーのは具体的にどのあたりなんでしょ?
0245デフォルトの名無しさん
2008/05/17(土) 23:09:08Map と Hashmap では、体感しやすい経験があった。
最初のソース:
マスタ取得部品みたいなクラスがあって、
Hashmap map = new Hashmap();
で定義されていて、この map オブジェクトを外部からさわれるようになっている。
当然、呼び側からは Hashmap 型でアクセスしていた。
後日、Map の一覧をソートされた状態で表示する必要が発生し、Treemap に変えたくなった。
けれども呼び側では、すべて Hashmap にしているため、呼び側を、結局 Map で
取得するよう、すべて書き換えた。
部品側は、Map map = new Treemap();
にしておしまい。
こういうことがあると、呼び出し側ではインターフェースで取得すべきと思うようになった。
List においても、後日データ量が増えた、チューニングの問題で、ArrayList から LinkedList に変えたくなった
ときに、呼び出し側は List にしておけば、部品側だけの修正ですむと思うのだけど。
0246デフォルトの名無しさん
2008/05/17(土) 23:09:29ま、現状だと資料とか実装例とか豊富なaxis2でいいと思う。
チャレンジャーならばJAX-WS使ってみれば?
0247デフォルトの名無しさん
2008/05/17(土) 23:12:59問題は「当然、呼び側からは HashMap 型でアクセスしていた」ところ
0248244
2008/05/17(土) 23:19:44おお、もうお返事がw
了解、さしあたりaxis2でもう少し掘り下げてみる。
いや、axis(1)のような、Wikipediaにまで載ってる明らかなダメがあるのかと思ってねw
>JAX-WS
ttp://ja.wikipedia.org/wiki/Apache_Axis
0249245
2008/05/17(土) 23:20:49その部品は、以下のようなメソッドが外部向けに定義されていた。
public Hashmap getMasterMap() { }
たしかにこのままでも、呼び側は Map map = HogeUtil.getMasterMap();
すればよかったんだけど、Javadoc に返却値の型が Hashmap と書かれていたので、
みんな Hashmap 型で取得していたよ。
0250デフォルトの名無しさん
2008/05/17(土) 23:25:23× public HashMap getMasterMap() { }
○ public Map getMasterMap() { }
あとHashMapだよ、Hashmapはないわ
0251デフォルトの名無しさん
2008/05/17(土) 23:27:28xfire ( http://xfire.codehaus.org/ )
あるいは、後継の
CXF ( http://cxf.apache.org/ )
はどうだい?
xfire は使ってたけど、POJO を WebService 化するのがすごく楽だった。
(コード修正なし、xml 書くだけ)
まぁいまどきのデファクトという意味では、Axis2 でしょう。
0252デフォルトの名無しさん
2008/05/17(土) 23:37:28ページに一つでformにしたいんですが、複数のSubmitを作ったら全部のHiddenを渡してしまうのが…というのが悩みでして。
submitを押したときに特定のパラメータを渡す動作をsubmitの中に書ければいいのですが…
検索条件は検索結果と詳細の間だけで持ちまわす物です。
0253デフォルトの名無しさん
2008/05/17(土) 23:42:340254170
2008/05/17(土) 23:49:21レスどうもありがとうございます。
より詳しく理解できました(とくに >>175 の前半)
いま、マルチスレッドとパフォーマンスについて勉強していて、
(Map のほうが今の仕事に必要なのですが、>>170 は、わかりやすくするために List で質問しました)
Hashtable - Hashmap - ConcurentHashMap
にたどりつきました。
CopyOnWriteArrayList も、同じ java.util.concurrent パッケージですが、
copyOnWriteArrayList の javadoc をみると、ArrayList のスレッドセーフなもの、とあります。
なんで CopyOn・・・なのかわからない。
CopyOnWriteArrayList は、変更時にコピーを作るとあるが、ふつうの ArrayList は、
そうじゃないときにもコピーを作るということ?
また、なぜ「変更時にコピーを作る」がスレッドセーフに寄与するのか?
0255デフォルトの名無しさん
2008/05/17(土) 23:51:140256デフォルトの名無しさん
2008/05/17(土) 23:51:46JavaScript使って問題ないなら、
・必要なパラメータはhiddenで1組分だけ用意する。
・submitボタンは使わない。
・onClickハンドラで、hiddenのパラメータを書き換えてsubmit。
0257デフォルトの名無しさん
2008/05/17(土) 23:52:160258デフォルトの名無しさん
2008/05/17(土) 23:58:34なるほど、
<Button onClick="">をwhileの中に入れて、JavaScriptの関数の中でhiddenを書き換えて渡せばいいということですね。
関数の引数で書き換えるデータは渡せそうだし、あとはhiddenの書き換えをどう実現するかですね。もしくは関数の中でパラメータを渡す処理をしても同じ動作いけそうです。
この路線で調べながらやってみます。ありがとうございました。
0259デフォルトの名無しさん
2008/05/18(日) 00:07:00普通のArrayListは、サイズがキャパシティよりも増えるときにしかコピーはしない。
同じ配列を操作するので、複数のスレッドから同時にアクセスすると危険。
CopyOnWriteArrayListは、いかなる変更操作を行うときも元の配列のコピーを作ってそっちを操作し、最後に参照先を指し替える。
元の配列は決していじらずに捨て置くので、iteratorは変更操作に影響されず古いものを参照し続けることができるし、getなどの取得操作も影響を受けない。
変更操作同士は衝突することになるが、参照先の指し替えをAtomicReference#compareAndSetで実行し、失敗したら最初から(コピーを作るところから)やり直す、という方法でスレッドセーフを実現している。
0260デフォルトの名無しさん
2008/05/18(日) 00:14:05てか、その辺のクラスでスレッドセーフを保証するよりも、Mapを持つクラスを作ってそのクラスが同期制御を管理する方が良い。
どんだけ排他制御が利いたMapにしたところで、Mapの参照を公開してしまうと一気に制御が難しくなる。
逆にHashMapでもあるクラスから外に参照を渡さず、HashMapにアクセスする公開メソッドの同期とれば良い。
並行処理の話ならば新APIの件もあるから、Java並行処理プログラミングって本を読むと良いよ。
0261デフォルトの名無しさん
2008/05/18(日) 00:48:55会社のPCだと「↑」キーで今まで入力したコマンドやファイル名を20個ぐらい出せるのに、家のPCだと会社と同じWin98SEなのにできない
「→」キーを押したら直前の入力だけなぞれるけど不便過ぎて困ってる
0262170
2008/05/18(日) 00:51:41>>259 なるほど、 CopyOnWriteArrayList の仕組みとメリットが理解できました。
ということは、あるスレッド(A)が CopyOnWriteArrayList#iterator で
iteratorを取得し、それをずーっと保持するとしたら、別スレッド(B)が add() しても、
スレッド(A)が保持する iterator の中身は、スレッド(B)が add() する前の List の内容の
参照を持っているわけですね。なんか DB の分離レベルの話みたいだな。
>>260
Map ですが、実際の現場では Map オブジェクトをそのまま外部にさらすことは無いと思いますが、
(map = null で消されたらお終いだし)
・ラップするクラスを作り、map は private にする
・ラップするクラスには、put と get のメソッドを作る
このとき、map の実装を
・Hashtable にすると、get もロックがかかるので、
・HashMap にしておき、ラッパクラスの put メソッドは、内部で synchronized (myMap) { } ブロックで囲み、
get メソッドは synchronized をつけなければ、取得時の同時並行性は確保できると思いました。
・でもこの場合、Map の実装を ConcurrentHashMap にして、put メソッドの synchronized を
はずしても同じなのでは、と考えました。
多分その先は Java並行処理プログラミング を読め、って感じだと思うので、読んでみる事にします。
新APIとは、J2SE5 で導入された、java.util.concurrent.* のことですか?
0263261
2008/05/18(日) 01:21:29下らない質問すんませんでした
0264デフォルトの名無しさん
2008/05/18(日) 01:32:46>・ラップするクラスには、put と get のメソッドを作る
putとgetだけを提供する場合、
>if ( list.contains(x) == false ) list.add(x);
のような問題は相変わらず回避できないことに注意。
まぁ用途次第かもしれないので、わかってればかまわない。
>・HashMap にしておき、ラッパクラスの put メソッドは、内部で synchronized (myMap) { } ブロックで囲み、
>get メソッドは synchronized をつけなければ、取得時の同時並行性は確保できると思いました。
それはだめ。
変更(put)中のデータを参照(get)すると不正な結果を得たり死んだりする可能性がある。
もっと不可解なことが起きる可能性もあるけど、詳細は件の本でも読んでください。
要するにgetにもsynchronizedは必要。
同期の対象がMap1個で済む状況なら、ConcurrentHashMapは便利。
2個以上のMapを同時に更新しなければならない場合とかには無力。
0265デフォルトの名無しさん
2008/05/18(日) 01:39:06やっぱり理解不足。
putもgetもsynchronized (myMap) { } にしておく、が正解。
getだからといってつけないと、痛い目にあう(ヒント:Atomic性)
>Map の実装を ConcurrentHashMap にする
正しいといえば正しい。
だけど、並行処理で品質を高めるには1箇所で必要最低限の同期を取るのがポイント。
例えばMapとなにか別の要素もあわせて同期を取りたいとする。
すると、Mapで同期をとってさらにラップクラスで同期を調整して・・・と複雑になる。
そんな場合は同期を取るクラスは1箇所にしたほうが楽。
また、全てのメソッドを同期を取る必要があるか?という点も重要。
とはいえ、そのような要素がなければ簡単に実現できるConcurrentHashMap を使うのは正しい(シンプルこそ正義)。
予断だが、外部にさらしてもmap = null では何の影響もないぞw
map.clear() 等はマズイのでオシマイには変わらないけど。
0266デフォルトの名無しさん
2008/05/18(日) 01:40:370267170
2008/05/18(日) 01:51:25レスどうもありがとうございます。
理解したつもりが理解不足といわれて&レスの内容をみて、自分のレベルの低さを実感しました。
>>264 で、put だけを synchronized にしても、
ラッパクラスで contains() も提供した場合、contains() と put は同期化されないことを理解しました。
あと、get と put の atomic 性というのも理解しました(つもりです)
>>265 さんの、ロック処理はシンプルに、というのも、以前不必要に synchronized をつけまくって
パフォーマンスを落としたことがあるので実感したことがあります。
どこを同期化して、どこは不要化、というのが大切ですね。
今回の複数の Map をスレッドセーフに更新するというのは、DB の複数テーブルを更新する際に
どこからどこまでを transaction にするか、と似ています(マルチスレッドと同期化、とは違うけど)
もっと勉強します。
0268デフォルトの名無しさん
2008/05/18(日) 02:30:55>以前不必要に synchronized をつけまくってパフォーマンスを落としたことが
Java 6 からVMの改良でsynchronized自体のパフォーマンスが上がってるので、
もしかしたら許容範囲になってるかもしれない (なってないかもしれない)。
不必要なsynchronizedを付けないに越したことはないけれど、
必要なsynchronizedを付け忘れてバグるよりはマシ、と思う。
synchronizedを外す (あるいは付けずに済まそうと企む) ときは、慎重に。
0269デフォルトの名無しさん
2008/05/18(日) 06:19:04VMの最適化で、まだ変数に入れてない値が既に他のスレッドから見えるとか、
そんな奇妙なことが起こりうる。
同期化によるパフォーマンスの劣化は、スレッド間の競合が起こる場合に著しい。
競合で生じるコンテキストスイッチのオーバヘッドは大きく
その場でオブジェクト100個作ってもお釣りが来る。
synchronized 自身は、それほど重くはない。
「Java並行処理プログラミング」は誤訳が酷いね。訳本はみんなそうなのかもしれないけど。
特に最後の happens-before の説明、なんじゃありゃ?
半順序を定義しているだけなのに、ご丁寧に余計な脳内補完をしてる。
意味の通じないロジックや日本語が書いてあったら、無視するか原本を見た方がいい。
英語ができるなら、原本を読んだ方がいいのは言うにあらず
0270デフォルトの名無しさん
2008/05/18(日) 09:43:02最後の一文が……
0271デフォルトの名無しさん
2008/05/18(日) 10:00:20非難するならお前が翻訳しろと。
0272デフォルトの名無しさん
2008/05/18(日) 11:57:09金出して買ったものが酷いもんだったら文句いう権利はある。
0273デフォルトの名無しさん
2008/05/18(日) 12:09:23もう辿り着いているかもしれないが、
スレッドセーフ性は「スレッドセーフか否か」と簡単に定義できるものじゃない。
Javaの理論と実践: スレッド・セーフの特性について
http://www.ibm.com/developerworks/jp/java/library/j-jtp09263/index.html
(ただいまメンテナンス中)
0274デフォルトの名無しさん
2008/05/18(日) 16:05:210275デフォルトの名無しさん
2008/05/18(日) 16:07:57っ JRuby
0276デフォルトの名無しさん
2008/05/18(日) 16:22:28とりあえずはなんとかなりそうです
ありがとうございました
0277デフォルトの名無しさん
2008/05/18(日) 20:32:59このプログラムでどうしても線の描写だけ始点、挙動がおかしくなります
どこを変更すれば他の図形と同様にクリックした箇所を始点、ドラッグして話した場所を終点の線の描写になるでしょうか?
0278デフォルトの名無しさん
2008/05/18(日) 20:42:25API docs をちゃんと読んでください。特に java.awt.Graphics を。
0279170
2008/05/19(月) 02:20:36レスどうもありがとうございます。
>>273 の URL とか、「Java並行処理プログラミング」を呼んで勉強します。
これまでのいただいた情報を理解するのに精一杯で、しばらくここに質問をする
ことはないと思いますが、ひとまずお礼させていただきます。
0280デフォルトの名無しさん
2008/05/19(月) 07:51:52GUIを使ったサンプルコードで、
final JLabel label=new JLabel("");
というようにlabelやTextFieldにfinalとついているものがありました。
このfinalというのはどういう意味合いでくっついているんでしょうか?
フィールドにfinalが付いている場合は「変更できない」ということですよね。
私が見たサンプルコードだとfinalのついたlabelやTextFieldは表示内容を変更したりしているので、
「変更できない」というのとは違う意味でくっついてるのかなと思ったのですが・・・
0281デフォルトの名無しさん
2008/05/19(月) 07:55:44final ついてたら単に再代入不可能なだけ。
Mutableなオブジェクトなら状態は変更できる。
0282デフォルトの名無しさん
2008/05/19(月) 08:59:30final の上書き(再代入)はコンパイルエラーになるので、コーディングミスを減らせる。
メソッド引数やローカル変数にも適用でき、上書き禁止を明示することができる。
クラスやメソッドに適用しても、上書き禁止(継承禁止)の意味になる。
メソッド内で生成したクラスからの参照を保証する為に、当該ローカル変数を final にすることも。
0283デフォルトの名無しさん
2008/05/19(月) 11:38:06クラスをfinalにするとユニットテストが書きにくくて困る。
0284デフォルトの名無しさん
2008/05/19(月) 12:55:110285デフォルトの名無しさん
2008/05/19(月) 13:11:07ループを作ると誤差がでるから1/10秒で書き換えなさいとか書いてあるけど
1/10秒はカクカクして嫌なので、誤差を出ないように1/60秒で書き換えたいのです。
それなので、そのループを教えてください。
0286280
2008/05/19(月) 13:11:24レスありがとうございます。
代入と状態の変更をごっちゃにしてしまっていたということなんですね。
すっきりしました!
どうもありがとうございました。
0287デフォルトの名無しさん
2008/05/19(月) 17:09:580288デフォルトの名無しさん
2008/05/19(月) 19:04:350289デフォルトの名無しさん
2008/05/20(火) 01:54:09コマンドプロンプト上でjavaファイルをコンパイルしようとしても
pathが通っていないらしく、処理ができません。
今設定しているpathを書かせていただきますので、
どなたかご教授下さい。お願いします。
pathです
C:\WINDOWS\system32;
C:\WINDOWS;
C:WINDOWS\System32\Wbem;
C:Program Files\pcdNavi\bin;
C:\Program Files\Common Files\Roxio Shared\DLLShared\;
C:\Program Files\Softex\OmniPass;
C:\Program Files\Fujitsu\sadata\fsaax;
C:\j2re1.4.2_17\bin
ちなみにローカルディスクCのProgram FilesのJavaの中に
jre1.6.0_05フォルダがあり、そのbinフォルダにもjava.exeが入っているのですが・・・。
これは何か関係あるのでしょうか?
0290デフォルトの名無しさん
2008/05/20(火) 02:12:10JDK=コンパイル+実行
0291デフォルトの名無しさん
2008/05/20(火) 02:39:27んむ。>>290の言うようにJDKへのパス通せ。
つかそういうJava以前のことは初心者用の本とかサイトに書いてないか?
0292デフォルトの名無しさん
2008/05/20(火) 02:42:250293デフォルトの名無しさん
2008/05/20(火) 12:35:12今、JAVAの勉強でサーバとクライアントのプログラムを作っていて(クライアントからコマンドを送り、コマンドに応じてサーバから答えを返すプログラム)、
その中でサーバーから送られた文字列をクライアント側で表示する部分がどうしてもうまくいかず、原因がわからず困っています。
下記がおおまかなコードです(はしょりまくってますが)
・サーバ側
ServerSocket ss;
Socket s;
PrintWriter out;
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
out = new PrintWriter(s.getOutputStream(),true);
for(;;){
<ここにコマンドを受け取ってそれに応じた文字列を返すコードが入ります>
(例) out.println("aaaa\nbbbb\ncccc");
}
0294デフォルトの名無しさん
2008/05/20(火) 12:35:33appleが動きませんでした
どうしたら動くのか教えてください
0295デフォルトの名無しさん
2008/05/20(火) 12:35:41・クライアント側
Socket s;
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
〜〜〜〜〜〜〜〜〜〜〜〜〜
for(;;){
<ここにコマンドを入力してサーバへ送るコードが入ります>
String message;
while((message = in.readLine()) != null){
System.out.println(message);
}
}
クライアント側の、while文がうまくいかないみたいなんです。どうもnullになったら抜けるというのがだめみたいで、
例えば送られてくる文字列を2行にしておいてwhile文の条件を2回繰り返すというようにするときちんと文字列が2行出るのですが、
それを任意の行数にしたくて「 != null 」という条件にすると全部の行を表示した後になぜかクライアントが落ちてしまうのです。
質問がわかりにくかったらごめんなさい、何かわかる方がいましたら教えていただけないでしょうか。
0296デフォルトの名無しさん
2008/05/20(火) 12:41:08落ちてしまうって何か例外でも出てるの?
それ捕まえてスタックトレース表示してみれば?
0297295
2008/05/20(火) 12:51:01コマンドプロンプトでやってるんですが、落ちるっていうか全部の行を表示した後に何も表示されなくなるんです。
適当にキーを押しても一切反応せず、でもCtl-Cで終了すると何も表示されなくなったあとに入力したキーを実行しようとした形跡がバーッと表示されるんです。
・・・すみません、わかりにくいですね。こんな感じです。
C:\>java aaa
command : bbb
>>"ccc"
>>"ddd"
ここで本来なら再度command : と出るはずなのですがそれが出ず、ここで適当に「a」とか入力しても何も起こらず、
Ctl-Cを押すと
C:\>a
'a'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。
c:\>
となるんです。
0298デフォルトの名無しさん
2008/05/20(火) 12:55:12readLineで次のデータが送られてくるのをずっと待ってるだけでは?
サーバ側でSocketをcloseするかshutdownOutputすれば通信終了(EOF)になるのでreadLineがnullを返すはず
0299デフォルトの名無しさん
2008/05/20(火) 13:02:33while ((message = in.readLine()) != null)
でループするということはストリームが閉じられるまで繰り返すとい
うことだから、このwhileを抜けるともうinから読むことはできない。
コマンド-レスポンスを繰り返したいなら、このwhileでメッセージの終
了判定はできないよ。
0300デフォルトの名無しさん
2008/05/20(火) 13:13:07appleが動きませんでした
どうしたら動くのか教えてください
0301デフォルトの名無しさん
2008/05/20(火) 13:16:14りんごが動くわけありません
りんごは手で持って動かしてください
0302デフォルトの名無しさん
2008/05/20(火) 13:16:53具体的に何をどう変更したのか書きなさい。
リンゴが動かないとは何なのか。
0303デフォルトの名無しさん
2008/05/20(火) 13:18:580304デフォルトの名無しさん
2008/05/20(火) 13:19:260305デフォルトの名無しさん
2008/05/20(火) 13:20:37appletが動きませんでした
どうしたら動くのか教えてください
0306デフォルトの名無しさん
2008/05/20(火) 13:27:07アプリとアプレットは別物なので、mainをinitに変えただけで動くわけはない
アプレットとして動くように作られていないのなら、アプレットとして動くように最初から作り直す必要があるかもしれない
0307デフォルトの名無しさん
2008/05/20(火) 13:29:04アプレットをアプリケーションとして動作させたいってことなら
initはあくまでも初期化処理のみ
メインの動作はstartで行うようにオーバーライドされていることが多いので
インスタンスの生成→コンテナに追加→initによる初期化→コンテナの可視化→startで開始
の順で行う
0308デフォルトの名無しさん
2008/05/20(火) 13:32:50mainをinitに名前を変えてアプレットとして動作させようとしているのか
無茶な
0309デフォルトの名無しさん
2008/05/20(火) 16:05:000310デフォルトの名無しさん
2008/05/20(火) 18:24:380311デフォルトの名無しさん
2008/05/20(火) 19:29:22# An unexpected error has been detected by Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x77fcd989, pid=1392, tid=2524
#
# Java VM: Java HotSpot(TM) Client VM (1.6.0-b105 mixed mode)
# Problematic frame:
# C [ntdll.dll+0x4d989]
#
# If you would like to submit a bug report, please visit:
# http://java.sun.com/webapps/bugreport/crash.jsp
#
何これ
0312デフォルトの名無しさん
2008/05/20(火) 19:31:300313デフォルトの名無しさん
2008/05/20(火) 19:38:450314デフォルトの名無しさん
2008/05/20(火) 20:01:410315デフォルトの名無しさん
2008/05/20(火) 20:49:29Windowsアプリで言うリソースみたいなかたちで埋め込むにはどうしたらいいの?
0316デフォルトの名無しさん
2008/05/20(火) 20:59:03リソースファイルで埋め込めばいいよ
0317デフォルトの名無しさん
2008/05/20(火) 22:26:46>質問お願いします。
いや、質問してるのは君だから。
「回答お願いします」か「質問させて下さい」だろ。
0318デフォルトの名無しさん
2008/05/20(火) 22:58:43try{
HashMap<String , String> hashMap = new HashMap<String , String>();
putData(hashMap);
System.out.println("HashMap(bb) : " + hashMap.get("bb"));
System.out.println("HashMap : " + hashMap);
}
catch(Exception e){
e.printStackTrace();
}
static void putData(Map<String , String>map){
map.put("da" , "Five");
map.put("db" , "Four");
map.put("bb" , "Three");
map.put("bc" , "Two");
map.put("aa" , "One");
}
}
これの実行結果が
HashMap(bb) :Three
HashMap :{db=Four, da=Five, aa=One, bb=Three,bc=Two}
こんな感じになるんですが、これと同じように出力されるプログラムをHashSetで書くことはできますか?
もちろん、HashMapなので出力した際の順序まで一緒には出来ないのはいいんdねすが
0319デフォルトの名無しさん
2008/05/20(火) 23:12:25DataEntry(String, String) というコンストラクタを持つクラスでも作って頑張ってください。
0320デフォルトの名無しさん
2008/05/21(水) 02:07:020321デフォルトの名無しさん
2008/05/21(水) 07:09:50Java未経験ながらいきなり画面の追加をやらされることになりました。
(Webサーバ:SunOneでアプリサーバ:WebOTX、DB:Oracleです)
Javaは過去に勉強したこともありJavaDocなど使えば、何とかソースは読めるのですが、
ソースを格納するディレクトリの構成がイマイチよくわかりません。
なぜこのファイルはここのディレクトリに入れるのか?
とか、
このディレクトリに入れなければならないってのはどこで定義づけられているの?
というようなことです。
ソースの読み方のような入門書じゃなくて、
Webサーバのディレクトリ構成などJavaでのサーバ構築についての
書籍やアドバイスがあれば教えていただきたく。
「UNIXでJava使ってサーバ立てるならこれは基本書だろ!」
というようなものがあれば、ぜひ読んでみたいのですが。
0322デフォルトの名無しさん
2008/05/21(水) 07:34:32仕様書嫁よ。
0323デフォルトの名無しさん
2008/05/21(水) 09:51:11いままでの開発をどうやってたのか知らないけど、
最近のIDEとかだと配備までやってくれるよ
0324デフォルトの名無しさん
2008/05/21(水) 09:56:550325デフォルトの名無しさん
2008/05/21(水) 14:15:58……いえ、以下のようなコードを書いてみたんですが、「a:\backup\」がtrueになるんですよ。
public boolean check(String fileName){
File tempFile = new File(fileName);
try{
tempFile.createNewFile();
if(tempFile.exists() == false || tempFile.isFile() == false){
return false;
}
tempFile.delete();
return true;
}catch (IOException e){
return false;
}
}
EclipseのデバッガでcreateNewFileまでで止めてみると、tempFileの中身は「a:\backup」として表示されています。
どうやら最後のパス区切りは無視されてるようなふいんき(……素でtypoした(汗))です。
これは「文字列の最後の一文字がパス区切りではないこと」で判定するしかないのかな?
0326デフォルトの名無しさん
2008/05/21(水) 15:22:28イミフ。ファイル名の事?
OS依存。
それとも任意のファイル名でファイルが作成できるかって事?
OS依存。
0327デフォルトの名無しさん
2008/05/21(水) 16:49:11javadoc で createNewFile を確認しましたか?(特に戻り値を)
File は単純ではないクラスですし、扱い方自体を確認した方が良いと思います。
WindowsXPでもマルチコアに対応したプログラムになってくれるんですか?
0329デフォルトの名無しさん
2008/05/21(水) 18:50:290330325
2008/05/21(水) 20:25:07失礼しました。つまり「a:\backup\」と指定されたら「backup\なんて名前のファイルは作れない。\はファイル名には使えないし、ディレクトリ名じゃなくファイル名を指定しろ」というチェックをしたかったのですよ。
>>325のコードにすれば、ファイル名に使える文字だけが含まれているかと「実際に書き込めるか」が一緒にチェックできると思ったのですが。
最後の「\」を無視して「a:\backup」と「a:\backup\」を等価に扱ってしまうのは、Javaの(WindowsのOS依存の部分の)仕様なのでしょうか?
>>327
はい、trueなら作成成功、falseが帰ってきたら既に存在する、ということですよね?
既に存在する場合の処理はもう少し詰める必要があると思いますが(canWriteを使えばいいかな?)、まずはファイル名の問題をお聞きしようと思い、あのようなコードにした次第です。
ステップ実行をさせると(>>325で書いたとおり)createNewFileの後にa:\backupが作られてしまっているのです。
これは(デバッガの表示どおり) new Fileした時点で最後の「\」を無視して「a:\backup」としてFileのインスタンスが作られてしまっている、ということではないのでしょうか?
ちなみに、他の不正な文字(backup*など)を指定すると、意図したとおりにIOExceptionで落ちるようです。
0331325
2008/05/21(水) 20:31:51書き込んだ直後に気が付いたのですが、Fileの仕組みだと、「a:\backup」と「a:\backup\」を等価に扱ってもかまわないのですね。
Fileが扱うのはあくまでパスであり、(まだ存在しない場合)そのパスがディレクトリを示すのかファイルを示すのかは、mkDirするかcreateFileするかによって(後で)分かれる。
よって両者は区別する必要は無いので、「a:\backup」と「a:\backup\」は等価に扱ってよい、という理解でかまわないでしょうか?
0332デフォルトの名無しさん
2008/05/21(水) 22:20:02ちゃんとスレッドを使えばそうなる
0333デフォルトの名無しさん
2008/05/21(水) 22:24:120334デフォルトの名無しさん
2008/05/21(水) 22:49:35JScrollPane を使って、エクセルのように動的にサイズを変えるようにしたいんですけど
どうしたらいいでしょう?
JScrollPane のスクロールバーが端の状態で左右のボタンを押したら
自動でサイズが拡張する感じです。
JScrollPane つかうと無理なんでしょうか?
0335334
2008/05/21(水) 23:10:21でも、JScrollBar のノブが端にあるときにボタンを押しても
AdjustmentEvent は投げないみたいなんで、だめそうですね・・・
0336デフォルトの名無しさん
2008/05/21(水) 23:26:21なる。
0337デフォルトの名無しさん
2008/05/22(木) 01:16:05クラスとかフィールドとかメソッドにつけたアノテーションは
リフレクション使って取り出すのはわかったのですが
ローカル変数につけたアノテーションの取得方法がわかりません
ご存知の方お教えください、お願いします
0338デフォルトの名無しさん
2008/05/22(木) 01:34:190339デフォルトの名無しさん
2008/05/22(木) 01:51:31PHPみたいにmysql_num_rows()みたいなメソッドはありますか?
javadocのjava.sql.*の項を参照したのですが見つからなかったので。
0340デフォルトの名無しさん
2008/05/22(木) 01:54:400341339
2008/05/22(木) 02:01:19javaでってことに考え過ぎてそっちの方をすっかり考えてませんでした
試してみます。ありがとうございました。
0343デフォルトの名無しさん
2008/05/22(木) 08:41:01ttp://mainichi.jp/enta/geinou/graph/200805/21/?inb=yt
ネット証券会社が主催するFX(外国為替証拠金)取引コンテストの発表会が21日、都内で行われた。
コンテストに特別参加するグラビアアイドルの滝沢乃南さん、山本彩乃さん、折原みかさん、山口愛実さん、佐々木梨絵さん
の5人が顔をそろえ、シストレに挑戦する意気込みなどを語った。
同コンテストは、自分で作成したトレードソフトの機能を評価する「シストレソフト部門」と、
FX初心者でも安心の仮想マネーを使った取引を体験できる「トレード部門」で賞金総額2000万円を争う。
シストレ優秀ソフトは、最高2000万円までの範囲内で買い取りの可能性もあるという。登録受付は22日から。
仮想取引は6月2日〜09年4月30日までとなっている。
▼トレード部門
初期資産500万円で、デモ取引のトレード収益を競っていただきます。
https://www.click-sec.com/corp/guide/demo/
ttp://www.yomiuri.co.jp/komachi/news/mixnews/20080521ok02.htm
▼賞金総額
■社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
0344デフォルトの名無しさん
2008/05/22(木) 14:52:37Vectorにうpしようか迷ってる。まんどくさいんだけど、うぷしたらダウソする人いるかな?
0345デフォルトの名無しさん
2008/05/22(木) 15:01:250346デフォルトの名無しさん
2008/05/22(木) 16:34:460347デフォルトの名無しさん
2008/05/22(木) 16:53:15設定しなくていいし
0348デフォルトの名無しさん
2008/05/22(木) 20:48:59<%@ page import="java.lang.Object.*" %>
下記を書いたのですが、下のようなエラーになってしまいます。
DecimalFormat form = new DecimalFormat();
form.applyPattern("#,###");
int i1 = 20000;
out.println(form.format(i1));
DecimalFormat cannot be resolved to a type
どなたか解決策を教えていただけないでしょうか。
もしかしてインポートするクラスが間違ってたりするのでしょうか?
0349デフォルトの名無しさん
2008/05/22(木) 20:51:330350デフォルトの名無しさん
2008/05/22(木) 22:34:10お勧めがあれば教えてください。
自分がググって見つけたこと
・Eclipse プロファイラプラグインは、開発が止まっていて Eclipse 3.3 に対応していないと聞いた。
・Eclipse TPTP のプロファイラは、重すぎてうんこ というのを ぐぐると見かける。
・NetBeans 6.1 のプロファイラがいいらしい。
IDE 統合型でない場合は、HPjmeter があるが(これはつかったことがある)、
これくらいでしょうか。
0351デフォルトの名無しさん
2008/05/23(金) 00:16:20何か簡単な方法はないでしょうか?
0352デフォルトの名無しさん
2008/05/23(金) 00:52:360353デフォルトの名無しさん
2008/05/23(金) 00:54:32何個もあるのでツールとか使って1回でさくっとできる方法でお願いします。
0354デフォルトの名無しさん
2008/05/23(金) 02:52:050355デフォルトの名無しさん
2008/05/23(金) 03:24:50何も書かないこと。Eclipse3.3.2 は確認。
どうしてもコメントを書きたいなら、javadocに察知されないように気をつけて。
そういうことではない?
0356デフォルトの名無しさん
2008/05/23(金) 11:02:47今度はiアプリで20桁以上の整数の計算をしたいのですがどういう風にすればいいでしょうか?
ググってみるとDoJaではBigIntegerが使えないという記述を見つけたので相談しました。
よろしくお願いします。
0357デフォルトの名無しさん
2008/05/23(金) 11:52:020358デフォルトの名無しさん
2008/05/23(金) 13:02:17BigIntegerのソースそのまま使うとかw
0359デフォルトの名無しさん
2008/05/23(金) 13:05:330360デフォルトの名無しさん
2008/05/23(金) 14:58:290361デフォルトの名無しさん
2008/05/23(金) 15:22:37パッケージ改変したり部分的にパクった場合はクラスパス例外適用されんだろ。
0362デフォルトの名無しさん
2008/05/23(金) 16:24:29なんで
int i=2;
String k;
String l;
k="a8";
l="a" + i;
とすると、なんで、k!=lになるんでしょう。
0363デフォルトの名無しさん
2008/05/23(金) 16:25:32int i=2;
String k;
String l;
k="a2";
l="a" + i;
こちらです。
よろしくお願いいたします。
0364デフォルトの名無しさん
2008/05/23(金) 16:25:59int i=2;
String k;
String l;
k="a2";
l="a" + i;
こちらです。
よろしくお願いいたします。
0365デフォルトの名無しさん
2008/05/23(金) 16:28:14k.equals( l ) → true
k == l →false
0366デフォルトの名無しさん
2008/05/23(金) 16:29:31>>1
0367デフォルトの名無しさん
2008/05/23(金) 16:29:392=3なら気持ちが分からんでもないけど・・・
String str1 = "aaa1";
String str2 = "aaa" + 1;
String str3 = "aaa" + String.valueOf(1);
if (str1==str2){System.out.println("str1=str2");}
if (str1==str3){System.out.println("str1=str3");}
if (str3==str2){System.out.println("str3=str2");}
0368デフォルトの名無しさん
2008/05/23(金) 16:34:182次配列に値を入れたいのですが、
例えば・・・
int a[][] = new int[10][10];
a[][] ={ {1,1,0,1,1,1,1,2,1,1},
{1,3,1,1,1,4,1,1,1,1},
{7,1,1,5,1,1,1,6,1,1},
・
・
・
{ } };
こんな感じで
要素の殆ど同じ数が占めている
データを2次配列に入れたいんです。
どうやったら綺麗に力技じゃなく入力できますか?
0369デフォルトの名無しさん
2008/05/23(金) 16:36:000370デフォルトの名無しさん
2008/05/23(金) 16:36:42ありがとうございます。
勉強したが、やはり、>>367が理解できん。
リテラル値をそのまんま突っ込んでいるから実体に反映されてるんかなぁ。
0371デフォルトの名無しさん
2008/05/23(金) 16:37:07javac様はコンパイル中に「"aaa" + 1」を見て「両方とも定数だからい
ま1つの文字列にしちゃおう」と考える。「"aaa" + String.valueOf(1)」
は「なんか関数呼び出しがあるからコンパイル時にはどうしようもない
よね」と考える。
0372デフォルトの名無しさん
2008/05/23(金) 16:38:34定数式とかString#intern()でぐぐれ。
0373デフォルトの名無しさん
2008/05/23(金) 16:43:06定数としてコンパイル可能な String のうち、同値になるものが同じインスタンスとされてるだけ。
>363 の例なら、int i=2 を final int i=2 とすれば、k==l は true となる。
0374デフォルトの名無しさん
2008/05/23(金) 16:48:42隣接行列を2次配列にしたいんですけど
ノード数が100個以上あって、
エッジが繋がっている部分に重みがあって
エッジが繋がっていない部分を無限大の重みを付けたいんです。
規則性はあんまりないです。
ちなみに駅間の最短距離を求めるプログラムで利用したいんです。
データは隣駅までの距離です。
0375デフォルトの名無しさん
2008/05/23(金) 16:50:02何をもって綺麗とか力技とかと評価するのか知らないが、
ほとんどを占めている数を配列全体に(Arrays.fillとかで)入れておいて、
配列内の位置とその値のペアで(配列やコレクションで)持っておいたものを代入するとか。
0376デフォルトの名無しさん
2008/05/23(金) 16:51:44java.util.Arrays.fill
>374
規則性が無いものを "計算機" で処理しよう、とな。
そこに妙な説明が書けるんだから、その通り実装すれば良いでしょう。
0377デフォルトの名無しさん
2008/05/23(金) 16:55:35隣接行列はそういうスパースなグラフでは表現時にメモリの無駄が多いので、
他の表現方法で接続データを持っておいて(隣接リストとか)、
それをプログラム内で隣接行列に展開するようにするとか。
0378デフォルトの名無しさん
2008/05/23(金) 17:08:260379デフォルトの名無しさん
2008/05/23(金) 17:22:18ok danke.
少しだけavacの気持ちが分かりました。
0380デフォルトの名無しさん
2008/05/24(土) 00:00:250381デフォルトの名無しさん
2008/05/24(土) 00:53:27コミュニケーションする相手とのコンセンサスが取れているのならどんな読み方でもどうぞ。
enumはenumeration(またはその派生形)の略なので元の言葉の発音を基にするか、
enumそのものの綴りを連想できるような読み方にするかすればいいと思うよ。
0382デフォルトの名無しさん
2008/05/24(土) 01:11:12そこから読み取るっていうこともありえるけど・・・
0383デフォルトの名無しさん
2008/05/24(土) 01:44:02どうやったらいいのか調べてもさっぱわかりません。。。
SwingならsetHorizontalAlignment使えばいいんですが、AWTでのやりかたをどなたかご教授願えませんかm(_ _)m
0384デフォルトの名無しさん
2008/05/24(土) 02:05:43ありがとね
0385デフォルトの名無しさん
2008/05/24(土) 02:23:38結局そのサイズが0になっちゃうんですが、、、
座標指定できるLayoutManagerとかないですよね??
列の数を指定して(Dimensionではなくcolum数で)、
座標を指定してコンポーネントを配置することってできないんですかね??
0386デフォルトの名無しさん
2008/05/24(土) 03:05:52C1 c1 = new C1();
C2 c2 = (C2)c1;
これは可能ですか?
0387デフォルトの名無しさん
2008/05/24(土) 03:12:53C1を型に変換できません
0388デフォルトの名無しさん
2008/05/24(土) 05:40:02TextFieldを子孫コンポーネントとしたFrameを一旦表示してやると、
そのコンポーネントの推奨サイズが有効な値として取得できるようになるから、
推奨サイズをコンポーネントのサイズとして設定してやり、
その後、Frameを再描画すればいい。
一旦表示して設定後、再描画とかの流れが面倒なら、行儀の悪いものになるが、
コンポーネントを加えた後でFrameをネイティブスクリーンリソースに接続すれば、
Frameを表示することなくコンポーネントの推奨サイズを得ることができるようになる。
0389デフォルトの名無しさん
2008/05/24(土) 08:48:29なるほど。。。
ありがとうございます!!
0390デフォルトの名無しさん
2008/05/24(土) 12:19:54これは偶然の誤差なのでしょうか?それとも速くなるものなのでしょうか?
0391デフォルトの名無しさん
2008/05/24(土) 13:05:330392デフォルトの名無しさん
2008/05/24(土) 13:11:20ありがとうございます
0393デフォルトの名無しさん
2008/05/24(土) 13:32:08けどもしそこがネックになってるならJITで最適化されるから気にしない。
0394デフォルトの名無しさん
2008/05/24(土) 13:32:36先頭の削除はarraylistが遅い
ランダムアクセスはLinkedListが遅いっていうのはわかるんですけど
intを1〜8000000
ArrayList追加 : 2385
LinkedList 追加 : 11095
0395デフォルトの名無しさん
2008/05/24(土) 13:36:11そりゃあ、最後の要素までたどりつくまで時間がかかるからじゃないの?
0396デフォルトの名無しさん
2008/05/24(土) 13:58:00末尾に追加すると ってやつね
0397デフォルトの名無しさん
2008/05/24(土) 14:11:20追加し続けるだけ? それなら、
ArrayList→1回のaddにおける代入回数は1回。配列の末尾に要素を代入する(これで1回)だけ。配列のサイズが足りなくなると、元の1.5倍のサイズの配列を確保して元の要素を全部コピー。(このときだけ遅い)
LinkedList→1回のaddにおける代入回数は5回。要素を入れるEntryをnewして要素を代入(これで1回)し、前後のリンクを繋ぎ直す。(前、後、前の後、後の前で計4回)
あとは、どちらにもサイズのインクリメントとConcurrentModificationException判定用カウンタのインクリメントがあるけど、数字を見ると大きな要因ではなさげ。(最近のCPUだと並列処理されるのかな)
また、ArrayListは配列の拡張にペナルティがあるけど、LinkedListも1要素毎にnewするからか、ある程度相殺されてるっぽい。
0398デフォルトの名無しさん
2008/05/24(土) 14:20:00すいません説明が足りませんでした
>>396さんの通り末尾に追加です
>>397
リンクを繋ぎなおす処理で問題が出ていたわけですね
詳しい説明ありがとうございました
0399デフォルトの名無しさん
2008/05/24(土) 14:25:41LinkedListは頭と尻尾を知ってるから、わざわざそんなことしないぞ。
(間にsentinelを挟んだリング状になってる)
つか、適当なこと言う前にソース嫁。
0400デフォルトの名無しさん
2008/05/24(土) 16:03:410401デフォルトの名無しさん
2008/05/24(土) 18:18:390402デフォルトの名無しさん
2008/05/24(土) 18:43:07swingのテキストエリアにメッセージを表示しているのですが、一行ずつフォントや色を変える方法はあるのでしょうか?
テキストフィールドを複数使ってテキストエリアのようにするぐらいしか思いつきません
0403デフォルトの名無しさん
2008/05/24(土) 18:43:270404デフォルトの名無しさん
2008/05/24(土) 18:57:47検索用ワード「JTextComponent スタイル」
0405デフォルトの名無しさん
2008/05/24(土) 19:02:46ありがとうございます!
0406デフォルトの名無しさん
2008/05/24(土) 20:01:03extends ComponentしたクラスでcreateImageをすると
nullが返りgetGraphicsすることができません
ググってみたところextends FrameしたクラスでaddNotifyをオーバーライドすればいいと
ありましたがcreateImageを利用する上で何をextendsするのがセオリーなのでしょうか
どうでもいいようなことかも知れませんがお願いします
0407デフォルトの名無しさん
2008/05/24(土) 20:19:14まだ表示されてないコンポーネントはcreateImageできない
BufferedImageをnewして使うといい
0408デフォルトの名無しさん
2008/05/25(日) 01:35:45Toolkit#createImageを使う手もある
0409デフォルトの名無しさん
2008/05/25(日) 04:28:52private T data;
public void copy(T newData) {
data = new T(newData); // error
}
}
このnew T(newData)のところ、
C++のテンプレートなんかだと
コンパイルできるんですが、javaではできませんでした
Tのメンバが全くわからない場合
どのようにmemberwise copy (deep copy)すべきでしょうか?
0410デフォルトの名無しさん
2008/05/25(日) 06:26:14interface CopyFactory<T> { T copy(T object); }
みたいのを定義&実装してやって、
コンストラクタ使わずにそっちで生成。
0411デフォルトの名無しさん
2008/05/25(日) 08:23:19了解です
ありがとうございました
0412デフォルトの名無しさん
2008/05/25(日) 12:51:59・リフレクションでcloneを呼び出す
・リフレクションでコンストラクタを呼び出す
・serializeしてdeserializeする
0413デフォルトの名無しさん
2008/05/25(日) 13:05:500414FF
2008/05/25(日) 20:20:000415デフォルトの名無しさん
2008/05/25(日) 20:39:42・IndexColorModelだったら透明色指定しとく。そうじゃなければ色置換。
0416デフォルトの名無しさん
2008/05/25(日) 22:47:280417デフォルトの名無しさん
2008/05/25(日) 23:09:170418デフォルトの名無しさん
2008/05/25(日) 23:32:17ArrayList<ArrayList<Object>>
0419デフォルトの名無しさん
2008/05/26(月) 00:12:45レスありがとうございます。java宿題スレとマルチになってしまうんですが、とりあえず分からないなりに
解決してみようと思ってるんですが結局思いつかなくて、ここで聞いてるしだいです。
if (bean.getSql().startsWith("select")) {
// iはループ用のカウンター;実行結果を取得する
for (int i = 1; i <= fileColumns; i++) {
columnNames.add(rsmd.getColumnLabel(i));
}
// フィールドの変数NameListに取得した文字列を入れます。
bean.setNameList(columnNames);
// 獲得したデータの格納
while (rs.next()) {
ArrayList date = new ArrayList();
for (int i = 1; i <= 3; i++) {
date.add(rs.getObject(i));
}
bean.setResultList(date); ←このResultListを、さらにList化したいです
session.setAttribute("access", bean);
}
}
SQLを実行してデータベースから結果をとりだして格納するんですが、上のプログラムだけだと
上書きしている状態で、最後に取得した情報しか表示されないのです。
すべて表示させるにはResultListをリスト化して、リスト化したところに個々の情報を入れていけば
全て表示できると言われたのですが、どうやってResultListをリストすればいいのか検討がつかないのですよ。
0420デフォルトの名無しさん
2008/05/26(月) 00:53:460421デフォルトの名無しさん
2008/05/26(月) 01:07:29commons-collectionsのMultihashMapとかどう?
0422デフォルトの名無しさん
2008/05/26(月) 01:56:59ごめんなさい。
>>421
HashMapちょっと調べてきます!!
ご助言ありがとうございます。
0423デフォルトの名無しさん
2008/05/26(月) 12:39:28今2つの内部クラスを作っています。ゆくゆくは内部クラスを別ファイルにでも切り離したいのですが、まだ先の話です。 現在は2つの内部クラス内のメンバー変数を内部クラス同士で参照させています。
下記のコードだと、eclipseはエラーを吐きませんが、 実行するとjava.lang.NullPointerExceptionエラーになります。
インスタンスもできていると思うし特に問題はなさそうです。
質問なのですが、なにか根本的に間違っていますか?
class M{
Initialize initialize;
Disp disp;
class Initialize{
private void once(){disp.isVal = true; }
}
class Disp{ boolean isVal; }
private Initialize mkInit(){
return initialize; }
private Disp mkDisp(){
return disp; }
public static void main(String[] args){
M m = new Majang();
Initialize initialize = m.mkInit();
Disp disp = m.mkDisp();
initialize.once();
}
}
0424デフォルトの名無しさん
2008/05/26(月) 12:55:150425423
2008/05/26(月) 13:08:14ってことは
Initializeのコンストラクタでなにかの値を指定すればOKなのでしょうか。
//getClass()を使ったほうが可読性が高いですね。すみません。
0426デフォルトの名無しさん
2008/05/26(月) 13:24:37Initializeオブジェクトを生成してinitializeに代入しないといけないだろうということ
要するに
× Initialize initialize;
○ Initialize initialize = new Initialize();
0427423
2008/05/26(月) 13:38:20なるほど。
ありがとうございました。
0428デフォルトの名無しさん
2008/05/26(月) 17:44:13ねぇアレやっていい?アレ
ガッ!やっていい?
0429デフォルトの名無しさん
2008/05/26(月) 18:39:26内部クラスにするのはそれなりの設計理由があってすることで、
分離することが決まっているのなら、最初からきちんと分けて設計すべき。
クラス間の依存度が高いまま単に分けるだけなら分ける意味はあまりないし、
依存度が低くなるように最初の設計でインタフェースをきちんと決めて別々にした方がいい。
あとから制約を増やすのは面倒事になることが多い。
0430デフォルトの名無しさん
2008/05/26(月) 19:20:09クラスからインスタンスを配列で作った際,Ins[0],Ins[1]…
Ins[n]内のメソッドから,Ins[n-1]内の変数をいじりたいのですが,どのようにすればよいでしょうか?
0431デフォルトの名無しさん
2008/05/26(月) 19:25:25Runtime rt=Runtime.getRuntime();
try{
rt.exec("cmd.exe");
}catch(Exception e){
e.printStackTrace();
}
こういうのをactionPerformedメソッドの中に入れた所何故か起動しません。
プログラムをnotepadとかにすると起動するのにこれだと起動しないのは何故なのでしょうか?
またcmdまでのパスも通っているし、念のためフルパスでやったけれどダメでした。
0432デフォルトの名無しさん
2008/05/26(月) 19:36:050433423
2008/05/26(月) 21:04:41ただ単純に、一緒にしてしまうとコードが複雑になるので、
表示系と処理系を分離したいと。
できれば、最終的には表示系は処理系から隠蔽してメソッドで呼び出すだけにしたいかな、と。
ただ、いっしょにしている方がコードを書くのには明らかに簡単でとりあえず動くことから目標にしているんですよ。
プログラムはズブの素人で経験はCP/M86上のFBASIC位・・・
>>432
本来のぬるぽですからねぇ。ふふふ
0434デフォルトの名無しさん
2008/05/26(月) 21:12:240435デフォルトの名無しさん
2008/05/26(月) 21:46:440436デフォルトの名無しさん
2008/05/26(月) 21:53:110437デフォルトの名無しさん
2008/05/26(月) 22:02:010438デフォルトの名無しさん
2008/05/26(月) 22:05:02少し感動
どうやればいいですか
0439デフォルトの名無しさん
2008/05/26(月) 22:07:170440デフォルトの名無しさん
2008/05/26(月) 22:09:00のBufferとかどうかなと思ったんだけど
0441デフォルトの名無しさん
2008/05/26(月) 22:11:32アルゴリズムを工夫するとか
0442デフォルトの名無しさん
2008/05/26(月) 22:15:23既にやってあるなあ
0443デフォルトの名無しさん
2008/05/26(月) 22:33:14使用するオブジェクトをスタートアップの段階で全て準備してしまい
擬似的に静的に使用メモリを準備する
もちろんすべてひもつきのままにして破棄させない
一時的なオブジェクトの破棄に伴うGCの頻発による速度低下なら
メモリを積み込めるだけ積み込んでGCを停止する
0444デフォルトの名無しさん
2008/05/26(月) 22:33:270445デフォルトの名無しさん
2008/05/26(月) 22:33:420446デフォルトの名無しさん
2008/05/26(月) 22:34:510447デフォルトの名無しさん
2008/05/26(月) 22:39:41クエリ投げて、SQLException 投げてきたときに、クエリのどの部分が違うのか、
あるいは、どの列が制約条件に違反してんのか、どうしたらわかるの?
教えてエロい人。
0448デフォルトの名無しさん
2008/05/26(月) 22:46:04サンキュ
ただ原因はスレッドがやってる作業そのものがデータの吸出しにあることだと思う
6000個のスレッドをpool使って逐次で動かしてるんだが作業が進むに従って重くなるんで
このデータを一時的に何とかしないといかんかも
0449デフォルトの名無しさん
2008/05/26(月) 22:55:34どんなマシンでまともに動くのか教えて欲しいwww
>>447
SQLのエラーコードを取得して、Oracleのマニュアルを参照汁
getErrorCodeとかそんなメソッドある
0450デフォルトの名無しさん
2008/05/26(月) 22:57:07何かがおかしいと思わざるを得ないのだが
コンテキストスイッチのコストだけでもバカにならないんじゃ
0451デフォルトの名無しさん
2008/05/26(月) 22:57:59どうせpoolの管理も自分でやっているんだろ
ExecutorServiceとか使えばサクサク動く予感
0452デフォルトの名無しさん
2008/05/26(月) 22:59:120453デフォルトの名無しさん
2008/05/26(月) 22:59:290454デフォルトの名無しさん
2008/05/26(月) 22:59:53スレッドダンプが終わらん!
0455デフォルトの名無しさん
2008/05/26(月) 23:03:20public static void main(String[] args) {
char[] a = { 'ア', 'ア', 'あ', 'A', 'A' };
for (char c: a) {
System.out.println(Character.UnicodeBlock.of(c));
}
}
}
そりゃ、アもAも HALFWIDTH_AND_FULLWIDTH_FORMS に分類されちゃうよなー。
0456デフォルトの名無しさん
2008/05/26(月) 23:03:54よく考えるべきである
0457デフォルトの名無しさん
2008/05/26(月) 23:07:45減らすべし。大抵は多くても数十で十分のはず
他の言語なら大量に作って大量に捨てるような設計でも問題ないこともあるけど
Javaのスレッドは、基本的にそんな使い方はしない
0458デフォルトの名無しさん
2008/05/26(月) 23:10:020459デフォルトの名無しさん
2008/05/26(月) 23:25:23それにpool使って逐次動かしていますから問題はありません
データの吸出しを修正してみます
0460デフォルトの名無しさん
2008/05/26(月) 23:25:43サンクス。 getParameters() とかいうのがあるので、ちょいと試してみる。
0461デフォルトの名無しさん
2008/05/26(月) 23:33:000462デフォルトの名無しさん
2008/05/26(月) 23:41:280463デフォルトの名無しさん
2008/05/27(火) 00:03:190464デフォルトの名無しさん
2008/05/27(火) 00:08:16そっか言い方間違えたな
しかしボロカスだなあw
0465デフォルトの名無しさん
2008/05/27(火) 00:11:350466デフォルトの名無しさん
2008/05/27(火) 00:17:39IOのように比較的長く待たされる処理がほとんどならば、6000タスクを並列にやって硬貨出るけど、HTMLのParseじゃ逐次処理の方が早いかもよ
0467デフォルトの名無しさん
2008/05/27(火) 00:19:360468デフォルトの名無しさん
2008/05/27(火) 00:21:560469デフォルトの名無しさん
2008/05/27(火) 00:27:49皆さん有難う
0470デフォルトの名無しさん
2008/05/27(火) 00:34:12パースに1、JS実行に1、画像読み込みに1で3くらいじゃね?
0471デフォルトの名無しさん
2008/05/27(火) 00:37:350472デフォルトの名無しさん
2008/05/27(火) 00:43:510473デフォルトの名無しさん
2008/05/27(火) 00:46:16下げたほうが良いのか
了解
0474デフォルトの名無しさん
2008/05/27(火) 00:59:23ある処理をSystem.currentTimeMillis()の差で調べたのですが
forで100回ぐらいまわした平均をとったほうが正確になるかと考えました。
すると1回のときとだいぶ違う時間になったのですがなぜかわかりますか?
0475デフォルトの名無しさん
2008/05/27(火) 01:02:400476デフォルトの名無しさん
2008/05/27(火) 01:09:10JITが潰してくれたんでは
0477デフォルトの名無しさん
2008/05/27(火) 01:09:170478デフォルトの名無しさん
2008/05/27(火) 01:11:540479デフォルトの名無しさん
2008/05/27(火) 02:08:190480デフォルトの名無しさん
2008/05/27(火) 12:05:530481デフォルトの名無しさん
2008/05/27(火) 15:02:12大分よくなった
でも6600ページダウンロードしてパースする作業だけで15分はかかりすぎだよねえ
何とかならんものか
0482デフォルトの名無しさん
2008/05/27(火) 15:44:39ついでにいいかな
Matplotlibって視覚化ツールがあるんだけど
これをjavaからコントロールした人居る?
0483デフォルトの名無しさん
2008/05/27(火) 16:17:27鯖に負荷掛かるから止めろ。
0484デフォルトの名無しさん
2008/05/27(火) 16:37:28そのためにスレッド数は絞るようにはしてるんだけどね
ダウンローダーと基本的には接続の部分は一緒だから
嫌われるプログラムではあるよね
0485デフォルトの名無しさん
2008/05/27(火) 16:48:540486デフォルトの名無しさん
2008/05/27(火) 16:54:290487デフォルトの名無しさん
2008/05/27(火) 16:56:310488デフォルトの名無しさん
2008/05/27(火) 17:00:420489デフォルトの名無しさん
2008/05/27(火) 17:06:07てかあそこ値変わるのか
0490デフォルトの名無しさん
2008/05/27(火) 17:12:50ありがとうございました
0491デフォルトの名無しさん
2008/05/27(火) 17:34:52半値押しで粘りそうな感じもしないではないな
買い方逃げるとしたら次のリバだろうね
0492デフォルトの名無しさん
2008/05/27(火) 17:36:060493デフォルトの名無しさん
2008/05/27(火) 17:37:32ダウンロードはできたんですが、そのあとのjarファイル等の操作がよくわかりません。
わかる方いれば、よろしくお願いします。
0494デフォルトの名無しさん
2008/05/27(火) 17:46:500495デフォルトの名無しさん
2008/05/27(火) 17:58:01僕がやりたい(やらなければいけない)のは、「グラフ理論」なんです。
有向グラフとかノード、アークといったやつです。
0496デフォルトの名無しさん
2008/05/27(火) 18:01:500497デフォルトの名無しさん
2008/05/27(火) 18:44:580498デフォルトの名無しさん
2008/05/27(火) 18:50:01わかんないなあ
誰か助けてあげてえ
0499デフォルトの名無しさん
2008/05/27(火) 19:00:200500デフォルトの名無しさん
2008/05/27(火) 19:05:33あまり知識がないもんで・・・
よくわからないです。
0501デフォルトの名無しさん
2008/05/27(火) 19:08:090502デフォルトの名無しさん
2008/05/27(火) 19:10:29そういうライブラリは存在しないのですかね?
ネイティブにしたくないので仕様書探します。
0503デフォルトの名無しさん
2008/05/27(火) 19:12:430504デフォルトの名無しさん
2008/05/27(火) 19:22:34strats+hibernateです。マスターテーブルの存在チェックを複数件(1〜300)行いたいのですが一件づつselectしチェックを行うのと全件selectしてmapに格納して存在チェックするのではどちらがよいでしょうか
マスタの件数は150件ほどです
0505デフォルトの名無しさん
2008/05/27(火) 20:40:05あんまり馬鹿やってるとIPではじかれる
0506デフォルトの名無しさん
2008/05/27(火) 20:44:53そうなんか?
別にクラッキングじゃねえけど
0507デフォルトの名無しさん
2008/05/27(火) 21:00:32迷惑
0508デフォルトの名無しさん
2008/05/27(火) 21:00:38余りを出す演算子で%があると思うのですが
%以外で余り値を出す演算子とかはあるのでしょうか?
何か方法があれば教えて頂ければと思います。
宜しくお願い致します。
0509デフォルトの名無しさん
2008/05/27(火) 21:02:56脆弱サーバー入れて客の責任にしたきゃすればいい
0510デフォルトの名無しさん
2008/05/27(火) 21:04:36宿題を出された→%禁止→でも、あまりを使うアルゴリズムしか思いつかない→%以外に何かあるはずだ→質問しよう
と、エスパーしてみる
あまりを出す演算子って言われたら%しか思いつかない
0511デフォルトの名無しさん
2008/05/27(火) 21:06:20あれのこと?
0512デフォルトの名無しさん
2008/05/27(火) 21:13:07一桁ずつ2で割ってけばいずれ余りが出る。
ナベアツプログラム検索してるときにこの手の考え方が出てたよ。
0513デフォルトの名無しさん
2008/05/27(火) 21:17:49自分も%しか思い浮かばないので質問させて頂きました。
>>511
うーん、多分違うと思います。
すいません。
>>512
それは奇数なら大丈夫だと思うのですが偶数なら・・・。
と言うか、1桁ずつ2で割るという意味がちょっと自分は理解出来ないのですが
どういうことでしょうか?
%以外の演算子があるのでしょうか?
ちょっとナベアツプログラムでぐぐってきます。
0514デフォルトの名無しさん
2008/05/27(火) 21:21:050515デフォルトの名無しさん
2008/05/27(火) 21:21:59どうして%じゃだめなんだよ
0516デフォルトの名無しさん
2008/05/27(火) 21:24:38尚、『余り』に関しては 余り演算子 % を使用する場合と、しない場合の2通りの方法を考えてみましょう。
又、3ではなく、0で割るとはどうなエラーメッセージなのかも確認してみましょう。
という課題で出された為です。
自分は%以外の演算子を知らない為、質問させて頂きました。
0517デフォルトの名無しさん
2008/05/27(火) 21:26:310518デフォルトの名無しさん
2008/05/27(火) 21:27:090519デフォルトの名無しさん
2008/05/27(火) 21:28:130520デフォルトの名無しさん
2008/05/27(火) 21:28:570521デフォルトの名無しさん
2008/05/27(火) 21:29:460522デフォルトの名無しさん
2008/05/27(火) 21:31:010523デフォルトの名無しさん
2008/05/27(火) 21:32:04一文字違いじゃねえか
0524デフォルトの名無しさん
2008/05/27(火) 21:46:190525デフォルトの名無しさん
2008/05/27(火) 21:54:43ファイナンス系は厳しいぜ
IPからプロバイダに垢停止迫ったりは普通
あまりしつこいと自宅に直接電話かかって来るからなw
0526デフォルトの名無しさん
2008/05/27(火) 22:04:12ありえねえだろ
0527デフォルトの名無しさん
2008/05/27(火) 22:18:450528デフォルトの名無しさん
2008/05/27(火) 22:32:280529デフォルトの名無しさん
2008/05/27(火) 22:54:59なぜでしょうか??
0530デフォルトの名無しさん
2008/05/27(火) 22:55:590531デフォルトの名無しさん
2008/05/28(水) 00:31:030532デフォルトの名無しさん
2008/05/28(水) 01:14:46HTTP1.1 では、同時接続数上限は 2 ですよ、と。
さらに言えば、連続して接続するなら、単一接続にした方が良いと思います。
過ぎたるは及ばざるがごとし。てか、鯖にも許容量があるので。
HTTPヘッダに、Accept-Encoding: gzip を追加しましょう。
対応していれば、テキストが5分の1ぐらいに圧縮されます。
java.util.zip.GZIPInputStream で解凍できます。
0533デフォルトの名無しさん
2008/05/28(水) 01:40:24どうせapacheを使うのだから、apacheでやらせた方が良くない?
0535デフォルトの名無しさん
2008/05/28(水) 07:55:57a%b=a-(a*(a/b))
※/演算子の結果が小数を返すものならintで丸める
または自作で余りを求める関数を作れ
っていう意味では?
0536デフォルトの名無しさん
2008/05/28(水) 11:42:30>>526 (のさらに元ネタの、スレッドを起こすプログラム書いている人)は、
Httpクライアント側じゃないの?
0537デフォルトの名無しさん
2008/05/28(水) 11:54:52クライアント側
2でいいなら2にして見るかな
何ももめるつもりで書いてるものでは無いからな
あと6600はひとつのサーバーに対してじゃないから
その辺は如何なのかなって気もするけどな
良くあるループの理論速度計算みたいに
スレッドの計算できる式ってあるのかな
0538デフォルトの名無しさん
2008/05/28(水) 11:57:01話全く変わるけどマルチっぽくてすまんが
OOOSDKのことで聞きたいんだが
たとえばJPanelにCALCのインスタンス貼るのはUNO使えば良いんだろうか
0539デフォルトの名無しさん
2008/05/28(水) 16:44:11そんなもんなのかなぁ。
0540デフォルトの名無しさん
2008/05/28(水) 17:20:52public class A implements Cloneable {
private final C c;
public A(C c) throws CloneNotSupportedException { this.c = (C)c.clone(); }
public static void main(String[] args) throws CloneNotSupportedException {
C c = new C();
A a = new A(c);
final C b = (C)c.clone();
System.out.println(c + ", " + a.c + ", " + b);
}
}
class C implements Cloneable { public Object clone() throws CloneNotSupportedException { return super.clone(); } }
0541デフォルトの名無しさん
2008/05/28(水) 17:23:010542デフォルトの名無しさん
2008/05/28(水) 17:29:56public class A implements Cloneable {
private final ArrayList list = new ArrayList();
public Object clone() throws CloneNotSupportedException {
A a = (A) super.clone();
a.list = a.list.clone(); // ← できない
return a;
}
}
0543デフォルトの名無しさん
2008/05/28(水) 17:39:03再代入を禁止したいからfinalを付けるのに付けた意味がないような
本当のところは実際にやろうとしたことを聞かないと分からないけど
0544デフォルトの名無しさん
2008/05/28(水) 17:39:39赤いXとアプレットのサイズの灰色の枠のみ表示されて、中身が表示されないんですが、
何が悪いのかわかりません。
0545デフォルトの名無しさん
2008/05/28(水) 17:40:50こっちにだって何が悪いか分からん
0546544
2008/05/28(水) 17:43:00<head>
<title>11_4</title>
</head>
<body>
<h1>11の4</h1>
<applet code="s11_4.class" width="500" height="500"> </applet>
</body>
</html>
0547デフォルトの名無しさん
2008/05/28(水) 18:05:38そのHTMLと同じディレクトリにs11_4.classは存在するか?
他に必要なクラスファイルもすべて存在するか?
何か例外が発生していないかコンソールを確認してみたか?
s11_4のソースコードを見せてみれば何かわかるかもしれない
0548デフォルトの名無しさん
2008/05/28(水) 18:21:380549544
2008/05/28(水) 18:32:38上三つはだいじょぶでした
アプレットビューワで見れてもHTMLに引っ張ってきただけじゃだめなんですね、、、、
0550548
2008/05/28(水) 18:42:520551デフォルトの名無しさん
2008/05/28(水) 18:44:12appletviewer の引数って htmlファイルですよ、と。
他は大文字小文字とか。
0553デフォルトの名無しさん
2008/05/28(水) 18:58:09それが原因かもとも思ったがブラウザでも例外は発生していないらしいからこれは違うか
>>552
どっちの意味が分からないのか分からないが
appletviewer hoge.html
で実行するものじゃないの?
またはコメントにappletタグを記述したソースファイルで
appletviewer Hoge.java
とか
大文字小文字を区別する環境なら合わせてやらないとクラスファイルを発見できない
S11_4.classでサーバに上げたのにs11_4.classを指定しているとか
0554544
2008/05/28(水) 19:17:05エクリプスで三角形おして動作を見てたから、ぴんと来ないです。
ほかの人のパソコンで見れたら委員だけど、エグゼファイルみたいなのに
することもできずテン
0555デフォルトの名無しさん
2008/05/28(水) 19:30:02appletタグもjarファイル使って
<applet archive="hoge.jar" code="s11_4.class" width="500" height="500">
みたいな感じで
0556548
2008/05/28(水) 20:04:20C:\>dir
s11_4.class
hoge.html
2 個のファイルが見つかりました。
C:\>appletviewer hoge.html
と、入力してみる。三角ボタンじゃなくて。
0557デフォルトの名無しさん
2008/05/28(水) 20:35:28youtubeの外部プレイヤー(小さいやつ)の音量設定のような、
マウスのせたらスライドバーがでてきて調整できる GUI 部品ってないんですかね?
もしくは作れるんでしょうかね?
0558デフォルトの名無しさん
2008/05/28(水) 20:57:440559デフォルトの名無しさん
2008/05/28(水) 22:36:260560デフォルトの名無しさん
2008/05/28(水) 23:09:390561デフォルトの名無しさん
2008/05/29(木) 00:33:06配列が保管されないんですけど、こういうものなんでしょうか。
java初めてです。
0562デフォルトの名無しさん
2008/05/29(木) 00:46:510563デフォルトの名無しさん
2008/05/29(木) 00:47:060564561
2008/05/29(木) 01:06:14…メイン
クラス
…タイマー
…グラフィックフレーム
クラス
…画像描画
…パブリック イント 多次元配列
…描画のメソッド
…配列に、値を入れる。
↓
タイマーでロードされると
配列の値が残っていない…。
0565デフォルトの名無しさん
2008/05/29(木) 01:19:08私なら、配列の生成、変更箇所をたどっていく。
大体は、生成に問題がある。
配列でなければ、それを含むクラスの生成と運用に問題がある。
0566デフォルトの名無しさん
2008/05/29(木) 01:58:34class R6_2
{
public static void main( String [] args )
{
R6_2_image window = new R6_2_image()
window.setSize(400,600);
window.setTitle("R6_2");
window.setVisible(true);
}}
import java.awt.*;
class R6_2_image extends ExitFrame
{
public void paint( Graphics g )
{
Toolkit toolkit = Toolkit.getDefaultToolkit();
Image image = toolkit.getImage("image.jpg");
g.drawImage(image,50,50,this);
}}
windowsVista、CPad for Java2 SDKの環境でjavaしています。
上のプログラムがR6_2.java,下がR6_2_image.javaです。
R6_2.javaファイルを実行すると、シンボルが解決されていないとエラーが出て、コンパイルできません。
image.jpgとExitFrameは同じディレクトリに入れてます。
0567デフォルトの名無しさん
2008/05/29(木) 02:33:010568デフォルトの名無しさん
2008/05/29(木) 02:51:58ExitFrame は同じパッケージで、Frameを継承してるとして、
R6_2_image window = new R6_2_image()セミコロン抜け
0569デフォルトの名無しさん
2008/05/29(木) 12:16:45…
をすると、なぜか例外になってしまいます。
if(hairetu[j][i]==0 || hairetu[j][i+1]==0 || hairetu[j][i+2]==0){
…
では起こらないんですが…
何が違うのでしょうか?
0570デフォルトの名無しさん
2008/05/29(木) 12:35:430571569
2008/05/29(木) 12:39:550572569
2008/05/29(木) 12:42:02配列の外をってことですね。
0573デフォルトの名無しさん
2008/05/29(木) 12:48:51例外とは何か。条件を満たさないと起きる物なのか?
570 は、貴方の質問に答えただけで、貴方の疑問には答えていない。
それでも、十分に答えを見つけるだけのヒントは出ている。
というか、表示された例外クラスの事をちゃんと調べましたか?
0574569
2008/05/29(木) 13:57:480575デフォルトの名無しさん
2008/05/29(木) 14:56:46Javaで多重起動防止する方法ってどういったものがあるのでしょうか?
WIn32APIのミューテックスみたいなのの他、
実行中のプロセス名を全部取得して自分のプロセス名があれば表示前に終了する
みたいなのを考えたのですが、Javaでのこういうのの実現方法が分かりません。
0576デフォルトの名無しさん
2008/05/29(木) 15:00:200577デフォルトの名無しさん
2008/05/29(木) 15:16:51何らかの理由で削除されない事に対応するには、
ロックファイル内容の書式に更新時間を記録するようにするか、ね。
0578デフォルトの名無しさん
2008/05/29(木) 15:26:31起動時に特定のポート開けなかったら起動させないとか。
0579デフォルトの名無しさん
2008/05/29(木) 16:16:30VBで言うところのErr.RaiseしてOn Error Gotoに飛ばすようなことをしたいのですが
意図的にSQLException等の例外を引き起こすメソッドみたいなものはありますか?
というか考え方が間違っていますか?
try{
//処理1
if(!hoge()){
例外に飛ばす処理
}
//処理2
:
}catch{
//ここに飛ばす
}
0580デフォルトの名無しさん
2008/05/29(木) 16:23:03起動するときファイルに自プロセスIDを書き込む
多重起動チェックのときそのIDのプロセスが生きていればエラー
JNI使うことになりそうだけど
>>579
throw new SQLException()
ただしgotoを実現するために例外を使うのは良くない
0581579
2008/05/29(木) 16:38:40物凄い勢いで答えていただきありがとうございました。
例外を使用しない方向で考えてみます。
0582デフォルトの名無しさん
2008/05/29(木) 16:46:07仕様上、例外もしくはエラーである必要があるのならば、
適切な(なるべく既存の、必要であれば自作の)例外オブジェクトを生成し、throw すれば良い。
お勧めはしませんが、ラベル付き break, continue を使えば、疑似gotoは可能。
ttp://www.y-adagio.com/public/standards/tr_javalang/14.doc.htm#6842
0583デフォルトの名無しさん
2008/05/29(木) 16:47:280584579
2008/05/29(木) 17:14:54レスありがとうございます。
よくよく考えてみましたが、やはり仕様上例外である必要があるため
前言撤回で、throwを使わせていただきます。
リンクありがとうございます。今読んでいます。
>イベント駆動型アプリケーション
勉強します!
0585デフォルトの名無しさん
2008/05/29(木) 19:46:41SQLのログ出力する時に、「?」部分に実際に値が入っている状態で出したいんだけど
どうすればいいですか?別々に出力させるしかないのでしょうか?
0586デフォルトの名無しさん
2008/05/29(木) 21:06:52設定がわかりません orz
set〜 を探してもそれっぽいのないのですが。。。
0587デフォルトの名無しさん
2008/05/29(木) 22:15:15((JSpinner.NumberEditor) spinner.getEditor()).getTextField().setHorizontalAlignment(SwingConstants.LEFT);
0588デフォルトの名無しさん
2008/05/29(木) 22:52:25似たような物をチュートリアルから
ttp://java.sun.com/docs/books/tutorial/uiswing/components/spinner.html#format
* キャスト前に instanceof でオブジェクトの型を確認。
* キャストに基底クラスの JSpinner.DefaultEditor を使用。
0589デフォルトの名無しさん
2008/05/29(木) 23:09:58http://java.sun.com/javase/ja/6/docs/ja/api/java/nio/channels/FileLock.html
0590デフォルトの名無しさん
2008/05/29(木) 23:11:33?の部分にバインドするのはDBサーバだから簡単な方法はない気がします。
0591デフォルトの名無しさん
2008/05/30(金) 00:24:34自分で確かめてないけど、バインドした結果のが残ってないん?
0592デフォルトの名無しさん
2008/05/30(金) 01:28:45ttp://system-trading.jp/news/index.php?ID=39
5月22日より登録受付開始、6月2日よりグランプリ開始の予定。
ttp://www.fx-gp.com/
●社長特別賞(シストレソフト買取価格) 10,000,000円
●シストレソフト部門賞 1位300万円 2位100万円 3位50万円
●トレード部門賞 1位300万円 2位100万円 3位50万円
●前期MVP賞 50万円
●後期MVP賞 50万円
https://www.click-sec.com/corp/guide/demo/
0593デフォルトの名無しさん
2008/05/30(金) 01:36:19String#formatを使えるなら、それほど難しくない気もする。
0594590
2008/05/30(金) 01:44:29それだと、DBで実行しているものと同じとは言えないと思うのですが。。。
簡単かどうかは人によって違うとは思うのですが、JDBCのパラメータをいじるだけでは出来そうもないという意味で、簡単ではないと書きました。
0595デフォルトの名無しさん
2008/05/30(金) 02:54:48JGraphについてです
JGraphはsourceforgeからダウンロードしましたが(初心者なんで)使い方がわかりません。
環境はVistaでj2sdk2.4です。
どなたかJGraph使い方わかる人はいませんか?(ファイルの移動、コンパイル方法など)
0596デフォルトの名無しさん
2008/05/30(金) 07:12:390597デフォルトの名無しさん
2008/05/30(金) 07:53:32すみません、眠たくてぼけてました
j2sdk1.4.2_17です。
0598デフォルトの名無しさん
2008/05/30(金) 09:54:13ありがとうございました。
ざっとString#formatも調べてみましたが、
これはこれで使いこなすのに時間がかかりそう・・・
でも参考になりました。ありがとうございました。
0600ぬこぬこダンス ◆QQgpZ/Znz.
2008/05/30(金) 12:34:58for( int i = 0; i < array.length, ++i )
{
array[i] = new Hoge();
}
このようにしてメモリを確保した場合
for( int i = 0; i < array.length, ++i )
{
array[i] = null;
}
array = null;
ってやるのが正しい方法でしょうか?
それとも
array = null; だけでOKなんでしょうか?
0601デフォルトの名無しさん
2008/05/30(金) 12:44:00何もしなくてOK
nullを代入する必要は通常ない
0602デフォルトの名無しさん
2008/05/30(金) 12:44:590603デフォルトの名無しさん
2008/05/30(金) 12:47:43ありがとうございました
0604デフォルトの名無しさん
2008/05/30(金) 13:35:34他のプログラムのようにexec("explorer C:/")というようにやっても
シェルからexplorer C:/と入力するような動作はしません。
これって何が問題なのでしょうか?
0605デフォルトの名無しさん
2008/05/30(金) 13:54:070606デフォルトの名無しさん
2008/05/30(金) 14:07:11XP です。シェルが何か分かりませんので cmd で確認。同じ動作をします。
単なる入力ミスor確認不足じゃないですか?
もちろん、意図した動作は 605 でしょうけど。
0607604
2008/05/30(金) 14:49:27Javaの中のパス指定は/でいいけど外部プログラムに渡す時は\じゃないとダメなんですね。。
0608デフォルトの名無しさん
2008/05/30(金) 15:22:57これって何が原因ですか
対処方法も分かったら教えてください
0609デフォルトの名無しさん
2008/05/30(金) 18:02:07DESでsalt2文字で暗号化したいんですが・・
http://www.dynamic.net.au/christos/crypt/UnixCrypt.txt
だとちょっと結果が違うみたいで
javax.cryptoを使うのは方式が違う感じ?
何か良いものがあれば教えてください〜
0610デフォルトの名無しさん
2008/05/30(金) 18:07:26「みたいな物」 が欲しいだけで 「同じ物」 が必要じゃないなら、別にちょっとくらい結果が違ってもいいんでないの?
0611デフォルトの名無しさん
2008/05/30(金) 20:40:460から乱数が始まるみたいですが
最低値と最大値を 5〜10 のように指定した乱数の出し方がわかりません。
教えてください。
0612デフォルトの名無しさん
2008/05/30(金) 20:51:37new Random().nextInt(6) + 5;
0613デフォルトの名無しさん
2008/05/30(金) 20:58:29わかりました。サンクス
0614デフォルトの名無しさん
2008/05/30(金) 21:13:26クラスは、変数とメソッドで構成されていると思うですが、
インスタンス生成の度にメモリ上に確保されるのは、
変数だけなのでしょうか?
それとも、変数とメソッドなのでしょうか?
私は前者だと思っていたのですが、
会社の先輩が後者だと言って譲りません。
恐い先輩なので、私が悪いことにしてその場を治めましたが納得できません。
どちらが正しいのでしょうか?
0615デフォルトの名無しさん
2008/05/30(金) 21:22:360616デフォルトの名無しさん
2008/05/30(金) 22:15:46OpenJDKのソースを斜め読みした限りじゃインスタンス変数だけと思われ。
0617デフォルトの名無しさん
2008/05/30(金) 22:42:02メソッドはどのインスタンスでも同じ振る舞いするわけで、わざわざインスタンス毎に作成するメリットはほとんどないわけだから
メソッド変数という意味ならば変わるけどな
0618デフォルトの名無しさん
2008/05/30(金) 22:46:27> 恐い先輩なので、私が悪いことにしてその場を治めました
これは正しい。
> が納得できません
これは正しくない。
0619614
2008/05/30(金) 22:50:13レスありがとうございます。
やはり常識的に考えて、生成されるのはインスタンス変数だけですよね。
恐い先輩に頭ごなしに否定されたので、自分が間違っているような気になっていました。
0620デフォルトの名無しさん
2008/05/31(土) 00:26:19下のif文の中に入ってくれません。
どなかか考えうる理由など教えていただけると嬉しいです。
必要であれば、ソースすべて載せます。
はじめて質問するので、なにか不束な点があると思いますが、
許してください。。。
JButton ret; //戻るボタン
public void actionPerformed(ActionEvent ae) {
Object obj = ae.getSource();
//この条件の中に入ってくれません
if(obj == ret){
System.out.println("test4");
System.out.println("test4");
System.out.println(address.getText());
list.removeLast();
this.setUrl(list.getLast());
}
else if (obj == address) {
System.out.println("test2");
System.out.println(address.getText());
list.add(address.getText()); //ジャンプするURLを格納
this.setUrl(address.getText());
}}
0621デフォルトの名無しさん
2008/05/31(土) 00:37:49下のelse if は入るんだよね?
0622デフォルトの名無しさん
2008/05/31(土) 00:46:36なくて、ifの前にobjとかretを表示してみるとかー。
0623デフォルトの名無しさん
2008/05/31(土) 01:13:40一つめの文字列を表示させたあと
2秒ほど間を開けて
二つめの文字列を表示するにはどうすればいいですか?
0624デフォルトの名無しさん
2008/05/31(土) 01:17:34簡単に言うと、間に Thread.sleep(2000); を挟む。
0625デフォルトの名無しさん
2008/05/31(土) 01:22:30UnsatisfiedLinkErrorが投げられてしまう。
環境変数は通っているし、
ヘッダファイルが最新の状態で問題なくビルドできたのに、
そのメソッドだけ蹴られる。
ためしに問題の部分をコメントアウトして実行したら、問題なく動いた。
だから他のnativeメソッドは、たぶん普通に呼び出せてるんだよね。
DLLの中身をのぞいて見ても、件のメソッドは他のメソッドと同じようにちゃんと存在している。
これはいったいどういうことなんだろう…?
0626620
2008/05/31(土) 01:30:52ローカル変数では定義してませんね・・・
下のelse if文には入ります
>>622
obj表示してみました。
今もうその文字列のcontainsメソッド使ってごり押しでif文に入りました!
ただなんで前の状態じゃ入れないか疑問に残って仕方がない・・
0627デフォルトの名無しさん
2008/05/31(土) 01:40:57やってみます、ありがと
0628デフォルトの名無しさん
2008/05/31(土) 01:47:32ありそうなのは、JButton ret;と、実際に追加されているボタンが異なるケース。
同名のローカル変数が追加されて、メンバのretに値が入っていない。
JButton ret=new JButton();とかやってないか?
0629620
2008/05/31(土) 02:42:15ぁぁぁ・・・ご名答です・・
コンストラクタでやってしまってました・・・
わざわざありがとうございます。
今ブラウザの戻る、進む、ホームに戻るが作成できました。
あとは履歴とブックマークくらいしたいなー。
他なにか機能ないかなー。
なんか学校の課題とはいえ、がっつり便利なブラウザ作ってみたいなー。
0630デフォルトの名無しさん
2008/05/31(土) 02:50:40> がっつり便利なブラウザ作ってみたい
ってことは今使っているブラウザに不満な点があるということだから、
その不満を解消する機能をつければいい。
既にあるものを再生産するのは詰まらんだろう。
0631デフォルトの名無しさん
2008/05/31(土) 03:08:05そういうミスを防ぐために、メンバ変数に特殊な命名規則を導入するス
タイルもある。
m_ret
mRet
f_ret
fRet
ret_
または常にthis.retで使うとか。
0632デフォルトの名無しさん
2008/05/31(土) 03:58:37private byte[] ShortToByte( short s )
{
byte [] b = { (byte)((s >> 8) & 0xFF), (byte)((s >> 0) & 0xFF) } ;
return b;
}
private int ByteToShort( byte []b )
{
return ((b[0] & 0xff) << 8) | (b[1] & 0xff);
}
こんなのを作ってみましたけど 上手く行きません
short s = -1;
System.out.println( s );
System.out.println( ByteToShort( ShortToByte( s ) ) );
結果
-1
65535
0633デフォルトの名無しさん
2008/05/31(土) 04:10:17それshort返してねえよ int返してる
0634デフォルトの名無しさん
2008/05/31(土) 04:28:20private short ByteToShort( byte []b )
{
return (short)((b[0] & 0xff) << 8) | (b[1] & 0xff);
}
でも同じ結果です
0635デフォルトの名無しさん
2008/05/31(土) 04:33:27byte[] b = new byte[2];
((ByteBuffer)ByteBuffer.allocate(2).putShort(s).rewind()).get(b);
return b;
}
private short convertByteToShort(byte[] b) {
return convertByteToShort(b, 0);
}
private short convertByteToShort(byte[] b, int offset) {
return ByteBuffer.allocate(2).put(b, offset, 2).getShort(0);
}
0636デフォルトの名無しさん
2008/05/31(土) 05:24:530637デフォルトの名無しさん
2008/05/31(土) 06:07:55short 返してねえよ。int 返してる
0638デフォルトの名無しさん
2008/05/31(土) 06:13:47>>634です
0639294
2008/05/31(土) 12:09:33Bクラスを使用しないでAクラスでBしたクラスがする処理をしたらappletとしてうごきました。
ところでappletではファイルの読み書きとかが出来ないらしいけど、
何が出来て何が出来ないかということはどうやって解るんですか
0640デフォルトの名無しさん
2008/05/31(土) 12:53:26↓に載ってるものは出来ない
http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/security/permissions.html#PermsAndMethods
ただし↓のファイルに書いてあれば許可される
C:\Program Files\Java\jre1.6.0_06\lib\security\java.policy
0641デフォルトの名無しさん
2008/05/31(土) 13:13:04ありがとうございます。
とてもよく知ってますね。
そういう知識はどこで覚えたんですか?
なんでそんなに詳しいんですか?
どこかで習ったりしたんですか?
0642デフォルトの名無しさん
2008/05/31(土) 13:32:07公式サイトのドキュメント↓読んでれば見つかる
http://java.sun.com/javase/ja/6/docs/ja/
ここの 「セキュリティ」 と書いてあるリンクを辿っていけばセキュリティについて書かれている
さっきのページは 「セキュリティ」 → 「Java 2 SDK におけるアクセス権」
片っ端から全部読むには量が多すぎるが、必要なときに必要な情報だけ探して来れば十分
0643デフォルトの名無しさん
2008/05/31(土) 14:11:40static short ByteToShort(byte[] b)
{
return (short)((b[0] << 8) | b[1]);
}
static byte[] ShortToByte(short s, byte[] b)
{
b[0] = (byte)((s >> 8) & 0xFF) ;
b[1] = (byte)(s & 0xFF) ;
return b;
}
public static void main(String[] args)
{
short s = -1;
byte b[] = new byte[2];
System.out.println( ByteToShort( ShortToByte( s, b )));
}
君のメモリー(思い出は((無い
0644デフォルトの名無しさん
2008/05/31(土) 14:51:39メソッドから復帰してもロック・オブジェクトのモニタを持ちつづけるにはどうすればいいのでしょうか?
0645デフォルトの名無しさん
2008/05/31(土) 15:06:20それ用のスレッドを作ってモニタを持ち続けさせるか、
特にオブジェクトのモニタである必要がないなら java.util.concurrent.locks.ReentrantLock あたりを使う
0646デフォルトの名無しさん
2008/05/31(土) 15:08:020647デフォルトの名無しさん
2008/05/31(土) 15:15:55イテレーションが目的であって、要素が途中で変更されると困るときはどうするんでしょうか。
例えばjava.util.Vectorのsynchronizedは取得時のみでイテレーション中は変更される可能性があるわけで、これとは少し意味が違いますよね。
0648デフォルトの名無しさん
2008/05/31(土) 15:22:30使う側が必要なだけsynchronizedかける
例:
Vector v = ....;
synchronized (v) {
Iterator i = v.iterator();
while (i.hasNext()) {
...
}
}
0649デフォルトの名無しさん
2008/05/31(土) 15:28:450650デフォルトの名無しさん
2008/05/31(土) 15:30:060651デフォルトの名無しさん
2008/05/31(土) 15:32:360652デフォルトの名無しさん
2008/05/31(土) 15:35:43それだと違うインスタンスのロックにならないから、
例えば別のVectorインスタンス(クローンとか)から内部を変更されてしまい、
要求する仕様を満たさないよ。そういうのは見つけにくいバグになるんじゃないの?
0653デフォルトの名無しさん
2008/05/31(土) 15:39:59違うインスタンスって何
内部って何の内部
要求する仕様とやらをはっきりさせてくれ
0654デフォルトの名無しさん
2008/05/31(土) 15:42:130655デフォルトの名無しさん
2008/05/31(土) 15:43:12デスクトップ上にTestフォルダを作成し
その中にメインの "Test.java" と "DirTestA.java" を置きました。
別階層からTest.javaのオブジェクトを作るため
Test.javaに package Test; と書いてimportして作成できたのですが
そうするとTest.javaで 同じ階層内にいるDirTestA.javaのオブジェクトを作ろうとしたら
DirTestAのシンボルを解決できません。とでます。
試しに DirTestA.javaにも package Test; と書いて
Test.javaで import Test.DirTestA; と書いても
解決しません。
どうすれば、同じ階層内でも参照できますか?
0656デフォルトの名無しさん
2008/05/31(土) 15:43:390657デフォルトの名無しさん
2008/05/31(土) 15:56:13良く分からないなら無理に指摘しなくても大丈夫です。
問題が起きてから騒いでください。
>655
コンパイルする場所が間違ってるかも
Testフォルダがあるフォルダでコンパイルしてますか?
(パッケージ名は小文字推奨です。クラス名と区別が付かない等の為)
あとは、変更前のclassファイルが残ってる可能性も。
0658653
2008/05/31(土) 15:58:45質問に答えるために必要な追加情報を求めてるだけだよ
(言い換えると質問が意味不明)
0659デフォルトの名無しさん
2008/05/31(土) 16:04:25ひとつ上のディレクトリから
javac Test/Test.java
ってやってみるとどう?
0660デフォルトの名無しさん
2008/05/31(土) 16:05:46private int n;
Hoge( int i ){
n = i:
}
}
Hoge hoge = new Hoge( 10 );:
これに新しい値を入れたい場合
hoge = null;
hoge = new Hoge( 100 );
でないとダメですか?
null代入せず上から直接
hoge = new Hoge( 100 );
した場合はどうなりますか?
0661デフォルトの名無しさん
2008/05/31(土) 16:08:20直接入れても一緒。
null代入は不要。
0662デフォルトの名無しさん
2008/05/31(土) 16:17:350663デフォルトの名無しさん
2008/05/31(土) 16:19:26たしかC++だと落ちますよね?
0664デフォルトの名無しさん
2008/05/31(土) 16:33:30JavaのnewはGCが自動的に解放してくれる
0665デフォルトの名無しさん
2008/05/31(土) 16:53:54確かに不明部分があるけど、やってれば分かるようなこの程度のことを詳細に書いてもらったとしても、君程度の技術じゃ答えられないでしょうにww
ところで君はその質問にちゃんと答えられる自信はあるんですか?
0666デフォルトの名無しさん
2008/05/31(土) 16:55:43以下のようなソースを書いたのですが、
☆のところで怒られてしまいます。
[アクセス可能な型 Swing_main のエンクロージング・インスタンスがありません。 型 Swing_main のエンク ロージング・インスタンスで割り振りを限定する必要があります (たとえば x.new A() で、x は Swing_main のインスタンス)。]
★は怒られないのに何で☆はだめなのというところが知りたいのですが、
public class Swing_main extends JFrame{
public static void main(String[] args) {
//コンストラクタでFrame作成
new Swing_main("test");
//メソッドでFrame作成
Swing_test();
}
//コンストラクタ
Swing_main(String title){
super(title);
★addWindowListener(new WindowEventHandler()
};
//メソッド
public static void Swing_test(){
JFrame frame = new JFrame("Jframe1") ;
☆frame.addWindowListener(new WindowEventHandler());
}
//WindowListener
class WindowEventHandler implements WindowListener{
public void windowActivated(WindowEvent e) ・・など
}
}
0667デフォルトの名無しさん
2008/05/31(土) 17:05:34WindowEventHandlerはstatic classじゃないので、外側のクラスSwing_mainのインスタンスが必要
★はコンストラクタ内なのでthisが存在するが、☆はstaticメソッド内なのでインスタンスが存在しないからエラー
0668デフォルトの名無しさん
2008/05/31(土) 17:12:54>>658
こうやってすぐ叩かれるから無駄口を吐かない方がいいよ。
0669デフォルトの名無しさん
2008/05/31(土) 17:19:39回答ありがとうございます!
WindowEventHandler をstaticにしたところ怒られなくなりました。
ただ、☆にはframeというインスタンスがあるんですが、
これだと駄目という部分が理解できません。
そもそもこういうつくりは駄目だということでしょうか
0670デフォルトの名無しさん
2008/05/31(土) 17:25:55そのframeはJFrameであって、Swing_mainじゃないし。
もし
Swing_main frame = ..... ;
であるなら、
frame.new WindowEventHandler()
のように書ける。
0671デフォルトの名無しさん
2008/05/31(土) 17:26:24OpenCVの移植があれば最高なのですが、ぐぐっても出てこないということは無いのですかね。。
0672デフォルトの名無しさん
2008/05/31(土) 17:29:21コードを書かないと実力が落ちそう
そこで、将棋でいう「詰め将棋」みたいに、シンプルなプログラミングの問題を掲載したサイトとか本とか無い?
0673デフォルトの名無しさん
2008/05/31(土) 17:32:29っ http://pc11.2ch.net/test/read.cgi/tech/1212085079/
0674デフォルトの名無しさん
2008/05/31(土) 17:33:58そのVectorに関しての質問です。
cloneで生成したインスタンスから、clone元のインスタンスを操作する方法を教えてください。
よろしくお願いします。
0675デフォルトの名無しさん
2008/05/31(土) 17:39:380676デフォルトの名無しさん
2008/05/31(土) 17:41:34?
0677デフォルトの名無しさん
2008/05/31(土) 19:31:14ここを見て勉強していたのですが、
awtでは描画処理をpaint()をオーバーライドして行っていたのに、
swingではpaint()のオーバーライドは推奨されていない、と書かれています。
何故使ってはマズいのかということと、
swingでGraphicsクラスのオブジェクトを得て描画処理するのはどういう風にやるのが普通なのか教えて下さい。
0678デフォルトの名無しさん
2008/05/31(土) 19:41:32paintは、そのコンポーネント自身だけでなく、ボーダーや子コンポーネントも描かないといけないのだけれど、
オーバーライドするとそれが行われなくなってしまうのでマズイ。
swingでは、代わりに protected void paintComponent(Graphics g) をオーバーライドしてください。
0679678
2008/05/31(土) 19:53:30paintComponent を持ってるのは JComponent の子孫だけ。
JApplet に直接描きたい場合は paint をオーバーライドするしかない。
普通は中に swing コンポーネントを配置したいから JApplet を使うのであって、JApplet に直接描くのはあんまりしないと思う。
0680デフォルトの名無しさん
2008/05/31(土) 20:10:300681デフォルトの名無しさん
2008/05/31(土) 20:16:11ActionとかTimerとかSwingWorkerとか
↓みてみ
http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/package-summary.html
0682デフォルトの名無しさん
2008/05/31(土) 21:08:230683デフォルトの名無しさん
2008/05/31(土) 21:18:08初心者のためのプログラミング言語ガイド Part9
http://pc11.2ch.net/test/read.cgi/tech/1210941509/
0684デフォルトの名無しさん
2008/05/31(土) 21:19:380685デフォルトの名無しさん
2008/05/31(土) 22:15:20AWTでは全く問題ないのにswingはpaint関連を知っていると、少し変な設計なんですがどう思いますか?
0686デフォルトの名無しさん
2008/05/31(土) 22:55:57まぁ別にいいんじゃない?
気になるならFrameの上にJAppletを置けば
0687デフォルトの名無しさん
2008/05/31(土) 22:59:36そうすれば同じようにJFrame上でも動作可能になる。
0688デフォルトの名無しさん
2008/05/31(土) 23:05:56そうするとSwingのUIから外れちゃいませんか?
0689デフォルトの名無しさん
2008/05/31(土) 23:11:270690689
2008/05/31(土) 23:13:420691689
2008/05/31(土) 23:16:520692デフォルトの名無しさん
2008/05/31(土) 23:32:25そういう細かいことが気になるんなら、687 の言うように JPanel 上にすべてを構築して、
アプレットの場合はそのパネルを JApplet の中に置き、
アプリケーションの場合はそのパネルを JFrame の中に置くようにすればいいよ
0693デフォルトの名無しさん
2008/05/31(土) 23:32:43pattern = Pattern.compile("^Java.*");
matcher = pattern.matcher("JavaでHello World");
boolean b = matcher.matches();
System.out.println(b);
pattern = Pattern.compile(".*World$");
matcher = pattern.matcher("JavaでHello World");
boolean c = matcher.matches();
System.out.println(c);
このとき同じ文字列に1回1回compileとmatcherを使ってしまいます
この場合ならPattern.compile("(^Java.*|.*World$)");とまとめれば済みますが
これをもっと多数(50とか60とか)に増やすときにはものすごく長くなってしまうと思います
なんとかスッキリまとめる方法はないですか?
0694デフォルトの名無しさん
2008/05/31(土) 23:39:280695デフォルトの名無しさん
2008/06/01(日) 00:09:19"ab"+"cd"+"ef"...
とやればよい。
そのUIってのは、Menuとかがswingらしくなくnative依存という事だと思うんだけど。
で、>>687はそういうことを言ってたのか。オレの強力なエスパー使っても分からなかった・・
0696デフォルトの名無しさん
2008/06/01(日) 00:16:22つまりPattern.compile("^Java.*"+".*World$");というように記述すればいいのですか?
0697デフォルトの名無しさん
2008/06/01(日) 00:48:02その質問内容だと、「愚直に|で繋げ」、としかアドバイスできないと思
う。長い正規表現の記述が長くなるのは当たり前。
やりたいことをもっとハイレベルに書けば、正規表現とは違ったスマー
トな解決方法もあるかもしれない。
0698デフォルトの名無しさん
2008/06/01(日) 01:16:19ふと思ったのだが、文字列を1行にしようとしてないか?
"(^Java.*"
+"|.*World$)"
って2行にして書いてもコンパイル時にまとめられるから"(^Java.*|.*World$)"と同じ事だぞ。
0699デフォルトの名無しさん
2008/06/01(日) 01:46:22ただつなぐだけなら誰でも分かる話
0700693
2008/06/01(日) 02:18:15判定していくプログラムですね
ただ、パターンが大量にあるのでそれをソースコードの中に全部書いていくのは
無駄が大量なのではないかと疑問に思ったしだいで
チェックしたいパターンを別のファイルに記述しておいて
そのファイルを読み込むという方法も考えましたが、改行文字の処理が面倒そうですし
0701デフォルトの名無しさん
2008/06/01(日) 02:20:240702デフォルトの名無しさん
2008/06/01(日) 02:56:43なら、
>チェックしたいパターンを別のファイルに記述しておいてそのファイルを読み込む
でもいいと思うけど。配列にした方が早いかも知れんが。
>改行文字の処理が面倒そう
これが良くわからん。BufferedReader#readLine()で1行ずつ読むだけだと思うのだが、何かまずいのか?
0703デフォルトの名無しさん
2008/06/01(日) 03:04:300704デフォルトの名無しさん
2008/06/01(日) 03:08:401行ごとに
^Java.*
みたいなのを書いていったファイルを読むと考えていますが
readline()は改行文字を読まないんでしたっけ?
それなら1行呼んでそれに+していく方法に問題は無いんですが
0705デフォルトの名無しさん
2008/06/01(日) 03:11:50基本が出来ないやつはいつまでたっても馬鹿
0706デフォルトの名無しさん
2008/06/01(日) 03:19:06申し訳ございません
このような愚行でスレを汚してしまったことを深くお詫びします
>704は無視していただいて構いません
0707デフォルトの名無しさん
2008/06/01(日) 03:35:11↓作ったけど、もうちょっと最適化できないでしょうか?
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=30326
ファイル名とかパスを除くための、
特に46〜50行目ぐらいの↓が無駄な気がするけど、いい案が思い浮かばないです。
// (1)Normalize
BufferedImage bimg = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_3BYTE_BGR);
Graphics g = bimg.createGraphics();
g.drawImage(icon.getImage(), 0, 0, null);
ImageIcon normalize_icon = new ImageIcon(bimg);
0708デフォルトの名無しさん
2008/06/01(日) 04:33:040709デフォルトの名無しさん
2008/06/01(日) 04:49:01圧縮形式の違いは無視したい。
PNGやBMPとか、クリップボードから取り込んだイメージとかとか
デコード済みの画像から作りたいです。
0710デフォルトの名無しさん
2008/06/01(日) 05:08:050711デフォルトの名無しさん
2008/06/01(日) 09:55:50ImageIconからシリアライズ可能なイメージ情報だけ取得したり
できないのかなと思ったのだが、無い?
0712デフォルトの名無しさん
2008/06/01(日) 10:18:26java.awt.image.PixelGrabber つかって画素データ取り出してから
画素データのハッシュ値計算すりゃいいんでは?
0713デフォルトの名無しさん
2008/06/01(日) 12:16:44これでどう
static byte[] getImageHash(String path) { return getImageHash(ImageIO.read(new File(path))); }
static byte[] getImageHash(URL url) { return getImageHash(ImageIO.read(url)); }
static byte[] getImageHash(BufferedImage image) {
int[] pixels = new int[image.getWidth() * image.getHeight()];
image.getRGB(0, 0, image.getWidth(), image.getHeight(), pixels, 0, image.getWidth());
return MessageDigest.getInstance(HASH_ALGORITHM).digest(pixels);
}
0714デフォルトの名無しさん
2008/06/01(日) 13:50:51スーパークラスA, それを継承しているサブクラスBがあるとして
明示的なキャスト変換以外に
型をスーパAからサブBに変換する方法はありますか?
0715デフォルトの名無しさん
2008/06/01(日) 13:58:25Visitorパターン、またはダブルディスパッチ
0716デフォルトの名無しさん
2008/06/01(日) 18:45:11その手があった。サンクス
Officeサンプル画像のBlue hills.jpgで50回ほどベンチマークしてみたけど
(JDK 1.6.0_05-b13)で比較したら、new int[];BufferedImage.getRGBのほうが
残念ながら、2割ほど遅かった。
(new int[]とそこへのコピーがオーバーヘッドになっちゃうのかな?)
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=30328
>>712
PixelGrabber、考えて見まつ
0717デフォルトの名無しさん
2008/06/01(日) 23:26:06その中にtestaとtestbのフォルダを作って
testaフォルダの中にあるjavaファイルから
testbのフォルダの中にあるファイルデータaa.textを
ロードする場合の指定は
testb/aa.textでいいでしょうか?
実行すると
java.lang.NullPointerException
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
という例外が出るんですが
0718デフォルトの名無しさん
2008/06/01(日) 23:35:26お前の質問じゃ、それでもいいともそれではダメともどちらでも取れる
0719デフォルトの名無しさん
2008/06/02(月) 00:11:45釣りなのか?なんか笑える
0720デフォルトの名無しさん
2008/06/02(月) 00:32:340721デフォルトの名無しさん
2008/06/02(月) 03:38:56* elements themselves are not copied.)
public Object clone() {
ArrayList<E> v = (ArrayList<E>) super.clone();
v.elementData = Arrays.copyOf(elementData, size);
これ、ディープ・コピーじゃないんですか?
以前のソースがないので分かりませんが、clone()の実装がバグってるんでしょうか。
0722デフォルトの名無しさん
2008/06/02(月) 05:41:046のArrayListの実装?
どうみてもシャローコピーなんだが。
super.clone()
は継承元ではオーバーライドされていないからObject#clone()呼び出しと同義だし、
v.elementData = Arrays.copyOf(elementData, size);
は単に各要素への参照値をクローンしたArrayListの方にコピーしているだけでしょ?
コメントにも要素自身はコピーされないって書いてあるやん。
0723デフォルトの名無しさん
2008/06/02(月) 07:56:08これでしょ問題なのは。
v.elementData = this.elementData
シャローコピーといえば、普通はこうじゃないの?
オブジェクト(クラス)がArrayListだから、クラスの意味からすれば
オブジェクトのフィールドにある配列の内容の方もコピーするってのは分からなくもないけど、
シャローコピーは配列の参照だけコピーで内容はやんないんじゃなかったか。
0724デフォルトの名無しさん
2008/06/02(月) 07:57:04>
> シャローコピーといえば、普通はこうじゃないの?
コピーになっとらんがな。
0725デフォルトの名無しさん
2008/06/02(月) 08:05:34そもそも
> * Returns a shallow copy of this <tt>ArrayList</tt> instance.
をわざわざ引用していたり
> clone()の実装がバグってるんでしょうか
などと言っているところからみて
> ディープ・コピーじゃないんですか?
は配列のコピーうんぬんの話でなく
ArrayList#clone()のことを質問してるんじゃないの?
0726デフォルトの名無しさん
2008/06/02(月) 08:08:25要素が変更されたらおかしくなるし、確かにコピーになってない。
そうするとコレクションに限っては、cloneの仕様を満たすのは、やっぱこれでいいじゃないの?
0727デフォルトの名無しさん
2008/06/02(月) 08:10:54継承しても、cloneを再実装しようかどうか迷うじゃん。
0728デフォルトの名無しさん
2008/06/02(月) 08:17:41インスタンスメソッドである事に意味があるんじゃね?
コンストラクタは型わかってないと呼べないし。
0729デフォルトの名無しさん
2008/06/02(月) 08:25:07インスタンスなら、キャストしないといけないから結局はキャスト先の型がわかんないとダメでしょ。
リフレクト使うのもいいけど、そうれなら全て継承元の(ArrayList)のキャストになってしまう。
型分かってんなら、継承していてもいなくても、ArrayListのコンストラクタでいいでしょ。
イマイチわかんないな。
cloneが実装されている標準のクラスはあまりないから馴染みないけど、どういうときに使うんだ?
0730デフォルトの名無しさん
2008/06/02(月) 08:41:41(T)arraylist.clone() のキャスト先の型Tは
T extends Cloneable & List みたいちょっとだけでも抽象化できる。
コンストラクタ呼ぶ時ほど具体的な型名は必要ない。
0731デフォルトの名無しさん
2008/06/02(月) 08:58:55配列の clone() と似た動作を目指しただけだと思うが。
片っ方を変更したら、もう片方も変更されるようなものが欲しければ
List#subList(int, int) 使えって言われるだろうし。
0732デフォルトの名無しさん
2008/06/02(月) 14:58:40それなら、cloneじゃなくてdupとか別の名前でもいい気がしたけど
Vectorのころにcloneを実装しちゃったからその名残かな。
0733デフォルトの名無しさん
2008/06/02(月) 15:10:46教えてください。FrameやWindowはつかってません。
0734デフォルトの名無しさん
2008/06/02(月) 15:53:18シャローコピーならこれでコピーされてるでしょ。
どうせコピー元が変更されたり追加されて内部の配列の参照が変更されても、
コピー先はその時点での状態がコピーできればいいんだし。
コピーになってないとかいって、意味わかんないな。
v.elementData = Arrays.copyOf(elementData, size);
でも実質同じだから冗長と言えなくもない。
0735デフォルトの名無しさん
2008/06/02(月) 16:21:15検索した
ttp://www.alles.or.jp/~torutk/oojava/maneuver/1998/swing/swing_ja.html
>また、フォーカスを持つコンポーネントをプログラム中から指定することもできます。JComponentクラスのメソッド、requestFocus()です。
これでいい?
0736デフォルトの名無しさん
2008/06/02(月) 17:24:05<%@ page contentType="text/html;charset=Shift_JIS" %>
<%! String a=""; %>
<%
//↓これを書くとjsp:paramで何故かエラー
request.setCharacterEncoding("JISAutoDetect");
a=request.getParameter("nam");
%>
<html>
<head>
<title>sample</title>
</head>
<body>
<jsp:include page="include.jsp">
<jsp:param name="param" value="<%=a %>" />
</jsp:include>
</body>
</html>
0737736
2008/06/02(月) 17:26:02<div align="right">
<%= request.getParameter("aaa") %>
</div>
実行結果:
org.apache.jasper.JasperException: An exception occurred processing JSP page /sample.jsp at line 16
(16行目は<jsp:include page="include.jsp">の行です)
何故かjsp:includeでUnsupportedOperationExceptionになるんですが。
<jsp:include page="include.jsp" />と閉じると何事も無く実行され、
request.setCharacterEncoding("JISAutoDetect");をコメントアウトしても実行できます。
なぜでせう?
0738デフォルトの名無しさん
2008/06/02(月) 18:15:280739デフォルトの名無しさん
2008/06/02(月) 18:24:31v.elementData = this.elementData
の代入すら必要ないんじゃないの?
0740デフォルトの名無しさん
2008/06/02(月) 18:28:47これを個人毎に文字の色とかコンパイラのURIとかの各種情報を保存して
起動時に設定するようにしようかと思ったのですが、
こういう設定の保存ってどういう形式で行うのが普通なのでしょうか?
「設定.txt」とかいう形で保存するのも何か変な気がします。
0741デフォルトの名無しさん
2008/06/02(月) 18:54:040742デフォルトの名無しさん
2008/06/02(月) 19:11:39コレクションの方はclone()あるのに、値の方はなんでないんでしょうか。
それもthis用のコンストラクタとでも言うのか、それ用のコンストラクタすら用意されてないのもあり、
もしコピーするならかなり遠回りな操作をしなければならないですよね。
イミュータブルだとしても、classもfinalのも多く、設計上に意図としてはインスタンスのコピーはするなってことなんですか?
0743デフォルトの名無しさん
2008/06/02(月) 19:22:01Immutableなオブジェクトのコピーとって何したいの?
0744デフォルトの名無しさん
2008/06/02(月) 19:31:050745デフォルトの名無しさん
2008/06/02(月) 19:33:230746デフォルトの名無しさん
2008/06/02(月) 19:40:30サラッとスゴい事をおっしゃる。
0747デフォルトの名無しさん
2008/06/02(月) 19:47:31cloneを実装してないのは、たぶんイミュータブルなインスタンスをコピーできても、うれしいことが特に無いからじゃないかな
finalは、イミュータブルな性質を維持するために必要なことだから、仕方ない
0748デフォルトの名無しさん
2008/06/02(月) 20:02:07こういうこと平気で書いちゃうあたりが、イミュータブルとかextendsとかを分かってないんだろうね。
インスタンスとcloneも同じく、ごっちゃにしてるんだろうw
0749デフォルトの名無しさん
2008/06/02(月) 20:02:09もし仮にNumberやStringをコピーできるとしたら、それがどんな場面で役に立つ?
0750デフォルトの名無しさん
2008/06/02(月) 20:04:22ありがとうございます!
propertiesをキーワードにググって実装してみたところ出来ました!
>>746
すいません、やっぱり.txtで保存するのはおかしいですよね;
直感的に変なのは分かるのですが、テキストファイルだとデータと値の関係がないとか、
そういうことが.txtを用いない理由なんでしょうか?
0751デフォルトの名無しさん
2008/06/02(月) 20:29:52仮にも何も、もう設計上出来ないんだよ。
まあ書いてもいいんだけどね(笑)
インスタンスをコピーするってことはどういうことなのかをよく理解すればいいんじゃないの?
0752デフォルトの名無しさん
2008/06/02(月) 20:30:47こういうこと平気で書いちゃうような人だしなぁw
0753デフォルトの名無しさん
2008/06/02(月) 20:58:23俺がバカだからか、よくわからないので教えてほしい。
インスタンスをコピーするってことはどういうことなんだ?
コピーなんかせずに同じインスタンスを使えばいいじゃないか?
0754デフォルトの名無しさん
2008/06/02(月) 21:00:45いや、スゴい事ってのは
>Javaで開発用エディタを作ったのですが、
の部分。
質問するより答える立場の人でしょ。
0755デフォルトの名無しさん
2008/06/02(月) 21:01:58・これは普通shallow copyと言わないのでは?
という話だよね。たしかに「オブジェクトのshallow copy」とは言えない。
フィールドにぶらさがったものを複製しているからね。
でも、「(このオブジェクトが表している/保持している)配列のshallow copy」ではあるでしょ。
参照の羅列としての配列を複製しているだけで、配列の要素をいちいち複製していないから。
〜 完 〜
てことじゃないのかい
0756デフォルトの名無しさん
2008/06/02(月) 21:04:53配列にぶらさがっているオブジェクト
と言った方がいいか
0757デフォルトの名無しさん
2008/06/02(月) 21:21:20でも変わる事が期待されるでしょ。
o2=(...) o1.clone ();
o1.set (1,val)
シャローコピーって書いてあるなら、このときo2, o1の保持してるvalは同じであってほしいよね。
今さらだから、APIドキュメントの方をそう書き直せばすむんじゃないの?
確かVector.clone()の記述はそんな風に書いてあった(jdk 1.5だけど)。
ドキュメントにうそ書いてあると、実装するとき困るんだよ。
0758デフォルトの名無しさん
2008/06/02(月) 21:25:47> clone()したくローン先の方で変更したら、クローンもとのオブジェクト
> でも変わる事が期待されるでしょ。
クローンを殴ったらクローン元も痛みを共有するわけですね、わかります
0759デフォルトの名無しさん
2008/06/02(月) 21:43:53> (The elements themselves are not copied.)
って但し書きの意図を汲めば、まー、まず迷わないと思うんだけどどうよ。
でも、ここで「elements」を「参照」ではなく、「参照先のインスタンス」だと解釈しなければならないってのが、
微妙といえば微妙なのかな。ふつうわかるんじゃね?名前を書き写さずに何が名簿のcloneなのかっていう。
>>757
> シャローコピーって書いてあるなら、このときo2, o1の保持してるvalは同じであってほしいよね。
全然思わない。(一応言っておこうw)
0760デフォルトの名無しさん
2008/06/02(月) 21:58:51>clone()したくローン先の方で変更したら、ローンもとのオブジェクト
気がつかなったかけど笑えるね。たぶん自己破産の相談なのかな?
>全然思わない。(一応言っておこうw)
長年使ってると、全然思うのが、まあ普通なんだけどw
その挙動がArrayListにふさわしくないなら、clone実装すんなってこと。もしくはAPI DOCのバグを書き直せ。
どうせ翻訳の人も見てんだろうしSUNに言っといてよ。頼むよ。
0761デフォルトの名無しさん
2008/06/02(月) 22:03:40>Javaで開発用エディタを作ったのですが、
実はTextAreaをaddしただけでも、偉そうに言えばこうもいえるんじゃないの?
どう凄いのかわかんないんだけど。
0762デフォルトの名無しさん
2008/06/02(月) 22:25:02一応言うだけ言ってみるけど、トリップつけてくれないかな
0763デフォルトの名無しさん
2008/06/02(月) 22:27:390764デフォルトの名無しさん
2008/06/02(月) 22:28:170765デフォルトの名無しさん
2008/06/02(月) 22:34:36>長年使ってると、全然思うのが、まあ普通なんだけどw
悪いけど風呂入ってくるから、全然思わないにもう一票入れておいてよ
0766デフォルトの名無しさん
2008/06/02(月) 22:39:21開発用「エディタ」なので、ホントIDEみたいに立派なもんじゃないです><;
インテリセンスとかキーワード色分けとかオートインデントとか
IDEの中で自分が欲しい部分だけ取って軽く書きたいときに使う用に作った程度です。
普段はC/C++畑でJavaは全然なので、勘違いさせてすいません。。
0767デフォルトの名無しさん
2008/06/02(月) 22:56:37Component.createImage(int width, int height);
でcreateImageしたのですが、これに透過色を設定したgifファイルをdrawImageすると透過される(ハズ)の部分が白で塗りつぶされた状態になってしまいます。
試しにcreateImageを使わないでただgifファイルをdrawImageすると透過はされていたのでgifファイルには問題がないように思います。
また、createImageしたImageにgifファイルを書き込まずImageをdrawImageしても白で塗りつぶされてしまっています。
0768デフォルトの名無しさん
2008/06/02(月) 23:06:34component.getGraphicsConfiguration().createCompatibleImage(width, height, Transparency.TRANSLUCENT);
でイメージを作って、gifを乗せる前に
((Graphics2D)g).setComposite(AlphaComposite.Src);
するといいよ
0769デフォルトの名無しさん
2008/06/02(月) 23:17:10> clone()したくローン先の方で変更したら、クローンもとのオブジェクト
> でも変わる事が期待されるでしょ。
期待されない。
> 確かVector.clone()の記述はそんな風に書いてあった(jdk?1.5だけど)。
書いてない。
> Returns a clone of this vector. The copy will contain a reference to a clone of the internal data array,
> not a reference to the original internal data array of this Vector object.
0770デフォルトの名無しさん
2008/06/02(月) 23:20:26ご丁寧にどうもありがとうございます。
無事透過したまま書き込むことができました。
それにしても他のソースで使ってるコードなのに突然動作が変わるなんてなんだか怖いです。
精進します・・・。
0771デフォルトの名無しさん
2008/06/02(月) 23:25:59> clone()したくローン先の方で変更したら、クローンもとのオブジェクト
> でも変わる事が期待されるでしょ。
それをしたいなら、o2=o1;でいいよーな。
0772デフォルトの名無しさん
2008/06/03(火) 00:31:41納得いかない。
char test1 = '';
char test2 = null;
どっちも駄目なんだよな。
0773デフォルトの名無しさん
2008/06/03(火) 00:33:580774デフォルトの名無しさん
2008/06/03(火) 00:37:250775デフォルトの名無しさん
2008/06/03(火) 00:39:37C#などはいかが?
0776デフォルトの名無しさん
2008/06/03(火) 00:52:21> char test1 = '';
これはないでしょw
Unicodeだっつってんだからその範囲内でなんとかしようよ
0777デフォルトの名無しさん
2008/06/03(火) 00:57:350778772
2008/06/03(火) 01:13:41int型にもnullを代入できないや・・・。
昔は代入できたよね?
勘違いかな?
0779デフォルトの名無しさん
2008/06/03(火) 01:23:15あそうか、「何charにnull突っ込んでんのww」と未熟者に突っ込む機会喪失問題か
0780デフォルトの名無しさん
2008/06/03(火) 01:23:410781デフォルトの名無しさん
2008/06/03(火) 01:30:420782デフォルトの名無しさん
2008/06/03(火) 01:32:050783デフォルトの名無しさん
2008/06/03(火) 02:19:38nullは参照型のリテラルであり参照型からプリミティブ型への暗黙の型変換は
プリミティブ型のラッパークラスからのauto-unboxingによるもの以外にない
0784778
2008/06/03(火) 02:37:23暗黙の型変換を使えば、プリミティブ型にnullを代入出来るって言ってるのかな?
ちょっと判り難かったから・・・すみません。
とりあえず有難う。
もう寝なきゃ・・・。
0785デフォルトの名無しさん
2008/06/03(火) 02:39:33君、しつこいよ。荒らしと同じだよ。
そういう君独自の解釈はもういいから、早くSUNの翻訳担当の人に言っといてよ。
0786デフォルトの名無しさん
2008/06/03(火) 02:41:40場を和ませたい人がいるのか、たぶん釣りだと思うんだがww
0787デフォルトの名無しさん
2008/06/03(火) 02:42:52ごめん、これで最後にするけど、>>764以降漏れは無視してるから
0788デフォルトの名無しさん
2008/06/03(火) 02:59:29一日中2CHに張り付いてんですか…邪魔する気はありませんけど、ホント、ご苦労なことですね…
0789デフォルトの名無しさん
2008/06/03(火) 03:29:09釣りじゃなくてマジ?
プリミティブ型にはそもそもnullという概念自体存在しない。
0790デフォルトの名無しさん
2008/06/03(火) 05:58:030791デフォルトの名無しさん
2008/06/03(火) 10:57:57charに無効な値を入れたいなら、U+FFFFというソレ用のコードポイントがある。
0792784
2008/06/03(火) 11:35:32大マジまんだけど、でもようやく理解できた。
int型にnullへのポインタ突っ込むのは無理があるもんな。(遠い昔C言語をやっていた頃の記憶を呼び起こした。間違ってるかも。)
>>791
それ使える。
int(Unicode補助文字)ならU+FFFFFFFFって訳ね。
0794デフォルトの名無しさん
2008/06/03(火) 16:40:140795デフォルトの名無しさん
2008/06/03(火) 17:55:270796デフォルトの名無しさん
2008/06/03(火) 17:57:040797デフォルトの名無しさん
2008/06/03(火) 20:16:55Eclipseの使用を考えています。
そのためには、どの程度のPC性能が必要ですか?
現在使用中のPCは、
CPU Pentium4 3.0GHz
MEM 1Gbyte
です。
0798デフォルトの名無しさん
2008/06/03(火) 20:20:14-------------------------------
class sample1
{
public static void main(String args[])
{
double ans3 =(double)5/3;
System.out.println("5÷3は" + ans3 + "です。");
}
}
---------------------------------
上のようなソースがあるとして、
5/3の前に(double)の表記を入れる理由というのはなぜなんでしょうか?
すでにdouble ans3 のところでdoubleと書いてあるのでans3には、
ちゃんと小数点が含まれた答えが表示されると思うのですが。
もしかしてアホすぎる質問でしょうか
0799デフォルトの名無しさん
2008/06/03(火) 20:20:52大丈夫だと思うが、とにかく落としてきて軽く動かしてみ
どのぐらいが「快適に動かせる」と感じるかは、個人差がある
0800797
2008/06/03(火) 20:34:03> 大丈夫だと思うが、とにかく落としてきて軽く動かしてみ
とりあえず動くようで安心しました。さっそく、インストールしてみます。
回答ありがとうございます。
0801デフォルトの名無しさん
2008/06/03(火) 21:21:385/3するときにはそれがdouble型に代入されるなんて気にしちゃいない。
つーか、思ってるだけじゃなく、キャストのありなしで結果が違うことくらいは試せ。
0802デフォルトの名無しさん
2008/06/03(火) 21:34:41http://www.lcv.ne.jp/~kenmio/yomimono/yomimono4.htm
ここの「5割る2は2?」って所を見ると良いよ。
0803デフォルトの名無しさん
2008/06/03(火) 21:46:15ありがとうございました。
これで寝れそうです。
0804デフォルトの名無しさん
2008/06/03(火) 21:48:18マルチ先にも断っとけよ。
0805デフォルトの名無しさん
2008/06/04(水) 01:39:53今作っているソフトの中でJButtonやJTextなどのオブジェクトが多数出現します。
こうした場合配列にしておくと
JButton button[]=new JButton[BUTTONNUM];
for(int i=0;i<button.length;i++)
{
button[i].〜
}
みたいに一括で処理できるものもあるので便利なのですが、
個別の名前(例えばdeletebutton)を付けた場合に比べて
button[1]、button[2]では何のボタンか分かりづらい面があります。
こういう場合、一般的にor皆さんの場合どうしているか教えてください。
0806デフォルトの名無しさん
2008/06/04(水) 01:43:31HashtableとgetIndex(String)という関数を作って、
Hashtabel hash=new Hashtable();
hash.put("delete","0"");
hash.put("prev","1");
・・・
public int getIndex(String buttonname)
{
return Integer.parseInt((String)hash.get(buttonname));
}
button[getIndex("delete")]という風にしています。
0807デフォルトの名無しさん
2008/06/04(水) 03:46:46enum MyButton { DELETE, ... }
... button[MyButton.DELETE] ...
(いきなり質問の条件を無視してみる)
0808デフォルトの名無しさん
2008/06/04(水) 04:08:34そういうハッシュテーブルの使い方をするくらいなら、
間接的に配列のインデックスなんかに結びつけるんじゃなくて、
HashMap<String, JButton> buttons = new HashMap<String, JButton>();
buttons.put("delete", new JButton());
buttons.put("prev", new JButton());
...
buttons.get("delete").〜
みたいに名前とインスタンスを直接結び付けておいてもいいような。
>>805のように一括して処理したいようなループを回すときは、
for (JButton button : buttons.values()) {
button.〜
}
のようにできるし。
0809デフォルトの名無しさん
2008/06/04(水) 04:30:13たぶんそれコンパイルできない
Cの列挙型ではないからもしやるならbutton[MyButton.DELETE]でなくbutton[MyButton.DELETE.ordinal()]だ
0810デフォルトの名無しさん
2008/06/04(水) 08:03:06個別の名前をつけて配列にも入れておけばいいじゃない
JButton deleteButton = new JButton();
JButton prevButton = new JButton();
...
JButton button[] = { deleteButton, prevButton, ... };
0811デフォルトの名無しさん
2008/06/04(水) 08:45:220812デフォルトの名無しさん
2008/06/04(水) 11:26:13たぶん、そういう生成もループで済ませたいんじゃないかな。わかんないけど。
たしかに「多数」ってどのくらいなのか気になるw
0813デフォルトの名無しさん
2008/06/04(水) 12:11:24一括に処理したいというのと個別に名前で指定したいという要求はバッティングするんじゃ?
本当に希望しているのは、個別に指定したいけど、コード量は減らしたいってだけじゃないの?
それなら、
private JButton getButton(String name,...){}
JButton delete = this.getButton("削除",...)
みたいなビルダーメソッドを作ればいいのでは
0814805
2008/06/04(水) 12:57:50ですね、一括で処理したいのは生成も含めて、
パネルへの追加とかフォントの指定とかまとめて共通の処理を行う部分で、
個別に判断する所というのはActionListenerを実装したりする部分なんかです。
色んな方法を聞けて勉強になりました、列挙体に至ってはJavaであることを知らなかった…。
今日学校からやってみます、本当にありがとうございます!
ちなみにリネーマ&ファイル整理用のプログラムなのでボタンは今は
プレビュー、リネーム、ファイル検索、削除、移動、ディレクトリ表示くらいですが、
テキストフィールドの方が
ワイルドカード、正規表現、前方一致、後方一致、ユーザ定義用etcとたくさん指定出来るように作ってあって11個くらいといった感じでしたw
0815デフォルトの名無しさん
2008/06/04(水) 17:03:17>>57のような意味不明なレスをすると自分のレス番号が該当になったとき
>>58のように「おかしい」とおもわないといけない儀式でもあるのか?
おかしいと思ってる>>58まったく理解できないのだが。
別の意味でおかしいとは思うけどさ
0816デフォルトの名無しさん
2008/06/04(水) 17:07:340817デフォルトの名無しさん
2008/06/04(水) 17:09:58せいぜいそれぐらい(11個)とか思ったけど、チェックボックス(とラベル)が100個超えてるUIのパターンもあるから。
それならソースコード11行とか100行にわたり書けばいいんじゃないかと思うけど。
0818デフォルトの名無しさん
2008/06/04(水) 17:27:06大昔、いろんなラベルがついた箱が線でくっついて
うにゃうにゃ(バネモデルか何かで)動くデモってのを見た記憶があるんだが、
うまく見つけられなくて困り中。
誰か在処か名前をご存じでしたら教えてください。
0819デフォルトの名無しさん
2008/06/04(水) 17:39:42100 2007/03/31
101 2007/04/30
102 2007/05/29
103 2007/06/27
104 2007/07/27
105 2007/08/28
106 2007/09/19
107 2007/10/18
108 2007/11/07
109 2007/11/25
110 2007/12/15
111 2008/1/13
112 2008/2/8
113 2008/3/1
114 2008/4/5
115 2008/5/12
Javaスレの進行速度は月1ペースか。今から4年ほど前はスレが50くらいだったのに
急激にスレの消費速度が加速していって2007年3月末の時点で100になったときは
そのスレッドの消費速度の速さには驚いたものだ。
Java登場当初にはAppletの影響でJavaは遅いなどと言われC/C++プログラマの間でも
不評が多く、プログラム板、プログラマ板で頻繁にJava叩きが行なわれていたにも関わらず、
これほどにまでJavaの知名度の人気が上がるとは誰が予想しただろうか。M$が2000年にC#を発表した
とき、一部の者やM$の関係者は、「これからはC#が普及し、Javaは衰退する」と言っていたにもかかわ
らず、あれから8年経った今でもJavaは衰退する様子を見せず、後から登場したC#はほとんど普及し
ていないという有様。
気がつけばJava関連の求人も毎年毎年増え、Javaだけでも食うに困らない状況にまでなった。
書店のコンピュータ関連書籍コーナーにはJavaだけで占められた本棚が大きく占有していった。
今では書店ではAjaxやWeb関連書籍が多いが、WebにJavaを利用することはもはや当たり前に
なった感がある。M$のC#を揺るがした背景にはGoogleの影響が少なからずあるのではないかと思えてくる。
0820デフォルトの名無しさん
2008/06/04(水) 17:40:44スレは12月で122、2009年1月で123、2010年1月で135、2011年1月で147、
2012年1月で159、2013年1月で171、2014年1月で183、2015年1月で195、
2016年1月で207、2017年1月で219、2018年1月で231、2019年1月で243、
2020年1月で255にまで伸びるだろう。
その頃までに、2chがあるのか、今の2chが存在しうるかどうかはわからないが。
blogなどの外部のコミュニティに徐々に質問者が移行するときがやってくるだろうか?
Javaは何十年経っても古いプログラムを動かすことができる。
だからその頃にこのスレがなくなってもJavaは相変わらず健在だろう。
0821デフォルトの名無しさん
2008/06/04(水) 17:41:45なんか口に出さないで指指された気分になるじゃん。
m9(^Д^)
0822デフォルトの名無しさん
2008/06/04(水) 17:43:240823デフォルトの名無しさん
2008/06/04(水) 18:25:570824デフォルトの名無しさん
2008/06/04(水) 18:29:03人殺し食っちゃったんだっけな?
C++/C#好きで、宗教(GNU?)狂信者だって噂だよw
そんなやつと同じにされてもね。
0825デフォルトの名無しさん
2008/06/04(水) 18:32:360826デフォルトの名無しさん
2008/06/04(水) 18:35:07JDKに付いてるデモなら多くないんだから順番に試していけばいいじゃないかw
たぶんアプレットのデモの中のGraphLayoutかな?
0827デフォルトの名無しさん
2008/06/04(水) 18:44:38そういうひねくれた方法を見つけるほうが実は凄いんだけどね。(実用でもないし、使わないけど)
>>806
0828デフォルトの名無しさん
2008/06/04(水) 18:53:39おお、まさしくコレだ。
てっきりLayoutManagerがらみかと思ってスルーしてた。スマン&&ありがとう。
0829デフォルトの名無しさん
2008/06/04(水) 19:08:37どういう意味だ??
0830デフォルトの名無しさん
2008/06/04(水) 19:18:130831デフォルトの名無しさん
2008/06/04(水) 21:42:25おいおい、マジかよ。なんでそこまで知ってるんだ。
どこかのスレで話題になってるのか?
0832デフォルトの名無しさん
2008/06/04(水) 21:44:50>>808のコードは
ハッシュでボタンを区別しているようだが・・・
これこそ、enumを使うべきじゃないかね
0833デフォルトの名無しさん
2008/06/04(水) 21:54:06だから本当は>>808みたいなのもアレだけどハッシュならハッシュで別に添え字を値にしなくてもってことじゃない?
しかも整数値でなくてわざわざ文字列を値にしているし
0834デフォルトの名無しさん
2008/06/04(水) 21:56:54板違いの話題だからマ板池
0835デフォルトの名無しさん
2008/06/04(水) 22:27:38誰かみたいに死体の肉を食べちゃったわけじゃないし、まーいーじゃん。
0836デフォルトの名無しさん
2008/06/05(木) 02:26:21張り付くってどういう意味か。久しぶりにJavaスレを見たんだけどな。
気がつけばスレがここまで進んで驚いているんだよ。
2chで初めてJavaスレに書き込みをしたのは
もっと前だけどな。
0837デフォルトの名無しさん
2008/06/05(木) 02:26:56なんとなくどこのスレかはわかったが。
誘導スレを紹介してくれないか
0838デフォルトの名無しさん
2008/06/05(木) 02:48:44助言求む!
0839デフォルトの名無しさん
2008/06/05(木) 03:41:54おまい誰だよ。煽りとかじゃなくてマジで
0840デフォルトの名無しさん
2008/06/05(木) 05:33:410841デフォルトの名無しさん
2008/06/05(木) 10:52:560842デフォルトの名無しさん
2008/06/05(木) 12:28:45class Window2{
Window2(String title){
JFrame frame2=new JFrame(title);
・・
frame2.setVisible(true);
}
}
こういう風にもう一つのクラスを作ってnewした場合、
setCloseOperation(JFrame.EXIT_ON_CLOSE)を設定すると
呼出し元のウィンドウも含めてプログラム全体が終わってしまいます。
WindowListenerで設定しようかと思ったのですが、
明示的に破棄するウィンドウを指定するにはどうしたら良いのでしょうか?
0843デフォルトの名無しさん
2008/06/05(木) 12:30:560844デフォルトの名無しさん
2008/06/05(木) 12:37:46DO_NOTHING_ON_CLOSE にして windowClosing で dispose を呼ぶ
0845デフォルトの名無しさん
2008/06/05(木) 12:38:43あああすいません、それですね!
何かハンドル渡してウィンドウ指定して破棄みたいなやり方かと思ったらあったのかorz
0846デフォルトの名無しさん
2008/06/05(木) 12:46:56添え字というかなぜかStringになってるところが
かなりヤバイね
0847デフォルトの名無しさん
2008/06/05(木) 14:45:250848デフォルトの名無しさん
2008/06/05(木) 16:22:02JUnitの使用に慣れておけ、と言われました
明日一日使ってJUnitの勉強をするつもりですが、参考になるサイトがあったら教えてくださいです
0849デフォルトの名無しさん
2008/06/05(木) 16:29:200850デフォルトの名無しさん
2008/06/05(木) 16:44:22どっちもフリーで使える?
0851デフォルトの名無しさん
2008/06/05(木) 17:00:39今更だけど。。もしそこで内部の配列をコピーしなかったら、
要素が増えて拡張されたときに一方の配列がとりかえられて、泣き別れになるよね。
0852デフォルトの名無しさん
2008/06/05(木) 17:02:460853デフォルトの名無しさん
2008/06/05(木) 17:17:000854デフォルトの名無しさん
2008/06/05(木) 17:30:02教えてくれるもんじゃないの?
0855デフォルトの名無しさん
2008/06/05(木) 17:30:12というかEffective Javaを読めとしか
0856デフォルトの名無しさん
2008/06/05(木) 17:30:47@ITとJUnitでググレ
0857デフォルトの名無しさん
2008/06/05(木) 17:33:07容易ではないからなあ。
JUnitだけでなくJakarta Cactus、DBUnit、HTTPUnit、MockObjectの
使い方まで覚えないといけない。
どうせならTestNGも覚えておくことをお勧めしておく。
JUnitはJUnit4が出たのでそれも覚えておくことをお勧めしておく。
ついでにAntやMavenからJUnitを起動する方法も覚えておくことをお勧めしておく。
0858デフォルトの名無しさん
2008/06/05(木) 17:41:390859デフォルトの名無しさん
2008/06/05(木) 17:57:11↓
「JUnitに慣れておけ」と言った当事者に質問しろ
0860デフォルトの名無しさん
2008/06/05(木) 18:45:340861デフォルトの名無しさん
2008/06/05(木) 19:50:54あまり意味がないと思うのが本音。
テストケースを通すばかりのクラスになり、画面を見れば一目瞭然の問題の
エラー、あるいは仕様的にグレーだけど明らかに改善したほうがいい問題
に気がつかないことが多い。
テストケースの作り方が悪いのだろうけど。あと見た目の問題とか。
顧客に「テストの時間一杯取ったのに、こんなのにも気づかなかったの?」と怒られる。
うちのチーム(Webアプリ)は、Unit テストは Serviceクラス、Utility クラス、DAO まで。
UI レイヤ(Struts だったら、Actionクラス、ActionForm、jsp)は、Excel でテスト仕様書起こして
手でやっている。
ケントベックの言う、「いつでも、再帰的にテストをできるようにする」はUIレイヤでは実現できてないけど、
このやり方が、かけるコストと、目的に対する効果が一番バランスが取れていると思っている。
テストクラスの実装にいつも時間がかかるのをどうにかしたいと思っていて、
slenium とか fitness という単語は知っているのだけど、まだ試してみてない。
というわけでみなさんどうしてますか?
0862デフォルトの名無しさん
2008/06/05(木) 21:44:52S2Daoなり使っていると特に。
逆に画面系は入力チェック系だけはHttpUnitとか使う
0863デフォルトの名無しさん
2008/06/05(木) 22:24:21一番面倒くさいのはCactusだな。
そんでみんなしてMockObject使って
HttpServletResponseとHttpServletRequestオブジェクトを偽装して
Servletのテストしているんだよな。
0864デフォルトの名無しさん
2008/06/05(木) 22:28:04Seleniumでググってみたら
これはなかなか使い勝手がよさそうだ
0865デフォルトの名無しさん
2008/06/05(木) 22:37:29あんこ2
あんこ3
あんこ4
あんこ5
あんこ6
あんこ7
このようなテキスト構成のときに
以下のように、改行が2つ続くとき改行したいのですが
どのような制御をすればよいでしょうか
あんこ1、あんこ2、あんこ3、あんこ4
あんこ5、あんこ6、あんこ7
0866デフォルトの名無しさん
2008/06/05(木) 22:52:48readLineで空文字だったらフラグを立てる
次も殻文字だったら改行する
ってループではどうかね
0867デフォルトの名無しさん
2008/06/05(木) 23:55:37とりあえず、マルチポストはやめとけ
0868デフォルトの名無しさん
2008/06/06(金) 00:35:42うんこのオマージュか?
0869デフォルトの名無しさん
2008/06/06(金) 02:51:180870デフォルトの名無しさん
2008/06/06(金) 07:14:340871デフォルトの名無しさん
2008/06/06(金) 12:56:12HTTPURLConnectionのtimeout,wait,retryの上手なやり方が有ったら教えていただけ無いでしょうか
TimeoutExceptionを活用すべきなのかどうかも分からない素人です
どうかお願いします
0872デフォルトの名無しさん
2008/06/06(金) 13:12:560873デフォルトの名無しさん
2008/06/06(金) 13:48:52Linuxでいうところのstrace見たいなものです。
プロファイルというものを知りましたが、使用されてメソッドのサマリの表示だけで、
呼び出し順番がわかりません。
実行した順番に呼ばれたメソッドをダンプできる方法はありますでしょうか。
0874デフォルトの名無しさん
2008/06/06(金) 13:54:14分からないなら無駄な返答は不要です
0875デフォルトの名無しさん
2008/06/06(金) 13:59:24Thread.currentThread().getStackTrace() を使う。
あとはデバッガで起動するとか。
0877871
2008/06/06(金) 14:14:13気をつけてね
0878デフォルトの名無しさん
2008/06/06(金) 14:23:23みたいな話じゃないの。
0879デフォルトの名無しさん
2008/06/06(金) 15:41:03どうしたら実装出来るでしょうか?
左の方はJTreeで頑張れば出来そうなのですが、
右の選択したディレクトリの中身が表示される部分がよく分からないです。
0880デフォルトの名無しさん
2008/06/06(金) 15:44:440881デフォルトの名無しさん
2008/06/06(金) 15:50:28それは可能なのですが、ダンプをしたいまま差にそのときの、になってしまいます。
一連の処理(時間)の間に呼ばれたメソッドの履歴が取得したいです。
詳しくは解かりませんが、下記のページで実行結果からシーケンス図を作成しています。
イメージとしては、これのメソッドリストがほしい感じです。
AA.aa()
BB.aa()
AA.bb()
…
0882デフォルトの名無しさん
2008/06/06(金) 17:39:39AspectJ というのを使って関数の前後でログ出力をするようにしてみたのですが、
eclipse でデバッグするのがやりづらくなりました。
ブレークポイントをはりつけても目的の処理でブレークするのが
うまく出来なくて困っています。
AspectJ を使ってもデバッグしやすい方法があったら教えてください。
0883デフォルトの名無しさん
2008/06/06(金) 20:51:32デバッガに詳細トレースログを取る機能が無いか確認。
無いなら JPDA 使って自分でデバッガを作る。
0884デフォルトの名無しさん
2008/06/07(土) 17:16:330885デフォルトの名無しさん
2008/06/07(土) 20:16:220886デフォルトの名無しさん
2008/06/07(土) 20:42:09画面を縦三分割にしたいのですが、それぞれ等隔ではなく真ん中は広く、
またそれぞれの横幅を縮めたり伸ばしたりするレイアウトにしたいのですが
こういうのってどうしたら出来るのでしょうか?
0887デフォルトの名無しさん
2008/06/07(土) 21:10:25それならBorderLayoutでも十分そうだけど・・・
手打ちならGridBagLayoutとかSpringLayout使えばかなりのレイアウトは実現できるよ。
0888デフォルトの名無しさん
2008/06/07(土) 21:34:420889デフォルトの名無しさん
2008/06/07(土) 21:45:03レスありがとうございます。
そうです、幅は1:3:1くらいで真ん中だけ大きくしたくて、
かつブラウザのサイドバーみたいに横幅を調整出来るようにしたいのです。
GridBagLayout、難しそうだけどググりながらちょっとやってみます。
>>888
すいません、正直どういう意味か分からないですorz
0890デフォルトの名無しさん
2008/06/08(日) 00:45:310891デフォルトの名無しさん
2008/06/08(日) 02:26:34ありがとうございます!!
頭悪すぎてこんな時間までかかってしまいましたがなんとか出来ました!
しかしJavaはC/C++に比べて簡単にGui部品が使えるのに、
レイアウトだけは非常にやっかいですね…。
0892デフォルトの名無しさん
2008/06/08(日) 02:38:360893デフォルトの名無しさん
2008/06/08(日) 02:53:33直感的に自由度の高いレイアウトが出来るからな
0894デフォルトの名無しさん
2008/06/08(日) 04:49:430895デフォルトの名無しさん
2008/06/08(日) 06:19:460896デフォルトの名無しさん
2008/06/08(日) 09:14:210897デフォルトの名無しさん
2008/06/08(日) 10:05:090898デフォルトの名無しさん
2008/06/08(日) 11:58:01しかしあまり使われていないようだ。
0899デフォルトの名無しさん
2008/06/08(日) 22:18:360900デフォルトの名無しさん
2008/06/09(月) 01:46:45Cの方は次に期待だよな
0901デフォルトの名無しさん
2008/06/09(月) 02:05:54WindowsFormのDockプロパティはオマケみたいなもので、
動的レイアウトはWPFで全面採用になってる。
ただ動的レイアウトはポトペタ系のツールが作りづらいのが難点。
0902デフォルトの名無しさん
2008/06/09(月) 02:47:390903デフォルトの名無しさん
2008/06/09(月) 11:16:330904デフォルトの名無しさん
2008/06/09(月) 12:23:200905デフォルトの名無しさん
2008/06/09(月) 13:00:21他にあるならどぞ
CはC++と互換の無いC99はいらない
0906デフォルトの名無しさん
2008/06/09(月) 14:24:58規定の変換がされたものを表示されていくプログラムを作ろうと思ったのですが、
何故かタイプとラベルに表示される文字に時間差があります。
具体的にはこういうコードを書くと、
public void keyTyped(KeyEvent e) {
System.out.println("タイプされた文字:"+e.getKeyChar());
System.out.println("表示文字:"+example.getText());
exlabel.setText(example.getText());
}
出力はこうなります。
タイプされた文字:a
表示文字:
タイプされた文字:b
表示文字:a
タイプされた文字:c
表示文字:ab
タイプされた文字:d
表示文字:abc
これってどうしてなのでしょうか?
0907デフォルトの名無しさん
2008/06/09(月) 14:53:41keyTyped()が呼ばれたときには、まだexampleへのキー入力処理が実行さ
れていないから。
0908デフォルトの名無しさん
2008/06/09(月) 15:57:200909デフォルトの名無しさん
2008/06/09(月) 17:07:45なるほど、タイプ→フィールドに追加だからですね。
意識したことがなかったので気づきませんでした。
exlabel.setText(example.getText()+e.getKeyChar());
これでいけました、ありがとうございます。
0910デフォルトの名無しさん
2008/06/09(月) 17:57:49「文字」と「文字列」を区別したほうがいいと思うけど、それはともかく
DocumentListener
というものはご存知かな
0911デフォルトの名無しさん
2008/06/09(月) 18:07:37正規表現に文字クラス"[a-z0-9&&[3-8]c-h]"を与えたところ、
この文字クラスにマッチする文字は 'c'、'd'、'e'、'f'、'g'、'h'の6字になるんです。
これってどういう仕様なのでしょうか?
以下は、マッチする文字を表示するサンプルです。参考に他の文字クラスも表示していますが
"[a-z0-9&&[3-8]c-h]"を渡した場合の挙動だけが、なぜそうなるのか良くわからないのです。
-----
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
printMatchingChars("[a-z0-9&&[3-8]c-h]");
printMatchingChars("[a-z0-9&&[3-8][c-h]]");
printMatchingChars("[a-z0-9&&[3-8]&&[c-h]]");
}
private static void printMatchingChars(String regex) {
Pattern p = Pattern.compile(regex);
StringBuilder buf = new StringBuilder();
for (int cp = 0; cp < Character.MAX_CODE_POINT; cp++) {
if (p.matcher(new String(Character.toChars(cp))).matches()) {
buf.append((char) cp);
}
}
System.out.println(regex + ":" + buf + ':');
}
}
-----
出力結果
[a-z0-9&&[3-8]c-h]:cdefgh:
[a-z0-9&&[3-8][c-h]]:345678cdefgh:
[a-z0-9&&[3-8]&&[c-h]]::
P.S.代理レスでの書き込みなので、返信が遅れるかもしれません。
0912デフォルトの名無しさん
2008/06/09(月) 18:54:29>文字クラス
>[abc] a、b、または c (単純クラス)
>[^abc] a、b、c 以外の文字 (否定)
>[a-zA-Z] a 〜 z または A 〜 Z (範囲)
>[a-d[m-p]] a 〜 d、または m 〜 p:[a-dm-p] (結合)
>[a-z&&[def]] d、e、f (交差)
>[a-z&&[^bc]] b と c を除く a 〜 z:[ad-z] (減算)
>[a-z&&[^m-p]] m 〜 p を除く a 〜 z:[a-lq-z] (減算)
> 文字クラス演算子は、次の順で優先順位が高くなります。
> 1 リテラルエスケープ \x
> 2 グループ化 [...]
> 3 Range a-z
> 4 論理和 [a-e][i-u]
> 5 論理積 [a-z&&[aeiou]]
これを見る限り、
[α-ω[...]]
はともかく、
[[...]α-ω]
の形がどうなるのかは書かれていない(=例外でもおかしくない?)ように見えるけど、どう?
>正規表現構文の動作の詳細については、『Mastering Regular Expressions, 2nd Edition』
> (Jeffrey E. F. Friedl 著、O'Reilly and Associates、2002 年) を参照してください。
だそーですが
0913デフォルトの名無しさん
2008/06/09(月) 19:38:140914デフォルトの名無しさん
2008/06/09(月) 20:38:32とりあえず現象だけ見ると、
[a-h0-8&&[3-9]c-z]
[a-h0-8&&[あ-ん]c-z]
[a-h0-8&&[3-9][あ-ん]c-z]
[a-h0-8&&c-z]
は、同じく
[c-h]
と等価になっちゃうっぽいね
0915デフォルトの名無しさん
2008/06/09(月) 20:57:52>>914さん、
&&の前の文字セットと、&&の後ろの定義済みあるいは[]で閉じられていない文字セットを論理積してるみたいですね。
&&の前後の文字セットの結果は無視されているような。
そして否定が付くと、(ますます良くわからないのですが)
[a-zあ-ん&&[3-8]c-h]:cdefgh:
[^a-zあ-ん&&[3-8]c-h]:: (何もマッチしない)
となります。
こんな面倒な構文使わなければいいと思われると思いますが、
正規表現からそれにマッチするランダムな文字列を生成するクラスを作っていまして
生成した文字がPatternで必ずマッチするようにしたいのです。
0916デフォルトの名無しさん
2008/06/09(月) 20:58:02この基本形を入れとくべきか
0917デフォルトの名無しさん
2008/06/09(月) 21:08:45「ちゃんと例外をスローしてもらわないとなあ」というのが私の感想ですがw
0918913
2008/06/09(月) 21:51:26[[^a-z]&&[3-8]c-h] 否定は問題ない
0919デフォルトの名無しさん
2008/06/10(火) 02:57:34そのオライリーの本、
「正規表現 第二版」のことだよね。
ちゃんと日本語訳された本があるからそっち紹介してもいいんじゃないかと
0920デフォルトの名無しさん
2008/06/10(火) 09:48:31[...[...]]&&[...]&&[...[...]]&&[...[...]]&&[...]&&[...]
[...[...]]&&[...&&[...[...]&&[...[...]&&[...&&[...]]]]]
[...][...]&&[...]&&[...][...]&&[...][...]&&[...]&&[...]
[[...]...]&&[...]&&[[...]...]&&[[...]...]&&[...]&&[...]
[[[[[[...]...]&&...]&&[...]...]&&[...]...]&&...]&&[...]
0921デフォルトの名無しさん
2008/06/10(火) 17:20:25正規表現 第3版 出てる。
0922デフォルトの名無しさん
2008/06/10(火) 19:59:460923デフォルトの名無しさん
2008/06/11(水) 17:44:49JAVAを使える無料レンサバは何故少ない(というか無い)
んでしょうか?
0924デフォルトの名無しさん
2008/06/11(水) 17:50:270925923
2008/06/11(水) 17:57:15はい、JAVA(できればstruts)で作ったWEBアプリをレンサバ
で動かそうにも無料のがなく、有料だと高くて…。
確かにPerlもみかけませんよね。phpはどこでも使えるのに・・・ orz
0926デフォルトの名無しさん
2008/06/11(水) 18:15:47無料では見たことがないな。
0927デフォルトの名無しさん
2008/06/11(水) 18:22:020928デフォルトの名無しさん
2008/06/11(水) 18:22:440929デフォルトの名無しさん
2008/06/11(水) 18:27:480930デフォルトの名無しさん
2008/06/11(水) 18:58:12そうですね、やっぱり自鯖をたててみます。
レス有難う御座いました。
0931デフォルトの名無しさん
2008/06/11(水) 19:03:330932デフォルトの名無しさん
2008/06/11(水) 19:15:03Tomcatでいいんだろ?月500円でも高いのか?
http://www.easytone.jp/
無料なのがないのはJavaだと自由度が高すぎてセキュリティに問題が起きる可能性が高いからだと思うけどな?
それにJavaはphpなどに比べれば難しいから需要も少ないってこともあるだろうなあ?
0933デフォルトの名無しさん
2008/06/11(水) 19:22:10public void paint(Graphics g) {
g.drawImage();
}
上記の場合、アプレットだと public void paint(Graphics g)のgの部分はブラウザから
受け取るとあるのですが、アプリケーションの場合、オブジェクトのgはどこで作られるのでしょうか?
自分でオブジェクトgを作らなくても動くのですがどうしてでしょう?
0934デフォルトの名無しさん
2008/06/11(水) 19:28:23金払ってるのに何のセキュリティが問題になるんだよwアホかおまえは
0935デフォルトの名無しさん
2008/06/11(水) 19:31:340936デフォルトの名無しさん
2008/06/11(水) 19:36:57無料の場合の話だろ(wアホはおまえじゃ(w
0937デフォルトの名無しさん
2008/06/11(水) 19:37:45ブラウザっていうか,sunの中の人がGraphicsオブジェクトを作って
それを引数に指定してpaintを呼び出すようなコードを書いてて,裏ではそれが動いてる
アプリケーションも一緒
0938デフォルトの名無しさん
2008/06/11(水) 19:40:05あ、こんな安いレンサバあるんですね。
なるほど、ありがとうございます。
0939デフォルトの名無しさん
2008/06/11(水) 19:43:50使ったことはないんでいいかどうかはわからないよ。
無料10日間お試しコースってのがあるから試してみたら?
0940デフォルトの名無しさん
2008/06/11(水) 19:46:26DefaultMutableTreeNode型のインスタンスからそのノードに至るまでの
ルートからのパスを取得したいのですが、どうやったら良いのでしょうか?
0941デフォルトの名無しさん
2008/06/11(水) 19:52:31paintを呼び出す時に自動的に、Grapnicsオブジェクトが作られる
という事でしょうか?
0942デフォルトの名無しさん
2008/06/11(水) 19:57:15セキュリティが問題になるとかいいのがれじゃん。無料とか言って話しをそらすなw
0943デフォルトの名無しさん
2008/06/11(水) 20:02:08普段は浮動少数(double)
〜〜dB(デシベル) と手打ちした時は
自動で対応する値に変換
(6dB -> 2、20dB -> 10)
というのをやりたいのですが、どんな感じで実装するのがスマートなんでしょうか?
0944デフォルトの名無しさん
2008/06/11(水) 20:07:46違う
中の人が作って呼んでる
0945デフォルトの名無しさん
2008/06/11(水) 20:33:51>自分でオブジェクトgを作らなくても動くのですがどうしてでしょう?
初心者的にはまあごもっともな疑問だと思う。ちょっとかみ砕いてみる。
「paintメソッドを作る」ということは、
「もし「ここに自分の姿を描いてね」と言われたらこう描く(こう対応する)、と決める」ということ。
何をどう描くかは決められるけど、何に描くべきかは外から指定される。
「paintメソッドを呼ぶ」ということは、
「「ここ(=Graphicsオブジェクト)に自分の姿を描いてね」と頼む」ということ。
どういう絵ができるかは相手次第だけど、「描く場所」はちゃんと用意してから注文する。
ふつうは、アプレットとは別に画面作りの本部(中の人)みたいなのが動いていて、
必要なときに(paint/updateを呼ぶ前に)Graphicsオブジェクトを用意する、
と考えていればいいと思う。
それ以外にも、画像に描画するGraphicsオブジェクトを生成してpaintに渡せば、
その時の表示内容を画像にできたり、というような使い方もできる。
0946デフォルトの名無しさん
2008/06/11(水) 20:36:56JTreeの展開のどの部分のパスなのかしら?
0947945
2008/06/11(水) 20:40:48>アプリケーションの場合は
かw
0948デフォルトの名無しさん
2008/06/11(水) 20:57:47文句は無いんだけど、もし君が学校か何かの講師ならイマイチ。
安物のJava教本を読んだほうがいいかな
0949デフォルトの名無しさん
2008/06/11(水) 21:05:080950デフォルトの名無しさん
2008/06/11(水) 21:10:47すいません、C:\Program Files\Adobeとかいう階層があったら、
Adobeを開いた時にC:\Program Files\Adobeという絶対パスを取得してFileに渡したいという感じです。
一応ググったりしながら下のようにやってみたのですが、関数で既にそういうものが用意されていたりするでしょうか?
TreeNode paths[]=konode.get(i).getPath();
String path="";
for(int j=0;j<paths.length;j++)
path+=paths[j]+"\\";
0952デフォルトの名無しさん
2008/06/11(水) 21:50:030953デフォルトの名無しさん
2008/06/11(水) 22:13:24怒るとすぐこんなふうになるし、こいつは短気なんだろw
0954デフォルトの名無しさん
2008/06/11(水) 22:28:56JTreeが実際に何を象徴しているか、JVMは知らないんじゃないかしら?
0955デフォルトの名無しさん
2008/06/11(水) 22:34:36丁寧に�dクス。
0956デフォルトの名無しさん
2008/06/11(水) 23:03:20TreeWillExpandListenerに渡されるTreeExpansionEventから引っ張れる、これ
http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/event/TreeExpansionEvent.html#getPath()
とは別のもの?
0957933
2008/06/12(木) 06:07:030958デフォルトの名無しさん
2008/06/12(木) 14:33:54buf[i+1]<<8|buf[i]&0xFF
これの"|"は何を意味しているのですか?
0959デフォルトの名無しさん
2008/06/12(木) 14:36:550960デフォルトの名無しさん
2008/06/12(木) 14:55:12ビット単位のOR
0961デフォルトの名無しさん
2008/06/12(木) 15:20:060962デフォルトの名無しさん
2008/06/12(木) 15:39:46これって要するに他言語で言うeval?
jsp:doBodyとのちがいもわからん
0963デフォルトの名無しさん
2008/06/12(木) 15:58:14他のは分かるけど、ということ?なんか不自然な気が
0964デフォルトの名無しさん
2008/06/12(木) 16:29:31JSPはほとんど知らないけど、
http://java.sun.com/products/jsp/syntax/2.0/syntaxref2017.html <jsp:doBody>
http://java.sun.com/products/jsp/syntax/2.0/syntaxref2021.html <jsp:invoke>
このへんざっと見る限り、
・doBodyは、そのタグで囲まれた部分全体を(フツーのJSP文法で?)解釈して処理する
・invokeは、タグの中身に複数のfragment(attributeの一種らしい)があるような複雑な構成で、
個々のfragmentを指名して、その内容をdoBody的に処理
みたいな感じ?とすれば「全部eval」と「一部eval」ということになるかもしれんね。
0965デフォルトの名無しさん
2008/06/12(木) 17:28:58作りが悪くて各項目ごとに、出発・到着・金額はいいとして、国や日本円とかをいちいち
入れなくてはならず、毎回入れる項目はだいたい同じなのでスクリプトで自動入力させたいのですが
javaアプリのフォームにデータを入れてボタンをクリックさせるツールとか方法は
あるのでしょうか?
vbscriptとか自動入力クリックツールとかはjavaアプリは全然動かすことができません。
0966デフォルトの名無しさん
2008/06/12(木) 17:31:530967デフォルトの名無しさん
2008/06/12(木) 18:12:260968デフォルトの名無しさん
2008/06/12(木) 18:16:280969デフォルトの名無しさん
2008/06/12(木) 18:19:531は任意の整数xの約数であるから、x=1・xと因数分解できる。■
Java 素因数分解
でぐぐるとか?
0970デフォルトの名無しさん
2008/06/12(木) 18:29:020971デフォルトの名無しさん
2008/06/12(木) 18:31:17>>969
すみません。もう少し勉強しなおしてきます。
0972デフォルトの名無しさん
2008/06/12(木) 18:43:19作った業者に改良を依頼したらいいと思うよ
0973デフォルトの名無しさん
2008/06/12(木) 18:48:38D.Q.N.(「父さんこのイモ何のイモ?」の略)
0974デフォルトの名無しさん
2008/06/12(木) 18:49:35java.util.Map<Integer, Integer> map = new java.util.TreeMap<Integer, Integer>();
int f = 2;
while (x >= f) if (x % f == 0) {x /= f; if (map.get(f) == null) map.put(f, 1); else map.put(f, map.get(f) + 1);} else f++;
System.out.println(map);
0975デフォルトの名無しさん
2008/06/12(木) 19:04:54とあるけど、-23*1とか0*1でもいいのかな
君のプログラムはどういう仕様になってるの?
0976デフォルトの名無しさん
2008/06/12(木) 21:54:56アルゴリズムは基本的に>>974の方法で良いが、細かいことをいうと
y = ⌊√x⌋ とすると、
ループ継続条件は x > 1 かつ f ≤ y
(ループ終了時 x > 1 なら、その x が最後の素因数)
0977デフォルトの名無しさん
2008/06/12(木) 23:20:23jspは実行前にコンパイルされるはずだからevalというには語弊があるな。funcallとかapply?
0978デフォルトの名無しさん
2008/06/13(金) 00:29:13JAVAで、指定したフォルダをエクスプローラで開くことは出来るでしょうか?
Windows以外で動作しなくても構いません
ひょっとしたらRuntimeやProcessで出来るかとも思ったのですが、
あれはexeやjarファイル等の起動しか出来ないようで……
0979デフォルトの名無しさん
2008/06/13(金) 00:31:08オプションはスレ違いなので調べてちょ。
0980デフォルトの名無しさん
2008/06/13(金) 00:37:28即答ありがとうございます
何とかなりそうです
0981デフォルトの名無しさん
2008/06/13(金) 00:37:42JDK6以降なら java.awt.Desktop#open(java.io.File) でも開けるっぽい。
0982デフォルトの名無しさん
2008/06/13(金) 00:53:22explorer C:\Program Files
みたいに引数つければRuntimeでいける。
0983デフォルトの名無しさん
2008/06/13(金) 01:18:47こんなのがあったのか……
JDKのバージョンにこだわりはないので、エクスプローラの引数指定よりこっちの方がスマートですね
色々試してみます。
回答ありがとうございました
0984デフォルトの名無しさん
2008/06/13(金) 05:28:52少し苦しいけど許してあげるよw
以後軽率な発言は控えるように
0985デフォルトの名無しさん
2008/06/13(金) 07:56:300986デフォルトの名無しさん
2008/06/13(金) 08:44:230987デフォルトの名無しさん
2008/06/13(金) 15:10:50昔Java BoFで無料でServletを公開できるサービスがあった。
あと、海外のサイトでも無料でServletやJSPをアップロードできるサービスがあった。
が、メモリを大量消費するServletでは扱いにくいのなんので
それに加えてデフォルト設定ではJSPファイルを更新するたびTomcatの再起動が必要と、
PHPと比べ不便な点が多かった。それでついにはサービスを中止してしまったそうだ。
ブラウザ上からTomcatの再起動ができるのは魅力的かと思ったが。
PHPのようにはいかないのさ。
かくユーザごとにTomcatをインストールし、各ユーザの数だけ
メモリを大量に増設しなければならんのだから。それにJSPコードをJavaに変換したソースコード
とコンパイルしたバイトコードを置くためのディスク容量を確保するためのHDD領域も余分に必要だ。
一人当たりメモリ10GB使うとしよう、
そのレンタルサーバに1000万人が登録して使用すると、
そのサーバに必要なメモリは10000000GB = 9765.6TB=9.5PB(9.5ペタバイト)にもなる。
とんでもない数字だ。これではサーバ運用コストが馬鹿にならない。
だからJAVAを使える無料レンサバは少ない。
その反面、PHPは非常に少ないメモリでプログラムを簡単に書けるのが売り。
Javaとはまったく正反対の言語だ。だからJavaアプリケーションサーバで
無料でレンタルしているところはほとんど無いに等しい。
どうしてもやりたかったら自前でサーバ構築するのが望ましい。
0988デフォルトの名無しさん
2008/06/13(金) 15:19:241つは常に追加、1つは常に取り出し。
取り出し側は何かが追加されている状態のみ処理したく、
collection.get(0);の呼び出しで、他から追加されるまではブロックされるイメージを望んでいます。
自作で同期を取ればよいのですが、
データが登録されるまでブロックするコレクションクラスがあれば使いたいと思っています。
コレクションクラスにはこだわっていないので、近いものがあれば教えていただけないでしょうか。
JDK1.6です。
0989デフォルトの名無しさん
2008/06/13(金) 15:23:10こういうのを信じちゃう人は、頭おかしいんだろうなw
業者乙ところですか(笑い
0990デフォルトの名無しさん
2008/06/13(金) 15:24:42BlockingQueueインターフェースを実装したクラスを使う
0991デフォルトの名無しさん
2008/06/13(金) 15:25:43java.util.concurrent.LinkedBlockingQueue
0992デフォルトの名無しさん
2008/06/13(金) 15:40:46参考になりそうなサイトがあったら教えてください。
0993デフォルトの名無しさん
2008/06/13(金) 16:00:37・・・・・・というわけで斜め読みしてみたが
単純に頭から一つずつずらしているように見える
とても質素だ。まあ確認してみて
0994デフォルトの名無しさん
2008/06/13(金) 16:05:03すみません、どこで見ることができますか。
javaのフォルダ内を見てるのですが見付からなくて。
0995デフォルトの名無しさん
2008/06/13(金) 16:18:480996デフォルトの名無しさん
2008/06/13(金) 16:23:070997デフォルトの名無しさん
2008/06/13(金) 17:53:14【初心者】Java質問・相談スレッド116【歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1213347130/
0998デフォルトの名無しさん
2008/06/13(金) 17:55:540999デフォルトの名無しさん
2008/06/13(金) 17:59:351000デフォルトの名無しさん
2008/06/13(金) 18:02:2110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。