【初心者】Java質問・相談スレッド61【大歓迎】

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path%2Cclasspath

前スレッド
【初心者】Java質問・相談スレッド60【大歓迎】
http://pc5.2ch.net/test/read.cgi/tech/1105691367/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */

また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
2デフォルトの名無しさん:05/01/30 12:47:31
3デフォルトの名無しさん:05/01/30 13:12:43
JavaではC言語のように、
ファイルからフォーマット付きでデータを読み込むことはできなにでしょうか??
4デフォルトの名無しさん:05/01/30 13:16:56
>>3
FileReader、BufferedReader、java.text.*周りを使うとできますが、
1.5なら、Scanner使うと簡単にできるようになります。
5デフォルトの名無しさん:05/01/30 14:12:32
>>4
グーグルで調べてみたのですが、
(BufferedReader フォーマット、など)
よくわからないので、
使い方などが書かれているところがありましたら教えていただけますか?
6デフォルトの名無しさん:05/01/30 14:35:40
76 (≠ 4):05/01/30 14:38:32
>>5
でもScanner使うよりもBufferedReader#readLine()で一行読んでから
java.util.regex.Pattern使ったほうがよさげ。

そのファイルはどんな「フォーマット」なの?
8デフォルトの名無しさん:05/01/30 14:44:19
>>6
レスどもです〜。
せっかく教えてもらったんですが、無駄にeclipseを使っているので、
java.util.Scanner
がないみたいなんですよね。。(´・ω・`)
9デフォルトの名無しさん:05/01/30 14:48:02
>>7
自分で作るファイルなので、
特に形式は決まってないんですが、
今考えてるのは、

row7num3
3:1,2
5:4,1
8:6,6
row8num1
2:4,5

みたいな感じのものです。
10デフォルトの名無しさん:05/01/30 14:54:31
11デフォルトの名無しさん:05/01/30 14:55:39
>>8
EclipseはJDKとは関係ないからJDK1.5もJDK1.4も使える。
1.5ならScannerが使える。regexとBufferedReaderは1.4で使える。

>>9
String line = bufferedReader.readLine(); で一行読み込んで

Pattern headerLinePattern = Pattern.compile("row(\\d+)num(\\d+)");
Pattern dataLinePattern = Pattern.compile("(\\d+):(\\d+),(\\d+)");

Matcher headerLineMatcher = headerLinePattern.matcher(line);
Matcher dataLineMatcher = headerLinePattern.matcher(line);

if (headerLineMatcher.matches()) {
} else {
String row = headerLineMatcher.group(1);
String num = headerLineMatcher.group(2);
} (dataLineMatcher.matches()) {
...
} else {
throw new IllegalStateException("不正なフォーマットだ (゚Д゚)ゴルァ!!");
}
多分こんな感じ
1211:05/01/30 14:57:48
コードぐちゃぐちゃだ・・・
意図を汲んで適当に直してくれ
13デフォルトの名無しさん:05/01/30 14:59:34
>>10,>>11
親切にどもでした!!
挑戦してきます!
1413:05/01/30 15:00:07
間違った_| ̄|○
>>11,>>12
でした。。
15初心者A:05/01/30 15:35:48
すみません。Eclipseを使用し
htmlファイルを作成し

http://localhost:8080/jsp/index.html

とURLに打ち込み表示させた所文字化けを
してしまいますどうすれば良いでしょうか?

※<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ page pageEncoding="Shift_JIS" %>

とちゃんと入力はしてはいるのですが、、、
16デフォルトの名無しさん:05/01/30 15:43:08
↓宣言の前に混入している「これ」は何だ?
※<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ page pageEncoding="Shift_JIS" %>
17デフォルトの名無しさん:05/01/30 15:47:57
JSP ?
1813:05/01/30 16:42:40
>>11
>Pattern headerLinePattern = Pattern.compile("row(\\d+)num(\\d+)");
>Matcher headerLineMatcher = headerLinePattern.matcher(line);
>if (headerLineMatcher.matches()) {

sにはきちんと読み込まれているんですが、
どうしてもif文の中に処理がいかないのですが、どうしてでしょう!?
『\\d+』のところを『[0-9]+』としてもダメでした。。
19デフォルトの名無しさん:05/01/30 17:10:09
底が2のLog値を計算するメソッドを教えて下さい。

引数 1  →結果 0
引数 2  →結果 1
引数 4  →結果 2
引数 16 →結果 4
引数 32 →結果 5

Mathクラスを調べたんですが,該当するメソッドは
無いようです。Math#logは自然対数のみのようで。

どなたかよろしくお願いします。

2013:05/01/30 17:12:13
>>19
log_2 a = log_e a / log_e 2

という式から求まりますよ!!
2113:05/01/30 17:14:30
あ、ちなみに

log_2

は底が2という意味です。
2219:05/01/30 17:22:26
>>20 (13)
なるほど!そういう意味でしたか。
計算してみます。


あと、お返しに。

Pattern headerLinePattern = Pattern.compile("^row(\\d+?)num(\\d+?)\r\n");
もしくは
Pattern headerLinePattern = Pattern.compile("^row(\\d+?)num(\\d+?)\n");

に直したら通りませんか?
つまりは全一致検索になると思うので、改行コードも必要じゃないかなぁ。

2313:05/01/30 17:32:24
>>22
おおっ、どもありがとうございます!!

でもやっぱり無理でした(´・ω・`)
誰かへるぷみぃ。。
24学生さんは名前がない:05/01/30 18:09:15
>>22
readLine()で読みこんでるから改行は入らないはず
25デフォルトの名無しさん:05/01/30 18:13:23
>>23
ほれ。
長いので別のところに貼っといた。少なくとも俺のところでは >>9 を読み込んでちゃんと動いてるぞ

ttp://www.wikiroom.com/java/?%a5%bd%a1%bc%a5%b9%c5%bd%c9%d5%a4%b1
26デフォルトの名無しさん:05/01/30 18:15:06
String line = "row7num3";
Pattern headerLinePattern = Pattern.compile("row(\\d+)num(\\d+)");

Matcher headerLineMatcher = headerLinePattern.matcher(line);

if (headerLineMatcher.matches()) {
String row = headerLineMatcher.group(1);
String num = headerLineMatcher.group(2);

System.out.println("row: " + row + ", num: " + num);
} else {
System.out.println("Invalid line format: " + line);
throw new IllegalStateException("不正なフォーマットだ (゜Д゜)コ゛ルァ!!");
}

ちゃんと row: 7, num: 3 って出力されるけど。データおかしいんじゃね?
27kkk:05/01/30 18:17:21
JAVA script で表示されている画像をどうにかして保存することはできないものでしょうか…
28デフォルトの名無しさん:05/01/30 18:18:34
お前の携帯にカメラ付いてないのか?
29デフォルトの名無しさん:05/01/30 18:19:47
>>25
wikiにコードの断片なんか書くなよ。バカじゃねーの
30kkk:05/01/30 18:21:06
やっぱ携帯の画素数が良くても画面をとるとなんか画質が悪いんです。
31デフォルトの名無しさん:05/01/30 18:21:10
う、うん
32デフォルトの名無しさん:05/01/30 18:22:01
>>29 smithくんだからしかたない。
33デフォルトの名無しさん:05/01/30 18:24:34
断片じゃなくて全部だけどな。
34デフォルトの名無しさん:05/01/30 18:29:53
>>29
うっせーバカ
35デフォルトの名無しさん:05/01/30 18:32:54
断片もかけない人だからしかたない。
36デフォルトの名無しさん:05/01/30 18:43:09
重複してすみません。質問スレに行くよう言われたのでこちらに転載させていただきます。

855 名前:デフォルトの名無しさん :05/01/30 18:35:04
"30 1 180\n"
"23 0 165\n"


こういうデータがそれぞれ1行の配列として与えられたとき、
int Age[50000];
int Sex[50000];
int Height[50000];
この3つの変数に順に代入していくにはどういう文を書けばいいんですか?

てか Java には scanf みたいな機能って付いてないんですか?
37デフォルトの名無しさん:05/01/30 18:54:12
>>36
>3-7
3813:05/01/30 19:01:29
>>25
わざわざすいません。。。
でも??はエラーになってしまいました(゜▽゜;)

>>26
おっしゃるとおりデータの後ろにスペースが入ってました(´・ω・`)

どうもお手数をかけてすみませんでしたm(_ _)m
3913:05/01/30 19:03:57
>>36

>>11または>>26にあるように書くのが一番良いと思います!
40デフォルトの名無しさん:05/01/30 19:20:20
デリミタがスペース程度だったらStringTokenizerあたりで気楽に書く
くらいでいい気がする。
41デフォルトの名無しさん:05/01/30 19:23:26
>>40
deprecated
大体StringTokenizerなんか使うやつはマゾ
42デフォルトの名無しさん:05/01/30 19:24:16
Appletでシューティングゲーム作ろうと思っているんですが
機体移動のアルゴリズム
public void keyPressed(KeyEvent evt) {
switch (evt.getKeyCode( )) {
case KeyEvent.VK_RIGHT :
          X=10;
          ・
          ・
としたとき、いざ動かしてみると機体が少し動いた後一時停止して
今度は連続して動くモーションとなります。
 キーを押したとき一旦停止することなく連続して動くようにするには
どうすればよいのでしょうか?
43デフォルトの名無しさん:05/01/30 19:35:32
>>41
おススメは?
44デフォルトの名無しさん:05/01/30 19:49:14
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/util/StringTokenizer.html
StringTokenizer は、互換性を維持する目的で保持されているレガシークラスであり、
新規コードでは使用が推奨されていません。
この機能の使用を考えているなら、String の split メソッドまたは
java.util.regex パッケージを代わりに使用することをお勧めします。
45デフォルトの名無しさん:05/01/30 20:04:34
>>44
トークンとデリミタ両方が取得できる機能は重宝してたのだが・・・
Scannerにはないじゃん。
どーするんだよ。
46デフォルトの名無しさん:05/01/30 20:06:10
だから正規表現でいいじゃん。
47デフォルトの名無しさん:05/01/30 20:22:04
Scannerにも、デリミタ取得フラグがあれば良かったのだが
なんでない!
4836:05/01/30 21:18:42
36 です。
Scanner なんてクラスがあるんですね。

ちょうど 1.5 の勉強したいところだったんで、これ使ってみようと思います(`・ω・´)シャキーン
49デフォルトの名無しさん:05/01/30 21:27:07
Swingをゼロから勉強しようと思うのですが良い書籍は無いでしょうか?
「Java GUIプログラミング vol.1」
を買ってみたのですが、内容が古すぎて最近のVMでは動かないのです。
どうしたものか、、、。
50デフォルトの名無しさん:05/01/30 21:39:34
>>49
単にJ2SE 5.0つかってて、javacに-source 1.4を付けてないだけ、に100ガメル。
51デフォルトの名無しさん:05/01/30 21:56:15
>>49
コンパイルは出来ましたか?
5249:05/01/30 22:14:26
>50
勉強になりました。(J2SE 5.0つかってて、javacに-source 1.4を付けてない
今は1.5への大改革の最中なのですか?
使ってるVMは、1.4、本は1.3の時代のもののようです。

>51
コンパイルできなかったので、importを書き換えました。そしたら、コンパイルできました。
実行したらエクセプションしました。
53デフォルトの名無しさん:05/01/30 22:47:08
>>42
単なるキーリピートの問題の予感
54デフォルトの名無しさん:05/01/30 23:14:43
文字列を全てコピーするのってどうやるの?
String OTZ = 何か入ってる , orz = 何か入ってる;
OTZ = orz;
じゃだめでつか?
55デフォルトの名無しさん:05/01/30 23:18:30
コピーをどうとらえるかにもよるが普通はそれでいい。
56デフォルトの名無しさん:05/01/30 23:25:36
>>54
何もやらずに訊いているのか?
それとも、やって何か不都合があって訊いているのか?
57デフォルトの名無しさん:05/01/30 23:33:56
a = (String)b.clone();
clone()はprotectedされていますみたいなエラーがでるよ
どうすればいいんだかorz
58デフォルトの名無しさん:05/01/30 23:44:00
a = new String( b);
59初心者:05/01/30 23:51:58
Eclipseを使用しているのですが
Tomcatを立ち上げ *.jsp にアクセスしようと
すると普通にHTMLファイルが表示されるのですが
*.htmlにアクセスしようとすると文字化けしてしまいます。
どうすれば良いでしょうか?

※しっかり下記は記載しています。
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ page pageEncoding="Shift_JIS" %>
60デフォルトの名無しさん:05/01/31 00:02:15
>>42
イベントに対していどうのこーどをかいちゃいかん
これはJava特有の問題ではなくてイベントドリブンでのゲームプログラム全般の話
61デフォルトの名無しさん:05/01/31 00:13:09
>>57
a = b;
でOK
62デフォルトの名無しさん:05/01/31 00:24:35
静的初期化子内で例外が起こってクラスの初期化に失敗したら、
もう回復不可能なんでしょうか?
下のようなクラスで、プロパティファイルが無いときに2回testメソッドを呼ぶと、
2回目以降はNoClassDefFoundErrorと出て初期化を試してもくれません。
自分で強制的にもう一度初期化を試させる(?)ことてできるんでしょうか?

public class Test
{
  private static String TEST;

  static {
    ResourceBundle bundle = ResourceBundle.getBundle("test");
    TEST = bundle.getString("test");
  }

  public static void test () {
    System.out.println(TEST);
  }
}
63デフォルトの名無しさん:05/01/31 00:44:21
>>前スレ974
正規表現に\Qと\Eというのが指定できる。
それを指定すると、\Qと\Eの間のメタ文字は解釈されなくなる。
それを使えば、ユーザーの任意の入力に\Eが含まれていない限り、
> 、置換文字列を指定する人が、正規表現を知らなくても使えるように、
> 単純な文字列の置換機能にしたいんです。
が実現できるはず。
64デフォルトの名無しさん:05/01/31 00:53:43
>>59
htmlファイルのheadタグ内に
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
を加える。
65デフォルトの名無しさん:05/01/31 01:15:26
質問お願いします

Appletクラスを継承したhogeクラスではpaintメソッドが勝手に実行されるのと同じように
Frameクラスを継承したhogeクラスでもpaintメソッド書いたら勝手に実行されるの?
もしそうなら実行される時はいつになるんでしょうか?
hogeクラスにmainメソッドがある場合mainメソッドが実行されてからpaintメソッドが実行されるんでしょうか?
66デフォルトの名無しさん:05/01/31 01:26:53
>>65
質問お願いしますとのことですので
回答ではなく質問を書きますね

Googleで少し検索すれば回答が出てくるのに
検索して自分で調べようとしないのは何故ですか?
67デフォルトの名無しさん:05/01/31 01:33:18
>>53
>>60
レスありがとうございました。自己解決できました。
public void keyPressed(KeyEvent evt) {
switch (evt.getKeyCode( )) {
case KeyEvent.VK_RIGHT :
MoveX=true;

         ・
public void keyReleased(KeyEvent evt){
switch (evt.getKeyCode( )) {
case KeyEvent.VK_RIGHT :
MoveX=false;
         ・
         ・

68デフォルトの名無しさん:05/01/31 01:46:14
>>66
そんな事言ったら、何でもググれで済まされるんじゃないですか?
この質問スレ自体が必要ないって話になります。
少なくとも、答える気がないならわざわざイヤミレスしないでください。
もういいです。自己解決しました。
システムコール並びにrepaint()による、再描画イベント発生時に
paint()が呼び出されるのですね。
69デフォルトの名無しさん:05/01/31 01:50:48
>>62
ClassLoaderで、自分で再読み込みしてみてください。
7066:05/01/31 01:56:09
>>68
あの〜、楽しんでるだけだと思うんだけど・・・ともかく・・・回答有難うございました

あと・・・

>少なくとも、答える気がないならわざわざイヤミレスしないでください。もういいです。
禿同です

>>66
わざわざ人の揚げ足とるようなまねまでして、なんていやな野郎なんだ
スルーすれば済むのにさ、もう少し我慢したらどうなのさ
71デフォルトの名無しさん:05/01/31 02:01:47
>68
>そんな事言ったら、何でもググれで済まされるんじゃないですか?
言われるまで分からなかったの?

>この質問スレ自体が必要ないって話になります。
ぐぐってもそう簡単に分からないことを聞きたいときのためにこのスレがあるんです。

ところで>70
自分自身を「なんていやな野郎なんだ」ってのは何だ? いやレス番号ミスだとは思うが……
72デフォルトの名無しさん:05/01/31 02:05:41
>言われるまで分からなかったの?
あ〜あ、このスレ全否定しちゃった。しかもまた揚げ足取ってる、ワロタw

もうおめ〜らくだらねえから消えろよ
73デフォルトの名無しさん:05/01/31 02:07:32
66から70までのレスは、誰が誰で誰に言ってるのか意味不明だな。
寝ぼけてるのか精神分裂に陥ってるのかワカラン
74デフォルトの名無しさん:05/01/31 02:11:57
恐らく 

>>65=>>70 (自分も相手も間違えてる馬鹿)
>>66 (嫌われ者w)
>>68 (楽しんでる厨房)

これでFAね
75デフォルトの名無しさん:05/01/31 02:26:03
>>69
どうもです。自分でロードしてもNoClassDefFoundErrorになってしまうんですが...
何か勘違いしてますか?

public class Hoge
{
  public static void main ( String[] args ) {
    try {
      Test.test();
    } catch ( Throwable e ) {}
    try {
      Class c = Hoge.class.getClassLoader().loadClass("Test");
      System.out.println("Loaded: "+c);
      Test.test();
    } catch ( Throwable e ) {
      e.printStackTrace();
    }
  }
}

--
Loaded: class Test
java.lang.NoClassDefFoundError
at Hoge.main(Hoge.java:11)
76デフォルトの名無しさん:05/01/31 02:56:55
>>62=75
ホントに静的初期化子で例外が起こってる?
クラスの初期化に失敗したときはExceptionInInitializerErrorが投げられるはずだけど。
単にTestクラスが見えてないだけなんじゃない?
77デフォルトの名無しさん:05/01/31 02:59:06
ぬるぽ
7862:05/01/31 03:07:11
>>76
長くなるんで1回目のエラー表示はカットしたんですけど、
75の最初のcatchの中でprintStackTraceすると下のようなエラーが出ます。

java.lang.ExceptionInInitializerError
at Hoge.main(Hoge.java:6)
Caused by: java.util.MissingResourceException: Can't find bundle for base name test, locale ja_JP
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:839)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:808)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:552)
at Test.<clinit>(Test.java:8)
... 1 more
79デフォルトの名無しさん:05/01/31 07:25:00
クラスローダーをつかいすてるんだよ
80デフォルトの名無しさん:05/01/31 07:35:58
現在、VC++/DirectShowで構築してあるUSBカメラ制御ソフト(ただのキャプチャソフトです)を
Javaに移植したいのですが、どのクラスを使えばいいのか見当も付きません。
何を使えばいいのでしょうか?
81デフォルトの名無しさん:05/01/31 07:51:23
あるクラスAがあるクラスBをimplementsしていることを判定するにはどうしたらよいですか?
82デフォルトの名無しさん:05/01/31 07:57:00
extendsか?
83デフォルトの名無しさん:05/01/31 07:59:23
>>81
クラスは implements できないが、インタフェースだとして、

if(a instanceof B) { 〜
84デフォルトの名無しさん:05/01/31 07:59:55
いえ、implementsの方です
あるクラスオブジェクトが、特定のインタフェースを実装しているかどうかで、処理を分岐させたいところがございまして・・・
85デフォルトの名無しさん:05/01/31 08:01:38
>>83
あ、クラスではなく「インタフェース」ですね^^;
なるほど、instanceof ですか。ありがとうございます。謝謝
86デフォルトの名無しさん:05/01/31 08:35:45
>>78
リソースバンドルに指定した名前が見つからないと言っている。

xxx.properties というファイルが必要なのだが、それが無いのか
置く場所が間違っているか。
87デフォルトの名無しさん:05/01/31 08:35:57
おはようございます。質問させてください。

linuxサーバにjdk1.5.0_01と言うのをダウンロードしてインストールしたんですけど、
これ以前に入っていたのはj2sdk1.4.1_05でした。
jdkとj2sdkと言うのは意味合い・機能的に違ってくるのでしょうか?
88デフォルトの名無しさん:05/01/31 08:37:59
そもそもバージョンが違う
89デフォルトの名無しさん:05/01/31 09:01:35
同じようにJavaの開発は出来るよ。
つか、意味的には同じもの。
90デフォルトの名無しさん:05/01/31 16:16:20
質問です。
親Frameのボタンで、JInternalFrameにJPanelを貼り付けて表示させている図を再描画して、
JInternalFrameを更新したいのですが、図の再描画は出来ているのに、JInternalFrameの更新が
上手くいきません。
どのようにしたらフレームの更新が上手くいくのでしょうか?
91デフォルトの名無しさん:05/01/31 16:21:57
JInternalFrameの何の更新ですか?
92デフォルトの名無しさん:05/01/31 16:27:18
再描画した図を、現在表示されているJInternalFrameに更新して表示したいのですが。
現状では、更新される前の図がJInernalFrameに表示されたままで、最小化などのアクションをすると
描画が更新されるという状態です。
93初心者59:05/01/31 16:36:28
>>64さん
ありがとうございます。助かりました。
解決しましo(^o^)o
勉強をこれからも頑張ります(^ー')b
94デフォルトの名無しさん:05/01/31 17:15:44
ハッシュテーブルについて質問があります。
for(i = 0; i < 5; i++){
Keys = Keys+i;
Elems = 0x41+i;
htTestHash.put( Keys , Elems );
}
このようなハッシュテーブルを作成し、ハッシュのキーを
enTest = hoge.htTestHash.keys();
で取り出したとき、enTestの中の並びは必ず
4,3,2,1,0
となるのでしょうか?
0,1,2,3,4
となることを期待していたのですが、上のような結果になってしまったので
調べてみるとキーのリストを返すとは書いてあっても
ハッシュに入れた順番どおりに返すとは何処にも書かれていませんでした。
ですから、4,3,2,1,0という結果もたまたまなのかもしれません。
ハッシュの使い方として配列のように扱う事がそもそも間違っているのかもしれませんが
ハッシュの仕様が気になったのでお分かりになる人がいましたら
お答えしていただけると幸いです。
95デフォルトの名無しさん:05/01/31 17:28:05
教えてください。お願い。
ActiveX COMサービス(WindowsのDLLが呼び出せるならOK)の
「JNAKALab.DLL」はロードされているようなのですが、
jnaka.JInit(sid)やjnaka.JSetUIProperties()のところで
java.lang.UnsatisfiedLinkError: JIni;
java.lang.UnsatisfiedLinkError: JVSetUIProperties;
のエラーがでてしまいます、ECLIPSEでJNIの設定がなにかあるのでしょうか、
それともメッソドの呼び出しがおかしいのでしょうか。
DLLの場所は環境変数で設定しておきました。
Long JInit(String 型 sid);Long JSetUIProperties();
DLLの説明にあった上記のメッソドにアクセスしたいのです。
public class JNaka {
public native long JInit(String sid);
public native long JSetUIProperties();
static {
    System.loadLibrary("JNAKALab");
}
}
public class OBar extends JFrame {
public JNaka jnaka = new JNaka();
protected String sid = "UNKNOWN";
protected long ReturnCode;
private void setInit() {
ReturnCode = jnaka.JSetUIProperties();
ReturnCode = jnaka.JInit(sid);
}
}
96デフォルトの名無しさん:05/01/31 17:44:58
>>94
HashtableやHashMapは格納順序がまったく保証されない。

> ですから、4,3,2,1,0という結果もたまたまなのかもしれません。
そのとおり。たまたまと思っていた方が幸せ。
97デフォルトの名無しさん:05/01/31 18:36:37
>>92
どっかでrepaint()呼んでみてはどうですか?
98デフォルトの名無しさん:05/01/31 18:55:24
Java言語からは離れるのですが、
jvmstat3.0( http://java.sun.com/performance/jvmstat/ )
はj2sdk1.4.2系で動作しないのでしょうか?
つたない英語能力でDocsを読んでみると、j2sdk1.5系のみ対応っぽく、
j2sdk1.4.2系には触れられていないようです。
さらに対応しているであろうjvmstat2.0については
ダウンロードリンクを探し出せない始末・・
どなたかご教授ください・・
99デフォルトの名無しさん:05/01/31 18:58:01
提案ありがとうございます。
現状で、ボタンのメソッドの中でrepaint()を呼んでいるのですが上手くいきません。
他に何か原因は考えられるでしょうか?
100デフォルトの名無しさん:05/01/31 19:12:23
>>98
5. Does jvmstat support J2SE 5.0?

Yes, now jvmstat 3.0 can monitor J2SE 5.0, J2SE 1.4.2 and J2SE 1.4.1 virtual machines
(effectively replacing and superseding all previous versions of jvmstat).
101デフォルトの名無しさん:05/01/31 19:16:54
>>98
私も読んでみましたが、jvmstatの動作に1.5が必要、というだけで、
1.5のJVMしかモニターできないわけではないようです。
FAQにも
"jvmstat 3.0 can monitor J2SE 5.0, J2SE 1.4.2 and J2SE 1.4.1 virtual machines
(effectively replacing and superseding all previous versions of jvmstat)."
とありますので。

1.5のJ2SE入れてjvmstatだけで使うようにし、ビルドや実行等は
1.4系のJ2SE使うようにすれば何とかなりませんか?
102デフォルトの名無しさん:05/01/31 19:26:45
>>94
ちなみにTreeMapはkeyの昇順、LinkedHashMapは、putした順にIteratorでとれる。
10398:05/01/31 19:38:44
>>100
>>101
迅速なレスありがとうございます。
さっそく試してみます。
104デフォルトの名無しさん:05/01/31 19:48:38
javaとjavaw二つのバイナリの差はなんでしょうか
javawの方が2byteほど大きいのですが
105デフォルトの名無しさん:05/01/31 19:50:33
バージョン書き損ねました
jre1.5.0_01です
106デフォルトの名無しさん:05/01/31 19:52:16
>>104
javawはコンソールが立ち上がらない
107初心者 ◆Java/isQ.c :05/01/31 19:56:28
>>104-105
|д・)つ ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/java.html
> javaw コマンドは、コンソールウィンドウがない以外は、java コマンドと同じです。
> javaw は、コマンドプロンプトウィンドウを表示する必要がないときに使用します。
108デフォルトの名無しさん:05/01/31 20:06:57
>>106-107
ありがとうございます

jreを同梱しようと思ってて迷っていたので助かりました
sunのDocument見損ねてたよ o......rz
109デフォルトの名無しさん:05/01/31 20:16:39
appletでgifのImageをダブルバッファリングで表示してもちらつきが生じます。
何かよい方法はないでしょうか?
110デフォルトの名無しさん:05/01/31 20:16:57
Java から100枚程度のグラフの連続白黒印刷、同時に文書ファイル作成をしていますが、
パターン塗りつぶしで困っています。
現在は 8x8 画像で TexturePaint を使っています。
1) Acrobat を持っているので PDF に出力してるのですが、やたらと時間がかかります。
2) Graphics2D から EPS に出力するライブラリを見つけてきましたが、
 塗りつぶしは真っ黒になってしまいます。
3) できれば PowerPoint ファイルを出力したいんですが、フリーのものが見つかりません。
 一色塗りつぶしにしてEPS に出力してから、図として挿入し、グループ解除して、
 VBA マクロでパターンをかえてやってもいいのですが、100枚は大変。
4) POI ではグラフが作れません。タイトルも替えたいので、
 テンプレートとなるファイルにグラフを作っておいて参照セルの値を変える……だけではいけません。
5) SVG は、作るはいいけど連続して印刷する方法(もしくは他形式への変換方法)が乏しい(探索中)

というわけで塗りつぶしのほかの方法があればよいのですが。誰かお知恵を拝借できませんでしょうか。
111デフォルトの名無しさん:05/01/31 20:33:15
>>108
jre再配布の条件を守る気はないのですね
11298:05/01/31 20:43:35
>>100
>>101
動作することを確認できました。

動作方法を簡単に報告しますと、j2sdk1.4系にjvmstat3.0を使用するには、
1."j2sdk1.5"をインストール
2."j2sdk1.4"のVMの起動オプションに"-XX:+UsePerfData"を付与。
の2つが必要でした。
アドバイスありがとうございました。
113デフォルトの名無しさん:05/01/31 20:51:02
Sirializableインターフェースを実装するとそのクラスを「直列化」できるらしいんですが、
「直列化」って何ですか?
114初心者 ◆Java/isQ.c :05/01/31 21:01:11
>>113
|д・)つ ttp://www.asahi-net.or.jp/~ge3m-hsmt/mPages/jap/fileIO.html
> 直列化とは、簡単に言えばオブジェクトを出力ストリームに書き込むこと
115デフォルトの名無しさん:05/01/31 21:04:43
>>113
シリアライズだ

とこれだけではあんまりか。
クラスのインスタンスの持つデータの保存だと思っておけばいいよ。厳密にはちょっと違うが
116初心者 ◆Java/isQ.c :05/01/31 21:05:47
117デフォルトの名無しさん:05/01/31 21:52:56
EJBの質問も良いですかね?
EJBのローカル参照でエラーが出て困っています。
(weblogic serverの管理コンソールでJNDIのテストをするとJNDI名が間違っていると言われます)
設定ファイルは以下の通りです。(関係なさそうな部分は消しています)
何が悪いのでしょうか。

*** ejb-jar.xml ***
<ejb-name>ABC</ejb-name>
 <local-home>org.yahoo.ABCLocalHome</local-home>
 <local>org.yahoo.ABCLocal</local>
 <ejb-class>org.yahoo.ABCBean</ejb-class>

*** weblogic-ejb-jar.xml ***
<ejb-name>ABC</ejb-name>
<enable-call-by-reference>True</enable-call-by-reference>
<local-jndi-name>ejb/ABCLocalEJB</local-jndi-name>
118デフォルトの名無しさん:05/01/31 21:57:53
>>111
身内(?)だけの配布ですから

もしフリーソフトで出すのであれば同梱しませんよ
119113:05/01/31 22:03:57
114-116
なるほど、なんとなくわかりました。
クラスのインスタンスのフィールドやら状態やらを0と1の簡単なならびにすると言うことですね。
それでもってこの動作は入出力のときに威力を発揮すると。
120デフォルトの名無しさん:05/01/31 22:13:57
>>118
身内だけでも厳密には再配布の条件に違反していることになると思いますよ
121デフォルトの名無しさん:05/01/31 22:27:18
>>118
JREの再配布条件には配布範囲に応じて分類されてるしそれ読まなきゃ
意味ないよね。つーか再配布するななんて誰もいってないのに
なんでそんなひねくれてるんだろ。再配布するときはSunの示す
条件を満たすようにしてくださいってだけなのに。
122デフォルトの名無しさん:05/01/31 22:31:37
すみません。知っている方がもし、いらしゃったら、教えていただけませんか?
WMF(ウィンドウズメタファイル)をラスター画像(GIF/JPEG/BMPなど)に、java
でコンバートする方法を、探しています。難しいことなのでしょうか?
123デフォルトの名無しさん:05/01/31 22:45:19
wmfなんて久しく見てないから仕様ワカンネ
124デフォルトの名無しさん:05/01/31 22:53:20
>>120-121
別にひねくれてる訳じゃないですけどそう考えられる発言したことはに関しては
非常に申し訳なく思っております

それからJREの全てのfileを同梱するようにします。

>>ALL
スレ汚しまことに申し訳ございません
125デフォルトの名無しさん:05/01/31 22:56:02
libwmfなどを使えば、コンバート可能とのことなんですが、javaではやっぱり
難しいですよね。
126デフォルトの名無しさん:05/01/31 23:34:03
>>122
Java Advanced Imaging (JAI) API
http://java.sun.com/products/java-media/jai/
127デフォルトの名無しさん:05/01/31 23:41:13
すいません。tomcat5.5にしたら、commons.dbcp.BasicDataSourceFactory
によるデータソースの取得が出来なくなってしまいました。
InitialContext.lookup("java:comp/env/jdbc/mysql")をしても
DataSouceがヌルなBasicDataSourceインスタンスが返ってきてしまうのです。

一応、server.xmlに読ませるContextタグ内には
<Resource name="jdbc/mysql" type="javax.sql.DataSource" auth="Container" />
<ResourceParams name="jdbc/mysql">
<parameter>
<name> factory </name>
<value> org.apache.commons.dbcp.BasicDataSourceFactory </value>
</parameter>
(以下略)
とし
web.xml内にも
<resource-ref>
<res-ref-name> jdbc/mysql </res-ref-name>
<res-type> javax.sql.DataSource </res-type>
<res-auth> Container </res-auth>
</resource-ref>
とし
mysqlコネクタ、commons.Dbcp、commons.Collection、commons.Pool
のjarファイルも、Tomcatホームの/commons/libにコピーしてます。
しかし、空のdbcp.BasicDataSourceが返ってきてしまうのです。

どうすれば正確に取得できるのでしょうか? 教えてください。
128デフォルトの名無しさん:05/01/31 23:41:43
>>126
書き込みありがとうございます。
Java Advanced Imaging (JAI) APIを調べてみたところ、画像形式はgif、jpeg
、png、bmpなどをサポートしており、wmfに関する記述はありませんでした。
wmfはもう先がないということで見捨てられたのでしょうか・・・
129デフォルトの名無しさん:05/02/01 00:22:12
javaでiアプリを作ったりなどよく見かけるのですがvodafoneのゲームって作れますか?
130デフォルトの名無しさん:05/02/01 00:36:05
SDKのサイトにつながりません。
131デフォルトの名無しさん:05/02/01 01:09:21
Javaって木構造なコレクション型って無いのでしょうか。

132デフォルトの名無しさん:05/02/01 01:10:37
TreeSet / TreeMap
133デフォルトの名無しさん:05/02/01 01:11:17
JFileChooserクラスのshowOpenDialogメソッドについて教えてもらいたいのですが
引数をnullにする場合とコンポーネント(JFrame)を指定する場合の違いは何でしょうか?

134デフォルトの名無しさん:05/02/01 01:12:41
Javaって木構造なコレクション型って無いのでしょうか。

135デフォルトの名無しさん:05/02/01 01:13:54
TreeSet / TreeMap
136デフォルトの名無しさん:05/02/01 01:20:00
>>134
コレクションではないが、
TreeNode / MutableTreeNode / TreeModel
137デフォルトの名無しさん:05/02/01 01:20:05
>129
できるはず。
作ってて分からんことがあれば
CLDC+MIDP+携帯電話用Javaスレッド part 3
http://pc5.2ch.net/test/read.cgi/tech/1091798483/
も参照あれ。
138デフォルトの名無しさん:05/02/01 01:20:19
DefaultMutableTreeNode
139デフォルトの名無しさん:05/02/01 01:21:27
>>134
クラスではないが、
Composite パターン
140デフォルトの名無しさん:05/02/01 01:22:37
>>133
nullだと画面の真ん中、親を指定するとその親の真ん中に表示されるんじゃなかったっけ。
141デフォルトの名無しさん:05/02/01 01:33:36
検討しましたが自分の親と子を返すインターフェースを作って自前で戦うことにしました。
142デフォルトの名無しさん:05/02/01 06:44:38
org.w3c.dom.Node
javax.naming.CompositeName
143デフォルトの名無しさん:05/02/01 07:56:10
ソケットを使った通信に関して質問します。
2台以上のマシン間で配列を送・受信するプログラムを作りまして、正常な動作を確認したのですが、数回実行させると正常に動かなくなってしまいました。
実行させるマシンを変えると、また数回正常に実行できたのですが、ある時突然に異常(配列の要素がが全て0になっている様子)になってしまってそれ以後正常に実行できなくなってしまいました。
他の数台のマシンで実行してみても初めの数回だけ正常に動いた後、異常が起きたら2度と正常に動作しないことがわかりました。

配列の計算をしているアルゴリズムは乱数を使っているわけでもないので、
実行のたびに結果が変わる事は無く、この異常は通信のどこかが原因だと考えています。
私が考えられるのはここまでで、こちらの板に助けを求めてまいりました。
このような現象が起こりそうな要因をご教授ください。

送信は以下のようにしています。
Socket Csocket = new Socket(hostName,25555);
DataOutputStream dos = new DataOutputStream(Csocket.getOutputStream());

for (int i = 0; i <100000; i++)
dos.writeFloat(W[i]);

dos.close();
Csocket.close();

受信側は以下のとおりです。
ServerSocket serverSocket = new ServerSocket(this.clientPort);
Socket socket = serverSocket.accept();
DataInputStream dis = new DataInputStream(socket.getInputStream());

for (int i = 0; i < 100000; i++)
W[i]=dis.readFloat();

dis.close();
socket.close();
serverSocket.close();
144デフォルトの名無しさん:05/02/01 09:22:11
フォルダをデスクトップに作成したいのですが、デスクトップパスの指定が良くわかりません。
デスクトップパスを取得する方法を教えてください。
145デフォルトの名無しさん:05/02/01 10:16:36
>>144
Documents and Settingsの下を良く探せ
146デフォルトの名無しさん:05/02/01 11:02:34
レジストリを参照する
のほうがよくないか
147デフォルトの名無しさん:05/02/01 12:40:54
>>133
相対位置の指定だけでなく、モーダルの制御にも使われたと思う。

JFileChooserに限らず、JDialogなんかでも、モーダルのダイアログを
出すときに、親のウインドウを教えずにnullで開くと、親ウィンドウの裏に
モーダルダイアログが表示されて困ったことになった気が。

・モーダルのダイアログを表示する(引数nullで)
・ダイアログが表示された状態で、タスクバーなどで別のウィンドウに切り替える
・同じようにタスクバーで元のウインドウを選ぶ
・親ダイアログが前面に表示されるが、モーダルなので操作できない
 ALT+TABでウィンドウを切り替えると前に出てくる

試して報告してくれ。
148デフォルトの名無しさん:05/02/01 12:55:35
>>143
二度と正常に動作しないってのは、プログラム途中で何らかの例外が
発生して、ServerSocketインスタンスがclose()されないまま
プログラムが終了してる為だと思われます。
そうなると、そのポートでは二度とバインドできずに、ServerSocketが
スタートできません。
149デフォルトの名無しさん:05/02/01 17:35:09
抽象メソッドとインターフェースの違いについて理解し難いのですが
猿でも分かるように詳しく教えてください。
150149:05/02/01 17:49:24
解決しました。
151デフォルトの名無しさん:05/02/01 19:11:35
>>143
try{
// ここに処理を記述
}catch(Exception e){e.printStackTrace();}

と書けば発生したエラーの詳細が表示されるので原因解明の一助になるのでは?
152143:05/02/01 19:36:25
>>148
>>151
レスありがとうございます。
>>151さんの言われる通り、e.printStackTrace();で何が起きてるか見てみたのですが、全くエラーは出ていないのです。
それでは>>148さんのご指摘のインスタンスがcloseされていない、というのは起こらないはずだよなあ、と思っているところです。

そういえば、Ctrl+Cで強制終了した事が多々あるような。この場合、Javaはcloseしてくれてないのでしょうか。
153デフォルトの名無しさん:05/02/01 19:40:53
>>152
配列の要素が0になるのはどの時点?
154151:05/02/01 19:43:14
>>152
float じゃなくて char でも発生しますか?
155151:05/02/01 19:49:18
別スレッドで W[i] を初期化したり削除しちまってたらぬるぽになるし、
初期化ルーチンを呼び出しちゃってるとしか思えないなぁ。。。

W[i] が必ず 0 じゃないというのが保証されているのであれば、
送受信時に 0 になるのを監視して W[i] を全て表示してみれば
何が起こってるのかが解るかも。
156デフォルトの名無しさん:05/02/01 19:51:03
>>144 システムプロパティuser.homeからたどれ。
157デフォルトの名無しさん:05/02/01 20:42:23
次のようなSwingアプレットを作って実行すると,起動直後はボタンが表示されず,マウスカーソルをボタンの上に持って行くと,それ以降はボタンが表示されます。
起動直後からボタンを表示させるようにするにはどうすればよいでしょうか?

//<applet code="JAppletTest.class" width="200" height="200"></applet>
import java.awt.*;
import javax.swing.*;
public class JAppletTest extends JApplet {
Container contentPane = getContentPane();
Image img;
public void init() {
contentPane.setLayout(new FlowLayout());
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}catch(Exception e){
e.printStackTrace();
}
contentPane.add(new JButton("ボタン"));
Dimension d = contentPane.getSize();
img = createImage(d.width, d.height);
}
public void paint(Graphics g){
g.drawImage(img, 0, 0, this);
}
}
158part 1:05/02/01 21:00:29
質問があります。
下記のようなswingで作った簡易も簡易なメモ帳をつくりました。

問題は、「ctrl a」で行の先頭にカーソルが移動させたいのですが????の部分になにかいたら
よいかわかりません。行の先頭のポイントとかはどこかの変数に保存されてるのでしょうか・・。
あとできればカーソル自体も点滅させずに、直線ではなく色付き長方形にしたのですが。。

すみません、欲張りで。誰か教えてください・・。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.border.*;
import javax.swing.text.*;
import java.io.*;

public class MyEditor extends JFrame{
Container myContainer;
JTextPane myTextPane;

public static void main(String[] args){
MyEditor myApp = new MyEditor( "( New File )" );
myApp.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myApp.setVisible(true);
}

159part 2:05/02/01 21:02:31
MyEditor(String title){
super( title );
setBounds( 10, 10, 800, 500 );

myContainer = this.getContentPane();
myContainer.setLayout(new BorderLayout());

myTextPane = new JTextPane();

InputMap inputMap = myTextPane.getInputMap( JComponent.WHEN_IN_FOCUSED_WINDOW );
ActionMap actionMap = myTextPane.getActionMap();

KeyStroke moveLineStartKey = KeyStroke.getKeyStroke( "ctrl A" );
inputMap.put( cutKey, moveLineStartAction );
actionMap.put( moveLineStartAction, moveLineStartAction );
}

class MoveLineStartAction extends AbstractAction{
MoveLineStartAction( String text ){ super(text); }
public void actionPerformed( ActionEvent e ){
????
}
}
}
160デフォルトの名無しさん:05/02/01 21:27:32
>>158
お願いですからすべて選択にしてください。

て言うか何系の発想よ?
161デフォルトの名無しさん:05/02/01 21:32:53
>>160
あ、EmacsというEditorを過去に使っていて、(EclipseでもEmacs風のKeybindにしています)
それが Ctrl-aが「行頭へ移動」でしたので。

別にCtrl-aでなくても、全然違うキーでもいいのですが・・
162デフォルトの名無しさん:05/02/01 21:35:24
API仕様からJTextPaneのfocus関係を調べてみるとか
163デフォルトの名無しさん:05/02/01 21:37:20
>>161
すまそviの人だから知りませんでした。
164デフォルトの名無しさん:05/02/01 21:37:24
focusじゃなくてキャレットのほうか
165デフォルトの名無しさん:05/02/01 22:14:54
>>164
情報ありがとうございます。

http://java.sun.com/j2se/1.3/ja/docs/ja/api/javax/swing/text/Caret.html#moveDot(int)
このあたりから察するに、

「行頭まで移動」 は
「改行にマッチするまでmoveDot(-1)を繰り返す」 

というのでよさそうなんですが、初心者だけあってクラスとか継承とかがよく分かって
おらず、(多重継承はできないということだけは知っています)どういう記述をしたら動
くようになるかわからないんです・・。
166143:05/02/01 22:25:38
>>153
>>154
>>155
なるほど、問題の配列を逐次出力して観察してみることにします。
167デフォルトの名無しさん:05/02/01 22:59:06
メインクラスのあるjarファイルをバッチファイルで起動した後、
DOS窓を表示しないようにできますか?

javawでやればDOS窓閉じても問題ないぽいけど、
勝手にDOS窓が閉じるような技ってないんですかね
168デフォルトの名無しさん:05/02/01 23:03:00
>>167
startってのは?
169デフォルトの名無しさん:05/02/01 23:10:09
>>168
やってみたんですが、引数を読んでくれずクラスパスが通らんかったです。。
なんでだろ
170デフォルトの名無しさん:05/02/01 23:14:46
>>169
そんなことはないぞ
そのバッチの中身かいてみろ
171デフォルトの名無しさん:05/02/01 23:21:31
System.out.println の文字コードを UTF-8 にするには、
どうしたらよいでしょうか(OS は Windows2000 です)。
172デフォルトの名無しさん:05/02/01 23:31:40
>>170
今環境ないんで忘れたけど、確かこんな感じ

start javaw -cp lib\hoge.jar

で、-cpっていうファイルはありません、みたいなエラーだった希ガス
173デフォルトの名無しさん:05/02/01 23:46:17
start "javaw -cp lib\hoge.jar "
174デフォルトの名無しさん:05/02/01 23:47:11
>>172
問題なく動くぞ
175デフォルトの名無しさん:05/02/01 23:47:57
>>173
それは動かない
176Java暦1ヶ月:05/02/02 00:06:39
すみません。JSPを使用しログイン・システムを作っているのですが、
例えば
[ login.jsp ] ・・・まず、このページでログインIDを入力する。
<html>
<head></head>
<body>
<form name=aa action = signup.jsp method=post>
ログインID<input type=text name=id><br>
</form>
</body>
</html>

[ signup.jsp ]・・・このページでMySQLからデータを取り出し照合。
    ・
   <略>
    ・
String id = request.getParameter("id");
<略>
ResultSet result = state.executeQuery("select * from table_1
where id=\"" + id + "\"");
↑ ↑
     |    が入力されたログインIDが入っています。
    がMySQL上に登録したカラムです。
Q1)なぜここで // 略 // where id = id");
としてはダメなのでしょうか?
Q2)私の購入した入門書にはここでの¥の用法が全く記されておりません。
 どういう事なのでしょうか?
    誰か教えて下さい。お願いします。


177Java暦1ヶ月:05/02/02 00:09:00
すみません、文字がずれてしまいました。

ResultSet result = state.executeQuery("select * from table_1
where id=\"" + id + "\"");
↑ ↑
| が入力されたログインIDが入っています。
がMySQL上に登録したカラムです。

Q1)なぜここで // 略 // where id = id");
としてはダメなのでしょうか?

Q2)私の購入した入門書にはここでの¥の用法が全く記されておりません。
 どういう事なのでしょうか?誰か教えて下さい。お願い致します。

178デフォルトの名無しさん:05/02/02 00:12:38
>>176
where id = id
これじゃただ
where id = idって文字列表示するだけになるじゃん…
\はエスケープシーケンス
今回の場合は
" "でくくってある文字列の中で"という文字を入れたくとも
入れたらそれが文字列の終端だと判断されてしまうので
それを回避するために\"と表現し区別させる
179デフォルトの名無しさん:05/02/02 00:56:50
>>177
SQLでは
select * from table_1 where id=id
ではだめで、これだとtable_1の列idをそれ自身と比較して同じ列
(つまりnull以外の全て)を抽出するSQLになります。この場合は、
select * from table_1 where id="id"
と書きたいわけです。こうすると、列idの値が"id"である列を抽出する
SQLになります。
これをJavaの文字列で書こうとすると、
文字列リテラルの開始と終端を表す文字「"」で前後を囲って
"select * from table_1 where id="id""
とすればいいと思うかもしれませんが、この場合文字列中の"が
文字列の終端と認識されてしまい正しくコンパイルしてもらえません。
こういう場合は、"ではなく\"と書きます。つまり、
"select * from table_1 where id=\"id\""
です。または、後の説明のために分けて書くとこうなります。
"select * from table_1 where id=\"" + "id" + "\""
文字列リテラルの中では「\"」で1文字として扱うことに注意して下さい。

ただ、これだとidの値は"id"で固定になります。ここで変数の値を参照させたい場合は
"id"を変数で置き換えて以下のように書きます。
"select * from table_1 where id=\"" + id + "\""
SQLの列名、SQLの文字列、Javaの文字列、Javaの変数名の4種類で同じシンボルidが
出てきますが、混同しないよう気をつけて下さい。

ところで、こんな説明もないその糞入門書のタイトルは何ですか?
今後の被害者を増やさないためにも、是非さらして下さい。
180デフォルトの名無しさん:05/02/02 01:19:27
普通SQLって文字列はシングルクォートでくくるもんだけど
ダブルクォートでもオッケーなん?
181デフォルトの名無しさん:05/02/02 01:31:07
統計では、SQLダブルでくくっちゃう人の多くは、like文でアスタかまします。
182デフォルトの名無しさん:05/02/02 01:38:59
abstractって何に必要なんですか?
interfaceもオーバーライドを強制しますよね?
役割がかぶっているような気がしてなりません
目的を教えて
183Java暦1ヶ月:05/02/02 01:41:31
>178,179さん
解決しました。ありがとう御座います。
本の名前は、
EclipseではじめるJavaプログラミング入門
です。教えて頂いて大変恐縮なのですが、リテラルについての
説明ページにホンの少し載ってました(-_-#)すみません。
細やかな解説本当にありがとうございましたo(^o^)o
184デフォルトの名無しさん:05/02/02 01:47:31
>182
interface ほんっとうにガワだけ共通化したい場合
abstract class 部分的に違う動作をするものをいろいろ作りたい場合

……いかがでしょう識者の皆様。
185デフォルトの名無しさん:05/02/02 01:50:43
そもそも等値じゃないだろ
アホか
186デフォルトの名無しさん:05/02/02 01:51:19
機能的には、abstract classだけが一部のメソッドを実装できたりするわけだが。
interfaceはそれができない代わりに多重継承が可能。
例えばtemplate patternやるならabstract classだろうなあ。
187デフォルトの名無しさん:05/02/02 01:53:38
>>185
脳内彼女がイケメンにでも食われたのか?
188デフォルトの名無しさん:05/02/02 02:02:40
>>187
スルーです。放置プレイ。
189177:05/02/02 02:10:37
>>179さん
すみません。ふと疑問に思ったのですが、
例えばDOS窓上でMySQLコマンドを入力したい場合。

   select * from table_1 where id="id"

ですよね。これをJavaのソース上で再現しようとする場合には
エスケープシーケンスでは ダブルクォーテーションは ¥”
なのですよね?そうしますと // 略 //  id = \" + id + \"");
で良いと思うのですがなぜダメなのでしょうか?

190デフォルトの名無しさん:05/02/02 02:15:18
>>184,>>186 thx
プラットフォーム毎(Javaで?)のロジックの差異を変更するばっかに備えたクラスを作る感じ?
ある程度機能は共通しているが、部分的に個別に書く必要がある場合もある
そんなときに使うのがabstractということでいいのかな?
191デフォルトの名無しさん:05/02/02 02:53:55
>>189
その場合、MySQLに対して以下のSQL文が実行されます。
select * from table_1 where id="+id+"
これが間違っているというのは分かりますよね?

この辺は繰り返し試してその結果を確認した方が理解が早いです。
Statement#executeQuery()を実行する前に、引数に指定した文字列がどうなっているか、
System.out.println()を使って確認するといいでしょう。
Eclipse使っているのでしたら、デバッグ・パースペクティブに切り替えて
デバッグモードで実行し、変数ビューの内容を見るのもいいかもしれません。
192デフォルトの名無しさん:05/02/02 07:17:19
クラスClassAが定義されていて、
ArrayList型ALが存在してるとします。

ClassA[] clA = (ClassA[]) AL.toArray();

でClassCastErrorが出るんですが、使い方間違っていますか?
193デフォルトの名無しさん:05/02/02 07:39:23
はい
194デフォルトの名無しさん:05/02/02 07:46:18
('A`)教えてくれませんか?
195デフォルトの名無しさん:05/02/02 07:56:31
>>192
ClassA[] clA = (ClassA[]) AL.toArray(new ClassA[AL.length]);
196デフォルトの名無しさん:05/02/02 07:58:43
>>194
Class[]←Object[] ではないから。
197194:05/02/02 08:20:16
ありがとうございました。
primitive型のときと同じことするんですね。
198194:05/02/02 08:21:58
>>195
わざとだと思いますが、lengthじゃなくてsize()ですよね。
199デフォルトの名無しさん:05/02/02 08:25:44
>>197
配列はprimitive型じゃないから同じなんだよ
200デフォルトの名無しさん:05/02/02 09:07:52
toArray()に与える配列のサイズは0でいい
201デフォルトの名無しさん:05/02/02 10:12:58
>>200
正しくは0以上なら何でもいい。
ただし、大きな数字を与えすぎるとOutOfMemoryError食らうかも。
202デフォルトの名無しさん:05/02/02 10:33:17
>>200
>配列のサイズは0でいい

と書かれると、List#size()を指定することが余計なように聞こえるんだけど、
別に「List#size()で指定する」よりも、「0で指定するほうが良い」というわけではないと思うんだけど。
今回のケースだと、List#size()を指定したほうが余計なインスタンスが生成されないと思う。

List#size()を指定する方は、自分でサイズ指定して作った配列に格納されて返ってくる。
0個の配列を作った場合は、型の判別だけに使用され、
toArrayの内部で(前者と同じように)Listの要素数に等しい配列が生成されるわけだ。

となると、0個の配列をnewしたことが無駄なインスタンス生成になるのではないでしょうか?
サイズを0で指定するんだったら、型指定のための定数として使うべき。

ClassA[] clA = (ClassA[]) AL.toArray(new ClassA[0]);
ClassA[] clB = (ClassA[]) AL.toArray(new ClassA[0]);
ClassA[] clC = (ClassA[]) AL.toArray(new ClassA[0]);
 ↓
private static final ClassA[] NULL_CLASSA_ARRAY = new ClassA[0];

ClassA[] clA = (ClassA[]) AL.toArray(NULL_CLASSA_ARRAY);
ClassA[] clB = (ClassA[]) AL.toArray(NULL_CLASSA_ARRAY);
ClassA[] clC = (ClassA[]) AL.toArray(NULL_CLASSA_ARRAY);

「サイズ0の配列を渡せばよい」というと、ソース上のあっちこっちで
new HogeHoge[0]というのが記述されることになっちゃわないかと心配。
どうせ0個の配列を生成するコストなんてたいしたことないのかな?
要素数0の配列で指定した場合の利点ってなんなんでしょうか?
203デフォルトの名無しさん:05/02/02 10:34:51
>>201
大きな数字を与えて、OutOfMemoryError食らうときに、
小さな数字を与えたら、OutOfMemoryErrorにならないの?
204デフォルトの名無しさん:05/02/02 10:36:01
>>202
キー叩く回数が減るだけだと思われ。
205デフォルトの名無しさん:05/02/02 10:45:52
>>203
>小さな数字を与えたら
OutOfMemoryErrorは
「メモリ不足エラー」だから
206デフォルトの名無しさん:05/02/02 11:50:03
>>204
キー叩く回数はむしろ増えてる
207デフォルトの名無しさん:05/02/02 12:11:30
>>206
キー叩く回数ってのは new ClassA[AL.size()] と new ClassA[0] の比較ね。

NULL_CLASSA_ARRAYだと ClassA[] NULL_CLASSA_ARRAY = null; を想像してしまう。
208202:05/02/02 12:21:55
>>207
おれもnullっぽいと思ったけど、
そのコードはEffective Javaを参考に書いた。
じゃあ、別にList#size()で指定している奴にたいして、
「おいおい、そりゃ0にしたほうがよいよ」って書き直せることではないってことだな。
209デフォルトの名無しさん:05/02/02 13:24:29
JSPの勉強をしているのですが例えば、

a1.jsp [ユーザにIDを入力して貰う。 uid = hoge]
a2.jsp [入力内容確認画面:登録ボタンを押し、a3.jspで登録処理を行なう]
a3.jsp [このjsp内部でDBへの登録を行なう。]

a3.jsp中での登録処理を実行する際に、a1.jspの中で使用している変数を
使用する際にはどうすれば良いでしょうか?同一パッケージ( プロジェクト)
にa1〜a3は、入っています。a1.jsp.uid と指定するのは誤りでしょうか?

210bus:05/02/02 13:36:30
String型配列をcahr型の配列に変換する方法がわかりません。わかる方
教えてください
211デフォルトの名無しさん:05/02/02 13:37:55
>>210
cahr…
212デフォルトの名無しさん:05/02/02 13:38:58
>>210
APIドキュメント見れば、そのものずばりの機能が書いてある。
213デフォルトの名無しさん:05/02/02 13:39:05
>>209
そう言う場合のためにsessionスコープ変数(sessionコンテキスト変数とかsession属性変数とも呼ばれる)がある
214デフォルトの名無しさん:05/02/02 13:41:24
このメソッド激しく打ちづらいんだよな
215デフォルトの名無しさん:05/02/02 13:41:38
>>209
a1.jspで
application.setAttribute("uid", hoge);
として
a3.jspで
String uid = application.getAttribute("uid")
とする。
applicationは、sessionの方がよいですが・・・
216デフォルトの名無しさん:05/02/02 13:42:22
>>209
a1.jspで
application.setAttribute("uid", hoge);
として
a3.jspで
String uid = (String) application.getAttribute("uid")
とする。
applicationは、sessionの方がよいですが・・・
217デフォルトの名無しさん:05/02/02 16:28:11
String型配列からchar配列というのは、
String[] s = { "aaa", "bbb", "ccc" };
を、
char[][] cc = { { 'a', 'a', 'a' }, { 'b', 'b', 'b' }, { 'c', 'c', 'c' } };
と等価に変換したいという意味か?

といじめてみる。
218194:05/02/02 17:19:09
>>200-202
to.Array()は配列サイズを適切な大きなの配列に直してくれて代入してくれるわけですかφ(..; ) メモメモ
219デフォルトの名無しさん:05/02/02 17:53:33
質問です。

コード変換(SJIS→UTF8)したのですが、どうすればいいのでしょうか?
Cみたいにiconv.h相当するものや命令があれば教えてください。
220デフォルトの名無しさん:05/02/02 17:59:42
>>219
変換したなら好きなようにすればいいじゃない
221219:05/02/02 18:35:26
すまん、間違えた。
って普通気づくだろ…


×: コード変換(SJIS→UTF8)したのですが
○: コード変換(SJIS→UTF8)したいのですが
222デフォルトの名無しさん:05/02/02 18:42:17
SJISで読み込んでUTF-8で書き出せばいい。
223デフォルトの名無しさん:05/02/02 18:59:55
>>219

byte[] sjis = { 省略 };
String s = new String(sjis, "Shift_JIS");
byte[] utf8 = s.getBytes("UTF-8");


Shift_JISよりWindows-31Jの方がいいかもね。
224デフォルトの名無しさん:05/02/02 20:15:11
>>220
ちとワロタw
225デフォルトの名無しさん:05/02/02 20:16:43
MS932とすれば分かりやすいよ
226デフォルトの名無しさん:05/02/02 22:06:09
失礼します、JDKを使って、
34,54.87,45,65,75,98,71,68,82
以上の数字をWhileを使わずに、昇順で並び替えるというものですが、よろしくお願いします
227デフォルトの名無しさん:05/02/02 22:07:30
>>226
forを使うのじゃ
228デフォルトの名無しさん:05/02/02 22:10:34
そういうことなのか?
229デフォルトの名無しさん:05/02/02 22:11:31
それとも再帰呼出しか?
230デフォルトの名無しさん:05/02/02 22:13:25
なるほどforですか。
今参考書を見てるのですが、十個の数値は条件のところに入れるのでしょうか?
231デフォルトの名無しさん:05/02/02 22:14:25
CDROMの中に画像データを入れ込んで、
HP(これもCDROMの中にある)上にあるボタンをクリックすると
全ての画像の中から条件にあう画像を選んで
HP上に表示する、
というようなプログラムをつくりたいんですが、
どこか参考になるサイトやスレってありますか!?
232デフォルトの名無しさん:05/02/02 22:17:29
>>226
int型のtest配列を100個用意して、
34ならtest[34]=1
みたいにしたらソートされるんじゃない?
233デフォルトの名無しさん:05/02/02 22:20:53
…test配列とは?
234デフォルトの名無しさん:05/02/02 22:23:20
>>233
testという変数名のint型の配列だと思う
まぁ、最後にループを使うことになりそうだが
235デフォルトの名無しさん:05/02/02 22:25:53
>>230
int test[] = {34,54.87,45,65,75,98,71,68,82}
for(int i = 0; i < test.length; i++){
  何らかの処理
}
236デフォルトの名無しさん:05/02/02 22:31:30
ありがとうございます、これで処理を続けれそうです。
237デフォルトの名無しさん:05/02/02 22:32:01
>>236
結局何がしたかったんだ?
238デフォルトの名無しさん:05/02/02 22:35:30
Stringをマルチバイト文字列で初期化してsubstring(1)とした場合、どの部分が返ってきますか?
239デフォルトの名無しさん:05/02/02 23:01:11

2文字目以降
240デフォルトの名無しさん:05/02/02 23:05:10
いいかげんCのchar配列感覚でJavaのStringを見るのはやめような。
まー、サロゲートペアなんていうものもあるが。
241デフォルトの名無しさん:05/02/02 23:10:55
>>174
よくわからんかったんで、仕方なくmanifestでクラスパス通しました
ありがとござました
242質問です:05/02/02 23:35:41
ファイルを読み込み、平均などをだすプログラムなのですが、どうすれば実行できるのかがわかりません。
おそらくファイルは読めるのですが、計算しようとすればエラーらしくNaNとでました。次にプログラムをはります。
243その1:05/02/02 23:40:09
import java.awt.*;
import java.awt.event.*;
import java.io.*;

class FrameForm extends Frame implements ActionListener{
int data_num=0;
double[] data = new double[100];
String line = null;
String data_list = "";
Label label1 = new Label("Average");
Label label2 = new Label("Varience");
Label label3 = new Label("Standard Deviation");
Label label4 = new Label("Set Data");
TextField text1 = new TextField("");
TextField text2 = new TextField("");
TextField text3 = new TextField("");
TextArea texta1 = new TextArea(3,10);
Button button1 = new Button("Load Data");
Button button2 = new Button("Calculate");
Panel pan1 = new Panel();
Panel pan2 = new Panel();
Panel pan3 = new Panel();
FileReader fr;
BufferedReader br;
244その2:05/02/02 23:41:41
public FrameForm(){
setSize(300,300);
setLayout(new BorderLayout());
add(pan1,BorderLayout.SOUTH);
add(pan2,BorderLayout.CENTER);
add(pan3,BorderLayout.NORTH);

pan1.setLayout(new FlowLayout(FlowLayout.RIGHT));
pan1.add(button1);
pan1.add(button2);

pan2.setLayout(new GridLayout(6,1));
pan2.add(label1);
pan2.add(text1);
pan2.add(label2);
pan2.add(text2);
pan2.add(label3);
pan2.add(text3);

pan3.setLayout(new BorderLayout());
pan3.add(label4,BorderLayout.NORTH);
pan3.add(texta1,BorderLayout.CENTER);

button1.setActionCommand("load");
button1.addActionListener(this);
button2.setActionCommand("calc");
button2.addActionListener(this);
}
245その3:05/02/02 23:44:28
public void actionPerformed(ActionEvent e){
if(e.getActionCommand()=="load"){

try{
fr = new FileReader("./test.txt");
br = new BufferedReader(fr);
}catch(FileNotFoundException e2){
texta1.setText("Data file not found.");
return;
}

try{
while((line = br.readLine()) != null){
data[data_num] = Double.parseDouble(line);
data_num++;
}
}catch(IOException e3){
System.out.println(e3);
}

for(int i =0;i<data_num;i++){
data_list += (Integer.toString((int)(data[i]))+ " ");
System.out.println(Double.toString(data[i]));
}
246その4:05/02/02 23:46:51
texta1.setText(data_list);
button1.setVisible(false);
}else if(e.getActionCommand()=="calc"){
if(data_list == null){
texta1.setText("Need Load Data.");
}else{
text1.setText(Double.toString(Calc.average(data,data_num)));
text2.setText(Double.toString(Calc.varience(data,data_num)));
text3.setText(Double.toString(Calc.standard_deviation(data,data_num)));
}
}
}
}
247その5:05/02/02 23:47:40
class FrameMain{
public static void main(String[] args){
FrameForm ff = new FrameForm();
ff.setVisible(true);

ff.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
248その6:05/02/02 23:48:54
class Calc{
static double average(double num[],int n){
double average = 0;
for(int i=0;i<n;i++){
average += num[i];
}

return average/n;
}

static double varience(double num[],int n){
double varience = 0;
for(int i=0;i<n;i++){
varience += Math.pow(num[i]-average(num,n),2);
}

return varience/n;
}

static double standard_deviation(double num[],int n){
return Math.sqrt(varience(num,n));
}
}
249質問です:05/02/02 23:51:41
以上で終わりです。長くて、省略されていたりしてすいません。とにかく困っています。どうぞよろしくお願いします。
250デフォルトの名無しさん:05/02/02 23:53:41
ソースみないでレス。
NaNってあるけどparseIntしとるけ?
251デフォルトの名無しさん:05/02/03 00:06:50
>>249
クラスFrameMainの閉じカッコがないけど、それをつければ動くよコレ。
動かした手順書くわ。
(1) 下の2行のテキストファイルtest.txtを用意。
---ここから
3
5
---ここまで

(2) プログラムを実行して、[Load Data]ボタンを押す。
テキストエリアに
3 5
と出力される。

(3) [Calculate]ボタンを押す。
平均と分散と標準偏差が出力される。
252251:05/02/03 00:11:28
>>250
ちなみに、、数値変換できない文字列に対して
「Integer.parseInt()は例外投げる」
「Double.parseDouble()はNaNを返す」
だったと思うよ。
253>>252:05/02/03 00:30:34
ありがとうございます。今からやってみます。
254>>252:05/02/03 00:48:54
3と5の2行でやるとできました。
ですが、数字を増やしてやってみる(例えば3、4、5、など)と計算結果はでるのですが、SetDataには何も出ません。どうしてでしょうか?
255デフォルトの名無しさん:05/02/03 01:15:16
Integer.parseInt()とDouble.parseDouble()って微妙に動作が違うのがアレだな。
Integer.parseInt(" 1") (←1の前に半角スペース入り)はNumberFormatException()発生。
Double.parseDouble(" 1.1") (←1の前に半角スペース入り)は普通にdouble値を返す。


256>>252:05/02/03 01:15:45
3と5の2行でやるとできました。
ですが、数字を増やしてやってみる(例えば3、4、5、など)と計算結果はでるのですが、SetDataには何も出ません。どうしてでしょうか?
257なぜ?:05/02/03 01:28:33
あの、プログラムはいじっていないのに3と5の2行のもできなくなりました。なんで…??
258デフォルトの名無しさん:05/02/03 01:31:56
そこを四苦八苦して突き止めるのがプログラマだ
259デフォルトの名無しさん:05/02/03 01:34:55
今気づいたんですけど、最初にうまくいったときは、ターミナル上にdouble型で入力されたのがでていました。
ですが、SetDataがでないときはこうゆうのがでます。
apple.awt.EventQueueExceptionHandler Caught Throwable :
java.lang.NumberFormatException: empty String
at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:986)
at java.lang.Double.parseDouble(Double.java:202)
at FrameForm.actionPerformed(FrameMain.java:67)
at java.awt.Button.processActionEvent(Button.java:381)
at java.awt.Button.processEvent(Button.java:350)
at java.awt.Component.dispatchEventImpl(Component.java:3598)
at java.awt.Component.dispatchEvent(Component.java:3439)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:450)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:230)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:177)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:99)
260デフォルトの名無しさん:05/02/03 01:35:51
>>257
AppTrace=onがあるんだから、
1行おきにprintlnとかすればつきとめられると思うんだが。
デバッグしたことないの?
261デフォルトの名無しさん:05/02/03 01:37:22
すまん。誤爆です。。
262デフォルトの名無しさん:05/02/03 01:38:08
あの、デバックって…?すいません。
263デフォルトの名無しさん:05/02/03 01:54:37
>>259
エラーメッセージの 2 行目以降に注目。

>java.lang.NumberFormatException: empty String
数値フォーマットの例外(エラー)が発生:文字列が空っぽ

>at java.lang.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:986)
FloatingDecimal.java の 986 行目で発生してるよ

>at java.lang.Double.parseDouble(Double.java:202)
その処理は Double.java の 202 行目から呼ばれているよ
  :
(以下省略)

このように、エラーメッセージをキチンと読めば初歩的なミスは大抵解るよ。
がんがれ。
264>>263:05/02/03 02:04:17
丁寧にありがとうございます。
挑戦してみます。
265デフォルトの名無しさん:05/02/03 02:14:13
>java.lang.NumberFormatException: empty String
数値フォーマットの例外(エラー)が発生:文字列が空っぽ

ここで私側にミスがあったのがわかりました。test.txtを作成するとき、最後の数字を入れた後に改行したのがだめでした。
266デフォルトの名無しさん:05/02/03 03:23:18
小学6年生ぐらいの色白で髪が長くて大人しい赤いリボンとフリフリフリルの可愛い服がトレードマークの学校一の人気者美少女小学生が266をゲットなの
267デフォルトの名無しさん:05/02/03 04:57:11
頼むから犯罪だけはしないでくれ
268デフォルトの名無しさん:05/02/03 05:54:02
ArrayListにint型をaddする方法を教えてください(;´Д`)
269デフォルトの名無しさん:05/02/03 06:15:19
>>268
1.4以前のJDKの場合は,
ArrayList list = new ArrayList();
list.add(new Integer(5));
のように,Integerクラスに包んで入れなければならない。
また,list から取り出すときも,
int num = ((Integer)list.get(0)).intValue();
のように元のint型にキャストすること。

JDK5ならオートボクシング・アンボクシングが働くから,こういう作業を裏で自動でやってくれる。
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(5);
int num = list.get(0);
というコードがそのままコンパイルできる。
270デフォルトの名無しさん:05/02/03 07:36:41
>>269
Integerだったんですね。ありがとうございます。
int型だとArrayListのインデックス値と認識されてしまって困っていました。
JDK5の方はgenericsでしたっけ。
やっと、ありがたみがわかりました。
JDK5は入れてないんですが、JDK1.4以前のコードはJDK5でも認識するんですよね?
271デフォルトの名無しさん:05/02/03 08:12:20
>>270
>JDK1.4以前のコードはJDK5でも認識するんですよね?
はい。
明示的に1.4のコードと指定してコンパイルする(5.0特有の機能を使っているとエラーを出す)場合には,javac のコンパイルオプションとして -source 1.4 を指定して下さい。

>>269のコードでは,5.0のgenericsと,オートボクシング・アンボクシングの機能を使ってます。
オートボクシング・アンボクシングは,今の例なら int 型と Integer クラスの変換が必要になった場面で,暗黙の内に自動的にその変換を行ってくれる機能です。

genericsは,ArrayListに<Integer>を付加することで,listの要素が Integer 型のインスタンスのみであることを保証します。これを使わないと,

ArrayList list = new ArrayList();
list.add(5); // ここはオートボクシングで暗黙の new Integer(5) がなされて Integer 型オブジェクトが入る
int num = list.get(0); // リストから取り出したものが Integer 型オブジェクトとは限らないので,アンボクシングできず,コンパイルエラー発生

となってしまいます。この場合でも,
int num = (Integer)list.get(0);
とすれば,Objectが一度Integerにキャストされた後,更にアンボクシングが働いてint型に変換されますので,警告付きですがコンパイルできます。

ですが,listに Integer しか入れないのであれば,ArrayList<Integer> と明示しておくことが推奨されます。
272デフォルトの名無しさん:05/02/03 11:29:47
>>271
丁寧な解説ありがとうございます。

>オートボクシング・アンボクシングは,今の例なら int 型と Integer クラスの
>変換が必要になった場面で,暗黙の内に自動的にその変換を行ってくれる機能です。
ということは、
(1) JDK5スタイルでコーディングしてJDK5でコンパイルしても
(2) JDK1.4スタイルでコーディングしてJDK1.4でコンパイルしても
classファイルレベルでは変わりないということですか?
つまり、バージョン1.4のVM上で(1)のclassファイルが実行可能、
かつバージョン5のVM上で(2)のclassファイルが実行可能(これは当たり前)ということですか?
273デフォルトの名無しさん:05/02/03 11:57:16
実行型JARの中でライブラリを使う方法についてなのですが
Test
- MANIFEST.MF
- Test.class(プログラム中でlib.jarを使っている)
- lib.jar
という配置でMANIFEST.MFに
Manifest-Version: 1.0
Main-Class: Test
Class-Path: lib.jar
にしてjar cvfm Test.jar MANIFEST.MF Test.class lib.jar
でJARを作っても実行できません。どこが間違っているでしょうか。
アドバイスお願いします。
274デフォルトの名無しさん:05/02/03 12:48:03
>>273
lib.jarはtest.jarに入れるんでなくて、
test.jarと同じフォルダに置いとくんでないの?
275デフォルトの名無しさん:05/02/03 14:02:29
>>273
まにふぇすとに
Extension-Name: lib.jar
を追加してみてください。
276デフォルトの名無しさん:05/02/03 14:56:07
>>274
そうやる人もいるみたいなんですが配布時にJARファイルだけにしたいので
>>275
できないようです・・・ライブラリをjarにしないで解凍しておけばできるんですが
277デフォルトの名無しさん:05/02/03 14:56:11
質問というよりは確認なんだが、try-catchでcatchが複数あった場合、
上から順番に適合を見てくの?
try{}
catch (IOException e) {}
catch (InterruptedIOException ioe){}
ってあった場合、
InterruptedIOExceptionはIOExceptionに食われる?

278デフォルトの名無しさん:05/02/03 15:12:54
>>272
いえ,たとえただの Hello World プログラムであっても,
5.0でそのままコンパイルしてできるclassファイルは,
1.4のJREでは動きません。
5.0のjavacで,1.4でも実行できるclassファイルを生成するには,
コンパイルオプションに -source 1.4 を指定して下さい。
しかし,その時は,ソースにはオートボクシングやgenericsなどの
5.0用拡張機能は使えなくなります。

1.4と5.0の互換性の少なさに悩みますね。α版Tigerの時のように
-source 1.5 -target 1.4 のコンパイルができれば嬉しいのですが。
279デフォルトの名無しさん:05/02/03 15:32:47
>>226
java.util.Arrays#sortのAPI読め!
280デフォルトの名無しさん:05/02/03 15:45:10
>>277
聞く前に自分で試してみたのかよ。
281デフォルトの名無しさん:05/02/03 15:54:21
JAVAを始めようと思うんですけど、
- J2SE 5.0
- J2SE 1.4.2
どちらをダウンロードすればいいんでしょうか?
282277:05/02/03 16:08:47
>>280
言い直す。

以下だと
try{}
catch (IOException e) {}
catch (InterruptedIOException ioe){hoge();}
hogeが実行されなかったが、

以下だと
try{}
catch (InterruptedIOException ioe){hoge();}
catch (IOException e) {}
hogeが通った。

で、仕様上これが正しいのか、と。
283デフォルトの名無しさん:05/02/03 16:09:07
>>281
両方。
284デフォルトの名無しさん:05/02/03 16:12:00
>>282
14.19.1 try-catch の実行
http://www.y-adagio.com/public/standards/tr_javalang2/statements.doc.html#24134

> tryブロックの実行が値 V の throw のために中途完了した場合,次の選択が存在する。
>   * V の実行時の型が,try 文の幾つかの catch 節の Parameter に代入可能(5.2)ならば,そのうち最初の (最も左の) catch 節が選ばれる。
>    その値 V が選ばれた catch 節の仮引数に代入され,catch 節の Block が実行される。そのブロックが正常完了すれば,try 文は正常完了する。
>    そのブロックがなんらかの理由によって中途完了すれば,try文は同じ理由で中途完了する。
285277:05/02/03 16:21:21
>>284
仕様なのね。きちんと理解できた。さんきゅうすこ。
286デフォルトの名無しさん:05/02/03 17:00:18
ちょとと可能かどうか伺いたいんですが、
BCELとかJava5の機能(クラスファイルのバイトコードを扱える機能が加わりましたよね)で
コンパイル済みのクラスファイルの中をいじくって、Threadクラスを独自実装のThreadクラスに置き換える
とかいうこと(Threadを継承したクラスとかに)はできますでしょうか?
javaのTreadクラスそのものを独自の実装に変えたいというわけではありません。Threadクラスが使われている
場所を任意実装のクラスに置き換えたいというだけです。
 おねがいします。
287286:05/02/03 17:25:31
java Assistなどでもいいです。追加です
288デフォルトの名無しさん:05/02/03 17:34:42
>>278
HelloWorldレベルでもそんなことが起きるんですか(;・∀・)
勉強になりましたm(_ _)m
289デフォルトの名無しさん:05/02/03 17:37:54
>>286
java.*、javax.*、sun.*、などのパッケージに含まれるクラスに
手を突っ込むのはライセンスに抵触するような。

そうでないなら、そんな大掛かりな事しなくても済むだろうし。
290286:05/02/03 17:47:30
>>289
ええ、そこらへんをいじるつもりはありません。Threadの使われている地点に
あたかも独自実装のThreadクラスを継承したクラスを置きたいんです。

つまり、Threadクラスの使われている場所に追加機能を加えたいという事ですね。
クラスファイルから。ソースレベルでは考えていません。結果的にできれば手段は何でもいいです。
そんなことできますでしょうか?
291デフォルトの名無しさん:05/02/03 17:50:31
>>290
技術的にはできる。ライセンス的に許されるかは知らん。
292286:05/02/03 17:51:16
>>289
すいません。おっしゃってる事の意図を勘違いしてました。
java.*、javax.*、sun.*、とかの中で使われているThreadクラスの部分を置き換えたらまずい
って話ですね。

とりあえず、開発者が書いた部分だけできればいいです。(でも、ソースの書き換えさえしな
ければ起動時の構成を変えるという手段をとっても大丈夫なのでしょうかね?)
293286:05/02/03 17:54:04
実行時だけjava.*、javax.*、sun.*、の中で使われているThreadの部分を置き換える
という事はできるんでしょうか(sun配布のクラスファイルを書き換えたりせずに)
294デフォルトの名無しさん:05/02/03 17:57:43
>>293
それらのクラスはブートストラップクラスローダが読み込む可能性が高いので技術的にも若干面倒になるかも。
ライセンス的にも相当ヤバいと思われ。
295デフォルトの名無しさん:05/02/03 19:42:19
>>293 SwingWTっていうSwing/AWT互換ライブラリの例だけど
参考になると思う。

http://swingwt.sourceforge.net/faq.php
>Q. Couldn't you have used the java.awt.*/javax.swing.* package names? I have to search/replace all my code before I can use this stuff!
>A. Yes and No. Yes, technically it can be done, but it requires
> deployment to jre/lib/endorsed for javax.* packages (making it
> tougher to deploy apps). Other disadvantages are that the
> default Sun classloader will refuse to load anything starting
> with java.* (so you need to override the classloader), and the
> big worry that classes might get merged from the real AWT/Swing.
>
>You can also use various Java pre-processors or Ant to change your code at build time for you.

つーわけで、SwingWTではSunのJREと組み合わせて使うときには
置き換えをやらずに別のパッケージ名を使ってる。
gcjの場合はまた話が違うんだけど。
296デフォルトの名無しさん:05/02/03 20:57:59
int の i は小文字なのに StringのSが大文字なのはStringがクラスだからですか?
297デフォルトの名無しさん:05/02/03 21:00:12
>>296
そーです。
298デフォルトの名無しさん:05/02/03 21:04:02
ルービックキューブの解法プログラムって簡単にできる?
見切り発車で作り始めちゃったんだが
299デフォルトの名無しさん:05/02/03 21:53:22
perlのsplitみたいなのはありますか?
300デフォルトの名無しさん:05/02/03 21:55:50
>>298
Javaの質問じゃないな
301デフォルトの名無しさん:05/02/03 22:10:34
>>299
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/String.html#split(java.lang.String)
これ以降はAPI仕様を読んでから質問するようにしましょう。
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html
302デフォルトの名無しさん :05/02/03 23:10:08
なめとんのかコラ!・・・てゆうかどうせーっちゅうんやワレ?
HTTPステータス 500 -
説明 The server encountered an internal error () that prevented it from fulfilling this request.
例外
javax.servlet.ServletException: サーブレットインスタンスを割り当て中のエラーです
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705)
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
java.lang.Thread.run(Thread.java:534)
原因
java.lang.NoClassDefFoundError: Cashsqlserv (wrong name: fweb/Cashsqlserv)
java.lang.ClassLoader.defineClass0(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:539)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
303デフォルトの名無しさん:05/02/03 23:11:26
そのままだよなあ。
304デフォルトの名無しさん:05/02/03 23:14:09
>>302
web.xml見直せ。
305デフォルトの名無しさん :05/02/03 23:21:36
>>304
うほ!あんちゃんすげーなぁ
web.xmlの<url-pattern>ちょいイジッたらメッセージ変わったぞ
HTTPステータス 404 - /fweb/Cashsqlserv
type ステータスレポート
メッセージ /fweb/Cashsqlserv
説明 The requested resource (/fweb/Cashsqlserv) is not available.

げな
306デフォルトの名無しさん:05/02/03 23:25:58
printfみたいなのありませんか?
307デフォルトの名無しさん:05/02/03 23:28:38
>>306
printfってのがあるよ。
308デフォルトの名無しさん:05/02/03 23:30:41
>>276
jarの中でjarを読むのは無理
ライブラリを全部classに分解して、自分のclassと合わせて一つのjarにする
ただライセンス的に問題あるかも
309デフォルトの名無しさん:05/02/03 23:31:00
>>307
5.0〜だっけ?
310デフォルトの名無しさん:05/02/03 23:55:59
Javaでmidiを扱いたいのですが、ドラム音色の出し方がわかりません。
以下のように、コントロールチェンジを使おうとしたのですが、正しく送信されていないようです。


Synthesizer synth = MidiSystem.getSynthesizer();
MidiChannel channel[] = synth.getChannels();
synth.open();
Soundbank soundbank = synth.getDefaultSoundbank();


channel[10].controlChange(0,127);  //バンクセレクトMSBに127を送信
channel[10].controlChange(32,0);  //バンクセレクトLSBに0を送信
channel[10].noteOn(42, 127);
Thread.currentThread().sleep(300);
channel[10].noteOff(42);

synth.close();

どうしたらいいのでしょうか。
Javaのmidi関連のクラスを使うのは初めてなので、根本的に勘違いをしているのかも知れませんが、
よろしくお願いします。
311デフォルトの名無しさん:05/02/03 23:57:45
System.out.println("Hallow World.");
312デフォルトの名無しさん:05/02/04 01:14:41
>>310
midi直接はいじってないけどmidiファイル流して
とちゃんとなってるってことはたぶん動くんだよなぁー

サウンドバンクは本当に読み込まれてる?
JREには標準で入ってないけどSDKには入ってるんでコピーが必要だったりするよー

ちなみにサウンドバンクはサイズ的に小中大とあるけど大の音色きにいらねー
313デフォルトの名無しさん:05/02/04 01:15:54
>>292
置き換えるってのが微妙だけど、バイトコードを書換えるのが目的なの?
それとも動作がかわってくれればOKなの?
後者でいいなら、ダイナミックプロキシで普通にできそうな気がするんだけど。
java.lang.reflect.Proxy
Proxy provides static methods for creating dynamic proxy classes and instances, and it is also the superclass of all dynamic proxy classes created by those methods.
314310:05/02/04 01:24:36
>>312
ありがとうございます。
>サウンドバンクは本当に読み込まれてる?
についてはよく判りませんが、
上のソースをtryで括ってエラーをchachするようにしましたが、特に何もありませんでした。

というか、channel[9]としたら(0から始まっているので、midiチャンネル10を選んだ形)
一応ドラムの音が鳴らせました。
ほとんどのmidi音源で、ch10が予めリズム音色を鳴らすように割り当てられているおかげだと思うのですが、
(要するに肝心のコントロールチェンジは送信されてないみたいですが)
一応ドラム音色を出す手段が見つかったので、これで妥協します。
315デフォルトの名無しさん:05/02/04 01:41:10
javaでのHTML解析で、EMBEDタグを検出したいのですが、
ニーモニック定数には登録されていないようなので、どのようにしたらいいのか、
途方にくれています。
HTML.unknowtagクラスを使うといいのかも?という所まではわかったのですが、
具体的な使い方がわかりません。

unknowntagクラスについては全く見当違いの事をいっているかもしれませんが、
どなたかご教授願います。
宜しくお願いします。
316デフォルトの名無しさん:05/02/04 01:47:58
>>314
GM準拠なのであまり凝ったことはできないと思ってたほうがよかったかな

JavaSoundいじったのだいぶ前なので後で調べてみるわ
基本的に10chだけだと思っていいと思う

コントロールチェンジはボリュームとかだけは確認したような
317デフォルトの名無しさん:05/02/04 02:02:42
hello world
318デフォルトの名無しさん:05/02/04 04:43:56
>>315
隣のJava宿題スレッドの>>30に、同じようなHTMLタグを解析してる
プログラムが載ってるよ。。。
319デフォルトの名無しさん:05/02/04 06:12:24
HTMLを自分でパースするのが面倒なときはJTidyなんかも使える。
320286:05/02/04 10:21:30
>>313
はい、動作さえ変わってくれればOKです。
321286:05/02/04 10:26:33
>>295
ありがとうございます。
322286:05/02/04 11:25:19
>>313
動的プロキシってのは、ソースを改変せずに使う事ってできるんでしょうか?
(BCELとかJava Assistとか使ってプロキシクラスの呼び出しを無理やり挿入すればもちろん
できるでしょうが、とりあえず、そういった方法はとらずに)
323231:05/02/04 11:31:04

>>231わかる方いましたらお願いしますm(_ _)m
324デフォルトの名無しさん:05/02/04 12:53:57
>>323
CD-ROMの中にホームページがあるとは一体何なのか・・・・?
325231:05/02/04 14:10:56
>>324
わかりづらくてすいません。。
HPというか、IEなどのブラウザで見れる
html形式のファイルをファイルの中に入れておくってことです。

それで、そのhtml上にボタンとかをつけて、
選択して、クリックするとデータがプログラムに送られて、
プログラムがhtml形式で返して、それをブラウザ上で表示する、
みたいな感じです。

(これでもわかりづいか。。。_| ̄|○
326231:05/02/04 14:11:42
間違えました_| ̄|○

>ファイルをファイルの中に
ファイルをフォルダの中に
327デフォルトの名無しさん:05/02/04 14:19:49
>>325
JAVA宿題スレというのがあるので、そちらで聞いてみれば
運が良ければ、プログラムが来るかも
328デフォルトの名無しさん:05/02/04 14:20:51
>>325
その画像はどこにあるのさ。そしてプログラムはどこにおくのさ。
CDROMの中のHTMLからサーバ上のプログラム(Servletとか)と通信するのか?
それともローカルで完結するのか?
そういうのいちいちこのスレでやりとりするの無理じゃねーか?
329デフォルトの名無しさん:05/02/04 14:21:33
>>325
あまりにもツッコミどころが多くて釣りっぽく見えるので
とりあえず確実に参考になるURLだけ挙げておきますね

ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/
330デフォルトの名無しさん:05/02/04 17:18:16
Tomcat5.5とJDK5.0を使ってるのですが、ジェネリクスが機能してないように思います
何か特別な設定が必要なのでしょうか?
331デフォルトの名無しさん:05/02/04 17:27:54
>>330
何をもって「特別な設定」と呼んでいるのかは知りませんが
少なくとも、あなたの環境に施されていない設定が必要なんでしょうね

自分の設定すら満足に示さない方への回答としてはこれで充分ですよね
332デフォルトの名無しさん:05/02/04 17:48:02
混乱するたびに聞きにきてスマン。
synchronizedについてなんだが、
例えば

synchronized(this){ hoge(); }

とか書くと、複数のスレッドからでもこのブロックは同期されるよな?(日本語変だけど)

synchronized(new hanage()){ hoge(); }

こうすると、このブロックが呼ばれるたびにオブジェクトが生成されるから、
その都度新しいオブジェクトのロックを取得していて、意味が無いということで
良いよな?この時点で違ってたら突っ込みぷりいず。

つまり、
synchronized( xxxx )
のxxxxの部分のオブジェクトは端的に言うと『ロックというフラグを提供しているだけ』なのか?
333デフォルトの名無しさん:05/02/04 17:55:42
アプレット上にdrawメソッドで線や図形を描画する際に
その描画速度の変更をしたいのですが可能でしょうか?
よろしくお願いいたします
334デフォルトの名無しさん:05/02/04 20:13:56
>>331
ぜんぜん十分じゃない。
335231:05/02/04 20:25:57
>>328
えと、画像もプログラムもCDの中です。
ローカルで完結したいと思ってます。
ここで聞くのはダメですかね。。

>>329
釣りではないんですが。。
URLどもです。
でもよくわからない。。。(´・ω・`)
336デフォルトの名無しさん:05/02/04 20:54:17
CD-ROMの中に鯖を立てようとしてるな。
無理だ。
Javaアプリ→条件判断で画像収集→Javaアプリに表示
これくらいで諦めたらどうだ。
表示の段階でHTMLに出力できるようにすればいいだろう。
337231:05/02/04 20:57:25
>>336
あ、サバになっちゃうんですか。。

特にhtmlにこだわってるわけではないんですが、
それが一番きれいに出力できる方法かなと思いまして。
Javaアプリってアプレットってことですか!?
338デフォルトの名無しさん:05/02/04 21:08:33
アプリケーション
339デフォルトの名無しさん:05/02/04 21:48:48
>>331
JDK5.0とTomcat5.5を普通にインストールしただけなのでなんと答えたらよいのか。
オートボクシングやジェネリクスが使えない以外(つまり従来のコードは)動くので「特別な設定?」と書いたのです。
340デフォルトの名無しさん:05/02/04 21:58:27
>>332
正解
341デフォルトの名無しさん:05/02/04 22:13:50
>>339
確かに初期設定だとJSPの中で文法エラーになるね。
どこかに設定があるのかな・・・
342デフォルトの名無しさん:05/02/05 00:15:11
>>332
ロックというフラグっていう表現がアレだけど、
まあ、それでわかってるならいいんじゃない?
xxx部分はロック対象なんですよ。
当然同じロックを取ってる同士じゃなきゃ排他制御されない。
343313:05/02/05 00:17:17
>>322
そうです。ソースの改変なんてしません。
てゆっかAPIリファレンスは見た?せっかくクラス名書いてあげたのにw
せっかくだから
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/reflection/proxy.html
も教えてあげよう。
344デフォルトの名無しさん:05/02/05 00:22:02
偉そうなこと言った>>331はとんずらか
345デフォルトの名無しさん:05/02/05 01:00:15
>>343
標準APIで使用されている既存のクラスの挙動を変えたいなら java.lang.reflect.Proxy では不可能なのでは?
346デフォルトの名無しさん:05/02/05 01:01:45
そもそも標準クラスがロード時に改変されるなんてことがセキュリティ的にあっていいのか。
347332:05/02/05 01:15:31
>>340
>>342
ありがd
どうも頭の中セマフォなんで混乱しててさ。
モニタって例えば、

synchronized(hanage)

ってなってたとすると、
hanageオブジェクトが現在のスレッドを管理する、と。
あるスレッドを管理中だった場合、他のスレッドをwait()する、と。
言い方むずかし。

ともかく、理解は出来た。さんくすこ。
今度はケーキもってくるよ。
348209:05/02/05 01:19:42
質問したのに返事が遅くなりすみません。

>>213さん
セッション関係の知識が全く無かった為にぐぐって
http://ash.or.jp/java/webapp_scope.htm
を見て勉強していました。(難しい・・・)

>>215さん
a1.jspで
<% application.setAttribute("uid", uid); %>
  としてダメだったので
<% request.setAttribute("uid",uid); %>

としてもエラーが出てしまいます。

※uid は

<input type="text" name="uid" size="50" maxlength="20"><p>

という風に同一 a1.jsp 内に入力しています。

何が原因なのでしょうか?




349デフォルトの名無しさん:05/02/05 01:51:46
>>345
既存のクラスじゃなくて、Threadを継承したユーザークラスだと思ってたんだけど。
話の流れから?違うの?
350デフォルトの名無しさん:05/02/05 02:34:42
>>347
>あるスレッドを管理中だった場合、他のスレッドをwait()する、と。

これは間違い。
hanageオブジェクトが明示的にスレッドをどうこうするのではなく、
スレッドがhanageオブジェクトのロック状態を見て自主的に待機するだけ。

synchronizedブロックが一箇所ならどっちの認識でも変わらないけど
複数箇所になると正しく認識してないと混乱するぞ。
351デフォルトの名無しさん:05/02/05 03:35:27
>>348
uidが変数ではなく、フォームからのパラメータなら
session.setAttribute("uid", request.getParameter("uid");
としてみてください
352デフォルトの名無しさん:05/02/05 06:35:37
最近仕事がないんですが、どうすればいいですか?
353デフォルトの名無しさん:05/02/05 07:54:07
探す仕事を変えることだ
354デフォルトの名無しさん:05/02/05 12:54:29
今eclipseでJAVAを勉強しています。
JAVAでエクセルファイルを読み込んで書き込みをやりたいのですが、
どうすればよろしいのでしょうか?

たとえば、読み込みシートのB3,C3から読み込み、データを編集し
書き込みシートB3、C3に書くっていった具合です

よろしくお願いいたします。
355デフォルトの名無しさん:05/02/05 13:49:56
356デフォルトの名無しさん:05/02/05 16:37:06
>>352
もっと検索しろよ
人材派遣サイトをかえてみなよ。
357デフォルトの名無しさん:05/02/05 16:49:03
つーか、今時プログラマなんて本当に仕事がないだろ。
あきらめい。時流だ。
一時派遣やってたけど、結局転職したよ。
まだプログラミングは嫌いじゃないので、今は趣味プロとして
気楽にやってるよ。
358デフォルトの名無しさん:05/02/05 17:49:17
いまだにVBプログラマを募集してるような安定企業もあるけどな
359286:05/02/05 18:07:46
>>349
その通りです。ですが、理想を言えば、標準APIの中で使われた場合も置き換え
られたら最高ですね。
360デフォルトの名無しさん:05/02/05 18:38:40
すいません。
servletで各画面からの受け取った<name>のvalueを判別する方法って、
if(xxx.quauls(value1)) {
〜〜〜〜〜〜
}
else (xxx.quauls(value2)) {
〜〜〜〜〜〜〜
}
else (xxx.quauls(value3)) {
〜〜〜〜〜〜
}
って方法しかないのですか?
もっとスマートなやり方があれば
教えてください。
361デフォルトの名無しさん:05/02/05 19:15:27
すみません、教えてください。
本にのっとって初めてソースファイルをコンパイルしてみたのですが、
'c:\windows' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません
と表示されて何をすればいいのかわからなくて途方にくれています。
この場合どうしたらいいのでしょうか。
362デフォルトの名無しさん:05/02/05 19:18:23
>>361
どうやったらそうなったんでしょうか!?
363デフォルトの名無しさん:05/02/05 19:19:21
Javaのウィンドウズアプリケーションを作りたいのですが、
全然作り方がわかりません。。

もし詳しく載っているHP等を知っている方いましたら教えてください。
364デフォルトの名無しさん:05/02/05 19:21:55
>>363
そーゆー書き方だとこっちがどんなURL載せるかぐらいわかるだろ?
365363:05/02/05 19:32:41
>>364
なるべく初心者でもわかりやすいところがいいんですけど。
366デフォルトの名無しさん:05/02/05 19:40:06
367デフォルトの名無しさん:05/02/05 19:44:55
368デフォルトの名無しさん:05/02/05 19:50:49
JPanelにGraphicsで図形描画して、描画範囲がパネルのサイズを超えたときに
自動でスクロールバーをつけられるようにするにはどうすればいいんだー
369デフォルトの名無しさん:05/02/05 19:53:29
>>357
同じく趣味でいいな

徹夜は嫌
370361:05/02/05 20:17:58
いや、釣りとかじゃなくてマジなんですよ_| ̄|○
何がどうなってこうなってるのか自分でもよくわからんのです。
切実に解決方法を知りたいんです。
OS入れなおしたら直るんでしょうか。
371デフォルトの名無しさん:05/02/05 20:21:32
>>370
javac から打ち込むのじゃボケ
372デフォルトの名無しさん:05/02/05 20:21:46
OS入れなおして直ると思うなら
そうすればいいじゃない。

何の本見たのかも分からないし、その本に忠実に従ってやったのかも分からないし。
373デフォルトの名無しさん:05/02/05 20:25:19
Java 入門 | Howdy, Java!
http://msugai.fc2web.com/java/howdy.html
374デフォルトの名無しさん:05/02/05 20:40:30
import java.applet.Applet;
import java.awt.Graphics;
public class main extends Applet{
  public void paint(Graphics g){
    g.drawLine(10, 10, 100, 100);
}}

<html><body>
<applet code="main.class" width="200" height="200"></applet>
</body></html>

で上手くアプレットで線が表示できません。
もちろんブラウザにJavaappletをインストールして無いなんて事は無いのですが、
どうも自分の書いたコードが動きません。
どこがおかしいのでしょうか?
375デフォルトの名無しさん:05/02/05 20:49:48
>>374
htmlとclassが同じディレクトリにちゃんとある?
376374:05/02/05 21:30:29
>>375
あります。
Eclipseで開発してるのですが、javaソースに文法エラーはありませんし、
g.drawLine()ではなくg.drawString()でもやってみましたが
こっちも動きませんでした。
クマッタ・・・
377デフォルトの名無しさん:05/02/05 21:34:44
バージョン
378デフォルトの名無しさん:05/02/05 21:35:37
paint()の受け取るGraphicsってFlashのMovieClipみたいに複数枚に増やせる?
379デフォルトの名無しさん:05/02/05 21:40:48
>>376
んじゃコンソールのログ見せて。
380363:05/02/05 21:44:38
>>366
>>367
どもサンクスです!!
381デフォルトの名無しさん:05/02/05 21:47:55
他のウィンドウで動いているプログラムに、キー操作を送る事は可能でしょうか?
[Javaプログラム] →キー操作→ [他のプログラム]
その逆も出来るでしょうか?
382デフォルトの名無しさん:05/02/05 21:55:15
>>381
OSは?
383デフォルトの名無しさん:05/02/05 22:01:56
>OSは?
失礼しました。
WindowsXPです。
384デフォルトの名無しさん:05/02/05 22:33:47
>>381
java.awt.Robot とか使えば出来るのでは?
385デフォルトの名無しさん:05/02/05 23:19:24
class kadai {
public static void main (String[] age) {
int [] seiseki = { 85,40,89,72,84,53,23,68,78,94,16,54,81,68,30,70,48,65,80,87 };
for(int i =100; i >= 0; i--) {
for(int j = 0; j <seiseki.length; j++) {
if (i == seiseki[j]) {
System.out.println((seiseki[j]+"点"));
}
}
}
}
}

このプログラムで成績が降順で並びかえれたのですが、点数の横に学籍番号を入れるにはどうすれば?
左から学籍1番なのですが。

40
386デフォルトの名無しさん:05/02/05 23:51:17
>>385
> System.out.println((j + 1) + ", " + seiseki[j] + "点");
387デフォルトの名無しさん:05/02/05 23:54:09
>>385
そのソート方法じゃ無理かも。。

class kadai {
public static void main (String[] age) {
int [] seiseki = { 85,40,89,72,84,53,23,68,78,94,16,54,81,68,30,70,48,65,80,87 };
int [] bangou = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };
for(int i =0; i < seiseki.length; i++) {
for(int j = 0; j < seiseki.length - i; j++) {
if (seiseki[j] < seiseki[j+1]) {
int k = seiseki[j];
seiseki[j] = seiseki[j+1];
seiseki[j+1] = k;

k = bangou[j];
bangou[j] = bangou[j+1];
bangou[j+1] = k;
}
}
}
for(int i=0; i < seiseki.length; i++)
System.out.println(bangou[i] + "番は" + seiseki[i] + "点です");
}
}


こんな感じだったらOKじゃないかな??
388387:05/02/05 23:56:05
>>386
普通にできてる。。。(ノ∀`)アチャー
389デフォルトの名無しさん:05/02/06 00:00:20
お二方、ありがとうございました。
いろんな方法があるのですね、参考になります。
390デフォルトの名無しさん:05/02/06 00:46:34
>>385
(j+1)ってどんな処理が行われてるんですか?
それで番号がなぜでるのですか?
391デフォルトの名無しさん:05/02/06 00:57:05
>>390足し算
392デフォルトの名無しさん:05/02/06 00:58:18
>>390
j+1は「jに1をくわえる」しょりですね。
jははいれつのなんばんめかをあらわしていますね。
せいとのてんすうはひだりからがくせき1ばんなのだから、
はいれつのなんばんめかがわかればよいですよね。
はいれつは0ばんめからはじまるので1をくわえてがくせきばんごうをあらわしているのです。
393デフォルトの名無しさん:05/02/06 01:06:01
>>366
チョトワロス
394デフォルトの名無しさん:05/02/06 01:07:22
395デフォルトの名無しさん:05/02/06 01:33:56
>>355
POIってプロジェクト終了したんじゃなかったっけ?
396デフォルトの名無しさん:05/02/06 01:48:35
>395
そこでJCOMですよ。
ttp://sourceforge.net/projects/jcom
397デフォルトの名無しさん:05/02/06 02:15:27
>>395
こないだ仕事でつかったけど
エクセルの値を読み書きするくらいなら
今のやつでも全然問題なく使えるぞ。
398デフォルトの名無しさん:05/02/06 03:44:17
>java.awt.Robot とか使えば出来るのでは?
これは他のウィンドウに対しても操作できるのでしょうか?
使用方法ご存知の方いらっしゃったら教えてもらえませんか?
399デフォルトの名無しさん:05/02/06 07:39:14
指定したIPアドレスからホスト名に変換するにはどうしたらいいですか?

ってか自分自身のIPアドレス&ホスト名を取得したいと思ってIPアドレスを
取得するのに↓こんな量になっちゃいました。もっと簡単な方法あるでしょうか?
(この質問をすると「127.0.0.1とlocalhost」と表示されちゃうプログラムを答える人が多い…)

//////////////////////
NetworkInterface ni = null;
InetAddress ipa = null;
Enumeration enuIfs = NetworkInterface.getNetworkInterfaces();
while(enuIfs.hasMoreElements()){
ni = (NetworkInterface)enuIfs.nextElement();//NetworkInterfaceに対する処理。
}
Enumeration enuAddrs = ni.getInetAddresses();
while(enuAddrs.hasMoreElements()){
ipa = (InetAddress)enuAddrs.nextElement();//InetAddressに対する処理。
}
String ipad = ipa.toString().substring(1);
///////////////////////

ってことでString型ipadにIPアドレス(127.0.0.1じゃないよ)が格納されています。
これをホスト名に変換したいんですが…
400デフォルトの名無しさん:05/02/06 09:36:42
InetAddress#getHostName()
401348:05/02/06 10:24:59
>>351
すみません。何とか1.jspにおいてはエラー画面が表示されなくなったのですが、

1.jsp  ・・・下記コードを記述しエラー画面へは遷移しなくなりました。
<%session.setAttribute("uid", request.getParameter("uid"));

%>

2.jsp ・・・確認画面を表示させ、< action =3.jsp > を指定し
      3.jsp で処理を実行させる。

3.jps ・・・このjsp内部での処理が上手く行きません。
具体的には
<%
String str = request.getParameter("uid");

%>

JSPで値渡しされたユーザ名は
<%=str %>です。

※と記述した結果なぜか
JSPで値渡しされたユーザ名は nullです。

と表示されてしまいます。(値渡しが上手く行っていない様なのですが
何が原因として考えられますでしょうか?



402デフォルトの名無しさん:05/02/06 11:26:23
>>398
質問する前にAPIリファレンスぐらい読め。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/Robot.html
403デフォルトの名無しさん:05/02/06 13:21:49
>>401
a1.jsp [ユーザにIDを入力して貰う。]
<form action="/test/a2.jsp" method="GET">
<input type="text" name="uid" size="10">

a2.jsp [入力内容確認画面:登録ボタンを押し、a3.jspで登録処理を行なう]
<% String uid = request.getParameter("uid"); session.setAttribute("uid", uid); %>
<%= uid + "を登録していいですか?" %>
<form action="/test/a3.jsp" method="GET">
<input type="submit" name="yes" value="はい">

a3.jsp [このjsp内部でDBへの登録を行なう。]
<% String uid = session.getAttribute("uid");
st.executeUpdate("insert into testTable values (" + uid + ");"); %>

とするとか・・・
404デフォルトの名無しさん:05/02/06 13:59:05
初心者だけど、ソース読むときはどこで変数がどう弄られてるのかさえ理解できれば
プログラムは全部分からなくてもある程度理解できるもんなんだな、と思った。
405デフォルトの名無しさん:05/02/06 16:31:18
お前か、適当にいじってシステムを壊したのは?
406デフォルトの名無しさん:05/02/06 16:31:26
>>404
データフローで考えるとなお良い。
407デフォルトの名無しさん:05/02/06 16:42:54
>>405
スマン。見たこと無い関数に適当に数値代入してたのが原因みたいだ。

>>406
なんですかこれ?
プログラムの設計図みたいなもの?
408デフォルトの名無しさん:05/02/06 16:49:29
>>357
今でも学生アルバイトとしてプログラマやってるよ。
けど給料が安い。
ITバブル崩壊に加え同時多発テロ事件が起きてから仕事が減り
給料も下がった感がある。
あの頃は儲かってたが今は儲からない。
しかも残業代が出ないために契約社員や正社員のほうが
アルバイトよりも単位時間あたりの報酬が安くなる
ってのにビックリ。給料が安いのでみんな怒っているみたいだ。転職を考えているという。
409デフォルトの名無しさん:05/02/06 16:51:56
>>408
学生&フリーターが調子に乗るな。と。
410デフォルトの名無しさん:05/02/06 17:03:25
appletの勉強をしてるのですが、アプレットにボタンを貼り付けてボタンが押されたときに
アプレット上に円を書くのはどうすればいいのでしょうか?
public void init() にボタン貼り付けを書いて、
public void actionPerformed(ActionEvent arg0) に押されたときの処理を書くまではできたのですが、
ここから円を書く処理の
public void paint(Graphics g) をどう呼び出せばいいのかわかりません。

public void paint(Graphics g){ g.drawOval(10,10,10,10) }
の場合、どのようにこのクラスをpublic void actionPerformed(ActionEvent arg0)から呼び出せばいいのでしょうか?
よろしくお願いします。
411デフォルトの名無しさん:05/02/06 17:07:31
>>410
update()かなんか余分だよ。確か。
412デフォルトの名無しさん:05/02/06 17:09:32
>>409
平社員乙
413デフォルトの名無しさん:05/02/06 17:35:30
>>410
actionPerformed()の中で,paint(getGraphics()); を呼ぶ。
しかし,描画処理と表示処理のロジックを分離するためにも,ダブルバッファリングを使うことをお勧め。
アニメーションのちらつきを抑えるのにも有効。
こんな感じで。
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class Circle extends Applet implements ActionListener{
Button button;
Image img; // ダブルバッファリング用オフスクリーン
Graphics img_g; // オフスクリーン描画用グラフィックコンテキスト
public void init(){
Dimension d = getSize();
img = createImage(d.width, d.height);
img_g = img.getGraphics();
button = new Button("Click me");
button.addActionListener(this);
add(button);
}
public void paint(Graphics g){
g.drawImage(img, 0, 0, this);
}
public void update(Graphics g){
paint(g);
}
public void actionPerformed(ActionEvent event){
img_g.drawOval(10,10,10,10); // 必要に応じてここに img_g に対する描画処理を追加する
paint(getGraphics());
}
}
414デフォルトの名無しさん:05/02/06 17:49:56
BufferedReader in = new BufferedReader( new InputStreamReader( new
FileInputStream("hello.txt"),"MS932"));

みなさん毎回これ書いてる?一発でBufferedReaderを返すUtilクラスを
書いてもいいけど、そのUtilクラスに依存するのもイヤな感じ・・・。
415デフォルトの名無しさん:05/02/06 17:52:24
それから、IO系のライブラリ書くとしたら引数はStream系とReader系どちらがよいだろうか悩む・・・。
416デフォルトの名無しさん:05/02/06 18:04:51
>>415
バイナリ:ストリーム
テキスト:リーダ

何となくね。
417デフォルトの名無しさん:05/02/06 18:35:42
>>411さん、>>413さん、ありがとうございました。
特に413さん、わざわざソースまで書いていただいて本当にありがたいです。
無事上手く動かす事ができ、新たにJAVA APPLETについて知る事ができました。
さらに、書いていただいたソースからも自分が学ぶべきことが多数あり、
これを元にさらに勉強に励みます。
本当にありがとうございました。
418デフォルトの名無しさん:05/02/06 18:46:49

class Outer{
class Inner{
}
static class StaticInner{
}
}

StaticInnerのインスタンス作ると毎回違うものが返ってきた。
ここでのstaticってどういう意味なんでしょう?


419デフォルトの名無しさん:05/02/06 19:25:21
>>418
8.5.2 staticメンバ型宣言
http://www.y-adagio.com/public/standards/tr_javalang2/classes.doc.html#246853
> キーワード static は,非内部クラス T の本体においてメンバ型 C の宣言を修飾する。
> その効果は,C が内部クラスでない宣言とする。T のstatic メソッドがその本体内にT
> の現在のインスタンスをもたないのと同様に,C もTの現在インスタンスをもたないだけでなく,
> 字句的に取り囲むインスタンスももたない。
420デフォルトの名無しさん:05/02/06 20:01:01
>>418
thx! staticメソッドと同じような意味になるのか。
421デフォルトの名無しさん:05/02/06 20:35:30
クラス継承していると同名のprivate変数とかにコンパイラが文句言わなくて
頭来るんですが、警告出すようにできませんか?
422デフォルトの名無しさん:05/02/06 20:48:06
以下はエラーチェック用コードです(JDK1.4)
 public static void main(String[] args)
 {
  final double a_A=0.11, a_B=0.22, a_C=0.33;
   String form = "A,2,B,1,C,6";
   String[] token = form.split(",");
  double[] cons = new double[10];

  for(int i =0 ; i <= 4 ; i +=2)
  {
   if(token[i]== "A") cons[i] = a_A;
    else if(token[i]== "B") cons[i] = a_B;
    else if(token[i]=="C") cons[i] = a_C;
   System.out.println("文字 " + token[i]);
   System.out.println("定数 = " + cons[i]);
   }
 }

とすると、

文字 A
定数 = 0.0
文字 B
定数 = 0.0
文字 C
定数 = 0.0

となり、求める定数(0.11,・・・)が現れません。原因は何でしょうか?
423デフォルトの名無しさん:05/02/06 20:55:11
>>421
そんなに頭にきたなら警告出すようなコンパイラを自分で作れ。

>>422
同じインスタンスかどうかを比較するための == で比較してるから。
同じ値かどうかを比較したいなら equals を使え。
424デフォルトの名無しさん:05/02/06 21:08:07
誰だよ、第三者の書き込みを5箇所くらいにコピペしてマルチに見せたのヾ(`口´=)
425363:05/02/06 21:14:17
>>394
どもサンクスでっす!!
426デフォルトの名無しさん:05/02/06 21:48:53
>>421 Eclipseのコンパイラ使え。コンパイラだけ抜き出して単体で
コマンドラインから呼び出して使うこともできるぞ。
427今年大学生:05/02/06 22:01:01
論外の質問だと思いますが。
今年入学の大学の授業で、1年生からJAVAをやるという
情報が入りました。グラフィックスなんですが、
今のうち自分で本を買って勉強できるようなものですか?
友達はいきなりJAVAはきついと言っているんで、
着いていけなくなるのが心配です。ちなみに今まで
PCは趣味程度でしか使ってません。
428デフォルトの名無しさん:05/02/06 22:10:52
>>427
プログラミング言語は人に教えてもらうようなものじゃないと個人的には思ってます。

>今のうち自分で本を買って勉強できるようなものですか?
全く問題なく勉強できると思います。
最初は「やさしいJava」とかでいいんじゃないですか?

>友達はいきなりJAVAはきついと言っているんで、
PC初心者に「いきなりプログラミング言語はきつい」と言ってるのか
「プログラム知らない人にいきなりJavaはきつい」と言ってるのかどっちか分かりませんが
後者ならそれはすこし前の話です。
あんまり本とか資料とかが出回ってないときは確かにそうだったかもしれませんが
「つまずくところが少ない」と言う点ではJavaは最初に学ぶ言語としてふさわしいと思います。
たとえ前者の意味だったとしても、若いうちは吸収が早いからなんでもすぐに理解できるでしょう。

まぁ結局はガンガレってことで。
429デフォルトの名無しさん:05/02/06 22:11:02
>>427
今日から始めましょう
430デフォルトの名無しさん:05/02/06 22:13:28
Javaほど学びやすい言語はないよ
逆に、Javaすら難しいと感じるようであれば、やめたほうがいい
431デフォルトの名無しさん:05/02/06 22:16:36
Javaは始めに学ぶなら学びやすいだろうね

俺はCから入った人間だからポインタが扱えなくてダメポ
432デフォルトの名無しさん:05/02/06 22:17:49
プログラミング言語を独学するのは非効率的でしょう。
正規の教育機関で学んでこそ本当の力がつきます。
433デフォルトの名無しさん:05/02/06 22:19:37
はぁ?
プログラミングほど独学しやすいものはないし、
大学とかで教えてもらうなんてスタイルの奴で
まともに使えた奴を未だ一人も見たことがないわけだが

出来る奴はこっちが何も言わなくても勝手に本買って勉強してる
434デフォルトの名無しさん:05/02/06 22:35:02
>>433
そんなに煽るな。
435デフォルトの名無しさん:05/02/06 22:39:12
432に賛同するわけじゃないけど、
433は、どれほど多くの人間を見てきたのか。。

個人的には楽しく学べるかどうかがキモかと。
独学に楽しみを見出すことができる人は、どんどん力がついていくし
教育機関が肌に合う人なら、そこで力がつくのもまた然り。
436デフォルトの名無しさん:05/02/06 22:40:05
>>432
なんか昔からあるネタで飽きたよ。
437今年大学生:05/02/06 22:42:35
おぉ、皆さん即答ありがとうございますっ。
>>428が聞いた「きつい」の意味は後者だと思いますね。
それを読んだことで少し安心しました。
受験終わって遊びたいけど、本当に留年生が多い大学らしいので
今から気合入れてガンガリマス(?)
私の脳に限界が現れたときお世話になるかもしれないので
よろしくお願いします。
438sage:05/02/06 22:44:32
sage
439デフォルトの名無しさん:05/02/06 22:44:46
実務では、独学しようとしないプログラマって使えないというのは
経験則的には正しいように感じるな。

なにしろ他に独学でバンバン吸収していく奴がいるんだから、「全部
教えてください」なんて人間に割く時間なんて、他の人間の邪魔にならない
くらいの知識を与える程度に留めるよ。
440デフォルトの名無しさん:05/02/06 22:45:02
変数の値渡し、参照渡し、参照の値渡しについて質問です。
変数が「配列」の場合は参照渡しになるのでしょうか??
441デフォルトの名無しさん:05/02/06 22:50:48
>>440
参照でっせ
値渡しはプリミティブ型の変数よん
442デフォルトの名無しさん:05/02/06 22:54:25
そういやうちの講師が
「大学入ってから勉強始めるやつは向いてない。
能力がある奴はとっくの昔に独学で力つけてる」
って言ってたなぁ…
443デフォルトの名無しさん:05/02/06 22:54:27
441さん即レス感謝です。

重ねての質問になっていしまいますが

値渡し→プリミティブ型
参照の値渡し→オブジェクト型
参照渡し→配列

こんな理解でよろしいんでしょうか??
444デフォルトの名無しさん:05/02/06 22:59:34
だから、その独学ってのは、正規の教育機関(大学、メジャーな専門学校)
による手ほどきがあって、初めて成り立つって事です。
勿論、講義内容だけで終わらせてしまってはダメです。これは当たり前です。
一からの独学では独りよがりになってしまい、本当の力は身につかないって
事です。何事も基本が大事ですからね。

445デフォルトの名無しさん:05/02/06 23:00:27
あれ?Javaの配列ってオブジェクトの一種だよね?
だったら参照の値渡しじゃないの?
446デフォルトの名無しさん:05/02/06 23:01:31
だから、独学でも基礎からなにまでほとんど間に合うって言ってるんだろ
正規の教育機関に手ほどきしてもらわないと基本が出来ない香具師は
向いてない以前の問題なんだよ
447デフォルトの名無しさん:05/02/06 23:09:14
書店に行けば超初級本から超上級本まで
ほとんど揃ってる。
ネット上でもアホみたいに解説サイトがある。
フリーのコンパイラも多数存在し、実際に自分で
プログラムを打ってコンパイル、実行出来る。

こんな環境で正規の教育機関の手助けがないと
学べないなんて香具師はどうかしてる。
448デフォルトの名無しさん:05/02/06 23:11:58
>>447
Javaは特に恵まれてるように思ふ。
449デフォルトの名無しさん:05/02/06 23:12:51
>>446
分かってないな。
例えばC++オンリープログラマの多くは、実務的じゃない。
隣の宿題スレとか、ゲームプログラムでガリガリコードを書くのに
特化してる人は、実務的な面ではさほどのレベルじゃない。
独学だとそういう部類に陥りやすい。
何故か? それは自分の興味のあるやつしか学ばないからだ。
プログラマには何より総合的な知識が要求される。
JAVAプログラマは標準APIという指針があるから、まだ
救いようがあるとはいえ、独学だと手付かずのAPIも多くなるだろう。
本当に学ぶには、どうしても正規教育機関の手ほどきが必要になるんだよ。





450デフォルトの名無しさん:05/02/06 23:19:19
>>449
ゲームプログラムをガリガリ書ければゲームプログラマとして十分「実務的」だと思うが……?
悪いけど,「実務的」「本当に学ぶ」という言葉の定義をしてもらえるかな?
APIを全部網羅して覚えることが「本当に学ぶ」ということなの?
451デフォルトの名無しさん:05/02/06 23:27:31
だんだんスレ違いになってきたんじゃないのカナ
452443:05/02/06 23:28:54
>>445
私もそう理解していたのですが、
要素が一つの配列を引数にすると参照渡しができるという話を聞いて混乱してます。
いろいろ調べているのですが、コレという回答が見つからないんですよ。。
453デフォルトの名無しさん:05/02/06 23:33:35
独学っていっても、情報科学なんて広い領域なわけで、
何を独学すればいいのか明らかじゃないんじゃないの?
大学の講義はそういう指針にはなると思う。
あと、Java言語だけを勉強すれば優秀なJavaプログラマになれるわけじゃないし。
454デフォルトの名無しさん:05/02/06 23:35:02
>>452
>>441がウソだと見抜けないってことはまだ修行が足りんということだ。
455デフォルトの名無しさん:05/02/06 23:36:35
>>452
ん?
Cで
int i;
foo(&i);
...
void foo(int *i) {
*i = ....
}
ってことやりたいときに、Javaでは&はつかえないから
int[] i;
foo(i)
...
vod foo(int[] i) {
i[0] = ...
}
ってやるって話だと思うけど。そんなことやらなくていいようにそもそも設計を見直すべきだと思うが。
456デフォルトの名無しさん:05/02/06 23:36:37
>>452
参照渡しっぽいことを模倣できるというだけであって参照渡しじゃない。
こういうことでしょ?
static void func(int[] a){
 a[0] = 10;
}

public static void main(String[] args){
 int[] ia = new int[1];
 func(ia);
 System.out.println(ia[0]); // 10と出力
}

その手の怪しい話は結構あるので惑わされないように。
457デフォルトの名無しさん:05/02/06 23:39:57
C++だけとか、Javaだけとかって感じで学んじゃうと
C++>>>>>>Java!とか
Java>>>>C++!!!とか
Ruby!!!!
とかいう変なおっさんになっちゃう悪寒
458445:05/02/06 23:41:53
>>452
public static void main(String [] args){
  String[] strs = new String[]{"foo"};
  reset(strs);
  System.out.println(strs[0]);
}

static void reset(Object obj) {
  obj = null;
}

でちゃんとfooが出るからやっぱ参照渡しじゃないぽ
459443:05/02/06 23:42:49
ありがとうございます。
設計のほうは見直して、素直に戻り値をとるメソッドを書いたのですが、
理屈を理解したいと思いまして。

まさに456さんのソースのようなことをやっていたのですが、
理屈がわからないです。。
どうも参照渡しの様に見えてしまうのですが。。
460デフォルトの名無しさん:05/02/06 23:45:32
>>426
かたじけない。
そのコンパイラのFQDNなぞ教えていただけぬか。
461デフォルトの名無しさん:05/02/06 23:46:57
462デフォルトの名無しさん:05/02/06 23:48:23
>>449
>プログラマには何より総合的な知識が要求される。

ここでいう「総合的な知識」とは
すなわち 「>>449 が持っている知識の範囲」
という解釈で良いのですね?
463デフォルトの名無しさん:05/02/06 23:54:41
javaでは、引数として指定された値が全て「コピー」されて
メッソドに渡されます(これを「値渡し」といいます)

「プリミティブ型 」「参照型」の2つの変数があり、
「参照の値渡し」「参照渡し」の区別はありません。
オブジェクトは常にメモリ(ヒープ)中の一か所だけに
存在しそこからうごきません。
オブジェクトそのものは渡しません。
プリミティブ型 の変数には、値そのものが格納されますが、
参照型の変数に格納されるのは常に「オブジェクトの存在場所」を知らせる
情報(アドレス)だけです。

参照型の変数にはオブジェクトそのものは格納しません。







464デフォルトの名無しさん:05/02/06 23:56:02
参照型の値渡しは結局のところ参照渡しだよなぁ。。。
アドレス演算できんからなおさら。
465デフォルトの名無しさん:05/02/07 00:00:20
>>464
他人と技術用語の意味が一致しなくても全然構わないヒキコモリとかならそれでも良いけどね。
466デフォルトの名無しさん:05/02/07 00:01:02
>>464
もしかしてSmith君?
467443:05/02/07 00:11:22
なんかドツボにハマッてます。。

以下のソースで実験してるんですが、

import java.io.*;

public class test{

static void func1(String a){
a = "10";
}

static void func2(String[] sa){
sa[0] = "10";
}

public static void main(String[] args){
String s = new String();
String[] sa = new String[1];
func1(s);
System.out.println(s); // 出力なし(ここは理解できる
func2(sa);
System.out.println(sa[0]);//10と出力(なんでー!?
}
468デフォルトの名無しさん:05/02/07 00:13:15
>>443
おまいは一回Javaから離れてC++で
ポインタと参照を使いまくれ
んでまた戻ってこい
469443:05/02/07 00:21:39
ありがとうございます。
やっぱ道は険しいっすね。でも、がんばります。

そして戻ってきます!教えられる側になって。
470デフォルトの名無しさん:05/02/07 00:28:50
助けていただきたいのですが、
サーブレットで、トムキャットとmysqlを使用して
データベースの情報を参照するプログラムのサンプルを本から持ってきて実行したのですが
java.lang.NullPointerException at Sample203.doGet(Sample203.java:49) at javax.servlet.http.HttpServlet.service(HttpServlet.java:743) at 〜〜〜
というエラーが出てしまいます。
Sample.javaの49行目は
Statement statement=connection.createStatement();
なんですが、何が悪いんでしょうか...?
可能性でもいいので教えていただけませんか?
nullなわけないんですが...
471デフォルトの名無しさん:05/02/07 00:31:12
Javaは独学で十分だ。
俺は会社に入ってから1からプログラミングを勉強したが、
6年経った今ではJavaの著書も何冊かあるし雑誌記事の依頼も来るし講演の依頼も来るようになった。
大学は文系の学部で情報処理やITとは何の関係もないよ。
IT系の専門学校など、自分で勉強できることを金取って教える詐欺のようにさえ見える。
472デフォルトの名無しさん:05/02/07 00:33:25
>>470
>nullなわけない
ホントにか?ちゃんと調べて言ってるんだよな?
473デフォルトの名無しさん:05/02/07 00:39:22
>>472
だと思うんですが...本をそのままうつしてますし...
でもヌルポインター〜〜が出るって事はヌルって事なんですよねぇ...
474デフォルトの名無しさん:05/02/07 00:42:56
あの、Streamのオープンやクローズ処理を共通で使われるユーティリティー的な
クラスで実装するのってどうなんでしょうか?
475デフォルトの名無しさん:05/02/07 00:51:19
要素1の配列を参照渡しの代用として使うような
>>459>>467はJavaで最もやってはいけないコーディングのひとつ。

こんなコード書く奴がいたらすぐクビにするから。そのつもりでな
実験ならもちろん構わんがね。
476デフォルトの名無しさん:05/02/07 01:12:08
String[] sa = new String[1];
参照型の配列変数を確保しただけです。
static void func2(String[] sa){
sa[0] = "10";
}
ここで初めてヒープにデータを作成。
System.out.println(sa[0]);//10と出力(なんでー!?
sa[0]に入っているアドレスを参照してオブジェクトにあくせす。


477デフォルトの名無しさん:05/02/07 01:18:51
>>470
自分の環境にあわせないといけないとこはあわせないといかんのに
本を丸写ししてるから正しいはずだってアホか?
データベースのURLかユーザ名かパスワードかが間違ってて
connectionが正しくオープンできてないんだよ。
478デフォルトの名無しさん:05/02/07 01:20:26
>>470
例外を静かに握りつぶす最悪のコードの悪寒
479デフォルトの名無しさん:05/02/07 01:32:16
>>478
Connection connection = null;
try{
  connection = DriverManager.getConnection(略);
}catch(SQLException e){
}

こんな感じでスルーしてそうだな
480デフォルトの名無しさん:05/02/07 01:51:06
>>478,479
getConnectionで例外を投げずにnullを返す実装もあるぜ。
481デフォルトの名無しさん:05/02/07 01:56:11
最悪のJDBCドライバ実装の悪寒
482デフォルトの名無しさん:05/02/07 02:03:02
intの0であればStringの0000、intの10であればStringの0010、と
書式指定でintからStringに変換するにはどうすれば良いのでしょうか。
何か一発で変換できるAPIはありますか?
J2SE1.4.2です。
483デフォルトの名無しさん:05/02/07 02:08:39
>>482
java.util.DecimalFormat
484デフォルトの名無しさん:05/02/07 02:19:39
こんばんは。APIを一生懸命見てもわからなかったので質問されてください。

「JTextFieldオブジェクトのテキストフィールドにマウスカーソルがある時に
キーボードのEnterを押すと、JButtonオブジェクトのボタンが押された時と同じ
働きをする」

というプログラムを書きたいのですが、まず「テキストフィールドにマウスカーソルがある時」
のとこから全くわかりません。

よろしくお願いします。
485422:05/02/07 02:27:33
>>423さん、ありがとうございます

文字列の比較だから、equals()ということですな。
486デフォルトの名無しさん:05/02/07 02:31:42
>>483
java.text.DecimalFormatでできた!サンクス!!!
487デフォルトの名無しさん:05/02/07 02:53:10
>>467
Stringはちょっと特別だから、参照について調べる時はStringBufferでやってみな。
488デフォルトの名無しさん:05/02/07 03:18:37
>>484
ダイアログとコントロールの基本をもう一度見直せ
489>>484(その1):05/02/07 03:26:05
>>484の求めているのと全く同じ挙動かどうかは分からないけど,こんな感じでやってみるのはどうよ?
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class KeyTest extends JFrame implements ActionListener, MouseListener, KeyListener
{
Container cp;
JTextField mainField, stateField;
JButton writeButton, clearButton;
boolean mouseIn;
public KeyTest()
{
mouseIn = false;
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(10,10,400,100);
cp = getContentPane();
cp.setLayout(new FlowLayout());
mainField = new JTextField("",10);
mainField.addKeyListener(this);
mainField.addMouseListener(this);
stateField = new JTextField("Out",10);
writeButton = new JButton("書く");
clearButton = new JButton("消す");
writeButton.addActionListener(this);
clearButton.addActionListener(this);
cp.add(mainField);
cp.add(stateField);
cp.add(writeButton);
cp.add(clearButton);
this.setVisible(true);
}
490>>484(その2):05/02/07 03:27:15
public void actionPerformed(ActionEvent event){
if(event.getSource()==writeButton) write();
else if (event.getSource()==clearButton) clear();
}
private void write(){
mainField.setText("hoge");
}
private void clear(){
mainField.setText("");
}

public void mouseEntered(MouseEvent e) { mouseIn = true; stateField.setText("In");}
public void mouseExited(MouseEvent e) { mouseIn = false; stateField.setText("Out");}
public void mouseClicked(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}

public void keyPressed(KeyEvent e){
if(mouseIn && e.getKeyCode() == KeyEvent.VK_ENTER) write();
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e){}

public static void main(String[] args){
JFrame frame = new KeyTest();
}
}
491デフォルトの名無しさん:05/02/07 03:35:24
>>475
やっちゃいけないと思うけどswap()したいときってどうするのが
正解でつか?
492デフォルトの名無しさん:05/02/07 03:44:54
public class SwapTest {

public static void main(String[] args) {
String s1 = "1";
String s2 = "2";
Object[] o1 = new Object[] { s1 };
Object[] o2 = new Object[] { s2 };
System.out.println("swap前");
System.out.println("o1[0]=" + o1[0]);
System.out.println("o2[0]=" + o2[0]);
swap(o1, o2);
System.out.println("swap後");
System.out.println("o1[0]=" + o1[0]);
System.out.println("o2[0]=" + o2[0]);
}

public static void swap(Object[] o1, Object[] o2) {
Object tmp = o1[0];
o1[0] = o2[0];
o2[0] = tmp;
}
}
493492:05/02/07 03:52:29
あとは両方コレクションに突っ込んで中身いれかえるとか。
まぁ、こんなコードありえないけどな。
必要な場面もないだろうし。
494470:05/02/07 03:53:18
>>477
ありがとうございます!!
たしかにユーザとパスワードのところが空欄になっていたので
rootにしたら動きました!!本当にありがとうございます。
プログラムなんて初めてなものであほな事言ってすみませんでした。

本ではmysql使うのにわざわざrootとか書いてなくても色々できるみたいですが、
うちの環境では出来ないみたいで...
理由は僕にはよく分からないのでrootを付け足して色々本からぱくって行こうと思います。
ありがとうございました。
495デフォルトの名無しさん:05/02/07 03:55:48
>>492
凄く的外れな回答してる気がするんだが
496デフォルトの名無しさん:05/02/07 04:25:03
引数の参照の値渡しと参照渡しの違いって

参照の値渡し→引数の参照先を変えても渡した側には反映されない
参照渡し→引数の参照先を変えると渡した側にも反映される

ってことですか?
497484(その1):05/02/07 05:01:45
>>489 >>490 わざわざありがとう!そのソースを参考にいろいろやってたらできました。TextFieldもActionListenerに登録できることを始めて知った!ちなみに例としてこんな感じ
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TextFieldEnter extends JFrame implements ActionListener{
JTextArea tArea;
JTextField mainField;
JButton writeButton;
public TextFieldEnter(){
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setBounds(100,100,500,400);
tArea = new JTextArea();
tArea.setEditable(false);
mainField = new JTextField("",30);
writeButton = new JButton("書く");
JPanel pn = new JPanel();
pn.setLayout(new FlowLayout());
pn.add(mainField);
pn.add(writeButton);
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
cp.add(pn, BorderLayout.SOUTH);
cp.add(tArea, BorderLayout.CENTER);
cp.add(new JScrollPane(tArea), BorderLayout.CENTER);
try{
UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
}catch(Exception e){}
mainField.addActionListener(this);
writeButton.addActionListener(this);
this.setVisible(true);
}
498484(その2):05/02/07 05:03:03
public void actionPerformed(ActionEvent e){
if(e.getSource() == writeButton || e.getSource() == mainField){
write();
}
}

private void write(){
String str = mainField.getText();
if(!str.equals("")){
tArea.append(str + "\n");
mainField.setText("");
}
}

public static void main(String[] args){
JFrame frame = new TextFieldEnter();
}
}
499デフォルトの名無しさん:05/02/07 10:07:15
>>496
確かにそうだが、参照渡しで渡されたクラスが参照している
データまで反映されるかどうかは状況による。
500デフォルトの名無しさん:05/02/07 11:38:41
GUIをグラフィカルに開発する支援ツールみたいなものはないのでしょうか・・・。
Vectorでささっと検索してみたところ、「CoffeeMaker」なるものがヒットしたので早速インストールしてみたんですが、
コンテナが勝手にサイズ変更し始め高さ-2となって、「いわゆるタイトルバーだけ」になってしまうという謎の現象がおこり、
使い物になりません。
これ、自分だけなんだろうか_| ̄|○
ちょっと他のPCでも試して見ます。
501デフォルトの名無しさん:05/02/07 11:45:59
>>500
なぜSun謹製のNetBeansを使わないのかね?
Eclipse+Pluginでもいいけど。
502デフォルトの名無しさん:05/02/07 11:51:30
>>501
ぬあっ。。。そんなものがあったとは・・・
今まで馬鹿正直にエディタでGUI組んでました_| ̄|○
多謝。
503デフォルトの名無しさん:05/02/07 16:04:37
Javaからスクリーンショットを撮る方法あったら教えてください。
お願いします。
504デフォルトの名無しさん:05/02/07 16:07:40
>>503

Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(new Rectangle(screenSize));
505デフォルトの名無しさん:05/02/07 16:08:41
506デフォルトの名無しさん:05/02/07 16:19:32
>>504-505 ありがとうございます!
507デフォルトの名無しさん:05/02/07 16:30:17
>>504
それだとビデオカード二枚差とかのマルチディスプレイに対応できんと思われ。
508デフォルトの名無しさん:05/02/07 17:00:55
>>507
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();
あとはnew Robot(gds[i])を全部回ればOKかな。
509デフォルトの名無しさん:05/02/07 17:04:22
アプレットウインドウの大きさを取得するにはどうすればいいのでしょうか?
取得して、それをint型に入れたいです。

また、クラスライブラリ(であってるかな・・・?)を、一つ一つ細かく説明してるサイトってありますか?
まだまだクラスを覚えられなくて・・・
よろしくお願いします。
510デフォルトの名無しさん:05/02/07 17:08:07
>>501>>502
netbeans.jp落ちてない?入れん。
511デフォルトの名無しさん:05/02/07 17:08:28
512デフォルトの名無しさん:05/02/07 17:16:58
>>508
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();
Rectangle bounds = gds[0].getDefaultConfiguration().getBounds();
for(int i=1;i<gds.length;i++){
 bounds = bounds.union(gds[i].getDefaultConfiguration().getBounds());
}
Robot robot = new Robot();
BufferedImage image = robot.createScreenCapture(bounds);

で良いのでは?
513デフォルトの名無しさん:05/02/07 17:49:59
ロボットをキーボードで操作してHOMEに帰すゲーム作れますか?
以下がゲームの必要事項です。

スタートボタンを押すとロボットとHOMEをランダムで格子状のステージに配置します。
HOMEはプレイヤーにはわからないようにします。
ロボットはキーボード操作でマスを上下左右に移動できます。(斜めはなし)
上=I, 下=M, 右=L, 左=Jのキー配置です。
ロボットが一マス動くごとに1ドルのコストがかかり、それを計算して最終的にトータルコストを表示します。
ロボットが一マス動くごとにステージをアップデートしてHOMEまでの距離を表示します。
ロボットがHOMEについた時点でゴールです。
ゴール後ウィンドウをポップアップさせてトータルのコストとリプレイするかしないかを表示します。
アプレットとgridLayoutを使って作ります。

以上です。
どなたかできる方いますか?簡単ですかね?
514デフォルトの名無しさん:05/02/07 18:01:08
できるし、簡単だね。
515デフォルトの名無しさん:05/02/07 18:02:57
簡単だけど面白くないのでやらない
516デフォルトの名無しさん:05/02/07 18:09:28
なかなか面白い宿題だな。頑張れ。
517デフォルトの名無しさん:05/02/07 18:30:44
>>496
>参照の値渡し→引数の参照先を変えても渡した側には反映されない
これはプリミテイブ型の引数の場合
>参照渡し→引数の参照先を変えると渡した側にも反映される
参照型はアドレスがコピーされるのでアドレス先はヒープに
オブジェクトがあるので、そのオブジェクトの内容は変更されます。

518デフォルトの名無しさん:05/02/07 18:44:38
バックの絵が透ける描画アプレットを作ってみようとしたのですが

JPanel panel1 = new JPanel(); // 下を透過させる為にJPanel使用
panel1.setOpaque(false); // 透過モードにする
Graphics g = (Graphics2D) panel1.getGraphics();
// とりあえず透過色で全消し
g.setColor(new Color(255, 255, 255, 0));
g.fillRect(0, 0, 100, 100);
// 半透明な赤でライン描画
g.setColor(new Color(255, 0, 0, 128));
g.drawLine(0, 0, 100, 100);
// 今のラインを透過色で消したい
g.setColor(new Color(255, 255, 255, 0));
g.drawLine(0, 0, 100, 100);
↑ここが効きません、アルファを同じ128にすると赤はなくなりますが
白い半透明になってしまいます
g.setCompositeで合成モードを色々変えても期待する動作にはなりませんでした

要は「アルファ値0で上書き」したいだけなのですがアドバイスお願いします
519デフォルトの名無しさん:05/02/07 19:43:55
>要は「アルファ値0で上書き」したい

アルファ値0で塗りつぶすと、どうなると思っている?
520デフォルトの名無しさん:05/02/07 19:45:26
ひょっとしてjavaって、Cみたいにexeにして配布する事に向いてない言語ですか?
521デフォルトの名無しさん:05/02/07 19:46:08
>>520
JRE同梱でカヴァー
522518:05/02/07 19:54:29
>>519
透明色を上から塗っても色は変わらないというのは分かりますが・・・
ではレイヤー概念のあるペイントアプレットの消しゴムは
どのように実現しているのでしょうか?
523デフォルトの名無しさん:05/02/07 20:37:44
JAVAにはevalというのはないのですか?
あってもおかしくないと思うのですが、探してもないということは
ないんですかね
524デフォルトの名無しさん:05/02/07 21:16:34
>>523
Java はインタプリタ型じゃないから標準では eval は無い。
インタプリタやら実行時にバイトコードにコンパイルしたりするものやらがあるので自分が気に入ったもの使え。
525デフォルトの名無しさん:05/02/07 21:19:47
>>523
探しても見つからないのは存在しないからなのか?
それとも自分の探し方が悪いのか?
526デフォルトの名無しさん:05/02/07 22:48:43
厨質ですみません。
Windows 環境で java コンパイラのダウンロードが出来ないのですが、どうすればよろしいのでしょうか?
ぐぐってそれらしきものを見つけてリンクを辿ったら
ttp://java.sun.com/j2se/1.4.2/ja/install-windows.html
にたどり着いたのですが、肝心のファイルのダウンロードが出来ません。
どうすればよろしいのでしょうか?
527デフォルトの名無しさん:05/02/07 22:51:19
>>526
http://java.sun.com/
ガンガレ
528デフォルトの名無しさん:05/02/07 22:52:26
>>526
>>1も読めない人にプログラミングは無理だ,諦めろ
529デフォルトの名無しさん:05/02/07 23:06:31
http://java.sun.com/j2se/1.4.2/ja/download.html
J2SE SDK のダウンロード
530デフォルトの名無しさん:05/02/07 23:11:13
>>534
>実行時にバイトコードにコンパイル
是非にそれを教えてください、お願いします

>>525
ないことはなかったんだけど
こんなん
ttp://www.ht.sfc.keio.ac.jp/~tailor/dragon/api/drg/eval/Eval.html
531526:05/02/07 23:21:34
すみません、(怒られるかも知れませんが) >>1 の Wiki から辿ったらダウンロード出来ました。
>>528 さんのおっしゃる通りでした。お騒がせしましたm(_ _;)m
>>529さん、>>530さん、すみませんでした。
532デフォルトの名無しさん:05/02/07 23:26:13
>>531
>>528の言うとおりだって分かってるならプログラミングやめろよ。
ダウンロードしたって事はやる気だろ。
無理って書いてあるのに。
何が「おっしゃるとおりでした」だ厨房
533デフォルトの名無しさん:05/02/07 23:30:33
なんかデジドカがわめいてるな
534デフォルトの名無しさん:05/02/07 23:33:08
ガキがガキに喧嘩売ってるだけだろ。
生暖かく冷やかしときゃいい。
535デフォルトの名無しさん:05/02/07 23:44:25
>>533
死ね

>>534
死ね
536デフォルトの名無しさん:05/02/08 00:00:33
おまえら釣られすぎ
537デフォルトの名無しさん:05/02/08 01:02:07
TextField tf;
tf = TextField("",20);
add(tf);

このようにテキストフィールドをアプレットに貼り付けたとき、
テキストフィールドの位置を座標で指定したいのですが
どうすればいいのでしょうか?
よろしくお願いします。
538475:05/02/08 01:15:10
>>491
swap(a, b) したい場面でのa, bってのは9割方リストの要素。
だからほとんどの場面で swap(collection, indexA, indexB); で事足りる。
(だからCollections#swap(List,int,int)というメソッドは既にある)

どうしてもswap(ref a, ref b)したければ、
展開してtmpを使うか、
class ObjectRef<E> { E ref; }みたいなものを作るか
のどちらかしかない。
>>492はクビな
539デフォルトの名無しさん:05/02/08 02:42:46
newないのを突っ込むべきかどうか。
java 座標指定 でぐぐったりしてないね。
540デフォルトの名無しさん:05/02/08 02:47:46
無駄口叩いてる暇あったら答えろや
541513:05/02/08 04:03:33
やっぱ簡単ですか・・・。
java始めてようやくアプレットで四角とか絵をかけるようになっただけの自分にはきついっす。
gridLayoutの使い方だけはわかるんですけどね・・・。
どうしたらロボットがgridの上をキーボード操作で動いてくれるのだろう・・・。汗
542デフォルトの名無しさん:05/02/08 04:04:28
無駄口叩いてる暇あったら自分で調べろや
543デフォルトの名無しさん:05/02/08 14:42:39
>>541
宿題なら宿題スレに行けば、回答プログラムがくるかもしれんよ
544デフォルトの名無しさん:05/02/08 14:53:29
>>409
学生のなにがいけないんだい?
研究しながらバイトしてどこが悪いんだい。
545デフォルトの名無しさん:05/02/08 15:02:30
>>544
社会を甘く見るな。
546デフォルトの名無しさん:05/02/08 16:01:51
TexitFieldに入力された文字列をstrに代入したいのですが、うまくできません。
以下のソースで、どこがおかしいのでしょうか?

String str1;
TextField tf;
Button bt;
public void init(){
tf = new TextField("",30);
bt = new Button("開始");
add(tf);
add(bt);}

public void actionPerformed(ActionEvent arg0) {
bt.setLabel("中止");
str1 = tf.getText();
}

インポートなどのソースは省きました。
よろしくお願いします。
547デフォルトの名無しさん:05/02/08 16:16:56
addActionListener()
548デフォルトの名無しさん:05/02/08 16:49:21
String型の配列をChar型の配列に変換したいのですが、StringBufferを
使わずにやる方法がわかりません、どなたか教えてください
549デフォルトの名無しさん:05/02/08 16:55:09
>>548
そんな釣りには誰もひっからないぞ。
550デフォルトの名無しさん:05/02/08 17:01:01
釣りとかじゃないで本当にわからなくて困ってるんですけど
551デフォルトの名無しさん:05/02/08 17:01:52
StringBuffer使ったやり方じゃダメなんだよ?
552デフォルトの名無しさん:05/02/08 17:02:56
「なんで」が抜けてた
553デフォルトの名無しさん:05/02/08 17:05:15
目的としているプログラムが配列の要素ごとで比較する必要があるからです
554デフォルトの名無しさん:05/02/08 17:07:36
じゃあ、for文で回せばいいんじゃ?
555デフォルトの名無しさん:05/02/08 17:10:14
File[] files = dir.listFiles()
万単位のファイルのあるディレクトリでやると非常に重くなるわけですが、軽く処理する方法とかありませんか?
ファイルは一つずつ全て内容を確認し、その結果によって次の処理に入ります。(他のファイルと比べたりはしません)
今のプログラムだと、「ディレクトリのファイル全てを取得→確認」になって、間に時間差があるのがもったいないです。
556デフォルトの名無しさん:05/02/08 17:12:04
Char型なんてないよ。
java.lang.Characterのこと?それともたんなるcharのこと?
まずはそれからだ。
557デフォルトの名無しさん:05/02/08 17:16:11
>>555
フィルタかけてリストとってったらどうだろう?
558デフォルトの名無しさん:05/02/08 17:18:16
char配列のことです。
for文で回すって一つの要素づつ変換していくってことですか?
559デフォルトの名無しさん:05/02/08 17:19:55
>>555
ファイルの一覧を別のファイルに保存しておくとか?
560デフォルトの名無しさん:05/02/08 17:25:45
>>558
その通り。これでいいだろ。

String[] a = { "abc", "def", "ghi" };
char[][] b = new char[a.length][];
for ( int i = 0; i < a.length; i++ ) {
b[i] = a[i].toCharArray();
}
561デフォルトの名無しさん:05/02/08 17:26:29
>>558
どういう状態から最終的にどういう形にしたいのかちゃんとかけよ。
例.String[] stringsをchar[] charsにしたいとか。
562デフォルトの名無しさん:05/02/08 17:30:21
すいません、String a[] = {"....",".....","....","...."}を
      Char t[] て形にしたいです
563デフォルトの名無しさん:05/02/08 17:33:40
だからCharってなんだよ。
char[]になればいいんだな?char[][]じゃなくて。
その場合はString[]の先頭からつめて一つの配列になればいいんだな?
564デフォルトの名無しさん:05/02/08 17:35:49
>>562
じゃあ、StringBufferでいいじゃん。
StringBufferが嫌なら、
String[] a = { "abc", "def", "ghi" };
StringWriter b = new StringWriter();
for ( int i = 0; i < a.length; i++ ) {
b.write( a[i] );
}
char[] c = b.getBuffer().toString().toCharArray();
565デフォルトの名無しさん:05/02/08 17:37:08
iReport使ってる方に質問です
PDFをつくりページ数を○/○って感じで出したいと思ってるのですが
分子の方は $V{PAGE_NUMBER} で出るんですけど、分母の全ページ数の出し方がわかりません
デフォルトで $V{PAGE_COUNT} というのがあり、これがページ数と思うのですが
いくらページがあっても0のままです、どなたかわかりませんか?
よろしくおねがいします
566デフォルトの名無しさん:05/02/08 17:38:51
char[]にしたいんですけど配列の要素ごとにわけたいんです。
だからString[]の要素を一つの配列にするわけにはいきません
567デフォルトの名無しさん:05/02/08 17:42:18
>>566
どうしたいんだよ?char[][]ってことか?
それともchar[]のListか?すごいイライラするんですけど。
568デフォルトの名無しさん:05/02/08 17:43:20
char[]のリストです、本当にすいません
569デフォルトの名無しさん:05/02/08 17:47:00
>>568
String[] a = { "abc", "def", "ghi" };
List list = new ArrayList();
for(int i=0;i<a.length;i++){
list.add(a[i].toCharArray());
}
}
質問の仕方が下手すぎるせいでスレを無駄にした。
570デフォルトの名無しさん:05/02/08 17:49:59
>>568
ぬっころすよ?
char[][]でダメな理由がわからん。

ほれ。お前クソだから、取り出す方でも悩むと思ったので、そっちも書いてやったよ。

String[] a = { "abc", "def", "ghi" };
List b = new ArrayList( a.length );
for ( int i = 0; i < a.length; i++ ) {
b.add( a[i].toCharArray() );
}

for ( Iterator i = b.iterator(); i.hasNext() ) {
char c[] = (char[])i.next();
}
571568:05/02/08 17:53:06
>>569,570
まんまと釣られてるわけだが。
572デフォルトの名無しさん:05/02/08 17:56:06
>>568で釣りと言えるならこのスレの発言全てが釣りだと言えそうだな
573デフォルトの名無しさん:05/02/08 17:59:37
ば、ばーか!
むしろ俺が釣ってたんだよ!
574デフォルトの名無しさん:05/02/08 18:03:42
まぁ、誰が釣ったかなんてどうでも良いわけで、
重要なのはここがJava質問・相談スレであることなのだが
575デフォルトの名無しさん:05/02/08 18:05:36
>>574
雑談スレかと思ったぜ。
576デフォルトの名無しさん:05/02/08 18:11:50
>>569-570
ありがとうございます。
ただ、現在ならJDK1.5の形式で書いてもらうと嬉しかったのですが・・・
577デフォルトの名無しさん:05/02/08 18:12:25
>>576
それぐらい自分でやれハゲ
578デフォルトの名無しさん:05/02/08 18:15:03
分かんないのなら別にいいのですけどね。
それにしてもイライラするとかお前クソだからとかぬっころすとか
偉そうな口聞いてる割には、前バージョンのコード書いてくるなんて
579デフォルトの名無しさん:05/02/08 18:18:23
今時新バージョン使ってるやつは素人と物好き
580デフォルトの名無しさん:05/02/08 19:55:31
論理演算子のorの縦線ってどうやって入力するんですか?
581デフォルトの名無しさん:05/02/08 19:57:37
|||||||||||||||||||
好きなだけコピペしる。
582デフォルトの名無しさん:05/02/08 19:58:53
||||||||||||キタ━━━━━━(゚∀゚)━━━━━━ !!
583デフォルトの名無しさん:05/02/08 20:12:45
「縦線が2つに分かれてるので違います」とかはナシな
584デフォルトの名無しさん:05/02/08 20:46:40
>>432
どういう教育機関だよ?
大学では教えてくれないところもあるし
授業にJavaを使うことがあっても
Servlet/RDBMS関係のプログラミングを教わることは僅かで
ほとんど独学だぞ。
585大学院生:05/02/08 20:48:02
>>545
お前、新卒社会人になった程度で偉くなったと勘違いしていないか?
実際に仕事してみないとそいつの実力なんてなかなかわからないもんだぜ。
586デフォルトの名無しさん:05/02/08 20:53:04
>>444
> だから、その独学ってのは、正規の教育機関(大学、メジャーな専門学校)
> による手ほどきがあって、初めて成り立つって事です。
> 勿論、講義内容だけで終わらせてしまってはダメです。これは当たり前です。
> 一からの独学では独りよがりになってしまい、本当の力は身につかないって
> 事です。何事も基本が大事ですからね。

それは言い過ぎだぞ。大学じゃ教わることは限られている。
ネットを使って独学するか実際にプログラマとして仕事をしたほうが学習速度が速い。

ネットなら@IT, メーリングリスト、Slashdot, Wiki, Blog, 掲示板などでJavaに関する最新情報
が手に入りやすい。Jakarta関係はネットで得たほうが効率的だ。

大学の教授でApache Struts, BeehiveやMaven, Hibernate, Spring Framework, Ant, Eclipse, JBossのことを知っている香具師は
ごく僅かだし大学でJavaの研究している香具師は大抵、Java言語そのもの、VMの研究ばかりしている香具師が多く
応用や実践で役立つ情報は得にくい。
587デフォルトの名無しさん:05/02/08 20:56:00
>>449
> プログラマには何より総合的な知識が要求される。
> JAVAプログラマは標準APIという指針があるから、まだ
> 救いようがあるとはいえ、独学だと手付かずのAPIも多くなるだろう。

そういう香具師もいるだろうけど経験を積み、最新情報を常にチェックして
新技術を実際に使ってみて試してみることができる奴ならいそういう
事態に陥ることは少ないと思うぞ。

独学だと手つかずのAPIってたとえばどういうAPIだ?
588デフォルトの名無しさん:05/02/08 21:18:06
>>587
普通にJavaプログラミングしてるだけでは使わないであろうAPIという意味ならいろいろありそうな悪寒
589デフォルトの名無しさん:05/02/08 21:18:48
個人で扱わない標準APIはCORBAくらいかな
590デフォルトの名無しさん:05/02/08 21:45:24
CORBAってJavaのAPI?
RMIじゃない?
591デフォルトの名無しさん:05/02/08 22:40:53
というか、大学でも全てのAPIを網羅したような授業は受けませんが。
592デフォルトの名無しさん:05/02/08 22:49:44
個人が普通に使うのは
・awtやSwingといったGUI全般
・JDBC方面
・utilとかlangとかコア
・XMLまわり
・JavaSound
・I/O
といったところだな
593デフォルトの名無しさん:05/02/08 22:56:19
必要なライブラリやAPIがどのへんにあるのか
アタリをつけて探せるようになれば一人前。

全部丸暗記しようとする奴はアホ
594デフォルトの名無しさん:05/02/08 23:13:08
俺さ、クラスのオーバーライドだとか、継承だとかあんまり知らんうちに
GUIを弄りたくてSwingを先に覚えて、そこから少しずつJAVAを知ってったけど
これは駄目パターンなのかな
595デフォルトの名無しさん:05/02/08 23:16:33
なんであれ好きなものから始めるってのは大事じゃないか?
最終的に理解できたのならいいとおもわれ

でもSWTからはじめるってのは勧めにくいかも
596デフォルトの名無しさん:05/02/08 23:19:49
>>594
Swing使ってれば必然的にクラスの継承やメソッドのオーバライド、
インタフェースの使い方などを覚えるはず(というか覚えないと無理?)
なので、それでうまくいったのなら良し。
乗り物だの動物だの、実感の湧かないクラスばかり作ってるよりはずっと有意義だよ。
597594:05/02/08 23:28:30
おお、割と好評価。
まぁ、確かに実感のわかないというかイマイチわかりにくいクラスをプロンプトで
動かしてるよりはいいかなと思ってる。
最初はアプレットだったけど。

ただ、俺はまだまだ初心者の領域ダケドナー
598デフォルトの名無しさん:05/02/08 23:31:02
なんにせよ前向きにやってるのがいい
599デフォルトの名無しさん:05/02/08 23:32:26
Vector hoge = new Vector();

for(int i=0; i< hoo[].length; i++)
{
if(hoo[i].isBar()) hoge.add(hoge[i]);
}

こんなことした場合、forから抜けたときに Vectorの hoge に追加した hoo[i] は null を返すようになるんでしょか。
600デフォルトの名無しさん:05/02/08 23:42:23
>>599
イテレータ使わんの?
601デフォルトの名無しさん:05/02/08 23:46:08
>>599
a=1; b=a; とやったら a は 1 じゃなくなるんですか?

>>600
何がいいたいのかわからん。
602デフォルトの名無しさん:05/02/08 23:47:32
>>594
そのSwingの学習を正規の教育機関の講義でやったのなら無問題だが、
独学だとやや難があるかもしれない。
603デフォルトの名無しさん:05/02/08 23:51:12
>>602
何を訳の分からんことを
604デフォルトの名無しさん:05/02/08 23:52:44
とうとう壊れたか?

このスレで Swing を正規の教育機関の講義でやった
香具師ってどのくらいいるのよ?
605デフォルトの名無しさん:05/02/08 23:58:23
独学だと自分の興味のおもむくままに進んでしまい、基本的な仕組みから
学べてない事が多い。ただコンポーネントを表示&操作だけに特化する
恐れがある。
606デフォルトの名無しさん:05/02/09 00:00:16
>>605
しょうもない妄想してる暇があったらオープンソースのソフトでも書いて社会に貢献しろ
607デフォルトの名無しさん:05/02/09 00:00:21
>>596
>>乗り物だの動物だの、実感の湧かないクラスばかり作ってるよりはずっと有意義だよ。

そういう考えが危険だという良い見本だ。
608Java初心者です:05/02/09 00:12:33
質問です。
メソッドのオーバーロードについてなんですが、インターフェイスを以下のようにして
interface Answering{
void recording();
void playback();
}
インターフェイス実装してみたところ
class Phone implements Answering{

String str;
public void recording(){
System.out.println("録音メッセージをお願いします");
}

public void playback(String str1){
str=str1;
System.out.println("「"+str+"」というメッセージを受け取りました");
}
}
playbackメソッドをオーバーロードできなかったので、インターフェイスのメソッドをvoid playback(str1)としたらうまく
いったんですが、オーバーロードの際は、引数もかかなきゃだめなんでしょうか?
609デフォルトの名無しさん:05/02/09 00:17:33
まずオーバロードとオーバライドの区別をつけろ。
610デフォルトの名無しさん:05/02/09 00:19:01
>>609
インタフェースで定義しているのとは別の引数でメソッドをオーバーロードしたという話だろ?
611608:05/02/09 00:22:04
すいませんオーバーライドでした・・
612デフォルトの名無しさん:05/02/09 00:24:44
あと、サブタイプ(サブクラス)とスーパータイプ(スーパークラス)が何なのかも理解しろ。
そしたら何で引数の型も必要なのかわかる。
613608:05/02/09 00:41:08
>>609,612
アドバイスありがとうございました。


あと、void playback(str1)じゃなくてvoid playback(Stirng str)ですねorz

614デフォルトの名無しさん:05/02/09 02:43:22
[1]
public class keinData {
public static void main(String[] args) {
String dt;
InputStreamReader input=new InputStreamReader(System.in);
BufferedReader in=new BufferedReader(input);
while (true) {
try {
dt=in.readLine();
if (dt!=null) {
System.out.println(dt);
}
} catch (IOException e) {
// TODO: handle exception
System.out.println("io error.");
}
}
}
}
615614:05/02/09 02:44:40
[2]
public class keinData {

public static void main(String[] args) {
String dt;
InputStreamReader input=new InputStreamReader(System.in);
while (true) {
try {
dt=Integer.toString(input.read());
if (dt!=null) {
System.out.println(dt);
}
} catch (IOException e) {
// TODO: handle exception
System.out.println("io error.");
}
}
}
}
616614:05/02/09 02:46:38
[1][2]は両方ともキーボードから入力した文字列をリターンキー時に表示するプログラムです
今読んでる参考書には[1]のプログラムが書いてあったんだけど自分で[2]も書いてみたら同じ結果になりました
参考書・javadoc読んでもバッファリングして効率化してるって言ってるけどよく解らないよ
どなたかもう少し噛み砕いて教えてください
617デフォルトの名無しさん:05/02/09 02:59:16
1のコードはSystem.inから数キロバイト(バッファサイズ分)ごそっとメモリに読み込む。
プログラムはreadline()で改行まで読み込むが、実は裏ではとっくにもっとたくさん読み
終わってる。次のループではたぶんメモリから読むだけだ。

2のコードは、input.read()で1バイト読んで、処理して、次のループで1バイト読んで、
処理して、を繰り返す。上記例だとSystem.inだけど、InputStreamReaderが読んでる
ものがディスク上のファイルであろうと、ループの度に1バイトだけ読んで、処理して、
次のループで1バイトだけ読む。1のコードならディスクから一気にバッファサイズ分
だけ読んでしまうので速い。
618614:05/02/09 03:37:43
>>617
有難うございます、とても解りやすいです
一つお聞きしたいのですが、バッファのサイズというのは個々のPC・つまりハードに寄るのでしょうか?
それともjavaプログラムで制御できるのですか?
619デフォルトの名無しさん:05/02/09 04:45:52
>>618
そんなあなたにjava.io.BufferedReader
使い方はjavadocを読んでね。


もっと細かく言えばハードウェアもバッファ持ってたりする。
HDDのキャッシュサイズがカタログに載っていると思うけど、あれもバッファの一種。
620デフォルトの名無しさん:05/02/09 04:46:49

java.io.BufferedReader(Reader, int sz) ←このszがバッファのサイズ
621デフォルトの名無しさん:05/02/09 05:00:33
>>619
度々回答していただいて有難うございます
i/ostream,ioパッケージ自体がちょっと初心者にはとっつきにくいです(俺が馬鹿だからかも)
でももう一度javadoc見たらさっきはポックリだったのが今度は理解できるようになってきた
本当に感謝です
622デフォルトの名無しさん:05/02/09 06:59:43
java.io.って、何でこんなに不必要にまわりくどいの?
腐ったオブジェクト歯垢ライブラリの見本だね。
623デフォルトの名無しさん:05/02/09 08:40:05
>>622
まわりくどいって どの辺が?

ちなみに、腐ってないIOライブラリって何?
624デフォルトの名無しさん:05/02/09 08:40:24
結構柔軟で便利な気がする。
C++なんかと比べるとね。

あ、でも例外は投げすぎかも。
625デフォルトの名無しさん:05/02/09 08:52:43
>>624
例外はあんなモンだと思うが。
削れるとしたら available() ぐらいでは?
626デフォルトの名無しさん:05/02/09 09:31:57
nioも使えばいいじゃない
627デフォルトの名無しさん:05/02/09 10:51:56
close()にまで例外を付けるなといいたい。
それだけでなくJAVA2前のAPIの設計の悪さ、
ある設計者の不評ぶりは有名だけどね。
628デフォルトの名無しさん:05/02/09 10:58:25
catchすればいいじゃない
629デフォルトの名無しさん:05/02/09 11:12:17
いつも思うんだけど、もしもclose()で例外はかれた場合って
その後の処理をどうしたらいいの?
630デフォルトの名無しさん:05/02/09 11:16:44
ファイルアクセス中に例外出たときと同じでいいんじゃね?
631デフォルトの名無しさん:05/02/09 14:53:35
>>627
単に例外処理書くのが面倒なんだろうけどさ……
InputStream でも OutputStream でも Writer でも Reader でも
nio の Channel だって close() で例外食らう可能性あるだろ。

close() で例外投げない方が凄い設計だぞ。
632デフォルトの名無しさん:05/02/09 15:01:19
>>629
C言語の fclose() で失敗した時とかと同じ処理。
633デフォルトの名無しさん:05/02/09 16:06:26
double型の表示についての質問です。

例えば、0.1に0.01をfor文で足していくとき、
 0.11
 0.12
 0.130000000000000001
 0.14
と、途中で0が多く付いた値(上の0の数は適当)が現れます。
原因と対策を教えて下さい。
634デフォルトの名無しさん:05/02/09 16:18:19
原因:
doubleでは数を2進表現で保持していますが、このとき、小数部分を
1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 ... (2のn乗分の一)の和として
表している(おおざっぱな説明)ので、正確な値にならないのです。

対策:
内部で値を10進表現のまま管理している BigDecimal クラスを使いましょう。
635633:05/02/09 16:37:40
>>634 ありがとうございます

636デフォルトの名無しさん:05/02/09 16:39:00

>>605
Servletから始めたが
振り返ってみれば確かに独学では初期は酷いソースコードになりがちだ。
だが独学でも独学に訓練を重ね新しい技術を学びたい、
開発効率を高めたい、より大きなものを作りたいという強い願望があれば
なんでも学ぶことができる。

他人に負担をかけるようなコーディングや設計も、職場で開発に携わる、
若しくは将来、オープンソースコミュニティで
活躍したいという意識も多少あれば、やらなくなる。
637デフォルトの名無しさん:05/02/09 16:49:52
>>627
お前はJDBCでclose()に例外をつける理由がわかってないな。
この無知め
638デフォルトの名無しさん:05/02/09 17:47:23
try{

    // 山の量の処理

}catch(Exception e){}
639デフォルトの名無しさん:05/02/09 17:53:01
Eclipseのjavaエディタのテンプレート機能についてお聞きしたい事があります
例えば自分でSystem.out.write(byte buf[], int off, int len)メソッドのテンプレを作ろうとして
System.out.println()メソッドのテンプレを参考に以下のように書いてみました

「名前」
syswri
「パターン」
System.out.write(${word_selection}${},${},${});${cursor}

でもこれだと引数が3つとも同じ値で反映されてしまいます
どうしたらうまくいくでしょうか?

そもそもこれって何かのプログラミングなんですかね
もしかしてこれが正規表現ですか?
640デフォルトの名無しさん:05/02/09 18:22:36
質問です

String dore;
String mona = "( ´∀`)";
というデータがあるとして、外部から
dore="mona"
という文字列をもらった時に"( ´∀`)"を出力したいわけですが
こんな俺はどうしたらよいですか?
641デフォルトの名無しさん:05/02/09 18:29:50
>>640

if(dore.equals("mona"))
  System.out.println(mona);
642デフォルトの名無しさん:05/02/09 18:34:47
>>641
なるほどそうすればよいのですか
thanks( ´∀`)
643デフォルトの名無しさん:05/02/09 18:47:38
>>631
>>637
データベースでもIOでもいいが、close()で例外が出たとして
その時どういう処理を書くんだ?
せいぜいログに出力するか、後で再度のクローズを試みる為にストック
しておくか、致命的ケースならアプリケーション終了フラグを
立てる位だろうが。

close()は、大抵、finallyブロックで記述するからその中にさらに
例外ブロックがあるのは構造上美しくない。
close()は、boolean値を返すようにした方が良い。
644デフォルトの名無しさん:05/02/09 19:01:46
>>643
> 立てる位だろうが。
サーバサイドでも通信時の close() に失敗したなら
プロトコルによっては再送信するとか選択肢があるし
クライアントサイドなら他にも選択肢はいっぱいある。

> close()は、boolean値を返すようにした方が良い。
read() write() で IOException 投げるのに
close() だけ boolean を返すのは綺麗な設計とはいえない。
645デフォルトの名無しさん:05/02/09 19:08:05
>>643
close()がboolean返してもtry、catchの代わりにif文書くだけなんだけどね。
一部の阿呆はエラーが出てても無視できるようになって喜ぶのかもしれんが。
646デフォルトの名無しさん:05/02/09 19:23:38
>>644
クライアントサイドなら一杯あるって具体的にはなんだ?
どう考えてもサーバサイドよりは、極論すれば無視できる
ケースに思うが。

>>645
じゃあ、アンタはclose()の例外処理に何を書いてるんだ?
647デフォルトの名無しさん:05/02/09 19:28:11
>>646
クライアントサイドでclose()の例外を無視するのは駄目すぎだろ。

正常に処理を完了できてない事をユーザにダイアログなりで通知すれ。
648デフォルトの名無しさん:05/02/09 19:31:50
>>644
サーバサイドのソケットcloseが失敗したら、クライアントに
再送信するってのも意味不明だ。
closeの例外は、双方の通信間の不備じゃなく完全にこちら側のハードウェアの
問題だから、相手側への影響もないし(closeする事自体が関係あるが)
自己完結する例外のはずだが。
憶測で語ってないだろうか?
649デフォルトの名無しさん:05/02/09 19:34:34
なんかJava厨ってキモイね
あんな考えなしのすべて例外処理すりゃいいってアホ仕様でも
Javaだからというだけで平気で肯定できるんだ
650デフォルトの名無しさん:05/02/09 19:37:17
>>648
はぁ? InputStream とか OutputStream みたいな汎用クラスの設計がどーとか言ってるんでしょ?

例えば BufferedOutputStream の close() で例外食らっても
実際にはソケットの write() で例外食らっている可能性もあるわけなんだが。
651デフォルトの名無しさん:05/02/09 19:39:48
>>649
まぁ、close() だけ boolean 返せば良いなんて阿呆な仕様よりは余程マシだからねぇ。
652デフォルトの名無しさん:05/02/09 19:42:13
>>648
> クライアントに再送信するってのも意味不明だ。
誰もクライアントなんて言ってないような。
サーバサイドで他のサーバと通信する事も全く考慮しないの?
653デフォルトの名無しさん:05/02/09 19:43:17
Javaは他の全ての言語より、何もかもがよっぽどまし。
654デフォルトの名無しさん:05/02/09 19:46:44
あのね
Javaは●バカ用言語●なんだよ
こうゆう時は例外処理が無意味だとか
こういう時は例外処理がパフォーマンス落とすとか
バカに判断できる分けないでしょ
いいんだよ常に例外処理するってルールに機械的に従ってりゃ
バカは頭使わなくていいの
655デフォルトの名無しさん:05/02/09 19:48:41
>>654
その通り。>>654みたいなバカに判断させるとプロジェクトがガタガタになるから判断させないようにするわけさ。
656デフォルトの名無しさん:05/02/09 19:48:44
>>653
Java厨になりすますなよ
Javaやってるやつで
Javaが全ていいなんて言ってるやつ見たことないよ
657デフォルトの名無しさん:05/02/09 19:49:25
>>652
どっちにしろおなじだ。
close例外は完全にこちら側の問題であり自己完結するものだから
(closeする事自体は他に影響がある)、通知以外の目的には
する必要がない。他サーバーへの通知なら、>>643に書いた
ログ出力と同じようなものだろうが。
658デフォルトの名無しさん:05/02/09 19:51:39
closeで例外処理して、サーバに通信しようとしたらエラーだったら、
またその例外処理でもするの?≧∇≦ブハハハハハ
659デフォルトの名無しさん:05/02/09 19:53:16
>>657
>>650 で既に自己完結できない例が出てるが。
660デフォルトの名無しさん:05/02/09 19:54:08
>>650
>>659
なんでclose()の最中に、ストリームのwrite()を呼び出すんだよ。
意味不明だな。
661デフォルトの名無しさん:05/02/09 19:57:56
>>658
Java以外だったらどうするんだ?
ただ例外と言うだけで特別じゃないだろうが
662デフォルトの名無しさん:05/02/09 19:58:26
>>658
普通処理する
663デフォルトの名無しさん:05/02/09 19:58:50
>>660
FilterOutputStream の close() と
BufferedOutputStream の flush() とか flushBuffer() をみてみろ。
BufferedOutputStream で close() すると間接的に write() 呼ぶから。
664デフォルトの名無しさん:05/02/09 20:02:42
>>663
今度はBufferedOutputStreamの実装が……とか言い出す悪寒。
665デフォルトの名無しさん:05/02/09 20:04:41
>>663
close()の前にflush()を呼べばいいんじゃない?
と初心者意見を述べてみる
666デフォルトの名無しさん:05/02/09 20:06:24
>>663
それは仕様とは無関係。

close() する際に flush() されてないデータが残ってたら例外投げるって「仕様」にするとかなら話は別だが。
667デフォルトの名無しさん:05/02/09 20:07:05
だ・か・ら

こうゆう時は例外処理が無意味だとか
こういう時は例外処理がパフォーマンス落とすとか
バカは頭使わなくていいんだよ
常に例外処理するってルールに機械的に従ってりゃいいの

668デフォルトの名無しさん:05/02/09 20:17:29
例外例外と言ってる割には、結局そこで記述する具体例、具体コードが
一つも挙げられないとは、お話にならなかった。
669デフォルトの名無しさん:05/02/09 20:19:47
>>667
いいんでないの、それで。細かいこと考えなくても、きちんとルールに従っていれば、誰でもそこそこの物を作れ
るのが、Java の良い所なんだし。たとえ意味のない例外処理でも、常に記述してれば、ソースに統一性があっ
て良いジャン。
670デフォルトの名無しさん:05/02/09 20:22:09
おかげで、あんまり意味のなさそうな例外処理が、ソースのいたるところに記述されてて、可読性が悪いよ(TдT)
671デフォルトの名無しさん:05/02/09 20:27:07
>>670
細かいことは気にするな
672デフォルトの名無しさん:05/02/09 20:31:00
「玄人は例外を重視する」に影響されて、ロクにコードも書いてないのに
とかく例外の重要性を叫んでただけってオチか。
頓珍漢な例ばかり出してるし。
673デフォルトの名無しさん:05/02/09 20:32:34
>>670
それはオマエの頭か書き方が悪いだけ。
674デフォルトの名無しさん:05/02/09 20:33:46
BufferedOutputStream の実装すら想像できないような阿呆では
具体的なコード出しても駄目だろうな。たぶん。
675デフォルトの名無しさん:05/02/09 20:36:59
>>674
バカ?
676デフォルトの名無しさん:05/02/09 20:37:26
そういえば例外処理書くのが面倒くさい彼は BufferedOutputStreamのソースを見たんだろうか?
677デフォルトの名無しさん:05/02/09 20:40:20
例外が逐一書かれてるコードが見づらいのは確かだ。
コメントがいちいち挿入されてるコードと同じ感じだ。
昔は、コメントが出来るだけ散りばめられたソースが良いなどと
された事があったが、すぐにすたれた。
例外処理の逐次記述ももう少し経てば同じように淘汰されて
いくだろうよ。
678デフォルトの名無しさん:05/02/09 20:40:34
close() が write() を使う可能性なんて、
他にも特定フォーマットに従ってターミネータを出力するとかイロイロ考えられると思うんだが。

それとも terminate() ってメソッド作って close() の前に必ず terminate() 呼ばなければならない仕様にするの?
679デフォルトの名無しさん:05/02/09 20:45:54
InputStream と OutputStream だけで、ログ出力とかすれば良いだけなら
 static void close(InputStream in){try{in.close();}catch(IOException e){ /*ログ出力とか適当に*/ }}
 static void close(OutputStream out){try{out.close();}catch(IOException e){ /*ログ出力とか適当に*/ }}
とかみたいなユーティリティメソッド作れば良いだけでは?
680デフォルトの名無しさん:05/02/09 20:47:21
>>674
>>676
BufferedOutputStream(正確にはFilterOutputStreamだが)を
代表例みたいに挙げる時点でもうお話にならないって事。
バッファを使っても、close()時にflushしないストリーム(したらマズイ)
の実装は幾らでもある。
681デフォルトの名無しさん:05/02/09 20:48:39
>>679
スタックトレースの一番上のエレメントが
ユーティリティメソッドになるから
どこで例外発生したか分からなくなって駄目とか言われる悪寒。
682デフォルトの名無しさん:05/02/09 20:50:58
>>678
そりゃ典型的な下手な仕様だ。つーかもういいよ。
アンタのキャリアは分かった。
683デフォルトの名無しさん:05/02/09 20:52:30
>>680
close() 時に flush() するクラスが一つでもあるなら、
close() 内の flush() が投げる IOException をそのまま投げられる方が良い。
(たった一つだけだと言い切れるなら他にやりようもあるかもしれんが、>>678 の言うような事もあり得る)

その程度すら分からないのに仕様があーだこーだ言うなんてお話にならないって事。
684デフォルトの名無しさん:05/02/09 20:54:11
>>682
捨て台詞? もう終わり?
685デフォルトの名無しさん:05/02/09 20:58:17
>>683
アナタもclose()はfinallyプロックに書くだろうが、close()の実装が
flush()を伴うものであっても、そのflush実装機能をfinally節で使うのが
良いコードだと思うか? tryブロックの最後にflush()と一言書く方が
どう考えても自然だ。これは基本レベルの話だ。
686デフォルトの名無しさん:05/02/09 20:59:20
>>684
まだある。
687デフォルトの名無しさん:05/02/09 21:01:42
>>685
実装やら、実際にどう書くかは全く関係ないよ。
仕様の話をしてるんだから。

つまり、close() する際に flush() されてないデータが残ってたら
close() が(例外投げるなりして)失敗する仕様を支持するわけね?
688デフォルトの名無しさん:05/02/09 21:05:29
>>680
FilterOutputStream の close() は flush() は呼ぶけど、write() 呼ぶとは限らんよなぁ……
689デフォルトの名無しさん:05/02/09 21:07:54
「玄人は例外を重視する」ってのはさ
不必要な例外は書かないって前提条件があって
必要な例外をもれなく記述するって事だろ
必要か不要かも考えずに全部書くという前提なら
最初から通用しない話だよな
690デフォルトの名無しさん:05/02/09 21:11:11
っつか、>>643 みたいに単に面倒ってだけなら >>679 で良いのでは?
691デフォルトの名無しさん:05/02/09 21:12:07
もう一つ言うと、close()で何故writeを呼ぶのか?って話題に振ったのは
丁度通信の話が出てたから、終了パケット云々の実装の話をしてるかと
思って、もっと詳しく聞きたいと思った訳だが違ったのなら、もう
692デフォルトの名無しさん:05/02/09 21:12:43
>>689
InputStream とか OutputStream みたいな汎用クラスの設計に関して言えば
必要、不必要の何れもありうるなら必要と考えて設計すべき。

不必要な場合に面倒だからといって必要な場合を切り捨てるのは最初から通用しない話だよな。
693デフォルトの名無しさん:05/02/09 21:12:50
「素人は例外を全て記述する」
これJavaの鉄則。悪い事でもない。
694デフォルトの名無しさん:05/02/09 21:14:26
>>693
その通り。ついでに言えば、>>693が素人だと言う事を自覚できれば満点。
695デフォルトの名無しさん:05/02/09 21:15:42
>>687
仕様の話をしてるなら、なおさらストリームのclose()は
flush()、write()を伴うものではない。
標準APIのFilterOutputStreamはあくまで一つの実装であり
ストリームの話ではない。
696デフォルトの名無しさん:05/02/09 21:17:18
Javaのターゲット技術者は

個々のケースにおいて適切に例外の必要・不必要を判断できる優秀な技術者

ではなくて

決められたルールに従ってルール通り記述できるある程度の技術者

だと思うんだが

そういう意味で例外処理は常に記述するで正解
697デフォルトの名無しさん:05/02/09 21:17:56
>>695
close() 時にバッファリングしていたものを吐き出す(よーするにflush()する)APIなんて他にもいっぱいあるんだがね?
ストリームに関して言えば非常に一般的な実装と言える。
それを無視するのは現実を見ない暴論と言って良いね。
698デフォルトの名無しさん:05/02/09 21:19:38
>>696
そうそう。
本当に「優秀な技術者」だったら良いけど実際には「自分が優秀な技術者だと思い込んでる奴」の場合が多いからね。
699デフォルトの名無しさん:05/02/09 21:20:59
>>698
そだね。本当に優秀な技術者なら、こんな阿呆な事で時間潰したりせんだろうし。
700デフォルトの名無しさん:05/02/09 21:21:25
>>697
一杯あるのなら、具体クラス名を幾つか出してくれ。
701デフォルトの名無しさん:05/02/09 21:22:57
(´-`).。oO(ソースの30%以上が例外処理の記述なんだけど)
702デフォルトの名無しさん:05/02/09 21:23:09
>>700
例えばC言語の fclose() もそうだしね。
703デフォルトの名無しさん:05/02/09 21:26:13
>>701 生産性高そうですね(藁
704デフォルトの名無しさん:05/02/09 21:27:23
>>696
じゃあ、アナタは例外ブロックに具体的に何を書いてるのか?
ログ出力、リトライの為のストック、close()→returnの外に
実例を出してくれ。
初心者は例外処理を常に書けば安全というが、例外処理の中身は
意外と難しいぞ。
705デフォルトの名無しさん:05/02/09 21:29:43
そいや、逆にどっかの組み込み系のソケット周りのclose()の実装が
close() throws IOException {}だけで中身からっぽだった。
706デフォルトの名無しさん:05/02/09 21:29:44
>>697
一杯あるのなら、具体クラス名を幾つか出してくれ。
707デフォルトの名無しさん:05/02/09 21:30:00
>>704
えーとさ、俺は>>696じゃないけどさ、
参考にするから実例を出してくださいとかみたいに頼むべきなのでは?
>>704 だとなんの実例が欲しいのかもサッパリわからんが。
708デフォルトの名無しさん:05/02/09 21:31:35
>>706
一般的であることを示せれば良いので fclose をあげるだけでじゅうぶんだな。

今度は、close()時にflush()するのが一般的でない事をそっちが示してくれ。
709デフォルトの名無しさん:05/02/09 21:35:58
close()の例外処理でログをはこうとしたら
ログのclose()でまたエラー
それでもまた例外処理を行うのが普通というJava厨の常識は
ほかの言語も知っているJava技術者に受け入れられるでしょうか?
710デフォルトの名無しさん:05/02/09 21:37:38
>>709
ログに書き込むたびにイチイチopen()とclose()を繰り返すのか……
それはJava厨の常識じゃなくて>>709の常識だろう。
711デフォルトの名無しさん:05/02/09 21:38:29
ログはclose()しないのが常識
712デフォルトの名無しさん:05/02/09 21:40:18
>>710
logging用API使わんで自力でログ出力やってるってトコロに突っ込むべきなのでは?
713デフォルトの名無しさん:05/02/09 21:41:35
>>712
話はそれるが、そういうシステムあったなあ
714デフォルトの名無しさん:05/02/09 21:43:33
まともなJavaの書籍を読めば
Javaのエラー処理がどれ程優秀でどれほど必要か書いてある
アンチは少しは勉強しろよ
715デフォルトの名無しさん:05/02/09 21:45:15
>>714
ちなみにまともなJavaの書籍って何?
716デフォルトの名無しさん:05/02/09 21:49:34
Java工作プログラミング
717デフォルトの名無しさん:05/02/09 21:53:59
てか俺の先輩の全ての例外処理を記述してるソースを見て
ちょっと異常だと思ったんだが
このスレには先輩みたいな人がいっぱいいるのか?
俺の方が異常だったってオチ?
718デフォルトの名無しさん:05/02/09 21:54:01
あんま関係ないんだけど、例外の種類ってどうやって区別する?
一つ一つ例外クラス作るのも大変だし、
かといってkeyに埋めるのも判別が面倒

どういうときに例外クラス作る?
719デフォルトの名無しさん:05/02/09 21:55:00
>>716
http://www.amazon.co.jp/exec/obidos/ASIN/4894711850/
みたけど2000年でちと古いし、レビューの評価もそんなに高くないね。
720デフォルトの名無しさん:05/02/09 21:55:01
>>717
例外処理書いてないところで例外が起きたら、
ユーザはどうすんだ?サポセンはどう対応すりゃいいんだ?
721デフォルトの名無しさん:05/02/09 21:56:47
>>717
全ての例外処理を記述って具体的にどーゆー状態なんだか?
メソッド呼び出しするごとにthrows節に書かれてる例外を全部キャッチしてるとか?
722デフォルトの名無しさん:05/02/09 21:57:20
あるクラス内で起きた例外を一くくりにしたい時。
723デフォルトの名無しさん:05/02/09 21:57:38
>>720 なんか厨っぽい発言
724デフォルトの名無しさん:05/02/09 22:00:37
キャッチが細かい人いるね
725デフォルトの名無しさん:05/02/09 22:00:59
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/ThreadGroup.html#uncaughtException(java.lang.Thread, java.lang.Throwable)
みんな使ってる?
726デフォルトの名無しさん:05/02/09 22:02:14
>>718
例外の種類が分かれば何らかの対処できるなら面倒でも全部区別する。
種類が分かってもログ出力ぐらいしか対処できないなら一定規模でまとめる、とか。

どんだけ時間を割けるかとか、好みとか、プロジェクトの規約次第だけど。
727デフォルトの名無しさん:05/02/09 22:05:02
>>726
なるほど。やっぱそなんだね。
なんかモヤモヤがすっきりした気がしますた。ありがとう
728デフォルトの名無しさん:05/02/09 22:06:55
>>725
最近は
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Thread.UncaughtExceptionHandler.html
とか使うので出番が無いような。1.5からだっけ?
729デフォルトの名無しさん:05/02/09 22:21:17
>>643
お前な、DBでclose()におかしな挙動がおこると
何が起こるかわかってないな。
ほうっておくとDB接続プールがいっぱいになって
新規DB接続ができなくなって大変なことになるっちゅーに。

文句がある奴はO/R-Mappingを使え。
730デフォルトの名無しさん:05/02/09 22:27:30
>>677
> 例外が逐一書かれてるコードが見づらいのは確かだ。
> コメントがいちいち挿入されてるコードと同じ感じだ。
> 昔は、コメントが出来るだけ散りばめられたソースが良いなどと
> された事があったが、すぐにすたれた。
> 例外処理の逐次記述ももう少し経てば同じように淘汰されて
> いくだろうよ。

おめぇ、throwの使い方もデザインパターンによるテクニックも知らずに
たかがclose()のためだけに淘汰されると思っているなら相当のアフォだぞ。

731デフォルトの名無しさん:05/02/09 22:39:53
>>693
「素人は例外をすべてExcepitonだけでキャッチする」
をJavaの鉄則にしようとしているヴァカもいるがな。
732デフォルトの名無しさん:05/02/09 22:40:48
相当のアフォなレスする前に、レスをよく読みましょう。
733デフォルトの名無しさん:05/02/09 22:51:15
>>729-730
なんかいかにもプログラミング覚えて自信満々の学生みたいでワラタ
734デフォルトの名無しさん:05/02/09 22:51:25
>>679
IOException以外の例外は無視されるのか。
それだけじゃIOExcepiton以外どんな例外がでるのかわからんので駄目だな。
staticも癖があるのでもっとましな方法が欲しいところだな。
735デフォルトの名無しさん:05/02/09 22:52:01
close()に文句をつける奴はこれでも使え
http://jakarta.apache.org/commons/io/apidocs/org/apache/commons/io/IOUtils.html#closeQuietly(java.io.OutputStream)
736デフォルトの名無しさん:05/02/09 22:53:15
>>732
アフォがアフォにアフォ言うてワラタ
737デフォルトの名無しさん:05/02/09 22:57:25
Java信者ってイタイね
738デフォルトの名無しさん:05/02/09 22:58:04
>>729-730
てかコイツはレベル低すぎ
739デフォルトの名無しさん:05/02/09 22:59:08
>>704
>>696ではないが
catch内にロガークラスで例外内容をログ出力させることはよくあるぞ。
とくにServetでは。
下手にコンソールに例外スタックトレースを出力させると
顧客がビビってバグやエラーがまだ残っていると勘違いされて
過剰に反応するからな。

例外部分だけは顧客に見せびらかさないように
顧客向けではない別のヶ所にログ出力させている。
740デフォルトの名無しさん:05/02/09 23:01:49
>>737-738
久々にこんな自作自演を見たが
こんなスレに自作自演してまでJava叩きに必死になってるチミのほうがレベル低そうだな。
そんなにJavaが嫌いならこんなスレを見ることもなかろうに。
Javaよりも例外処理に優れた言語とやらがあるならそれを示してみればいいのに
それすらもできない。そうなると君の方がイタイ奴なのだが。
741デフォルトの名無しさん:05/02/09 23:03:34
>>715
書籍以外にもIBMのサイトでもJavaの例外処理の優秀さが説かれているわけだが。
馬鹿には読んでもわからんだろうが。

742デフォルトの名無しさん:05/02/09 23:05:38
>>717
すべての例外処理を記述とはたとえばどんな記述かね。
例をソースコードで示してみるんだな。
catchをする必要がないのに無駄にcatchしているのか
throwsする必要がないのに無駄似throws宣言をしているのか
といった程度のものか?

743730:05/02/09 23:05:58
>>643
>>677
自演乙。図星突かれたからって悔し紛れのバカレスしなくていいよw
余計笑っちゃうから。
つーかclose()の例外なくせの素人丸出しの意見には笑ったね。
特にデータベースじゃ、例外処理の書き方が明暗を分けるっつーのに。

例外処理は一つ一つ書かないと、万が一の事態にも備えられなくなる。
よくExceptionでまとめてるコードを見るけど、即訂正させるよ。
それがパラグラフ単位でやってたらさらに話にならないね。
コード書く前にデザパタの勉強しろっての
744デフォルトの名無しさん:05/02/09 23:07:42
>>724
IDEを使えばドラッグしたソースコードにキャッチすべき例外をすべて付加した
try-catch文を自動的に追加してくれるわけだが。
745デフォルトの名無しさん:05/02/09 23:11:28
>>743 君も自演乙
>>743>>730になりすましたつもりになってるみたいだが
煽ろうとしていること釣ろうとしていることが見え見え。
746デフォルトの名無しさん:05/02/09 23:13:58
>>745
自演乙。反論できないから釣りにしたいのだろけどね。
>>643 >>677くんw
747デフォルトの名無しさん:05/02/09 23:14:01
どこかでみたことがあるようなドトニート厨の自演ですね。
自分が自作自演していることを隠すために他人が自作自演しているように
見せかけ自分はさらに他人が自作自演しているところを叩くように
見せかけることで疑われにくくしようとする作戦のようですが
どうやら詰めが甘いようですねCがつく言語を崇拝している誰かさん(w
748デフォルトの名無しさん:05/02/09 23:14:51
ドトネト厨?
749デフォルトの名無しさん:05/02/09 23:18:16
>>746>>746の気に入らない者と関係ない第三者とをなんとか
争わせようとしているらしい。
子供っぽくておかしい。

C#厨?はそんな幼稚なことまでして自分の例外処理の話題で出た自分の失言を隠したいんだろうか。
750デフォルトの名無しさん:05/02/09 23:27:57
なんだろうね、この人達は。
被害妄想かね、自作自演だとか、ドトネト厨だとか。
プログラムとか以前に、社会生活はちゃんと、おくれてるのかね?
751デフォルトの名無しさん:05/02/09 23:30:36
>>743
最凶のバカ出現
752デフォルトの名無しさん:05/02/09 23:32:47
Javaの学習方法の何がいけないんだろう?
753デフォルトの名無しさん:05/02/09 23:48:20
>>752
学習方法なんて人によると思うが?
それともJavaに絶対の学習方法があるのか?
754401:05/02/10 00:07:56
>>403さん
ありがとうございます。やっと解決出来ました(o^o^o)!!
しばらく忙しくてなかなかJavaの勉強に手が回らなかったのですが
次の段階の勉強が出来そうです。
ありがとうございましたo(^o^)o
755デフォルトの名無しさん:05/02/10 00:12:59
>>750
わざわざドトネト厨と言い出し、さらには自作自演と言い出すあたり
おまいさんが自作自演のドトネト厨であることは図星だということがわかってしまったよワッハッハッハ。
社会生活はちゃんと送っているか? その言葉はそっくりそのままおまいさんにかえしてあげようファッハッハッハッハ。

おまいさんのそのレスは
Javaの例外処理を批判することでJavaスレを荒そうとしたことがバレまいとしたいがためのアンチの最後の言い訳
であることはとっくのとうに見抜かれているのだよ。

さて、Javaよりも優れた例外処理を持つ言語を紹介して貰おうか?

速くググっ来たまえ。
756デフォルトの名無しさん:05/02/10 00:14:04
>>752
どんな学習方法に悩んでいるのだ?
目的によって学習方法は異なるぞ。
757デフォルトの名無しさん:05/02/10 00:35:25
nioってすごいですか。
758デフォルトの名無しさん:05/02/10 00:35:41
ねえ。close()で例外発生するのはそうあるべきだと思うんだけど、
実際問題、close()でIOExceptionが発生したらどうすればいいの?
正常系(例外が発生せずに)finally節内のclose()が呼ばれた時と、
既にIOExceptionが発生してfinally節に入ってclose()が呼ばれた時の
2ケースがあると思うんだけど。
恥ずかしながら5年くらいJavaで飯食ってるけど、ログに出す以外の対処をしたことがないんだ。
例えばファイルIOの場合は?あるいはソケット通信の場合は?
759デフォルトの名無しさん:05/02/10 00:50:20
どうしても try-catchを二重にしたくなければ
throwとthrowsで外部に任せればいい。

それか>>735を使えばいい。
760デフォルトの名無しさん:05/02/10 01:22:52
ネタでも何でもなく、java.sql.Statement#close()とかで
例外飛んできたときの対応ってどーすりゃいいんでしょう。
JDBCドライバ依存のリカバリ処理になるのかな?
761デフォルトの名無しさん:05/02/10 01:23:53
close()で馬鹿なレスが続いていますが、
ちょっと質問です。

close()とは関係ないんですが、
コレクション系の
Hashtable/HashMap/HashSet
って何がどう違うのでしょうか?
天才な方教えてください。

最初に断っときますが、私は馬鹿ですんで聞きました。
インタフェース、スーパークラスが違うとか馬鹿な意見はやめてくださいね。





では、お願いします。
762761:05/02/10 01:28:18
あ、私が言う馬鹿なレスとは、

>>740-750

くらいのの方達のことですので。
763デフォルトの名無しさん:05/02/10 01:51:36
>>761
HashtableはHashMapと同等だが、Hashtableは最初っからMT-Safeになってる。
ただ、HashtableはCollection APIが出来る前の遺物だから、いまから使う理由はない。
HashSetはハッシュテーブルじゃない。名前から明らかなように集合だ。
ただ、集合の実装にハッシュを使ってるので、
「ある要素がその集合に含まれているかどうか」
の判定がO(1)でできる。
764デフォルトの名無しさん:05/02/10 02:07:25
>>763
補足。
Hashtableはnullを入れられないが、HashMapはnullを入れられる。

>HashtableはCollection APIが出来る前の遺物だから、いまから使う理由はない。
同意。

HashSetはMapではなく、Setインタフェースのコレクション。
重複しない要素を保持するためにある。SQLでいうところのDISTINCTだな。
765デフォルトの名無しさん:05/02/10 02:24:01
Javaやるとバカになるって、昔いわれたことあるけど、違うと思う。
このスレ見て、Java信者の一部がバカ、ってだけだと思った。
766デフォルトの名無しさん:05/02/10 02:29:30
初心者は変態Java厨の意見なんて鵜呑みにするなよ
例外処理中にエラーが発生しても
さらに例外処理なんてしないのが普通だからな
767デフォルトの名無しさん:05/02/10 02:49:56
float型で、小数点以下の桁数の指定ってどうやってするんでしょうか?
768デフォルトの名無しさん:05/02/10 03:43:49
Exception が発生するのではなく、
boolean で返ってくるとなにがいいのか良く分からん。
769デフォルトの名無しさん:05/02/10 04:47:35
Windows環境でエクスプローラの関連付けを使用し、バイトコードを実行する手段はあれば教えてください。
770デフォルトの名無しさん:05/02/10 04:48:43
誤字 手段は
訂正 手段が
771デフォルトの名無しさん:05/02/10 16:04:54
例外が起こっても処理が続行できるなら、
キャッチしてログって処理を続ける。
処理が続行できないならthrowでぶん投げる。
ステートメントのクローズでエラーがでるなんてのは、
前のコードにバグがあってエラーが放置されているか
DBがいかれているかのどちらかなので、
throw new RuntimeException(e)する
772デフォルトの名無しさん:05/02/10 16:27:56
http://java.sun.com/j2se/1.5.0/ja/download.htmlから
JDK のダウンロード

Windows Offline Installation, Multi-language (jdk-1_5_0_01-windows-i586-p.exe, 49.78 MB)
Windows Online Installation, Multi-language (jdk-1_5_0_01-windows-i586-p-iftw.exe, 221.26 KB)

をDLし、ネットにつながってないパソコンでインストールしましたが
ネットがつながってないとjavaって使用不可能ですか?オフラインだと何も表示されない・・・
773デフォルトの名無しさん:05/02/10 16:36:45
>>772
はぁ?
774デフォルトの名無しさん:05/02/10 16:41:11
>>773
カスはこのスレこないでいいから。
775デフォルトの名無しさん:05/02/10 18:11:07
>>772
そのページにインストール手順へのリンクがあるだろ?読んだのか?
読んでもわからないのなら2ちゃんで説明を聞いてもわからない可能性が大きいからあきらめろ
776デフォルトの名無しさん:05/02/10 18:27:13
>>772
JDKが入ってるJAVAの入門書でも買っとけ

>>775
屑は黙ってろ
777デフォルトの名無しさん:05/02/10 20:27:31
カスと屑しかいない哀しいスレ
778デフォルトの名無しさん:05/02/10 21:54:06
半分冗談だから、読み飛ばそう!!
779デフォルトの名無しさん:05/02/10 22:25:44
>>772
Windows Offline Installation, Multi-language (jdk-1_5_0_01-windows-i586-p.exe, 49.78 MB)
を落としインストしたいパソに入れればいいんじゃないかなぁ…
780デフォルトの名無しさん:05/02/10 22:42:22
ぬるぽキタ━━━━(゚∀゚)━━━━ッ!!
http://subversion.tigris.org/
781デフォルトの名無しさん:05/02/10 22:52:08
>769
jarにまとめる。
782デフォルトの名無しさん:05/02/11 00:01:01
>>779
そのインストーラーをフラッシュメモリーを使用してネットがつながってないパソコンでインストールしました。
インストール時は「同意する」以外いじっていません。
インストール終了後、[java web start]のショートカットがデスクトップに。
ためしに起動してみたところ、オンラインだと何かしら表示されるのに、オフラインだと何も表示されず。
オンラインだと何かしら表示されましたが、よくわからないので放置。
オンライン、オフライン共にコマンドプロンプトで[javac]とも試しに入れてみましたが、どうやら開発環境が整ってないようで。
とりあえず、もう一度それをインストールしてみます。

説明書は字が小さいのが気になってあまり読んでません。
783デフォルトの名無しさん:05/02/11 00:06:26
>>782
ぽかーん

path通さんとjavacと入れても起動しないぞ
784デフォルトの名無しさん:05/02/11 00:45:38
>>783
ぽかーん

入門書にも書いてありましたが、「ちょっとよくわからないしいいや」とか思っていました。
これから説明読んで設定してきます。アドバイスありがとうございました。
785デフォルトの名無しさん:05/02/11 02:24:03
説明書も読めない人が開発キットを入れて何をするんだ?
786デフォルトの名無しさん:05/02/11 03:33:23
+=ってどういう意味ですか?
787デフォルトの名無しさん:05/02/11 03:35:14
手裏剣が飛んでるんだよ。
788デフォルトの名無しさん:05/02/11 03:37:35
つまらん!おまいのコードはつまらん!
789769:05/02/11 05:18:06
>>781
出来ました。ありがとうございます。

参考にしたページ
http://www.h5.dion.ne.jp/~tuyano/JavaTutor/JavaTutorZ3.html

もう一つ質問です。
*.exeみたく*.jarファイルそれぞれにアイコンを適応する方法を教えてください。
790デフォルトの名無しさん:05/02/11 05:21:16
>>786
a += 1 は a = a + 1 を簡略化した書式
791デフォルトの名無しさん:05/02/11 08:12:50
792デフォルトの名無しさん:05/02/11 08:24:25
String である文字列を定義したい時に

String "文字列";
とコーディングしますよね。

自分の場合その文字列の中に""がありまして、String "A""B";みたいに書くと
エラーがおこってしまって困っています。

表現したい文字列の中に""がある場合はどういう処理を行えばよいのでしょうか?
793デフォルトの名無しさん:05/02/11 08:25:35
>>792
\"
794デフォルトの名無しさん:05/02/11 08:37:52
>>793

いろいろためしましたけど、うまくいきません
ぜひ簡単な例を示して頂けないでしょうか
795デフォルトの名無しさん:05/02/11 08:49:52
793じゃないけど。
「君は"ほげほげ"だ。間違いない。」って文章を表示したい時に
System.out.println("君は"ほげほげ"だ。間違いない。")
ってするとエラーになる。どうすればいいの?
そういうときは特別な文字列を無効化するエスケープシーケンス \ を使おう。
具体的には
System.out.println("君は\"ほげほげ\"だ。間違いない。")
ってすればいいのさ
じゃあ「君は\ほげほげ\だ。間違いない。」を表示したいときは?
System.out.println("君は\\ほげほげ\\だ。間違いない。")
これでOK

上はエスケープシーケンスの正しい意味ではないよ、もっと詳しく知りたかったらぐぐろう。
796デフォルトの名無しさん:05/02/11 08:52:19
ごめんミス
5行目の「文字列」は「文字」に脳内変換ね。
797デフォルトの名無しさん:05/02/11 09:14:48
>>789
普通に考えたら多分無理…
ShellExecuteさせて起動させるだけのフロントエンドっぽいものを
cなどで作ってやればいいと思う
798デフォルトの名無しさん:05/02/11 12:03:02
Javaってexe作れないと聞きましたが、アプリは作れないということでしょうか?
作れないことはないとは思いますが、どうやんの?
799デフォルトの名無しさん:05/02/11 12:05:51
Java始めたトコなんですがインタフェースってのが分かりません
どういうものかサクっと教えてYO!
800デフォルトの名無しさん:05/02/11 12:15:17
インターフェース・・・
それはJAVA学習者にとって最大の難関であろう。
一見捕らえどころがなく、理屈だけでは全く理解できない。
参考書を読んだだけでは概念すら掴む事はできない。
最大の疑問はそれが何の役に立つのか?だろう。これは当然だ。
未経験者はインターフェースが何の為に存在するのか、さっぱり
分からない。開発者め、訳ワカランのを作りやがってと恨む事
だろう。インターフェースの理解はただ現場でのコーディングの
積み重ねによってのみ得られる。大規模なプログラムを組みにつれ
インターフェス無しでは、ソフトウェアデザインが到底不可能な事に
自然と気付き、いつの間にかそれを多用し使いこなしている自分に
気付く事だろう。
801デフォルトの名無しさん:05/02/11 12:24:40
>>798
exe ファイルを作りたければ Excelsior JET とか GCJ みたいな AOTコンパイラを使え。
802799:05/02/11 12:29:48
>>800
なんかよく分かりませんがありがとうございます
803デフォルトの名無しさん:05/02/11 12:31:38
798はふつーにつりだろ
exeしかアプリ実行できないとおもってるのかね
804デフォルトの名無しさん:05/02/11 13:27:17
>>803
"実行"の捕らえ方によるだろ
805デフォルトの名無しさん:05/02/11 13:30:37
vectorにはJavaアプリ置いてないの?
806デフォルトの名無しさん:05/02/11 13:32:57
>>805
置いてある
その他のOSのところに
807805:05/02/11 13:42:50
間違えた
× その他のOS
○ 他のOS用

JAVA・JAVA Scriptと一緒にされてる上にアプレットなんかも
混じってる
ttp://www.vector.co.jp/vpack/filearea/other/java/index.html
808806:05/02/11 13:43:43
さらに間違ってる…
>>807>>806です。もうぬるぽ…
809デフォルトの名無しさん:05/02/11 13:57:43
>>804
それを言うなら "実行" でなくて "アプリ" のとらえ方なのでは?
810デフォルトの名無しさん:05/02/11 14:02:56
拡張子xlsをダブルクリックしたら実行された
なぜ?というのと同じ話だな
811デフォルトの名無しさん:05/02/11 14:07:27
>>810
それは単なる関連付けの話で
アプリを作る(== exeファイルを作る(?))のとは直接関係ないような。
812デフォルトの名無しさん:05/02/11 14:09:18
コマンドラインで xxx.xls とタイプするだけでも実行された
なぜ?
813デフォルトの名無しさん:05/02/11 14:26:02
>>811
jarファイルの実行と同じだろ
814デフォルトの名無しさん:05/02/11 14:26:10
>>812
しゅごいですね〜
815デフォルトの名無しさん:05/02/11 14:41:36
>>762
おまえも馬鹿なレスする奴と同じじゃねえか。
ドキュメントちゃんと嫁や
816デフォルトの名無しさん:05/02/11 14:44:58
>>780
(゚Д゚)ハァ?
Subversionのどこがぬるぽなんだ?
817デフォルトの名無しさん:05/02/11 14:54:19
>>816
その時間Tomcatがエラー出していたよ
818デフォルトの名無しさん:05/02/11 15:04:13
ところでこのスレでのSubversion人口比率はどれくらいか?
未だにCVS利用者が多いのか?
819デフォルトの名無しさん:05/02/11 15:30:20
実行したときに、値の計算後「Infinity」と出てしまって値が表示されません。
C言語みたいに指数表現は出来ないのでしょうか?
820デフォルトの名無しさん:05/02/11 15:33:26
できる。
double型の扱いが間違ってintやfloat,longのままになっているか
計算ミスで無限になったか
ただのオーバーフローで桁が足りないかだけ。
オーバーフローするならBigDecimal使え。

821デフォルトの名無しさん:05/02/11 15:37:21
>>819
Infinity って出るのは計算結果が無限大になってるから。
ゼロ除算とか、大きすぎる値を扱ってオーバーフローするとかしたんしょ。
指数表現にしても無限大は無限大なので Infinity と表示されなければならない。

1.5以降ならprintf使えるのでC言語と同じ感覚で指数表現使えるよ。
822デフォルトの名無しさん:05/02/11 15:41:46
>>820
おお。累乗したときに、int型に入れてましたw
ありがとうございました。
823デフォルトの名無しさん:05/02/11 16:18:58
>>822
とりあえずJavaによるアルゴリズム事典を読むことをおすすめする。
オーバーフローを避けるテクニック、極力減らす計算方法が
Javaの素のソースコードで沢山載っている。

それと、数値計算も勉強しろ。
同じものを二回掛けてから1回割るなら
一回掛けるだけで終わるほうがオーバーフローが起きる
可能性は低い。そのことについてよくわかる。

824デフォルトの名無しさん:05/02/11 16:34:22
あの本ってC版を単にJavaに書き直しただけだから、
アルゴリズムを見るのはいいけどソースの質は最悪だよ。
825デフォルトの名無しさん:05/02/11 16:40:51
>>824
アルゴリズム辞典でソースの書き方を勉強しちゃう奴は読むのを止めた方が良いかも。

ソースを無駄にオブジェクト指向っぽくすると
本質に関係ないところでソースがでかくなるような。
826デフォルトの名無しさん:05/02/11 16:53:59
初期化にめっちゃ時間のかかるインスタンスを保存して
使いまわす方法ってないですかね。
ずっと保持し続けてほかのアプリケーションから
要求があった時にインスタンスを返す、みたいな。

インスタンスじゃなくて処理結果を返すだけでも
良いんだけど。

アプリ間の通信(?)ってソケットを使うしかないんですか?
827デフォルトの名無しさん:05/02/11 17:09:28
Javaで再帰メソッド、非再帰メソッドを使ってXのy乗の計算式を書くとしたらそれぞれどうなりますか?
828デフォルトの名無しさん:05/02/11 17:23:37
int func(int x, int y){
if(y==0){
return 1;
}else{
return x = x * func(x, y-1);
}
}

int func(int x, int y){
int value;
for(int i=0; i<y; i++){
value *= x;
}
return value;
}

とかかね。
829デフォルトの名無しさん:05/02/11 17:25:17
おぉ。
どうもありがとうございました!!
830デフォルトの名無しさん:05/02/11 17:27:50
>>826
RMI、Serialization、Prototypeパターンあたりで調べてみ。
831デフォルトの名無しさん:05/02/11 18:38:41
ant+jspネタです。

JSPをJava sourceにプレコンパイルしようと思い、http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jasper-howto.html#Web%20Application%20Compilation を参考にbuild.xmlを書いたのですがJasperExceptionが出てしまいます。

原因を探りたいんですがコンソールに出るのが

----
Buildfile: build.xml

jspc:
[jasper2] 2005-02-11 06:23:09 - エラー: ファイル '/main.jsp' は次の例外を発生しました:

BUILD FAILED
/home/tomcat/build.xml:33: org.apache.jasper.JasperException: Error compiling /main.jsp

----

でもうちょっと詳しい情報がほしいのですがどうやればいいでしょうか?
ちなみに<jasper2>タグのverbose属性を9999に設定してもだめでした。
832デフォルトの名無しさん:05/02/11 19:08:02
java.nio を使ってみよう、といろいろ遊んでいます。とあるウェブページをデコードして表示する、
というのを試しています。しかし、自分のコードではページの途中までしか表示されません。

import java.nio.ByteBuffer;
import java.nio.channels.Channels;
import java.nio.charset.Charset;
import java.net.URL;
import java.net.URLConnection;

public class Test2 {
public static void main(String[] args) throws Exception {
URLConnection conn = new URL("http://www.apple.com/jp/").openConnection();
int contentLength = 128*1024; //conn.getContentLength();

ByteBuffer buffer = ByteBuffer.allocate(contentLength);
Channels.newChannel(conn.getInputStream()).read(buffer);
buffer.clear();

CharSequence chars = Charset.forName("Shift_JIS").decode(buffer);
System.out.println(chars);
}
}
833832:05/02/11 19:15:50
上のコードの出力結果は、次のような感じです。
毎回、実行されるたびに出力される長さは違うように見えます。

$ java Test2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
(中略)
function loadRandomA() {
var Aurl = myArrayA[rand(A)-1];
docum
$

おそらくバッファについて理解していないか、それともうっかりミスをしているかだと
思いますが、なにか助言をいただけませんか。
それと、Content-Lengthヘッダが返されない時の適切なバッファの作り方も
教えていただければ幸いです。何回かに分けて読むのかと思うのですが…
834デフォルトの名無しさん:05/02/11 19:22:55
>>833
何も考えずvectorとかarraylistとか。
835デフォルトの名無しさん:05/02/11 19:33:07
>>826
EJBとか
836832:05/02/11 19:46:24
>>834
そういえばArrayListのソースコードとかは勉強になりそうですね。

InputStreamReaderを利用した方法は成功していて、この方法にも特に不満は
ないのですが、せっかくだから nio のやり方も知っておきたいです…。
837デフォルトの名無しさん:05/02/11 19:52:27
>>832
readの戻り値使ってまわさないの?

NewIO以前に旧IOでも同じことが必要だよ?
ただし、2回目以降とかローカルファイルはバッファの問題で一見問題なく動くように見えることもある
838832:05/02/11 19:54:35
>>837
ピンと来ました。
これを忘れているようじゃやばいっすね。ありがとうございます。
839832:05/02/11 20:34:00
while(channel.read(buffer)!=-1 && buffer.hasRemaining());

あたりですかね。試した範囲でうまく行きました。
Wikiに書くほどのことなのか、微妙

ともあれ、お世話になっています。ありがとうございました。
840きのぽ:05/02/11 23:33:28

技術的なこととは関係なのですが。。インストール時に感じた素朴な質問です。

SUNのサイトでは英語以外には日本語版のみしかないのですがなぜでしょうか?
他にヨーロッパ言語や中国誤等が入っていてもおかしくないかと。

COBOLのように日本以外ではほとんどJAVAは普及していないのではないのかと
不安になるのですが。。。。
841デフォルトの名無しさん:05/02/11 23:40:08
>>840
英語が出来ないのは日本人ぐらいだって馬鹿にされてるだけかもよ?
842デフォルトの名無しさん:05/02/11 23:40:53
>>840
あなたのブラウザが日本語表示ができるとサーバーに教えたから
サーバーが日本語のページも送ってきた
http://www.ugtop.com/spill.shtml
サポート言語のところ
843きのぽ:05/02/11 23:54:39
いや。。ヨーロッパ系はともかく、中国・韓国他アジア圏と比べるとそうでもないでしょう。
吉田豊氏などJAVAの仕様制定に日本人が深くかかわってるのは知ってましたが。。

英語と日本語だけぽこっとダウンロードページにあるのってちょっと目を引いたのできになりました。
844デフォルトの名無しさん:05/02/11 23:58:07
JavaでGUIを使ったWinアプリって作れますか?
exeファイルみたいに単独で実行できるようにしたいのですが
どのクラスを利用すればいいんでしょうか
845デフォルトの名無しさん:05/02/12 00:13:31
>>843
中国やインドではエンジニアと呼ばれる人間で英語できな人は
少数派だぞ。
846デフォルトの名無しさん:05/02/12 00:17:01
日本は世界で最も、Javaのシェアが高い国だからね。
それでもサーバサイドだけなうえ、この程度だから、他の国では(以下略
847きのぽ:05/02/12 00:52:30
>>842
そ、そんな高度なことを。。
それでは日本にいるほかの国の人や海外で作業する時はこまりますね。。

>>845
海外で仕事する人は出来てあたりまえですが、日本人だってそれは同じです。
半年ほど台湾で仕事してましたが、国内で作業する人たちは英語できない人もいっぱいいましたよ。
むしろ英語できる人は給料いいみたいです。

>>846
やっぱりそうなんですか。。
なんだかCOBOLみたいに独自路線で行っちゃうのかもしれないですね。

解答していただいた方たち、どうもありがとうございました。
848デフォルトの名無しさん:05/02/12 02:26:08
>>847
別に高度じゃないでしょ。
それに多言語版もすぐ見つけられるし。
849デフォルトの名無しさん:05/02/12 02:29:48
特定のURLに飛ばすアプレットを見た気がするのですが
あれってどうやってるんでしょうか
850デフォルトの名無しさん:05/02/12 02:39:46
>>849 showDocument()
851デフォルトの名無しさん:05/02/12 02:45:22
java.applet.AppletContext#showDocument(URL url) ですね
ありがとうございました
852デフォルトの名無しさん:05/02/12 04:10:27
DatagramPacket packet=new DatagramPacket(byte buf[], int length,InetAddress address, int port);
〜(何らかの処理)
packet=new DatagramPacket(byte buf[], int length)
〜(何らかの処理)

こういう場合ってpacketオブジェクトは一つしか生成されず
DatagramPaclet参照用のメモリも一つになりますよね?
853プログラマ見習い:05/02/12 09:27:36
今JDBCを勉強しておりJSPファイル内から下記コードを入力し
DBへ登録処理を行なっているのですがなぜか処理されません。
何が原因なのでしょうか?

<%
String user_name = (String)session.getAttribute("user_name");

/* ここからDBへの登録処理 */

request.setCharacterEncoding("Shift_JIS");
Class.forName("org.gjt.mm.mysql.Driver");
Connection member_table = DriverManager.getConnection("jdbc:mysql://localhost/myservlet_db","root","1234");
Statement state = member_table.createStatement();
try{
int res = state.executeUpdate("insert into member_table set user_name=\"" + user_name + "\"");
}catch(Exception ex){
}

state.close();

%>
854デフォルトの名無しさん:05/02/12 10:13:44
>>853
例外を握りつぶさない。せめてこう書け。
}catch(Exception ex){
 ex.printStackTrace();
}
話はそれからだ。これによりコンソールに表示される結果を見てからでないとわからん。
855プログラマ見習い:05/02/12 10:27:02
>>854
ex.printStackTrace();
を記述しもう一度アクセスしてみたのですが
ダイレクトにDOSでテーブルを覗くとやはり処理がされて
いませんでした。何が原因だと思われますか?
856デフォルトの名無しさん:05/02/12 10:32:30
>>855
スタックトレース晒せと言われる予感。
857デフォルトの名無しさん:05/02/12 11:54:06
>>853
Statement state = member_table.createStatement();

Statement state = member_table.createStatement(ResultSet.TYPE_FORWARD_ONRY,
ResultSet.CONCUR_UPDATABLE);

858デフォルトの名無しさん:05/02/12 12:03:45
それにmysqlならURLの書き方が違うだろ
マルチバイトキャラクタでこけるぞ
859デフォルトの名無しさん:05/02/12 12:36:56
マルチバイトにするとBlobが書き込めなくなるからダメ
860デフォルトの名無しさん:05/02/12 13:08:28
んなことねぇよ
861デフォルトの名無しさん:05/02/12 13:09:39
>>853
>int res = state.executeUpdate("insert into member_table set user_name=\"" + user_name + "\"");
こいつもSQL Injectionされがちだからダメ。PreparedStatement使いなさい。
862デフォルトの名無しさん:05/02/12 16:07:24
>>844
そういうことやりたいならVBですな。
javaはクライアントサイドでは負け組なのです。

仕事じゃなくて、趣味とか個人的理由でやるなら、
SWTとかSwingのパッケージを使いなさい。

exeファイルみたいに単独では動かないです。
JREをいれてもらって、javawあたりで動かす。
eclipseとかjavaで出来たアプリも、nativeな言語で起動用の
exeをつくって、内部でJREのインスコフォルダ探して、
javaw Eclipseとかやってると想像。

想像で回答しました。教えてあげてください、えろいひと
863デフォルトの名無しさん:05/02/12 17:17:04
>>862
想像いくない
普通にJavaでGUIアプリ使えるし実用的だし仕事で使ってる
趣味こそ何の言語でもいいだろう

サイズは大きくなるがJREとセットにして配布すればインストールの手間もなく動く

どうせVBだって.NETだってランタイムが必須なんだしそれに比べれば
ランタイムをいやがるやつにもJavaは使わせることが出来る

GUIを本格的に作りこむならNetBeansが必須か
864デフォルトの名無しさん:05/02/12 18:28:48
>>863
>> javaはクライアントサイドでは負け組なのです。
> 普通にJavaでGUIアプリ使えるし実用的だし仕事で使ってる
> 趣味こそ何の言語でもいいだろう

もちろんJavaで出来ないとはいってないです。
ただ、仕事でGUIのクライアントアプリケーション作るとしたら、
生産性、要員の確保のしやすさ、単価を考えたら
Javaではないだろうと思いますな。
まあここは質問者の判断なので。

javaで作ったクラスを"java クラス名"とか指定させずに
起動したいというのが>>844の質問なんだけど、
そんなときはどうするのでしょう?
スクリプト書いてそれを実行させるの?
まあそれでもよいんだけど、
eclipseは、eclipse.exeという実行ファイルがあるけど、
exeはネイティブで作られていて、内部でjavaw クラス名を
やってるのかな?と想像してるんだけどそれは違うかな?
865デフォルトの名無しさん:05/02/12 18:40:55
>>864
仕事でSwingで作っている俺は一体・・・
VBは手間のからないコンポーネントでは非常に効率はいいものの
細かい動きをさせようとすると躓く
BCBやDelphiも同じような感じだけど、こちらはオーナー描画とか
比較的考慮されているために対応はしやすいか

Swingを理解していればNetBeansのほうがVBより生産性は上
VBと同じように配置したいのならNullレイアウトでいいし
もしかしてJavaだとGUIがぺたぺた貼り付けれないと思ってるのか?
EclipseVEは正直仕事では使い物にならないし、SWTサポートしてから
Swingやるきないようだし

要員の確保といってもVBが使えることという条件だけでは俺はださないからな
ぺたぺたはりつけてイベントにコードかけるだけのやつしかあつまらんし
.NETになっただけでお手上げのやつすらいる

同じ質問何度も繰り返してるけど、もう結論でてるし、そもそも
過去ログに何度も出てるし

あと、さっきから想像だけで勝手に判断するのやめれ
866デフォルトの名無しさん:05/02/12 18:49:24
>>864
gcj + SWT とかで作れば単独で実行できるファイルを作れる。
867デフォルトの名無しさん:05/02/12 18:51:36
>>865
>VBは手間のからないコンポーネントでは非常に効率はいいものの
>細かい動きをさせようとすると躓く

そんな事はない。VBは簡単なものから複雑なものまで自由自在に
GUI制作ができる。しかもJAVAの半分の工数でだ。
JAVAはレイアウトがダメだね。現場じゃVBの方がよっぽど重宝
されtるよ。一番働いてるのがVB使いというオチ。
JAVAは尊大なだけで、どうも使いどころがない。
868デフォルトの名無しさん:05/02/12 19:01:58
必死なVB使いがいるスレはここですか?

Swingと比べないほうがいいよ
Swingの機能の多さは異常なほどだ
869デフォルトの名無しさん:05/02/12 19:04:36
やめてくれよ。VBつかえまーすとかいうやつにGUI作らせると
環境かえたらラベルがはみ出るとかそんなんばっか作ってくる。
正直Javaのレイアウト程度のことが理解できないやつはVBも
ちゃんと理解できてない。
870デフォルトの名無しさん:05/02/12 19:06:07
VBでレイアウトマネージャ作るの結構大変だったと記憶してるが。
あれが便利と思わない人もいるんだね。
絶対座標が好きならヌルレイアウトでいいじゃない。
871デフォルトの名無しさん:05/02/12 19:43:47
>>844の質問に対する結論

・javaでGUIは作れる。それはSWTとかSwingとかのパッケージを使え。
・jdkで用意されているものではexeファイルは作れない。
 GCJ等のAOTを使ったらできる(制限あり)>>801
 また起動用スクリプトを提供したり、native言語で起動用のexeを
 こしらえてもよいが、とにかくそんなことを検討する必要がある。

>>864-870(除く>>866)の結論

・eclipseのexeが何かは謎。想像で語るな。
・javaとvbでともにやろうと思えば何でもできる
・現実としてvb要員はjava要員より遙かに確保しやすく、単価も半額に近い
・Swingは実は高機能だ
・が、vb使えますというヤツは怪しい。疑ってかかれ

ということで。
872デフォルトの名無しさん:05/02/12 19:46:37
eclipse.exe
Microsoft Visual C++ 6.0
873デフォルトの名無しさん:05/02/12 19:55:11
exeにしなくてもちゃんとしたmanifest入れとけば
jarからでもダブルクリックで起動するやん。。
何が不満なんだ?
874デフォルトの名無しさん:05/02/12 20:40:22
windowsしか知らないせいでexe以外はプログラムじゃないと思ってる予感。
875デフォルトの名無しさん:05/02/12 20:55:47
Windowsだと、プログラムの起動はデスクトップやスタートメニューのショートカット
からっていうユーザがかなりを占めるから、逆にそのへんとJRE環境だけインストーラが
体裁を整えれば実体がexeかどうかなんて瑣末な話になるんだけどね。exeかどうかに
こだわるのって小物をちまちま配布してるフリーウェアかシェアウェアの作者ぐらいではないかと。
876デフォルトの名無しさん:05/02/12 21:39:10
>>873
>>844をちゃんと読め。

>単体で
877デフォルトの名無しさん:05/02/12 22:01:41
プログラミングのことぜんぜん知らないんですけど
java入門書は「やさしいjava」↓
http://www.amazon.co.jp/exec/obidos/ASIN/4797319062/qid=1108213170/br=1-2/ref=br_lf_b_1/250-8460186-9581062
でおkですか?
やる気はあります
878デフォルトの名無しさん:05/02/12 22:04:05
>>876
>>873は単独で動かなくてもいいじゃん
どうせダブルクリックで動くからと言いたいんだろ
879デフォルトの名無しさん:05/02/12 22:13:33
誰かが VC/VB/VB.net あたりと Java で全く同じ挙動をする
GUI サンプルアプリ作って見せてやればいんでないの?
初心者ほど言葉での説明が難しいし。
880デフォルトの名無しさん:05/02/12 22:36:58
VJは?
881デフォルトの名無しさん:05/02/12 22:41:36
つーか、VBはランタイム必要なので単体じゃねーだろ
882873:05/02/12 23:00:42
>>876
今時まともなアプリでexe一個で動くなんて珍しいだろ。
WindowsならカレントディレクトリのDLLもロードできるし。
SWT使ってもjarから直で起動できるぞ?
883デフォルトの名無しさん:05/02/12 23:18:25
windowsアプリケーション全然しらんので教えて欲しいんだけど、
jarから直起動させるとしたら、そのjarにはアイコンがついて
欲しくなるのが、エンドユーザの心理になると思うのだが、
jarに任意のアイコンってつけれるの?

javaの質問じゃない気配もあるが・・・
884デフォルトの名無しさん:05/02/12 23:43:28
jarから直接起動ってたとえばVMにたいする
細かいオプション指定とか出来ないし、いまいちだよね。
いまだとJavaの起動用ツールも既成のがあるし、インストーラー
作成ツールも手軽に手に入るしもうちょっと手をかければ
いいのになあ。NSISなんか使うと一見ネイティブとかわんないよね。
885デフォルトの名無しさん:05/02/12 23:53:32
文字列内の文字の値をチェックしたいのですが、出来ますか?
たとえば、文字列に0〜9以外が使っていたらエラーと出す感じです。
886デフォルトの名無しさん:05/02/12 23:59:08
>>885
正規表現を使ってはどうでしょうか?
ttp://fumichan.zive.net/prog/Java/se020101.jsp
887デフォルトの名無しさん:05/02/13 00:19:28
>>877
おk
888885:05/02/13 00:34:22
>>886
ありがとうございます。
ひとつ聞きたいのですが、aaの変数5桁の文字列から、0〜9とA〜Zを使用しているかでしたら、
("[0-9A-Z]{5}", aa)
でよろしいのでしょうか?
調べるのに時間がかかってしまいました(汗
889デフォルトの名無しさん:05/02/13 00:49:13
>>888
やってみろって。
890デフォルトの名無しさん:05/02/13 00:59:41
>>887
( ・ω・)どうもです
891デフォルトの名無しさん:05/02/13 01:10:05
アルゴリズムを学ぶのに一番いい本教えてください。
892853:05/02/13 01:14:10
>>856
得にエラーは何も表示されてはいないようです。

>>857
書き換えて実行した所
下記の様なエラーが出ました。???何が原因なのでしょうか?

シンボル: 変数 TYPE_FORWARD_ONRY
場所 : java.sql.ResultSet の インタフェース
Statement state = member_table.createStatement(ResultSet.TYPE_FORWARD_ONRY,ResultSet.CONCUR_UPDATABLE);
^
エラー 1 個

>>861
SQL Injection なんて言う言葉の意味自体知りませんでした。
今ぐぐってやっと意味が分かりました。結構SQLも怖いですね(w

893885:05/02/13 01:16:32
>>889
やってみましたが、出来ません。
aa に A123* との値を入れています。

if(Pattern.matches("[0-9A-Z]{5}", aa))

これでif文に入ってくれませんでした。
分かりませんので訂正お願いします。
894885:05/02/13 01:20:44
すいません。
0〜9とA〜Z以外だったらですので、

if(Pattern.matches("[^0-9A-Z]{5}", aa))

として実行しています。
895デフォルトの名無しさん:05/02/13 01:30:12
>>892
TYPE_FORWARD_ONRY

TYPE_FORWARD_ONLY
896デフォルトの名無しさん:05/02/13 01:30:32
>>398
sunのどこかにDemoがあった。
897デフォルトの名無しさん:05/02/13 01:33:40
>>853
単にcommitしてないだけなんじゃないの?
898デフォルトの名無しさん:05/02/13 01:34:58
>>894
if(!Pattern.matches("[0-9A-Z]{5}", aa)) {
error
}
簡単にこうするべきでは。。。
899885:05/02/13 02:13:37
>>898
そうでした(汗
("![0-9A-Z]{5}", aa)) {
と変なとこに付けていました。。。

答えて頂いた方々ありがとうございました。
900デフォルトの名無しさん:05/02/13 03:06:56
>>852
>DatagramPacket packet=new DatagramPacket(byte buf[], int length,InetAddress address, int port);
>〜(何らかの処理)
>packet=new DatagramPacket(byte buf[], int length)
>〜(何らかの処理)

>こういう場合ってpacketオブジェクトは一つしか生成されず
>DatagramPaclet参照用のメモリも一つになりますよね?
オブジェクトは2つ生成されるが、
new DatagramPacket(byte buf[], int length,InetAddress address, int port);
こちらは、どの変数からも参照されていないのででガーベジコレクションの候補となり
自動的に回収されます。

901853:05/02/13 10:20:15
>>895
State文ではダメとの事でしたのでぐぐって PrepareState文 でコード
を記述し再チャレンジしてみたのですがやはりダメでした。。。
どうすればMYSQL上へ反映されるのでしょうか?

String aaa = (String)session.getAttribute("user_name");

PreparedStatement pre_state = member_table.prepareStatement("insert into member_table set user_name = ?");
pre_state.setString(1,aaa);
try{
pre_state.executeUpdate();
}catch(Exception ex){
ex.printStackTrace();
}
pre_state.close();
902デフォルトの名無しさん:05/02/13 10:59:48
PreparedStatement pre_state = member_table.prepareStatement
("insert into member_table set user_name = ?");

PreparedStatement pre_state = member_table.prepareStatement
("insert into member_table set user_name = ?", ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);


903デフォルトの名無しさん:05/02/13 11:07:13
>>901
PreparedStatement pre_state = member_table.prepareStatement
("insert into member_table set user_name = ?");

PreparedStatement pre_state = member_table.prepareStatement
("insert into member_table (user_name) values (?);", ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);


904デフォルトの名無しさん:05/02/13 11:15:03
>>869
根拠はアンタの脳内ソースか?
自分はJAVAも使いこなせるを先に言っとくが、JAVAは本当に
帯に短したすきに流しだね。その冗長さに見合うだけの成果が得られない。
同じ開発ならより工数が少ない言語を使うべきだろう。
その冗長な言語を使うJAVAプログラマも増長してる。自分は
凄い言語使ってるんだぞって変な驕りがある。作る物は同じで時間と
労力をかけてるだけなのにね。一般アプリはVB,WEBアプリは
Perl、PHPで十分だ。JAVAは尊大なだけでメリットがない。
これは現場の意見だ。ここでVBを軽んじる輩はどうせ理屈先行の
学生なんだろうが、ちょっと大人気なかったかな。
905デフォルトの名無しさん:05/02/13 11:16:50
>>904
>自分はJAVAも使いこなせるを先に言っとくが
(^^;
906デフォルトの名無しさん:05/02/13 11:16:59
すれちがいだよ
907デフォルトの名無しさん:05/02/13 12:48:00
JavaにはC++でいうオペレーターオーバーロードはありませんか?
908デフォルトの名無しさん:05/02/13 12:49:41
>>907
可読性の低下を招く恐れがあるため実装されていません。
909デフォルトの名無しさん:05/02/13 12:49:42
ありません
910デフォルトの名無しさん:05/02/13 12:57:49
>>940
>これは現場の意見だ。ここでVBを軽んじる輩はどうせ理屈先行の
>学生なんだろうが、ちょっと大人気なかったかな。

ここは笑うところだよね?
911デフォルトの名無しさん:05/02/13 12:59:53
>>910
そこはオチだ。ツボは他にもたくさんあるぞ。
言ってみれば吉本新喜劇のような完成された笑いだな。
912デフォルトの名無しさん:05/02/13 13:05:58
死滅スレからの誤爆かねぇ
913デフォルトの名無しさん:05/02/13 13:47:07
スレ違い。失せろ。
914デフォルトの名無しさん:05/02/13 14:15:02
質問です。

ストリングにバックスペースのエスケープ文字 \b を付け足したのですが、
一文字削除されずに、 . 半角のピリオドが挿入されてしまいます。
これはどうしてか教えて下さい。お願いします。
915デフォルトの名無しさん:05/02/13 14:20:19
>>914
それC言語でも文字が消えるとは限らないぞ
916デフォルトの名無しさん:05/02/13 14:22:54
>>915
レスありがとうございます。
subStringで一文字除くことにします。
917デフォルトの名無しさん:05/02/13 14:32:48
JSPで画像(GIForJPG)を結合させてアクセスカウンタを作りたいです。
HTML内からimgタグで呼び出したいので一枚の画像として出力させたいのですが
画像を結合して出力可能(response.getOutputStream()に出力)なデータを得る
ところまでが上手くいきません。
ご教授ください。
918デフォルトの名無しさん:05/02/13 14:50:48
>>917
うまくいかなかったコードを提示してください。
アドバイスできるかもしれません。
919デフォルトの名無しさん:05/02/13 15:03:13
>>917
java.awt.image.BufferedImageクラスとjavax.imageioあたりを
使えばできるんじゃないか?

BufferedImage(int width, int height, int imageType);
このコンストラクタで結合後のイメージの大きさを指定して

javax.imageio.ImageIO#read(File input)
でファイルを読み込んで

BufferedImage#getRGB(int x, int y)
BufferedImage#setRGB(int x, int y, int rgb)
を使って結合後のイメージを作成して

javax.imageio.ImageIO#write(RenderedImage im, String formatName, OutputStream output)
で出力する
ドキュメントを見ての想像だからどうなるかわからんが
920デフォルトの名無しさん:05/02/13 15:54:55
Javaって速いんですか?
921デフォルトの名無しさん:05/02/13 16:05:50
激速。
922デフォルトの名無しさん:05/02/13 16:09:13
>>907
JAVAにも演算子オーバーロードはあります。
923844:05/02/13 16:27:33
みなさんお答え下さってありがとうございました。
参考にさせていただきます。
なんか、自分の質問で場が荒れてしまってすいません。
924デフォルトの名無しさん:05/02/13 22:10:19
java雑談スレッドはありませぬか?
925デフォルトの名無しさん:05/02/13 22:23:31
import java.io*;

class Sample1
{
public static void main(String args[])throws IOException
{
System.out.println("整数を入力してください。");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String str=br.readLine();
int num=Integer.parseInt(str);
System.out.println(num+"が入力されますた。");
}
}


なにがおかしいんですか?
926デフォルトの名無しさん:05/02/13 22:39:39
>>925
import java.io.*;
927デフォルトの名無しさん :05/02/13 23:32:56
OS Win2000
j2sdk1.4.2_07
PostgreSQL 8.0
CLASSPATHの設定.;C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;
C:\Tomcat 5.0\common\lib\servlet-api.jar;C:\j2sdk1.4.2_07\lib\tools.jar;
C:\j2sdk1.4.2_07\lib\dt.jar

C:\java>javac TestPG.java

C:\java>java TestPG
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at TestPG.main(TestPG.java:12)
928927:05/02/13 23:33:33
JDBCのテストが実行されません(;_;)
Tomcatでサーブレットのテストをする以前のdos窓でのteatエラーです。
何が原因なんでしょう?教えてくださいm(_ _)m
929927:05/02/13 23:34:52
C:\java>java -classpath C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar Test
PG
Exception in thread "main" java.lang.NoClassDefFoundError: TestPG

C:\java>java -classpath C:\Tomcat 5.0\common\lib\servlet-api.jar TestPG
Exception in thread "main" java.lang.NoClassDefFoundError: 5/0\common\lib\servle
t-api/jar
930927:05/02/13 23:38:38
ソース(TestPG.java)
import java.sql.*;
public class TestPG {
public static void main(String argv[]) {
Connection conn = null;
Statement stat = null;
ResultSet rset = null;
String sql = null;
String url = "jdbc:postgresql://localhost:5432/wdb";
try {Class.forName("org.postgresql.Driver");
conn = DriverManager.getConnection(url,"user","1234");
stat = conn.createStatement();
sql = "select * from gero";
rset = stat.executeQuery(sql);
while (rset.next()) {
String name = rset.getString("day");
String email = rset.getString("onesy");
System.out.println("VALUES = " + "day" + "\t" + "onesy");}
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {if (rset != null) rset.close();
if (stat != null) stat.close();
if (conn != null) conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
931デフォルトの名無しさん:05/02/13 23:40:34
>>929
うーん、そういう試行錯誤やるくらいならjarの中身見て目的のクラスが
あるかどうか確認するほうがなんぼかましだと思うよ。
あと自分でクラスパスがおかしそうだと思っているようだけど、そういうときは
System.err.println(System.getProperty("java.class.path"));
して実行系中で確認しようね。
932デフォルトの名無しさん:05/02/13 23:41:06
クラスパスにjarだけでなくちゃんとカレントパス(.)を加えな。
933927:05/02/13 23:45:18
>>931
すんません、よく分かりません(^_^;;;
>>932
>CLASSPATHの設定.;C:\PostgreSQL
1番最初に加えてるのですけど・・・
934デフォルトの名無しさん:05/02/13 23:48:13
>>933
>1番最初に加えてるのですけど・・・

929では加わってないのを指摘されているんじゃないの?
935932:05/02/13 23:49:43
>>927
おっと失礼。じゃあ多分TestPGがパッケージに属してないのが問題だろう。
936デフォルトの名無しさん:05/02/13 23:50:16
>>929
|C:\java>java -classpath C:\Tomcat 5.0\common\lib\servlet-api.jar TestPG
|Exception in thread "main" java.lang.NoClassDefFoundError: 5/0\common\lib\servle
|t-api/jar

ワラタ. -classpathの引数をクォートしてないから引数が分割されちゃってるよ。
937936:05/02/13 23:51:05
あ、あとカレントディレクトリが抜けてる。
938デフォルトの名無しさん:05/02/13 23:51:48
939デフォルトの名無しさん:05/02/13 23:52:28
>>935
java.lang.ClassNotFoundException: org.postgresql.Driver
だからそれはないね。
940927:05/02/13 23:54:59
>>934
こんなになりました・・・
C:\java>java -classpath . C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar TestPG
Exception in thread "main" java.lang.NoClassDefFoundError: C:\PostgreSQL\8/0\jdbc
\postgresql-8/0/309/jdbc3/jar
941927:05/02/13 23:57:21
>>936
>引数をクォート
って何ですか?詳しく
942デフォルトの名無しさん:05/02/14 00:01:00
>>940-941 あ、基本的にWindowsでのパスの表現とかコマンドラインでの
作業が理解できてない人なのか。
1. パスを複数指定するときは;で区切る。
2. コマンドラインの複数の引数はスペースで区切られるので、スペースを含む引数は""で囲わないと正しく解釈されない。
943デフォルトの名無しさん:05/02/14 00:05:52
>>941
まず問題を整理してみようじゃないか。

・-classpathはCLASSPATH環境変数を無視して再設定する。だからCLASSPATHに指定している
ものも再度設定する必要がある。
・カレントディレクトリも自分でちゃんと設定しないといけない。
・クラスパスの区切り文字はWindowsでは「;」。

だから

java -classpath "C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;." TestPG

でどうだ。
944927:05/02/14 00:07:08
>>942
C:\java>java -classpath .; C:\PostgreSQL\8.0\...の(.;)しましたが変わらずエラーでした
というか、マイコンピュータ右クリ→プロパティ→詳細→環境変数のところで設定してるのですが・・・
945927:05/02/14 00:08:30
>>943
ありがとうございます。結果は↓でした(;_;)
C:\java>java -classpath "C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;." T
estPG
java.lang.ClassNotFoundException: org.postgresql.Driver
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at TestPG.main(TestPG.java:12)
946デフォルトの名無しさん:05/02/14 00:11:47
>>940
これを読め
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/classpath.html
お前の場合は、-classpath オプションを付ける方法をやっている。
環境変数CLASSPATHを使う方法もあるが、決して使うなよ。(すべきではないし、お前は必ず間違うから)

あとは、>>942のいうとおり、スペースを含む引数を""で囲むこと。
Program Filesとか、Tomcat 5.0とかがそうだ。
"C:\Tomcat 5.0\common\lib\servlet-api.jar"

947デフォルトの名無しさん:05/02/14 00:15:46
>>945
全部まとめて、""で囲んでいる>>943は、間違っている。
それに、
C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar
↑このパスならばスペースを含まないから、""で囲む必要はなし。

java -classpath C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;. TestPG
でどうだ?
C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jarのパスが間違いないことは、確認しとけよ
948927:05/02/14 00:16:00
>>946
分かりやすい例を出していただきありがとうございます。
949デフォルトの名無しさん:05/02/14 00:19:59
だからさ、コマンドラインや環境変数から指定されたクラスパスが
ちゃんと設定されているかmain()中で
System.err.println(System.getProperty("java.class.path"));
しろと。大体ドキュメントにJDBCに必要なjarについて書いてないの?
950デフォルトの名無しさん:05/02/14 00:21:03
>>945
すまん、C:PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jarのところな、C:PostgreSQLじゃなくて、
C:\PostgreSQL だった。
951947:05/02/14 00:26:38
>>950
お前が間違うから、それをコピったおれまで間違ってるではないか!
952デフォルトの名無しさん:05/02/14 00:27:52
>>947
|全部まとめて、""で囲んでいる>>943は、間違っている。
オイオイ.
953デフォルトの名無しさん:05/02/14 00:30:00
>>952
ということはいま927の相手をしているのは3人以上いるわけだな。
じゃ、俺は
_∧∧__   / ̄ ̄ ̄
|( ゚д゚)| < 寝る
|\⌒~\  \___
\ |⌒⌒|
954927:05/02/14 00:30:15
>>950
うおおおぉぉ!
すごすぎ!できました!ありがとうございます。
C:\java>java -classpath C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;. TestPG
VALUES = day onesy
出ました!、、、でもデータベースの中身を引き出せてないような・・・ちょい調べてみます。
955デフォルトの名無しさん:05/02/14 00:30:40
間違えた、>>951だた。
956デフォルトの名無しさん:05/02/14 00:47:20
助けてください。
web上にある画像(jpg)を読み込んで、その画像に画像処理を施す、
というプログラムを書いています。
ローカルにあるjpgファイルをImageオブジェクトやPixelGrabberを使って
ピクセル値を取り出すところはできたのですが、
「web上にある画像を読み込む」ところがわかりません。

Image img = Toolkit.getDefaultToolkit().getImage( URL url )
というメソッドがあるらしいのですが、
具体的にどのようにすればよいのでしょうか?
957デフォルトの名無しさん:05/02/14 00:54:03
そのまま使えば良いんじゃないの?
958927:05/02/14 01:06:33
>>954
>でもデータベースの中身を引き出せてないような・・・ちょい調べてみます
分かりました、ソース(TestPG.java)の記述が間違ってました(引用したソースのかけらが残ってました)。
>String name = rset.getString("day");
>String email = rset.getString("onesy");
>System.out.println("VALUES = " + "day" + "\t" + "onesy");}
訂正↓
String day = rset.getString("day");
String onesy = rset.getString("onesy");
System.out.println("VALUES = " + day + "\t" + onesy);}

C:\java>javac TestPG.java
C:\java>java -classpath C:\PostgreSQL\8.0\jdbc\postgresql-8.0.309.jdbc3.jar;. TestPG
VALUES = 2005-02-01 お父さん
VALUES = 2005-02-01 お母さん
959デフォルトの名無しさん:05/02/14 01:12:02
>>957
そのまま使いたいんですが、
たとえば、
Toolkit.getDefaultToolkit().getImage( new URL(h ttp://www.〜〜.co.jp/a.jpg) )
みたいに指定するだけだと、
action deniedというエラーが出ました。
ファイルのpermissionを確認しましたが、ちゃんと777になっています。
どう対処すべきかわからず、質問した次第です。
対処方法を教えてください。
960デフォルトの名無しさん:05/02/14 01:19:36
959です。
なんか自己解決してしまいました。
classファイルと同じところにある画像を読み込むことができました。
URL url = new URL(getCodeBase(), "〜〜.jpg");
img = Toolkit.getDefaultToolkit().getImage(url);
でいけました。
お騒がせしました。
ありがとうございました。
961デフォルトの名無しさん:05/02/14 01:52:39
アプレットかよ。
アプレットはアプレットのおいてあるサーバとしかデフォルトでは通信できないだろ。
962917:05/02/14 09:27:21
919さん、教えていただいた方法でできました。
ありがとうございます。
963デフォルトの名無しさん :05/02/14 09:46:22
ブラウザ上で動くアプレットではなく、
コマンドプロンプトでのCUIアプリでもなく、
普通のWindowsアプリのように
ウィンドウを出してその中でツールなりゲームなりを作りたいのですが、
javaでスタンドアロンのアプリってどうやって作ればよいのでしょうか。
とりあえずアプリの自前ウィンドウを出して文字表示でもできればよいのですが、
特別な方法があるのでしょうか。
964デフォルトの名無しさん:05/02/14 10:56:52
|∧_∧
|´・ω・`) そ〜〜・・・
|o源 o
|―u'

| ∧∧
|(´・ω・`)
|o   ヾ
|―u'   源 <コトッ

|  ピャッ!
| ミ
|     源

import java.awt.*;import java.awt.event.*;import javax.swing.*;
class JFrameSample{
public static void main(String args[]){
JFrame jf = new JFrame("JFrameSample");
JPanel jp = new JPanel();
JLabel jl= new JLabel("おはよう、世界");
JButton jb = new JButton("良し!");
jf.setContentPane(jp);
jb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Toolkit.getDefaultToolkit().beep();}});
jp.add(jl);
jp.add(jb);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setBounds(0,0,150,80);
jf.setVisible(true);}}
965963:05/02/14 12:40:22
>>964
ありがとうございます。でもやはり結局コマンドプロンプトとかから起動するしかないんですかね?
なんかDOS窓とか開くのは気持悪いです。
なんていうか普通のWindowsアプリみたくexeファイルダブルクリックで
即、アプリが単独で起動するような感じに作ることっていうのはJavaでは無理なんでしょうか?
EclipseはJavaで作られてるって聞いたことがあるんですが、
exe形式の実行ファイルで普通に起動しますよね?
これはどういう事なんでしょうか。こういう風にできたら理想なのですが。
966デフォルトの名無しさん:05/02/14 12:44:29
過去スレまで調べろとは言わんが、現行スレで既出かどうかぐらい調べろよ

#この話題はマジでFAQ入れた方がいいと思う
967デフォルトの名無しさん:05/02/14 12:45:29
>>965
http://jaist.dl.sourceforge.net/sourceforge/jsmooth/jsmooth-setup-0.9.7.exe
これをDL&インストールして起動後、対象とするJarを選択する。
英語だけど、まぁ見れば分かる。

それにしても、そんなにEXE化の要望って強いもんなのかな?
ちょっと驚いてる。
968デフォルトの名無しさん:05/02/14 12:48:43
>>967 まともなインストーラを作らずに圧縮ファイルに適当にまとめて
配布したい人には重要なんじゃないの?
969デフォルトの名無しさん:05/02/14 12:56:20
VM上で動くものだっていう認識が薄いんだと思う。
例え、exe経由で実行できるようにしても、
JREまで配布しなければならないと知ったら、失望するんだろうな。
970デフォルトの名無しさん:05/02/14 12:56:51
>>965
>>873

結局Windowsでしか動かされないJavaも悲しいものだ
971デフォルトの名無しさん:05/02/14 13:04:01
JWSで、署名して云々とかいうとまた「えーっ」とか嫌がられるしな。
そこらの*.exe何も警戒せずに実行している藻前らにそんなこといわれ
とうないわ、って感じだ。

972デフォルトの名無しさん:05/02/14 13:15:07
メインクラスをmanifestで指定した、JARの場合の不満点

・一般ユーザにJARファイルが実行可能だという認識がない。(ダブルクリックして実行できると思わない)
・アイコンが設定できない

インストーラ作って、アイコンを設定したショートカットファイルを
スタートメニューなんかにおけば、おそらく要望は満たされると思うが、
インストーラまで作りたくない。

というのが理由だと思う。
973963:05/02/14 13:18:24
>>969
VM上で動くってのも分かっておりますし、EXE形式に拘ってるわけではないのであります。
説明のために、WinアプリのEXEみたいな起動方法を例として上げただけで、
あんな風に普通にアイコンダブルクリックで起動できればというのが希望していることです。
なのでそれができれば形式とかは問いません。
自分で起動するにも他人に配るにもいちいちコマンドプロンプト立ち上げて
「java 〜」とか打ち込むのは面倒くさいです。

とりあえずexe化する方法は教えていただけたので参考になりましたが(ありがとうございます)、
どうもすこし大げさな気がします。
他にも方法があったら教えて下さい。お願いします。
974デフォルトの名無しさん:05/02/14 13:26:55
>>973
であれば、どれかの方法が考えられる。

a)バッチファイルを作って、バッチファイルにコマンドラインと同じことを記述する
b)jarファイルにmanifestファイルを追加する(Windowsならダブルクリックで起動可)
c)b)で作成したjarに対するショートカットファイルを作って、アイコン設定する。

単にダブルクリックで実行したいだけなら、バッチファイルでも作れば楽だよ。
975974:05/02/14 13:32:56
manifestファイル追加って書いたけど、説明不足で、
Main-Classを指定した、manifestファイルを追加するだ。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/jar/jar.html#JAR%20Manifest
976853:05/02/14 13:48:38
>>902
PreparedStatement pre_state = member_table.prepareStatement
("insert into member_table set user_name = ?", ResultSet.TYPE_FORWARD_ONLY,
ResultSet.CONCUR_UPDATABLE);
と変更して実行したのですがやはりMySQL上に反映されておりませんでした。
何が原因なのでしょうか?全くもって不明です(●>_<●)
977デフォルトの名無しさん:05/02/14 13:49:22
>>973
その発言の中のキーワードで検索できるんじゃないか?
978デフォルトの名無しさん:05/02/14 13:51:09
>>976
なにか例外はでてない?
例外がでてたら書いてくれ
979853:05/02/14 13:54:16
>>903
すみません。>>903のソースで試したもみたのですが
やはりDBへ反映されません。。。
文法もちゃんと合ってはいると思うのですが、、、
980853:05/02/14 14:13:52
>>978
例外は得に何も出ていませんでしたので、
自らMySQL上で下記のコード
insert into member_table set user_name="hogehoge";
と入力した所
ERROR 1062: Duplicate entry '' for key 1
というメッセージが表示されました。もしかすると
SQL文自体が間違っているのかもしれませんので
ぐぐって色々試してみます。

(回答頂き申し訳無いのですがこれから仕事へ出かけます)
どうもです(^o^)v
981デフォルトの名無しさん:05/02/14 14:15:02
こんにちは。質問があります。
JavaMailを使用して、受信メール一覧等、指定のフォルダのメール一覧の取得はできたのですが、
アドレス帳に登録されているメールアドレス一覧の取得はできるのでしょうか?
982デフォルトの名無しさん:05/02/14 14:24:50
>>981
アドレス帳って何のアドレス帳だよ…
983963:05/02/14 14:33:36
>>975-977
ありがとう!大変参考になりました。
そのmanifestファイルってのがなにやらよさげなので
探ってみます。バッチファイルもよさげです。
色々レスくれた皆様もありがとうございました。
984デフォルトの名無しさん:05/02/14 14:41:22
すいません。
そこらへんも良く分からなくて、アドレスが保管されているものからだったら何でも良いのですが、
メールのように、取得できる方法何か良い方法はあるのでしょうか?
985デフォルトの名無しさん:05/02/14 14:54:05
>>983
ちなみに、eclipseなんかを使っているのであれば、
Manifestファイルなんかはあまり意識することなく、
GUIによるウィザード形式で、メインクラスを指定するだけで作れる。
eclipseの場合は、「エクスポート」を使う。
986デフォルトの名無しさん:05/02/14 15:08:02
>>984
メールはサーバから受信したり、送信したりする仕様が決まっているが、
アドレス帳は、様々なメールソフトが独自に実装しているもの。
だから、「Outlook Expressだったら、○○の形式で、××というファイルに保存される」
とか、「鶴亀メールは、xxxxの形式で、yyyyというファイルに保存される」
とか、ソフトによって勝手に実現されているわけ。

当然、JavaMailができるのは、全てのメールソフトのアドレス帳形式に
対応するなんてしているわけなくて、仕様が決まっている送受信の部分だけ。

アドレス帳を読みたいのであれば、まずは、
どのメールソフトのアドレス帳なのか決めろ。その上で
・(例えば)Outlook Expressのアドレス帳は、どんな仕様で保存されいるのか?
といった質問から始まる。そして、この質問はJavaと無関係なのでスレ違い。
987デフォルトの名無しさん:05/02/14 15:08:20
>>984
どうにでもできるから好きなように実装すればよい。
988デフォルトの名無しさん:05/02/14 15:18:17
>>985
Eclipseを前提にしていいのであれば、NSISのフロントエンド
となるプラグインがあるので、それ使ってインストーラー
つくっちゃうほうがいいね。スタートメニューにアイコンできるし、
JREを同梱するかどうかの判断を別にすれば、かなりベストに
近い解だと思う。ただ基本的に有償で、フリーで使えるのは
RCPアプリケーション向けの部分だけだけど。
989984:05/02/14 15:27:34
>>986さん,987さん
わかりやすい説明ありがとうございます。
とても参考になりました。
使用しているのはMSのOutlookなので、〜.pabと言うファイルを解析すれば上手く取得できそうです。
お忙しいところ答えていただき、ホントにありがとうございました。
990サミー・コリル:05/02/14 15:41:40
              ,. −===ー- 、_ _
           ,. ' ´            丶、
         ,.r'   /             \
        ,ィ//l /              ヽ `、   
       /ミ///  /    /   n     ヽ ヽ ',
       /ミ///:  / / //  / l l  .l l  } i l  ヽ
       lミlトl=l:: / / //  / / l   | l  l l l   l   /
       j==|=l: :/ / // / / l  l |  | l |   |  <  あっボク、サムエル・ワンジル。1000を取るから。ヨロシクね
      《(@)}ノ: |//‐/‐!/l/!/ /  //l|__/ / / l  l   \
       lー'lξソ_,.r==ト`i! リ /イ/三レ'l|/ / l |  l
       l:: |ξ ヽ {:':::::リ `    ' ,.イ:':::::} ヾレi l l  |
       |:: lξ iヘ,. ''=‐'       !;;__ノ ハリ | l _|
       l:: |:ξt6l ///    ,   /// シ´〉 / /l |
       |_:: l::ξlート、     ‘      /-'l //::l| l 
       |:: !::ξl:::l::::ヽ、   ‐‐    ィ':::::ノ //::::|l /
       `ィ!|:: l::::|:::::}. ` 、__ ,. イ:::::}::::/ //::::/!/
        i!ヽ、|::::ト、:j      |;;;;l;;/;;/ /'´ー.'|/
      _   ー`ノ       l\__//,_
      /:::::\―/        ` `ー-〒コ ト、
     ノ:::::::::::::`ヽ、_, ―‐、,,,  ,.ー−‐l::l Y::ヽ、
   ,.-'::::,へ、::::::::::::`ヽ,_          /:/  l::::::::ヽ=、
   /::::::/ : :`ヽ、::::::::`ヾ、、      /:/__|::::::::::i:::〕〕、
  ./::::::/ :  :   `ヽ、:::::::ヽ,`ヽ、  / ̄`ヽヽ\::::::l|:::|: :ヽ
 /::::::/   :    :  `ヽ、::::`ヽ,-‐'‐‐==、 l:::|::::::\i!::l : `、
 |:::::/   :   :      `ヽ:::::⊂ニニニ、ー |::|:::::::::::\l : : :ヽ
 |:::/ :    :   :    :  `ヽ;:::ヽ_`> l:::l::::::::::::::::\: : :`、 
991デフォルトの名無しさん:05/02/14 15:42:44
java で、C で言うところの、argv[0] を取得する方法ってありますでしょうか?
class ファイルが置いてあるディレクトリ名を取得したいのです。
992986:05/02/14 15:43:16
>>989
>使用しているのはMSのOutlookなので、〜.pabと言うファイルを解析すれば上手く取得できそうです。
そうそう、そこからがんばれ。

>お忙しいところ答えていただき、
誰が忙しいといった!皮肉か?それは。
993デフォルトの名無しさん:05/02/14 15:49:38
>>991
classファイルはファイルとしておいてあるとは限らないので(JARとかネットワーク経由とか)、だめじゃない?
システムプロパティjava.class.pathを見るとか。
なんのために、classファイルがおいてあるディレクトリ名を知りたいの?
本当はカレントディレクトリが分かれば良いとか、リソースとして取得することで十分とか
他の手段で十分な可能性もある。
994デフォルトの名無しさん:05/02/14 16:02:13
gpg を Runtime.getRuntime().exec() で実行するのですが、
gpg の設定ファイルを class と同じディレクトリに置いておいて、
gpg の引数で指定しようと思っています。なので、ディレクトリ名が欲しいのです。
995デフォルトの名無しさん:05/02/14 16:07:52
>>994
new File(".").getAbsolutePath();
996デフォルトの名無しさん:05/02/14 16:14:10
>>995
それでは無理でしょ。
997デフォルトの名無しさん:05/02/14 16:20:26
次スレは立てない方針みたいだなw
やはり、JAVA言語はすでに廃れてる事が証明されたようだなw
JAVA厨たちよ。君らの時代は終わったw プゲラ
998デフォルトの名無しさん:05/02/14 16:32:38
>>994
gpgとはなにか知らんが、
File f = new File(new URI(ClassLoader.getSystemResource("hoge.conf").toExternalForm()));
System.out.println(f.getAbsolutePath());
でどうかな?
クラスと同じフォルダとは限らず、カレントディレクトリにおいてあるという前提であれば、
>>995でもよいと思うが、違うディレクトリからクラスパス指定して動かした場合は、>>995ではだめ。
999デフォルトの名無しさん:05/02/14 17:05:37
1000デフォルトの名無しさん:05/02/14 17:19:30
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。