【初心者】Java質問・相談スレッド105【大歓迎】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2007/08/28(火) 00:31:45JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド104【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1185493592/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
次スレは>>980あたりで。
0002デフォルトの名無しさん
2007/08/28(火) 00:42:450003デフォルトの名無しさん
2007/08/28(火) 00:53:000004デフォルトの名無しさん
2007/08/28(火) 01:01:090005デフォルトの名無しさん
2007/08/28(火) 11:38:03DateFormat達はスレッドセーフじゃないから、static finalで持っちゃ駄目だよ。
0006デフォルトの名無しさん
2007/08/28(火) 14:30:38自分でシングルスレッドで注意して使う分には問題ない
マルチスレッドや公開するのならば、同期化処理を行えばよし
ま、設計を見直した方が良い場合もありますが。
0007デフォルトの名無しさん
2007/08/28(火) 17:34:021: javax.naming.directory.Attributes attributes = new Attributes();
2: javax.naming.directory.Attribute attribute = attributes.get("memberOf");
3: javax.naming.NamingEnumeration<String> values = attribute.getAll();
3行目で
型の不一致: NamingEnumeration<capture-of ?> から NamingEnumeration<String> には変換できません。
が出るのですが、Attribute+getAll() の戻り値を NamingEnumeration<String> にするにはどうすればよいですか?
0008デフォルトの名無しさん
2007/08/28(火) 17:58:18javax.naming.directory.Attributesってインタフェースだからnewできないんじゃ?
Attribute#getAll()が返すのはNamingEnumeration<?>で、
どんなクラスでも放り込んでますよってことだから、
NamingEnumeration<?> values = attribute.getAll();
で取って(<?>は無くてもいいと思う)、
列挙される個々のインスタンスの種類を見ながら適切にキャストすればいいと思うが。
Attribute#addも引数はStringでなくObjectを取ってるでしょ?
00097
2007/08/28(火) 18:48:55すみません、サンプルコードが不適切すぎました
その後に行っていた
4: String str = (String) values.next();
のキャストをなくしたくて3行目のNamingEnumerationに<String>をつけたのですが、
そこから先をどのようにしたら良いのかわからなくて質問しました
getAll()の戻り値がNamingEnumeration<?>になっていたので
どうにかすれば戻り値の(中身の)型を限定してキャストをなくせるのだろうと
思っていたのですが、そもそもそれが間違いだった気がしてきました
Genericsについてきちんと勉強しなおしてみます
お手数をおかけいたしました
0010デフォルトの名無しさん
2007/08/28(火) 18:59:43コンパイル前に型が確定するような状況であればGenerics で解決できるが、層でない場合は出来ないってのがポイント
0011デフォルトの名無しさん
2007/08/28(火) 19:07:27それを、勝手に型を限定できはしない。
ちゃんと instanceof でチェックするか、ClassCastException 覚悟でキャストするか、そのあたりはまぁ好きにすればいいけれど。
0012デフォルトの名無しさん
2007/08/28(火) 20:53:57class A {
transient int x=0;
A(){
x =1;
}
}
ってクラスをデシリアライズしたとしたらxは0と1どっち?
決まってなくて実装依存とか?
0013デフォルトの名無しさん
2007/08/28(火) 21:09:450014デフォルトの名無しさん
2007/08/28(火) 21:14:29つーか試せばすぐ分かるだろ
0015デフォルトの名無しさん
2007/08/28(火) 21:15:07インスタンス変数初期化子の方が優先順位高いはずだから、
new A() が終わったら x は 1 になってるはず。
0016デフォルトの名無しさん
2007/08/28(火) 21:17:150017デフォルトの名無しさん
2007/08/28(火) 21:20:12言語仕様で言うと、この辺。
http://java.sun.com/docs/books/jls/third_edition/html/execution.html#12.5
0018デフォルトの名無しさん
2007/08/28(火) 21:28:48そういう問題なのか?
0019デフォルトの名無しさん
2007/08/28(火) 21:40:50サンクス。デシリアライズ時にはコンストラクタ呼ばれないような気がしてたからさどっちか確信持てなかった。
>>17読んでみる
0020デフォルトの名無しさん
2007/08/28(火) 21:43:43もし、そうだとしたらばどうやって初期化すると思ったのか教えてくれ
0021デフォルトの名無しさん
2007/08/28(火) 21:50:58システム環境変数と、管理者の環境変数だけで
ユーザ別の変数が設定出来ないのな…
コントロールパネル>>>ユーザーアカウント>>>環境変数の変更
じゃないと出来なくなってるぽい
0022デフォルトの名無しさん
2007/08/28(火) 21:53:29でっていうwwwwwwww
0023デフォルトの名無しさん
2007/08/28(火) 22:07:31Java直列化メモ(Hishidama's Java Serializable Memo)
ttp://www.ne.jp/asahi/hishidama/home/tech/java/serial.html
>復元(読み込み)されるときは、シリアライズ可能クラスのコンストラクターは呼ばれないが、
ここらへん
デシリアライズは既にあるオブジェクトを復元するだけだからコンストラクタは呼ばれなくてもいい気がする
あと>>17はざっと読んだ感じシリアライズについては書いてないみたい
0024デフォルトの名無しさん
2007/08/28(火) 22:21:14transient フィールドはデシリアライズ時には何も代入されない。
コンストラクタも呼ばれない。
初期値が書かれていたとしても、書かれていなかった場合と同じになる。
たとえ transient int x = 3; などと宣言されてても 0 になる。
初期化したければ
private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException {
in.defaultReadObject();
x = 1;
}
などというメソッドを書く。
private でどこからも呼んでないのに、なぜか呼ばれる不思議メソッド。
0025デフォルトの名無しさん
2007/08/28(火) 22:26:39たぶん定義されてない。
>>24 が何も代入されないって書いてるけど、それも文書化されてないような。
必ず初期化しておきたい場合については readObject 定義しとけで良いけど。
0026デフォルトの名無しさん
2007/08/28(火) 22:28:26スタブとスケルトンは不要、セキュリティポリシーファイルは読ませるまでは把握。
ところで、jarから起動した時って java.rmi.server.codebase も省略できるの?
0027デフォルトの名無しさん
2007/08/28(火) 22:29:49不思議メソッドは聞いた事あるが、デシリアライズした所で記述汁とも聞いた。
0028デフォルトの名無しさん
2007/08/28(火) 22:30:06さんくすreadObjectを実装することにします
Java オブジェクト直列化仕様: 3 - オブジェクト入力クラス
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/serialization/spec/input.doc1.html
>Serializable クラスの場合、フィールドは、その型に適したデフォルト値に初期化されます。
>次に、クラス固有の readObject メソッドか、これらが定義されていなければ、defaultReadObject メソッドが呼び出されて、各クラスのフィールドが復元されます。
>直列化復元時には、直列化可能クラスに対して、フィールドの初期化子およびコンストラクタは実行されません。
というわけで呼ばれないみたいですね
0030デフォルトの名無しさん
2007/08/29(水) 04:25:36そもそも板違い
0031デフォルトの名無しさん
2007/08/29(水) 08:55:32そのjarの中にRMI実装用のインターフェイスや、そのインターフェイスのメソッドで
使用されるクラスやインターフェイスが全部入っているなら、codebaseはいらない。
含まれていないなら読み込み先のURLが必要。
0032デフォルトの名無しさん
2007/08/29(水) 10:36:58newwindowをAパネルの中心に表示したいのですが???部分がわかりません。
this.setLocationRelativeTo(this..getParent())と記述しても
モニタの中心に表示されてしまいます。
class A extends JPanel 〜{
B newwindow = new B();
}
class B extends JFrame 〜{
B(){
this.setLocationRelativeTo(???);
}
}
0033デフォルトの名無しさん
2007/08/29(水) 11:27:59class A extends JPanel 〜{
B newwindow = new B(this);
}
class B extends JFrame 〜{
B(A apanel){
this.setLocationRelativeTo(apanel);
}
}
0034デフォルトの名無しさん
2007/08/29(水) 11:51:59了解です。ありがとう御座いました。
0035デフォルトの名無しさん
2007/08/29(水) 11:56:04class A extends JPanel 〜{
B newwindow = new B();
}
class B extends JFrame 〜{
B(){
this.setLocationRelativeTo(A.this);
}
}
0036デフォルトの名無しさん
2007/08/29(水) 14:43:34マウスをポイントすると反転するようにするにはどうすればいいですか?
0037デフォルトの名無しさん
2007/08/29(水) 15:24:10っていうのが正道だと思うが、アドホックにやりたいなら JMenu に addMouseListener して mouseEntered, mouseLeaved が来たときに setBackground で色変えればいいんじゃないかと思うたぶん
0038デフォルトの名無しさん
2007/08/29(水) 15:33:01だとNULL値が0になってしまうと思うのですが
こういう場合は
rs.getObject(0)で取り出して
if (rs.getObject(0) == null)
{
}
とすればNULL値かどうか判定できるのでしょうか?
0039デフォルトの名無しさん
2007/08/29(水) 15:42:48rs.getInt(0) の後に rs.wasNull() すれば判定できる
0040デフォルトの名無しさん
2007/08/29(水) 15:52:15ありがとうございました。とても勉強になりました。
0041デフォルトの名無しさん
2007/08/29(水) 18:04:56ファイルから読み込んだ文字列を処理したくて、
BufferedReader in = new BufferedReader(new FileReader("foo.txt"));
String str = in.readLine();
としていて、中身にも問題はないんですが、シークをしたいのに出来ません。
そこで、
RandomAccessFile in = new RandomAccessFile("foo.txt", "r");
とすればin.seek()も可能になるんですが、System.out.printしてみると
多バイト文字が文字化けします。
BufferedReaderを使いつつもseekする方法か、
RandomAccessFileを使いつつも多バイト文字が化けない方法を教えて下さい。
0042デフォルトの名無しさん
2007/08/29(水) 18:11:51多バイト文字のエンコードは何?
0044デフォルトの名無しさん
2007/08/29(水) 18:20:24変わる
RandomAccessFileで文字列の読み込みに使ったメソッドは何?
0046デフォルトの名無しさん
2007/08/29(水) 18:44:280047デフォルトの名無しさん
2007/08/29(水) 18:56:20RandomAccessFile#readLine は Javadoc の説明によれば文字コードをまったく考慮しないようだから、ちゃんと文字コードの変換を通すようにしないと。
たぶん Channels#newReader を使うのが簡単っぽい。
RandomAccessFile ras = ......... ;
BufferedReader reader = new BufferedReader(Channels.newReader(ras.getChannel(), "Shift_JIS"));
シークしたときは Reader を作り直すことと、
多バイト文字の途中の位置にシークしてしまった場合は正しく読めないから、そういうことが起きないように気をつけること。
004841
2007/08/29(水) 19:02:38Readerは作り直さないといけないんですね。
Cで言う所の
in = fopen("foo.txt", "r");
fseek(in, 0L, SEEK_SET);
str = fgets(in);
みたいな感じを実現したかったんですが。
めげずに頑張ります。
ありがとうございました。
0049デフォルトの名無しさん
2007/08/29(水) 19:06:25ras を seek しても過去にバッファしたデータを読んでたら意味ないでしょ。
単に使い勝手の問題なら、BufferedReader と RandomAccessFile をセットに持つ新しいクラスを作れば?
0050デフォルトの名無しさん
2007/08/29(水) 22:35:000051デフォルトの名無しさん
2007/08/29(水) 22:43:10どうやるのが、一般的ですか?
正規表現?パーサ?
0052デフォルトの名無しさん
2007/08/29(水) 22:47:540053デフォルトの名無しさん
2007/08/29(水) 22:48:33<td>hoge</td>
のhoge
0054デフォルトの名無しさん
2007/08/29(水) 22:52:090055デフォルトの名無しさん
2007/08/29(水) 22:59:35ソース読むとき、正規表現で??って一瞬止まってしまうという。。
要するに苦手なわけだが。
0056デフォルトの名無しさん
2007/08/29(水) 23:02:55htmlは緩いから逆に難しい。
正規表現を覚える方が楽だけどな
0057デフォルトの名無しさん
2007/08/29(水) 23:10:00ログインページでクッキーを
Cookie cookie = new Cookie("key",key.toString());
cookie.setMaxAge(60*60*24*365);
response.addCookie(cookie);
のようにして、認証コードを埋め込もうとしているのですが、その直後、
pageContext.forward("member_page.jsp");
として会員ページに転送し、member_page.jspでは早速そのキーをクッキーより読み込む仕様にしていますが、
クッキーがこの時点で書き込まれていないようなのです。
なんとか、クッキーだけでもlogin.jspの段階で送信させてしまうことは出来ませんでしょうか?
0058デフォルトの名無しさん
2007/08/29(水) 23:20:59普通、再帰的に定義されてるはずだが。
用途限定なら小型のパーサ書いた方が早いと思うのはブラウザをパーサから実装できる人間の発想か?
HTMLParserっていくつかあるぞ。それ使えば早いんじゃない?
0059デフォルトの名無しさん
2007/08/29(水) 23:27:52OutOfMemoryErrorとなってしまいます。
そのため処理の途中で使わなくなってしまった配列を消すことで
このエラーを回避しようとしているのですが多次元配列の削除の仕方がわかりません
教えてください
またOutOfMemoryErrorを回避するもっといい方法があれば教えてください
よろしくお願いします
0060デフォルトの名無しさん
2007/08/29(水) 23:38:28たくさんの程度によるけど、デフォルトではたしかヒープの最大が 64MB なので、同時使用量がそれを超えるようなら、ヒープを増やすしかない
ヒープを増やす場合は java コマンドでクラス名の前に -Xmx○○○m オプションを付ける (○○○はメガバイト数)
0061デフォルトの名無しさん
2007/08/30(木) 00:04:18int[][] a;
....
.........
a[5] = null
0062デフォルトの名無しさん
2007/08/30(木) 00:37:47OutOfMemoryErrorが発生するという事は、相当酷いコードだろうな。
悪い事は言わないから、レビューしてもらえ。
>多次元配列をたくさん扱う
>使わなくなってしまった配列を消す
つまり、可変リストを使えという事だ
0063デフォルトの名無しさん
2007/08/30(木) 02:12:14>またOutOfMemoryErrorを回避するもっといい方法があれば教えてください
メモリを積む
0064デフォルトの名無しさん
2007/08/30(木) 02:27:23それでも駄目な場合はヒープサイズ増やす。
0065デフォルトの名無しさん
2007/08/30(木) 02:44:24馬鹿かこいつw
javaには関係ない。
0066デフォルトの名無しさん
2007/08/30(木) 03:08:29ハード増強で解決できるなら変にソフトいじられて最悪の事態を招くより断然良い
0067デフォルトの名無しさん
2007/08/30(木) 03:24:37・メモリ増やしてうれしいのはガベージコレクションの発生頻度が下がって少し早くなる
でおk?
0068デフォルトの名無しさん
2007/08/30(木) 03:56:30すごい奴来たな。512MB-->2GBが意味ないらしいw
お前は一生10年前のハイスペックマシン使ってろや
006959
2007/08/30(木) 04:24:25>>60の方のヒープを増やす方法をとりたいと思います.
僕は普段netbeansを利用してソースを書いているので
その辺について少し調べてみたのですが,netbeans.confの6行目くらいにある
netbeans_default_options="-J-Xms32m -J-Xmx128m -J-XX:PermSize=32m
-J-XX:MaxPermSize=160m -J-ea -J-Dapple.laf.useScreenMenuBar=true"
というところを変更すればいいということまでわかりました
PCの物理メモリが2Gですので、ためしに
-J-Xms32m → -J-Xms512m
-J-Xmx128m → -J-Xmx512m
のように変更してみたのですがまったく効果が感じられません
どこかまだ不十分なところがあるのでしょうか?
たびたびすみませんがよろしくお願いします
0070デフォルトの名無しさん
2007/08/30(木) 05:00:17javaコマンドの -Xms -Xmxだよ。あれがjavaヒープサイズの制御。
オブジェクトの割当てだけなら関係ないが、もしJNI使ってたらもしかしたらそっちがネイティブメモリ食ってるかも知れんが、その場合はVMの実装次第だな。
0071デフォルトの名無しさん
2007/08/30(木) 05:08:36netbeansは知らんが。
0072デフォルトの名無しさん
2007/08/30(木) 07:04:39人の話聞いてるか?
配列やめて書き直せ、ヒープサイズでどうこうしても512MBも指定してどうにもならんような糞コード書くな
これだから配列は・・・
0073デフォルトの名無しさん
2007/08/30(木) 07:19:52若しくは配置するコンポーネントのサイズに合わせて拡大縮小する方法を教えてください。
0074デフォルトの名無しさん
2007/08/30(木) 07:20:210075デフォルトの名無しさん
2007/08/30(木) 07:33:01実行時に効果が感じられないのも無理はない
0076デフォルトの名無しさん
2007/08/30(木) 07:49:05生成されている元サイズのImageIconからgetImageでImageを取って、
getScaledInstanceでサイズ変更したImageをsetImageで設定したImageIconを使えばいいんじゃないの?
0077デフォルトの名無しさん
2007/08/30(木) 07:53:54007876
2007/08/30(木) 07:58:26icon.setImage(icon.getImage()....
みたく元サイズのImageIconのImageを上書きするイメージでsetImageって言ったけど、
リサイズ後のImageを使ってnew ImageIcon(Image)で新たに生成してもいいと思う。
007973
2007/08/30(木) 08:04:46素早い回答ありがとうございました。
0080デフォルトの名無しさん
2007/08/30(木) 09:38:20JSPとかServletとか昔ちょこっとだけしかやってないんで間違ってるかもしれんが、
Cookie じゃなくて session オブジェクトに認証コード登録するんじゃ
だめなのか?
0081デフォルトの名無しさん
2007/08/30(木) 09:47:40JFreeChartの中にそういう機能があった希ガス
0082デフォルトの名無しさん
2007/08/30(木) 10:34:21釣りだと思うが、OutOfMemoryには本当に意味が無いから。
>>74
では、ヒープとは何ですか?
0083デフォルトの名無しさん
2007/08/30(木) 10:56:11SunのJVMとIBMのJVMではそのへんの仕様が違うのはご存知?
0084デフォルトの名無しさん
2007/08/30(木) 11:09:29違ったからどうなのだと問いたい気分だが
0085デフォルトの名無しさん
2007/08/30(木) 12:14:240086デフォルトの名無しさん
2007/08/30(木) 12:21:000087デフォルトの名無しさん
2007/08/30(木) 12:26:390088デフォルトの名無しさん
2007/08/30(木) 12:33:090089デフォルトの名無しさん
2007/08/30(木) 13:26:490090デフォルトの名無しさん
2007/08/30(木) 15:30:27>>82
OutOfMemoryは、ヒープから割り当てを取ろうとして発生する
なので、メモリを積んだだけで解決しないというのは一理ある。
ヒープのサイズが変更されなくては解決しないからだ。
ここであれてる原因は、「何故意味が無いか」を全く語っていない点
-XX:+AggressiveHeapを使っているのであれば、メモリ増設は即ヒープサイズの余裕につながり
こういう状況においてはメモリ増設は意味を持つと言える。
ただしどちらも言葉にしていない前提があってのこと。
質問者はそののち、Netbeansを起動しているJVM内で自プログラムを実行していると
錯誤していることが分かった。>>69
この場合、Netbeansの起動オプションを変更していなければヒープサイズの最大は変わらない。
なので、>>69 の対応は他の回答者に比べて至極真っ当。
問題は、Netbeansが実行時に他JVMを起動していること。
NetbeansのJVMのサイズは関係がない。 なので>>71,75の回答が正解。
プロジェクトのプロパティの実行設定で実行時オプションを与えることができる。
>>72
実際何をしているコードか知りたいのはあるが配列=糞かどうかは何とも言えない。
アプリケーションによってはGB単位のオンメモリテーブルを確保しておいて
効率を上げるということもありうるから。その場合、シンプルな操作が要されるだけなので
多機能なオブジェクトとして管理せず配列で管理するという選択もありではあると思う。
0091デフォルトの名無しさん
2007/08/30(木) 17:46:03チルトホイールマウスを使って、横スクロールに対応させる方法はあるでしょうか?
試してみたところ、SWTは標準で対応しているようですが、Swingは標準では対応
していないようです。
0092デフォルトの名無しさん
2007/08/30(木) 17:55:240093デフォルトの名無しさん
2007/08/30(木) 17:58:16pureJavaでは無理
0094デフォルトの名無しさん
2007/08/30(木) 18:50:28今手元に、TrackPointしかないから、Windows版はどうなるかは分からないなぁ。
0095デフォルトの名無しさん
2007/08/30(木) 20:15:46そこまで考えて設計した奴ならば、OutOfMemoryの対策くらいできるだろw
0096デフォルトの名無しさん
2007/08/30(木) 20:26:41いや、数学演算だったり、物理演算だったりすると
言語や実行環境には詳しくなくても複雑なロジックを実装したりする人がいるんだな、これが。
大量の多次元配列って聞いてそういう学生を思い出したから。
0097デフォルトの名無しさん
2007/08/30(木) 20:40:34んで毎回配列を作る場合とか
0098デフォルトの名無しさん
2007/08/30(木) 20:51:10何か二人だけなきがするが・・・・
再帰が深ければOutOfMemoryじゃなくてStackOverfflownが起こってると思うんだ。
というか、OutOfMemoryを知らないで再帰のロジックが書ける人は少ないと思う。
0099デフォルトの名無しさん
2007/08/30(木) 20:58:470100デフォルトの名無しさん
2007/08/30(木) 21:02:34そんな事を意識しなくてはならない事が問題だが
0101デフォルトの名無しさん
2007/08/30(木) 21:30:35StackoverFlowとOutOfMemoryの違いは、
ttp://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html#6654
この辺り参照。
0102デフォルトの名無しさん
2007/08/30(木) 22:20:35それは、上のほうで言ってた引数が使えるですので、サイズを変更するといいと思う。
0103デフォルトの名無しさん
2007/08/30(木) 22:31:34適当に配列とか無駄な参照とか殺したら64MBでもサクサクと動いた。
意外と多いんじゃない、極端ではないにせよこの手の経験。
0104デフォルトの名無しさん
2007/08/30(木) 22:48:58C#じゃないんだから
010559
2007/08/30(木) 22:52:52>>90の方のとおりにやったところOutOfMemoryErrorは回避できました
0106デフォルトの名無しさん
2007/08/30(木) 22:53:58これを使ってもIteratorでまわすときはsynchronizedでくくる必要があるんですよね?
0107デフォルトの名無しさん
2007/08/30(木) 23:03:54丸々答えが書いてあるので、>>1 としたいところ。
少なくても1.5ではそう書いてあった。
0108デフォルトの名無しさん
2007/08/30(木) 23:06:28Iteratorはそのリストの返すIterator次第
1.5以降はConcurrentMap使え
0109デフォルトの名無しさん
2007/08/30(木) 23:08:47マルチスレッドを勉強したら自ずと分かってくるはず。
synchronizedの意味と、スレッド間で何を、どういう単位で守るかの意味が分かればね。
0110デフォルトの名無しさん
2007/08/30(木) 23:14:340111デフォルトの名無しさん
2007/08/30(木) 23:19:11勉強したんです。
synchronizedでくくってたらCollections.synchronizedListなんていらないと思いました。
0112デフォルトの名無しさん
2007/08/30(木) 23:28:53synchronizedを使うかCollections.synchronizedListを使うかは時と場合によtって使い分ける。
例えば、あまりよくない例だが、Listの参照をオブジェクトの外に出すのであればsynchronizedでくくれとドキュメントに記述して守らせるよりも、synchronizedListとした方がいい。
だが、それよりもListは配列や不変Listにして参照を返すのが定石だが・・・この辺はマルチスレッドを学んでいくと色々と解ると思う
>>110
意味はある。
0113デフォルトの名無しさん
2007/08/30(木) 23:43:48private final List<String> list = Collections.synchronizedList(略);
public void add(String str) {
list.add(str);
}
はスレッドセーフ。
ところが・・・
public void addIfAbsent(String str) {
if(list.contains(str) == false) {
list.add(str);
}
}
はアウト
0114デフォルトの名無しさん
2007/08/30(木) 23:45:39public void add(String str) {
synchronized {
list.add(str);
}
}
これでいいんでしょ?
Collections.synchronizedListなんて必要ありませんよね?
0115デフォルトの名無しさん
2007/08/30(木) 23:50:49× synchronized {
○ synchronized (list) {
0116デフォルトの名無しさん
2007/08/30(木) 23:52:43それはミスっただけです。
でも、この書き方があれば Collections.synchronizedListなんて必要ないですよね?
0117デフォルトの名無しさん
2007/08/30(木) 23:54:36誰かが忘れるかもね。
複数人で書いている時とか、
安全性を重視してパフォーマンスは落ちても
スレッドセーフな実装のインスタンスを
返してあげることに意味があることはある。
0118デフォルトの名無しさん
2007/08/30(木) 23:58:23Object ock = new Object(); l
synchronized (lock)
コレクションの処理
}
同期については全てこれで事足ります。
異論があったらかかってきなさい。
0119デフォルトの名無しさん
2007/08/31(金) 00:00:56うん、必要ない。
だが、それを言うのであれば
private final List<String> list = new ArrayList();
public synchronized void add(String str) {
list.add(str);
}
でもいいし、
private final List<String> list = new ArrayList();
private final Object obj;
public void add(String str) {
synchronized(obj) {
list.add(str);
}
}
でもいいし、
private final List<String> list = new ArrayList();
private final Lock lock;
public void add(String str) {
lock.lock();
try {
list.add(str);
} finally {
lock.unlock();
}
}
でもいい。
実装方法が複数あることに問題ある?
0120デフォルトの名無しさん
2007/08/31(金) 00:02:36その中のどれが一番効率いいのかね?
俺なら真ん中かな。
0121デフォルトの名無しさん
2007/08/31(金) 00:03:24別のクラスから同期とろうとしたらそのObject型のlockをそこまでもっていくのか?
0122119
2007/08/31(金) 00:05:31処理が複雑になってくれば来るほど、ロックオブジェクトを使う方が解りやすく柔軟性が高くなる。
waitが絡んでくると、LockとConditionを使う方が楽。
並行処理考える時は原則として効率度外視の可読性重視だよ。
0123デフォルトの名無しさん
2007/08/31(金) 00:07:26別のクラスで同期処理をさせるという事が設計ミス。
リストを管理しているクラスが必要な処理を全て同期させて内包する事が重要。
そういう意味ではCollections.synchronizedListは実は設計ミス
0124デフォルトの名無しさん
2007/08/31(金) 00:17:54一般的な解説であればVMの起動引数でポリシーファイルを指定すると思いますが、製品としてリリースするような場合は起動時に自動的に設定するものなのでしょうか?
それとも通常通り(?)VM起動引数に設定?
0125デフォルトの名無しさん
2007/08/31(金) 00:36:09実装ミスを犯す可能性を作る必要性が私には見つけられない。
ま、質問相談スレなので、それらしいことをしないと。
いろいろ議論してる人々は、synchronizedList の戻ってくる
Listを実装したラップクラスのソースは見てるのかしら。特に>>114 さん。
中でやってることは一緒なのですが…
0126デフォルトの名無しさん
2007/08/31(金) 00:41:43マルチスレッドを注意深く意識する実装なんて数年に1回程度
0127デフォルトの名無しさん
2007/08/31(金) 00:51:440128デフォルトの名無しさん
2007/08/31(金) 00:53:51Servletもそうだけど、マルチスレッドで動いているけど作る部分は原則としてシングルスレッドで作るってケースが多い
0129デフォルトの名無しさん
2007/08/31(金) 01:04:42しかも、排他処理のコードも微妙に間違ってたりするし。
ぱっと見でおかしいことはわかるし、直すのも簡単なんだが、
どこがどう間違っているのかを説明するのが大変なんだよなぁ。
0130デフォルトの名無しさん
2007/08/31(金) 01:08:450131デフォルトの名無しさん
2007/08/31(金) 04:06:240132デフォルトの名無しさん
2007/08/31(金) 04:17:44SwingのEDTの存在を忘れてるコードをよく見る。
0133デフォルトの名無しさん
2007/08/31(金) 07:22:33そういう奴はSwingがシングルスレッドモデルという事すら知らないのでは?
0134デフォルトの名無しさん
2007/08/31(金) 08:24:47まあ、ちょっとやそっとじゃ表面的な問題しか浮彫りにならないからね。
それよりかは比較的、重量と軽量のコンポーネント混ぜたときの方が困りやすい。
どっちが危険かは前者だけど、発覚しやすいのは後者だからねぇ。
0135デフォルトの名無しさん
2007/08/31(金) 10:54:13メッセージダイアログを一定時間表示することはできますか。
0136デフォルトの名無しさん
2007/08/31(金) 12:19:050137デフォルトの名無しさん
2007/08/31(金) 12:37:11ttp://www.java.net/download/jdk7/changes/jdk7-b19.html
4811096 Allow mixing of heavy and lightweight components
へーい。YOU
昨日から、重量と軽量のごっちゃまぜは解禁になったぜー
JDK7が出たら、これに関する質問が飛び交いそうだね。
0138デフォルトの名無しさん
2007/08/31(金) 12:39:24何かchangelogページが消えてるみたいなんで。
ttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4811096
0139デフォルトの名無しさん
2007/08/31(金) 13:20:44シングルを2つ表示「’’」意外でお願いします。
0140デフォルトの名無しさん
2007/08/31(金) 13:25:04" を表示したいなら println("\"")
0141デフォルトの名無しさん
2007/08/31(金) 13:52:50今までJava CPadという簡易エディターを使ってたんですが、今日からEclipseに乗り換えました。
そしてサーブレットを作ろうとしたら「javax.servletは存在しません」と言われました。
環境変数の問題だった事にすぐ気がついて環境変数の設定を行ったんですが依然として同じコンパイルエラーが。
おかしいと思いJava Cpadのエディターの方でコンパイルしてみたら、こちらでは問題なくjavax.servletを認識してくれてコンパイルが成功しました。
Eclipseの設定の問題なのか、もしくは別に問題があるのか、どなたか御意見をお聞かせください。
0142デフォルトの名無しさん
2007/08/31(金) 14:01:24Eclipseの設定の問題だって自分で言ってるのは何なんだよw
0143デフォルトの名無しさん
2007/08/31(金) 14:19:41> google.co.jp eclipse servlet javax.servlet
0144デフォルトの名無しさん
2007/08/31(金) 14:40:34パッケージエクスプローラから対象のプロジェクトを選ぶ。
右クリック→プロパティ→Javaのビルドパス→「ライブラリー」のタブを選択
→「JARの追加」もしくは「外部JARの追加」でservlet.jarを追加する。
0145デフォルトの名無しさん
2007/08/31(金) 14:49:080146デフォルトの名無しさん
2007/08/31(金) 14:56:06クラス名.java で登録しても
クラス名しかメモ帳には指示されない・・・
0147デフォルトの名無しさん
2007/08/31(金) 14:56:36実行環境のJREとブラウザ、それとjava3dの実装ライブラリが必要。
というか、ちょっとやりたいことが分からない。
やりたいことを書けば資料へのポインタが出てくる気がするぞ。
0148デフォルトの名無しさん
2007/08/31(金) 15:11:41保存時にファイル名に"hogehoge.java"のように"で囲えばhogehoge.javaで保存される。
余計なhogehoge.java..txtのような拡張子も付かない。
って話ではないのか?
0149デフォルトの名無しさん
2007/08/31(金) 15:18:59返答どうも
やってみましたが さっきのままです・・・
0150デフォルトの名無しさん
2007/08/31(金) 15:26:33ファイル名に「クラス名.java」と入れて保存ボタンを押しても
メモ帳(=notepad.exe?)のタイトルに「クラス名」としか表示されない
ってことなのかな?
OSやらアプリやらの環境が違うのかね…
0151デフォルトの名無しさん
2007/08/31(金) 15:26:53話が見えないんだが、
エクスプローラの「登録されている拡張子は表示しない」オプションの設定に関わる問題?
0152デフォルトの名無しさん
2007/08/31(金) 15:32:19メモ帳とやらのアプリケーションの使い方に関する質問っぽいな
0153デフォルトの名無しさん
2007/08/31(金) 15:43:06現在、HTMLで作った入力フォームに入力した内容をサーブレットで受け取ることはできています。
0154デフォルトの名無しさん
2007/08/31(金) 15:52:07POSTすればいいんではないかと思います。
0155デフォルトの名無しさん
2007/08/31(金) 16:00:58empno = Integer.parseInt(request.getParameter("empno"));
のように、情報を取得したいのですが、うまく受け取ることができません。
nullになってしまいます。
0156デフォルトの名無しさん
2007/08/31(金) 16:43:58解決しました。
formの位置がおかしく、データが渡されていなかったようです。
0157デフォルトの名無しさん
2007/08/31(金) 16:55:520158デフォルトの名無しさん
2007/08/31(金) 19:04:43登録されている拡張子は表示しないにチェックが入ってましたorz
解決できました。
返答ありでした
0159デフォルトの名無しさん
2007/08/31(金) 21:00:390160デフォルトの名無しさん
2007/08/31(金) 21:55:060161デフォルトの名無しさん
2007/09/01(土) 03:06:45ClassA inst = ClassA();
^
ClassA inst = ClassA();
^
って感じで。でもクラスファイルは同じフォルダに入れてるし、パッケージは設定してないし…… さっぱりです。
一応パッケージに収納してやってみたけどそれも無理でした。ちなみにツールは使ってません。
誰かわかりますか?
0162デフォルトの名無しさん
2007/09/01(土) 03:15:570163デフォルトの名無しさん
2007/09/01(土) 03:20:040164デフォルトの名無しさん
2007/09/01(土) 03:22:210165デフォルトの名無しさん
2007/09/01(土) 03:43:31「インスタンス生成用の別クラス」なんて言われても解らんですよ
mainメソッドが存在するクラスをコンパイルしたら大丈夫…
なんてのは無しですよ
0166161
2007/09/01(土) 03:59:45public class ClassB {
public static void main(String[] args) {
ClassA inst = new ClassA();
inst.ClassA(10);
}
}
public class ClassA {
ClassA(int n) {
(省略)
}
}
ようはこれでClassBの方をコンパイルしようとすると「ClassA シンボルが見つかりません」っていうコンパイルエラーが出るんです。
ClassAは普通にコンパイルできるんですが、ClassBの方はClassAと同じフォルダに入れても同じパッケージに入れても「シンボルが見つかりません」
っていうエラーが出るっていう訳です。
理由がわかる方いますかね……? 説明下手ですみません。
0167デフォルトの名無しさん
2007/09/01(土) 04:08:55ClassA には int 1 個を引数とするコンストラクタしか定義されていないから、
呼び出せない。
次の行は一見メソッド呼び出しに見えるかもしれんが、
コンストラクタを呼ぼうとしているため NG。
存在するインスタンスのコンストラクトを実行する・・・という矛盾。
0168デフォルトの名無しさん
2007/09/01(土) 04:11:280169デフォルトの名無しさん
2007/09/01(土) 04:22:07そういう書き方を思いつくようなら、もう一度、インスタンス生成について勉強した方がいいと思う。
エラーの原因は>>167の言う通りで、インスタンスの生成はClassA inst = new ClassA(10);ですむ。
0170デフォルトの名無しさん
2007/09/01(土) 07:00:03setHoge(DEFAULT_VALUE);
}
public ClassA(int n){
setHoge(n);
}
public void setHoge(int n){
this.n=n;
}
より良くはこうするべきだな。
いい加減なコード書いても後で大変な目に遭うだけ。
0171デフォルトの名無しさん
2007/09/01(土) 07:57:07ClassAの詳細や設計方針が分からないからそうすべきとは限らんよ
そうした場合でも
public ClassA(){
setHoge(DEFAULT_VALUE);
}
は
public ClassA(){
this(DEFAULT_VALUE);
}
の方が良くないか?
setHogeするだけならいいがコンストラクタの中身が複雑になってくると記述の重複が気になる
まあ引数なしと引数ありでやることが違う場合もあるだろうから
ClassAの詳細が分からないことには何とも言えんが
0172デフォルトの名無しさん
2007/09/01(土) 10:40:05private final Object obj2;
private void test1 () {
synchronized(obj1) {
・・・なんらかの処理
test2();
}
}
private void test2 () {
synchronized(obj2) {
・・・
}
}
この場合、test2();を実行中はtest1は同期されているのでしょうか?
0173デフォルトの名無しさん
2007/09/01(土) 11:10:34test1 () 内部でtest2 () を呼んでいる間、obj1は同期されているのでは
0174デフォルトの名無しさん
2007/09/01(土) 11:15:29そうなんですね。ありがとうございました。
test1()が数十行になってしまうんで、外出しにしたかったんです。
0175デフォルトの名無しさん
2007/09/01(土) 11:26:09synchronizedをネストさせるのはタブーだよ
デッドロックを起こさない為にもロックオブジェクトを無闇に作ってはいかん
同じロックオブジェクトに対する同期化のネストはOKだけど、なるべく少なくするのが正しい。
0176デフォルトの名無しさん
2007/09/01(土) 11:30:09private void test2 () {
synchronized(obj1) {
・・・
}
}
こう変更すればOKなんですか?
そもそも外出しにしない方がよいのでしょうか?
すみません、質問ばかりで・・・。
0177175
2007/09/01(土) 11:39:55private synchronized void test1 () {
・・・なんらかの処理
test2();
}
private synchronized void test2 () {
}
ちなみに
private void hoge() {
synchronized(this) {
}
}
と
private synchronized void hoge() {
}
とは、ほぼ同質。
0178デフォルトの名無しさん
2007/09/01(土) 11:43:25テキストラベルなどの文字はWindowsマシン上で最適にしたのですが
Linuxで動かすとフォントサイズが大きくなって、表示されない部分が発生しています。
フォントはDialogなのですが物理フォント(MSゴシック等)にしないのダメなのでしょうか?
0179デフォルトの名無しさん
2007/09/01(土) 11:46:48private void test1 () {
・・・おっぱいもみもみの処理
synchronized(obj1) {
・・・なんらかの処理
test2();
}
}
実はおっぱいもみもみの処理もあるんです。
その、おっぱいもみもみの処理は同期させなくてよいのです。
0180177
2007/09/01(土) 11:51:22>>177
private void test1 () {
・・・おっぱいもみもみの処理
同期化する処理();
}
private synchronized void 同期化する処理() {
・・・なんらかの処理
test2();
}
0181デフォルトの名無しさん
2007/09/01(土) 11:52:12なるへそ。さんきゅーべりーまいっちんぐ。
0182デフォルトの名無しさん
2007/09/01(土) 11:53:05pack() を使えば最適な大きさにしてくれるでしょ
全部固定配置の固定サイズで作っているならば、実行環境とフォントに依存するのは諦めるしかない
0183デフォルトの名無しさん
2007/09/01(土) 11:56:14そのテキストラベルのレイアウトをレイアウトマネージャにまかせずに自分でやってないか?
自分の環境だけで動作させるならそれでも構わないけど、
他環境のことも考えているならその表示の最適化とやらなんてやってはだめだ。
本当に各環境に応じて自前で調整したいなら、環境ごとの表示のパラメータを得て、
それに合わせてフォントや配置を選択することをやらないといけないが、やっていないだろ?
0184デフォルトの名無しさん
2007/09/01(土) 12:00:070185178
2007/09/01(土) 12:15:23コンポーネントのlayoutをnullにして、各部品の座標位置は自分で指定しました。
グリッドバッグレイアウトでやらなきゃいけなかったってことでしょうか?
いまから修正するのは心が折れそうです。
良くない方法かもしれませんが、文字のサイズがPC環境に依存しなければ
今のところ何とかなりそうなのですが、良い方法はありませんか?
0186デフォルトの名無しさん
2007/09/01(土) 12:40:46nullレイアウトは奨励されないという注意書きを読まなかったあなたの責任です。
Windows専用で割り切るのが一番良い方法です。
0187デフォルトの名無しさん
2007/09/01(土) 12:44:17一度2つのフレームを見えないようにする。(他のソフトの下に隠れさせて見えないようにする)
そして、test1を可視状態にする。
質問:このときtest2も可視状態するにはどうしたらいいですか?
----------------------------------------------------------------------
import javax.swing.*;
public class Test {
public static void main(String[] args) {
Test test1 = new Test();
Test test2 = new Test();
}
Test() {
JFrame frame = new JFrame();
frame.setVisible(true);
}
}
0188デフォルトの名無しさん
2007/09/01(土) 12:50:15表示するコンポーネントを切り替えれば済むじゃん。
0189178
2007/09/01(土) 12:55:06こういう場合に、フレームのサイズも固定でやったらダメなんでしょうね。。
やり直します。
0190デフォルトの名無しさん
2007/09/01(土) 12:58:13フレームのWindowEventを監視してアクティブになったらもうひとつのフレームも前面に移動
0191デフォルトの名無しさん
2007/09/01(土) 13:00:37ダメかどうかは要件によるだろ
Windowsで最低解像度を制限する前提ならば固定サイズでもあり
0192デフォルトの名無しさん
2007/09/01(土) 13:09:55レイアウトマネージャを使うように変更するのがそんなに大変なレイアウトなんだろうか?
でも、そんな複雑なレイアウトを各部品の位置とサイズの手動設定でやろうとする方が心が折れそうだ。
JBuilderにはビジュアルにレイアウトマネージャを使ったレイアウトをするコードを吐くツールってないのか?
どんなレイアウトか知らないが、GridBagLayoutだけがレイアウトマネージャじゃないし、
異なるマネージャが設定されたコンテナの組み合わせで全体を構成する方法だってある。
0193デフォルトの名無しさん
2007/09/01(土) 13:38:50感覚でレイアウトしているからレイアウトマネージャの存在も知らなかったんだろうね
最近のJBuilderはどうかシランが、以前はかなり糞IDEだった記憶がある
0194デフォルトの名無しさん
2007/09/01(土) 14:11:16どうしても2つのフレームを使ってやりたいので・・・
>>190
WindowEventを監視することによりアクティブになったかどうかを判定することが出来るようになりました。
ありがとうございます。
あつかましいことだとは思いますがまだ分からない点がありますのでまた質問させてください。
質問:フレームを前面に移動。(アクティブにする)
toFront()、setAlwaysOnTop(true)を試してみたのですが駄目でした。
0195デフォルトの名無しさん
2007/09/01(土) 14:19:01とりあえず、つ JDesktopPane
0196デフォルトの名無しさん
2007/09/01(土) 14:40:19Window#toFrontで前面に出せると思うけど。
toFrontを実行する機会をうまく考えないと二つのフレームのアクティブ取り合戦になるので注意。
やりたいことから少し外れるかもしれないが、
一方のフレームをもう一方のフレームを所有者とするモードレスなJDialogにしてやるのはどう?
これなら、特にイベント監視とかしなくても、二つのフレームが一体となってアクティブ、非アクティブになる。
二つの内容を同じにしたいなら、コンテントのクラスに共通のものを使って、
フレームとダイアログにそれを設定すれば無駄なコードは無くて済む。
0197デフォルトの名無しさん
2007/09/01(土) 15:30:23import javax.swing.*;
public class Test {
public static void main(String[] args) {
Test test1 = new Test();
Test test2 = new Test(test1);
Test test3 = new Test(test2);
Test otherTest1 = new Test();
Test otherTest2 = new Test(otherTest1);
Test otherTest3 = new Test(otherTest1);
}
private Frame frame;
private Dialog dialog;
public Test() {
JFrame frame = new JFrame();
this.frame = frame;
frame.setVisible(true);
}
public Test(Test test) {
JDialog dialog = test.frame != null ? new JDialog(test.frame) : new JDialog(test.dialog);
this.dialog = dialog;
dialog.setVisible(true);
}
}
0198デフォルトの名無しさん
2007/09/01(土) 17:51:13送信する方法を教えてもらえますか?
WSHのSendkeysを使うみたいな、Javaから外部アプリ起動する
以外の方法が知りたいです。
0199デフォルトの名無しさん
2007/09/01(土) 18:38:050200デフォルトの名無しさん
2007/09/01(土) 20:01:00無理。そもそも Java には IPC が無い。自分以外のアクティブウィンドウを
取得する方法も無い。
0201デフォルトの名無しさん
2007/09/01(土) 21:35:34Java2SDK1.4、IE6、java3D1.5をインストールしています
ttp://www16.plala.or.jp/aamo/index.html
↑
こちらのサイトのjava appletにあるような
円を描いて動く物体を作製したいと思っています
0202デフォルトの名無しさん
2007/09/01(土) 22:12:36AWT/Swingで可能なレベルはどの程度かは把握してるか?
3Dバリバリは無理だが、円の描画とか簡単にできるし、Swingとアニメーションでぐぐればいくらでもサンプルはある。
もし、その手のをやってないならば、3dに手を出す前に基礎からやるべき
0203デフォルトの名無しさん
2007/09/02(日) 01:04:49SUGEEEEEEE
0204デフォルトの名無しさん
2007/09/02(日) 05:51:470205デフォルトの名無しさん
2007/09/02(日) 12:43:16public static void main(String args[]) {
String str;
int i;
for(str="abcdef",i=str.length(); i<10; i++) {
System.out.println(i);
}
}
}
↑のソースで質問なんですけど、これでコンパイルと実行が通るのですが
for文の最初にカンマが付いてもよい理由が分かりません。本やネットで検索しても
書かれていませんでした。
あと、int i; と外にループ変数を宣言していますが、for文の中に書くとエラーになります。
この理由もどなたか知っていたら教えてくださいm(_ _)m
0206デフォルトの名無しさん
2007/09/02(日) 12:48:51理由は「そうういう記述方法が許されている」から。
forの宣言部分で変数を宣言する場合は、同じ型の変数ならば複数宣言も可能。
だけど、そんな書き方したら読みにくいので書かないのが正しい。
String str = "abcdef";
for(int i =0, i=str.length(); i<10; i++) {
System.out.println(i);
}
と書くほうが自然だろ?
自然と思うならば、そんな書き方忘れた方がいい
0207デフォルトの名無しさん
2007/09/02(日) 12:50:28String str = "abcdef";
for(int i = str.length(); i<10; i++) {
System.out.println(i);
}
0208デフォルトの名無しさん
2007/09/02(日) 12:55:04for ( A; B; C) { }
各A, B, Cには文が入る
式はカンマで区切って並べることで全体がひとつの文になる
カンマで区切られるのは文ではなく式なので宣言文はダメ
0211デフォルトの名無しさん
2007/09/02(日) 13:49:55javaでmidiやwavファイルを使って音を鳴らそうとしているのですが、
音量をどうやったら変更できるのかわかりません。
どうやったら音量を変更できるのですか?
0212デフォルトの名無しさん
2007/09/02(日) 14:10:13ぐぐれかす
0213デフォルトの名無しさん
2007/09/02(日) 14:13:52・wave → 波形を書き換えて振幅を調節する
あるいは
・ミキサーで各ラインのボリュームをいじる
それか
・OSのコントロールパネルやシステム環境設定でユーザに調節してもらう
0214デフォルトの名無しさん
2007/09/02(日) 15:39:01メインボリュームの値を変えていますが後で取得すると127になってます。
なにがおかしいのでしょうか?
0215デフォルトの名無しさん
2007/09/02(日) 15:39:57メインボリュームの値を変えていますが後で取得すると127になってます。
なにがおかしいのでしょうか?
0216デフォルトの名無しさん
2007/09/02(日) 15:49:45送信される MIDI メッセージを見て、コントロールチェンジのボリュームの値を書き換えないとだめ
0217デフォルトの名無しさん
2007/09/02(日) 19:00:10class Sample1
{
public static void main(String args[]) throws IOException
{
System.out.println("円周率はいくらですか?");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str1 = br.readLine();
float num1 = Integer.parseInt(str1);
System.out.println("円周率の値は" + num1 + "です。");
}
}
↑のソース、どこが間違ってるか教えてください
0218デフォルトの名無しさん
2007/09/02(日) 19:04:08class aaa{
public static void main(String args[])throws IOException{
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.println("整数を入力してください。");
int num = Integer.parseInt(br.readLine());
char hantei = (num%2 ==0) ? "偶数" :"奇数";
System.out.println(num + "は"+hantei+"です");
}}
をコンパイルすると
aaa.java:11:互換性のない型
検出値 :java.lang.String
期待値 :char
char hantei = (num%2 ==0) ? "偶数" :"奇数";
というエラーが表示されます
初心者でなぜだかわかりません。教えてください
0219デフォルトの名無しさん
2007/09/02(日) 19:04:180220デフォルトの名無しさん
2007/09/02(日) 19:05:050222デフォルトの名無しさん
2007/09/02(日) 19:08:180223218
2007/09/02(日) 19:13:11ありがとうございます
charをStringに変えたらコンパイルできました
0224デフォルトの名無しさん
2007/09/02(日) 19:21:050225デフォルトの名無しさん
2007/09/02(日) 19:50:26間違うにしてもきっちりと間違ってください。
0226デフォルトの名無しさん
2007/09/02(日) 20:05:01char *hantei = (num%2 ==0) ? "偶数" :"奇数";
かね?
0227デフォルトの名無しさん
2007/09/02(日) 20:19:400228デフォルトの名無しさん
2007/09/02(日) 20:55:06class Sample3
{
public static void main(String args[])
{
System.out.println("整数を2つ入力してください。");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str1 = br.readLine();
String str2 = br.readLine();
int num1 = Integer.parseInt(str1);
int num2 = Integer.parseInt(str2);
System.out.println("足し算の結果は" + (num1+num2) + "です。");
}
}
例外 スローするにはキャッチまたは、スロー宣言をしなければなりません
と、でるんですけど どうしたらいいんですか
0229デフォルトの名無しさん
2007/09/02(日) 21:03:31しょうもない質問すいませんでした
0230デフォルトの名無しさん
2007/09/02(日) 21:04:190231デフォルトの名無しさん
2007/09/02(日) 22:23:190232デフォルトの名無しさん
2007/09/02(日) 22:27:33http://pc11.2ch.net/test/read.cgi/tech/1164359039/
0233デフォルトの名無しさん
2007/09/02(日) 23:16:18java ThreadProgram -run
java ThreadProgram -shutdown
データベースやテキストファイルでステータスを持ってて、その値が変更されたら
プログラムを終了するという処理方法だと実現できるのですが、
ディスク上の値を毎回監視していないといけませんよね。
他の方法で何か上手いやり方ってありますでしょうか?
0234デフォルトの名無しさん
2007/09/02(日) 23:21:19異なるVMの間で通信を行うのであれば、RMIとかSocketで繋ぐのが早い
だが、コマンドラインから実行しなくてはならない理由はあるか?
一番手っ取り早いのは、java ThreadProgram で起動したら、起動と停止の2つのボタンがあるGUIを表示してしまう事かと思われ
0235デフォルトの名無しさん
2007/09/02(日) 23:22:44ログなどを標準出力に出さないならば、標準入力で停止を受け付けるのもあり
0236233
2007/09/02(日) 23:37:45Socketを使って起動停止を指示する方法は思いつきませんでした。
Guiは使わない予定でして、
コマンドラインから実行して、
プログラムが終了するまでコマンドプロンプトが起動しっぱなしというのではなく、
バックグラウンドで動いているようなイメージをしてるのです。(ログはファイルに落とす)
そういったプログラムってあんまりないんですかね?
0237まきの
2007/09/02(日) 23:40:00今回課題で、日付クラスを作成してるんですが、DATEクラスなどを用いないで作成するとの事で、できません。
誰か教えてください。
0238デフォルトの名無しさん
2007/09/02(日) 23:43:03Java単体で実現しようとすると難しいんじゃないかな?
exeを用意したほうが簡単に実現できるだろうね
0239デフォルトの名無しさん
2007/09/02(日) 23:44:51よく解らんけど、フィールドに、年・月・日をint型かなにかで持てばいいんじゃね?
課題とやらの制限がよく解らんが、丸投げでないならばもう少し意味が解るように説明汁
0240デフォルトの名無しさん
2007/09/03(月) 02:45:32カプセル化についての課題なんだから
日付情報を保持するプライベートフィールドとそのパブリックなアクセサを作れば良いだけだろ
0241デフォルトの名無しさん
2007/09/03(月) 04:53:27そういったプロフラムは腐るほどあります。
というか世の中でお仕事で皆さんが作っているのはそんな奴です。
Windowsならjavaw.exeで起動してください。
Unix系なら java 〜〜〜 & で。
0242デフォルトの名無しさん
2007/09/03(月) 05:04:16hentai だと思った
0243デフォルトの名無しさん
2007/09/03(月) 06:01:170244デフォルトの名無しさん
2007/09/03(月) 06:15:54ここはスルーですか
0245デフォルトの名無しさん
2007/09/03(月) 09:01:35なにかおかしい?
0246デフォルトの名無しさん
2007/09/03(月) 09:13:02C流儀のString args[]に突っ込みたいんじゃないのかね?
最近は随分減ったけど入門ドキュメントでもこの書き方は結構見かけるね
0247デフォルトの名無しさん
2007/09/03(月) 11:39:24String[] args
0248デフォルトの名無しさん
2007/09/03(月) 13:50:25なるまで何年ぐらいかかりますか?
あと、「これが出来たら凄い」といった、自分の技能の目安になるものは
存在するのでしょうか?
Vスタとかエクリプスとか作っている人たちが、どれだけ凄いのかを
理解したいです。
0249デフォルトの名無しさん
2007/09/03(月) 14:05:50まず手を動かす人ならコンピュータに触った事ないところからでも 1年もあればできる。
手を動かさない人は一生かかってもできない。
0250デフォルトの名無しさん
2007/09/03(月) 14:08:10GREPを実現するといっても
人によって、いつまでたっても書けない人と、1ヶ月くらいで書けるようになるひとがいます。
ある程度、経験を積んでいれば数10分で書けるかもしれません。
まあ目安はないです。
でもeclipseを一人で作ったとしたらとてつもなく凄いとは思います。
評価とは後から来るものでこれをしたから偉い、という基準はありません。
むしろ今ない何かが「出来る」、「作れる」という事が凄いことになります。
ちなみにVスタというのはVisualStudioではないかと思いますが
Javaで作ったとしたらこれまた凄いことだと思います。
まあ何より大事なのは手を動かしてものを作ると言うことです。
若いウチにやっとかないと年を取ると経験になる「無駄」が出来なくなってしまうので。
0251デフォルトの名無しさん
2007/09/03(月) 14:50:38そこはjava.util.regexパッケージで何とかなるから
あんまりいい例じゃないな。
逆に、ライブラリを使いこなせるという意味で適例かもしれないが。
すごさを理解したいのなら、漠然に「すごい」と理解しておけ。
野球少年が、メジャーリーガーを「スゲー!」と理解するように。
それ以上の理解は、キミには多分無理。
0252デフォルトの名無しさん
2007/09/03(月) 15:09:40java.util.regex 使うんだったら中高生の腕試しには簡単すぎじゃね?
0253デフォルトの名無しさん
2007/09/03(月) 15:56:120254デフォルトの名無しさん
2007/09/03(月) 15:59:40ttp://eow.alc.co.jp/java+/UTF-8/
Jaにアクセントが来ます
0255デフォルトの名無しさん
2007/09/03(月) 16:03:020256デフォルトの名無しさん
2007/09/03(月) 16:42:52'! ,' . : i .;'l;' _,,ニ';、,iソ '; :l ,';.::! i:.! : '、!:';:. :!:. : : : :.; i : :'、:
i:.i、: :。:!.i.:',r'゙,rf"`'iミ,`'' ゙ ';.i `N,_i;i___,,_,'、-';‐l'i'':':':':‐!: i : : '、
i:.!:'、: :.:!l :'゙ i゙:;i{igil};:;l' ヾ! 'i : l',r',テr'‐ミ;‐ミ';i:'i::. : i i i : : :i
:!!゚:i.'、o:'、 ゙、::゙''".::ノ i゙:;:li,__,ノ;:'.、'、 :'i:::. i. !! : : !:
.' :,'. :゙>;::'、⊂‐ニ;;'´ '、';{|llll!: :;ノ ! : !::i. : : : : i :
: :,' /. :iヾ、 ` 、._. ミ;;--‐'´. /.:i;!o: : : :i :
: ; : ,' : : i.: <_ ` ' ' ``'‐⊃./. :,: : : O: i. :見習え!!
: i ,'. . : :', 、,,_ ,.:': ,r'. : , : : !: :パソコン初心者が
:,'/. : : . :;::'、 ゙|llllllllllllF':-.、 ,r';、r': . : :,i. : ;i : :数日でCまで覚えて
i,': : : :.::;.'.:::;`、 |llllH". : : : :`、 ,rシイ...: : ; : :/:i : i:!::i:ゲームをクラックした
;'. : :..:::;':::::;':::::`.、 |ソ/. : : : : : : ;,! ,/'゙. /.:::: :,:': :./',:!: j:;:i;!;長門を見習え!!
i. : .:::;:'i::::;':::::::::i::`:.、;゙、';‐ 、,;__;,/ノ . :,/.:::: :/. : :/.:::i. j:;;;;;;;;
l .:::;:'::;':::;':::::::::::i::::i::`:,`'-二'‐-‐''゙_,、-.':゙/.:::: ;ィ': : :/.:::::i: j、;;;;;;;
.:::;:':::;':::;'::::::::::::::i:::i:::::..`'‐、、、-<゙.::::::::/.::: ://. : /.:::::::i :j::.'、:;;;
0257デフォルトの名無しさん
2007/09/03(月) 17:39:56やはり基礎をやらないと駄目ですよね…
プログラミングやったことない、基礎すらやらせずいきなり
「卒研はjavaで3Dやりなさい」という先生ってorz
0258デフォルトの名無しさん
2007/09/03(月) 17:43:51いや、4年生なら基礎は出来てるという前提だろうし
それ以前の学年なら十分時間があるだろう
授業寝て、宿題スレで課題作ってたのでなければ。
先生、極めて普通です。
0259デフォルトの名無しさん
2007/09/03(月) 18:26:094年かんサボってりゃ無理だろ
ほら、最近流行の代行に頼めば?
1ステップ10円程度でやってくれるんじゃねwww
0260デフォルトの名無しさん
2007/09/03(月) 20:27:24getAsciiStreamメソッドでもgetCharacterStreamでも
「あああ」という文字列が「BBB」と文字化けしてしまいます。
文字化けを回避するにはどうすればいいのでしょうか
0261デフォルトの名無しさん
2007/09/03(月) 21:00:52charAt(0)とcharAt(1)は、16進でいくつ?
0262デフォルトの名無しさん
2007/09/03(月) 21:11:09getAsciiStreamメソッドで得たバイト列 b を
new String(b, "UTF-16")
new String(b, "UTF-16BE")
みたいにしたら表示されたとかいうオチなら笑えるんだが。
0263デフォルトの名無しさん
2007/09/03(月) 21:34:350264デフォルトの名無しさん
2007/09/03(月) 23:17:300265デフォルトの名無しさん
2007/09/03(月) 23:24:430266デフォルトの名無しさん
2007/09/04(火) 00:34:03ttp://headlines.yahoo.co.jp/hl?a=20070901-00000917-san-soci
0267デフォルトの名無しさん
2007/09/04(火) 00:36:10そんなプログラムのソースとかもしあるようでしたら教えてください。
0268デフォルトの名無しさん
2007/09/04(火) 00:41:230269デフォルトの名無しさん
2007/09/04(火) 03:26:49どうすればいいんでしょう。JUnitとデバッグのためにぜひ
必要です。
なにもせずServiceManager.lookupするとUnavailableServiceExceptionで
コケます。
0270デフォルトの名無しさん
2007/09/04(火) 06:38:24CVSファイル(表)をインポートしたいのですが、ただコンマでsplitしただけでは、
フィールド中でダブルクォーテーションで囲まれたコンマや改行でうまくいかないので。
そのうえダブルクォーテーション自体もそれ自体エスケープしてフィールド中に含め得るようで、
なんか複雑なんで、こつこつ頭から一字一句読んでいって、切りだしていきたいのですが。
String中の1文字って必ずしも1つのインデックスに対応しないんですね。
ならばインデックス単位ではなく1文字単位で、イテレータのようなものをつかって
頭から走査していきたいのですが。
0271270
2007/09/04(火) 06:40:450272デフォルトの名無しさん
2007/09/04(火) 07:20:460273デフォルトの名無しさん
2007/09/04(火) 07:36:01例えば、Aというプロセスでセッションに格納した情報をBというプロセスで使いたいのです。
0274デフォルトの名無しさん
2007/09/04(火) 08:03:55あたりまえだのクラッキー
0275デフォルトの名無しさん
2007/09/04(火) 08:05:09シリアライズしてRMI通信かソケット通信かHTTP通信かファイルI/Oを介して
データのやり取りをすれば?
0276デフォルトの名無しさん
2007/09/04(火) 08:27:11Java Media Framework ってのが Sun から提供されているから、それ使ってみろ。
動画の形式にもよるが、MPEG-1, QT, H.261, H.263が対応って書いてあるから
大丈夫だろ。
1フレームごとにキャプチャして RGB 成分に分解すればあとはできるだろ。
0277デフォルトの名無しさん
2007/09/04(火) 08:41:15例外をキャッチしたら、自前で実装したPersistenceServiceを返せば
いいんじゃねぇの?ローカルなんだから適当にフォルダきめうちして
そこに書き込むようにしてさ。
0278デフォルトの名無しさん
2007/09/04(火) 09:01:510279270
2007/09/04(火) 09:19:31CSVTokenizerというライブラリがヒットしましたが、
どうやらフィールド中の改行には対応していないようです。
java.utilScannerなんか、いかにもそれっぽい名前なのに
何だか違うみたいです。
0280デフォルトの名無しさん
2007/09/04(火) 09:51:07CSVは仕様自体が簡単そうにみえて思ったよりも面倒なんで、標準の文字列解析ライブラリ
だと難しいと思う。
例えば、ダブルクォーテーションやカンマの意味について、現れる場所によって
異なる解釈をしなければならないのが原因。
ただ世間にはCSVのライブラリはあふれているので、検索してそれを使うなり、
参考にするなりしてみれば?
0281デフォルトの名無しさん
2007/09/04(火) 10:50:23ttp://www.ietf.org/rfc/rfc4180.txt
0282デフォルトの名無しさん
2007/09/04(火) 11:26:20そこでデータ検索し、表示されたデータを印刷する場合は
表示された印刷ボタンを押す仕組みになっているのですが(普通には印刷不可)
その印刷ボタンを押すと、必ずA4縦・余白が25.4ミリになります。
IEでページ設定の初期値を変えても
このサイトの印刷に関しては毎回この数値になっていまい
いちいち変えるのがとても面倒です。
何とか、このサイトでの印刷時も
サイズや向きや余白を、自分の好みで固定できないでしょうか?
このスレにふさわしくない質問の場合は申し訳ありません。
0283デフォルトの名無しさん
2007/09/04(火) 11:33:33つ ttp://opencsv.sourceforge.net/
What features does opencsv support?
opencsv supports all the basic csv-type things you're likely to want to do:
* Handling quoted entries with embedded carriage returns (ie entries that span multiple lines)
0284デフォルトの名無しさん
2007/09/04(火) 14:16:57ボタンを押して、JFileChooserを呼び出して、そこから表示させるようにしています。
そこで、
1枚目に大きな画像を読み込んで、
2枚目に小さな画像を読み込んだときに、
大きな画像の断片が表示されたままになってしまいます。
現在はpaintメソッドに、
super.paint(g);
g.drawRect(0, 0, this.getWidth(), this.getHeight());
g.drawImage(img, 80, 20, this);
というような手続きを書き、mainからは、repaintで呼び出しているのですが、おかしいのでしょうか?
どなたかご教示をよろしくお願いします。
0285デフォルトの名無しさん
2007/09/04(火) 14:23:14drawRect は枠を描くだけで、中は塗りつぶさないんじゃない?
0286デフォルトの名無しさん
2007/09/04(火) 14:28:180287デフォルトの名無しさん
2007/09/04(火) 14:28:59すみません、drawFillの間違いです。
相変わらず、上記の動作になりますが。
0288デフォルトの名無しさん
2007/09/04(火) 14:32:090289デフォルトの名無しさん
2007/09/04(火) 14:38:23だとしたら、paintをオーバーライドするのではなく、paintComponentをオーバーライド汁
0290デフォルトの名無しさん
2007/09/04(火) 14:39:31あとswing使うんならオーバーライドすんのはpaintComponentのほうがよくね?
0291デフォルトの名無しさん
2007/09/04(火) 14:41:160292デフォルトの名無しさん
2007/09/04(火) 14:44:38巣にお帰り
0293デフォルトの名無しさん
2007/09/04(火) 14:49:20super.paintもしくはsuper.paintComponentで何が設定されているか分からん
0294デフォルトの名無しさん
2007/09/04(火) 14:51:08http://b.hatena.ne.jp/entry/2453373
0295デフォルトの名無しさん
2007/09/04(火) 14:57:07大きいイメージを書き込んだimgに小さいイメージを書き足してるんじゃね?
0296デフォルトの名無しさん
2007/09/04(火) 14:58:19ひとつでしょうか?
0297284
2007/09/04(火) 14:58:410298284
2007/09/04(火) 14:59:110299284
2007/09/04(火) 15:00:45別のクラスから、俺俺クラスのインスタンスを作成して、
そこから、repaint()メソッドを実行しているのですが、この方法がだめなのでしょうか?
何度も書き込んでしまい、すみません。
0300デフォルトの名無しさん
2007/09/04(火) 15:00:55もう少し範囲を広げてソースを出したほうがいいかも
0301デフォルトの名無しさん
2007/09/04(火) 15:22:35public class Test extends JFrame implements ActionListener{
JButton btn;
Image img = null;
DrawPanel d_pnl;
Test(String title){
btn = new JButton("button");
btn.addActionListener(this);
d_pnl = new DrawPanel();
Container cnt = getContentPane();
cnt.add(btn,BorderLayout.SOUTH);
cnt.add(d_pnl,BorderLayout.CENTER)
;
setSize(400,400);
setTitle(title);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btn){
d_pnl.repaint();
}
}
public static void main(String[] args){
Test app = new Test("test");
}
}
0302デフォルトの名無しさん
2007/09/04(火) 15:23:36http://want-pc.com
0303デフォルトの名無しさん
2007/09/04(火) 15:32:080304デフォルトの名無しさん
2007/09/04(火) 15:46:58残念ですが
研究室の配属は学科長が勝手に決め
そういう授業(javaとかCなどの情報系の科目)すら講義にないのです
0305デフォルトの名無しさん
2007/09/04(火) 15:53:24actionPerformedのところで、下のように、imgに代入しています。
さっきは削ってしまいました。
何度もすみません。
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btn){
img = d_pnl.makeImage();
d_pnl.repaint();
}
}
0306デフォルトの名無しさん
2007/09/04(火) 16:10:42スマートかどうかは別の問題として。
画像本体の読み込み、表示がほぼ問題なく、残像が問題になってるのに、
描画系のソースを公開しないのは、何か理由がおありなのでしょうか
0307デフォルトの名無しさん
2007/09/04(火) 16:11:28なんつーか一番の間違いはそんな学校に入ったことか、
自分で何とかしなかったことかな。
プログラミング言語を誰かに教えてもらうって感覚が理解できない・・・
俺の出たとこも情報系だが別に言語を教える授業なんて無かったぞ。
かろうじてあったのはPascalの授業。
最低でもCは書けるか、自力で書けるようになっていることが大前提。
そんなトコまで教えてたら、時間がたりねーよ。
0308デフォルトの名無しさん
2007/09/04(火) 16:13:03> makeImageというメソッドを用意して、そこでImageをつくっています
と言いつつ、そのimgを作成するところを見せない
>>303の「imgを作成するところとimgを描画するところ」ってのは
makeImageとpaintComponentの実装を出せってことだと思うぞ
のらりくらりと核心部分を晒さないということはネタ質問ということなのか?
0309デフォルトの名無しさん
2007/09/04(火) 16:16:26そこなら基礎からry
0310デフォルトの名無しさん
2007/09/04(火) 16:52:030311デフォルトの名無しさん
2007/09/04(火) 16:58:370312デフォルトの名無しさん
2007/09/04(火) 17:01:18import java.awt.event.*;
import javax.swing.*;
public class jpeg画像を読み込んで表示させるプログラム extends JFrame {
public jpeg画像を読み込んで表示させるプログラム() {
SwingUtilities.invokeLater(new Runnable() { public void run() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton b = new JButton("button");
final JLabel l = new JLabel("");
add(b, java.awt.BorderLayout.SOUTH);
add(l, java.awt.BorderLayout.CENTER);
b.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
JFileChooser c = new JFileChooser(); c.showOpenDialog(null); java.io.File f = c.getSelectedFile();
if (f == null) return;
l.setIcon(new ImageIcon(f.getPath())); jpeg画像を読み込んで表示させるプログラム.this.pack();
}});
pack();
setVisible(true);
}});
}
public static void main(String[] args) { new jpeg画像を読み込んで表示させるプログラム(); }
}
0313デフォルトの名無しさん
2007/09/04(火) 17:07:25コンストラクタの中でなく外に出さないと・・・
public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() {
new jpeg画像を読み込んで表示させるプログラム();
}});
0314デフォルトの名無しさん
2007/09/04(火) 17:24:42ブラウザ(IE)のエンコードを見るとなぜか西ヨーロッパ言語(ISO)となっています。
シフトJISに変えると日本語が表示されました。
なぜこんなことになってしまうのでしょう?
0315デフォルトの名無しさん
2007/09/04(火) 18:03:10IEは勝手に分析をするから。
そのアルゴリズムまでは分からないが…と書きつつぐぐると…
Internet Explorer でコンテンツの表示中に表示エンコードの自動選択を有効にすると文字化けが発生する
ttp://support.microsoft.com/kb/827474/ja
0316デフォルトの名無しさん
2007/09/04(火) 18:06:56残念ながら、エンコードの推測なんてものは、あんまり的中率がよくない。
キミはシフトJISのつもりでHTMLを書いたのかもしれないが、ブラウザはそんなことを知りはしない。
エンコードの推測が外れてヨーロッパ言語だと思ってしまったんだろう。
たぶんそのjspにはpageディレクティブかなんかでエンコードが指定してあって、htmlの方には何もないんじゃないか。
Content-Type エンコード とかでぐぐってみるといい。
0317デフォルトの名無しさん
2007/09/04(火) 18:14:230318デフォルトの名無しさん
2007/09/04(火) 18:17:17トランプの残り枚数が3以下になったときは、トランプをシャッフルしてまた上の動作を繰り返す
これを百回行って、合計が8になったときの回数を表示する。
このようなプログラムを作りたいのですがさっぱりわかりません。
コレクションを使うとかなんかそんな話は聞いたのですがちんぷんかんぷんです。
どなたか↑のようなプログラムを書いていただけませんか?
0319デフォルトの名無しさん
2007/09/04(火) 18:19:55ヘッダに Content-Type: text/html;charset=ISO-8859-1
とかが含まれていると、HTMLのmetaに書いても無視されるよ。
0320デフォルトの名無しさん
2007/09/04(火) 18:21:23まずHTMLに書いたmetaタグ内のスペルミスを疑う。
そうじゃなければ、サーバが Content-Type レスポンスヘッダに別なエンコードを送り出してる可能性がある。
0321デフォルトの名無しさん
2007/09/04(火) 18:21:31★★ Java の宿題ここで答えます Part 62 ★★
ttp://pc11.2ch.net/test/read.cgi/tech/1184509890/
0322デフォルトの名無しさん
2007/09/04(火) 18:22:22宿題スレへ行け
0323デフォルトの名無しさん
2007/09/04(火) 18:23:29ありがとうございます。たぶんそれだと思います。
設定はどこにあるものなのでしょうか?サーバーはWebLogic10です。
0324デフォルトの名無しさん
2007/09/04(火) 18:30:52スレ違いでしたか。どうもすみませんでした。そちらの方に行きます。
0325デフォルトの名無しさん
2007/09/04(火) 18:42:44ブラウザのそういう実装だと思っておけば良いよ。
0326デフォルトの名無しさん
2007/09/04(火) 18:43:270327デフォルトの名無しさん
2007/09/04(火) 18:50:36フィールド中に改行ってどんな仕様だよ・・・
0328デフォルトの名無しさん
2007/09/04(火) 18:54:01>>281 RFCにはあるでよ
0329デフォルトの名無しさん
2007/09/04(火) 18:58:360330デフォルトの名無しさん
2007/09/04(火) 19:00:49Connection: close
Date: Tue, 04 Sep 2007 09:59:58 GMT
Content-Length: 313
Content-Type: text/html; charset=ISO-8859-1
Last-Modified: Tue, 04 Sep 2007 09:14:13 GMT
X-Powered-By: Servlet/2.5 JSP/2.1
ISO-8859-1が返ってきてました。
0331デフォルトの名無しさん
2007/09/04(火) 19:23:51ニンジン, 03-1234-5678, [email protected], F900i,mac,010110
のデータ形式なもので , で区切られて文字列を
各個、配列として代入したいのですが
どのような手順を踏めばよろしいでしょうか?
0332デフォルトの名無しさん
2007/09/04(火) 19:29:390333デフォルトの名無しさん
2007/09/04(火) 19:30:29String s = "ニンジン, 03-1234-5678, [email protected], F900i,mac,010110";
String[] array = Collections.list(new StringTokenizer(s, ",")).toArray(new String[0]);
0334デフォルトの名無しさん
2007/09/04(火) 19:32:130335デフォルトの名無しさん
2007/09/04(火) 19:34:41早急なお返事に感謝です。
0336デフォルトの名無しさん
2007/09/04(火) 19:38:500337デフォルトの名無しさん
2007/09/04(火) 20:10:480338270
2007/09/04(火) 20:22:52>>281
>>280
寝てて遅れレスですが、ありがとうございます。
こういう複雑な文字列解析するとき、みなさんはどうやってるんですかね。
Cだったらただ配列を読めばすむのに、コードポイントとかサロゲートとかよくわかりません。
0339デフォルトの名無しさん
2007/09/04(火) 20:25:230340デフォルトの名無しさん
2007/09/04(火) 20:28:30今でも可能性が広がっただけですがね。
Unicode 4.0 の補助文字のサポート
ttp://www.javainthebox.net/laboratory/J2SE1.5/MiscAPI/SupplementaryChar/SupplementaryChar.html
まずは、char - String の文字走査を覚えることです。量は大して無いし。
codepoint - String はその派生なもんで。
0341デフォルトの名無しさん
2007/09/04(火) 20:33:20まじめに作るなら、オートマトン設計して1文字ずつ読んでみるとか。
Javaは、文字コードの変換は勝手にやってくれるし(Readerへの文字コード指示)
バッファリングはあまり気を遣わないですむようになってる(BufferedReader)。
だから、楽っちゃあ楽。
コードポイント、サロゲートは、Unicodeの特殊な文字を読むときに出てくる。
まじめに対応するつもりなら、文字はcharではなくintで扱う構造にしなくちゃだめ。
まあ普通に入力文字を扱う分には関係ないでしょう。
0343デフォルトの名無しさん
2007/09/04(火) 21:57:05どのようにすればよいのでしょうか?
KeyTypeイベントでキー判定して、判断するのでしょうか?
0344デフォルトの名無しさん
2007/09/04(火) 22:02:06ttp://homepage2.nifty.com/t-1000/java/java_qanda/q28.html
> テキストフィールドが変更されるたびに、ある一連の処理をしたい…
検索キー「JTextField 変更」
0345デフォルトの名無しさん
2007/09/04(火) 22:18:50JavaScriptの仕様なんかは文字列から部分文字列取り出す場合サロゲートぶった切る仕様だった筈だし。
多くの場合、そういう実装でも特殊な場合を除いては全く問題無い気がする。
0346343
2007/09/04(火) 22:23:13ありがとうございます。
0347270
2007/09/04(火) 22:51:38なんかいままで勘違いしていたのですが、
サロゲートに使われるビットパターンというのって決まっているんですね。
つまりある16ビット見ただけで、
それがサロゲートかどうか、上位か下位が判断できるんですね。
いままで、前の16ビットを参照して、上位サロゲートがあるかどうか調べないと、
ある16ビットが下位サロゲートか普通の文字かどうか判断できないのかと思ってました。
たとえばカンマを検出する際に、ただインデックスで走査しただけでは、
ある補助文字の下位サロゲートがカンマと一致していて
誤検出されるかもしれないとか考えていたんで。
つまりカンマやクォーテーションなど
従来の1バイト文字を検出してどうこうするくらいの解析なら、
普通にインデックスで走査すれば問題なかったんですね。
いろいろありがとうございました。
0348デフォルトの名無しさん
2007/09/04(火) 22:58:030350デフォルトの名無しさん
2007/09/05(水) 01:17:29PrintWriter out = request.getWriter();
とかもう意味わかんない。
どういう意味ですか?
0351デフォルトの名無しさん
2007/09/05(水) 01:20:35class Derived extends Base{ void meth1(){System.out.println("Derived meth1メソッド実行を表示しました。"); } }
class Super{ Base meth(){ System.out.println("Super methメソッド実行を表示しました。");return new Base(); } }
class Sub extends Super{ Derived meth(){ System.out.println("Sub methメソッド実行を表示しました。"); return new Base(); } }
class Sample{ public static void main(String[] args){ Super s = new Sub();s.meth().meth1(); } }
問題集やっててわからないことがあったので質問です。
このコードはclassSubのreturn new Base()の箇所が間違いで、
エラーになるようなのですが、
どういう理由でエラーになるのかがわかりません。
○ Base meth() ... return new Base
○ Base meth() ... return new Derived
× Derived meth() ... return new Base
○ Derived meth() ... return new Derived
以上4通りの戻り値型と、作成するオブジェクトの型の組み合わせをclassSubで試したところ、
3つ目(つまり前述コードの場合)だけがエラーになってしまいますが、理由がわかりません。
いろいろ検索してもわからなかったので、理由を教えていただければなと思います。
スペースの都合上、読みにくいコードになりました、すいません。
質問不足な感があったら、あとで追記したいと思います。
よろしくお願いします。
0352デフォルトの名無しさん
2007/09/05(水) 01:25:48PrintWriterが解らないのか、outが解らないのか、requestが解らないのか、getWriter()が解らないのか、解らない
0353デフォルトの名無しさん
2007/09/05(水) 01:26:07逆向きはできない。
0354デフォルトの名無しさん
2007/09/05(水) 01:30:06何のヒッカケもない、継承の基礎。
Derived extends Base なんだから、 Derived is a Base でしょ?
○ Base meth() ... return new Base
戻り値の型とインスタンスが一致
○ Base meth() ... return new Derived
Derived is a Base なのでOK
× Derived meth() ... return new Base
Base is a Derived ではないのでNG
○ Derived meth() ... return new Derived
戻り値の型とインスタンスが一致
0355デフォルトの名無しさん
2007/09/05(水) 01:33:29>>354さん
ありがとうございます。
m(_ _)m
戻り値型や共変戻り値型、
オーバーロードオーバーライドなど、色々見ていたのですが、
参考になる箇所を見つけられなかったもので・・・。
なるほど、継承の項をもう少し読んでみます。
(*^_^*)ありがとうございました。
0356デフォルトの名無しさん
2007/09/05(水) 01:36:09ひとつひとつ当たってみます。
0357デフォルトの名無しさん
2007/09/05(水) 01:47:29悪い事は言わないから、Java言語の入門書からやれ
0358デフォルトの名無しさん
2007/09/05(水) 08:49:13記述方法は違うけどコンパイラと実行環境が違うってだけ?
0359デフォルトの名無しさん
2007/09/05(水) 09:13:02入門書は1ページ目から眠くなるんで、避けてます。
0360デフォルトの名無しさん
2007/09/05(水) 09:19:02MS Javaなんて化石だろ・・・気にする必要ない
0361デフォルトの名無しさん
2007/09/05(水) 09:57:350362デフォルトの名無しさん
2007/09/05(水) 10:07:56お前の知識はたかが知れてるてこった
0363デフォルトの名無しさん
2007/09/05(水) 10:13:00お前の言う知識とやらを披露してくれ
0364デフォルトの名無しさん
2007/09/05(水) 10:34:51化石の知識は気にしないだろ?
知っているが、お前に知識は披露しない
0365デフォルトの名無しさん
2007/09/05(水) 10:45:040366358
2007/09/05(水) 11:16:57.netで動いたりするの?記述自体はSunのやつと変わらない?
0367デフォルトの名無しさん
2007/09/05(水) 11:30:54なんで今更 Microsoft Java のことなんて知りたいの?
・MS独自拡張が入っていたので、ふつうのJavaではできないことができた
・.NET は関係ない
0368デフォルトの名無しさん
2007/09/05(水) 11:31:48.net自体はMS Javaをベースに開発されたらしいけど、その時点で本家Javaとは袂が分かれた、と認識している。
なんで、今の.netのJavaってのは、Java風に書ける.netという言語かと。
つまり、似ているけど別モン、JavaとJavaScriptみたいなもん?
ぶっちゃけMS嫌いだし、どうでもいい。
間違いは指摘してくれ
0369デフォルトの名無しさん
2007/09/05(水) 11:42:300370デフォルトの名無しさん
2007/09/05(水) 12:25:010371デフォルトの名無しさん
2007/09/05(水) 12:39:31MS JavaはSunJavaの拡張版みたいなのだけどセキュリティ的にウダウダだったので開発中止になった
んで、MSは次に.NET環境で動作するJ#やJ++を作った
ってことでいいのかな?
ちなみにMSのJavaは記述方法とかはSunのと比べてapiか豊富っていうこと意外はあんまり変わらない?
J#やJ++は違うのは当たり前として
今更って質問だと思われるだろうが前から気になっていたんで質問させてもらっただけなんだ・・・・
0372デフォルトの名無しさん
2007/09/05(水) 12:45:32でも、暴走を始めたモンでSunが切れ、名前を仕方なくJ++に。
そのまま消えていくのかと思いきや、.netとして帰ってきた・・・かな
記述方法は調べた事ないから解らん。
1.2とか1.3とかそんな時代だし、変わらんのじゃないかね。
1.4になる頃にはどうでもいい代物になっていたような記憶ある
0373デフォルトの名無しさん
2007/09/05(水) 12:59:34MS JavaはSunに裁判で負けて、更新版を提供できなくなったために
最終的にセキュリティがウダウダになったのではないかな。
もともとはMS独自拡張をSunが嫌っただけと思う。
当時はJavaほとんど使ってなかったので、細かな機能差は知らないけど
COMの操作が簡単にできたりとかDLLのネイティブ関数を直接呼び出したりとか
Windowsで使う分には便利だったような気がした。
0374デフォルトの名無しさん
2007/09/05(水) 13:26:30J++でMFCつかってクラスファイル吐く馬鹿とか・・・
そもそも仕様が古すぎ・互換性が薄いせいでIEのMSJVMでしかまともに動かなかったり。(NPE投げるかVMクラッシュか)
javaの機能しか使ってないJ++ソースなのにjavacすると型周りで怒られたり・・・
てかJ++はメインストリーム終わってんだからJ#に移行しろよ。
0375デフォルトの名無しさん
2007/09/05(水) 16:28:21JFreeChartオブジェクト生成後の、凡例のラベル名の変更方法がわからなくて困っています。
例えばXYSeriesオブジェクトを生成するときは、new XYSeries(Compable key)することでラベル名を指定できるのですが
メソッドでラベル名を変更する方法がないようでした。
また、凡例を表すLegendItemクラスのgetLabelメソッドでラベル名は取得できましたが、セッターメソッドが見つかりません。
ラベル名を変更するにはどうすればよいでしょうか?
0376デフォルトの名無しさん
2007/09/05(水) 16:42:59メニューバーの部分や外枠も大きさの指定に含まれてしまいます。
含まないようにするには、どうすればいいのでしょうか?
0377デフォルトの名無しさん
2007/09/05(水) 16:47:49マニュアル嫁
>>376
含まないようには出来ないので、外枠分を考慮して指定するしか方法はない
0378デフォルトの名無しさん
2007/09/05(水) 16:50:56JFrameの中のコンポーネントにsetPreferredSizeを指定してpackする
0379デフォルトの名無しさん
2007/09/05(水) 16:56:00コンポーネントが大量にあるんですが・・・・どうやって指定すればいいのでしょう?
0380デフォルトの名無しさん
2007/09/05(水) 16:57:460381デフォルトの名無しさん
2007/09/05(水) 17:03:210382デフォルトの名無しさん
2007/09/05(水) 17:08:35内側のサイズを設定したいならJPanelかなんかにのせればいいだろ
0383デフォルトの名無しさん
2007/09/05(水) 17:11:34その方法でやるとできましたーー。
setBounds使わなくてもいいんですね。
ありがとうございました。
0384デフォルトの名無しさん
2007/09/05(水) 17:27:31まぁなんとなくの流れは分かったよ!
ありがとー!
0385デフォルトの名無しさん
2007/09/05(水) 19:31:16Insetプロパティってセットできなかったけ?
0386デフォルトの名無しさん
2007/09/05(水) 20:53:16良い方法ってありませんでしょうか?
例えば XML にして、Seasar の dicon に書く component と property のように
するのも一つの方法にも思えますが、なるべく労の少ない方法はないでしょうか。
0387デフォルトの名無しさん
2007/09/05(水) 21:13:57文字列を使うってコトは何か特殊な用途っぽいが・・・
0388デフォルトの名無しさん
2007/09/05(水) 21:15:320389デフォルトの名無しさん
2007/09/05(水) 21:29:190390デフォルトの名無しさん
2007/09/05(水) 22:09:35それを「文字列あたりで」って言っていいかどうかは別として
0391デフォルトの名無しさん
2007/09/05(水) 22:23:34XMLに保存するとかならば、永続化とかって言うのかと思っていたが
0392デフォルトの名無しさん
2007/09/05(水) 22:37:15JFreeChart#addLegend(LegendTitle legend)
では駄目なのか?
0393デフォルトの名無しさん
2007/09/05(水) 22:46:12Javaの標準的な形式にエンコードせずにXML形式でストリームに吐き出せばXMLでシリアライズしたことになる。
オブジェクトの永続化はそのストリームの出力先を、ファイルなりデータベースなりの、
VMより長生きする領域に結びつけること。
シリアライズの使用法としては永続化以外にRMI等の通信でのオブジェクトのやり取りもある。
0394デフォルトの名無しさん
2007/09/05(水) 23:07:03一般的に「オブジェクトをXML形式でシリアライズする」と言うんでしょうか?
あと、toStringでも要件さえ満たせばシリアライズと言うって事?
0395デフォルトの名無しさん
2007/09/05(水) 23:23:01XML ねぇ・・・
例外オブジェクトをシリアライズするっていうのは、スタックフレームも例外チェインも全部保存するんだよね?
自力でやるのはけっこう面倒そうな気がする
文字列化したい理由は何?
0396デフォルトの名無しさん
2007/09/05(水) 23:25:02> 一般的に「オブジェクトをXML形式でシリアライズする」と言うんでしょうか?
さあ?一般的な言い回しは分からないや。
> toStringでも要件さえ満たせばシリアライズと言うって事?
オブジェクトを復元できるなら実装は問わないんじゃないのかな。
0397デフォルトの名無しさん
2007/09/05(水) 23:39:49XMLでも然りなんではないかね?
って、シリアライズの定義ってデシリアライズ可能な事まで含まれるんだろうか?
ちょっと調べたところだと、必須という記述はなかった。
復元できなきゃ使いようがないというのは確かだが・・・
0398デフォルトの名無しさん
2007/09/05(水) 23:47:47再構築可能性は記述に無くても暗黙の前提だと思うけど。
0399デフォルトの名無しさん
2007/09/05(水) 23:57:43だからといって行間嫁というわけにはならんけど。
完全な復号はできなくとも、シリアライズの過程の行間を読んで復号ってのはないとは言い切れない。
0400デフォルトの名無しさん
2007/09/06(木) 00:07:56単にオブジェクトの状態を外部に保持させたいだけだ。
シリアライズは関係ない。
0401デフォルトの名無しさん
2007/09/06(木) 01:44:46public Sample05Canvas()
throws Exception
{
}
こんな感じです。
0402デフォルトの名無しさん
2007/09/06(木) 02:31:31関数じゃなくてメソッド。
Exception とそのサブクラスを受け取る必要があることを示す。
Exception のみ、というのは単なる手抜きで、人様向けには使ってはいけない。
仕様から発生する例外に合わせ、適切なException のサブクラスを用いること。
0403デフォルトの名無しさん
2007/09/06(木) 11:29:06申し訳ありません。記述不足が混乱を招く典型的な状況ですね。
くみ取って頂いていた方もいらっしゃいますが、
例外オブジェクトを外部で保持し、必要に応じて復元したいと言う事に尽きます。
それこそ ObjectOutputStream で書き出す方法もあるかとは思うのですが、
JDK やモジュールのバージョン間の制約が思わぬ所で問題となりそうな気がしまして、
できれば何かしらのフォーマットで書き/読み出しするのに良い方法が
あればと思いました。XML などと申し上げましたが、human-readableである必要は全くありません。
しかし、やはり >>395 でご指摘のあるような点はどう頑張ってもありますよね…
0404デフォルトの名無しさん
2007/09/06(木) 11:34:16Throwする必要はないんだったら、
toStringしたのを保存しておけばいいじゃないかな?
もう少し頑張れば、
Throwable.getStackTrace() した結果のリスト項目毎に別ファイルにばらまいておくとか?
何かエラーログを取りたいだけなんじゃないかという気がしてきた。
0405デフォルトの名無しさん
2007/09/06(木) 12:15:190406デフォルトの名無しさん
2007/09/06(木) 12:30:45その文字列の変数を取り出すには
どうしたらいいんでしょうか
0407デフォルトの名無しさん
2007/09/06(木) 12:37:42意味が分からん。
仮に、
>文字列として保存してある「変数名」を使って、
>その「変数名」の表す変数の「値」を取り出す
のであれば、リフレクションを使う。
0408デフォルトの名無しさん
2007/09/06(木) 13:18:17面倒なことを考えたくないなら、 commons-beanutils を使う。
他の面倒なことが起きるかもしれないけど。
0409デフォルトの名無しさん
2007/09/06(木) 14:34:04Properties prop = new Properties();
prop.load(new FileInputStream("test.properties"));
こういう呼びだし方をしています。
下記のようなファイル構成で、シェル(a.sh)の中で
java -cp `dirname $0` test.a
という呼び方で実行したいと考えています。
A┬ test
| └― a.class
├ test.properties
└ a.sh
ここでどのようなシェルの実行の仕方をしても
( A/a.sh 、 /***/A/a.sh 、 ./a.sh)
test.propertiesファイルを読み込めるようにしたいのですが、
どのように実装すればよいのでしょうか。
0410デフォルトの名無しさん
2007/09/06(木) 14:37:54をあきらめる。
0411デフォルトの名無しさん
2007/09/06(木) 14:40:01prop.load(getClass().getClassLoader().getResourceAsStream("/test.properties"));
0412デフォルトの名無しさん
2007/09/06(木) 14:55:34を自動で何度もfireさせるって出来ないようにされてるのかな
0413デフォルトの名無しさん
2007/09/06(木) 15:41:00ボタンがキーボードのスペースで反応しないようにしたいです。
0414デフォルトの名無しさん
2007/09/06(木) 16:01:00Component.setFocusable(boolean focusable)
フォーカスを得られないように出来る。
これをボタンに適用する。JButton で確認。
マウスで反応した後にもフォーカスを得ないことを確認。
0415デフォルトの名無しさん
2007/09/06(木) 16:17:52できましたー。
ありがとうございました。
0416409
2007/09/06(木) 16:32:48シェルの呼ぶ場所を固定化できればいいんですけどね
難しいんです・・・
>>411
すみません、mainの中で呼ぶ方法はないでしょうか?
0417デフォルトの名無しさん
2007/09/06(木) 16:48:44ClassLoader.getSystemResourceAsStream("/foo")
または
test.class.getClassLoader().getResourceAsStream("/foo")
0418デフォルトの名無しさん
2007/09/06(木) 16:51:38○ "foo"
0419409
2007/09/06(木) 17:13:10ありがとうございます。Buildは通りました。
"/foo" はどこをあらわすのでしょうか?
ぬるぽが発生してしまいます。
どこからみて、 /foo になるのでしょうか?
javadocを見る限りでは、
classpathが通ってるところからの相対パスに見えるのですが・・・
0420デフォルトの名無しさん
2007/09/06(木) 17:25:55"/foo"ルートディレクトリからの相対パス
0421デフォルトの名無しさん
2007/09/06(木) 17:29:50>>417に加えて、起動スクリプトをこう変更したら?
#!/bin/sh
c0=`echo $0 | awk '{print substr($0, 1, 1)}'`
if [ $c0 = "/" ] ; then
abspath=$0
else
if [ $c0 = "." ] ; then
abspath="`pwd`/$0"
else
abspath=`which $0`
fi
fi
java -cp `dirname $abspath` test.a
0422デフォルトの名無しさん
2007/09/06(木) 17:35:450423デフォルトの名無しさん
2007/09/06(木) 17:37:44test.properties を読みたいなら引数は "test" ですよ。
0424409
2007/09/06(木) 17:49:25申し訳ないです。うまくいきません。
今はこちらを利用していますが、
ClassLoader.getSystemResourceAsStream("/test.properties")
ルート、実行シェルの場所に test.properties を置きましたが
読み込めませんでした
>421
クラスパスを絶対パスで書くのと相対パスで書くことの違いは
getSystemResourceAsStreamの内容がそこに依存しているから、
という認識で大丈夫ですかね?
0425デフォルトの名無しさん
2007/09/06(木) 18:45:45下記コンパイルエラーをとりたく努力しております。
一言アドバイス下さい。
よろしくお願いいたします。
app\src\NESCanvas.java:684: シンボルを見つけられません。
シンボル: メソッド drawRGB(int[],int,int,int,int,int,int,boolean)
場所 : javax.microedition.lcdui.Graphics の クラス
g.drawRGB( core.fb, 256*8+8, 256, 80, 1, 240, 224, false
);
^
app\src\NESCanvas.java:745: シンボルを見つけられません。
シンボル: メソッド drawRGB(int[],int,int,int,int,int,int,boolean)
場所 : javax.microedition.lcdui.Graphics の クラス
zoomGra.drawRGB( core.fb, 256*8+8, 256, 20, 1, 240, 224,
false);
^
エラー 2 個
0426デフォルトの名無しさん
2007/09/06(木) 18:53:350427デフォルトの名無しさん
2007/09/06(木) 19:08:42まだ頑張ってたのかお前。
Graphics.drawRGB(int[],int,int,int,int,int,int,boolean)が追加されたのはMIDP2.0からだよ。
コンフィギュレーションがCLDC1.1で
プロファイルがMIDP2.0か確認しろ。
javacの-bootclasspathと-extdirsを見直せ。
ついでにjavacのバージョン晒せ。
0428デフォルトの名無しさん
2007/09/06(木) 19:08:55javax.microedition.lcdui.Graphicsクラスのリファレンスをよく読め
drawRGB(int[],int,int,int,int,int,int,boolean)というメソッドは存在しないと言っている
0429デフォルトの名無しさん
2007/09/06(木) 19:12:06教授下さいってのは大学で言え
ここでは配布していない
0430デフォルトの名無しさん
2007/09/06(木) 21:50:080431デフォルトの名無しさん
2007/09/06(木) 21:55:010432デフォルトの名無しさん
2007/09/06(木) 21:55:48掲示板で軽い質問を返すときは教示だ。
0433デフォルトの名無しさん
2007/09/06(木) 22:10:09http://faces.bascule.co.jp/tutorial/
上記プログラムを動かそうとしたのですが、以下のようなメッセージが出ます。
Exception in thread "Thread-0" java.lang.NoClassDefFoundError: org/apache/crimso
n/tree/XmlDocument
at jp.faces.RoomInfo.outputAll(RoomInfo.java:307)
at jp.faces.FacesXML.processQR(FacesXML.java:223)
at jp.faces.FacesXML.DocumentAnalysis(FacesXML.java:563)
at jp.faces.FacesXML.readXML(FacesXML.java:52)
at jp.faces.FacesClient.run(FacesClient.java:102)
まさに>>1に書いてある初心者ミスだとは思うのですが、どうしても対処できません。
検索したところ、CLASSPATHの設定が上手くいってないということなのですが、
どう設定すればよいのでしょう…。
現在は[システムのプロパティ]>[環境変数]>[システム環境変数]
でCLASSPATHの値はC:\Program Files\Java\jdk1.5.0_07\jre\lib\ext;.
PATHの値はC:\Program Files\Java\jdk1.5.0_07\bin;になっています。
0434デフォルトの名無しさん
2007/09/06(木) 22:23:15よく読んでいないけど、はずしたら動くかもよ
0435デフォルトの名無しさん
2007/09/06(木) 22:29:30JDK5.0で、JVM同梱のXMLプロセッサが変更されたためと思われ。
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/xml/jaxp/JAXP-Compatibility_150.html
元のページは見てないけど、ソース修正が必要になるかも。
0436デフォルトの名無しさん
2007/09/06(木) 22:38:33ブラウザの言語設定を英語でアクセスすると、英語のメッセージリソースファイルが使用されてしまうのです。
strutsは何で判断をしてメッセージリソースファイルをだしわけているのでしょうか?
0437デフォルトの名無しさん
2007/09/06(木) 23:12:430438デフォルトの名無しさん
2007/09/06(木) 23:14:39まさにその通りでした。
version1.4に差し替えたところ、とりあえず正常に動作しました。
的確&迅速なアドバイス本当にありがとうございました!
0439デフォルトの名無しさん
2007/09/06(木) 23:15:54そうなんですね。ありがとうございます。
ブラウザの言語設定に関わらずある言語のメッセージリソースファイルを出すには
どうすればよいのでしょうか?
0440デフォルトの名無しさん
2007/09/07(金) 00:45:14データベース内の画像全てを表示し、クリックした画像が拡大される
というのを作りたいのですが、これには必要個数分コンポーネントを作成し
それぞれに対してアクションコマンドの設定が要りますか?
今はループを使って画像を羅列表示させていますが、詰まりました。
0441デフォルトの名無しさん
2007/09/07(金) 01:11:07説明が下手杉
・データベースの種類は何だ?
・何をどんな風にクリックするんだ?
・何のコンポーネント?
・アクションコマンドって何の用語?
・今は表示させているとは、何を使ってどのように表示させている?
全く持って意味が通じない。
0443デフォルトの名無しさん
2007/09/07(金) 01:29:32具体的にどうやって解決したんだ?
0444デフォルトの名無しさん
2007/09/07(金) 01:42:54心配してくれてありがとう
0445デフォルトの名無しさん
2007/09/07(金) 01:48:04氏ねゴミ
0446デフォルトの名無しさん
2007/09/07(金) 04:11:48やりたいことは、以下のような感じです。
set VAL = java Hoge
どなたか教えてください。
0447デフォルトの名無しさん
2007/09/07(金) 05:13:30ファイルの種類を判定する方法ってありませんか。
せめてテキストベースかバイナリファイルかぐらい判定できるといいのですが。
0448デフォルトの名無しさん
2007/09/07(金) 06:24:34System.exit(数値) で値を返せる。
文字列は返せないし、Java から環境変数は設定できないから
そういう時は戻り値をファイルに格納するなりして対処する。
>>447
テキストかバイナリかは文字のエンコードが何になるかで判定方法が
変化する。もっと前提を制限しないとまともな返答は無いと思え。
ところでファイルの種類を判別って、極窓みたいなことがしたいってこと?
0449デフォルトの名無しさん
2007/09/07(金) 08:25:36回答ありがとうございます。ただ、System.exit()から、値の受取かたが、分からないのです。
Linuxのシェルでは、「$?」で取得できたのですが、Windowsのバッチファイルでの受取かたがわかりません。
0450デフォルトの名無しさん
2007/09/07(金) 09:19:10> Linuxのシェルでは、「$?」で取得できた
つまりSystem.exitで値を出す側(Java)の質問でなく、
> Windowsのバッチファイルでの受取かたがわかりません
だから、Windowsの使い方が分からないということで、スレ違い、もしくは、板違い。
「windows 環境変数 返り値」でぐぐって、最初の方のページを$?で検索。
0451デフォルトの名無しさん
2007/09/07(金) 09:21:24テキストベースのファイルをJISAutoDetectで読み込んでいるので、
とくにテキストエンコードの指定はありません。
text、html、css、xml、ini、cvs、htaccess、cpp、java、ect...など、
いろいろ読み込もうと思ってます。
極窓まではいきませんが、たとえばワードのファイルなどが
間違って読み込まれたりしないように判定したいのです。
0452デフォルトの名無しさん
2007/09/07(金) 09:27:01UNIX由来のfileってコマンドがある
そのソースを読んでみることをお勧めする
Windows実装もある
ところで「テキストベースのファイルをJISAutoDetectで読み込んでいる」らしいが
「せめてテキストベースかバイナリファイルかぐらい判定できるといいのですが」と矛盾していないか?
0453デフォルトの名無しさん
2007/09/07(金) 09:49:450454デフォルトの名無しさん
2007/09/07(金) 09:54:22無謀ではない
何から入ってもできない人間はできない
ただせめてOSなどのプログラミングを取り巻く環境の扱い方くらいは知っておくべき
0455デフォルトの名無しさん
2007/09/07(金) 09:56:28ありがとう
やる気が出てきた 台風の中本屋行ってくる
0456デフォルトの名無しさん
2007/09/07(金) 11:19:430457デフォルトの名無しさん
2007/09/07(金) 11:36:17人が少なくてゆっくり選べるから、お勧めだな。むしろ合理的だ。
あと、水着で行けばもっと合理的だぞ。
0458デフォルトの名無しさん
2007/09/07(金) 12:02:170459デフォルトの名無しさん
2007/09/07(金) 12:07:56言語を1つ習得できる。
正直、メリットデメリット考えて言語選ぶんだったらVBやったほうが
いい。仕事も多いしな。
0460デフォルトの名無しさん
2007/09/07(金) 12:18:35こちらの方達なら何かご存知かと思い、
質問させて頂きます。
http://www.poitan.net/
こちらのサイト、検索結果が全く画面表示されません。
昨日まではちゃんと使えていたのですが、、、。
『FAQ』欄にあるように、Javaスクリプトは有効に
しているのですが。 何か他に原因がありますでしょうか?
0461デフォルトの名無しさん
2007/09/07(金) 12:21:25バイナリファイルは処理の仕様外ですが、選びさえすれば読んでくれてしまうので、
バイナリファイルをはじきたいのです。
>UNIX由来のfile
一応調べたところfileコマンドの概要はなんとなくわかったのですが、
それはJavaのコードから利用できるのでしょうか。
0462デフォルトの名無しさん
2007/09/07(金) 12:26:10VB覚えると金持ちになれますか?
0463デフォルトの名無しさん
2007/09/07(金) 12:30:45金持ちになりたきゃアメリカ行って一発当てて来い。
もしくは宗教の教祖になれ。儲かるらしいから。
日本でプログラマは間違っても金持ちにはなれんからVB覚えても無駄。
何覚えてもむだだよ。マ板いきゃわかるだろ。
0464デフォルトの名無しさん
2007/09/07(金) 12:33:48Firefox2.0.0.6だがちゃんと使えるぞ?
つーかこんなとこに書かないでポイ探に問い合わせろよ。
それとも宣伝か?
0465デフォルトの名無しさん
2007/09/07(金) 12:38:09そうなの?
ビルゲイツのようになりたいんです!!
0466デフォルトの名無しさん
2007/09/07(金) 12:55:33普通にファイルを読み込んでいって、文字以外のものが現れたらエラーにする。
くらいでいいんじゃない?
0467デフォルトの名無しさん
2007/09/07(金) 13:09:51UTF-8のHTMLファイルを読んだ場合はどうすんだ?それが UTF-8 エンコード
の文字なのかバイナリファイルなのかはどこで区別する?
0468デフォルトの名無しさん
2007/09/07(金) 13:10:58そうか。まあがんばれや。
0469デフォルトの名無しさん
2007/09/07(金) 13:19:05暇が潰せる
0470デフォルトの名無しさん
2007/09/07(金) 13:54:30ビルゲイツはプログラマだが、奴にあったのは商才
0471デフォルトの名無しさん
2007/09/07(金) 14:00:46451はJISAutoDetectで読んでるらしいから、UTF-8とかそもそも無理
0472デフォルトの名無しさん
2007/09/07(金) 14:08:09JISAutoDetectなんで確かにUnicodeは関係ないですね。
UTF-8もとりあえず一通り形が出来上がったら追加しようとは思ってるんですけど。
0473デフォルトの名無しさん
2007/09/07(金) 14:09:16ポイ探にはメールにて問い合わせ(一ヶ月くらい前)を
しているのですが、未だにお返事がない状態です。
0474デフォルトの名無しさん
2007/09/07(金) 14:17:31ソースを読めばどうやってファイルの種類の判別やってるかそのロジックが分かるだろうに
アルゴリズムは言語とは無関係だから当然Javaのコードでも利用できる
0475デフォルトの名無しさん
2007/09/07(金) 14:21:00ああそういうことでしたか。てっきりfileコマンドをjavaから使えば、
といわれているのかと思いました。
そうですね。調べてみます。
ありがとうございました。
0476デフォルトの名無しさん
2007/09/07(金) 14:27:11いや、fileが存在する環境なら外部コマンドとしてJavaから実行するのも一つの手かもしれない
個人的にはJavaで閉じてしまえるものはそうしたいが好みやその他いろいろあるだろうから
0477デフォルトの名無しさん
2007/09/07(金) 14:30:01今、クラス毎にファイルを分け、
同じパッケージに含めててコーディングしています。
異なるクラス同士でリテラルを共有したいなら、
リテラルを含むクラスを抽象クラスにして
各クラスに継承させれば良いと思うのですが、
変数を共有したいときはどうすれば良いでしょう。
ご教授願います。
0478デフォルトの名無しさん
2007/09/07(金) 14:33:310479477
2007/09/07(金) 14:51:55インスタンスの共有とはどういう事でしょうか?
Class1 に変数 n を含んでいるとして、
Class2 と Class3 でそれぞれ
Class1 cs = new Class1();
cs.n として使っても、 Class2 で cs.n が変更されたとき、
Class3 の cs.n は変更されないと思うのですが、違う意味でしょうか。
0480デフォルトの名無しさん
2007/09/07(金) 15:16:06いくつかのインスタンスで共有したいのなら、抽象クラスに非staticで定義して、
インスタンスが保持するその参照が一致するようにしておけばいいんでは?
0481デフォルトの名無しさん
2007/09/07(金) 15:19:30○○だと思うなら、その通りにやってみればいいのに。
>>479
それのどこが共有してるんだか。
強いて言えば、それはクラスの共有。でも、そんな言い方しないな。
0482デフォルトの名無しさん
2007/09/07(金) 15:36:49int n;
}
class Class2{
final Class1 cs;
Class2(Class1 cs){
this.cs=cs;
}
}
class Class3{
final Class1 cs;
Class3(Class1 cs){
this.cs=cs;
}
}
public class Hoge {
public static void main(String[] args) {
Class1 cs = new Class1();
Class2 cs2=new Class2(cs);
Class3 cs3=new Class3(cs);
for(int i=0;i<5;++i){
cs2.cs.n=i;
System.out.println("cs.n="+cs.n+" cs2.cs.n="+cs2.cs.n+" cs3.cs.n="+cs3.cs.n);
}
}
}
0484デフォルトの名無しさん
2007/09/07(金) 20:33:510485デフォルトの名無しさん
2007/09/07(金) 20:47:25new String("string") == new String("string") が false になるのに
"string" == "string" が true になる。
0486デフォルトの名無しさん
2007/09/07(金) 21:10:27あと、歯ブラシとシャンプーを忘れずにな!
0487デフォルトの名無しさん
2007/09/07(金) 21:11:30氏ね
0489デフォルトの名無しさん
2007/09/08(土) 01:36:06コメントありがとうございました。
今から内容について調べてみます。
誠ありがとうございます。
0490デフォルトの名無しさん
2007/09/08(土) 01:39:24versionは1.5.0_12でした。
0491デフォルトの名無しさん
2007/09/08(土) 02:51:10解決しました。MEXAのインストール先がC:\Program Filesになっていたからlibが
C:\SOFTBANK_MEXA_EMULATOR12にインストされていなかったからでした。
どうもいろいろとありがとうございました。
ほんと感謝しています。
0492デフォルトの名無しさん
2007/09/08(土) 04:50:54悪いことは言わんからSEでアプリ作れるようになってからMEに手を出した方が良いよ。
0493デフォルトの名無しさん
2007/09/08(土) 10:21:51private void functionA(Thread xxx) {}
という二つの関数があった時、
functionA(null)
という呼び出しに応じるのはどちら?
0494デフォルトの名無しさん
2007/09/08(土) 10:31:37コンパイルエラーにならないと言語仕様に反する
0495デフォルトの名無しさん
2007/09/08(土) 10:38:13了解。実はね、JSCL1.2(携帯Vアプリ、S!アプリ)のAPIをボケっと眺めていたら
http://notitle.net/vappli/doc/P5/com/j_phone/io/CameraConnection.html
CameraConnection#setPictureFrameが、両方ともnullを受け取る仕様で、
あれどちらが呼ばれるんだっけ?って思ったんだ
(byte[])nullとか指定しないといけないんだね。API設計ミスなんじゃないのかなぁ
0496デフォルトの名無しさん
2007/09/08(土) 10:47:05そういうところに気がつくのはすごいと思ったが、
自分でサンプル作って試せば一瞬で分かることなのに。ともね….。
0497デフォルトの名無しさん
2007/09/08(土) 10:50:230498デフォルトの名無しさん
2007/09/08(土) 11:08:26まずJDKのインストールからしないと…
0499デフォルトの名無しさん
2007/09/08(土) 11:23:210500デフォルトの名無しさん
2007/09/08(土) 11:30:060501デフォルトの名無しさん
2007/09/08(土) 11:43:050502デフォルトの名無しさん
2007/09/08(土) 12:03:060503デフォルトの名無しさん
2007/09/08(土) 13:42:39技術者に寄生しておもしろおかしく生きていく真っ当な人間だからjdkなんか入れねえ
0504デフォルトの名無しさん
2007/09/08(土) 13:44:130505デフォルトの名無しさん
2007/09/08(土) 13:58:120506デフォルトの名無しさん
2007/09/08(土) 14:00:07ウンコに寄生してもおもしろくもおかしくもねぇだろ。
あ、スカトロ趣味なのか。それなら納得。
0507デフォルトの名無しさん
2007/09/08(土) 14:03:35くやしいのうwwwくやしいのうwww
0508デフォルトの名無しさん
2007/09/08(土) 14:11:08何時までも寄生していたらウンコだが
0509デフォルトの名無しさん
2007/09/08(土) 14:27:180510デフォルトの名無しさん
2007/09/08(土) 15:04:17その金が野グソの中から出てきたものだろうと気にせんよ
金に綺麗も汚いもない
あるのは搾取するクソと搾取されるクソだ
どっちのクソになりたい?
0511デフォルトの名無しさん
2007/09/08(土) 15:13:220512ハートマン
2007/09/08(土) 15:14:580513デフォルトの名無しさん
2007/09/08(土) 15:22:250514デフォルトの名無しさん
2007/09/08(土) 17:33:46カンマ演算子について知りたい事があります。
for ( i = 0, j = 0; i < 10; ++i, ++j )
の様な所は問題ないのに、
i = 1, j = 2;
とするとコンパイル出来ないのは、Cをやっていた自分にとっては
直感に反する違和感があります。
この辺をきちんと学習したいのですが、入門書的な本は網羅的でないのが不満です。
Cで言う所のK&R的な、網羅的に文法が学習できる本のお勧めはありますか?
0515デフォルトの名無しさん
2007/09/08(土) 17:39:51理論的に知りたいならば、言語仕様を嫁
書式とかコンパイルが通り、かつJavaのマナーにしたがっているコードが書けるようになりたいならば、コーディング規約を熟読
後、意外と手堅く文法がまとまっているのはSJC-Pの問題集とかテキストだったりするw
個人的には「Javaのメカニズム―エラー処理・例外で困っているあなたに」って本がオススメ。
0516デフォルトの名無しさん
2007/09/08(土) 17:40:48これで試してみたけどコンパイルできたし実行時エラーも無かったよ
class ForLoopTest {
public static void main(String[] args){
int i,j;
for (i = 1, j = 2; i < 10; i++, j++) {
System.out.println("i: " + i + ", j: " + j);
}
}
}
コンパイルできなかったときのコードあれば見せてちょ
0517デフォルトの名無しさん
2007/09/08(土) 17:48:54int i, j;
i = 1, j = 2;
だとコンパイルが通らないと言ってるんだよ、多分。
Javaは1行で1つのステートメントを記述すのが基本だから、
int i, j; が特別に許されているだけ。
これも、コーディング規約的には、
int i;
int j;
と書く、もしくは初期化だけはJavaでは推奨されないから
int i = 1;
int j = 2;
と書くべき。
Cだと宣言にメモリの確保の意味が強いけど、Javaではあんまり意識しちゃいけない
0519デフォルトの名無しさん
2007/09/08(土) 18:10:040520デフォルトの名無しさん
2007/09/08(土) 18:45:20Java言語仕様が最も詳しい。
ただ、索引が階層化されてて、見づらいし、定義をさがすためにあっちこっちのページに飛ばなきゃいけないからきつい。英語がそこそこ出来るなら、HTML版がお勧め。
for文だと
for ( ForInit; Expresion; ForUpdate ) と言う定義で、
ForInitは StatementExpressionList(式文のリスト)とローカル変数宣言が記述できる
StatementExpressionListの定義はこう
StatementExpression
もしくは
StatementExpressionList, StatementExpression
↑カンマ
つまり、for文の初期化コードで使用するカンマはStatementExpressionListの一要素として定められていて、カンマ演算子というものは存在しない。
書籍やネットでJavaにカンマ演算子がある旨が記載されていたら、厳密には誤り。
0521デフォルトの名無しさん
2007/09/08(土) 18:46:16StatementExpressionListは i=1,j=2 のような書き方ができるわけ。
StatementExpression:
Assignment ←これ
PreIncrementExpression
PreDecrementExpression
PostIncrementExpression
PostDecrementExpression
MethodInvocation
ClassInstanceCreationExpression
一方、j=2; っていうのはExpressionStatementに該当して、
ExpressionStatementは
StatementExpressoin ; という定義になる。※StatementExpressionにセミコロンが付く。
ここで、StatementExpressionはAssignmentが該当するから、
Assignment ; という形に置き換えられる。
つまり、ExpressionStatementの構成要素にカンマは登場しないから、
i = 1, j = 2; という書き方は出来ない。
じゃあ int i=0, j=0; は何でOKなのか、というと、ローカル変数の定義という定義が別にあって・・・
0522デフォルトの名無しさん
2007/09/08(土) 18:50:42そうそう
簡単にいうと、Javaは要所要所でそれぞれ記述の定義が異なるから、カンマが使えるところと使えないところが有るってだけの話。
0523デフォルトの名無しさん
2007/09/08(土) 18:50:46栄養ドリンクとポテトチップスの食べ合わせについてなのですが、
これは栄養ドリンクの効果を下げたりすることはないのでしょうか?
健康に害があったりしないのでしょうか?
また、栄養ドリンクとコーヒーの飲み合わせについても同様に教えてください。
0524デフォルトの名無しさん
2007/09/08(土) 18:56:20プロジェクトが佳境にさしかかると有効です。健康に害があるのは言うまでもありません。
0525デフォルトの名無しさん
2007/09/08(土) 19:00:440526デフォルトの名無しさん
2007/09/08(土) 19:20:17というより、C言語にあるカンマ演算子がJavaには無いってだけの話のような。
0527デフォルトの名無しさん
2007/09/08(土) 19:30:00まぁそう言い切っちゃうと、じゃあfor文のカンマは何だよ、っていう話になると思って
0528デフォルトの名無しさん
2007/09/08(土) 19:32:28Javaでは forの初期化部分と更新部分だけ特別扱いされてる、って説明で良いんじゃね?
0529デフォルトの名無しさん
2007/09/08(土) 19:36:43使わなきゃならない場面なんてほとんどないしな
0530デフォルトの名無しさん
2007/09/08(土) 19:38:58JavaがC風の文法でなかったらSmalltalkと同じように普及しなかったよ。
0531デフォルトの名無しさん
2007/09/08(土) 19:39:20for文だけじゃない
これ全部列挙するの面倒
0532デフォルトの名無しさん
2007/09/08(土) 19:43:080533デフォルトの名無しさん
2007/09/08(土) 19:45:350534デフォルトの名無しさん
2007/09/08(土) 19:52:010535デフォルトの名無しさん
2007/09/08(土) 19:54:180536デフォルトの名無しさん
2007/09/08(土) 19:55:36ちなみに、for以外のカンマってどれ?
0537デフォルトの名無しさん
2007/09/08(土) 19:57:040538デフォルトの名無しさん
2007/09/08(土) 20:03:04とかw
0539デフォルトの名無しさん
2007/09/08(土) 20:04:540540デフォルトの名無しさん
2007/09/08(土) 20:06:56a = 1, 2, 3; とか while (a++, b < 10) とか。
0541デフォルトの名無しさん
2007/09/08(土) 21:19:04スーパーエスパーで答えてみる
栄養ドリンクがうまくオーバライドされて胃の中でポテチと一緒に
取り込まれるので、問題ないよ。
コーヒーはインタフェースなのでUCCとかポッカで実装クラスを用意しないと飲めない。
でも、カルビー・ポテトチップスの今の仕様が分からないので、メーカーのHPで調べれば?
0542デフォルトの名無しさん
2007/09/08(土) 23:40:470543デフォルトの名無しさん
2007/09/09(日) 23:11:290544デフォルトの名無しさん
2007/09/09(日) 23:16:270545デフォルトの名無しさん
2007/09/09(日) 23:17:36冗談はさておき、自分のPCと他のコンピュータの間でネットワーク通信するときに使うもの
java.net.Socket クラスを調べてみれ
0546デフォルトの名無しさん
2007/09/09(日) 23:32:26プロセスとプロセスの間の垣根を越えて通信する
PC間は関係ナッシング
0547デフォルトの名無しさん
2007/09/09(日) 23:51:57JMSみたいなものかな?
今度の休みに、調べてみます。
0548デフォルトの名無しさん
2007/09/10(月) 00:04:510549デフォルトの名無しさん
2007/09/10(月) 00:34:05を参考にvistaで 、"J2SE5.0(Java 2 Platform Standard Edition 5.0)"
をインストールしたのですが、環境変数の設定の仕方がよくわかりません。
xpのやり方は書いてあるのですが、vistaはxpと表示が結構違うところがあるので…
お手数ですがご教授お願いします。
ソースコード以前の問題ですいません。
0550デフォルトの名無しさん
2007/09/10(月) 00:46:17http://www.google.co.jp/search?q=vista+%E7%92%B0%E5%A2%83%E5%A4%89%E6%95%B0
0551デフォルトの名無しさん
2007/09/10(月) 10:43:12どのようなアプリケーションが最適でしょうか?
(GUIアプリケーションは未経験です)
0552デフォルトの名無しさん
2007/09/10(月) 10:52:410553デフォルトの名無しさん
2007/09/10(月) 10:58:17すいません、開発環境ではなくて
どのようなアプリケーションを作ってみるのが
勉強し易いかってことです。
0554デフォルトの名無しさん
2007/09/10(月) 11:02:410555デフォルトの名無しさん
2007/09/10(月) 11:06:070556デフォルトの名無しさん
2007/09/10(月) 11:15:28switchを利用すると1文字でしか判断できないと思うのですが、
ifを用いて、ひたすらstring.equalsをやるってのも微妙な気がします。
何かよい方法はないでしょうか?
0557デフォルトの名無しさん
2007/09/10(月) 11:30:300558デフォルトの名無しさん
2007/09/10(月) 11:32:04if ... else if をずらずらやるのが一番わかりやすいと思いますよ。
どうしても嫌なら、hashcodeで何とかするとか、enumに変換して何とか
するとか、HashMap で文字列=>処理内容のインスタンス の対応表を作っ
ておくとか。
0559デフォルトの名無しさん
2007/09/10(月) 11:40:230560デフォルトの名無しさん
2007/09/10(月) 13:53:35ありがとうございました。
0561デフォルトの名無しさん
2007/09/10(月) 16:05:46ハッシュで実装かな。
0562デフォルトの名無しさん
2007/09/10(月) 17:46:51どう実行すればいいのか分かりません。
検索してみたらどうやらXMLファイルらしいのですが、余計に訳分かりません。
0563デフォルトの名無しさん
2007/09/10(月) 17:56:05ダブルクリックで動くようになります
http://java.com/ja/download/windows_xpi.jsp?locale=ja&host=java.com
0564デフォルトの名無しさん
2007/09/10(月) 18:49:47interface Handler {
void handle();
}
と定義して、処理の内容は匿名クラスにでも記述。
static HashMap<String, Handler> MAP; として、
イニシャライザで登録。
Handler handler = MAP.get(inputString);
handler.handle();
これでif文はなくなる。
おまけに有効文字列以外はhandlerがnullになるので一石二鳥。
0565デフォルトの名無しさん
2007/09/10(月) 18:55:48今後の拡張やらがどうせあると踏んで。
正規表現でいければ楽だけど。
0566デフォルトの名無しさん
2007/09/10(月) 19:03:16null だと例外が出るから、こんなのも。
Handler handler = new Handler() { void handle() {} }; // NullHandler
if (MAP.contains(inputString))
handler = MAP.get(inputString);
handler.handle();
0567デフォルトの名無しさん
2007/09/11(火) 07:20:07現在、課題でJ2EE+Tomcat+MySQL環境でのDB接続Webアプリを
作成しています。
DBに対するInsert、Updateを行った際、意図した挿入、更新が行われた
ことを確認するテストについてご意見をお聞かせください。
Tableは次のようになっています。
id( primary key auto_increment), user_id, user_name, insert_user_id, insert_date, update_user_id, update_date
このテーブルに対するinsert、updateで、insert_date、update_dateをサーバタイムで書き込むのですが
この確認をJUnitでどのように行えばよいのかがわかりません。
確認方法など、ご意見をよろしくお願いします。
0568567
2007/09/11(火) 07:28:05insert_dateとupdate_dateはミリ秒まで格納されています。
0569デフォルトの名無しさん
2007/09/11(火) 08:56:57InputStream is = (InputStream) con.getContent();しようとすると実行時に
sun.awt.image.URLImageSource cannot be cast to java.io.InputStreamというエラーになります。
どうしたら画像をファイルにダウンロードできるでしょうか。
0570デフォルトの名無しさん
2007/09/11(火) 10:19:31URLConnection.getContent メソッドの戻り値は URL が示す情報が何なのか
に依存して変わる。画像の場合は URLImageSource って型になるからキャストに
失敗してる。
単純にバイトストリームがほしいだけなら URLConnection.getInputStream メソッド
を使え。
0572デフォルトの名無しさん
2007/09/11(火) 12:11:18たとえばfoo.jarというプログラムがあって
/aaa/bbb/foo.jar へインストールされて実行された場合は「/aaa/bbb/foo.jar」を
/ccc/foo.jar へインストールされて実行された場合は「/ccc/foo.jar」を取得したいのです。
new File(".").getAbsoluteFile()ではjava -jar foo.jarで起動した場合はカレントディレクトリが
拡張子の関連付けから起動した場合はホームディレクトリになってしまいました
0573572
2007/09/11(火) 12:13:46○ファイルを置いて
意味は通じるとは思いますが。
0574デフォルトの名無しさん
2007/09/11(火) 12:25:49public class Test {
public static void main(String[] args) {
for (URL url : ((URLClassLoader) Test.class.getClassLoader()).getURLs()) {
System.out.println(url);
}
}
}
0575デフォルトの名無しさん
2007/09/11(火) 12:38:16staticメソッドを使ったAPI群だけど、
たとえば、FileUtils#readFileToString()
とかで、巨大なファイルをあるスレッドから読み出している時に、
別のスレッドからこのメソッドにアクセスするのは危険?
マルチスレッド環境でファイル入出力をやるなら、
ファイル入出力処理を各スレッドごとにインスタンス化できるような仕組みを
使うべきでしょうか。
0576デフォルトの名無しさん
2007/09/11(火) 12:40:33ありがとうございます。助かりました。
参考までに別な方法で失敗した奴w
System.getProperty("user.dir");
System.getProperty("java.class.path");
とするとjava -jarのときはuser.dir + java.class.pathでいけそうなんですが
関連付けから起動するとjava.class.pathが絶対パスになってしまう。
クラスローダーを使うのが確実ですね
0577デフォルトの名無しさん
2007/09/11(火) 13:03:01変なstatic変数を使ってない限りスレッドセーフ。
0578デフォルトの名無しさん
2007/09/11(火) 13:12:12レスありがとう。よければもう少し教えてください。
重複する内容ですが、
1.Thread-1からFileUtils#readFileToString()で巨大なファイルを読み込み。
2.Thread-1がまだファイル読み込み中に、Thread-2が同じメソッドを実行開始。
という状態があった場合、Thread-2の読み込み処理は
Thread-1での読み込み処理が終わるまで待たされるってことなんでしょうか?
0579デフォルトの名無しさん
2007/09/11(火) 13:19:13readFileToString() は synchrinized ではないので、
2スレッド同時に実行される。
0580デフォルトの名無しさん
2007/09/11(火) 13:21:43メソッドにsyncronizedが付いていたり、wait()メソッドを呼んだりしていなければ、
そういった同期化がされることはない。
2つのスレッドが、並行して同じメソッドを実行する。
インスタンス変数やstatic変数などを使用して同一の変数を
変更しようとしない限り、2つのスレッドはスレッドセーフに実行される。
これを機に、スレッドと同期化について学んでおくといいよ。
0581デフォルトの名無しさん
2007/09/11(火) 13:37:00でいいんだっけ
0582デフォルトの名無しさん
2007/09/11(火) 14:02:54WEB-INFのパスを取得しています。
ただ、これは一回取れればいいのですが最初に呼ばれるサーブレットが
呼び出されるたびに実行されてしまい無駄な気がします。
一回だけにできないでしょうか?
0583デフォルトの名無しさん
2007/09/11(火) 14:06:32Servlet#init()で取得して、サーブレットのインスタンス変数に入れる。
が、このメソッドの実行で重くなることは殆どあり得ない。
気にスンナ。
0584578
2007/09/11(火) 14:09:31重ねてありがとうございます。
なんとなく理解できました。
staticメソッドをほぼ同時に複数のスレッドから実行しても、
staticメソッド内で定義されるオブジェクトは、>>581さんの
言うように別々のスタックに入るから、問題なく(干渉無く)
複数スレッドで扱えるということですね。
スレッドと同期化について、ググってきます。
0585デフォルトの名無しさん
2007/09/11(火) 14:57:150586デフォルトの名無しさん
2007/09/11(火) 15:02:170587デフォルトの名無しさん
2007/09/11(火) 15:05:440588デフォルトの名無しさん
2007/09/11(火) 15:08:12http://java.sun.com/javase/ja/6/docs/ja/technotes/guides/imageio/index.html
0590デフォルトの名無しさん
2007/09/11(火) 15:10:220591デフォルトの名無しさん
2007/09/11(火) 15:17:21BufferedImage img=ImageIO.read(new File("A.jpg"));
ImageIO.write(img,"bmp",new File("A.bmp"));
0592デフォルトの名無しさん
2007/09/11(火) 16:23:190593デフォルトの名無しさん
2007/09/11(火) 16:38:57例えばSwingのTableModelはユーザによる編集などで、
イベントディスパッチスレッドから書き換えられるので、
セルデータを保持するオブジェクトを
デフォルト(DefaultTableModel)のVectorではなくて、
ArrayListに書き換えるとダメだ、というような意味でしょうか。
0594デフォルトの名無しさん
2007/09/11(火) 17:32:59TableModelだけスレッドセーフになってても実はあんまり意味がない。
Swingは必ずイベントディスパッチスレッドから操作するという決まりになっている
(Swingはスレッドセーフじゃないから、使う人が気をつける)
ので、イベントディスパッチスレッドから操作する分にはいくらやっても構わないし、
その限りにおいては、TableModelがスレッドセーフでもそうじゃなくても問題にならない。
0595デフォルトの名無しさん
2007/09/11(火) 17:47:46当然、複数のスレッドからaddしまくったら、オブジェクトの順番とかは入り乱れてめちゃくちゃになるが、それはVectorの知ったことじゃない。
ArrayListはスレッドセーフじゃないので、同じようなことをやると、addしたはずのオブジェクトが無いとか、
removeしたはずのオブジェクトがまだ残ってるとか、ArrayList自体がおかしなことが起きる可能性がある。
0596デフォルトの名無しさん
2007/09/11(火) 18:29:52別スレッドでデータ操作を行う方が、イベントスレッドを占有せずに済む。
SwingUtilitiesクラスのinvokeLaterメソッドとはお友達になる必要があるけど。
そんな点から見れば、TableModelの実装にVectorが使われていても
おかしくは無い、かな。ま、Collectionsの同期ラップでも良いと思う。
0597593
2007/09/11(火) 18:52:04詳しい回答ありがとうございます。
では、とくに自分ではthreadクラスを使わない場合でも、ユーザーによる編集と、
イベントとは関係ないロジック(例えばmain内のロジック)からの書き換えがあって、
2つが偶然バッティングしたらArrayListだと整合性を保てないということでしょうか。
スレッドなど使った覚えがなくとも、Swing使えば少なくとも2つスレッドができるのですよね。
0598デフォルトの名無しさん
2007/09/11(火) 19:16:55>>596
別スレッドからモデルを操作すると、そのスレッド上でモデルのリスナにイベントが飛んでいって、あちこち掻き回す気がする。
ちゃんとイベントディスパッチスレッド上でイベントを起こすスレッドセーフなモデルクラスを自分で実装するのならいいんだろうけど。
0599デフォルトの名無しさん
2007/09/11(火) 19:29:48ここからDLしたものをvistaにインストールしたのですが
javaフォルダにjavac.exeがありませんでした
どこからDLすればいいですか?
0600デフォルトの名無しさん
2007/09/11(火) 19:41:30>>1
0601デフォルトの名無しさん
2007/09/11(火) 19:48:230602デフォルトの名無しさん
2007/09/11(火) 20:07:09ありがとう
0603デフォルトの名無しさん
2007/09/11(火) 20:19:51ふつうは知らん。
やる事がないならば終わるだけ
0604593
2007/09/11(火) 21:53:38さらにディスパッチスレッドは1つだから、いくらテーブルモデルを書き換えるイベントが
ほぼ同時に多数発生しても、まだスレッドセーフは保たれるわけですね。
皆さんありがとうございました。
0605デフォルトの名無しさん
2007/09/11(火) 22:11:11GUIが表示された後もメインスレッドが仕事をしなければならない方がどっちかと言えば不自然。
まあ、チャットサーバーのようなアプリケーションであればメインスレッドで通信しているとかというケースはあるけど。
0606デフォルトの名無しさん
2007/09/11(火) 22:25:23それは、ただシングルスレッドで動いてるだけであって、スレッドセーフとは言わないな。
まぁシングルスレッドに閉じ込めてるおかげで、安全は保たれている。
0607デフォルトの名無しさん
2007/09/11(火) 22:34:23全体的に話の流れがおかしいんじゃね?
0608デフォルトの名無しさん
2007/09/11(火) 22:57:38知ったような書き方をする奴が出たりするが、数行のレスで伝えるのは難しい話題だから仕方なし
0609デフォルトの名無しさん
2007/09/11(火) 23:20:54Swingライブラリ : スレッド危険 混ぜるな
Swingライブラリは、スレッドセーフじゃない。
これは多くの人間が知っている。
だが、どこまでスレッドセーフじゃないのかがわかりにくい。
Swingパッケージ全て?それとも、イベントディスパッチに絡む部分だけ?
なので、TableModelをどうすればいいかという話が出てくるわけだな。
TableModelの実装に関していうと、fireなどでイベントを発生させている部分があるわけで
イベントディスパッチすれっどとは別スレッドで扱われることを想定した作り。
なので、スレッドセーフに作っておかないとおかしなコトになるはず。
イベントを処理する部分じゃなくて、イベントの発生元なんだよね。
って知ったように書いてみました。
ホントはよく知らない。
0610デフォルトの名無しさん
2007/09/11(火) 23:23:26実装は可能だけど、それ作ったところでユーザがついてこれない
ってビルジョイが言ってんだっけ
0611デフォルトの名無しさん
2007/09/11(火) 23:30:43http://java.sun.com/javase/ja/6/docs/ja/api/javax/swing/package-summary.html#package_description
>通常、Swing はスレッドに対して安全ではありません。
>すべての Swing コンポーネントと関連クラスには、特に説明がないかぎり、
>イベントディスパッチスレッド上でアクセスしてください。
>この制約は、Swing コンポーネントに接続されたモデルにも適用されます。
>たとえば、TableModel が JTable に接続されている場合、TableModel の変更は
>必ずイベントディスパッチスレッド上で行うようにしてください。
あと、フレームの作成とかも main メソッドでやっちゃうことが多いけど、
本当は invokeLater を起こしてイベントディスパッチスレッド上で作成しないといけない
ってことも、ちゃんと書いてある。
0612デフォルトの名無しさん
2007/09/11(火) 23:37:40GUI の最初の一歩で踏み間違えているだろ
0613デフォルトの名無しさん
2007/09/11(火) 23:45:21そうかSwingWorker使ってもテーブルモデルの更新のタイミングは
気をつけないと駄目なのね
0614デフォルトの名無しさん
2007/09/11(火) 23:48:220615デフォルトの名無しさん
2007/09/11(火) 23:55:42入門書が、全然違う方向に誘導してる気がするwwww
0616デフォルトの名無しさん
2007/09/12(水) 01:12:10それどころかEDT無視したサンプルコードもたくさんあるんだけど。
JSR-296で少しはマシになるかな?
0617デフォルトの名無しさん
2007/09/12(水) 03:49:54『有効』になっていない可能性があるんだが、これはどうしたら有効に出来るの?
0618デフォルトの名無しさん
2007/09/12(水) 04:42:26画像ファイルのパスを指定してFileInputStreamにするのはいろいろ見つかったんですが。
0619デフォルトの名無しさん
2007/09/12(水) 04:58:43バイト配列変換だけど参考になると思う
ttp://weblog.metareal.org/2007/04/02/convert-awt-image-to-buffered-image-or-byte-array/
0620デフォルトの名無しさん
2007/09/12(水) 05:42:10その後にByteArrayInputStreamですね。
ありがとうございます。やってみます。
0621593
2007/09/12(水) 09:14:31私の持っているGUIの参考書もmainでやっていたので、
何の疑問もなくmainでsetVisbleやってました。
某サイトのサンプルコード見て、「何じゃこりゃ」と思ってました。
大変参考になりました。ありがとうございます。
0622デフォルトの名無しさん
2007/09/12(水) 11:18:19public class A
{
int i;
String s;
public A(int i, String s)
{
this.i = i;
this.s = s;
}
}
こういうクラスがあったとして
A a = new A(1, "a");
HashMap hm = new HashMap();
hm.put(a, "a");
A b = new A(1, "a");
String s = (String)hm.get(b);
上記処理をするとsがnullになります。(aとbは値が同じなのに別物とされてgetできない)
別インスタンスだからあたりまえとも思いますが、Integerをキーにした場合は中の値を見てくれるのに…とも思います。
実際の値を比較してくれるうまい方法はないでしょうか?
0623デフォルトの名無しさん
2007/09/12(水) 11:24:37Object#equals(Object) と Object#hashCode() をオーバーライドしないとダメ。
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/Map.html#get(java.lang.Object)
> つまり、このメソッドは、(key==null ? k==null : key.equals(k)) となる
> キー k から値 v へのマッピングがこのマップに含まれている場合は v を返し、
> それ以外の場合は null を返します。このようなマッピングが 1 つだけあります。
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Object.html#equals(java.lang.Object)
> 通常、このメソッドをオーバーライドする場合は、hashCode メソッドを常にオーバーライドして、
> 「等価なオブジェクトは等価なハッシュコードを保持する必要がある」という
> hashCode メソッドの汎用規約に従う必要があることに留意してください。
0624デフォルトの名無しさん
2007/09/12(水) 11:25:41hashCode()……
0625デフォルトの名無しさん
2007/09/12(水) 11:38:30ハッシュに対する基礎的なことが分かってなかったようでお恥ずかしい。
ありがとうございました。
0626デフォルトの名無しさん
2007/09/12(水) 13:23:15public static void main(String[] args)throws IOException {
Hoge hg = new Hoge();
hg.perform();
}
-------別のクラス
public void perform()throws IOException{
}
例外をキャッチしないでスルーするとそのメソッドを呼んだそれに例外が押しつけられますよね。
もし上記みたいに終点もスルーしてる場合、特に問題は起きませんが、IOExceptionは
どこに行くんですか?
0627デフォルトの名無しさん
2007/09/12(水) 13:28:140628デフォルトの名無しさん
2007/09/12(水) 13:32:18例えばサーブレットのdoGet(---)でも同じ事が言えますよね?
0629デフォルトの名無しさん
2007/09/12(水) 13:34:57失礼しました。
0630デフォルトの名無しさん
2007/09/12(水) 13:41:25ttp://www.javadrive.jp/java3d/base/index1.htmlの
サンプルを実行したのですがエラー続出で困ってます
エラーの種類
パッケージcom.sun.j3d.utils.universeは存在しません。
パッケージjavax.media.j3dは存在しません。
パッケージjavax.vecmath1は存在しません。
シンボルを解決できません。
作業フォルダはjavaで
Pathはc;\java3d-1_5_1\bin
javaのバージョンは1.4.1です。
java3Dのバージョンは1.5.1です。
設定の間違いでしょうか?
0631デフォルトの名無しさん
2007/09/12(水) 14:21:53あなたの母親の旧姓は?
最初のクラスの担任の名前は?
好きなスポーツ選手の名前は?
等
といった選択肢を用意しているのですが、デフォルトで「あなたの母親の旧姓は?」
を選んでいる状態にしたいです。どうすればJListで最初から何かしらを選択している状態にできるのでしょうか?
0632デフォルトの名無しさん
2007/09/12(水) 14:37:50「選択」はjavadoc に載ってるぞよ。
public void setSelectedIndex(int index)
単一セルを選択します。
0633デフォルトの名無しさん
2007/09/12(水) 14:58:500634デフォルトの名無しさん
2007/09/12(水) 15:48:30気がつきませんでした。ありがとうございます。
0635デフォルトの名無しさん
2007/09/12(水) 16:15:04インポートの有無はどう判断すればいいんでしょうか?
0636デフォルトの名無しさん
2007/09/12(水) 16:21:09java.lang パッケージだけは特別に宣言の必要が無い。以上。
0637デフォルトの名無しさん
2007/09/12(水) 16:22:14Systemの正式名はjava.lang.System
0638635
2007/09/12(水) 16:24:360639デフォルトの名無しさん
2007/09/12(水) 19:47:41>630 eclipse使ってるならjarがビルドパスに追加されてないんじゃない?
使ってないなら環境変数に。java3D素人だからかんだけど・・・
とにかくググれば直ぐ答え見つかるよ。キーワードは自分で。
0640デフォルトの名無しさん
2007/09/12(水) 21:31:16Java3Dは、インストール先のJDKが1つだけだったような気がするんで
もしかして、実行時のJDKと別になってないか?
0641デフォルトの名無しさん
2007/09/12(水) 21:41:42Swingで少しならした方がいいんじゃないか?
0642デフォルトの名無しさん
2007/09/12(水) 22:49:380643デフォルトの名無しさん
2007/09/12(水) 22:55:270644デフォルトの名無しさん
2007/09/12(水) 23:14:410645デフォルトの名無しさん
2007/09/12(水) 23:25:06お願いします。
0646デフォルトの名無しさん
2007/09/12(水) 23:26:21違いすぎて何を言えばいいのやら・・・。
サーブレット:サーバーで実行
JSP:クライアントで実行
っていうか全然似てないから間違えないと思うけど・・・。
0647デフォルトの名無しさん
2007/09/12(水) 23:29:48JSPはクライアントで実行されるわけじゃない
クライアントはブラウザさえあれば、そのWebアプリが使えるってのがいい証拠
最終的にJavaのソースに変換されてコンパイルがかかる
0648デフォルトの名無しさん
2007/09/12(水) 23:34:48お前が間違えてるぞ
0649デフォルトの名無しさん
2007/09/12(水) 23:34:53サーブレットとの違いって何ですか?
0650デフォルトの名無しさん
2007/09/12(水) 23:36:12連釣りktkr
0651デフォルトの名無しさん
2007/09/12(水) 23:39:41JAVAの中にHTMLを書く→サーブレット
初回起動時にコンパイル→JSP→二回目から速い
事前コンパイル→サーブレット→初めから速い
0652デフォルトの名無しさん
2007/09/12(水) 23:41:24簡単に言い過ぎると。
指定したクラスの機能を持ったクラスを作れる。
指定クラスの中にあるメソッドを上書きできる。
指定クラスを拡張したり一部だけ変更したりするのに使ったりする。
0653デフォルトの名無しさん
2007/09/12(水) 23:41:24わかってないのにレスすんなよな
0654デフォルトの名無しさん
2007/09/12(水) 23:42:050655デフォルトの名無しさん
2007/09/12(水) 23:43:590656デフォルトの名無しさん
2007/09/12(水) 23:46:440657匿名
2007/09/12(水) 23:48:50サイト内で聞いてみたのですが、応答なしでした。
0658デフォルトの名無しさん
2007/09/12(水) 23:53:01サーブレットの中にHTMLの生成処理なんて書かなくていいだろw
MVCパターンぐらい勉強しとけよw
0659デフォルトの名無しさん
2007/09/12(水) 23:54:51具体的にTomcatで何ができるのですか?
0660デフォルトの名無しさん
2007/09/12(水) 23:56:060661デフォルトの名無しさん
2007/09/12(水) 23:56:30HTTPリクエストに応答できます
0662デフォルトの名無しさん
2007/09/12(水) 23:56:58でもこう言っちゃうと暗黙オブジェクトやViewとしての役割とかすっとばしちゃうからだめなんだよな
とりあえず servlet jsp MVC あたりでググって自分でもっと調べたほうがいいんじゃね?
0663デフォルトの名無しさん
2007/09/13(木) 00:00:00Tomcatはservletコンテナですぅ><
0664デフォルトの名無しさん
2007/09/13(木) 00:07:24下の10個の文字が1個でもあればはじきたいのですが、
正規表現が苦手なのと、エスケープの仕方がわからないのです。
; \ / : * ? " < > |
下のように記述して、矢印の先の結果になるようにしたいのですが・・・
String hoge;
hoge = "ab?cdefg";
System.out.println(hoge.matches("[; \ / : * ? " < > | ]")); → 結果:true
hoge = "abc:de;fg";
System.out.println(hoge.matches("[; \ / : * ? " < > | ]")); → 結果:true
hoge = "abcdefg";
System.out.println(hoge.matches("[; \ / : * ? " < > | ]")); → 結果:false
おねがいします。
0665デフォルトの名無しさん
2007/09/13(木) 00:10:15なら、正規表現の指定自体、全然ちがう
0666デフォルトの名無しさん
2007/09/13(木) 00:18:39始めの入門レベルから使ったほうがいいのか、ある程度Javaがわかってから使ったほうがいいのか。
0667デフォルトの名無しさん
2007/09/13(木) 00:20:590668デフォルトの名無しさん
2007/09/13(木) 00:27:19コピー元 コピー先 幅 を指定したいのです
C#ではこれで全部指定できるのですが
srcRect.X = x0; srcRect.Y = y0;
srcRect.Width = xx; srcRect.Height = yy;
gr.DrawImage(_bmp1, x1, y1, srcRect, units);
JAVAのこれではコピー元の座標が指定できないようです
gr.drawImage(img,x1,y1,xx,yy,this);
ヒントでいいので使う命令か解説のあるページを教えて下さい
0669デフォルトの名無しさん
2007/09/13(木) 00:37:12レスありがとうございます。
正規表現の指定自体が違うとはどういうことでしょう?
matchesで[]の中の任意の1文字が入っていれば
識別できると思っていたのですが・・・
どう指定すればよいのでしょうか?
0670デフォルトの名無しさん
2007/09/13(木) 00:39:52来年から仕事するってんならIDEからでもいいと思う。慣れろ。
勉強をしている段階の学生ならば最初はコンパイラとかに触れた方がいい
0671デフォルトの名無しさん
2007/09/13(木) 00:40:380672デフォルトの名無しさん
2007/09/13(木) 01:17:44それでできなくて困っているのです。
どう書けばよいものか?????
String hoge;
hoge = "abcd?efg";
System.out.println(hoge.matches("[;\\/:*?\"<>|]"));
0673デフォルトの名無しさん
2007/09/13(木) 01:19:160674デフォルトの名無しさん
2007/09/13(木) 01:36:20結果がfalseになるんです。
trueになってほしいのです。
以下のようにStringの中に; \ / : * ? " < > | の
1文字でも入っていたらtrueとなる正規表現です。
(以下のような結果になるのがほしいのです)
hoge = "ab?cdefg";
System.out.println(hoge.matches(正しい正規表現)); → 結果:true
hoge = "abc:de;fg";
System.out.println(hoge.matches(正しい正規表現)); → 結果:true
hoge = "abcdefg";
System.out.println(hoge.matches(正しい正規表現)); → 結果:false
hoge = "abc\\<>defg";
System.out.println(hoge.matches(正しい正規表現)); → 結果:true
hoge = "abcd345ほげ「^¥efg";
System.out.println(hoge.matches(正しい正規表現)); → 結果:false
hoge = "abc\\<>defg";
System.out.println(hoge.matches(正しい正規表現)); → 結果:true
0675デフォルトの名無しさん
2007/09/13(木) 01:39:16Javaで正規表現を書く時は
”” の エスケープ表現と
正規表現としての エスケープ表現を2重に掛ける必要があるから注意。
たとえば、
ドット1つをマッチさせるための表現は
String dot_match = "\\.";
0676デフォルトの名無しさん
2007/09/13(木) 01:40:13なので、\は、"\\\\"でマッチさせる必要がある
0677デフォルトの名無しさん
2007/09/13(木) 01:43:05class A {
void a() { ... sub(); ... }
void b() { ... sub(); ... }
sub() { ... }
}
このクラスを拡張して、a() メソッドが呼ばれた場合だけ sub() の内容をオーバーライドしたいのですが
どのようにするのがもっとも一般的なのでしょうか?
0678デフォルトの名無しさん
2007/09/13(木) 01:53:00void sub() {
if (a から呼ばれた)
// ほげ処理
else
super.sub();
}
}
0679デフォルトの名無しさん
2007/09/13(木) 02:02:03a から呼ばれたかどうかを判断する方法はどうすればよいでしょう?
メンバー変数でフラグをもって、a() 開始時に設定しようかと思ったのですが
クリア漏れとかありそうなので
0680デフォルトの名無しさん
2007/09/13(木) 02:04:01正規表現がどうこうじゃないと思うよ。
System.out.println("abc".matches("a")); // false
System.out.println("abc".matches("abc")); // true
matches() は与えた正規表現が対象文字列の
「全部」にマッチするかしないかをチェックする。
java.util.regex あたりに使えそうなメソッドがないか調べてみては。
0681デフォルトの名無しさん
2007/09/13(木) 02:08:41.*表現.*で終わりじゃない?
0683デフォルトの名無しさん
2007/09/13(木) 02:36:40目的は何?
オーバーライドで実装することが目的なの?
a メソッドが呼ばれたときだけ別処理をすること?
0684デフォルトの名無しさん
2007/09/13(木) 07:32:33>a() メソッドが呼ばれた場合だけ sub() の内容をオーバーライドしたい
無理
というか、サブクラスでのa()の振る舞いが変わるんだから、a()をオーバーライドするのが筋
a()が巨大なメソッドとかでコピペが発生して困るとしたら、Aの実装者を恨め。
0685デフォルトの名無しさん
2007/09/13(木) 08:14:21Cで定数を#defineする様な事は、Javaでは不可?
どこかのクラスでfinalな変数を用意すればいいのかもしれないけど、
変数としてメモリ上に置かれるのが、なんか気持ち悪い。
もっとお手軽に、ただ単にマジックナンバに名前を付けたいだけなのに。
0686デフォルトの名無しさん
2007/09/13(木) 08:30:48String regex = "[;\\\\/:\\*?\\"<>|]
hoge = "ab?cdefg";
p = Pattern.compile(regex);
m = p.matcher(s);
System.out.println(m.find());
hoge = "abc:de;fg";
p = Pattern.compile(regex);
m = p.matcher(s);
System.out.println(m.find());
hoge = "abcdefg";
p = Pattern.compile(regex);
m = p.matcher(s);
System.out.println(m.find());
hoge = "abc\\<>defg";
p = Pattern.compile(regex);
m = p.matcher(s);
System.out.println(m.find());
hoge = "abcd345ほげ「^\\efg";
p = Pattern.compile(regex);
m = p.matcher(s);
System.out.println(m.find());
hoge = "abc\\<>defg";
p = Pattern.compile(regex);
m = p.matcher(s);
System.out.println(m.find());
0687686
2007/09/13(木) 08:31:460688686
2007/09/13(木) 08:33:240689686
2007/09/13(木) 08:34:38むぅ
0690686
2007/09/13(木) 08:40:400691デフォルトの名無しさん
2007/09/13(木) 09:33:24そのマジックナンバをクラスファイルにばらまかないことで
デバッグをしやすくしている設計だと思ってくれ。
どうしてもしたければ、純正ではないがいくつかプリプロセッサがあるので
それを使えばいいと思う。
0692デフォルトの名無しさん
2007/09/13(木) 09:40:04使い方としては、ソフトウェアで大量のデータを素早く選別してアクセスするために使いたいのです。
求めるものとしてはPC間の可搬性があり、ある程度の速度があるリレーショナル・データベースが望ましいです。
また、複数のスレッドから同時にアクセスするような場合はないです。
まだまだ若輩者ですが、助言よろしくお願いします。
0693デフォルトの名無しさん
2007/09/13(木) 09:52:25その条件だけなら、MySQLをISAMで使うのが良いかな。
でも、スレ違いだと思う。
0694デフォルトの名無しさん
2007/09/13(木) 09:54:02Java実装のDB?
H2はいかが?
というか迷っているなら全部試すのが一番早い。
自分の思う機能が揃っているか確かめておけ。
0695デフォルトの名無しさん
2007/09/13(木) 10:02:17それだけの条件なら、大抵のDBMSは満たすよ。
もうちょっと条件を出して。例えばこんな。
・用途は?商用システム?オープンソース?ホビーユース?
・有料でもいい?無料がいい?
・想定するデータ量は何バイト程度か?
・OSは?Windows? Linux? 何でも?
分からなかったら、PostgreSQLかOracle XEあたりでいいんじゃない?
データ量が少なく軽量でいいのなら、HSQLDBもあり。
DB板行った方がいいような気もするけど。
0696デフォルトの名無しさん
2007/09/13(木) 10:13:50プリミティブ型の場合、定数はメモリに置かれず展開されてコンパイルされることもある。
インスタンスの場合はメモリに置かれるのはしょうがない。
プリミティブ型なら気にせず static final していいんじゃね?
だいたいメモリに置かれようが展開されようが、どっちでもいいだろ。そんなに
速度に対してクリティカルなシステムつくるわけじゃねえんだし。
0697デフォルトの名無しさん
2007/09/13(木) 10:33:15public final な定数を定義して、new して利用してるとしたら止めたほうが良し。
Java にはマクロはないから、プリミティブ型なら
とある interface に public static final な定数を定義するぐらいか。
static final なら、コンパイル時にその使用箇所に値が展開される。
オブジェクト型なら、Flyweight パターンを使うのかな…
0698692
2007/09/13(木) 10:50:16>>693
すいません、Javaで使うためここで質問してしまいました。
ISAMについてはほとんど知らないので少し勉強してきます。
>694
HSQLDBは知っていたのですが、H2は知りませんでした。
いまから試してみようと思います。
>695
すいません、すれ違いでした。誘導ありがとうございます。
HSQLDBは今一番使おうと思っています。
とりあえずDB板をみながら、H2, HSQLDBなどを試してみようと思います。
アドバイスありがとうございました。
0699デフォルトの名無しさん
2007/09/13(木) 10:54:04幅、高さの指定じゃないんだが、java.awt.Graphics の
drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
ってメソッドを使ってみろ。
0700デフォルトの名無しさん
2007/09/13(木) 11:38:05検証してから書き込めば問題なかろうに
private static final String REGEX = "[;\\\\/:*?\"<>|]";
private static final String[] TEXTs = {"abcdefg", // false 以下 true
"abcde;fg", "abc\\defg", "abc/defg", "abc:defg", "abcde*fg",
"ab?cdefg", "abcd\"efg", "abc<defg", "abc>defg", "abcde|fg",;
public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
for (String text : TEXTs) {
Matcher m = p.matcher(text);
System.out.printf("\"%s\": %b%n", text, m.find()); }}
0701デフォルトの名無しさん
2007/09/13(木) 11:54:35存在するテキストファイル "C:\tmp.txt"
をWindows上のエディタで編集作業中に、
Java側で
File f = new File("C:\\tmp.txt");
boolean rtn = f.canWrite()
とすると、結果のrtnは常にtrueになります。
File#calWrite()メソッドが判定できる書き込み可否条件は、
同じJVM内とかで、ホストOS?側で対象ファイルが
どう扱われているかについては関知しないんでしょうか?
0702デフォルトの名無しさん
2007/09/13(木) 11:57:54そのWindows上のエディタってやつ、本当にテキストファイルをロックしてる?
排他制御してないなら、それはtrueであってるだろうよ。
0703デフォルトの名無しさん
2007/09/13(木) 12:07:11ありがとうございます。
まさにそれだったようです。orz
言われて、数種類のテキストエディタで編集状態にして
確認したところ、どれもこれも排他制御はしていない模様。。。
ブラウザのIEで開いた状態でcanWrite()を試したら、
ようやく例外を投げてくれました。。。
0704703
2007/09/13(木) 12:15:47自らの手で、C:\tmp.txtの読み取り専用属性をONにしてたじゃないか。。。
バカバカ。俺のバカ。。。orz
Win側から何やってもcanWriteはtrueのまま。。。
開いたファイルを排他制御してくれるアプリを探すのが先ですね。。。
0705デフォルトの名無しさん
2007/09/13(木) 12:24:530706デフォルトの名無しさん
2007/09/13(木) 12:46:18さっそくダウンロードして試してみます。
0707デフォルトの名無しさん
2007/09/13(木) 13:12:48TeraPadを使って、確認取れました。
重ね重ねありがとうございます。
0708デフォルトの名無しさん
2007/09/13(木) 13:53:210709デフォルトの名無しさん
2007/09/13(木) 14:00:530710デフォルトの名無しさん
2007/09/13(木) 14:00:56そういうプログラムをつくりゃあ、どんな言語でもできるだろうよ。
手軽にしたけりゃツール使うか、imagemagickでも使えば?
0711707
2007/09/13(木) 14:25:23TeraPadで排他かけて開いたのに、
結果がtrueになってる。。。
わけわからなくなってきますた。。。
徹夜3日目は、さすがにアタマがまわらない。。。orz
0712デフォルトの名無しさん
2007/09/13(木) 14:33:30書き込めなかったらそのとき考える
ぶっちゃけ例外使え
0713デフォルトの名無しさん
2007/09/13(木) 14:40:33だいたい、canWrite で書き込み可能を確認した次の瞬間に
他のプロセスによって書き込み不可にされる場合もありうるわけだし、
実際に書き込んでみて失敗を捕まえる方がいいと思うよ?
0714デフォルトの名無しさん
2007/09/13(木) 14:44:02参考になるかわからんが、この辺呼んでみたら?
@IT:Java TIPS -- テキストファイルへの同時書き込みを防ぐ
http://www.atmarkit.co.jp/fjava/javatips/024jspservlet015.html
0715デフォルトの名無しさん
2007/09/13(木) 15:37:21その上でのjava質問なんですが、
ここでいいですか?
0716デフォルトの名無しさん
2007/09/13(木) 15:45:330717デフォルトの名無しさん
2007/09/13(木) 15:51:28iモード携帯電話用Java(iアプリ) Part15
http://pc11.2ch.net/test/read.cgi/tech/1187677946/
まあここでもすれ違いじゃないと思うけどね。
0718デフォルトの名無しさん
2007/09/13(木) 15:56:12質問投げてみます。もし違う板・スレで聞いたほうがよければ誘導お願いします。
Windows JDK6 J2SE1.6 の環境で
eclipse3.2 使ってS!アプリ(MIDP1.1)を作ってます。
import java.util.Calendar;でカレンダークラス?を読みこんで
カレンダーを作っているんですが、
firstMonth = Calendar.getInstance();
firstMonth.setTime(dateToDisplay.getTime());
firstMonth.set(Calendar.DAY_OF_MONTH, 1);
こんな感じで月の最初の日にちを取得することはできるのですが、
月の最後の日にちを取得するのにgetActualMaximum()を使おうとすると
エラー(定義されていません?)がでます。
roll()やadd()でやろうとしたのですが、それも同じようにエラーがでてしまいます。
こういった原因はどこを探せばいいのでしょうか?
0719デフォルトの名無しさん
2007/09/13(木) 16:13:52吐かれたエラーを元に
Javaのソース見たり
googleで検索したり
0720デフォルトの名無しさん
2007/09/13(木) 16:17:15サーブレット: MSXべーしっ君
0721デフォルトの名無しさん
2007/09/13(木) 16:19:09MIDP の Javadoc を見れ
残念ながら MIDP の Calendar にはそういったメソッドがない
http://java.sun.com/javame/reference/apis/jsr037/java/util/Calendar.html
0722デフォルトの名無しさん
2007/09/13(木) 16:23:22http://pc11.2ch.net/test/read.cgi/tech/1184509890/235
http://pc11.2ch.net/test/read.cgi/tech/1184509890/122
http://pc11.2ch.net/test/read.cgi/tech/1184509890/241
0723デフォルトの名無しさん
2007/09/13(木) 17:43:21ありがとうございます。
そっちを見なきゃいけなかったんですね・・
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/Calendar.html
こっち見てましたorz
>>722
基本関数が使えないとこんなベタなやり方でやるんですね・・
そのスレの>>122みたいなやり方はいまいち僕には理解しにくいんで、
public static int getDayID(int Y,int M) {
int I[][]=new int[][]{{31,29,31,30,31,30,31,31,30,31,30,31},{31,28,31,30,31,30,31,31,30,31,30,31}};
int S = (Y % 4 == 0 && (Y % 100 != 0 || Y % 400 == 0)) ? 0 : 1;
return I[S][M];
}
こんな感じにしましたらできました。
皆さんありがとうございます。
0724デフォルトの名無しさん
2007/09/13(木) 19:06:52カレンダのインスタンスに対して
set(Calendar.DATE, 0)
すれば前月の末日とれるんじゃね?
0725デフォルトの名無しさん
2007/09/13(木) 20:53:33ありがとうございます。
890でできました。
\に対してエスケープするのに\\\\となるとは
まったく予想していなかったのと|に\\でエスケープ
できることも知りませんでした・・・
0726デフォルトの名無しさん
2007/09/13(木) 21:35:01ApacheはHTTPサーバの中で一番有名なサーバである。
情報の送信を行うコンピュータのことである。
HTML文書や画像等の情報が蓄積されており、ブラウザからの要求に応じて、情報を送信するものである。
であっているでしょうか?
0727デフォルトの名無しさん
2007/09/13(木) 21:44:13情報の送信 情報の送受信
ブラウザからの要求 クライアントからの要求
・・・でその質問はJavaなのか?
0728デフォルトの名無しさん
2007/09/13(木) 21:50:00・・・でJavaなのか?
0729デフォルトの名無しさん
2007/09/13(木) 22:00:480730デフォルトの名無しさん
2007/09/13(木) 22:07:42グラフィックで点を打つ命令がありません
ラインで同じドットを結んでもダメでした
点を打つ方法はありますか?
0731デフォルトの名無しさん
2007/09/13(木) 22:08:01今の連中がapache httpd以外知らないだけだから間違ってるような。
有名どころといえば3つあるだろ。
・・・で、java関係ないよな?
0732デフォルトの名無しさん
2007/09/13(木) 22:10:52・・・で、Javaはどこ?
0733デフォルトの名無しさん
2007/09/13(木) 22:23:23君の言う点ってのは小さな円の事?
だとしたら小さな円を描けば良いんじゃね?
0734デフォルトの名無しさん
2007/09/13(木) 22:43:471ピクセルにおさまっているかわかりませんが
1命令で点打つ命令ないんですかね?JAVAは
0735デフォルトの名無しさん
2007/09/13(木) 22:53:11まさか、ディスクトップ上の1ドットの事とか言わないよな?
0736デフォルトの名無しさん
2007/09/13(木) 23:01:190737デフォルトの名無しさん
2007/09/13(木) 23:20:230738デフォルトの名無しさん
2007/09/13(木) 23:20:320739デフォルトの名無しさん
2007/09/13(木) 23:21:44それ、半径1の円を打つのと変わらんよ。
>>736
Java2Dの2Dの意味解るか?
0740デフォルトの名無しさん
2007/09/13(木) 23:25:500741デフォルトの名無しさん
2007/09/13(木) 23:28:24点を描画するという事が本来は矛盾する行為という事だ
0742デフォルトの名無しさん
2007/09/13(木) 23:30:45BufferedImage.setRGB()
じゃ駄目なのん?
0743デフォルトの名無しさん
2007/09/13(木) 23:31:14ん?そういうイデア論的な立場に立てば、本来線も描画できないんだが。
0744デフォルトの名無しさん
2007/09/13(木) 23:34:05まあ高レベルAPIだから当然だが。
だいたい1ドット打つネイティブコードの差異吸収って思ってるよりめんどくさいぞ。
0745デフォルトの名無しさん
2007/09/13(木) 23:34:21だから「R1の円を描くことがドットを打つ事と同じ」でいいだろって意味と推測
0746デフォルトの名無しさん
2007/09/13(木) 23:36:01普通に使うと概ね一致するだけで・・・
0747デフォルトの名無しさん
2007/09/13(木) 23:42:03グラフィックを配列に置き換えてそこに書き込む方法もあるみたい
0748デフォルトの名無しさん
2007/09/13(木) 23:46:18拡大とか色々な要素も絡むわけで、1ドットと考えるよりも頭をやわらかくして考えるべきだろう
0749デフォルトの名無しさん
2007/09/13(木) 23:54:55タイル(ピクセルデータの配列)に色突っ込むのは1ドットじゃなくて1ピクセルだぞ。
0750デフォルトの名無しさん
2007/09/13(木) 23:57:53どうもありがとう
0751デフォルトの名無しさん
2007/09/14(金) 00:00:310752デフォルトの名無しさん
2007/09/14(金) 03:13:45また有った場合、何が出来ると思われますか。
0753デフォルトの名無しさん
2007/09/14(金) 03:34:28情報処理か?
0754752
2007/09/14(金) 04:15:51たんなる妄想です。
String str = "Hello, World!";
Pointer<String> pstr = Pointer<String>.salvage(str);
みたいな…
ネイティブ弄ったら出来るのかしら?
0755デフォルトの名無しさん
2007/09/14(金) 05:21:44Cとかでもいいよ
0756デフォルトの名無しさん
2007/09/14(金) 06:47:580757デフォルトの名無しさん
2007/09/14(金) 09:49:54C系のポインタっていうのは、ようするにイテレータの機能を使ってるわけで、
それ以外の用途は間違いであり危険と思う。
そもそもメモリアドレスを自由に変えれるってアセンブリかよ、やつらは危険すぎる。
0758デフォルトの名無しさん
2007/09/14(金) 10:11:56>>754
弱レファレンスぽいと思ってしまった
0759デフォルトの名無しさん
2007/09/14(金) 11:20:07その、 Pointer<String> を使って、何をしたいつもり?
0760デフォルトの名無しさん
2007/09/14(金) 11:29:460761デフォルトの名無しさん
2007/09/14(金) 12:36:32>なぜジャバにはポインタが無いのでしょうか?
ゴスリンのおっさんが入れなかったから。
>また有った場合、何が出来ると思われますか。
JavaVM をクラッシュさせられる。
普通にやってもクラッシュできるけど、より簡単にってことで。
あとバッファオーバーフローの脆弱性が簡単に追加できる。
0762デフォルトの名無しさん
2007/09/14(金) 13:20:500763デフォルトの名無しさん
2007/09/14(金) 13:28:45オブジェクトを間接参照したいだけなら↓でいいじゃん
class Pointer {
Object o;
public void set(Object o) {this.o = o;}
public Object get() {return o;}
}
ポインタの演算の方の機能が欲しいならnioにそれっぽいのあるし
0764デフォルトの名無しさん
2007/09/14(金) 15:07:45gdata-client-1.0.jarとgdata-youtube-1.0.jarは必要なのでしょうか?
ATOM、RSS、もしくはJSON形式でデータを入手してそれをJavaで扱うだけで特に何も必要ないと思っていたのですが
http://code.google.com/apis/youtube/developers_guide_java.html#GettingStarted
公式HPに必要であると書いてあったので質問させて頂きます
0765デフォルトの名無しさん
2007/09/14(金) 21:24:31そのようなことはできるでしょうか?
0766デフォルトの名無しさん
2007/09/14(金) 21:33:13答え: できます。
0767765
2007/09/14(金) 21:52:13教えてもらえないでしょうか?
0768デフォルトの名無しさん
2007/09/14(金) 21:57:50FontMetrics fm = getFontMetrics(getFont());
int charWidth = fm.charWidth('m');
int tabLength = charWidth * 8;
TabStop[] tabs = new TabStop[2];
for (int j = 0; j < tabs.length; j++) {
tabs[j] = new TabStop((j + 1) * tabLength);
}
TabSet tabSet = new TabSet(tabs);
SimpleAttributeSet attrs = new SimpleAttributeSet();
StyleConstants.setTabSet(attrs, tabSet);
int l = getDocument().getLength();
getStyledDocument().setParagraphAttributes(0, l, attrs, false);
0769765
2007/09/14(金) 22:09:160770デフォルトの名無しさん
2007/09/14(金) 22:29:22人間って処理ステップが多くなるほど嫌気がさす生き物だからさ
0772デフォルトの名無しさん
2007/09/14(金) 23:19:07あるクラスをjunitでテストしようとしたんですが、
nullpointerエラーが出てしまい、原因を探していました。
テストするクラスを空クラスにし、junitテストクラス内に
原因らしきメソッドを記述した所、eclipseでエラーが表示されて
コンパイルが通りません・・・。
原因らしきメソッドはBeanUtilsのcopyPropertiesなんですが、
どなたかなぜエラーが出てしまうのかご存知でしたら教えて頂きたいです・・。
次レスにソースを記述します。
0773デフォルトの名無しさん
2007/09/14(金) 23:21:31------------------------------------------------------------------
package test;
import org.apache.commons.beanutils.BeanUtils;
public class Test1 {
}
}
-------------------------------------------------------------------
以下がjunit用のテストクラスです。
------------------------------------------------------------------
package test;
import junit.framework.TestCase;
import org.apache.commons.beanutils.BeanUtils;
public class Test1_test extends TestCase {
public void testTest() {
TestBean tb1 = new TestBean();
TestBean tb2 = new TestBean();
tb1.setName("てすと");
BeanUtils.copyProperties(tb2, tb1);
}
}
0774デフォルトの名無しさん
2007/09/14(金) 23:22:05バージョンも確認して必要な他のライブラリが不足してないか確認汁
あと、JUnitを通さなければ発生しないの?
0775デフォルトの名無しさん
2007/09/14(金) 23:23:28------------------------------------------------------------
package test;
public class TestBean {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
--------------------------------------------------------------------
宜しくお願い致します。
0776デフォルトの名無しさん
2007/09/14(金) 23:26:37早速返信ありがとうございます!
上記のjunitテストクラス内のソース(copyProperties部分)を、
テスト対象のクラス内に記述すると、eclipseのエラー表示がなぜか消えるんです・・。
0777デフォルトの名無しさん
2007/09/14(金) 23:29:44ほかの資料を何もみないで悪いが、
BeanUtils.copyProperties の仕様じゃないの?
TestBean class の private メンバーがコピーできなくて null になってるとか…
0778デフォルトの名無しさん
2007/09/14(金) 23:30:23BeansUtilのjarにパスは通してある?
0779デフォルトの名無しさん
2007/09/14(金) 23:30:46どうしてもエクセプションが出てしまい、junit内で単純なソースで試してみようと思ったら
やはりjunitソース内にcopyPropertiesを記述すると怒られてしまいました・・・。
かれこれ3日程グーグル先生や、自力で回避方法を探ったのですが、
どうしても原因がわからずこちらで質問した次第です。
0780デフォルトの名無しさん
2007/09/14(金) 23:34:02Bean の Property をコピーするのに、その仕様はないと思われ
0781デフォルトの名無しさん
2007/09/14(金) 23:34:57ググってそう感じてはいたのですが、確信がもてませんでした・・。
やっぱりそうなのかも・・orz
>>778
eclipseでパスは通して確かに通してあります。
なのになぜ・・
0782デフォルトの名無しさん
2007/09/14(金) 23:35:01Eclipseのメッセージを書け、話はそれからだ
0783デフォルトの名無しさん
2007/09/14(金) 23:36:330784デフォルトの名無しさん
2007/09/14(金) 23:38:43eclipseでは、copyPropatiesの行で、
I
この行にマーカーがあります
nvocationTargetException
IllegalAccessException
と表示されています。
0785デフォルトの名無しさん
2007/09/14(金) 23:41:21に記述するとなぜかエラー表示がなくなります・・。
0786デフォルトの名無しさん
2007/09/14(金) 23:41:59それ、例外の未キャッチじゃね?
マーカークリックして、とりあえずtry-catchで囲んでみろ
んで、実行してスタックとレースを張るべし
0787デフォルトの名無しさん
2007/09/14(金) 23:51:30eclipseでのエラー表示が消えました!!
eclipseでjunitを実行してみたのですが、
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
at org.apache.commons.beanutils.ConvertUtilsBean.<init>(ConvertUtilsBean.java:130)
at org.apache.commons.beanutils.BeanUtilsBean.<init>(BeanUtilsBean.java:110)
at org.apache.commons.beanutils.BeanUtilsBean$1.initialValue(BeanUtilsBean.java:68)
at org.apache.commons.beanutils.ContextClassLoaderLocal.get(ContextClassLoaderLocal.java:80)
at org.apache.commons.beanutils.BeanUtilsBean.getInstance(BeanUtilsBean.java:78)
at org.apache.commons.beanutils.BeanUtils.copyProperties(BeanUtils.java:114)
at test.Test1_test.testTest(Test1_test.java:19)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:154)
0788デフォルトの名無しさん
2007/09/14(金) 23:53:46public static void copyProperties(java.lang.Object dest, java.lang.Object orig) throws
java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException
>>787
ちょ…張る前に良く見たほうが
0789デフォルトの名無しさん
2007/09/14(金) 23:54:58ライブラリが足らない
Commons-loggingを内部で使っている
0790787
2007/09/15(土) 00:06:29>>788,789
ありがとうございます!!
NoClassなんちゃらは、バス通しているライブラリからも見つからない事だったんですね…
皆様本当に有難うございました!
これで日、月の休出はなくなりそうです(ノ_・。)
0791デフォルトの名無しさん
2007/09/15(土) 00:08:510792デフォルトの名無しさん
2007/09/15(土) 00:09:460793デフォルトの名無しさん
2007/09/15(土) 00:20:15まあなんだ、>>774のエスパー様がすばらしかった、と… なんだかな…
0794デフォルトの名無しさん
2007/09/15(土) 00:22:020795デフォルトの名無しさん
2007/09/15(土) 00:36:260796デフォルトの名無しさん
2007/09/15(土) 00:45:24原因究明アプローチの方法が間違ってるんじゃないかな?
0797787
2007/09/15(土) 00:52:37会社では、これがテスト環境と言われて渡された物を使用していたので、
まさかlibが足りないとは思っていませんでした・・orz
これ以前に、この原因を見つける途中に共通関数のバグを見つけたりして、
どこかソース内で他の原因があるものと・・。
初歩的なな問題で申し訳ありませんでしたが、
eclipseのエラーログ等これで少しはCからjavaの技術者に近づけたようで本当にいい経験になりました。
今後、少しでも早くこちらで質問に答えられるように精進したいと思います!
0798デフォルトの名無しさん
2007/09/15(土) 00:53:51この問題が頭から離れない為、自宅で検証してました・・・。
0799デフォルトの名無しさん
2007/09/15(土) 01:46:28linuxでもいじって修業したら?
0800デフォルトの名無しさん
2007/09/15(土) 01:51:29修行も何も運の要素しかないだろ、それ
0801デフォルトの名無しさん
2007/09/15(土) 03:00:400802デフォルトの名無しさん
2007/09/15(土) 03:52:52なんかの合性悪くて動かないとか、そういうのばっかじゃん
はっきり言って運だよ
0803デフォルトの名無しさん
2007/09/15(土) 04:26:24どうかと思うわ、あのライブラリ。
使うの躊躇する。
0804デフォルトの名無しさん
2007/09/15(土) 08:12:580805デフォルトの名無しさん
2007/09/15(土) 11:23:24それにJavaやってきた人ならば、1回くらいはライブラリの依存関係で半日くらいのハマリは経験してるだろ?
0806デフォルトの名無しさん
2007/09/15(土) 14:25:24String型の長文を書くときに、よく
String str = "〜"
+ "〜"
+ "〜"
);
とかするんですけど、これって全部を一つに囲った場合と比べて遅くなりますか?
0808デフォルトの名無しさん
2007/09/15(土) 14:28:06リテラルor定数だけなら遅くはならないが、
そのサンプルはコンパイルエラーだな。
0809デフォルトの名無しさん
2007/09/15(土) 14:50:09コンパイル時に結合されちゃうから問題ない
中に変数が入るとダメだけどな。
とはいえ、パフォーマンスを気にするほど遅くないので気にスンナ
0812デフォルトの名無しさん
2007/09/15(土) 15:09:46StringBuilderのが良いぞ。
Stringの連結は自動フォーマットをかけた時に崩れやすいから。
もしくは、こんな風に書く。
String str = "";
str += "1行目";
str += "2行目";
str += "3行目";
ソースの可読性の為にフォーマッターにも優しい記述で。
0813デフォルトの名無しさん
2007/09/15(土) 15:43:55Builder は非同期だからってやつですね。
可読性ってのにも賛成です。未来の自分に優しく!
で、後者なのだが…私の記憶では是は忌むべき記述法(追加毎インスタンス生成)なのだが、
ううむ…最近のコンパイラはこれも最適化してくれるのか
0814デフォルトの名無しさん
2007/09/15(土) 15:49:08変数が含まれないケースでは最適化される。
なので、定数として長い文字列を宣言する場合は有効。
しっかりと切り分け出来るPGならいいけど、よく解ってない人に書かせるってならば、Builder/Bufferで統一させた方がいいかも。
0815デフォルトの名無しさん
2007/09/15(土) 16:14:51「非同期」の意味分かっているか?
0816デフォルトの名無しさん
2007/09/15(土) 16:25:45自分で調べ、なんとかクラス内で
ActionListener timerEvent =
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
//中身
}
};
Timer tim1 =new Timer(delay,timerEvent);
tim1.start();
のように記述してタイマーを利用できるようになったのですが、
ActionListenerの中からタイマーを止めたり、delayを変更したいとき、
どのように記述すればよいでしょうか。
中身の時点では tim1 は宣言されていないし、
timerEvent を宣言する前には tim1 は生成できないし・・と。
0817デフォルトの名無しさん
2007/09/15(土) 16:36:03解り辛い表現で申し訳ない。
利用条件は理解して使い分けているつもりです。
0818デフォルトの名無しさん
2007/09/15(土) 16:41:09良く解らん。
タイマーとリスナーで何をやりたいんだ?
0819816
2007/09/15(土) 16:54:23記述不足で失礼。
タイマーの動作をActionListenerの中身で記述しているつもりなのですが、
そのタイマーによって呼び出される動作の中から、
何らかの条件によってタイマー自体を止めたいのです。
もしくはそもそもTimerの使い方が変なのでしょうか・・?
0820デフォルトの名無しさん
2007/09/15(土) 16:56:130821デフォルトの名無しさん
2007/09/15(土) 17:02:50---
ActionListener timerEvent =
new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
if(条件) {
timer.stop();
}
}
0823デフォルトの名無しさん
2007/09/15(土) 17:28:43気にスルナ。俺の知り合いで二年間メソッドはメインからしか呼び出せないと思ってたヤツがいるから。
0824デフォルトの名無しさん
2007/09/15(土) 20:19:42ようなプログラムを書きたいんですが、どのクラスを
どう使えばよいのかわかりません。
どなたか教えていただけませんか?
0825デフォルトの名無しさん
2007/09/15(土) 20:21:36あと、プロセスってどういう意味で使っているのかを説明汁
0826デフォルトの名無しさん
2007/09/15(土) 20:22:310827824
2007/09/15(土) 21:54:15>>825
CUIです。プロセス=プログラムという意味で使いました。
>>826
ActionListnerについて調べましたが、調べた範囲では
ActionListnerは特定のFrameに対してフォーカスが定まるような
状況でないと使えないようでした。
プログラムが動作している状態なら常にキーのタイピングを検知できるよに
したいんですが、ActionListnerで実装できるんでしょうか?
0828デフォルトの名無しさん
2007/09/15(土) 22:00:51CUIか
ごめん、これGUIだわ
本当にごめん・・・
0829デフォルトの名無しさん
2007/09/15(土) 22:08:44そもそもコンソール上での打鍵はOS依存だし
0830デフォルトの名無しさん
2007/09/15(土) 22:12:02関係ない人間だが、勉強になったわ。ありがとう。
0831デフォルトの名無しさん
2007/09/15(土) 22:16:35代替手段はJavaで別のプログラムを起動してSocketかなにかで通信する。
もしくはJava以外のプログラムでプロセスを強制終了する
どちらにせよ強引に割り込まないと無理。
ていうか、なんで強制終了させなきゃいけないの?
0832デフォルトの名無しさん
2007/09/15(土) 22:39:500833デフォルトの名無しさん
2007/09/15(土) 22:45:560834デフォルトの名無しさん
2007/09/15(土) 23:59:060835デフォルトの名無しさん
2007/09/16(日) 00:05:54変な風に煽るのやめろよ。
実行側環境(JRE)に依存するウイルス作る馬鹿がどこにいるんだよ。
0836デフォルトの名無しさん
2007/09/16(日) 01:24:46要件によるんじゃね?
そもそも、CUIなのにキーイベントを監視する必要性があるほうがおかしいと思うナー
せめてkillシグナルを受け取って終了するとか、標準入力からコマンドを受け付けて終了するとか、
終了用ファイルの有無を監視するとか、そういうのが普通じゃないの?
0837デフォルトの名無しさん
2007/09/16(日) 03:18:010838デフォルトの名無しさん
2007/09/16(日) 14:06:080839デフォルトの名無しさん
2007/09/16(日) 15:04:10殺すなんて言葉は良くないよ
0840デフォルトの名無しさん
2007/09/16(日) 15:33:09誰か、こういうときどう突っ込んでいいのか教えてください
0841デフォルトの名無しさん
2007/09/16(日) 15:47:10throws UnreadAirResponseException
0842デフォルトの名無しさん
2007/09/16(日) 16:04:310843デフォルトの名無しさん
2007/09/16(日) 17:32:47JNIに頼るしかないよね?
0844デフォルトの名無しさん
2007/09/16(日) 17:37:18RMIだってあるじゃん
0845デフォルトの名無しさん
2007/09/16(日) 18:03:280846デフォルトの名無しさん
2007/09/16(日) 18:10:250847デフォルトの名無しさん
2007/09/16(日) 18:16:54デバッガでも書きたいのか。
0848デフォルトの名無しさん
2007/09/16(日) 18:17:000849デフォルトの名無しさん
2007/09/16(日) 19:40:18フォークじゃなくて?
どっちにしてもMS-DOSの糞実装が邪魔する話になって来てるな。
0850デフォルトの名無しさん
2007/09/16(日) 20:40:56firefoxの更新ボタンやキャッシュを消したりしましたが同じです。
Sample.classのファイル を消しても同じ画面がでます。
どうしたら、いいのでしょうか?
---------------------------
<HTML>
<BODY>
<APPLET CODE = "Sample.class" WIDTH = 500 HEIGHT = 500>
</APPLET>
</BODY>
</HTML>
0851デフォルトの名無しさん
2007/09/16(日) 20:47:45IEでも同じ現象が起きるのか?
IEで反映されるのならばブラウザの問題。
火狐のスレに行って聞いたほうが早いだろう
原因の本質ではないかもしれないが、500の部分もダブルコーテーションで囲っとけ。
0852850
2007/09/16(日) 21:10:200853デフォルトの名無しさん
2007/09/16(日) 21:28:38クラスがコンパイルされてないんじゃね?
そのHTMLとクラスファイルのある場所の構成を書いてみ
0854デフォルトの名無しさん
2007/09/16(日) 21:32:21バージョンは1.6.0_02
Javaコントロールパネルからインターネット一時ファイルを消してもダメ
この状態でFirefoxのキャッシュを全て消して、Firefox自体を再起動すればうまくいきそうだけど、
いまニコ動見てるから、誰か変わりに頼む
0855850
2007/09/16(日) 21:32:23c:\test\sample.java
c:\test\xxx.html
ですべて同じディレクトリにあります。
0856デフォルトの名無しさん
2007/09/16(日) 21:35:45ためしにHTMLを少し変更してリロードしてみれ
0857854
2007/09/16(日) 21:37:01コマンドは忘れた
たしかコンソール立ち上げると、各コマンドの説明が出るはずだからわかるとおもう
Javaコントロールパネルの詳細設定でタスクトレイのアイコンを出すか、コンソールを常に表示するか、設定すればOK
0858デフォルトの名無しさん
2007/09/16(日) 21:40:000859デフォルトの名無しさん
2007/09/16(日) 21:40:16Javaアプレットをキャッシュからではなく、毎回読み込むには?
ttp://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1411166029
0860デフォルトの名無しさん
2007/09/16(日) 21:40:20プラグインを入れていればだけど
0861デフォルトの名無しさん
2007/09/16(日) 21:42:12コントロールパネルのJavaの設定から、キャッシュをクリアしてみて。
クラスファイルとかはブラウザのキャッシュとかには入らない模様。
0862デフォルトの名無しさん
2007/09/16(日) 21:42:250863デフォルトの名無しさん
2007/09/16(日) 21:43:26そのタグはHTMLのキャッシュ指定だよ、ちなみに無視される事もある。
0864850
2007/09/16(日) 21:49:13できましたありがとうございました。
0865デフォルトの名無しさん
2007/09/16(日) 21:52:14って言おうとしたけど、荒れそうだから辞めたいんだけど、
でもやっぱり言ってみたいこの葛藤をどう処理すればいいですか?
0866デフォルトの名無しさん
2007/09/16(日) 21:53:26難しい質問でも自演したら?
0867デフォルトの名無しさん
2007/09/16(日) 22:01:06自演は飽きたよ
自分で相手をバカにしたくせに、相手にバカにされるとイラっときて、
くだらないレスの応酬するのも疲れるから、我慢してイライラを飲み込むんだけど、それも疲れた
誰か俺にこういうときのうまい対処法をウィービングしてくれまいか
子供の喧嘩をしてこなかったせいで、こんなことでストレスためてる大人が居ます
こういうことを書くと、スレを荒らすな、とか板違いとか、いろいろ言われるんだろうな
気が滅入りながらも、書き込みボタンをポチっとな
0868デフォルトの名無しさん
2007/09/16(日) 22:03:25あんたとは、いい酒が飲めそうな気がする
うまくコミュニケーションが可能な場所がありゃいいんだがな
0869デフォルトの名無しさん
2007/09/16(日) 22:06:56スレ違いとわかってて書き込むんだからどうしようもないな
ストレスためてまで答えてくれなくていいから、スレを閉じてくれ
0870デフォルトの名無しさん
2007/09/16(日) 23:01:31団塊ジュニアの典型的性格だな、それ
0871デフォルトの名無しさん
2007/09/16(日) 23:36:13やはり少しでも早くしたければ、マルチスレッドでプログラミングする必要がありますか?
0872デフォルトの名無しさん
2007/09/16(日) 23:44:50その質問だと、「あります」で終わるんだけど、いい?
0873デフォルトの名無しさん
2007/09/16(日) 23:45:06解らない。
マルチスレッドにすれば早くなるかと言えば必ずしもそうとも言えず、シングルスレッドの方が早い場合もある。
なにを並列に処理させるか、が重要。
とはいえ、マルチコア当たり前の時代になってきたので、並列処理に関しては学習しておくといいと思う。
0874デフォルトの名無しさん
2007/09/16(日) 23:47:55計算時間が膨大なので、少しでも短くなると助かるのですが。
0875デフォルトの名無しさん
2007/09/16(日) 23:48:36スレッドセーフに設計すると、どうしてもパフォーマンスはトレードオフの関係になる。
スレッドセーフにする事によるパフォーマンス低下よりも並行処理させる効果が高くなると判断できるならばマルチスレッドにする方がいいが、逆もあるということ。
0876デフォルトの名無しさん
2007/09/16(日) 23:50:31探索にIOが絡んでくるならば、確実に効果は出るはず。
ただ、現在シングルスレッドで作られているプログラムを後からマルチスレッドに対応させるのだけは自重するべき。
0877デフォルトの名無しさん
2007/09/16(日) 23:52:41つかいどころは、例えば、エンドユーザがファイル保存を指示して、すぐにレスポンスを返すために、
ファイル保存処理をスレッド化しておく、とか
あとはダウンローダーのダウンロード処理なんかもスレッド化の対象だね。
ダウンロードが完了するまでアプリケーションが固まってたら、誰も使いたいと思わないし
0878デフォルトの名無しさん
2007/09/16(日) 23:56:34探索処理をしている間、先に処理できるものがあるかどうか、っていうのを考えてみて
あるいは、探索処理を細かくわけて、並列に実行できるところがあるのか、どうか
たとえば、探索対象A,B,Cがあって、
AとBは同時に探索できて、AとBの処理が終わればCの処理が実行できるっていうんなら、
AとBをスレッド化させれば早くなる
0879デフォルトの名無しさん
2007/09/16(日) 23:57:09それは逆だ。
IOが発生すると処理は多少なりともブロックされるわけで、その間はCPUは遊んでいる。
従って別のスレッドにCPUを使う仕事をさせられる為、効率があがる。
なので、grepのように大量のファイルへのIOがある場合、並行処理は効果が高い。
0880デフォルトの名無しさん
2007/09/16(日) 23:58:53マルチコアであれば、という前提条件が抜けているぞ。
シングルだと遅くなるので注意。
0881デフォルトの名無しさん
2007/09/17(月) 00:01:10あーちがぅぅ
やっぱり誤解させてしまった
書き込み処理そのものを並列化しても意味が無い っていうこと
ディスクに書き込む部分の処理をスレッド多重でやる
たとえば、複数ファイルに書き込む処理とか
スレッドA→ ファイルA書き込み
スレッドB→ ファイルB書き込み ⇒ ディスクが1つしかないなら、結局 → A →B →C (順不同)
スレッドC→ ファイルC書き込み
0882デフォルトの名無しさん
2007/09/17(月) 00:01:48マルチコアなんでしょ?
0883デフォルトの名無しさん
2007/09/17(月) 00:05:14もしくはTexエンジンをブラウザ実装するとか
0884デフォルトの名無しさん
2007/09/17(月) 00:12:07理工系の学生以外は喜ばないだろ
せいぜいがWikiフォーマット止まり
0885デフォルトの名無しさん
2007/09/17(月) 00:17:270886871
2007/09/17(月) 00:17:57ええっと、一気にアドバイスをいただいて少し混乱してるんですが、
マルチコアなら同時に二つのスレッドが実行できるっていうのはあってます?
だとすれば、なんのIOも含まない処理なら、
同じ量をシングルスレッドでするのとマルチスレッドでするのとを比べると、マルチスレッドの方が早いと思うんですが、あってますよね?
0887デフォルトの名無しさん
2007/09/17(月) 00:23:32デュアルコアなら丁度2つのスレッドが走る状態だと最も効率がいいが、
それ以上だとスレッドの切り替えにかかるロスがあるので効率は下がる
結論
デュアルコアならスレッド2つを大体同じくらい使うように設計すると最も効率が良い
が、実装も複雑になるので素人はシングルスレッドで書いたほうが早い
0888デフォルトの名無しさん
2007/09/17(月) 00:25:46マルチコアなら同時にスレッドを2つ以上実行する時の効率があがるだけ。
(シングルでも当然マルチスレッドはできる)
マルチスレッドにすれば早くなるかは設計次第。
理想的に並列処理が実現できるならば最大で倍の速度は出るかもしれない。
でも、現実問題としてそこまで理想的な並行処理ができる事は少ない。
マルチスレッドにすればそれだけ実装の手間がかかるし、テストしにくい。
おまけに一番難しいのはどのように分割するかに正解がない。
バグがあっても早ければいいというわけじゃないだろ?
0889871
2007/09/17(月) 00:32:34話を聞いてるとリスクが多そうですね。
時間的にも総余裕があるわけではないので、今回は見送ろうと思います。
マルチスレッドについては、また日を改めて勉強することにしました。
アドバイスをくださった皆さん、本当にありがとうございました。
0890デフォルトの名無しさん
2007/09/17(月) 00:37:140891デフォルトの名無しさん
2007/09/17(月) 01:07:25そう考えると3万は安いw
0892デフォルトの名無しさん
2007/09/17(月) 02:33:45一つのsocketで入力、出力Streamって一つだけですよね?_?
動的にStream数増減させたいんだけど、そのつどnew socketするしかないのかなと思いまして。
inputStream.readInt()で読み込まれたら、Streamを別スレッドに渡してやって
また次のinputStream.readInt()で待つみたいな方法ないですかね
0893デフォルトの名無しさん
2007/09/17(月) 02:46:39当然ながらその通り。
相手が複数であるならばその都度ソケットを開くしかない。
相手が単一ならば複数開かない方が結果的に早いと思う。
あと、よほどのことがない限りはObjectをシリアライズして渡す方が楽だよ
もっと楽なのはRMIだけど
0894デフォルトの名無しさん
2007/09/17(月) 02:59:34お願いします。
以下のような Example クラスがあります。
increment メソッドを使用して count の値を +1 しています。
実行するとコンソールには加算前、加算後共に "0" と出力されます。なぜでしょう?
public class Example {
public static void main(String[] args) {
int count = 0;
System.out.println("加算前 = " + count);
increment(count);
System.out.println("加算後 = " + count);
}
private static void increment(int count) {
// 加算
count++;
}
}
0895デフォルトの名無しさん
2007/09/17(月) 03:01:340896デフォルトの名無しさん
2007/09/17(月) 03:06:43この問題に対しての値渡しの説明を詳しく書くとしたら
どういう風に解答していいか、分からなかったので。
どうなんでしょうか?
0897デフォルトの名無しさん
2007/09/17(月) 03:09:550898デフォルトの名無しさん
2007/09/17(月) 03:11:360899デフォルトの名無しさん
2007/09/17(月) 03:21:14staticなcountを作って使えば良い(回答違い?)
incrementってprivateなのか
0900デフォルトの名無しさん
2007/09/17(月) 03:23:36ありがとうございます。
相手(接続マシン)は単一なのですが、複数スレッド使って通信します。
複数のスレッドで同一のStreamを共有するのは処理がややこしくなるので、
別Streamを用意しなくてはと思ってました。
やはりStreamを増やすには新しくsocketを作るしかないのですね。
StreamにStreamを渡すことって出来るのかな?なんて思ったのですが、
シリアライズできません!って例外投げられました。
ちなみにStreamにStreamを渡すこと
って出来るのでしょうか(汗)
0901デフォルトの名無しさん
2007/09/17(月) 04:25:09自分でそういった仕組みを作ってもそんなに難しくないと思うけど、
イヤならおとなしく複数のソケットを作っとく方がいいと思う
0902デフォルトの名無しさん
2007/09/17(月) 09:36:00SwingのほうのライブラリにJtreeというツリー構造を表示するクラスがあるみたいなんですが、
純粋なツリー構造のクラスが見つかりません。
またないとすれば、自分で作るべきでしょうか?
0903デフォルトの名無しさん
2007/09/17(月) 10:12:270904デフォルトの名無しさん
2007/09/17(月) 11:38:26return new Hoge();
}
piyo(){
Hoge hoge = hogehoge();
//ここでhogeに対する処理
}
こう書いた場合、hogehogeで作ったインスタンスをpiyoで使うことに問題はありませんよね?
スコープの理解が曖昧なので、hogehogeの中で作ったインスタンスを外で使うのはまずいのかな?と不安になっています。
0905デフォルトの名無しさん
2007/09/17(月) 11:41:32Javaのインスタンスはすべてヒープに作られるから大丈夫
0906デフォルトの名無しさん
2007/09/17(月) 11:52:38JTree は純粋に表示をするだけで、ツリー構造のデータ自体は DefaultTreeModel で管理されてる
DefaultTreeModel の方は、お望みの、表示を伴わない純粋なツリー構造のクラスだが・・・
表示する目的がないなら、用途に合わせて自分で作った方がいいんじゃね
0907902
2007/09/17(月) 11:58:20そうですか。いかにもGenericsで作られてそうだったので、
車輪の再発明になるかと思い、躊躇していました。
アドバイスに従って一から作ってみようと思います。レスありがとうございました。
0908デフォルトの名無しさん
2007/09/17(月) 12:05:27この6って数字もfinalで定数にするべき?
「昆虫クラスだからわかりそうし、定数にすると打つのも読むのも面倒だし、いいかな」
と思ってるんだけど、やっぱり避けたほうがいい?
0909デフォルトの名無しさん
2007/09/17(月) 12:06:14安心しました。
ありがとうございます。
0910デフォルトの名無しさん
2007/09/17(月) 12:11:19ソースコードに突然 6 とか書いてあっても、何の意味の 6 なのかわかりにくくない?
0911デフォルトの名無しさん
2007/09/17(月) 12:18:20車輪の再発明にはならんよ。
Tree構造作るのはパターンだけど、作るたびに要件が違うから簡単なユーティリティクラスにするのが難しい。
だから、作りたい構造にあわせて作って問題がない。
中でArrayListとか使えば作るのは簡単なわけだから。
0912デフォルトの名無しさん
2007/09/17(月) 12:21:03いくつかの解法はあるけど、脚の数は定数にはしないべきかな。
private final としておいて、コンストラクタで定数のデフォルト値(=6)を設定する.
こうすれば原則としては6本になるが、サブクラス化などをして6本以外の昆虫に拡張できるようになる。
自分は、昆虫クラスに例外があるってならばそうする。
0913デフォルトの名無しさん
2007/09/17(月) 12:59:130914デフォルトの名無しさん
2007/09/17(月) 12:59:18それは分類学上の定義なので、6本脚が昆虫で4本脚はそれ以外と定義するとすれば、
当然constになるね。何をもってクラスの唯一性を識別するかによる。
たとえば昆虫クラスと人間クラスはどうちがうの?という話になる。
0915デフォルトの名無しさん
2007/09/17(月) 13:08:12ソースコードが読みにくくなるけど、それがついてるだけで安心できる。
初心者は配列のfinalには気をつけるべきだろうけどね。
0916デフォルトの名無しさん
2007/09/17(月) 13:16:260917デフォルトの名無しさん
2007/09/17(月) 13:18:440918デフォルトの名無しさん
2007/09/17(月) 13:19:42どうやって?
0919デフォルトの名無しさん
2007/09/17(月) 13:19:500920デフォルトの名無しさん
2007/09/17(月) 13:22:57ラッパーを使えばよかった気がするけど忘れた。
確かEffective Javaの最初のほうで読んだ気がする。
0921デフォルトの名無しさん
2007/09/17(月) 13:46:47いざ実行してみようとすると、
Reason check the details
詳細
com.nttdocomo.eclipse.DoJaBuildException: Failed create jarC:\Users\user_name\workspace\MyProject\bin\Project_name.jar
というエラーが出てしまいます。JARファイルの作成に失敗している事はわかるのですが
どう対処すればいいのか良く解りません。ご教示お願いします。
Eclipseは3.*、DoJaは5.0です。
0922デフォルトの名無しさん
2007/09/17(月) 13:50:35専用クラス作った方が早い。
ワザワザ、割り当て出来るかどうか考える操作に効率がいいとは思えない。
専用クラスでセットは1回のみ、という要件は簡単に実装できるでしょ。
0923デフォルトの名無しさん
2007/09/17(月) 13:54:09超初心者が携帯からJavaに入ろうとすることが間違い
せめて簡単な入門書程度を終わらせてからにするべき
0924デフォルトの名無しさん
2007/09/17(月) 13:56:44getterで取得させたい場合は、
return new Arrays.copyOf(array, array.length);
でコピーを返す。
ただし、コピーであると知らずに操作して問題が起きても俺は知らん、って方法。
0925デフォルトの名無しさん
2007/09/17(月) 13:57:25解りました。些細な問題という事ですね。もう一度調べなおしてみます。
0926924
2007/09/17(月) 13:57:580927デフォルトの名無しさん
2007/09/17(月) 14:05:51違うっての。
問題が何か切り分ける事もできなければ、質問しようにも相手に何が解っていないのかが伝わってないんだよ。
つっこみをいれるならば、
実行しようとしてみるってなんだ?
コンパイルは通ったのか?
それはプラグインの問題じゃないのか?
Javaのバージョンは?
Eclipseは3.1 3.2 3.3 でかなり違うが?
0928デフォルトの名無しさん
2007/09/17(月) 15:49:08メニューから機能を実行できるようにしています。
JMenuItem(Action)にCtrl+Aなどのキーボードアクセラレーションを設定したのですが、
セルを選択した状態だと、アクセラレーションのコマンドの入力により
JTableのセルが編集状態に遷移してしまい、うまく機能を実行できません。
うまい解決方法があれば、お知恵を拝借したいのですが。
0929デフォルトの名無しさん
2007/09/17(月) 15:51:530930928
2007/09/17(月) 16:10:29質問する前の確認不足で申し訳ないです。
0931デフォルトの名無しさん
2007/09/17(月) 17:19:29Java講座 > 2.5. 配列フィールド定数
ttp://www.sgnet.co.jp/java/chapter0205.html
0932デフォルトの名無しさん
2007/09/17(月) 17:25:06それでも、結局はクラス内部での変更は防止できないんだけどね。
外から見て定数なだけ。
0933デフォルトの名無しさん
2007/09/17(月) 17:31:13たしかにな。
結局のところ、Javaでは根本的にオブジェクトの変更は不可避だってことだろう。
0934デフォルトの名無しさん
2007/09/17(月) 17:38:05どうしてもってならば、配列では実現できないから不可変なListに保持して使う時に配列を生成するしかないだろう。
とはいえ、生成した配列自体は可変。
0935デフォルトの名無しさん
2007/09/17(月) 17:42:110936デフォルトの名無しさん
2007/09/17(月) 17:46:06仕方ないので防御的コピーで外部からの変更からはガードする。
だから、まったく別の話ではない
0937デフォルトの名無しさん
2007/09/17(月) 17:54:57Javaではそうかもしらんが一般論では違うだろ
防御的コピーで返す値は定数とは限らんわけで
0938デフォルトの名無しさん
2007/09/17(月) 17:56:43いわゆる読込み/書き込みロックを実現するクラスかと思いますが、次のような理解で間違いはないでしょうか?
・書き込みロックを取得しようとすると読込みロックが存在しないタイミングまでブロックされた後でロックがかかる。この時、他の読込み/書き込みはブロックされる
・読み込みロックを取得しようとすると書き込みロックが取得されていなければ処理が実行され、他のスレッドが読み込みロックを取得していても並列に処理される
0939デフォルトの名無しさん
2007/09/17(月) 18:05:30あってるはず。
不安だったら自分でAPIリファレンス読んでくれ。
http://java.sun.com/javase/ja/6/docs/ja/api/java/util/concurrent/locks/ReadWriteLock.html
0940デフォルトの名無しさん
2007/09/17(月) 18:10:35レスあり。
リファレンスを読んでみたんだけど、いまいちピンとこなくて。
0941デフォルトの名無しさん
2007/09/17(月) 20:29:11BufferedImageとImageIconはどちらが多くのメモリーを消費するのでしょうか。
0942デフォルトの名無しさん
2007/09/17(月) 20:37:49おまえは何を言っているんだ?
0943デフォルトの名無しさん
2007/09/17(月) 21:01:13・BufferedImageに画像Aを描画したもの(幅、高さは画像Aと同じ)
・画像AのURL情報を元に生成したImageIcon
この2つのオブジェクトが使用するメモリーを比較したいのですが・・・
0944デフォルトの名無しさん
2007/09/17(月) 21:09:19差があったとしても、その差がアプリケーションの挙動に影響を及ぼすほどのサイズだと考えられるか?
0945デフォルトの名無しさん
2007/09/17(月) 22:01:320946デフォルトの名無しさん
2007/09/17(月) 22:05:160947デフォルトの名無しさん
2007/09/17(月) 23:18:200948デフォルトの名無しさん
2007/09/17(月) 23:23:190949デフォルトの名無しさん
2007/09/17(月) 23:38:54作れました。
神さま、ありがとうございます
0950デフォルトの名無しさん
2007/09/17(月) 23:44:13神様じゃなくて948に感謝しろww
0951デフォルトの名無しさん
2007/09/17(月) 23:45:410952デフォルトの名無しさん
2007/09/18(火) 00:00:26なんでかな
0953デフォルトの名無しさん
2007/09/18(火) 00:03:08>>1
0954デフォルトの名無しさん
2007/09/18(火) 00:03:460955デフォルトの名無しさん
2007/09/18(火) 00:07:10ありがとう。
0956デフォルトの名無しさん
2007/09/18(火) 13:02:08フォームのサブミットボタンを押したとき、テキストボックスなどに入力されたものとは別に変数を作って値を持たせるにはどうすればよいでしょうか?
その値や変数は利用者が設定するのではなく、ブラウザ側で自動的に設定されるようにしたいと考えています
0957デフォルトの名無しさん
2007/09/18(火) 13:31:30hidden使う。
でも、java関係ないね。
0958デフォルトの名無しさん
2007/09/18(火) 15:10:48お返事ありがとうございます。返事をしたつもりでいて遅くなって申し訳ありません。
ところでJMFひらけましたが、1フレームごとにキャプチャってどうすればよろしいでしょうか?
JMFサンプルとかが英語ばっかりでかなり大変なので・・・
0959デフォルトの名無しさん
2007/09/18(火) 15:14:160960デフォルトの名無しさん
2007/09/18(火) 18:07:01>>267さんで>>349のことで>>276さんへかしら
0961デフォルトの名無しさん
2007/09/18(火) 21:43:24プログラムはWARファイルの中のファイルを実行するんですか?
WARを解凍して、解凍したファイルを実行するんですか?
0962デフォルトの名無しさん
2007/09/18(火) 21:52:410963デフォルトの名無しさん
2007/09/18(火) 23:34:03以下のように送信側で1を送信し通信終了、
受信側で1を受信して通信終了とコーディングしたのですが、エラーになってしまいました。
送信側
out.write(1);
out.flush();
socket.close();
-----------------
受信側
int i = in.read();
socket.close();
実行すると、
送信側で SocketException socket closed
受信側で EOFException
って出ます。
送信完了後に切断したいのですが、どうしたらいいのでしょうか。
0964デフォルトの名無しさん
2007/09/18(火) 23:57:17通信の基本を勉強した方がいいんじゃね?
てか、電話だってどっちかが「切る」んだろ
話すだけ話して聞いたか確認せずに勝手に切られたら相手困るじゃねーかww
0965デフォルトの名無しさん
2007/09/19(水) 00:48:10最近System.out.printと書くのがめんどくさくなってきたんで、こんなクラスを作ってみました。
public class S {
public static final S o = new S();
public void p(Object o){
System.out.print(o);
}
public void p(int i){
System.out.print(i);
}
・
・
・
}
使用例
S.o.p("test");
作ったのはいいんですが、どうも納得いきません。
System.out.printの略だとわかりやすいように作ったんですが、これはこれで打ちづらいです。
もう少しスマートで使いやすくならないでしょうか?
0966デフォルトの名無しさん
2007/09/19(水) 00:53:520967デフォルトの名無しさん
2007/09/19(水) 00:58:17public class S {
private static java.io.PrintStream out = System.out;
public static void p(Object o){
System.out.print(o);
}
public static void p(int i){
System.out.print(i);
}
:
:
}
使用例
S.p("test");
0968デフォルトの名無しさん
2007/09/19(水) 00:58:45ヒント2: java.util.logging または log4j
ヒント3: sysout + [Ctrl + O]
0969デフォルトの名無しさん
2007/09/19(水) 01:00:23private static java.io.PrintStream out = System.out; は要らねえ
0970デフォルトの名無しさん
2007/09/19(水) 01:05:58staticコンテクストから呼ばれる可能性があるならpublic static void p(Object o)にしておく。
使用するときはp("test")だけで呼べる。
0971デフォルトの名無しさん
2007/09/19(水) 01:14:420972デフォルトの名無しさん
2007/09/19(水) 01:20:08コード補完で十分だろ
0973デフォルトの名無しさん
2007/09/19(水) 01:25:130974デフォルトの名無しさん
2007/09/19(水) 01:28:54少しだけ短くなりますね。
"."が少なくなるのはいいですね。
>>968
ヒント1
import static java.lang.System.out;
public class Test{
public static void main(Strin[] args){
out.println("");
}
}
目んたま飛び出るかと思いました。
こんな便利機能があるとは。
1.6でコンパイルしていたんですが、Eclipseに警告されて1.5でコンパイルしました。
ヒント2
コーディングが少し長いですが、気軽にログに残せるのはいいですね。
勉強になります。
ヒント3
[Ctrl + O]というのがよくわかりませんが、Eclipseを使用しているのでCtrl+Spaceを押してみたら勝手に変換してくれました。
第三者にもわかりやすく、自分も楽ちんでとても良いですね。
短時間で多くの事を学べました。感謝の極みです。
>>970
使用頻度の高いSystem.out.printを毎回ちょこちょこ書くのがめんどうだったんで
最初は>>965みたいなものを継承して作ってました。
private void sop(Object o){
System.out.print(o);
}
0975デフォルトの名無しさん
2007/09/19(水) 03:02:31俺はネタだとばかり・・・
0976デフォルトの名無しさん
2007/09/19(水) 04:13:450977デフォルトの名無しさん
2007/09/19(水) 04:16:01UDP
0978デフォルトの名無しさん
2007/09/19(水) 07:15:09import static java.lang.System.out.println までできるんじゃね?
0979デフォルトの名無しさん
2007/09/19(水) 07:44:46ループバックアドレスでやってるが、状況が再現できん。
もっとソース出せ。
ところで送信側と受信側の socket ってどうやってインスタンス作成してる?
まさか同一のインスタンスじゃないよな?
0980デフォルトの名無しさん
2007/09/19(水) 08:23:54無理。
0981デフォルトの名無しさん
2007/09/19(水) 10:12:46C++のマクロでもいいんだがなあ。
0982デフォルトの名無しさん
2007/09/19(水) 10:16:58というかコードの書きやすさと読みやすさだったら読みやすさを取るのが普通
0983はる
2007/09/19(水) 10:37:23現在DB接続を勉強していますがfromIdx,toIdxってなんでしょうか??
これを使ってDB接続クラスを作成するのですが、調べても分からなかったので
どなたかお教え願います。
0984デフォルトの名無しさん
2007/09/19(水) 10:39:360985デフォルトの名無しさん
2007/09/19(水) 10:54:29次スレ頼む
0986デフォルトの名無しさん
2007/09/19(水) 11:04:360987デフォルトの名無しさん
2007/09/19(水) 11:07:460988デフォルトの名無しさん
2007/09/19(水) 11:40:08このスレには色々とお世話になってるから、代わりに立てといた。
http://pc11.2ch.net/test/read.cgi/tech/1190169553/
0989デフォルトの名無しさん
2007/09/19(水) 12:00:55また、ライブラリなどがありましたら教えてください。
0990デフォルトの名無しさん
2007/09/19(水) 12:02:280991デフォルトの名無しさん
2007/09/19(水) 12:03:13http://terai.xrea.jp/Swing/FileListFlavor.html
すこしはぐぐれよ。
0992デフォルトの名無しさん
2007/09/19(水) 12:07:10>質問なのでこちらにレスさせて頂きます。
レスってレスポンスの略だろ?質問に対する返答がレスポンスなのであって
質問そのものはレスするもんじゃない。
>fromIdx, toIdx
それ宿題の中に出てくる用語か?宿題の前後の文章がなきゃ答えようがない。
0993デフォルトの名無しさん
2007/09/19(水) 12:10:45そのクラスは、外部からのドラッグ&ドロップに対するものだったと思います(違ったっけ?)
外部アプリケーション云々ではなく、Javaアプリケーション自身でのDnDを実装したいのです。
例えばJavaScriptのJQueryライブラリのDnDのようなものです。
0994デフォルトの名無しさん
2007/09/19(水) 12:11:07何からの配列で、二つの添え字が指すインスタンス同士でなにかやりとりしてるんじゃないか?
ありそうなのは、インスタンスの交換だろうけど。ソートなんかでありそうなことだね。
っていうか、こういうのは質問スレじゃなくてエスパースレでやれ。
そうでなきゃもうちょっとまともな質問しろ。
0995デフォルトの名無しさん
2007/09/19(水) 12:12:39それなら普通にMouseListenerとかMouseMotionListener使えばいいんじゃない?
0996デフォルトの名無しさん
2007/09/19(水) 12:18:54selectExec() について言えば、
SELECT * FROM testtable1 LIMIT toIdx - fromIdx OFFSET 1 ORDER BY testno;
SELECT * FROM testtable1 OFFSET fromIdx ORDER BY testno;
このSQLをどう発行するかってことだと思うよ。
SELECT の結果は行の集合であって順序もへったくれもないので、
インデックスでアクセスするために ORDER BY して並べ替えて順序付けしてある。
まあSQLを文字列でそのまま渡せるなら toIdx みたいな引数意味ないんだけど・・・。
0997デフォルトの名無しさん
2007/09/19(水) 12:19:34ありがとうございます。
http://www.javadrive.jp/applet/event/index.html
このサイトを参考にして、頑張ってみます。
0998デフォルトの名無しさん
2007/09/19(水) 12:20:56// selectExec(sql, fromIdx) のやりたいこと
SELECT * FROM testtable1 OFFSET fromIdx ORDER BY testno;
// selectExec(sql, fromIdx, toIdx) のやりたいこと
SELECT * FROM testtable1 LIMIT toIdx - fromIdx OFFSET fromIdx ORDER BY testno;
0999デフォルトの名無しさん
2007/09/19(水) 12:23:30アプリ内の閉じたD&Dにも使える
外部との通信専用ってわけではまったくない
1000デフォルトの名無しさん
2007/09/19(水) 12:26:18http://pc11.2ch.net/test/read.cgi/tech/1190169553/
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。