08/04/19 00:26:30
Character.isDigitは全角数字や漢数字、デヴァーナーガリ数字などにも
trueを返すから使い方によっては要注意。
454:448
08/04/19 00:29:00
>>450
意図したとおりの動作ができました。ありがとうございます。
455:デフォルトの名無しさん
08/04/19 07:13:28
数値かの判定?
正規表現でいいじゃねーか
456:デフォルトの名無しさん
08/04/19 11:37:48
配列とループの質問なんですけど、
簡単に例えると、
配列: int[] i = {1,5,4,3,2,8,4,6,1,5,7,9,3};
があって要素番号を1から順にループしていって
最初の5が出た時に表示などの処理、
2回目の5が出た時にループも終了ってのはどうすればいいですか?
457:デフォルトの名無しさん
08/04/19 11:45:32
>>456
やりたいことを書いた方が良いレス付くと思うぞ。
表示するならタイマーか何かで要素を取得するルーチンにwait置かないとだめだろうし。
458:デフォルトの名無しさん
08/04/19 11:50:26
>>447 お願いします
459:デフォルトの名無しさん
08/04/19 12:02:45
>>458
setEditable(false)
460:デフォルトの名無しさん
08/04/19 12:04:03
ついでにsetBackground(SystemColor.text)
461:デフォルトの名無しさん
08/04/19 12:05:46
URLリンク(deebuu.com)
これの県名部分を
今の食べ物表示に改造してくれ・・・・・。頼む!
462:デフォルトの名無しさん
08/04/19 12:07:31
>>461
JavaScriptはスレ違い。
463:デフォルトの名無しさん
08/04/19 12:11:24
>>456
int[] array = {1,5,4,3,2,8,4,6,1,5,7,9,3};
int count = 0
for (int i=0; i<13; i++) {
if (array[i] == 5) {
if (count == 0) {
System.out.println("5");
count++;
}
else break;
}
}
464:デフォルトの名無しさん
08/04/19 12:15:50
テキストファイルから数字を読みだすクラスを教えてください。
Stringとして読む方法ならわかります。
465:デフォルトの名無しさん
08/04/19 12:17:25
>>464
バイナリじゃなくてテキストなら、
Stringとして読んだ後で数値に変換する。
変換方法はちょっと前のやりとり参照。
466:デフォルトの名無しさん
08/04/19 12:18:38
>>462
(´;ω;`)ウッ…
467:464
08/04/19 12:37:48
解決しまつた
読み出し結果 = Integer.parseInt(line.replaceAll("[^0-9]","")
468:デフォルトの名無しさん
08/04/19 12:48:54
>>459 ありがとうございます!
469:デフォルトの名無しさん
08/04/19 20:00:08
以下のコードを実行すると、fillRoundRecの残像(?)が残ってしまいます。
Image img; // オフスクリーンイメージ
Graphics g_off; // グラフィックオブジェクト
int miss_count = 255;
// オフスクリーンバッファ作成
img = createImage(640, 480);
g_off = img.getGraphics();
// 描画領域の塗りつぶし
miss_count += 4;
if (miss_count > 255)
{
miss_count = 255;
}
if(miss_count != 255)
{
g_off.setColor(new Color(255, miss_count, miss_count,128));
g_off.fillRoundRect(10, 57, wx - 10 * 2, 28, 20, 20);
}
残像とは、うすいピンク色の物体のことです。
デバッグしたところ、g_off.fillRoundRectが実行されていないときに残像が表示されてしまいます。
この残像を消す方法を教えていただけないでしょうか?
470:デフォルトの名無しさん
08/04/19 20:52:23
Vectorに入れたストリングオブジェクトからメソッドを参照しても見つからないと出ます・・・
Vector ve = new Vector();
String s = new String("One Two Three Four Five Six Seven");
ve.addElement(s);
int len = ve.elementAt(0).length();
String substring = ve.elementAt(0).substring(len - 10, len); // 末尾の10文字を抜き出す
System.out.println(substring);
Vectorに入れると何か変わってしまうんですか?
471:デフォルトの名無しさん
08/04/19 20:58:29
>>470
elementAtの返値はObject型になってるのでキャストすること。
つーか、JDK1.4で学習するのは推奨しないが……
472:デフォルトの名無しさん
08/04/19 21:02:58
(String)(ve.elementAt(0)).substring(len - 10, len);
え~っと こういうことじゃないですよね……
Object型からの変換ってどうしたらいいんですか?
473:デフォルトの名無しさん
08/04/19 21:05:19
そういうことですよ
474:デフォルトの名無しさん
08/04/19 21:13:37
>>473
無理です><
475:デフォルトの名無しさん
08/04/19 21:16:41
>>472
括弧の位置微妙に変じゃない?
476:474
08/04/19 21:24:14
わからない……
教えてくだせorz
477:デフォルトの名無しさん
08/04/19 21:41:48
Object o = ve.elementAt(0);
String s = (String)o;
s.substring...
と段階を追って書けばいいんじゃない?
478:デフォルトの名無しさん
08/04/19 21:57:02
System.out は final フィールドなのに
System.setOut(PrintStream) を呼んだ後は
値が変わるようなのですが、
こんなことが可能なのでしょうか?
479:デフォルトの名無しさん
08/04/19 21:58:48
>>470
int len の行もキャストが必要。と言うか、操作するなら取り出しましょう。
List<String> list = new ArrayList<String>();
String str = "One Two Three Four Five Six Seven";
list.add(str);
String ret = list.get(0);
int len = ret.length();
if (len >= 10) { ret = ret.substring(len - 10); }
System.out.println(ret);
480:デフォルトの名無しさん
08/04/19 22:10:34
>>478
nativeで実現されてるからできる。
481:デフォルトの名無しさん
08/04/19 22:13:05
>>478
フィールドへの参照はfinalだけど、OutputStreamの中の状態とかは変化できる
大雑把に言えばこんな感じになっていると考えればOK
class System {
final OutputStream out;
void setOut(OutputStream out) {
this.out.setOutputStream(out);
}
}
482:デフォルトの名無しさん
08/04/19 22:14:46
finalはバイトコードレベルではただのフラグだな。
コンパイラが代入されたり継承されたりしないように尊重してるだけで、
バイトコードレベルでの代入自体は実はできるってことじゃないの?
483:474
08/04/19 23:48:16
>>471
いまさらですがJDKについてkwsk
回答してくださった方ありがとうございます。参考にさせていただきます。
484:デフォルトの名無しさん
08/04/19 23:57:01
>>469
これを描画する前に真っ白の同じ形のものを描画すればOKでした。
おさわがせしました。
485:デフォルトの名無しさん
08/04/20 00:13:36
はじめまして、かなり初歩的な質問なんですが、
NetBeansで
jTextFieldに配列を使って名前を付けるにはどうすればよいのでしょうか??
for (int i=1 ; i<=10 ; i++) {
jTextField1[i] = new javax.swing.JTextField();
}
みたいなことをやりたいのですが、やり方がわかりません...
どなたかご教授お願いいたします。
486:デフォルトの名無しさん
08/04/20 00:17:02
>>483
今まではオブジェクトが何でも入れられたので、
取り出される要素の型が特定できない
そこでとりあえず、出した要素の型は全部Object型ということにして、プログラマにキャストをさせるようにしていた
ところがJDK1.5からはジェネリクスなる仕組みが用意され、格納できる型が固定できるようになった
こんな感じ
Vector<String> ve = new Vector<String>();
これでveにはStringしか入れられなくなる
ve.add("hoge");
ve.add(new Integer(1)); //エラー
格納できる型が指定できるのだから、取り出す型も自然に決まってくるので
キャストの必要がなくなる。ジェネリクスでぐぐってみては
あと蛇足だが、今ならVectorの他にLinkedListやArrayListが用意されている。違いは同期化の有無
487:デフォルトの名無しさん
08/04/20 00:21:14
>>486
1.5になってからもはやVectorを使わないような そんなことない?
488:デフォルトの名無しさん
08/04/20 00:25:31
System.outがfinalなのにセットできるのは昔の名残だ。
489:デフォルトの名無しさん
08/04/20 00:45:33
古いAPIがListではなくVectorを返しやがるみたいなときに
使わざるを得ないことはあるな。
490:デフォルトの名無しさん
08/04/20 00:46:08
それはListで受けられるだろう。
引数がVectorだとListのままじゃ渡せないが。
491:デフォルトの名無しさん
08/04/20 02:30:08
FocusLostでフォーカスを失ったときに、
失う前に元々フォーカスがあったところを調べるのってどうすればいいんでしょうか?
492:デフォルトの名無しさん
08/04/20 02:35:03
最近拾ったスクリーンセイバーがリモートネットワーク 72.5.124.55 ポート80に
アクセスしようとしていたのでセキュリティーソフトでアクセス禁止にしたのですが、
jabaの何か、としか私には解りませんでした、ここの人たちに聞けば親切に教えて
くれるという事で尋ねてみました。
素人の私でも解る説明で教えてください。
493:デフォルトの名無しさん
08/04/20 02:39:28
void focusLost(FocusEvent e) {
Component lostFrom = e.getComponent();
Component gainedBy = e.getOppositeComponent();
}
か?
494:491
08/04/20 04:43:55
493さんありがとうございます!!なるほど!
これで、元々フォーカスのあったコンポーネント(jTextField)に入力されている値を取得したいのですが、
lostForm.getText();
だとエラーになるんですが、これじゃ駄目なんでしょうか??
何度もすいません。ご教授お願いいたします。
495:デフォルトの名無しさん
08/04/20 11:55:14
>>494
if (lostFrom == myTextField) {
String s = myTextField.getText();
}
==は同じオブジェクトを指してるかどうか型違っても==
496:デフォルトの名無しさん
08/04/20 11:56:37
編集しかけで送信してしまった。
==は同じオブジェクトを指してるかどうかの判定だから、型違っても使える。
497:デフォルトの名無しさん
08/04/20 12:03:17
JTextFieldが複数あって、どれでも処理が同じ場合は
いちいち==で比較するより
if (lostFrom instanceof JTextField) {
JTextField tf = (JTextField)lostFrom;
String s = tf.getText();
}
のほうがいいだろうな
498:デフォルトの名無しさん
08/04/20 12:15:00
>>497
これはよくない気がする
499:デフォルトの名無しさん
08/04/20 12:41:16
Javaのパッケージで定義されているクラスの中身って見れます??
例えば
java.awt
クラス Label
のメソッドgetText()がどういう処理してるのかとか
500:デフォルトの名無しさん
08/04/20 12:43:58
ソースコード付いてるだろ
501:
08/04/20 12:46:41
Eclipseとか使ってたらF3で一発だよ。
502:デフォルトの名無しさん
08/04/20 12:48:09
Java ディレクトリに入ってる src.zip の中を見れ
503:デフォルトの名無しさん
08/04/20 13:04:18
あっ...ほんとだ
>>500-502
迅速な解答どもです
じゃあ、iアプリの
com.nttdocomo.ui
クラス Label
とか見れます?
探したけどdojaディレクトリの中探したけど見当たらん。。。
504:デフォルトの名無しさん
08/04/20 14:45:35
プロプラな部分のソースを付けるわけないだろ
505:デフォルトの名無しさん
08/04/20 14:46:35
MIDPならPhoneMEのソースが使えるがPhoneMEのMIDPは2.1だな。
506:デフォルトの名無しさん
08/04/20 15:30:18
Graphicsクラスで文字にアンチエイリアスをかけるにはどうすればいいのでしょうか?
Graphics2Dクラスじゃないとできないのでしょうか?
507:デフォルトの名無しさん
08/04/20 15:41:36
Javaで2次元ベクトルを要素とする動的2次元配列
を作るにはどうしたらいいでしょうか?
配列はArrayListで作ってみたんですが、エラーが意味不明。。
あとdouble2つを持った2次元ベクトルクラスって標準ライブラリには無いんでしょうか?
508:デフォルトの名無しさん
08/04/20 16:08:21
java.awt.geom.Point2D.Doubleとか。
509:デフォルトの名無しさん
08/04/20 17:15:25
>>504
やっぱ非公開か。ありがとう。
510:491
08/04/20 17:35:11
>>495-497
早速のご回答ありがとうございます
if (lostFrom == myTextField) {
String s = myTextField.getText();
}
これって、元々テキストが入ってたテキストフィールドが「myTextField」ってことですよね??
だと、for文で全てのテキストフィールドを一致するか調べて探すっていう形になるんでしょうか?
511:507
08/04/20 18:01:18
>>508
ありがとうございます。求めてたのはそれです、、が
java.awt.geom.Point2D.Double foo = new java.awt.geom.Point2D.Double();
はO.Kなんですが、
Point2D.Double foo = new Point2D.Double();
と書くとPoint2Dパッケージがないと言われるのですが、そういうものなのでしょうか??
あと、このクラスに限らず、ArrayListの2次元配列に入れたものを取り出すとき
bar = data.get(1).get(2).x;
等とやると、java.lang.Object クラスに変数xなんてない、
と言われるのですが、どうしたらいいのでしょうか?
512:デフォルトの名無しさん
08/04/20 18:22:54
>>510
ずらずら書くのもループで回すのも構成次第でしょう。
>>511
冒頭に
import java.awt.geom.Point2D.Double;
と書けばよいのでは?
513:デフォルトの名無しさん
08/04/20 18:23:43
漏れた。
JDK1.4までのArrayList#getの返値はObject型なのでキャストが必要。
514:デフォルトの名無しさん
08/04/20 18:50:11
ArrayList の現在の要素数を取得するにはどうすれば良いのでしょうか?
ArrayList.size で取得できるかと思ったのですが、以下のエラーが出てしまいます
「size は java.util.ArrayList で private アクセスされます。」
515:デフォルトの名無しさん
08/04/20 19:07:38
>>511
importも分からずにCollectionとは恐れ入った
もう一回勉強した本を読み返すことをおすすめする
516:デフォルトの名無しさん
08/04/20 19:08:05
>>514
privateだからアクセスできません
517:デフォルトの名無しさん
08/04/20 19:12:56
>>514
メソッドとフィールドに関して勉強して来い
518:514
08/04/20 19:23:24
>>516-517
レスありがとうございます
すいません、質問の仕方が変でしたね。
質問する時は最低限やったことを書くべきだと思ったので
size が private でアクセスできないことを確認した旨を書きました。
聞きたかったことは ArrayList の現在の要素数を取得方法です
動的にサイズが変化するので要素数の取得をするべきではないのでしょうか?
519:デフォルトの名無しさん
08/04/20 19:33:05
質問です。
あるJavasprictを改造中なのですが、フォルダの構成上、ファイルまでのパスをURL指定にしたいのですが、
以下の記述をどのように修正すればよいのでしょうか?
downloadDir : '../ファイル名.php?img=フォルダ名/'
520:デフォルトの名無しさん
08/04/20 19:37:11
>>1
521:デフォルトの名無しさん
08/04/20 19:37:47
>>518
sizeメソッドを呼ぶ。
522:514
08/04/20 19:40:44
>>521
ありがとうございます!
523:478
08/04/20 21:26:36
勉強になりました。ありがとうございます。
524:510
08/04/20 23:00:53
なるほど。ありがとうございました。
525:デフォルトの名無しさん
08/04/20 23:49:12
javaのソースの中にたまに「class名#メソッド」
な記載があるのを見るのですが、これって何でしょうか。
staticだったら「class名.メソッド」だろうし
staticじゃなかったら「インスタンス名.メソッド」かな
と思っていますがそれ以外の何かがあるのでしょうか
526:デフォルトの名無しさん
08/04/20 23:51:57
>>525
インスタンスメソッドを示すときのお約束。
言語的にはそういう書き方はできない。
527:デフォルトの名無しさん
08/04/21 00:00:20
>>526
ありがとうございます!!
528:デフォルトの名無しさん
08/04/21 00:06:00
jTextFieldを複数用意していて、
それを全てクリアしたいのですがどういう方法でやればいいのでしょうか?
for (int i=1 ; i<=100 ; i++) {
myTextField[i].setText("");
}
のようにやればできるのですが、
テキストフィールドの変数名に配列を使わないでやるには一つづつsetTextしていくしかないんでしょうか?
それだとあまりにも面倒なもので...
もし良い案をご存じでしたらお願いします。
529:デフォルトの名無しさん
08/04/21 00:12:47
>>528
思いつかないこともないですが、もっと面倒くさいです。
たとえば、getComponents() メソッドで属するコンポーネントを全て獲得し、
forで一つ一つJTextFieldかどうかを確認し、JTextFieldならクリアする…という方法があると思います。
530:デフォルトの名無しさん
08/04/21 00:27:58
>>526
嘘をおしえるな。
531:デフォルトの名無しさん
08/04/21 00:28:09
ユークリッドの互除法を用いて、
与えられた2つの整数の最大公約数を出力するJavaのプログラムを示せ。
java GCD 45 18 ←入力
9 ←出力
この問題どなたか分かりますか?
532:デフォルトの名無しさん
08/04/21 00:40:15
>>492です、>>493~>>529の皆さん、ありがとうございました。
おかげさまで、スクリーンセイバーの件は解決できました。
興味が出てきたのでジャバの勉強もしてみようと思います、
これからいろいろと質問とか疑問に思った事を相談に来ると思うので、
その時は宜しくお願いします。
☆⌒(*^-゜)v Thanks!!
533:デフォルトの名無しさん
08/04/21 00:46:04
>>531
まず、ユークリッドの互除法でぐぐってみてはどうだろうか
一番上にWikipediaが来て、
1. 入力を m, n (m ≧ n) とする。
2. n = 0 なら、 m を出力してアルゴリズムを終了する。
3. n が m を割り切るなら、 n を出力してアルゴリズムを終了する。
4. m を n で割った余りを新たに m とし、更に m と n を取り替えて 3. に戻る。
こんな解説が載ってるわけだが
534:デフォルトの名無しさん
08/04/21 01:40:55
ループ文を break で抜けるように
メソッドを抜ける方法はありますか?
public void hoge(int i)
{
if (i > 3){
System.out.println("nothing to do");
//ここでメソッド抜けたい
}
fuga();
}
535:
08/04/21 01:42:05
return;
と書けばいいよ。
536:デフォルトの名無しさん
08/04/21 01:47:09
返り値が void でも return が使えたんですね、知りませんでした。
ありがとうございます
537:デフォルトの名無しさん
08/04/21 12:41:56
javaの初めからあるクラスで、エクステンズしてもいいクラスと
いけないクラスの区別のつけ方と、
クラスのオーバーライドしてもいいメソッドの区別の仕方を
おしえてください。
オーバーライドしてもいいメソッドやクラスは正常に動作するという意味です。
538:デフォルトの名無しさん
08/04/21 15:40:07
自宅では問題ないいのだけれど、出先(友人宅や学校など)でJava Runtime Environment
が入ってないPCでJavaアプリを使いたいのですが、USBやリムーバブルHDでJRE環境を
持ち歩くにはどうすればイイでしょうか?持ち歩いている人なんていないのでしょうか?
539:デフォルトの名無しさん
08/04/21 19:35:32
>>537
アクセス制限に引っかかることがなく、かつ final ではない場合、クラスの継承およびメソッドのオーバーライドが可能。
意味が分からなければ、実際にやれば分かる。コンパイルエラーになるから。
540:デフォルトの名無しさん
08/04/21 21:36:57
URLリンク(postlet.com)
このアプレットでは日本語ファイルの送信時に、文字化けが発生するので
ソースのUploadThread.javaの265行目のfile.getName()をUTF-8にエンコードするようにしてリコンパイルしました。
(コンパイルは通り、アプレットは生成されました。)
これをtomcat/struts環境で利用するとエラーが発生します。
オリジナルのアプレットは正常に動くのですが、リコンパイルしたものではエラーが発生する状況です。
この状態の回避方法を教えて下さい。
このアプレットで日本語ファイル名のファイルを文字化けなく送信したいです。
541:デフォルトの名無しさん
08/04/21 21:39:09
ログ読もうよ。TOMCAT_HOME/logs/stdout.log あたりになんか
吐き出されてるんじゃないの。
542:デフォルトの名無しさん
08/04/21 21:42:07
>>538
スレリンク(software板)l50
URLリンク(portableapps.com)
URLリンク(thingamablog.sourceforge.net)
USB に JRE を積んで、それを叩くバッチファイルを作ればいい
みたい。詳しくはリンク先で確認してちょ。
543:デフォルトの名無しさん
08/04/21 21:51:27
>>536
m9(^Д^)プギャー
544:デフォルトの名無しさん
08/04/21 21:57:15
double x = 1010.101ってのを整数部と小数部に分けたいんだけど
整数部はMath.floor(x);でいいんだけど、
小数部はどうしたらいいのか分からないっす・・・
小数部 = x - Math.floor(x)ってやると0.100999999999ってなっちゃうんです。
545:デフォルトの名無しさん
08/04/21 22:02:42
>>544
> ってやると0.100999999999ってなっちゃうんです。
doubleの数値を10進の文字列Stringに変換してから小数点で
トリミングして切り出せばいい。
546:デフォルトの名無しさん
08/04/21 22:09:50
今日からjavaやってみようと思う、コマンドの1つも知らない俺に優しいサイト&本ある?
ポケット辞書みたいなのあったらありがたいんだけど
547:デフォルトの名無しさん
08/04/21 22:18:03
>>546
URLリンク(java.sun.com)
>>544
整数部: x / 1.0
小数部: x % 1.0
文字列として正確に出力したいなら >>545
548:デフォルトの名無しさん
08/04/21 22:23:38
おー、調べるまで知らなかったけど、Javaにはfrac()ってないのか。
549:デフォルトの名無しさん
08/04/21 22:34:28
>>545 String seisu = String.valueOf((int)整数);
String bin = String.valueOf(1010.101);
String ss = "0." + sh.substring((int)seisu.length() + 1,
(int)bin.length());
小数部 = Double.parseDouble(ss);
みたいにやったらできました。ありがとうございました。
550:デフォルトの名無しさん
08/04/21 22:39:36
APIみながらコード書いてたらファイアフォックスのタブがもの凄い数になるんだけど
プロのみなさんはAPIとか見ないの?
551:デフォルトの名無しさん
08/04/21 23:56:03
>>550
見るよ
552:デフォルトの名無しさん
08/04/22 00:53:20
コンストラクターとは何の為に存在するのでしょうか?
553:デフォルトの名無しさん
08/04/22 00:57:32
インスタンス生成時に処理を行いたいから
554:デフォルトの名無しさん
08/04/22 02:57:31
>>551
いちいち見ながら書いてたら時間がすぐに経ちませんか?
といっても覚えられるものでも無いでしょうけどw
俺が遅いだけだと思うけどコード書くのって時間かかるものなのかな
555:デフォルトの名無しさん
08/04/22 03:35:38
やってるうちに「この手のメソッドはこのへんのクラスにありそうだな……」で
引数の順序とかだけ確認する感じになる。慣れとセンスが大事。
556:デフォルトの名無しさん
08/04/22 14:39:57
intからshortに変換するにはどのようにしたらいいでしょうか?
int i = 5;
short s;
s = (short)i;
ではeclipseに怒られてしまいます。
557:デフォルトの名無しさん
08/04/22 14:43:59
>>556
本当に?エラーメッセージは?
558:デフォルトの名無しさん
08/04/22 14:46:51
>>557
すみません。怒られませんでした。
559:デフォルトの名無しさん
08/04/22 18:17:40
JDK 1.6
Security.getAlgorithms("SecretKey") で得られる共通鍵ファクトリの名前が "ACTORY.DES" とかに
なってて先頭の "F" が抜けてるような気がするんだけど、これは直せなくなったバグの類なのかね。
560:デフォルトの名無しさん
08/04/22 22:19:55
JEditorPane editor = new JEditorPane();
JScrollPane scroll = new JScrollPane(editor);
JTabbedPane tabbed = new JTabbedPane();
tabbed.addTab("title",scroll);
Container container = getContentPane();
container.add(scroll);
と書いた後で、editorを取得するにはどうすればよいですか。
getSelectedComponent()あたりを使ったが、editor取得まで
たどり着けません。
561:デフォルトの名無しさん
08/04/22 22:27:17
>>560
メンバフィールドで参照しとけば?
562:デフォルトの名無しさん
08/04/22 22:32:37
>>561
ありがとうございます。
確かにおっしゃる通りだと思いますが、
将来的にタブ数を増減できるようにするつもりで、
動的に扱えればと考えていました。
563:デフォルトの名無しさん
08/04/22 23:13:24
>>554
IDEがAPIドキュメントの必要な部分をポップアップしてくれる
564:デフォルトの名無しさん
08/04/22 23:38:01
テキストフィールド内に
文字が入力された場合とされなかった場合とで
処理の内容を変えたいのですが
テキストフィールド内に文字が入力されているかどうかを
判定できる方法があれば教えてください。
565:デフォルトの名無しさん
08/04/23 00:32:06
getText()
566:デフォルトの名無しさん
08/04/23 00:53:26
まあgetText()して正規表現?
567:デフォルトの名無しさん
08/04/23 00:58:52
可変長配列を使うと<identifierがありません>とエラーが出ます。なぜなんでしょうか?
class FallPane{
Vector<AbstractFallBall> balls; //エラー部分
public FallPane() { //コンストラクタ
balls = new Vector<AbstractFallBall>(); //エラー部分
}
568:デフォルトの名無しさん
08/04/23 01:28:08
エラーがでますではなく、出力されたエラーメッセージをコピペ汁
569:デフォルトの名無しさん
08/04/23 04:40:46
パッケージ名に「core」ってよく見るんだけど、どんなクラスを入れるの?
ビジネスロジックのあるクラス?なんか重要っぽいという事しかわかんね。
570:デフォルトの名無しさん
08/04/23 04:58:12
フレームワークのutilsじゃなくてcoreな部分
571:567
08/04/23 08:58:18
567です。
エラーメッセージはこうです。
Fall.java:83: <identifier> がありません。
private Vector<AbstractFallBall> balls;
------------^(この矢印は山形カギ括弧を指しています。)
Fall.java:89: '(' または '[' がありません。
balls = new Vector<AbstractFallBall>();
----------------^
公開されているサンプルプログラムをそのまま実行しても
こうなります。
なぜなのかわかりません。
java環境のバージョンは1.4.2で
pcはmacです。
572:567
08/04/23 09:01:28
>>571のエラー部分の矢印が、ずれてますが
2つとも、Vectorの次の山形カギ括弧を指しています。
573:デフォルトの名無しさん
08/04/23 09:28:51
>>571
公開してるサンプルプログラムは 1.5以上必要で、
君の jdk のバージョンが 1.4.2 だから、コンパイルできない。
574:567
08/04/23 10:09:12
VectorやArrayListなどの可変長配列は使えるんで、
オブジェクトの型を記述する<>の部分がjdk1.5じゃないとダメってことですね。
今のPCでは1.5にヴァージョンUPできないので、
その代わりとなるjdk1.4.2でも可能なコードってありますか?
<>の部分をはずして使うと
Fall.java:143: 互換性のない型
検出値 : java.lang.Object
期待値 : AbstractFallBall
AbstractFallBall ball = balls.get(i);
とエラーが出ます。
575:デフォルトの名無しさん
08/04/23 10:25:03
>>574
> AbstractFallBall ball = balls.get(i);
AbstractFallBall ball = (AbstractFallBall)balls.get(i);
みたいに、全部明示的にキャストするとか。
576:デフォルトの名無しさん
08/04/23 11:05:24
タイムゾーンの "Asia/Tokyo" みたいな 「地域/都市名」 表記って ISO かどっかで標準化されてんの? それとも Java 独自?
577:デフォルトの名無しさん
08/04/23 11:23:43
>>569
これだっ!っていうクラス
578:デフォルトの名無しさん
08/04/23 11:44:50
>>576
RFC2445、らしい。
579:567
08/04/23 15:11:58
575さん、ありがとう。
解決しました。キャストすればよかったですね。
580:デフォルトの名無しさん
08/04/23 15:16:58
キャストは明示的にやる癖つけた方がいいね
581:デフォルトの名無しさん
08/04/23 15:18:06
他人が見ることを前提に作らなきゃな
582:デフォルトの名無しさん
08/04/23 16:01:35
JavaMailでsetFlagsがサーバー側に保存されません。
(接続部分省略)
Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
//メッセージ数表示
System.out.println(folder.getMessageCount());
//適当なメッセージを取得
Message msg = folder.getMessage(2000);
System.out.println(msg.getSubject());
//フラグを変更
Flags flag = new Flags(Flags.Flag.SEEN);
msg.setFlags(flag, true);
//フラグの立っているメッセージを取得
Message[] msgs = folder.search(new FlagTerm(new Flags(Flags.Flag.SEEN), true));
for(int i=0; i<msgs.length; i++) System.out.println(msgs[i].getSubject());
//再び総数と、未読数を取得
System.out.println(folder.getMessageCount());
System.out.println(folder.getUnreadMessageCount());
folder.close(false);
store.close();
これで、実行すると未読数の数は減ります。
で、取得するメッセージを変えても、以前の物にフラグが立っていない状態です。
583:582
08/04/23 16:05:37
DELETEのフラグをたてて
folder.close(true);
にすると削除されます。
やりたいことは、メールを削除しないで、処理していないメールのみを受信することです。
プロトコルはPOP3です。
削除フラグだけたててfalseのままcloseも試したけどリセットされてる感じです。
サーバーから削除しないで、新しいメールのみと受信はどうすればいいのでしょうか?
お願いいたします。
584:582
08/04/23 17:48:08
もしかしてPOP3では不可能で
URLリンク(www.mew.org)
ここにあるように一回前の受信のUIDをサーバーと見比べて受信するのでしょうか?
上のサイトにはリストを保持、ってあるけど、最後のUIDだけあればいけそうですね。
微妙にJAVAの話題じゃなくなってきたけど・・・
「メールをサーバ側に残す」
はこんな感じで実現してるんでしょうか?
585:デフォルトの名無しさん
08/04/23 18:44:49
質問です!!!!
try{
System.out.println("文字を入力してください");
BufferedReader br = new BufferedReader(
new InputStreamReader( System.in ) );
String str = br.readLine();
System.out.println(str+"をファイルに出力します");
FileWriter fw = new FileWriter( "test.txt" );
fw.write( str, 0, str.length() );
fw.close();
}
catch( IOException e ){
System.out.println(e);
}
これで実行して文字を打ち込んでもファイルに出力されないんですがどこがおかしいですか?
586:デフォルトの名無しさん
08/04/23 18:56:53
>>585です
ちゃんと出力されてました
すいませんもう二度と書き込みませんのでどうか許してください
587:デフォルトの名無しさん
08/04/23 19:10:03
>>578
サンキュー
該当の RFC、ナナメ読みしただけではどこが該当してるんか分からんかったが
参考文献に定義ソースと思しきデータの場所見つけたので張っとくわ。
fURLリンク(elsie.nci.nih.gov)
588:デフォルトの名無しさん
08/04/23 21:04:20
Javaアプリケーション上から別のDOSで動くアプリケーションを呼び出したいのですが
どうすればよいのでしょうか?
Robotクラスでも何とかできるのですが、DOSアプリなので表示の必要は無く、
見た目上はJavaアプリケーションしか走ってない状態がいいのですが、方法がわかりません・・・。
よろしくお願いします。
589:デフォルトの名無しさん
08/04/23 21:08:40
>>588
ProcessBuilder
590:デフォルトの名無しさん
08/04/23 21:15:27
>>589
おおありがとうございます!でけますた!!
591:588
08/04/23 21:43:42
>>589
あまりにも感謝の気持ちが強いのでお礼の気持ちでうp
URLリンク(image.i-bbs.sijex.net)
URLリンク(blog67.fc2.com)
URLリンク(g003.garon.jp)
592:589
08/04/23 21:45:04
なぜ、女なんだ
593:デフォルトの名無しさん
08/04/23 21:47:00
グロ貼んな
594:デフォルトの名無しさん
08/04/23 22:39:15
うpじゃねーし
595:デフォルトの名無しさん
08/04/23 23:35:55
近所の猫も飼い主に捕れたてのネズミをプレゼントしようとしてたな
596:デフォルトの名無しさん
08/04/23 23:45:17
>>540ですけど下の様なエラーが出ます。
javax.servlet.ServletException: Processing of multipart/form-data request failed. Stream ended unexpectedly
at org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest(CommonsMultipartRequestHandler.java:194)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:405)
commons-fileupload-1.1.1.jarだったのをcommons-fileupload-1.2.1.jarに変更してみてからは上のも含め下の様なエラーが出ることもありました。
javax.servlet.ServletException: Header section has more than 10240 bytes (maybe it is not properly terminated)
at org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest(CommonsMultipartRequestHandler.java:194)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:405)
javax.servlet.ServletException: Stream ended unexpectedly
at org.apache.struts.upload.CommonsMultipartRequestHandler.handleRequest(CommonsMultipartRequestHandler.java:194)
at org.apache.struts.util.RequestUtils.populate(RequestUtils.java:405)
この状況を改善するにはどうしたらいいでしょうか・・・
597:デフォルトの名無しさん
08/04/24 00:08:02
>>586
絶対に許さない。絶対にだ。
598:デフォルトの名無しさん
08/04/24 03:40:32
>>582-584
その通り。POP3では既読/未読の区別はない。
599:デフォルトの名無しさん
08/04/24 11:10:18
wicket.ApplicationPagesがimportできないのは…なぜ!?
ちなみにwicketのversionは1.2.7です。
参考サイトはversion1.1.1を使ってるから名称が変わってるのかな?;
誰か教えてください><
600:デフォルトの名無しさん
08/04/24 11:13:56
バージョンのせいにしたいならバージョン入れなおして
試せよ
601:デフォルトの名無しさん
08/04/24 11:20:11
だってversion1.1.1が見つからなかったんだもん~♪
602:デフォルトの名無しさん
08/04/24 11:39:25
javaからMySQLに接続し、データベースを操作するプログラムを作っています。
System.out.println("商品コードを入力してください。(5文字)");
System.out.print("商品コード:");
String str=br.readLine();
このstrの頭が全角スペースや半角スペース、未入力のときに例外処理(「未入力です」と出力など・・)を行う記述を教えてください。
603:デフォルトの名無しさん
08/04/24 11:42:46
if (str.startsWith(" ") || str.startsWith(" ") || str.length() == 0) { System.out.println("未入力です"); }
604:デフォルトの名無しさん
08/04/24 11:48:44
>>603
できました!
ありがとうございます!!
605:デフォルトの名無しさん
08/04/24 12:47:55
>>603
startsWithが先頭。
ということは最後の文字を弾くには・・?
606:デフォルトの名無しさん
08/04/24 13:48:14
endsWith
607:デフォルトの名無しさん
08/04/25 10:51:20
>>602です
strにコードを入力させ、そのコードの情報を出力するプログラムなのですが
String str=br.readLine();
String sql = "select * from kadai where コード='"+str+"'";
ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
while(rs10.next()){
// コードデータを取得
String a = rs.getString("コード");
String b = rs.getString("名前");
String c = rs.getString("電話番号");
// データの表示
System.out.println("コード :"+a);
System.out.println("名前 :"+b );
System.out.println("電話番号:"+c );
}
ここで入力したコードに該当するコードがなかった場合、「コードは存在しません」と出力させる記述をお教えください。
ExcuteUpdateならintにして0か1で返ってきたのですがExcuteQueryだとできなくて・・
608:デフォルトの名無しさん
08/04/25 10:53:52
jar実行ファイルで起動するアプリを作ってるんだけど、わからない事があるので質問します。
antでコンパイルとjar作成をしてるんだけど、jarの中にLogback用設定ファイルを置きたい。
設定ファイルはクラスパスが通ってる場所に置けばいいらしいが、どこに置けばいいですか?
あるいは、MANIFEST.MFのクラスパス属性にこう書けば良いよってのがあれば教えてください。
609:デフォルトの名無しさん
08/04/25 11:15:25
>>607
先にResultSetの件数を調べて、0件なら該当無しとすればいいかと
URLリンク(www.atmarkit.co.jp)
課題乙w
610:デフォルトの名無しさん
08/04/25 11:17:34
>>607
正しいやり方というか、標準的なやり方ではないかもしれんが
int count=0;
while(rs10.next()){
// 処理...
count++;
}
if(count<1) {
System.out.println("コードは存在しません");
}
とでもしたら?
611:デフォルトの名無しさん
08/04/25 11:30:15
>>610
できた!
あ~そんな手が・・
612:デフォルトの名無しさん
08/04/25 11:36:37
>>608
普通は出来ないような気がするけど、FatJarとかなら出来るんでないかな?
613:608
08/04/25 11:44:06
>>612
なるほど、もしかしたら設定ファイルじゃなくて、jarに突っ込んだLogbackのjarが見れてないのかも知れません><
FatJar試してみます!ありがとうございました。
614:デフォルトの名無しさん
08/04/25 11:51:05
実際のところ「Write Once, Run Everywhere」ってホントなのですか?
環境依存とかないのですか?
615:デフォルトの名無しさん
08/04/25 12:00:08
PC 程度以上ならどれでも動くよう作りこむことは出来る。
ただし実行環境や DB なんかのミドルウェア依存のコード書けば依存するに決まっている。
動かねぇと言ってる奴の大概はテメェのバグとどっからが環境依存かを分かってない無知。
616:608
08/04/25 12:00:53
>>612
早速試してみたところ、いともあっさりと出来ました!
改めてありがとうございます!
617:デフォルトの名無しさん
08/04/25 12:13:03
>>614
各JVMでの、微妙な挙動の違いがトラブルの元になったりする
だから、どうしてもプラットフォームごとに動作試験をすることが欠かせない場合もある
そのことを指して(場合によっては皮肉を込めて)
Write Once, Test Anywhere
と言われることもある
618:デフォルトの名無しさん
08/04/25 13:08:49
>>615
>>617
なるほど。参考になりました。
619:デフォルトの名無しさん
08/04/25 15:36:32
テキストファイルを読み出すときに、指定した文字コードで化ける文字が含まれてたら
例外にしたいんだけどどうすればええんじゃ。
620:デフォルトの名無しさん
08/04/25 21:07:17
>>619
java.nio.charset.CharsetDecoder#onUnmappableCharacter(CodingErrorAction)
java.nio.charset.CharsetDecoder#onMalformedInput(CodingErrorAction)
621:デフォルトの名無しさん
08/04/25 23:30:29
>>619
可能です。
以上。
はい次の方。
622:デフォルトの名無しさん
08/04/25 23:49:00
SDKのインストールに関して質問させてください
SDKのインストールの途中、以下のエラーメッセージが出てしまいました
「このインストールに必要なキャビネット ファイル
'st160000.cab'は壊れているため使用できません。
ネットワークエラーまたはCD-ROMからの読み取りエラーが発生したか、
このパッケージに問題がある可能性があります」
以下のページ(英語)で同じ症状が出てるようなのですが、よくわかりませんでした…
URLリンク(forums.java.net)
行き詰まってしまいました。何かヒントを教えていただきたいです
よろしくお願いいたします
623:デフォルトの名無しさん
08/04/26 00:39:54
同じJNLPファイルをURLリンク(www.java.com)でダウンロードした実行環境で実行した結果
二台のPC中、片方だけ「could not create the java virtual machine」というエラーが出るのですが
何度か再インストールを試してみたり開発環境をつっこんでみたり、ぐぐって見たりもしたのですが
大体再インストールで直っている例が多く、具体的に何か弄ったり手動で消すような項目も見当たらず
行き詰っています。
何かしら糸口でも構わないので教えていただけないでしょうか。
624:デフォルトの名無しさん
08/04/26 00:42:15
>>622
可能ならブラウザのキャッシュを消してから、
ダウンロードし直し。
625:デフォルトの名無しさん
08/04/26 01:28:14
eclipseの参照検索のソース見たいんですが、ソースzip内のどこら辺か知ってる人いたら教えてください
出来れば主要クラス、仕組がざっくりと分かるサイトなんかも・・・
626:デフォルトの名無しさん
08/04/26 03:09:02
Javaで一般に使ってスピードが速い変数はどれですか?
intは整数のみだし doubleは64bitで大きいし
floatが適していますかね?
でもあまりfloat使ってるの見かけないような。
627:デフォルトの名無しさん
08/04/26 04:41:46
そんなの気にしない
628:デフォルトの名無しさん
08/04/26 05:29:27
>>626
実数型のfloatよりも整数型のint方が圧倒的に速い。
しかし、現実には>>627の言うとおり。
そんなのを気にするほど神経を使うのなら、
そもそもJavaを選択することが間違っていると言える。
Cかアセンブラでも使っておけ。
629:デフォルトの名無しさん
08/04/26 10:40:13
>>626
まず原則としては>>627>>628の言う通り。
あと、一般的には、CPUで直接計算可能なdoubleの方がfloatより速い。
(もちろん例外はある)
630:デフォルトの名無しさん
08/04/26 10:52:03
Intel CPU とか、小数は 80-bit で double より大きいだろ・・・。
631:デフォルトの名無しさん
08/04/26 10:56:35
>>629
float がCPUで直接計算できないとでも?
632:デフォルトの名無しさん
08/04/26 11:04:37
>>626
言語としてのJavaからはint演算とfloat演算でどっちが速いとか遅いとかは一切言えない。
本番の実行環境と実際に使用するコード(マイクロベンチではなく)で速度比較するのが一番手っ取り早い。
詳しく知りたいならJITコンパイラのコード読んでみるとか、
そこまで元気がないなら、前スレ906の
> デバッグ版のJDKだと -XX:+PrintOptoAssembly オプション付きで起動すれば
> 出力できるらしいって URLリンク(d.hatena.ne.jp) に書いてある。
でJIT後のアセンブリコード比較してみるとか。
633:デフォルトの名無しさん
08/04/26 11:12:52
みなさんいろいろなご意見ありがとう。
VBではintよりdoubleが一番速いとききました(32bitだから?)。
Cへの流用も考えているので
整数ならint、実数ならdoubleを使うことにします。
Cではfloatよりdoubleが速いんですよね。
634:デフォルトの名無しさん
08/04/26 11:33:12
VBはlongが速いだろ
635:デフォルトの名無しさん
08/04/26 11:33:48
> Cではfloatよりdoubleが速いんですよね。
そんなんCPUの世代が変わっただけで逆転したり、
コンパイラの最適化が変わっただけで逆転したりするよ。
636:デフォルトの名無しさん
08/04/26 12:55:18
使用型での2倍以下のの速度差を気にしてる初心者は
得てして100倍遅いアルゴリズムをどうどう使ったりしてるから注意
637:デフォルトの名無しさん
08/04/26 16:49:12
>>623
iTunes classpath
638:デフォルトの名無しさん
08/04/26 18:21:35
JRE5と6を両方インストールして
firefoxがJavaアプレットを実行するのは5
・・・という設定にするにはどうしたらいいですか
<JRE5>/bin/javacpl.exe でfirefoxのアプレットタグサポートをONにし
<JRE6>/bin/javacpl.exe ではOFFにする、
という方法を試みましたが、6で実行されてしまうようです
(OSはWindows Vista)
639:デフォルトの名無しさん
08/04/26 18:28:03
>>638
Javaコントロールパネル->Java->Javaアプレットのランタイム設定でできない?
640:638
08/04/26 19:03:35
>>639
その設定項目はパラメータの設定しかできないと思ってたんですが
有効/無効や優先順位も設定できたんですか?
もしそうであれば、設定方法を教えていただきたいです
それとも、パラメータでそういう設定ができるとか・・・?
641:デフォルトの名無しさん
08/04/26 19:46:02
複数のJREがインストールされてたらチェックボックスでどれかえらべるだろ。
642:デフォルトの名無しさん
08/04/26 19:56:41
32bit環境では例えばエクセルのVBAなどは常にIntegerよりはLongを使ったほうがいいってこと?
643:デフォルトの名無しさん
08/04/26 20:31:11
>>642
VBAのスレで聞け。相手してくれる暇人がいるかどうかは知らんが。
644:デフォルトの名無しさん
08/04/27 02:19:56
>>642
聞くな。測定しろ。
645:デフォルトの名無しさん
08/04/27 02:35:53
だーから分かんねーならレスするなってんだよ
646:デフォルトの名無しさん
08/04/27 11:25:47
お前が答えろ
647:デフォルトの名無しさん
08/04/27 16:13:55
double の 小数点下2桁以下を切り捨てて
String に変換するにはどうすれば良いですか?
648:デフォルトの名無しさん
08/04/27 16:16:23
NumberFormat
649:デフォルトの名無しさん
08/04/27 19:58:03
そういえば昔初心者禁止を銘打った上級者スレがあった希ガス
650:デフォルトの名無しさん
08/04/27 20:00:44
>>46
> 昔々、時は J2EE やら C#/.NET の登場やらでム板も大変盛り上がっていた頃のお話。
> それまで質問者の多数を占めていた 「自分で分析してキーワードで答えにたどり着ける」 層に
> 代わって 「動きませんできません」 系のニューエイジ層が増え始めた (ようは今の質問レベルに落ちた)。
> 業を煮やした誰かが 「初心者無視スレ」 を立ち上げたが程なく過疎。以後本スレの避難所として
> 細々と 1~2 年 (くらいだったか?) 続いて終幕。ちょうど死滅スレ乱立時代の頃のお話。
やばい。懐かしすぎる。死滅スレ乱立懐かしい。DocletやEJBスレもあって懐かしかったあの頃w
あの頃は凄かった。あの頃の彼らをたまに見かけるのが笑える。
いまだに同じ文体でマ板のJava系スレでJava叩いて.NET奨めるレスを見かけることがあるw
651:638
08/04/28 00:10:38
>>641
ウィンドウ内のどこにもチェックボックスが見当たりません・・・
解決の糸口が見えてきたような気がするのでいろいろ試してみます
ありがとうございます
652:デフォルトの名無しさん
08/04/28 04:34:29
>>648
ありがとうございます
653:623
08/04/28 14:55:15
色々とアンインストールしたりしながら試してみたところ
カスペルスキーをアンインストールしたら
could not create the java virtual machineが出なくなりました。
保護の一時停止しても駄目でアンインストールすると出なくなるんですが
もうセキ板行ったほうがいい気もするんですが何かご存知の方居ましたら教えてください
654:デフォルトの名無しさん
08/04/28 17:33:30
中小企業勤務の者なのですが、ここで質問をさせてください。
会社の簡単な経理システムをJavaで組もうと思っているのですが、
実際にアプリケーションとして使う場合、どのような形で配布をすれば良いのでしょうか?
会社のシステムは、
WindowsXP機 2台
Windows2003 Server機 1台
WindowsVista機 4台
MacOS X Tiger機 2台
MacOS X Leopard機 3台
です。それぞれで使えるようにとJavaで組もうと思っています。
655:デフォルトの名無しさん
08/04/28 17:36:29
ダブルクリッカブルjarで十分
656:デフォルトの名無しさん
08/04/28 17:37:22
アプレット
657:デフォルトの名無しさん
08/04/28 17:43:44
JavaWebStart
658:デフォルトの名無しさん
08/04/28 17:44:42
レスありがとうございます。
とりあえず組んでみて、jarにするかアプレットにするかアンケートをとってみます。
659:デフォルトの名無しさん
08/04/28 17:52:32
JavaでのGUI開発にはNetBeansだな
660:デフォルトの名無しさん
08/04/28 18:10:04
NetBeans使いってなんでEclipseに敵対意識持ってるの?
661:デフォルトの名無しさん
08/04/28 18:18:28
>>658
鯖使えるならアプレットよりJavaWebStartの方が良いよ。
てかアプレットはやめときな。
662:デフォルトの名無しさん
08/04/28 18:22:20
>>658
jar→(利点)普通のアプリとして組める。(欠点)配布やバージョンアップが面倒。
アプレット→(利点)配布やバージョンアップが楽。(欠点)アプレット特有の制限(ファイルアクセスとか)が付く。
JavaWebStart→(利点)普通のアプリとして組める。配布やバージョンアップが楽。(欠点)情報が少な過ぎ。
663:デフォルトの名無しさん
08/04/28 18:28:19
>>660
GUIアプリを作るならNetBeansの方が便利だからじゃ?
664:デフォルトの名無しさん
08/04/28 18:46:16
>(欠点)情報が少な過ぎ。
JDKのjavadocにあるドキュメントで十分だと思うんだけど、他になんかいる?
665:デフォルトの名無しさん
08/04/28 18:52:57
654ですが、再び質問です。
Javaのアプリケーションで入力した内容を、ワード形式、エクセル形式で出力をし、その中身を
URLリンク(www.legal.co.jp) このような感じにする事は可能なのでしょうか?
666:デフォルトの名無しさん
08/04/28 18:54:51
WordprocessingMLとSpreedsheetMLを利用すればおk。
667:デフォルトの名無しさん
08/04/28 18:55:10
>>665
ブラクラ
668:デフォルトの名無しさん
08/04/28 18:59:02
>>666
ありがとうございます。調べてみます。
669:デフォルトの名無しさん
08/04/28 19:02:23
Apache POIでもできるね
670:デフォルトの名無しさん
08/04/28 19:45:06
Open Office
671:デフォルトの名無しさん
08/04/28 23:36:46
GUIのプログラム作ってて
別クラスにリスナー登録して、イベントを処理させてるんだけど
ついついメインのウィンドウやらコンポーネントやらを
やたらとstatic化してしまうんだけど、なんかすっきりしない。。
GUIのデザパタとか、設計のしかたってみんなどうしてるの?
672:デフォルトの名無しさん
08/04/28 23:43:27
それぞれが独立して使えるように作る
673:622
08/04/28 23:51:59
>>624
ブラウザのキャッシュを消してからダウンロードし直してみましたが
PCの調子自体が悪くうまくいきませんでした
ですが別のPCを借りられたので、そちらにインストールできました
これから少しずつ勉強します
どうもありがとうございました
674:デフォルトの名無しさん
08/04/29 01:10:23
>>671
メインは、イベントソースとなる子を作る際に自分自身への参照を渡しておく。
new Clild(this);
コンポーネントは、それを受け取ってリスナに渡し、このリスナを登録する。
public Child(Parent parent){
Listner listner = new Listner(parent)
addListner(listner);
}
自分はいつもこんな感じだけど、もっと良い方法があるような気がする。
675:デフォルトの名無しさん
08/04/29 10:44:42
子は親に依存しないように作るのが理想
676:デフォルトの名無しさん
08/04/29 11:22:36
>>674
this(親)そのものを渡すのではなく、Observerとして渡す
無理に親からObserverを引き剥がしても、無駄に複雑になるだけだから親の実装インターフェイスとしてObserverを定義するのが一般的。
そうすることで、子の親への依存関係が薄くなる。
677:デフォルトの名無しさん
08/04/29 11:48:18
Buttonが特定の親からしか使えなかったらおかしいでしょ
それと一緒
678:デフォルトの名無しさん
08/04/29 12:09:17
来月からPGとして入社予定で一からjavaを勉強しているものです。
とりあえず基礎の基礎からはじめてみたのですが、
文章の出力のところでわからないことがあるので質問させていただきます。
class Char2 {
public static void main(String[] args) {
char a = 'み';
char b = 'ん';
char c = 'な';
String d = "のピースイッツオーライ!";
int e = 3;
System.out.println(a);
System.out.println(a + b + c + d);
System.out.print(a + b + c + e + "つ食べる。");
}
}
こういうプログラムを組んだのですが、
出力結果が、
c:\java>java Char2
み
37244のピースイッツオーライ!
37247つ食べる。
c:\java>
こうなってしまいます。
なぜcharで宣言した変数が結合させると数値になってしまうのでしょうか?
よろしくお願いします。
679:デフォルトの名無しさん
08/04/29 12:14:27
37244と37247の差にわろたw
680:デフォルトの名無しさん
08/04/29 12:43:49
吹いたw
charじゃなくてStringを使えばいい
'な'じゃなくて"な"
681:674
08/04/29 12:45:37
>>676
参考にしますアリガト
682:デフォルトの名無しさん
08/04/29 12:47:55
charは文字コードを表せる範囲の「整数」を格納する型です。
(現実には1文字1charの関係は破綻してるのだけど)
整数としては
a = 12415
b = 12435
c = 12394
という量になります。
文字列なら、1文字であっても
String a = "み";
のように文字列で扱う方が自然なことが多いです。
System.out.printlnは
System.out.println(char)とSystem.out.println(String)(他にも)があって
前者は受け取ったcharの表す文字をプリントするので、aだけを渡した
ものは文字として表示できてますが、それ以外は a + b ...などが整数
の加算として行われてしまうので、期待通りになってないわけです。
683:デフォルトの名無しさん
08/04/29 12:48:57
>677
あるボタンは特定の親に依存するのは別にありかと思う。
だが、親のある機能を実行するためのボタン(やメニュー)が複数ある事はよくある。
なので間接的に親を参照するってのが妥当。
684:デフォルトの名無しさん
08/04/29 12:52:05
a + b + c + dはこうなる
int tmp = 'み'; // tmp == 12415
tmp += 'ん'; // tmp == 24850
tmp += 'な'; // tmp == 37244
String tmp2 = new StringBuilder().append(tmp).append("のピースイッツおーらい!").toString();
System.out.println(tmp2);
こうすればコンパイラを騙せる
"" + a + b + c + d
685:デフォルトの名無しさん
08/04/29 12:54:33
>678
ポイントはprintメソッドの引数が色々(int char String)あって、演算子(+)の優先順位とかから選択されているってこと。
cahrを+でつなげると整数として加算されるけど、Stringと+でつなげた場合は文字列として結合される。
基本的には考えなければどの型になるか解らないような書き方をする方がよくないので、680が正解。
でも、学習の段階ではある程度の仕組みを覚えなければならないのも事実やね。
結論だけ言えば、
System.out.println(a); は aをcharとして認識。
System.out.println(a + b + c + d); は加算した整数として認識。
直、(char)(a + b + c + d) だと話も変わる
System.out.print(a + b + c + e + "つ食べる。");
これは、(a + b + c + e) + "つ食べる。" と考える。
686:デフォルトの名無しさん
08/04/29 13:05:09
>>680,682,684,685
皆さんレスありがとうございます。
ちょっとまだ学習していないの単語が出てきていて完全には理解できていないのですが、
・charで変数に格納されるのは、文字を表す「数値である」。
・計算した場合それは数値とみなされ、以後文字ではなくなる。(変数の中身は文字を表す機能は持ったまま)
・そのまま出力した場合は文字になる。
・ややこしいので一文字でも基本的にはStringを使ったほうがいい。
と言うことでよろしいのでしょうか?
687:デフォルトの名無しさん
08/04/29 13:20:18
>charで変数に格納されるのは、文字を表す「数値である」。
文字ではあるが、intの下位互換として振舞うので注意しなくてはならない。
>計算した場合それは数値とみなされ、以後文字ではなくなる。(変数の中身は文字を表す機能は持ったまま)
計算した場合は数値とみなされるが、文字となるかどうかはその結果を格納する変数次第。
例えば、
int r = a + b + c;
とすれば整数だし、
char r = a + b + c;
とすれば文字(ただし、このままだとコンパイルエラー)
>ややこしいので一文字でも基本的にはStringを使ったほうがいい。
こればかりはケースバイケースだが、混乱するうちはそう思ってOK
688:デフォルトの名無しさん
08/04/29 13:24:36
・charで変数に格納されるのは、文字を表す「数値である」。
半分正解。このあたりは色々いじくってみないと分からないと思う。
・計算した場合それは数値とみなされ、以後文字ではなくなる。
No。計算しようがしまいが、数値には変わりない。
だから、文字にint型の定数を加算して、文字に戻すということもできる(やりにくいような仕組みにはなっているけど)。
余談だが、この場合「計算」というより、「加算」とか「算術演算」という方がいい。計算は意味が色々あるから。
・(変数の中身は文字を表す機能は持ったまま)
No。byte、short、charの加算はint型に直されてから加算される。これはJavaの仕様。
・そのまま出力した場合は文字になる。
Yes
・ややこしいので一文字でも基本的にはStringを使ったほうがいい。
結論としてはYes
ややこしいかどうかではなく、状況に応じて「み」「ん」「な」などを文字として扱うか、文字列として扱うかを、プログラマが判断して選ぶ。
689:デフォルトの名無しさん
08/04/29 13:30:06
さすが簡単な質問には親切だな>ぽまいら
690:デフォルトの名無しさん
08/04/29 13:33:24
だって久し振りの休日なんだもん
691:デフォルトの名無しさん
08/04/29 13:35:13
>>687,688
ありがとうございます。
なんとなく感覚でですが理解できました。
とりあえずこのまま進めてみます。
今読んでるJava絵本を早く消化したいので(笑)
しかしやっぱり中々奥が深いですね、、、
PC用のプログラミングは初めてなので中々難しいです。
またわからないことがあったら聞きに来るかもしれません。
そのときはまたよろしくお願いします。
692:デフォルトの名無しさん
08/04/29 13:39:31
難しい質問はたいていの場合情報が少なくて回答しようがないか、長くなるから回答するのがタルイんだよ。
693:デフォルトの名無しさん
08/04/29 14:46:29
時刻ではなく、時間を保持するクラスって何を使えばいいんでしょうか?
694:デフォルトの名無しさん
08/04/29 14:50:36
> 時刻ではなく、時間を保持する
?
695:デフォルトの名無しさん
08/04/29 14:54:10
longでミリ秒を保持するってことで回答になっているのか?
696:デフォルトの名無しさん
08/04/29 15:01:59
>>632
debug版JDK(Windows x86 1.6.0_10)落としたけど、
Could not create the Java virtual machine.
Unrecognized VM option '+PrintOptoAssembly'
って出る。x86じゃ無理?ボスケテ
697:693
08/04/29 15:14:01
動画の時間のようなmm:ssってやつを手軽に扱いたいのです・・・
698:デフォルトの名無しさん
08/04/29 15:15:58
>>675
既婚者のコメントみたいで意味深だなぁw
699:デフォルトの名無しさん
08/04/29 15:19:44
管理したい一番細かい単位(秒とか)で持って、
表示にSimpeDateFormatを使う。
700:693
08/04/29 15:21:16
>>699
それでやってみます。
701:デフォルトの名無しさん
08/04/29 15:22:13
あ、もしかしてSimpleDateFormatってDateしか整形できない??
702:デフォルトの名無しさん
08/04/29 15:25:28
ミリ秒を渡せばいいぽいな。
703:デフォルトの名無しさん
08/04/29 15:30:02
>>696
-server ついてないとか?
704:696
08/04/29 15:55:42
単純に落とすファイルまちがえてたorz
betaじゃだめなのか
705:デフォルトの名無しさん
08/04/29 21:33:30
>>671
こんなの見つけた。
URLリンク(oshiete1.goo.ne.jp)
706:671
08/04/29 23:50:05
Mediatorパターンっていいな
作り変えてみるわ
みんなありがと
707:デフォルトの名無しさん
08/04/30 17:35:05
C#のGraphics.MesureStringに相当するコードってJavaにありますか?
あれば教えてください。
708:デフォルトの名無しさん
08/04/30 17:45:54
FontMetrics のこと?
709:707
08/04/30 17:56:02
FontMetricsで計れました。ありがとうございます。
710:デフォルトの名無しさん
08/05/01 00:37:18
jdkってzipで配布してないの?
sunのサイト見たけどexeしか見つけられなかった
711:デフォルトの名無しさん
08/05/01 00:57:37
string k = "00" + Integer.toString( i );
eclipseで開発しておりまして、上記のように書き文字列の頭に00を付け足す事は
成功しましたが、空白を付け足すことができません
string k = " " + Integer.toString( i );
こう書くと、出力される文字列に空白のスペースが付与されないのですが
どうすれば解決しますか?
712:デフォルトの名無しさん
08/05/01 01:03:21
付くだろ糞ヴォケ
713:デフォルトの名無しさん
08/05/01 01:35:51
>>711
まさか、HTMLでやってて、ブラウザが空白を省略したなんてオチじゃないよね。
714:711
08/05/01 02:01:13
>>713
そのまさか、かもしれない。今やってるのJSPだし。
<%@ page trimDirectiveWhitespaces="true" %>とかいじってたよorz...
715:711
08/05/01 02:04:59
<pre></pre>のタグで挟んだら思い通りに出来ました。
解決までに4時間\(^o^)/
716:デフォルトの名無しさん
08/05/01 02:08:46
回線切って首つって死ねば良いと思うよ。
717:デフォルトの名無しさん
08/05/01 12:00:14
誰か質問に答えてください
クラスの中のstaticで定義された変数って
Cでいうグローバル変数じゃない?
Cではさんざんグローバル変数嫌われてたけど、
何でJAVAでは認められてるの?
718:717
08/05/01 12:00:41
すみません、追加です
お願いします、誰か教えてください
719:デフォルトの名無しさん
08/05/01 12:08:21
static変数を使うか使わないかは自由。
当然使わない方が好ましいけど、final として定数のように使うことは便利だから用意されている。
720:デフォルトの名無しさん
08/05/01 12:10:42
>>719
なるほど、ありがとうございます
721:デフォルトの名無しさん
08/05/01 12:10:59
もちろんpublic staticな変数はグローバル変数的な使い方もできる
一般的に乱用は好ましくない
ただ例えばprivateで修飾すればアクセスを制限できる
getter、setterメソッドを追加してやればアクセスを制御できる
こういう点で単なるグローバル変数とは違う
722:デフォルトの名無しさん
08/05/01 12:12:25
>>721
ありがとうございます
723:デフォルトの名無しさん
08/05/01 12:33:01
クラスファイルが大きくなってきて
ガベージコレクトか最適化か分からないけどカクカクするようになってきました。
そこでクラスファイル中で初期化だけに使う関数を消したいんだけど無理?
ゲームの実行中は初期化に使う関数をガベージコレクトの対象から外したいのです。
724:デフォルトの名無しさん
08/05/01 12:33:58
メソッドはGCの対象にはならん。
クラスを分割して小さくしろ
725:デフォルトの名無しさん
08/05/01 13:34:22
クラスを分割してもクラスローダを分割しないと回収されないよ
でも効果は薄そうな気がする
とりあえず本当にGCが原因なのか確認しる
-verbose:gc オプション付けて実行すればログが出るから
jconsole を使ってもいいし
726:デフォルトの名無しさん
08/05/01 14:55:22
DatagramPacket に設定できるデータの最大サイズってどこでわかるナリか?
727:デフォルトの名無しさん
08/05/01 15:07:38
どっちかといえばNICとかOS側の制約な気がする
728:デフォルトの名無しさん
08/05/01 15:32:10
それどっかから取れないナリか? ネイティブでもペイロード長分からないんだっけ?
729:デフォルトの名無しさん
08/05/01 15:41:21
jspでフォームに入力されたメールアドレスが正しく無い場合
入力欄の下に”メールアドレスが正しくありません”と表示させたいのですが
どのように実装するのが良いでしょうか?
似たページを複数作るのは手間が掛かりすぎます。
730:デフォルトの名無しさん
08/05/01 15:45:41
JSTL でも使え
731:デフォルトの名無しさん
08/05/01 16:01:00
>>728
取り方はわかんないなぁ。
どうせイーサだし、1500以下じゃだめなんかな?
PPPoEとか考えてるともっと小さくないとだめだろうけど。
>>729
JavaScriptでチェックしたら?
732:デフォルトの名無しさん
08/05/01 20:13:26
Jad と連携させて .class のソースビューワみたいなのを作ってるんですが
そもそも、.NET における Reflector みたいなソフトって
Java にはあるんでしょうか?
よろしくお願いします
733:デフォルトの名無しさん
08/05/01 20:25:49
Refactorってのは知らんけど、あんたさんが作っているのはJadclipseってEclipseプラグインであるぞ
734:デフォルトの名無しさん
08/05/01 20:39:54
Java Native Interfaceはこのスレで質問しても大丈夫ですか?
jchar型の変数にunicodeを代入したいんですがどうしても方法がわかりませんでした。
char型→jchar型の変換は見つけたのですが、char型[]をjchar型にする方法が知りたいです。
8bit(aなど)のものは問題ないのですが16bit("あ"など)がどうしても格納できません。
java神の降臨を願います。
735:デフォルトの名無しさん
08/05/01 20:51:15
めんどくせーので Java 側で byte[] ⇔ char[] 変換メソッド作ってそれを JNI から呼んでる。
736:デフォルトの名無しさん
08/05/01 23:49:04
メソッドの定義でこのようなのがあったのですが
public static <T extends Comparable<T>> void sort(List<T> list)
<T extends Comparable<T>> の部分がよくわかりません…。
この部分では何がどう定義されているのでしょうか?
(T というクラスが Comparable<T> を継承してる???)
Java Generics関連らしいのですが
単純に文法的な記述の意味がわからず困っています
737:デフォルトの名無しさん
08/05/02 00:13:35
> (T というクラスが Comparable<T> を継承してる???)
そんな感じ。
738:デフォルトの名無しさん
08/05/02 00:17:02
『TってのはComparable<T>を実装したTだ』って宣言
739:デフォルトの名無しさん
08/05/02 00:20:52
String extends Comparable<String>とかな。
genericsの導入でComparable#compareToなんかもObjectではなく
特定の型を取れるようになったためにこうなる。
740:デフォルトの名無しさん
08/05/02 00:21:28
implementsですた。
741:デフォルトの名無しさん
08/05/02 01:08:33
iアプリを勉強しようと思うけどどれをDLすればいいですか?
URLリンク(www.nttdocomo.co.jp)
あとこれもどれなのかわかりません。
URLリンク(www.eclipse.org)
742:736
08/05/02 01:10:34
>>737-740
レスありがとうございます。
まだわからない所があるので、もう少し相手してもらえると助かります。
ドキュメントによると Comparable は インターフェースですよね。
インターフェースは継承ではなく実装するものだと理解してましたが
この場合はなぜ継承されているんでしょうか?
743:デフォルトの名無しさん
08/05/02 01:26:39
インターフェースも継承できる。
使いたいなら実装する必要があるだけ。
744:デフォルトの名無しさん
08/05/02 01:27:21
補足 この場合の使うというのはインスタンスを作るということに近い。
745:736
08/05/02 02:28:32
>>743-744
う~ん、よりわからなくなってきました。(´~` ;)
もう一度インターフェースについて勉強しなおしてきます
746:デフォルトの名無しさん
08/05/02 02:32:18
>>733
レスありがとうございます
Jadclipseを実際に使用したところ
自分が欲しい機能を概ね満たしていたので良かったです
ありがとうございます
747:デフォルトの名無しさん
08/05/02 08:58:45
Servletの話で恐縮ですが
<input type="text" name="group[1].line[10].name" value="hoge">
といったように名前のついたパラメータをサーブレット側で
取得しているのですが現在は1と10のところをループカウンタで
まわして取得しているのですがあまり処理速くありません。
美しくそして速く処理できるアルゴリズムというか方法は
ありませんでしょうか?
748:デフォルトの名無しさん
08/05/02 11:46:07
>>742
>インターフェースは継承ではなく実装するものだと理解してましたが
インターフェースを継承したインターフェースを作ることができるよ
public interface Foo extends Comparable<Foo> {
...
}
749:デフォルトの名無しさん
08/05/02 11:50:08
>>742
extends と implements を特に区別する意味がないっつーか。
T がクラスなのかインターフェイスなのかはわからんし。
750:デフォルトの名無しさん
08/05/02 11:59:26
>>747
なにをどうすると、処理が速くないんだ?
ループさせるのが普通だろ
751:デフォルトの名無しさん
08/05/02 13:50:11
配列を書くとき、
A[] a=A[10];
A a[]=A[10];
文法間違ってるかもしれないけど、
四角の場所の違いはどのような考えがあるんですか?
752:デフォルトの名無しさん
08/05/02 13:56:36
C 風かそうでないか
753:デフォルトの名無しさん
08/05/02 14:02:12
A[] a → Java スタイル
A a[] → C/C++ スタイル
A []a → 変態
754:デフォルトの名無しさん
08/05/02 19:56:39
SimpleDateFormat がうまくいきません。
SimpleDateFormat sdf = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
sdf.parse("Wed, 30 Apr 2008 13:16:59 +0900");
これでうまくいきそうなんですけど
java.text.ParseException: Unparseable date: "Wed, 30 Apr 2008 13:16:59 +0900"
うまくいきません。
どこが間違ってるのでしょうか?お願いいたします。
755:734
08/05/02 20:03:25
>>735
どしてもC側で処理を完結させたいのです。
仕方なくwindows.hを使ったSHIFT-JIS→UNICODE変換を行うことにしたのですが。
UNIXではwindows.hが使えないので困っています。
iconvを使った変換方法があるらしいのですが、iconvってUNIXのコマンドですよね。
C言語内で使用する参考サイトなど教えていただけないでしょうか。
756:デフォルトの名無しさん
08/05/02 20:12:13
>>754
そのままだと解析のロケールが日本なのでコンストラクタかなんかで Locale.US あたりを設定する。
>>755
プリプロセッサで差し替えるなりモジュール化設計するなりしときゃいいじゃん。
757:754
08/05/02 21:37:29
>>756
サンクス!
うまくいきました。
758:デフォルトの名無しさん
08/05/03 01:19:50
JAVA基礎の本を一通り終え、次のステップに移りたいと思っています。
どんなことを勉強したらいいでしょうか?おすすめを教えてください。
例;GUIアプリ、JSP、サーブレットとか
759:デフォルトの名無しさん
08/05/03 01:27:08
自分が欲しいものを作る。
760:デフォルトの名無しさん
08/05/03 02:40:35
コンポーネントにフォーカスを設定するのってどうすればいいんでしょうか?
どこかのサイトでみたのですが、
// TextBox1 にフォーカスを設定する
this.textBox1.Focus();
// Button1 にフォーカスを設定して、成功した場合はその旨を表示する
if (this.button1.Focus()) {
MessageBox.Show("Button1 がフォーカスの取得に成功しました");
}
これってあってますかね?このとおりやってみてもエラーなんです...
761:デフォルトの名無しさん
08/05/03 03:04:40
それなんていう言語?
762:デフォルトの名無しさん
08/05/03 03:07:37
>>760 はスレタイ 100 回読み直して腹を切って死ぬべき
763:デフォルトの名無しさん
08/05/03 03:07:56
ん~javaって書いてあったんですけどやっぱ間違いですよね。。。
あの、、どなたかやり方教えていただけませんでしょうか?
764:デフォルトの名無しさん
08/05/03 03:12:38
MessageBoxつー名前が出てくる時点でMSの言語っぽい気配が濃厚なので、
たぶん.Netの何かじゃない?
765:デフォルトの名無しさん
08/05/03 03:17:04
とりあえずjava.awt.Component#requestFocusとisFocusOwnerを調べよ。
766:デフォルトの名無しさん
08/05/03 03:17:08
もしかしてJ#とか?
767:デフォルトの名無しさん
08/05/03 04:07:25
同じような質問なんですが、Enterキーを押したときに
そのフォームに記入されている値をチェックし、
次のフォームに移動(TABを押したように)したいんですがどうやればいいんでしょうか?
768:デフォルトの名無しさん
08/05/03 04:15:30
Web 作成か WebProg 板逝け
769:767
08/05/03 04:19:44
transferFocusでできました。すいませんありがとうございました。
770:デフォルトの名無しさん
08/05/03 04:24:28
3次元ベクトルを扱いたいのですが、Vector3Dクラスですと値がintのみになってしまいます
doubleも扱える3次元ベクトルクラスは無いのでしょうか?
771:デフォルトの名無しさん
08/05/03 09:41:24
>>770
org.apache.commons.math.geometry.Vector3D でも使えば?
772:デフォルトの名無しさん
08/05/03 11:57:36
Java3Dのjavax.vecmath.Vector3fやVector3dを使えばいいはずだが、
Vector3Dとは何ぞや。
773:デフォルトの名無しさん
08/05/03 12:52:31
>>771
>>772
javax.vecmath.Vector3dで目的のものが出来ました。
私が見ていたVector3Dはnttdocomoの特殊なものだったようです。
774:デフォルトの名無しさん
08/05/03 13:14:16
NetBeansで.jarファイル(Javaアプリケーション実行ファイル)として出力するにはどうすれば良いのでしょうか?
775:デフォルトの名無しさん
08/05/03 14:54:02
>>774
NetBeansスレへ
776:デフォルトの名無しさん
08/05/03 14:56:19
URLリンク(d.hatena.ne.jp)
こういうことになりかねますか?
777:デフォルトの名無しさん
08/05/03 15:25:34
はじめまして。
自宅にネットがつながっていないのですが、javaがつかいたいんです。
ネットカフェに来てUSBにダウンロードをして自宅で使用したいのですが、やり方がわかりません。
どなたか教えていただけませんか?
778:デフォルトの名無しさん
08/05/03 15:45:17
大嘘つきはふしあなしてからにしろ
779:デフォルトの名無しさん
08/05/03 16:19:13
ネカフェに1日行かなければ1ヶ月ネットが使えるよw
780:デフォルトの名無しさん
08/05/03 16:48:24
おまいら ADSL すらまだ使えない田舎や離島のことも配慮しろよ。
781:デフォルトの名無しさん
08/05/03 16:53:04
そんな田舎にはネカフェなんかないだろ
782:デフォルトの名無しさん
08/05/03 16:57:08
そこまで田舎じゃなくてもブロードバンドが普及しない離れ小島状態はけっこうある。
そうかと思えば基地局遠すぎて利得損失が大きいからADSLはダメで
いきなり光が来ることもある。
783:デフォルトの名無しさん
08/05/03 17:01:11
街まで出てネカフェという状況も想像できないゆとり
784:デフォルトの名無しさん
08/05/03 17:37:06
>>780,782,783
だったら777に手取り足取り教えてやれよ
785:デフォルトの名無しさん
08/05/03 17:46:52
今JAVAの勉強中で置換をやっているんですが、先頭の文字だけ置換するのはどうやったらいいのでしょうか。
charAt(0)で取得すると変数は"先頭の文字"としてじゃなくて1つの文字とみなされ他の文字まで置換されて困っています。
786:デフォルトの名無しさん
08/05/03 18:13:55
ゆとりの逆切れ炸裂
787:デフォルトの名無しさん
08/05/03 18:16:47
意味不明
先頭文字置換なら、charAtで取得して、replaceFirstでOK
もしくは、他の置換とかもあることが多いので、StringBuilderに格納してすべての置換処理を行い、toStringで置換後のStringを取得する。
StringBuilderの方が、文字列操作のクラスだけあって、色々やりやすいメソッドが多い
788:デフォルトの名無しさん
08/05/03 18:20:58
>>785
String s = "hoge";
t = "m" + s.substring(1);
とか
u = s.replaceFirst(".", "m");
とか
789:デフォルトの名無しさん
08/05/03 19:16:29
50枚ぐらいのJPanel(その上にも色々なコンポーネントを乗せて10)
見たのですが、CardLayoutで切り替えしているのですがどうも重たいです。
このぐらいの量だとベースのパネルにJPanel をくっつけて削除
した方がいいのですかね?その時に気をつけなければならないことは何ですか?
教えてください。宜しくお願いします。
790:デフォルトの名無しさん
08/05/03 19:22:19
CardLayoutで50枚ってユーザは全部使うの?
使用頻度の低いPanelは開かれたときに初期化するなど工夫すればいいと思う。
そもそも、CardLayoutを勘違いして使っていると思うぞ。
例えばRPGでオープニング画面とフィールド画面と戦闘画面と町の画面をCardLayoutで切り替えるとかやっているんじゃね?
791:デフォルトの名無しさん
08/05/03 19:31:13
>>790
どうもです。
作成して初期化するっていう感じでいいですかね?
作成するときにどれだけかかるかにもよりますが・・・
一応50枚のパネルは共通のインターフェース使っているので、
よく使う物は最初にロードしておいて定数ぽく使って、後は生成するというパターンが
いいですかね?baseのパネルから貼り付けたりremoveしたりでOKですかね?
ちょっと勢い余ってかなりの量のコードを組んでしまったので・・・Javaでこれだけ組むのは
初めてです。
なんだかグラフィックのリソースを食いまくっていて他に影響が出そうです
792:デフォルトの名無しさん
08/05/03 19:41:14
Java以前に、50枚切り替えとか常識的に考えて設計がおかしいだろ
どういう手段を実現したいのかではなくて、どういう目的を実現したいかを説明してみ
793:デフォルトの名無しさん
08/05/03 19:45:10
業務アプリとか作ったことないのか…
794:790
08/05/03 19:45:29
>>791
作成して初期化するって意味が解らん
新しい画面を表示するときにnewした所で一瞬
792も言っているが、まずは何をしたいかを説明した方がいい
795:デフォルトの名無しさん
08/05/03 19:46:17
>>787>>788
有難うございました。本を見ながらなんとか出来ました。結城さんもうすこし分かりやすく書いてよ・・
StringBuilderとかまだ分からない言葉もありましたが助かりました。
796:デフォルトの名無しさん
08/05/03 19:53:13
>>792
詳しいことは省きますがあるアプリケーションを作っていて本当に様々な
操作をするのに50枚いるのですが、メニュー画面から親JPanelは50枚以上かな・・・
その上にももちろんJPanel載っています。そしてメニュー画面のボタンを押すと切り替えていっています。
そしてデータなどの入力・編集・印刷処理などをさせています。今現実的にうまくは動いているのですが、
ただ重たくて・・・できるだけ簡単に改造できればと思っています。
プログラムをロードするときに全部作っていてCardLayoutでばんばん貼り付けていました。
それをmediatorパターンで中央管理していたのですが・・・おそらくそこでJPanelを生成するクラスを作って
管理すればいいですかね?
797:デフォルトの名無しさん
08/05/03 19:58:27
>>793
その通りですw
言語処理系でプログラムをやっていたんですが急に業務用のアプリを速攻で作りましたw
Windowを使ってプログラムを書くのは初めてです。
>>794
インスタンスを作るという意味ですinit()やexit()をcallしています。
インスタンスを作ってあるものを。今はCardLayoutで切り替えて共通のインターフェースでinit()で
データの初期化やロードをしたりexit()メソッドを呼んだりしています。
798:デフォルトの名無しさん
08/05/03 20:55:24
>>793
確かに業務アプリには糞設計のGUIが散見されるな
799:デフォルトの名無しさん
08/05/03 20:56:32
m9(^Д^)
800:デフォルトの名無しさん
08/05/03 20:59:10
>>796
重くなっている原因がJPanelの数って話は推測ですか、実測した結果ですか?
また、起動パラメータやJavaのバージョンをあげるなど、ソースに手を入れずに出来る対策はされましたか?
ちなみにSwingであれば、大雑把に1.4から5.0にすると2倍、5.0から6にすると1.5倍くらいのパフォーマンスアップが見込めます。
起動時のヒープ確保量のデフォルトも大きくなっています。
801:デフォルトの名無しさん
08/05/03 22:09:01
>>800
どうもです。
残念ながら推測です。ただグラフィックの資源を食いつぶしているのではないかと
感覚的にしかつかんでいません。今5.0 を使っていますが、6.0にするとそれだけの
パフォーマンスがアップするんですか・・・ちょっと考えて見ます。
実行時のパラメータはメモリ関係の方はかなりあげています。
もうかなりの人間が使っているのでソースはいじりたくないですからね。
何せ、今回GUIでWindow自体の開発は初めてでデザインパターンやJavaの本を短期間で
読みあさりどんどん書いていってしまったのでここに相談させていただきました
802:デフォルトの名無しさん
08/05/03 22:10:10
>>798
質問している人間ではなく50枚も作るのかと言っている人間じゃないのか(笑)
803:デフォルトの名無しさん
08/05/03 22:19:58
教えてください、今ホームページを作っていてHTMLのsubmitボタンを押したときの
時間を取得するのは可能ですか?
昔本呼んだswingかなんかの処理ではたしかイベント処理があったと思うんが
HTMLのボタンでもイベント処理とかできるんですか?
初心者なんで可笑しなこと聞いてたらすみません
804:デフォルトの名無しさん
08/05/03 22:22:49
Javaは関係なさそうな・・・
フォームとJavaScriptでいけるんじゃね?
805:デフォルトの名無しさん
08/05/03 23:11:19
>>804
すいません、今Javaを習っていて
web3構築を使ってホームページを提出しなきゃいけなくて
どーしても押された時間によって処理したいことがあって
ちなみにJavaScriptはまったく分かりません
swingもまだ習ってないんですけど
たしか昔本で読んだことがあって
806:デフォルトの名無しさん
08/05/03 23:14:20
>>805
Submitを押された時間ではなくて、Servletでリクエストを処理した時の時間ではダメなのか?
多少の誤差は出るが、十分な気がするけど。
むしろ、クライアント側の時刻なんて各マシンの時刻だから信用できるものでもないし。
807:デフォルトの名無しさん
08/05/03 23:14:33
よくわからんけど課題って習ったことを使えばできることなんじゃないの?
808:デフォルトの名無しさん
08/05/04 00:15:23
>>806
>Servletでリクエストを処理した時の時間ではダメなのか?
そういう方法もあるんですね、十分だと思います
ていうかDateクラスで得られる時間って
自分のパソコンに設定されている時間だってことに気付かされました
ありがとうございました
>>807
ショッピングサイトならなんとか作れそうなんですけど
落ちこぼれなんで、皆と違うものをと思ったんですけど
自分で調べろ的な学校だし
大人しくショッピングサイトのほうがいいかもしれません
809:デフォルトの名無しさん
08/05/04 01:51:50
例えばArrayListなどのインスタンスを、メソッドに引数として渡し、
メソッドの中で、そのインスタンスに対して操作を行うことは、
Javaのマナー的に、やらない方がいいのでしょうか?
810:デフォルトの名無しさん
08/05/04 01:55:56
モジュール結合度が上がる (共有結合になる) のであまり良くはない。
まぁクラス内に閉じていて private 宣言されているようなユーティリティメソッドとかなら良いんじゃないの。
811:デフォルトの名無しさん
08/05/04 02:37:03
ケースバイケース
禁忌ではない
812:デフォルトの名無しさん
08/05/04 04:19:14
むしろ、弄られないことを想定している場合は
(そのメソッドが継承できるように公開されている場合は)
呼び出し側でコピーを作って渡すべき
813:デフォルトの名無しさん
08/05/04 05:13:28
操作を行うって書いてあんじゃん。
それにコピーなんか作らなくても Collections#unmodifiableList() で十分。
814:デフォルトの名無しさん
08/05/04 08:00:49
>>812
呼び出し側でコピー作るのか?
普通は呼ばれた方(コンストラクタ等)でコピーを作るんじゃね?
ArrayList(Collection col) とかそうだろ?
815:809
08/05/04 17:29:19
>>810
>>811
どうもありがとうございます。
禁忌じゃないけど、あまり良くないという感じでしょうか。
ケースバイケースで考えてみます。
816:デフォルトの名無しさん
08/05/04 18:45:08
>>814
コンストラクタでコピーするのは、
生成されたインスタンスが内部に保持するフィールドを防御するためで、目的が違う。
それにコンストラクタは、明示的にクラスを指定しなければいけないから
何をするべきかは、ドキュメントをみて決定していいと思う。
>>813
unmodifiable~で十分なのは、ごもっともで
817:デフォルトの名無しさん
08/05/04 18:56:07
>>815
むしろ、何が行われるかをドキュメントに書くことが重要
外見は同じでも、
/** ソートしたリストを返す。元のリストはそのまま */
List sort(List list)
/** 引数の list を破壊的にソートした後、そのリスト自身を返す */
List sort(List list)
の2つじゃ、使う側のどきどき感が違う
818:デフォルトの名無しさん
08/05/04 19:19:44
ドキュメントは重要は同意
設計の方針としては、どんな使われ方しても自分のバグにならないように保守的にするのが良い。
コンストラクタの中でのコピーはそういう観点でもある。
819:デフォルトの名無しさん
08/05/04 21:11:25
>>818
でもそれを徹底し過ぎると、メモリを無駄に馬鹿食いする危険性も。
Objectに変更可否フラグがあれば良かったのかもしれんが……。
820:デフォルトの名無しさん
08/05/04 21:13:37
たいしてつかわねーよw
821:デフォルトの名無しさん
08/05/04 23:05:10
>>819 それがドキュメントであり、設計なのでは?
シャローかディープのコピーでも違いがあると思うけど。
822:デフォルトの名無しさん
08/05/04 23:51:52
そんなふうに色々考えているうちに、頭のCPUがフル稼働して、自分が何に悩んでいるかすら忘れ、結局は一番簡単で手抜きの設計に落ち着くわけです
823:デフォルトの名無しさん
08/05/05 00:13:50
まさにYAGNIの原則。
824:デフォルトの名無しさん
08/05/05 01:24:07
防御コピーは徹底しろ。それが嫌な奴はオブジェクト指向言語など使うな。
どうせ、「オブジェクトを作ると遅くなる」とか言い出すのだろうし。
825:デフォルトの名無しさん
08/05/05 01:29:29
極論バカが来ました
826:デフォルトの名無しさん
08/05/05 01:42:13
防御コピーが極論か。
オブジェクト指向がこの世に出てから半世紀近く経っているのにな。
827:デフォルトの名無しさん
08/05/05 01:50:24
オブジェクト指向覚えたての社会人 2 年目かよw
でも経験少ないから適材適所のような程度問題が判断できないんだよな。
828:デフォルトの名無しさん
08/05/05 03:09:17
全てのオブジェクトをイミュータブルにしてしまえばいいんだよ
停止し結晶化した世界は美しいぜ
829:デフォルトの名無しさん
08/05/05 03:11:13
吟遊詩人が現れた
830:デフォルトの名無しさん
08/05/05 04:22:00
>>828
それ何てErlang? まぁErlangだとI18N/L10Nが絶望的なので、実用を考えるなら
Scalaでありとあらゆるオブジェクトをvalで宣言するのが良さげ。
831:デフォルトの名無しさん
08/05/05 09:24:54
[問題]与えられた9個の変数(int型)の中から最大値と最小値を求め、表示しろ。
[解1]3つのメソッドを作る
void setData(int...data){// ここでmaxとminを求める}
int getMax() {}
int getMin() {}
// こんな単純な問題でメソッドを3つも使う必要があるのか?
[解2]変数maxとminを持った内部クラスを作る
class Data {
int max;
int min;
}
Data getData (int...oneDatas) {// 最大値、最小値を求めDataクラスに格納して返す}
// なんか気持ち悪い。
先輩方はこのような宿題を出されたら、どのように解答したらいいと思いますか?
832:デフォルトの名無しさん
08/05/05 09:57:32
どういう状況で出された問題なのか解らないのではっきりとは言えないが、解答として間違っていないとは思われ。
クラスという概念になれるっていう場面ならば、解1の方が良いと思う。
だけど、setDataでmaxとminを求めるのではなく、フィールドに変数を格納しておき、getMax, getMinで最大(最小)を求める方が良い。
解2の方は内部クラスとして定義しているだけならば、本質は解1と何も変わらん。
1つのメソッドで2つ以上の値を返す時には普通に使う。
833:デフォルトの名無しさん
08/05/05 09:58:48
表示しろだろ?
素直にそのままやろうぜー
max(int ...data)とmin(int ...data)を作っておいてそれを利用して普通に出力かな
2回も走査しないといけないじゃないか!って気持ち悪い場合は、これくらいのロジックだしその場で書く。
これくらいで新たなクラスやら、その結果専用のクラスを作るのはどうかと思う。
834:832
08/05/05 10:01:00
補足。
解1でフィールドに保持しておくと、メモリ使用の点、最大最小を求めるコスト的な点ではデメリット。
だが、そのクラスに「平均値を取得するメソッドを追加しろ」という仕様変更に強いのがメリット。
全ての処理をsetDataでやっている場合、まったく異なる性質のメソッドを追加しているのにもかかわらず、最大最小を求めるメソッドがデグレを起こす可能性があるからね。
835:デフォルトの名無しさん
08/05/05 10:09:41
APIの使い方の話題なのか、for文とif文レベルの話題なのか、832の書くようなクラス設計の話題なのか、問題文に記述するべきだな。
836:デフォルトの名無しさん
08/05/05 11:19:13
>>831
本題には無関係だが、dataは複数形で、単数形はdatumだ。
(dataを単数扱いすることもあるらしいが、どちらにしろdatasにはならない)
837:デフォルトの名無しさん
08/05/05 17:27:12
アプレットが初期化されていませんって言うのはいったい何のエラーなんですか?
あとアプレットをhtmlに組み込むのって<body>の中に何か書く必要ありますか?
838:デフォルトの名無しさん
08/05/05 17:44:42
アプレットが初期化できていないってエラーだ。
URLリンク(www.google.co.jp)
839:デフォルトの名無しさん
08/05/05 20:40:18
すんません、メソッドについて質問させてください。
Aクラス
・メンバ変数ふたつ(static)
・メソッド(実行すると引数をもとに計算してメンバ変数の内容を書き換えるメソッド)
適当なクラスファイルでAクラスのインスタンスを生成して、
メソッドに引数を渡して処理をし、その次の行にAクラスのメンバ変数ふたつを呼び出したところ、
変数はどちらも初期値のままでした。なにがいけないのか全くわかりません。
どなたか教えていただけませんか。
メソッドは戻り値はなく、メンバ変数を書き換えるだけなのでvoid宣言してありreturnは書いてません。
840:デフォルトの名無しさん
08/05/05 20:46:27
>>839
書き換えてないからでしょう
841:デフォルトの名無しさん
08/05/05 21:01:26
>>840
どうして書き換えられていないのか心当たりになるようなケースありますか?
842:デフォルトの名無しさん
08/05/05 21:04:37
まずはコードを貼るんだ
843:デフォルトの名無しさん
08/05/05 21:06:00
とにかく問題のコードを書いてくれ
844:デフォルトの名無しさん
08/05/05 21:11:16
開始時刻と終了時刻を入力して経過時間とともに表示するプログラムです。
package XXXXXX;
public class ex134{
/* クラスフィールド */
public static int hh, mm;
public int subTime(int h1,int m1,int h2,int m2){
mm = h2 * 60 + m2;
mm = mm - (h1 * 60 + m1);
/* 終了時刻が翌日であるケースの修正 */
if (mm < 0){
mm = 24 * 60 + mm;
}
hh = mm / 60;
mm = mm % 60;
}
}
845:デフォルトの名無しさん
08/05/05 21:15:01
import XXXXXX.*;
public class XXXXXX{
public static void main(String[] args){
/* 変数 */
String buf;
/* インスタンス生成 */
KeyIn key = new KeyIn();
ex133 ex = new ex133();
/* 時刻の入力 */
//入力文省略
/* 経過時間の計算と表示 */
//省略
ex.subTime(h1, m1, h2, m2);
buf = " " + ex.hh;
buf = buf.substring(buf.length() - 2);
System.out.print("経過時間 " + buf + " 時 ");
buf = " " + ex.mm;
buf = buf.substring(buf.length() - 2);
System.out.println(buf + " 分");
}
}
846:デフォルトの名無しさん
08/05/05 21:17:14
すいません、貼り付けた直後に自己解決しました。
インスタンス生成するとこのクラスファイル名を間違えていました。
voidもintになってた!本当にすいません。
847:デフォルトの名無しさん
08/05/05 21:34:45
これもカーニハンの言うテディベアの話と同じ原理なんだろうか
848:デフォルトの名無しさん
08/05/05 21:39:32
マーフィーの法則w
849:デフォルトの名無しさん
08/05/05 22:07:38
>>832,834
わかりやすい説明ありがとうございます
>>833
getMin(int...datum)、getMax(int...datum)の二つのメソッドを作って提出したいと思います。
ありがとうございます。
>>835
問題のレベルとしてはif文、for文を正しく使うレベルだと思います。
しかし、授業ではメソッドやクラスを使うところまでは学んだので、これを使って問題を解いてみようと考えてみたら上手にメソッド分けが出来なくて・・・
>>836
英語の勉強をがんばりますXD
850:デフォルトの名無しさん
08/05/05 22:23:25
必要のないところにオブジェクト指向的なプログラミングをするのは
不必要な複雑さを導入するだけ
851:デフォルトの名無しさん
08/05/05 22:31:45
JSPでFormから入力された文字列をInteger.parseInt()で
int型の数字にして利用しているのですが、例外処理の書き方が判りません。
Integer.parseInt()に"12345q"とか入った時点でエラー吐いて止まってしまいます。
どのように回避すれば良いのでしょうか?
852:デフォルトの名無しさん
08/05/05 23:31:50
parseIntで発生する例外をcatchするか、charにばらして1文字づつチェックするか、正規表現で数値かどうかをチェックするか、好きにしろ
853:デフォルトの名無しさん
08/05/06 00:22:03
Java SEのダウンロードページにアクセスできません
このままでは仕事が出来ないので誰かインストーラうpしてください><><<<
854:デフォルトの名無しさん
08/05/06 00:33:37
またかよ・・・
バージョンの指定はないな。
ほれ
URLリンク(sakuratan.ddo.jp)