【Java初心者】今から始めるJava Part01

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
初心者同士馴れ合いながら、一つのアプリを作成していく目標を持ったスレです。
もちろん、質問もOKです。

質問はage
回答はsage


第一回 画像表示ソフトを作ろう


【初心者】 Java質問・相談スレ31 【大歓迎】
http://pc2.2ch.net/test/read.cgi/tech/1062421340/l50
2デフォルトの名無しさん:03/09/01 22:15
http://www.webspeed.ne.jp

この鯖は軽くていいよー。
お勧めです。
3デフォルトの名無しさん:03/09/01 22:26
Javaは1.5になってどのように変化しましたか?

Java1.5は機能変更ですか、機能拡張ですか?
どのような機能が拡張されていますか?

JBuilderではJava1.5を使用できないのでしょうか?
>>1
          ☆ チン       
                       
  ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ヽ ___\(\・∀・)< 削除以来まだ〜?
        \_/⊂ ⊂_)_\____________
      / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
    |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
    | 全日本クソスレ同盟|
5デフォルトの名無しさん:03/09/01 22:31
>>4
その必要はないだろ
6デフォルトの名無しさん:03/09/01 22:32
>>5
禿げ同
7デフォルトの名無しさん:03/09/01 22:34
>>1
画像表示ソフトを作るとして
GUIには何を使う?
AWT、Swing、SWT、他?
>>7
.NET Framework
9デフォルトの名無しさん:03/09/01 22:35
Java厨としてはSwingだが重いもんなぁ。
AWTは問題外でしょ。
まぁ削除しないでもいいと思うが、どれかJava,C#,C,Delphiのどれか
一つにすればよかろうに・・・
SWT バグバグ
12デフォルトの名無しさん:03/09/01 22:38
>>10
つまりこのスレを残せと
Javaだと遅すぎてかわいそうなお題。
1410:03/09/01 22:41
>>12
いや、別にどれでも構わないのだが・・・
>>7
class A {
private native void programMain();

public static void main(String args[]){
new A().programMain()
}
}
>>15
nativeメソッドのソースコードは何だ?
なんで「今から始まる」シリーズが乱立しているんだよ。
いったいだれが何のために?
スレの伸びで将来を決めたいVB厨だろ
19デフォルトの名無しさん:03/09/02 07:22
>>18
C#の圧勝でした
画像表示とかよー、初心者に媚びてどうするよ
最初はコンソール表示をベースにしろよ
>>18
まるでオカルトみたいだな
22デフォルトの名無しさん:03/09/03 14:28
で、第1回の答えは?
質問なのでage
JAVAの入門書を、やり終えたのですが、次に読む本は、
コアの基本編と、コアの応用編と、JAVA言語仕様の内、どれがお勧めですか?
24デフォルトの名無しさん:03/09/20 13:51
 
25デフォルトの名無しさん:03/09/20 14:08
内部クラスになっているプログラムのクラス図を書かなくてはいけないんですが、各クラスの関係は一番外側のクラスに対して集約とかコンポジションにしとけば、とりあえず間違いないですよね?
誰か教えて下さい。お願いします。
>>25
タダシイ方法なんてきまってないと思うなあ。

クラス図なんか、使う人間にとって理解できればいいんでないの?
納品物なら話は別だけど。
> 25

マルチはやめなさい
28デフォルトの名無しさん:03/09/20 19:17
Java初心者です。
どうしてJavaコーディング基準のインデントは、こんなに汚いのですか?
どうして、こんなに読みにくく書かなくちゃならないのですか?

http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html
どう考えても、読みにくくないですか?
Javaやってる人はみんなこの基準に従ってインデントするものなのですか?

29デフォルトの名無しさん:03/09/20 19:27
どの点についてさ?
30デフォルトの名無しさん:03/09/20 19:33
すべて
>>29
たとえばこれ、

private static synchronized horkingLongMethodName(int anArg,
    Object anotherArg, String yetAnotherArg,
    Object andStillAnother) {
  ...
}

こんな感じですっきり書きたいのですYO。

private static synchronized horkingLongMethodName(
    int anArg,
    Object anotherArg,String yetAnotherArg,
    Object andStillAnother
  ) {
  ...
}

すでにこうやって書いるものの、一般的に問題ありなのでしょうか?
わざわざずらして書くと読みにくくて読みににくくて。
>>31
おいおい…。
喪前はK&R時代のC言語使いか?
33デフォルトの名無しさん:03/09/23 19:28
ヤッターマンコーヒーライター
34デフォルトの名無しさん:03/09/26 18:35
プログラムは始めての超ド初心者です。

インストールは終わったんですが、それからどうすればいいのか分かりません。
このヴァカにでも解るように教えてください。
お願いします。
35デフォルトの名無しさん:03/09/26 20:15
>>34
がんばれば何でも出来る
36デフォルトの名無しさん:03/09/26 21:32
今、がんばってHelloWorldのコンパイルがうまくいったんですが、
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld

と、出てうまく実行できません。
どうすればよいのでしょうか?
>>1
          ☆ チン       
                       
  ☆ チン  〃  ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    ヽ ___\(\・∀・)< 削除以来まだ〜?
        \_/⊂ ⊂_)_\____________
      / ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
    |  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| :|
    | 全日本クソスレ同盟|


38デフォルトの名無しさん:03/09/26 21:47
>>36
もうこの質問うんざりするほど見飽きた。
と、思わず書いてしまうぐらい過去に出尽くしているから
2chのJava関連スレッドあさるとか、
"Exception in thread "main" java.lang.NoClassDefFoundError"
でGoogle検索してみるとかしてみれ。
誰もがぶち当たり、誰もが解決している問題。
掲示板でわざわざ聞かなくとも調べればすぐにわかる。
がんがれ。
よくある質問はテンプレ化しちゃう方がいいのかな?


>>36
で、そのソースが書いてあるファイルの名前は?
>>34
とりあえず
「java helloworld」で検索汁。
41デフォルトの名無しさん:03/09/26 22:14
>>38
ご親切にありがとうございます。
コノ問題をさっさと解決して早くプログラムして見たいのでがんばります。

>>39
意味がよく分かりません・・・・・・。
>>41

プログラムが書いてあるファイルのファイル名は?ってこと。
クラス名が HelloWorld ならば、ファイル名は HelloWorld.java でないといけない。
43デフォルトの名無しさん:03/09/27 00:09
>>42
そうですか。

たしかにHelloWorld.javaになってました。
44デフォルトの名無しさん:03/09/27 00:19
お前等そんなの覚えて何したいの?
>>42
> プログラムが書いてあるファイルのファイル名は?ってこと。
> クラス名が HelloWorld ならば、ファイル名は HelloWorld.java でないといけない。
package privateだったらファイル名と同じにする必要はないん
46デフォルトの名無しさん:03/09/27 02:15
いやいや、だからPATHが通ってない訳で
47デフォルトの名無しさん:03/09/27 13:53
set classpath と打ち込むとどうなる。
set classpath=.;%classpath% と打ち込んでもう一度
java HelloWorld とやるとどうなる?

ウィソの場合""で囲んだほうが安全だと思われる。
中には、ディレクトリ名スペースを入れるお馬鹿もいるので。
set CLASSPATH=".;%classpath%"


普通はantをつかうもんだが。
49デフォルトの名無しさん:03/09/27 14:32
HelloWorld.class というファイルは存在しているのか。
ウィソ厨よ
コマンドラインで
echo %PATH%
echo %CLASSPATH%
とやってみろ。
できた、とりあえず。

import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.WindowConstants;

public class ImageViewer {

public static void main(String[] args) {
try {
JFrame jFrame = new JFrame("Image Viewer");
jFrame.getContentPane().add(new JLabel(new ImageIcon(new URL(args[0]))));
jFrame.pack();
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jFrame.setVisible(true);
} catch (Exception exception) {
exception.printStackTrace();
System.out.println();
System.out.println("Usage: java ImageViewer [image url]");
}
}

}
52デフォルトの名無しさん:03/09/27 15:00
ココの住人さんはやさしい人たちばかりですね・・・。

ありがとうございます。
なんとか自己解決できました。

ご迷惑をおかけしました。
本当に感謝してます。
ありがとうございました。
あと、Java製のプログラムは多くのユーザーにとっては迷惑品だからネット上で無闇に垂れ流さないように気をつけてね。
54デフォルトの名無しさん:03/09/27 16:23
初心者ですが疑問があります
コンストラクタの意味がわかりません
特殊なメソッドというのはわかるのですが
どういうメソッドでどういった場面で使う物なのでしょうか?

参考書は書き方しかのってません
>>53
拡張子がJSPになっているのが迷惑だと?
馬鹿を言え
>>54
自動で実行される初期化関数だよ。

初期化処理を作らないとか、違う名前の関数にしてもいいんだけど、
結局そのオブジェクトを作るたびに使う側が初期化したり、その関数を呼び出す
はめになるから、その手間が省くための機能。
小さな親切。
VS .NET 2003 の J# ではブラウザなどで実行が出来るものは作れないのでしょうか?
どうもコンパイルすると .exe が出来てしまうので・・・。
JDKインスコしてコマンドラインからコンパイルしなきゃならんのですか?
へたれですまんが誰か教えてくれ!
J#はJavaではありません。
59名無し:03/09/28 00:42
とりあえず左側に表示予定のツリーはできた
ぬるぽ
61デフォルトの名無しさん:03/09/29 18:42
Date型について教えてください。

Date date = new Date();
とするとdateに現在の値が入っていますが
これを上書きして変更したいのですがどのようにすればいいでしょう?
参照先を変えるのだはなくdateの中身を変えたいです。
6261:03/09/29 18:45
わかりにくいですね。実際にはDBから取ってきた値で上書きしたいです。
Date date = new Date();
date = rs.getDate(1);

よろしくお願いします。
63デフォルトの名無しさん:03/09/29 18:46
http://jbbs.shitaraba.com/travel/2226/
伊勢原ちゃんねる
>>61
>>62

その書き方だと、思いっきり参照先を変えてますが、
そのことは理解されていらっしゃいますか?

「上書き」と言う言葉の意味が、曖昧でわかりません。

「Date型」とおっしゃられていますが、java.util.Date のことでしょうか。
それとも、あなたが作った、あなたしか仕様をしらないDate型のことでしょうか。
6561:03/09/29 19:30
>>64
上記のコードでは参照先が変わってしまうので困っています。
Date型はjava.util.Dateです。
よろしくお願いします。
66U ◆CZtFsGiu0c :03/09/29 20:01
>>65
date.setTime(rs.getDate(1).getTime());
6761:03/09/29 20:16
>>66
マジですか?
やってみまつ。
>>62
java.utii.Date()は推奨されていないコンストラクタじゃなかった?
JavaDoc見たほうがいいと思う。
staticメソッドでDateオブジェクトを生成するのがあったと思う。

Calendarクラスや、System.currentTimeMills()もいいのでは?

DBやってるならjava.sql.Dateのほうがいいのでは?
6961:03/09/29 23:58
>>68
仕様書がDateってなってるのでDate使ってますが古い仕様なんですか。
うーむ。java.sql.Dateとjava.util.Dateって何が違うんだろ
70U ◆CZtFsGiu0c :03/09/30 01:13
>>68
>java.utii.Date()は推奨されていないコンストラクタじゃなかった?

いいえ。

>JavaDoc見たほうがいいと思う。

自分は見ないのですか?

>staticメソッドでDateオブジェクトを生成するのがあったと思う。

Calendarクラスと混同していませんか?

>DBやってるならjava.sql.Dateのほうがいいのでは?

まあ何をするかにもよりますが、一般的にはそうでしょうね。ResultSet#getDateの
戻り値の型もjava.sql.Dateだから。

>>69
>仕様書がDateってなってるのでDate使ってますが古い仕様なんですか。

別に古くはないです。ただしjava.util.Dateのメソッドのうち、かなりの数が非推奨と
されてCalendarクラスに機能が移っているので、注意が必要です。

>うーむ。java.sql.Dateとjava.util.Dateって何が違うんだろ

java.sql.Dateはjava.util.Dateのサブクラスです。細かい事はリファレンス見た方が
いいでしょう。

71Homa:03/09/30 23:17
自分はこのjavaのスレッド等にとても助けられているので、ホームページを作りました〜。
このスレッドを形として残すために作りました。
まだ、作成途中ですが、もっとこうしたらいい!という感想などを聞かせてくれれば光栄です。
↓URL
ttp://kutipatti.fc2web.com/index.html
です。どうかよろしく〜
>71
がんがれ
73デフォルトの名無しさん:03/10/04 21:24
プログラムというものを勉強しはじめて間もありません。
初歩的な質問で申し訳ありませんが、以下についてどうかご教授ください。

「オーバーロード」とは
「スーパークラス内のメソッドを、サブクラスで再定義する」ことをいう。
との認識ですが、ここまでは正しいでしょうか?

これが正しい時、上記の利点って何なんでしょうか?
サブクラス内で再定義してしまうと、スーパークラス内で定義したメソッドは、無意味ではないのですか?
(例えば、パッケージクラスを継承したが、スーパークラス内の当該メソッドを使用しない場合。など)

再定義などしないで、自分が自由に命名した新規メソッドを作成すればよいように思えて仕方ないのですが。。。

うまく文章にできているか ものすごく不安ですが。。。
74デフォルトの名無しさん:03/10/04 21:36
>>73
そりゃオーバーライドだろ
>>74
なぜあなたはそんなどうでも良いところだけ指摘するんですか?
偉そうにするなら質問に答えて欲しいものですね。
>>73
スーパークラスがあるのにサブクラスを作るのは、スーパークラスに
何か追加したいとか、ちょっと変えたいとか、そういう目的のはず。

追加したい場合は新しくメソッドを作ればいいし、ちょっと変えたい場合は
オーバーロードして違う動きをさせればいい。
77デフォルトの名無しさん:03/10/04 21:50
>>75
どうでもいいことだと?
オーバーライドとオーバーロードは全く違うのだが何か?
で、おまいはオーバーロードについて聞きたいのか?
オーバーライドについて聞きたいのか?
どっちだ?
78デフォルトの名無しさん:03/10/04 21:51
>>76
> オーバーロードして違う動きをさせればいい。
が意味不明。Javaのオーバーロードで違う動きなど不可能。
79デフォルトの名無しさん:03/10/04 21:51
オーバーロードはするものじゃなくてされるもの。
80デフォルトの名無しさん:03/10/04 21:52
オーバーライドはするもの
オーバーライドはメソッドの上書きで
オーバーロードは引数の型や数の違いで
同じ名前のメソッドを複数作るってことではないの?
>>75
に同感(笑)

そりゃ オーバーライド
ポリモーフィズムが効くもの!

オーバーロードはメソッド名が同じで引数の個数、型がちがうものを実装すること!
8373:03/10/04 21:55
オーバーライドですね。。。
すみません。
8473:03/10/04 21:56
みなさん、オーバーライドに読み替えてご回答いただけますか?
8573:03/10/04 22:01
「オーバーライド」とは
「スーパークラス内のメソッドを、サブクラスで再定義する」ことをいう。
との認識ですが、ここまでは正しいでしょうか?

これが正しい時、上記の利点って何なんでしょうか?
サブクラス内で再定義してしまうと、スーパークラス内で定義したメソッドは、無意味ではないのですか?
(例えば、パッケージクラスを継承したが、スーパークラス内の当該メソッドを使用しない場合。など)

再定義などしないで、自分が自由に命名した新規メソッドを作成すればよいように思えて仕方ないのですが。。。
8674:03/10/04 22:13
>>73
オーバーライドはポリモーフィズムのためにある。
あるクラスAがあると仮定する。クラスAにはメソッドdoTest()が存在するとする。

public class A {
 public String doTest() {
  return "Hello!";
 }
}

クラスAを継承してクラスAAを作成したとするクラスAAはメソッドdoTest()をオーバーライドして実装。

public class AA extends A {
 public String doTest() {
  return "こんにちは!";
 }
}

★あるクラスを継承したクラスはスーパークラスとして振る舞うことができる。これをis-aの関係という。
つまり、クラスAAはクラスAとして振る舞うことができる。コードではこんな記述が可能。

A a = new AA();

aはA型の変数として宣言しているが、実体はAA型。
上記のA型の変数aのメソッドdoTest()を呼ぶとどうなるか?

a.doTest();

"こんにちは!"

が返ってくる。
Java言語規定 第2版
8.4.8.1 例: 上書き
http://www.y-adagio.com/public/standards/tr_javalang2/classes.doc.html#39600

ここに、オーバーライド(上書き)を説明するためのソースコードがあります。
このソースを解説してあげたらどうでしょうか。

"Hello!" や "こんにちは" を返すメソッドで説明するよりも、
なぜそれが必要なのか、がわかりやすいと思う。

あと、質問するのなら、いろいろなスレに同じ質問を投げるのはやめれ。
それから、Javaを勉強したいなら、言語規定を読め。

Java言語規定 第2版
目次
http://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html

Java Language Specification Second Edition
Table of Contents
http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html
8873:03/10/04 22:33
ありがとうございます。

> あと、質問するのなら、いろいろなスレに同じ質問を投げるのはやめれ。
すみません。これがマナーなんですね。(2ch初見なもので。)

ロジックの解釈は可能なのですが、ズバリなぜ必要なのかがわかりません。
言語規定は参照します。
いろいろありがとうございます。
8974:03/10/04 22:36
>>73
> あと、質問するのなら、いろいろなスレに同じ質問を投げるのはやめれ。
すみません。これがマナーなんですね。(2ch初見なもので。)

2chというより、インターネット上の掲示板のマナー。
2chじゃなくても嫌がられるから気を付けて。
9073:03/10/04 22:42
はい!
ありがとうございます。
ぜんぜん気にしてませんでした。。。
ライバル社に対して、自社製品を抱き合わせ販売することを法律で
義務付けるという、画期的な営業手法を編み出したSunまんせー。
こりゃビジネス特許モノ!
92デフォルトの名無しさん:03/10/05 00:10
ウィンドウへドロップされたファイルを開く処理をしたいのですが、
どうしたらいいのでしょうか?
Win32APIなら、DragAcceptFiles()して、WM_DROPFILESを処理
するのですが、これに相当する処理をjavaでしたいのです…
93デフォルトの名無しさん:03/10/05 00:13
>>92
java.awt.dndパッケージを使いましょう。
9492:03/10/05 00:26
>>93
どうもありがとうございます。
とても簡単にできそうです。
オーバーライドを使いこなしたかったら
結城浩の「Javaで学ぶデザインパターン入門」を読むことをお勧めする。
初心者には超お勧め。

あれくらいしっていれば使えるプログラマとして認めてもらえるための
第一歩くらいは踏める。
96デフォルトの名無しさん:03/10/05 01:34
突然ですまないがEclipseでエディタのカーソル色を変えるにはどうしたらよいですか?
9796:03/10/05 01:40
ごめんなんでもないから無視して
デザパタなんて意味あるのか?
他人にプログラムの組み方を教えるのが楽になる。
例:○○するプログラムを××パターンで実装しておいて
  そこは△△パターンで実装するほうが楽だよ
サーバに接続して
送信はjava.net.Socketで送って
受信はjava.net.ServerSocket受信してから送る
っていうふうにしたいのですがどうすればいいですか?
101デフォルトの名無しさん:03/10/05 14:50
javaで書いたアプリケーションを、
Windowsアプリケーション(.exe)にコンバート
することってできるんでしょうか?
>>98
そういう発言をするお前が業界で
使えない存在になってしまうこととしては意味がある。
>>101
JETコンパイラに大枚をはたく
>>100

普通は、サーバに接続するってことは、あなた(のプログラム)はクライアント
ってことになります。ってことは、ServerSocket は使う必要がなくて、単に
Socket オブジェクトのインスタンスを作ればいいです。

んで、そのインスタンスに、次の2つのメソッド
  getInputStream()
  getOutputStream()
を使って、サーバに情報を送信するための InputStream と、
サーバから情報を受け取るための OutputStream を取り出します。

Socket について一からお勉強するには、ここなんかどうでしょう。
http://java.sun.com/docs/books/tutorial/networking/TOC.html
(日本語訳があったら、誰か教えてください。)

100 Get オメデト。
105101:03/10/05 15:30
>>103
…つまり、現状ではできない、ということですね?
javaで書いた、ちょっとしたツールなんかを、
Windowsを使用していて、JREが入ってない人に渡すときに、
exeにコンバートして渡せたら楽だなぁと思ったのですが。
>>105
> javaで書いた、ちょっとしたツールなんかを、
> Windowsを使用していて、JREが入ってない人に渡すときに、
> exeにコンバートして渡せたら楽だなぁと思ったのですが。
exe が JRE と同等のサイズになるか、
exe は小さくできても JRE と同等のサイズの DLL が必要になる罠。
Javaで書いたちょっとしたツールなら
Cとかでもかけるんじゃないか?
108101:03/10/05 19:50
>>106
確かにそうなりそうですね。
でも、dllで済むのなら、exeファイルとdllをいっしょに渡して、
同じフォルダにおいてもらうだけでいいので説明は楽なんですよね。

>>107
ごもっともで。
ただ、Javaの勉強中というのもあって、意味も無くJavaを使って
書きたいという気持ちがありまして。
あ、Javaで既に作ったものをCでもう一回作れ!てことですか?
よっぽどちょっとしたものでなければ、それだったらJRE入れてもらいます…

で、結局、そういったツールはC++で作ろうかと思いました…
c:\myjava>javac myjava.java
エラー: myjava.javaを読み込めません。
エラー1個

となるのですがどうしたらいいですか?
>>109
myjava.javaというソースはちゃんとmyjavaディレクトリに保存してある?
ディレクトリ名とファイル名が一緒になって混乱しているんじゃ?
>>110
ren myjava.java.txt myjava.java
しろって他のスレで言われたんですけどどういう意味なんですか?
>>111
だったら、そっちで聞けよ
>>107
そのちょっとしたツールが、
信頼性を持ちつつネットで手軽に
配布できるものならJavaのほうが良い。
それから、そのちょっとしたツールの拡張性を
容易にしたいならCはやめたほうがいい。
せめてC++くらいでないと。

>>108
JavaになれてくるとCでかくのが面倒くさくなってくる。
Cは配列の扱いが曲者でね。
値型と参照型の区別も大変でね。
Javaやっているときなら創作的なことに時間を
費やすことができるけれどもCだとメモリ管理だのに
神経をすり減らすことにより多くの時間を費やしてしまう。
Integerオブジェクト同士の足し算って一回intに変換して行わないとだめでしょうか?
>>114

多分そうだと思う。

ラッパーオブジェクト同士をそのまま足し算できない。(言語仕様的に)

ラッパーオブジェクトを受け取って足し算や引き算してくれるメソッドを
持つクラスを見たことが無い。
(これが「多分」 の意味。どっかにあるかも。)
>>115
ありがとです。
117デフォルトの名無しさん:03/10/06 16:31
Cで書かれたコードをJAVAに移植したいと考えています。
ところが、Cのソースにポインタが多用されており、途方に暮れています。
JAVAにおいて、Cのポインタに該当するような機能はあるのでしょうか?
118デフォルトの名無しさん:03/10/06 16:49
ポインタはないけど
移植は可能だよ
Java流に組むしかない、Java勉強すればわかる
短いコードならすぐに回答出来るが、うPしてくれれば
119デフォルトの名無しさん:03/10/06 19:08
>>117
Java では、プリミティブ型 (int, char, double, etc) 以外は必ずポインタで参照される。
つまり、クラスを型にするような変数は全部ポインタ。

"ポインタ型" そのものは無いので、ポインタのポインタなんつー吐きたくなるような書き方はできない。
配列への参照にするか、参照を擁したクラスのインスタンスに対する参照にするしかない。

C のソースが
・ポインタをほとんど使っていない
・とてもきれいな設計になっている(C++ でないのにオブジェクト指向的である)
・Java API を意識した C++ ソース
なら、移植しやすいだろう。
>>119
そんなソースありえません…
121100:03/10/07 21:10
>>105
非営利利用ならエクセルソフトのJETコンパイラがただで使えるぞ

>>104
あり、いってきます
122100:03/10/07 21:12
>>119
unsigned型使われたらさらにややこしくなります
123デフォルトの名無しさん:03/10/12 01:57
JavaとJava2後が言ってなんですか?
参考書などを見てもほとんど同じように見えるのですが・・・
>JavaとJava2後が言ってなんですか?


バージョン 1.2 までが Java で、バージョン 1.3 以降が Java2。
マーケティング戦略だったのかなんだか知らないけど、
バージョン1.3 は名前が Java2 になるくらいグレードアップしたとアピールしてたわけ。
12574:03/10/12 02:29
>>124
バージョン1.2からがJava2でつよ
あ、そだっけ。ごめん。
いつになったらJava2.0が出るのYO!?
128デフォルトの名無しさん:03/10/12 15:45
細かなところは違いはあるが
Java1を勉強しても、Java2とそんなにかわりませんか?
>>121
JET パーソナル版で作成した実行ファイルは JRE が必要ですよ。

バグが多いけど MinGW GCJ で exe が作れる。
>>128
細かくたくさんの個所が違っている。
Java1では普通に使うべきメソッドのいくつかが、
Java2ではdeprecatedになってる。
機能追加/バグ修正もいろいろ。
まぁいきなり Java2 のあの膨大なクラスを操れって言っても道に迷う
だけかも。とりあえず JDK 1.1 の範囲で Java を使いこなせるように
なってからでも良いような気がする。基本的なところはそんなに変わん
ないし。
132 :03/10/12 17:43
だれが、JDK1.1なんていまさらやるんだ?時間の無駄だろ。。。
>>132
プログラマから見た JDK 1.1 と 1.2 以上の違いはクラスライブラリの
豊富さだけ。初心者が言語機能を習得するのに Java2 を使う必要性は
無い。

最初から Swing とか Servlet とか使いたければ別だが。
134デフォルトの名無しさん:03/10/12 19:23
>>133
同様にいまさら1.1を使う意味もまったくない。単なる自殺行為。
135名無し:03/10/12 20:31
1.5でgenericsとかいろいろ加わるから
Java3になる?
>>135
1.5はGUIに期待age
別にクラスがいっぱいあっても使わなきゃいいだけだろ。
元スレ(>>1)は基地害です。無視進行でお願いします。
>>127
ラベル番号が変わっただけで中身が何も変わっていないのは某M$社の製品のようで
アホらしくないか?
>>130-131
バグ問題、Hotspotの有無による処理速度の改善などを考慮すると
最新版にほうが良いと思われ。
JDK1.1なんぞ言い出したらM$のVisualJ++を使い出すアフォがでるやもしれん。

JDK1.4ではassertという使い物にならない
余計なキーワードが気になるが初心者も気にかけないと思われ。
継承したクラスのメソッドを呼び出すと親クラスのメソッドが呼び出されてしまいます。

class A {
hoge(){
 print "A";
}
}

class B extends A{
hoge(){
 print "B";
}
}

B b = new B();
b.hoge();

とやるとクラスAのhoge()メソッドが呼ばれてしまいます。
どういった原因があるでしょうか?
142141:03/10/15 10:20
class Aはabstractでした。
>>141
Javaにはそんな記法は無い。
他言語の質問をしたければ他スレへ逝け。
すいません、一つ質問したいのですが
今現在Java+Tomcat(3.2.3)を使ったServletのアプリ
を作っているのですが
コンパイルするたびにTomcatを再起動させないとClassファイル認識
しないのですが、再起動をさせなくて済むようにはできないのでしょうか?

またTomcat以外ならできるということでしたら
なにがお勧めでしょうか
>>145
レスありがとうございます。
今現在reloadableはTrueにはなっているのですが
それでも再読み込みしてくれない現状なんですが
書き方がまずいのでしょうか?
下記が今動作させているSever.xmlの一部なのですが

<Context path="/"
docBase="webapps/admin"
crossContext="true"
debug="0"
reloadable="true" >
</Context>
<Context path="/html"
docBase="webapps/admin/html"
crossContext="true"
debug="0"
reloadable="true" >
</Context>
147デフォルトの名無しさん:03/10/15 18:07
CDプレーヤーを作るのに参考となる本は売っているでしょうか?
148デフォルトの名無しさん:03/10/15 20:24
JSPで正規表現検索をやっているんですが

Pattern ptn=Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);
Matcher mtch=ptn.matcher(strMsg);
while(mtch.find()){out.println(mtch.group() + "<br />");

の部分がまったく理解できません。出来るだけくわしいかいせつをおねがいします。

以下コード

<%@ page contentType="text/html;charset=Shift_JIS" import="java.util.regex.*" %>
<html>
<head>
<title>正規表現で文字列を検索する</title>
</head>
<%
String strMsg="メールアドレスは、[email protected]です。";
strMsg+="[email protected]もあります。";
Pattern ptn=Pattern.compile("[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+",Pattern.CASE_INSENSITIVE);
Matcher mtch=ptn.matcher(strMsg);
while(mtch.find()){out.println(mtch.group() + "<br />");
}
%>
</body>
</html>

149デフォルトの名無しさん:03/10/15 20:25
>>144
バッチが出てるんじゃなかったけ?
150デフォルトの名無しさん:03/10/15 20:29
>>149-150
のお二人ありがとうございます
どうやら調べましたがver3.2.3のはもうないようですね・・・
3.3だと既存のプログラムを改善しなければならないので
古いVerを探していましたがなさそうですね・・・

パッチ自体どこかでもう少し探してみます
ありがとうございます
>>147
Java でそれやろうってのが無茶なように思う。
JMF に使える API あるかも知らんが、人にインストールさせて使うには向かない
JSP&Servletについてですが
servletがOracleから取ってきたデータの文字列に入っている
全角ハイフン「−」が?で表示されてしまいます。
JSPファイルに「−」を直書きしても化けません。
どこで化けてしまうのでしょうか?
154デフォルトの名無しさん:03/10/16 16:44
>>153
OracleのJDBCドライバが変換するときに化けている。
JVMは1.4.1以降でしょ?たぶん。
>>154
なるほどー
java -versionによると1.4.2ですが
何か回避策はありますでしょうか?
>>155
SunのJVM1.4までと1.4.1以降ではShift_JIS←→Unicode変換時の
「−」や「〜」等のマッピングが変更になった。
OracleのJDBCドライバが古い方式で変換している可能性がある。
具体的にどこをどうするという回避策は知らんが、
そのへんを念頭に置いて調べてみたら?
>>156
はーい。ありがとでした。調べてみまーす。
>>156
Shift_JIS が MS932 の別名から SJIS の別名に変更になったってやつね。
Windows-31J を使うのが推奨されてなかったっけか?
>>153
Shift_JISなんぞ使うのやめちまえ。
全部UTF-8で統一しろ。
>>152
> >>147
> Java でそれやろうってのが無茶なように思う。
> JMF に使える API あるかも知らんが、人にインストールさせて使うには向かない
関係ないかもしれないが
JavaWebStartがあればインストールも苦労しないと思う。
>>160
っつか、CDプレーヤーだったら javax.sound.sampled パッケージ使えば出来ないか?
162デフォルトの名無しさん:03/10/17 23:50
インターフェイスってどういうときに使うのでしょうか?
参考書などは書き方は載ってるのですが、使用例があまり載ってないのですが・・・
DQNな俺は、多態を使いたくなったときに使っている。
あとはオブジェクト参照を渡すときに渡し先で呼び出すメソッドを制限したいときとか、
メソッドは同じで実装をたくさん作るときとか。
164宮本:03/10/18 00:07
>>162
Java言語で学ぶデザインパターン入門を嫁。

interfaceの使い方を初心者にわかりやすく説明している。
>>162
APIドキュメントで、swing の ListCellRenderer あたりの解説を読んでごらん。
わらわらとクラスを作りたくない (作らなくても済む) ときに使える。
誰か>>1に書いてある画像表示ソフト作ってないの?
import java.awt.*;

public class Test {
 public static void main(String[] args) {
  new Frame() {
   private Image img = Toolkit.getDefaultToolkit().getImage("test.jpg");
   public void paint(Graphics g) {
    g.drawImage(img, 0, 0, this);
   }
  }.setVisible(true);
 }
}

ほれ
完成してるじゃんw
そういうのじゃなくてもっとちゃんとしたの・・・





     Java関連の本スレはこちらです。類似スレに注意。








172デフォルトの名無しさん:03/10/24 22:08
[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+
\\wはa-z,A-Z,0-9のどれか、\\.は、.\\-は-
[]は、[]の中のどれかにマッチ
@、[\\w\\.\\-],,,,\\w(a-z,A-z,0-9),\\.(.),\\-(-)のうちどれか一文字
[\\w\\.\\-]+,,,,上の文字を、一文字以上(+は一文字以上にマッチ)含む。
@は固定の文字(@にマッチ)
([\\w\\-]+\\.)+、、、@同様に内側の[]から考える
後は動揺に考える
すんません
私も勉強したてで、間違ってるかもしれません
わかりづらい説明でした


>>172
ああ、>>148さんへ
>>171
それじゃ初心者質問者を騙すことできないって
175デフォルトの名無しさん:03/10/26 13:32
初心者なので是非教えてください。
Stringの中からある特定の文字がいくつあるか数えるメソッドって
ありますか?

例えば「"hello,world"ではoが2つ」とわかるようなやつです。
ないので、
int count = 0;
int len = str.length();
for (int i = 0; i < len; i++) {
 if (str.charAt(i) == 'o') {
  count++;
 }
}
とかで数えれ。
遅すぎて使い物になりません…
>>177
何を持って遅いというのか。
古いCPU?PocketPC用の非力なVM?長ったらしい String ?
そういう処理を行わなければならくなった君の設計が悪いのでは?
>>175
昔は >>176
今は str.split("o").length - 1
180179:03/10/26 21:26
>>178
たぶん >>177 は試しもせずに遅いとか言ってるに 100 ジャバ。
181179:03/10/26 21:55
気になったので計測(漏れ環境)した。

・対象となる String の長さ: 100 万文字
・数える対象となる文字の数: 20 万個

>>176 方式: 0.015 秒
>>179 方式: 0.344 秒

漏れのやり方は圧倒的に遅かった。。。
数千文字程度までなら差は気にならないかもね。
182176:03/10/26 22:05
>>177
charAt()を激しく呼んで遅い場合にはchar配列をコピーするしかないかな。

>>179
おお、賢いな。
183176:03/10/26 22:13
>>181
split()はStringの長さより、初期化コストの方が問題になりそうなので、
・対象となる String の長さ: 1 万文字
・数える対象となる文字の数: 2 千個
を100回とかで試すともっと差が出そうだ。
>>183
差は縮まった。。。

>>176 方式: 0.015 秒
>>179 方式: 0.188 秒

ところで
> charAt()を激しく呼んで遅い場合にはchar配列をコピーするしかないかな。

String の中身は char 配列だから charAt() は遅くないと思うけど
そういう意味ではない?
( ・∀・)つ〃∩ ヘェーヘェーヘェー
ついでに
org.apache.commons.lang.StringUtils#countMatches(String str, String sub)
の速度もその漏れ環境とやらで計ってくれ。
>>184
いちいち呼び出すより直接配列にアクセスした方が早いでしょう。
単純にメモリは倍喰うけど。
1.4.0のAPIの日本語版HTMLドキュメントをダウンロードしたいのですが
http://java.sun.com/j2se/1.4.2/ja/download.html
ここの日本語版とかかれたものをダウンロードすると英語版が落ちてきます。

日本語版HTMLは一体何処?
188179:03/10/27 12:05
気づいたらサソにメールしれ。一応こっちに同じ日本語版があるが。
ttp://java.sun.com/j2se/1.4.1/ja/download.html

ダウンロードした後、MergeDoc で JDK ソースコメント日本語化しる。
ttp://sourceforge.jp/projects/mergedoc/
宣伝スマソ
189179:03/10/27 12:08
>>186
配列にコピーするのはこんな感じ?

int count = 0;
char[] chars = str.toCharArray();
int len = chars.length;
for (int i = 0; i < len; i++) {
if (chars[i] == 'o') {
count++;
}
}
190179:03/10/27 12:11
ついでに世間では遅いといわれる方式
毎回サイズを取得する。

int count = 0;
for (int i = 0; i < str.length(); i++) {
  if (str.charAt(i) == 'o') {
  count++;
  }
}
191179:03/10/27 12:16
>>185 >>186

>>185 方式: 0.047 秒
>>189 方式: 0.015 秒
>>190 方式: 0.015 秒

StringUtils はソースを見たところ数える文字列が 1 文字でなくても
良いように汎用的に作られているから遅いみたい。
176、189、190 が同じなのは興味深い。
192デフォルトの名無しさん:03/10/27 18:25
すいません、今Tomcat4.1.27を使って
いるのですが、あれってクラスファイルをJDK1.4以降で作成しないと
動作しないのでしょうか?
1.3で作った奴だとうまく動かない気がするのですが・・・
>>191

>176、189、190 が同じなのは興味深い。
ひょっとしたら最適化されているのかも
194デフォルトの名無しさん:03/10/27 18:53
java sound api を使用して音を鳴らすことができたのですが、
停止ボタンを押したときに音を止める処理がわかりません。
画面はswingを使用してmainメソッドに停止ボタンの記述があります。
再生の処理は別のメソッドに記述してあります。
再生の処理で曲が終わったときline.stop();により曲が停止するのですが、
停止ボタンを押したときに曲が停止というのはどこに記述すればよろしいですか?
mainメソッドに(停止を押した時line.stop())と書くと
再生メソッドで処理中のline.stop()を認識しませんし、
再生メソッドに停止の処理を書くとmainメソッドでボタンをオブジェクト化して
いるので認識しません。
どなたか助けてください。
>>194
>再生の処理で曲が終わったときline.stop();により曲が停止するのですが
意味がわかりません。
>mainメソッドに(停止を押した時line.stop())と書くと
意味がわかりません。
>再生メソッドで処理中のline.stop()を認識しませんし、
意味がわかりません。
>再生メソッドに停止の処理を書くとmainメソッドでボタンをオブジェクト化して
意味がわかりません。

あなたは、ボタンを押したら「押されたよ!」と、自分の思い通りの場所に表示させることができますか?
それができないとすれば、あなたは、
今のあなたでは手に負えないほど難しいことに手を出しています。
多くの人が、あなたに、どうしたらいいかを一言で説明できますが、
その説明を、あなたはあなた流のプログラムのどこに適用したらいいか分からなくて途方に暮れるでしょう。
悪いことは言いませんから、簡単なことができるようになってから、難しいことに挑戦して下さい。
自分のしたいことを実現するために、何と何と何を分からなければいけないか分析できるようになってください。
初心者スレなんだから、もうちょい、丁寧に書け。ばか
>>196
じゃぁおまえがじょーずに教えてやれYO
ある文字を検索するならそれでいいかもしれないが
文字列だったらどうなんだろうね。
199カーセックス:03/10/27 19:53
public static int numberOf(String target, String src) {
 int count = 0;
 for(int i=0 ; i < src.length(); i++) {
  if(src.startsWith(target,i)) {
   count++;
  }
 }
 return count;
}

こんな感じでOK?
>>199
"ssssssssssssss" から "sss" をカウントするときのポリシーに依るね。
i += src.length() - 1; するべきかどうか。
201176:03/10/27 20:25
>>184
ぐ。そうか。

>>191
WindowsのSystem.currentMillis()は10msくらいの精度しかないので、
Windowsでやってるなら0.1秒くらいになるまでループ回数を増やしたほうがいい。

にしても、HotSpotかましてるせいか予測つかんなぁ。
やっぱり、マイクロベンチマークは意味ないかも。

>>192
LEのついていないTomcatを使うなら、JDK1.3でも動くよ。
>>201
> LEのついていないTomcatを使うなら、JDK1.3でも動くよ。
そういう話じゃないだろ。動作プラットフォームのJVMのバージョンの話はしてないだろ。
192が聞きたいのはバージョン1.3のコンパイラでコンパイルしたアプリが
Tomcat4.1.27で動かないってことだろ?
で、192の言う、「動かない」とは?
実行時に例外がでるのか?でるのならどのAPIからどの型の例外が出るのか?
それとも、例外は出ないが期待通りの動きをしないとか?
どちらにせよ、「動かない」だけでは情報不足。
>>201
推論ばかりでは説得力が無いですよ。
205鎌倉博美:03/10/27 22:17
馬鹿じゃないの?いまどき、MLでGifファイルくらい添付したって、
どうってことないよ。。。
頭、おかしいんじゃない?
>>188
微妙にスレ違いかも思った質問に
ピンポイント解答・熱烈多謝!!!
>>201-203
レスありがとうございます
たしかに動かないってのが説明不足でした、すいません
やっていたときは例外処理が飛んでいて動かないっていう状態
でInstanceAlreadyExistsExceptionこんなエラーがでていました
それで1.3のAPIみていたのですが1.4にしかなかったので
1.4に変えなければ動かないのかと思い質問させてもらった次第です。
>>207
「説明不足でした」と言いながら、その説明か。
自分の書いた内容で他人に伝わると思う?
209鎌倉博美:03/10/27 23:52
>>207
全部、煽りの連中がやったこと。俺は、反論していない。
また、マルチポストに関しては、ここで聞いても全然返事がこないから、他で聞いただけ。
他で返事がくれば、すぐどこも解決したと言う返事を書くつもりだったから、なんの問題も無い。
画像に関しては、bmpをgifに変えるとサイズも変わると思ってそうしてただけ。おまけに、
eclipseのMLの人がアナログ回線を使っているとは、考えられない。
210194:03/10/28 00:13
かなりわかりにくかったと思いますが、再生ボタンを押すと曲の再生が始まります。
停止ボタンを押したら止まるというふうにするにはどうすればいいのでしょうか?
>>175
java.lang.regex
やJakarta ORO使うのはどうよ
>>205 >209
なんでお前はEclipseスレと同じコピペはってんだよ
213デフォルトの名無しさん:03/10/28 00:27
すっかりアイドルだな。
214デフォルトの名無しさん:03/10/28 00:44
>>207

Tomcatが既に立ち上がっているんじゃないのか?
>>211
具体的なコード示してくれ。
それ以前に >>179 のString#splitは中でregex使ってるわけだが。
ところでjava.lang.regexって?w
Stringが何行になっているか調べる方法ってありますか?
>>216
改行コードの数調べれば?
改行コードって全部一緒だったっけ?

StringTokenizer st = new StringTokenizer(str,"\n");
st.countTokens();

で分かるかな
>>216
わざと聞いてる? この中のどれでもオケ。
>>176 >>179 >>189 >>190 >>199
「初めてじゃば」を読むとむずかしい。オブジェが出てきて、
自動車の設計を習う教室がクラス。そこで出来上がってきたのがトラックで運ぶ
ものがイス・タンスだ。それを修理するのが家具師でメシだゾーと行って
ソッセージを贈る。
221デフォルトの名無しさん:03/10/30 16:20
サーブレットの質問してよかですか?
Javaをインストールしようとすると失敗するんだけどなんででしょうか?
WinXPです。
>>222
どんな風になるんですか?
>>222
WinMe でそういうことがおきた。レジストリが死んだらしい。
でも何度かヴァージョン上げたから、君のは原因違うかもしれない。
225デフォルトの名無しさん:03/10/31 07:08
SWINGで、ボタンを押すと処理が始まり、止めるボタンを押すと処理が終わる。
というふうにしたいのですが、処理が始まるとボタンが押せなくなります。
教えて下さい。
>>225
二つは違うボタンだろ?
>処理が始まるとボタンが押せなくなります
これが原因。おかしな処理をしてると思われ。祖巣あげれ
>>225
処理を違うスレッドでやってみれば!
VM 上には、並列処理(スレッド)がたくさん動いている。
main メソッドからは、まず一つ始まって、終端でそれは終わる。
しかし Frame などを表示しておくと、GUI 操作を待つためのスレッドが裏で一個立ち上がる。
ところが一個だけなので、
 ボタンが押されるのを待つ→ユーザがボタンを押す→actionPerformed が呼ばれる→処理を行う〜
という一連の操作の上で、またボタンが押されるのを待つには、最後の処理が終わらないといけない。
そこで >>227 のいうように、こうすればいい。

 actionPerformed が呼ばれる→新たなスレッドで処理を行わせる→ボタン押しを待つ
                           ↓スレッド発生
                       ex. ループする処理
                           ↑
 また押される→actionPerformed →インスタンス変数などで停止を通知→ボタン押しを待つ

具体的にどう改造するかはソース次第。
>main メソッドからは、まず一つ始まって、終端でそれは終わる。
ここ不正確かもしれないな。でもプログラマにはおんなじことか。
230225:03/10/31 15:14
スレッドのクラスを作成してスレッド1の処理はGUIを表示する処理、スレッド2の処理はボタンが押された際の処理などを記述すればよいのでしょうか?
スレッドは初挑戦なので間違っていたら教えて下さい。
>>230
君のやりたい中身によるんだが、例えば、
とにかくただただ計算だけするスレッドと、
1000ms 毎に経過を取り出して Component#repaint() するスレッドの二つが必要。
でも多分、作るのは一つだけでいいと思うぞ。
反復計算が多重ループになってたら、一重目に repaint させて、
それで激しすぎないなら、それはそれでいい。
232デフォルトの名無しさん:03/10/31 18:09
JSPで質問です!!
Tomcatの環境でサーブレットからJSPへJavabeanを使用し、Dataの受け渡しをしようとしています。
そこでちょっと疑問になった事があります。

DataBeanのほうには以下のような定義をしています。
public class SecondPageBean{

private static String ERRORMESSEGE;

public Bean(){
ERRORMESSEGE = "";
}
public void setErrormessege(String errormessege){
ERRORMESSEGE = errormessege;
}
public String getErrormessege(){
return ERRORMESSEGE;
}
}

data獲得側のJSPの中のGeterのコード(関連するところも書きます)は以下の通りになってます。
<jsp:useBean id="Bean" class="Bean" scope="session" />
<jsp:getProperty name="Bean" property="errormessege"/>

以上のコードを使用するとうまく動くのですが、以下のようにJSPのGeterのところのコードを変えるとうまくいきません。
<jsp:getProperty name="Bean" property="ERRORMESSEGE"/>

JSPのJAVAの部分は"大文字小文字を区別する"はずではないのですか?
なぜ”Databeanの中では大文字で定義してあるのに、JSPから呼ぶときは小文字でなくてはよべない”のですか?

×Geter
○Getter

>>232
仕様です
ちゃんと本に書いてありますよ
>>233
more SERVLETS and JAVA SERVER PAGES と10日で覚えるJSP/サーブレットにはなかったような・・・
SUNのドキュメント見ればわかります?
235デフォルトの名無しさん:03/10/31 19:22
メインメソッドからクラスのコンストラクタを呼び出してその中でGUI表示の処理を記述しているのですが、
ボタンを押したときのアクションリスナーでRUNをオーバーライトできません。
助けてください
>>235
助けてあげたいのはやまやまだけど
言っていることがよく分からないよ。
ある二つのよく似た機能のある画面を同じjspに実装したいとき、
画面表示(例えば「これは○○をする画面です〜」等)なんかの表示を
うまいこと切り替えるにはどうするのが良いのでしょうか?

例えば、フォームにキーとなるオブジェクトを一つ入れておいてlogicタグで切り替えるのが
いいのかなと思ったのですが、じゃあそのキーはなににするのがいいのか
(他の人が見てわかりやすいか)等々教えてください。
238237:03/10/31 22:13
すいません、Strutsの話です。
239デフォルトの名無しさん:03/11/01 20:50
MP3の再生はJAVAでは難しいのでしょうか?
曲の指定した位置からの再生などできますか?
241239:03/11/02 10:45
>>240
今自分の作っているプログラムに使用したいのですが
まずどうすればいいのでしょうか?
なんかもう単なる質問スレになってきたな
243239:03/11/02 14:08
デコードするための情報はdocを参照したらわかりましたが
mp3の再生に関しては、どのメソッドが処理しているのか
理解できませんでした。
どなたかわかるかたはいますか?
>>243
もうない
245244:03/11/02 14:16
あれのことじゃないのか。勘違い。
246デフォルトの名無しさん:03/11/02 18:36
教えてください
BEANで
action bean と form bean
の違いがよく分かりません
247デフォルトの名無しさん:03/11/02 19:32
質問です。
例えばCでは浮動少数型のデータaaaを整数部3桁小数部2桁を表示したいとき
printf("%3.2f",aaa);
のように表しますがjavaではどう書けばいいんですか?
248デフォルトの名無しさん:03/11/02 19:50
初心者です
教えてください
キャストってつまりどういう動作をしているのでしょうか?
たとえば
User user = ( User )session.getAttribute( "userData" );
だとどういった状態になるのでしょうか?
>>247
System.out.print(new DecimalFormat("##0.##").format(aaa));
>>248
キャストの () には空白入れるな。

> User user = (User)session.getAttribute( "userData" );
> だとどういった状態になるのでしょうか?
session.getAttribute( "userData" ) の値が User のサブクラスでなければ ClassCastException を投げる。
251243:03/11/02 21:29
まず再生するためにはどうすればいいのかが具体的に
書いてないのでできないのかもしれませんね。
まったくの初心者ですが、質問させてください。

String str1="HELLO";
String str2="HELLO";
System.out.println(str1+" + "+str2);
if(str1==str2)
{
System.out.println("等しい");
}else
{
System.out.println("等しくない");
}
System.out.println();
String str3=new String("HELLO");
String str4=new String("HELLO");
System.out.println(str3+" + "+str4);
if(str3==str4)
{
System.out.println("等しい");
}else
{
System.out.println("等しくない");
}

で実行するとstr1とstr2は等しい。
str3とstr4は等しくないと出ます。
()の有無で結果が変るものなのでしょうか?
253252:03/11/02 22:55
自己完結しました。
newを利用してるから結果が違うんですよね。
失礼しました。
254デフォルトの名無しさん:03/11/03 03:16
>253
分かっているような分かっていない様な…。
>>252,253
本にはStringは「==」で比較しちゃいかんと書いてあるよnn.
.equals とか使うんじゃない
>>255
何を比較したいかによるでしょ。
同じオブジェクトかどうかを比較したいのなら==で比較しないと。
257デフォルトの名無しさん:03/11/03 22:34
String の == 比較は結果が予想しにくいからね。
下記、試さずに結果が分かる人はどれだけいるか。
もちろん、equals の結果はすべて同じ。

String a = "HELLO";
String a1 = "HELLO";
String a2 = "HEL" + "LO";
String a3 = "HEL";
a3 += "LO";

System.out.println(a == a1); //1
System.out.println(a == a2); //2
System.out.println(a == a3); //3
>>257
直感で
1: true
2: true
3: false
かなぁ。a2はコンパイラ様が連結するって決まってたような気がする。

でも、Stringの==比較は基本的に使わないなぁ。
たとえ、使えるところでも。
259252:03/11/04 07:30
1 ture
2 false
3 false
・・・です・・かなぁ。
ちなみに、
String a="HELLO"
String b=("HELLO")
では結果は結果が同じになりますが、()の必要性ってあるんでしょうか?

お恥ずかしい質問ばかりですみません。
>>258
> a2はコンパイラ様が連結するって決まってたような気がする。
決まってないです。

1. true
2. コンパイラ依存。
3. コンパイラ依存だったか false だったか…
>>259
> では結果は結果が同じになりますが、()の必要性ってあるんでしょうか?
特に無い。

演算子の結合順序を変える時は () が必要。
演算子の結合順序がわかり難い時は () が有った方が良い。
262デフォルトの名無しさん:03/11/04 13:47
質問です。
javaアプレットの電卓を作っているのですが、
数値をdouble型の変数に格納し、それをラベルに表示するとして
入出力する数値の範囲を小数点やマイナスを含めて8桁で表示するにはどうしたらいいでしょうか?
それとも演算のときに8桁にする方法とかありますか?
>>262
Double.toString(値).substring(0,8);
264262:03/11/04 14:27
>>263
Label.setText(" "+ Double.toString(値).substring(0,8) +" ");
こんな感じでいいんですか?
265デフォルトの名無しさん:03/11/04 19:31
String[][]のような2次元配列の各2方向の長さを調べるにはどうしたらいいのですか?
266デフォルトの名無しさん:03/11/04 19:37
>>265
さっきの質問却下。
267氷河魔人:03/11/04 20:02
死ね
268氷河魔人:03/11/04 20:04
[email protected]文句があるならここにメールしろ
>>265
String[][] array = {{},{""},{"",""}};
とかだったら「各二方向の長さ」を、どのように定義しますか?
270デフォルトの名無しさん:03/11/04 20:24
すみません。今からJavaの勉強をしようと思う者です。
窓の杜の「programa」というソフトを少し、触っております。
簡単なフローチャートを書き、実行ボタンを押せば
MS-DOSプロンプトで実行してくれというソフトなのですが
私の場合、CINTという画面になります。MSDOSプロンプトによく似ているのですが・・・。
そして、実行してくれません。何か問題がるのでしょうか?
OSはWin-Meです。
よろしくおねがいします。
271デフォルトの名無しさん:03/11/04 20:33
import java.io.*;
class Test {
public static void main(String[] args) throws IOException {
BufferedReader r =
new BufferedReader(new InputStreamReader(System.in), 1);

System.out.print("お名前は? ");
System.out.flush();
String s = r.readLine();
System.out.println("こんにちは," + s + "さん");
}
}

WinXPのver1.4.2だとちゃんと動作しますが、
Mac OSXのver1.4.1だと、Ctrl+Dをしなければ表示されません。

原因は何なんでしょうか?
272デフォルトの名無しさん:03/11/04 22:21
ファイルを複数作ってそれぞれにクラスを作成するのは何故ですか?
私の場合、複数個ファイルを作るのめんどいから、一つのファイルにサブクラスを複数作っています。
サブクラスってふつうのクラスと違うことありますか?
273258:03/11/04 22:28
>>260
>決まってないです。
Java言語仕様の3.10.5章を読むと
「定数式(15.28章)によって計算される文字列は、コンパイル時に計算され、そしてそれらがリテラルであるかのように扱われる」
とある。
274258:03/11/04 22:41
>>272
サブクラスって、Object以外のクラスを継承したクラスのこと?
Java言語仕様の7.6章によれば、publicなクラスが一つのファイルに一つだけ必要、
という制約は、Javaのコンパイラや仮想マシンを実装する人が
楽をできるようにするためらしい。

なんか自分が言語厨に思えて欝だ。
まあ仕様も確かめずに推測であれこれ言う香具師よりかは遥かに有益。
>>271
うちもOSXでVM1.4.1だけど、それちゃんと動いたよ
>>272
1000個クラスを作りたいとき困るでしょう。
278デフォルトの名無しさん:03/11/05 11:13
>>262
> 質問です。
> javaアプレットの電卓を作っているのですが、
> 数値をdouble型の変数に格納し、それをラベルに表示するとして
> 入出力する数値の範囲を小数点やマイナスを含めて8桁で表示するにはどうしたらいいでしょうか?
> それとも演算のときに8桁にする方法とかありますか?

java.text.DecimalFormat
>>270
またマルチか
280デフォルトの名無しさん:03/11/05 14:33
抽象クラスっていったい何の為にあるんでしょうか?
さっき標準APIの抽象クラスをいじってみたのですが、一からクラスを作るのと何等変わりがありませんでした。
>>280
Image クラスの API リファレンスを参照せよ。
それでわかんなかったらセンス無い。
>>280
> 抽象クラスっていったい何の為にあるんでしょうか?
あるメソッドは実装されているが、あるメソッドは実装されていない場合とか。

> さっき標準APIの抽象クラスをいじってみたのですが、一からクラスを作るのと何等変わりがありませんでした。
それは使い方が悪いっつーか…
283デフォルトの名無しさん:03/11/05 16:31
J・A・V・A じゃば〜♪
J・A・V・A じゃば〜♪
 ういんどうずもじゃば〜
公表してねえ!
284デフォルトの名無しさん:03/11/05 22:05
public class SampleP2
{
public static void main(String[] args)
{
int ans1 = 0-4;
double ans2 = 3.14*2;
double ans3 = (double)5/3;
int ans4 = 30%4;
double ans5 = (7+32) / (double) 5;

System.out.println ("0-4は" + ans1 + "です。 ");
   System.out.println ("3.14×2は" + ans2 + "です。 ");
System.out.println ("5÷3は" + ans3 + "です。 ");
   System.out.println ("30÷7のあまりの数は" + ans4 + "です。 ");
   System.out.println ("(7+32)÷5は" + ans5 + "です。 ");
}
}

コマンド プロプトで、
¥1288は不正な文字です 
というエラーメッセージが出るんだが、なぜ?
>>284
エラーメッセージは勝手に削らないで全部コピペしろ。
286284:03/11/05 22:19
>public class SampleP2
>{
>public static void main(String[] args)

は、
class SampleP2
{
public static void main(String args[])
に訂正
287284:03/11/05 22:22
SampleP2.java:12: \12288 は不正な文字です。
   System.out.println ("3.14×2は" + ans2 + "です。 ");
^
SampleP2.java:12: \12288 は不正な文字です。
   System.out.println ("3.14×2は" + ans2 + "です。 ");
^
SampleP2.java:14: \12288 は不正な文字です。
   System.out.println ("30÷7のあまりの数は" + ans4 + "です。 ");
^
SampleP2.java:14: \12288 は不正な文字です。
   System.out.println ("30÷7のあまりの数は" + ans4 + "です。 ");
^
SampleP2.java:14: \12288 は不正な文字です。
   System.out.println ("30÷7のあまりの数は" + ans4 + "です。 ");
^
SampleP2.java:15: \12288 は不正な文字です。
   System.out.println ("(7+32)÷5は" + ans5 + "です。 ");
^
SampleP2.java:15: \12288 は不正な文字です。
   System.out.println ("(7+32)÷5は" + ans5 + "です。 ");
^
SampleP2.java:15: \12288 は不正な文字です。
   System.out.println ("(7+32)÷5は" + ans5 + "です。 ");
^
エラー 8 個

C:\MyApplet>
>>286
わざわざ改悪しなくても…

>>287
全角空白が原因では?
>>287
インデントはTab使え。
290デフォルトの名無しさん:03/11/06 00:57
クラスメソッドなどのstaticをつけるメリットを教えてください
逆にインスタンス化しなければ使えないのとどういう問題が発生するのでしょうか?
291デフォルトの名無しさん:03/11/06 01:02
教えてください
class Sample{
public static void main(String[] args){
try{
File fl = new File(args[0]);
FileWriter fw = new FileWriter(fl.getPath(),true);
fw.write("あ");
fw.close();
} catch(IOException e){
System.out.println("ERR:"+e.getMessage());
}}}

これを実行すると「あ」が追加されるのですが
一番最後の行に追加されます
これを途中の行、あるいはある文字列の後ろに追加するにはどうすればいいのでしょうか?
お願いします
>>291
一度全部読み込んで、好きな場所に追加してから書き込み。じゃダメかい?
293デフォルトの名無しさん:03/11/06 01:19
>>292
やっぱその方法しかないのか…
>>293
そもそも、ファイル中にデータを割り込ませることができる OS は、
ほとんど無いと思う。
そういうニーズがあるときは、プログラマがそういうファイル形式にいちいちすると思うし。
jspにincludeとかforwardをごりごり埋めたいんすが
charsetの指定は個々に書くものですか?
>>295
includeは方法による。
<%@ include 〜 %>なら書いてはいけない。
<jsp:include 〜 />は書かなくてはいけない。
297284:03/11/06 03:33
>>288-289
サンクス!!
>>290
いろんな API を活用して、自分で掴んでください。
java.lang.Runtime.exec()を使用して起動したコマンドに対して、SIGNALを送って制御したりとかはできますか?
>>299
java.lang.Runtime.exec() に相当する部分から JNI 経由でって事にすればできるかもしれん。
301デフォルトの名無しさん:03/11/06 17:01
Bufferingってのがよくわかりません
読み込みを速くするということですが
具体的にどういう動作をするのでしょうか?

あるとないとでは具合はどう違うのでしょうか?
>>301
何のバッファリングかによるが・・・・
例えば HDD 上のファイルを 1byte ずつ断続的に読む必要があったとする。
で、読む間隔が 1秒ごとだとすれば、
他のアプリケーション等が割り込んで、別のファイルを読み込む余地が十分にあるわけだ。
そうすると、HDD のヘッダはあっちいったりこっち戻ってきたりとせわしなくなる。当然、遅くなる。
だからメモリ上に kbytes 単位で前もって読み込んでおいて、
それを 1byte ずつ拾っていけば、随分ましになる。

つまり Java は全然関係ない話。
>>301
InputStream in = new BufferedInputStream(new FileInputStream("file"))
とかだと in.read() で 1バイト読み込む際に BufferedInputStream は 1024バイトぐらいファイルから読み込んでおく。
すると、次に in.read() で 1バイト読み込む際には直接ファイルから読み込まなくて良いので速くなる事が期待される。
304デフォルトの名無しさん:03/11/06 17:10
>>302
たとえば
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
みたいに
何重もnewしたのをその上でbufferedReaderでnewする場合とかです
305304:03/11/06 17:11
被った
>>289
半角スペース二個だろ
EmacsUserならこれ常識
307デフォルトの名無しさん:03/11/06 17:41
FileWriterで質問です

File fl = new File(args[0]);
FileWriter fw = new FileWriter(fl.getPath(),true);
for(int i=0;i<100;i++ ){
fw.write(i + "\n");
}
を実行した場合
上記だと上手くファイルに書き込みされるのですが

fw.write(i)でやると文字化けしてしまいます
\nの改行のあるとないの違いがいまいちわかりません
教えてください
>>307
fw.write(i+"\n"); だと FileWriter#write(String s) が呼ばれる。
fw.write(i); だと FileWriter#write(int i) が呼ばれる。
309エラーが出るんですが…:03/11/06 18:06
import java.io.*;

class Sample53
{
public static void main (String[] args) throws IOException;
{
System.out.println ("二つの整数を入力してください。");

BufferedReader br =
new BufferedReader (InputStreamReader (System.in));

String str1 = br.readLine();
String str2 = br.readLine();

int num1 = Integer.parseInt (str1);
int num2 = Integer.parseInt (str2);

if (num1<num2){
System.out.println (num1+"より"+num2+"のほうが大きいです。");
}
else if (num1>num2){
System.out.println (num1+"より"+num2+"のほうが小さいです。");
}
else (num1<num2){
System.out.println ("二つの数は同じ値です。");
}
}
}
310309:03/11/06 18:07
Sample53.java:24: 文ではありません。
else (num1<num2){
^
Sample53.java:24: ';' がありません。
else (num1<num2){
^
Sample53.java:5: メソッド本体がないか、abstract として宣言されています。
public static void main (String[] args) throws IOException;
^
Sample53.java:10: シンボルを解決できません。
シンボル: メソッド InputStreamReader (java.io.InputStream)
場所 : Sample53 の クラス
new BufferedReader (InputStreamReader (System.in));
^
エラー 4 個
>>310
上から順にじっくり見れ。
public static void main (String[] args) throws IOException; ←ココ!
312デフォルトの名無しさん:03/11/06 18:32
FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.NullPointerException.<init>(NullPointerException.java:63)
('A`)
FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.NullPointerException.<init>(NullPointerException.java:63)
('A`)
FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.NullPointerException.<init>(NullPointerException.java:63)
('A`)
FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.NullPointerException.<init>(NullPointerException.java:63)
('A`)
FATAL [Servlet.Engine.Transports : 1] (LoggingExceptionHandler.java:54) - java.lang.NullPointerException
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.Throwable.<init>(Throwable.java)
at java.lang.NullPointerException.<init>(NullPointerException.java:63)
('A`)
>>290
メリットも糞もstaticで修飾するからクラスメソッドでは?
というより日本語勉強氏れ。
314デフォルトの名無しさん:03/11/07 06:44
コマンドプロンプトで半角英数以外(片仮名・平仮名)を
打つにはどうしたらよいのでしょうか?
ほんと初心者ですいません
315デフォルトの名無しさん:03/11/07 07:37
[  Alt  ]+[半角/全角]
316デフォルトの名無しさん:03/11/07 07:48
>>314
マルチ野郎か。教えてやって損したぜ。
317デフォルトの名無しさん:03/11/07 07:51
>>315
有難うございます。
本当に助かりました。  
318デフォルトの名無しさん:03/11/07 08:35
>>317
もうマルチすんなよ。
>>314
そんなもんJavaの問題じゃねえよヴォケ
320デフォルトの名無しさん:03/11/07 13:45
JNIを使用してCを呼び出したいのですがやり方がよくわかりません。
どのようにすればいいのでしょうか?
具体的に教えて下さい。
>>320
これは全部読んだんだろうけど、どこが分からなかった?
http://java.sun.com/docs/books/tutorial/native1.1/index.html
322デフォルトの名無しさん:03/11/07 13:49
323java初心:03/11/07 14:28
今朝から勉強を始めました。
<html>
<head>
<title>Hello JavaScript</title>
</head>
<body>
<script>
document.write("<h1>じゃヴぁjava表示テスト</h1>")
</script>
<hr>
<script>

var xToday = new Date();
var xTestDate = new Date(2004,1-1,31);
xNokori = (xTestDate.getTime() - xToday.getTime()) / (60*60*24*1000);
document.write("<h2><CENTER>");
document.write(Math.ceil(xNokori), "日<br>");
document.write("</h2></<CENTER>");

</script>
<hr>

</body>
</html>
まで、できました。
>>323
逝ってよし
325323:03/11/07 15:23
すみません>>1を全く読んでません。タイトルだけ見てましたm(..)m
ある Action が、 isEnabled で返す値を変化させた場合、
"enabled" をキーにすれば PropertyChangeListener 達に正しく通知できるようですが、
(少なくとも J2SDK1.4 のソースを見るとそう)
これってとても泥縄的ですよね。
Sun の方の見解ってどこかで見れますか?
327326:03/11/07 16:08
あ、スレ間違っちゃった。放置してもいいです。
328デフォルトの名無しさん:03/11/07 19:29
Javaでアプリ作ろうとすると、画面のレイアウトでかなり苦労するのですが
皆さんどうしてますか?
レイアウトマネージャーがもっと柔軟にコンポーネントを配置できればいいのですが
どうにも上手くいきません。
Win32APIのように座標で指定してしまえば迷う事もないのでしょうが
Javaならやはりレイアウトマネージャーを使うべきでしょうか。
329デフォルトの名無しさん:03/11/07 19:30
C言語で作ったMCIの音楽再生処理をJNI経由で使用したいのですが処理全体をネイティブメソッドとして呼び出しも大丈夫でしょうか?
構造体のポインタを使ったり面倒な事をしなければいけないのでしょうか?
>>328
nullでsetBoundsは気が楽だぞー?
ウィンドウサイズ変更にいくらか制限つければな。
>>328
> どうにも上手くいきません。
慣れの問題だと思うよ。

> Javaならやはりレイアウトマネージャーを使うべきでしょうか。
基本的にはそーだね。座標で直接指定するのはフォントを統一できないと面倒だったりするし。
>>328
JFrameはnullレイアウトで。
まとめておくものはJPanelに入れて、そのJPanelはFlowLayout
そうすると、あとでJFrameをなにかのレイアウトにするときも楽

GUI作るときはNetBeansがおすすめ。
ttp://www.netbeans.jp/
333デフォルトの名無しさん:03/11/08 00:44
JAVAサパーリ分かりません。
DB2とかwebshereとかhtml
とかも勉強しないといけないんですよね。
何から始めれば良いのか分かりません。
C言語とアセンブラ3種類くらいなら
仕事で使っていたので簡単だったのだが。
IBMのサイトとか見ても書いてることが
理解できない。専門用語多すぎ。
>>333
Cでやっても、DB使ってWebアプリケーションなら、同じようにわからないんじゃネーノ?
とりあえず、プログラム経験ありなら、独習Javaでも読めば?
335デフォルトの名無しさん:03/11/08 02:32
RUBYやると混乱するよ
>>333
まずHTMLが一番簡単。ワープロと同じ。
>>333 IBMに開発者登録すると、うざいくらいDB2やWebsphere関連
セミナーの案内くるぞ。
>DB2とかwebshereとかhtml
>とかも勉強しないといけないんですよね。

これが Java 特有のもんだと誤解をしてるんだったら、
残りの言語も大して活用できていないものと思われる。
339デフォルトの名無しさん:03/11/08 22:43
ていうか、会社から全部勉強するように言われたので。
いままでは、オブジェクト指向言語ではなかったので
それで戸惑ってます。
hellowjava とかならわかるんですけどね。
これが解らなかったら既に会社クビになってるが(藁)
340デフォルトの名無しさん:03/11/08 22:45
> hellowjava とかならわかるんですけどね。
> これが解らなかったら既に会社クビになってるが(藁)
既にクビですね(藁
×Hellow
○Hello
342デフォルトの名無しさん:03/11/08 23:27
よくjavaのソースにある
クラス名.class.getName();

って何をしてるのでしょうか?

特に真ん中のclassの部分が何を指してるのでしょうか?
教えてください
>>342
型名.class で、その型を示す java.lang.Class のオブジェクトが得られる。

Object.class で Class.forName("java.lang.Object") と同じものが、
int.class で Integer.TYPE と同じものが、それぞれ得られる。
>>342
OjectクラスとClassクラスのドキュメントを読め
345デフォルトの名無しさん:03/11/09 06:57
例外処理がよく理解できない

tryとcatchはまあ理解できるけど
throwとthrowsがいまいち理解できない

どこか良いサイトや書籍知りませんか?
346デフォルトの名無しさん:03/11/09 08:41
オブジェクト指向って
簡単に言うとクラスというのを用意してるから
それをインスタンス化して利用しなさい
って事?
347デフォルトの名無しさん:03/11/09 09:23
デフォルトコンストラクタをいちいち明示する目的って何でしょうか?
ただ、「わかりやすい」だけの問題だけでしょうか?
348デフォルトの名無しさん:03/11/09 09:47
public void paint(Graphics g)内で、計算結果を任意の場所に表示するには
どうすればよいのでしょうか?
349デフォルトの名無しさん:03/11/09 12:12
staticのあるクラスって
インスタンス化しなくても参照できるクラスで
staticのないクラスはnewしなければ参照できないと言うことですか?
350デフォルトの名無しさん:03/11/09 12:19
>>349

もともと無い物を参照することは出来ないのでnewするということです。
staticというのはもともと存在するものだという形で考えてください
>>345
Javaの鉄則
352デフォルトの名無しさん:03/11/09 12:28
変数の宣言で
int=0;
String= null;
など初期化しなければならない時ってどういうときでしょうか?

どうもサンプルなどを見てもするときとしない時がはっきりしません
教えてください
>>352
初期化しない(もしくは、初期化しない可能性がある)変数を読もうとするとエラーになるから、その対策とか。

Object o;
for(int i = 0; i < 5 ; i++){
 if(0<=i) o = null; //i が 0以上で、この文を通るのは人間には一目瞭然だが、コンパイラはそこまで考えない。
}
System.out.println(o); //コンパイルエラー
354デフォルトの名無しさん:03/11/09 14:02
>>343
たとえば
private static final String CLASSNAME = CustomJobDB.class.getName();
って何のためにするのでしょうか?
ClassNameには何が入れられるのでしょうか?
これをすることによって何が出来るのでしょうか?

教えてください
>>354
> ClassNameには何が入れられるのでしょうか?
CustomJobDB の完全限定名。

> これをすることによって何が出来るのでしょうか?
CustomJobDB の完全限定名を安価に読むことができる。
>>352 >>353
インスタンス変数の初期化は必要が無い無駄な処理。
明示的に null とかで初期化するのはアホ。雑誌などのソースもほとんどバカ。
コーディングルールがそうなってたとしたら策定者が糞。
インスタンス変数はオブジェクトでもプリミティブでも必ず初期化される。
初期値は言語仕様で規定されている。

明示的にしたほうが分かりやすいとかじゃなくて必要ない。
Javaの流儀に従うなら JDK の String などのソースを見るべし。

ここで勘違いしてはいけないのはメソッド変数は必ず初期化が必要。
353の説明だとmain()の中以外かstaticつけるとnullと表示されるだけでコンパイルエラーにはならんよ
o.toString()とでもすれば

 ぬるぽ

だけど
358デフォルトの名無しさん:03/11/09 15:35
>>356
学生
>>357
常識的に解釈すれば

> Object o;
> for(int i = 0; i < 5 ; i++){
>  if(0<=i) o = null; //i が 0以上で、この文を通るのは人間には一目瞭然だが、コンパイラはそこまで考えない。
> }
> System.out.println(o); //コンパイルエラー

は同一ブロック内にあるだろ。
>>356
> ここで勘違いしてはいけないのはメソッド変数は必ず初期化が必要。
他人の事を馬鹿にするわりには「メソッド変数」とか言ってるし…
一般的には「ローカル変数」でしょ。
>>352
> int=0;
> String= null;
どーでもいいけど、そのままではコンパイルできんぞ。
>>361
int i =0;
String s = null;

363デフォルトの名無しさん:03/11/09 16:51
すいません
>>349ですが

引数のないコンストラクタを明示する理由って何でしょうか?
あれって記述がなければデフォルトで自動的に引数のないコンストラクタを
作ってくれるから別に書かなくていいんじゃないのでしょうか?
364デフォルトの名無しさん:03/11/09 16:52
>>363
347の間違い
>>363
> 引数のないコンストラクタを明示する理由って何でしょうか?
一般的に良く使われるのは

 private ClassName(){ }

でインスタンスの生成を禁止をするとか。

っつか、書いた人に質問するのが一番だと思われ。
366U ◆CZtFsGiu0c :03/11/09 17:20
>>363
引数ありのコンストラクタが別にある場合は、引数なしのコンストラクタも明示的に定義
する必要があるけど、そういう話ではない?
367デフォルトの名無しさん:03/11/09 17:33
>>366
そうなんですが
その場合なぜ引数なしコンストラクタを定義しなければいけないのかや
引数なしコンストラクタで中味が何もなしのソース
とかよく見かけるけどあれは、何のために存在してるのかなどです
>>367
言語仕様による。

コンストラクタが一つも明示的に宣言されていない場合は
 public ClassName(){}
が暗示的に宣言されたものとみなされるけど、
一つでもコンストラクタが明示的に宣言される場合は
引数なしのコンストラクタも明示的に宣言しなければならない。
>>368
ハァ?
デフォルトコンストラクタ無しのクラスは大いに結構ですが何か?
370デフォルトの名無しさん:03/11/09 17:51
>>368
中味なしの引数なしコンストラクタは
何も処理ははないけど形だけ書いている

それでコンストラクタが一つも明示されていないときは
中味なしの引数なしコンストラクタが自動的に追加されて
特に処理はしないってことですか?

わかりました
ありがとうございます
>>インスタンス変数はオブジェクトでもプリミティブでも必ず初期化される。

馬鹿ですか?
372U ◆CZtFsGiu0c :03/11/09 18:07
>>367
>>369
言葉が足りなかったけど、もちろん「引数なしのコンストラクタが不要」であれば定義する
必要はないです。ただし引数ありコンストラクタが別にあり、引数なしコンストラクタも必要
であれば、中身が空っぽでも定義する必要があります。
>>369
>>368
> 引数なしコンストラクタで中味が何もなしのソース
> とかよく見かけるけどあれは、何のために存在してるのかなどです
に対する説明ね。

確かに単独で読んだら誤解するな。
>>371
初期化されるんじゃないの?
インナークラスはstaticをつけたほうが良いって聞きましたが
なんでですか?
>>375
> インナークラスはstaticをつけたほうが良い
とかいってた奴に聞け。
377375:03/11/09 20:31
言ってたのはジョシュア・ブロックっていう先輩なんですが
こいつ何いってんのかサパーリで。。。
378375:03/11/09 20:37
ついで言うとこの人、Javaに人生かけてるみたいで
少しもちつけって感じです。
379375:03/11/09 20:41
こないだも、コレクションとかいう俺様フレームワークは
すごいんだって自慢してました。はぁ〜。
>>375
理由1:
非staticなインナークラスは、アウタークラスへの暗黙の参照を必ず持つ。
この「暗黙の参照」ってのが曲者で、プログラマの意図していない
アウタークラスへの無駄な参照がメモリリークを引き起こすこともある。

理由2:
非staticなインナークラスのシリアライズは、互換性の問題があるため
推奨されていない。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/serialization/spec/serial-arch.doc10.html
381デフォルトの名無しさん:03/11/10 00:20
public void paint(Graphics g)内で、計算結果を任意の場所に表示するには
どうすればよいのでしょうか?
>>375
釣り下手ですね。
383デフォルトの名無しさん:03/11/10 00:35
>>382
糞レスする暇があったら381に答えろ
>>383
またかよ・・・・
答えてもらえないと逆ギレする奴。いいかげんにしてくれ。
>>381
Appletのことをいってんのか?
忘れたが文字列を表示する何かがあるだろ。
386デフォルトの名無しさん:03/11/10 11:58
文字列の中に変数って使えるんですか?
387c9:03/11/10 12:02
>>381
g.drawString使うとよいよ。文字列とXY座標が引数ね。
>>386
String s = "gets!";
System.out.println("oh!nice " + s);
こういうことか?
>>386
リフレクション?
>>386
MessageFormat
390デフォルトの名無しさん:03/11/10 12:28
リフレクションの意味がわかりません。
初心者でほんと申し訳ないです。

c++で言う "%d" みたいなやつがjavaではどうやって表記したらいいのか
わからんのです。
>>390
DecimalFormat
>>390
java.lang.ref
java.lang.reflectのまちがい
>>390
> c++で言う "%d" みたいなやつがjavaではどうやって表記したらいいのか
JDK1.5で追加される。
395c9:03/11/10 13:30
>>390
だったら
String s = "gets!";
System.out.println("oh!nice " + s);
この回答で正解か。
+使ってがんがんたせばOK。
どうしても今%dつかいたければ
Jakarta OROを使うという手もありw
ていうかprintf見たいなメソッドを自作すればいいじゃん。
>>378
> ついで言うとこの人、Javaに人生かけてるみたいで
これをみればそりゃそうに近いだろ。
>Joshua Bloch is a Senior Staff Engineer at Sun Microsystems' Java
>Software division, where he works as an architect in the Java Language
> Group. His major contributions include the Collections Framework and
>java.math.

>In a former life, Josh was a Senior Systems Designer at Transarc Corporation
>in Pittsburgh Pennsylvania, where he designed and implemented many parts of
>the Encina distributed transaction processing system. In the deep dark past, he
> held summer positions at the usual corporate research labs (Bell Labs and
> IBM Research).

> Josh holds a Ph.D. in computer science from Carnegie-Mellon University,
> where he wrote a long, boring dissertation on replication, and designed and
>implemented the language layer of the Camelot distributed transaction
> processing system. He holds a B.S. in computer science from Columbia.
http://www.mindview.net/WebLog/log-0021
EclipseやC#のことを何かいってる
>>398
ネタにマジレス、カコワルイ。
401デフォルトの名無しさん:03/11/20 04:27
例外処理ってどういうときに使うんですか?
If文でのチェックと何が違うんですか?
たとえば割り算のメソッドがあるとき、
割るほうの数が0だったら例外が発生しますけど
なんで0かどうかチェックして-1とかなんとかを返しちゃいけないんですか?
1÷0=-1か。おわらいだな。さすがJava厨だよ。
あぁ。俺も思った。いちいちジャンプするなっていいたい。
それじゃgotoと同じじゃん。
Cみたいにerrnoとか使ってくれないかな。
GetLastErrorでもいいけど。
404デフォルトの名無しさん:03/11/20 06:41
>>401>>403
例外が発生してるってことはやっちゃいけないことをやってるとか、
おきちゃいけないことがおきてるってことだよ。
バグとかありえなさそうな障害とかを検出するための機構が例外機構で、
プログラムの論理制御とは別の制御体系を持つことによって保守性を高めたり生産性を
あげようとしているわけ。
通常のプログラムとは別に「万が一」に備えるためのプログラムを書き込むための機構だと思えばいい。
>>401
そのメソッドがdouble型を返すとき,
0で割ったら,-1.0を返すことを仕様とする
ってことも可能だろうけど,
そのメソッドの計算結果として-1.0が範疇だったらどうするよ.

とJava以外の言語をやったことない俺としては疑問に思う.
ってか結局おなじじゃねーか
>>406
結局おなじようにしか書けないから、おまえは応用力が低いっていわれるんだよ!
つか、何故-1なんだ。
普通、POSITIVE_INFINITY とか、NEGATIVE_INFINITY だろ。
それをいうならNaNのほうが・・・
410デフォルトの名無しさん:03/11/21 11:37
リストボックスなどのADDの後に変数の中身を表示させる方法を教えて下さい。
411デフォルトの名無しさん:03/11/21 11:48
Systemアウチ(`д´)>
412デフォルトの名無しさん:03/11/21 12:07
ADD(system.out.print(hensu))を使用してもエラーが出て表示できませんでした。
なにが悪いのでしょうか?
ネタだ・・・絶対ネタ・・・
>>408,>>409
System.out.println(1.0/0.0);
System.out.println(0.0/0.0);
System.out.println((-1.0)/0.0);
415デフォルトの名無しさん:03/11/21 22:56
疑問の意味が分からん。
割る数に0がくる可能性があるなら
割る前にチェックするんじゃないの普通。
0ディヴァイド時点でアボーンなのはどの言語でも当たり前ですが何か?
0ディヴァイドがアボーンになる理由も分からんなら、
javaやるまえに情報処理の勉強をしろ。
404のあきれ顔が目に浮かぶw
















と、つられてみました。
>>402
そんなことをいう奴はJava厨じゃない。
C厨だろタコ
馬鹿はDivideByZeroExceptionについて調べてから発言して来い。
>>417 (・Д・∩ 先生!DivideByZeroExceptionはJavaで定義されてませんが
>>414 俺もそう思ってたんだがJavaの勉強がてらに電卓を作ってみたら何の例外も
     おきずに”Infinity”と表示されるんでそのままにしてある。まあ、計算結果を元に
    処理を継続する必要がある場合はチェックしなきゃね。
419418:03/11/22 00:09
ごめん、414→415だ。
420デフォルトの名無しさん:03/11/23 02:45
javaからwindowsをシャットダウンする方法おしえてほすぃ。

JNIを使えばよいの?
421417:03/11/23 03:44
>>418
定義されていないって?お前古すぎ。
http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#5047

浮動小数点の除算の結果は,IEEE算術の規定によって次のように決定される。
  * もしどちらかのオぺランドがNaNであるならば,その結果はNaNとする。
  * もしその結果がNaNでないならば,
   両方のオぺランドが同じ符号をもてば,その結果の符号は正であり,
   両方のオぺランドが異なる符号をもてば,その結果の符号は負とする。
  * 無限大による無限大の除算の結果はNaNとする。
  * 有限値による無限大の除算の結果は符号付き無限大とする。
   その符合は上述の規則によって決定される。
  * 無限大による有限値の除算の結果は符号付きゼロとする。
   その符号は上述の規則によって決定される。
  * ゼロによるゼロの除算の結果はNaNとする。
   ゼロ以外の有限値によるゼロの除算の結果は符号付きのゼロとする。
   その符合は上述の規則によって決定される。
  * ゼロによるゼロ以外の有限値の除算の結果は,符号付き無限大とする。
   その符合は上述の規則によって決定する。
  * その他の場合に,無限大及びNaNを含まなければ,正確な数学的な商を計算する。
   浮動小数点数値集合は,次のように選択される。
    o もし除算式がFP厳密(15.4)であるならば,
      + もし除算式の型が float であるならば,単精度数値集合が選択されねばならない。
      + もし除算式の型が double であるならば,倍精度数値集合が選択されねばならない。
    o 除算式がFP厳密でない場合には,
      + もし除算式の型が float であるならば,
       実装に応じて単精度数値集合又は単精度指数部拡張数値集合のどちらを選択してもよい。
      + もし除算式の型が double であるならば,
       実装に応じて倍精度数値集合又は倍精度指数部拡張数値集合のどちらを選択してもよい。
>>421
http://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#5047

整数の除算における除数の値が 0 ならば,ArithmeticException が投げられる。
424418:03/11/23 07:29
>>422,423 Thx
そっか俺はdoubleで計算してたから何も例外が発生しなかったんだ。
>>417
まぁ俺は振る一ちゃぁふるいが..Java1年生だぞw
J2EEにのどっかのクラスにでもDivideByZeroExceptionが定義されているのかな?
俺が使ってるのはJ2SE1.42なんで。422、423のとおりJavaの演算子"/"を使う以上は
DivideByZeroExceptionは無いってことだね。
Cだとヘッダファイルだけ作れば実装しなくても、それを利用するソースはヘッダをインクルードすればコンパイルできたけど
Javaの場合はどうするの?
構文チェックのため一部のそーすだけにコンパイルしたいんだけど。
426デフォルトの名無しさん:03/11/23 13:54
フラグが立つと、メインの画面が更新される処理をしたいのですが、画面の更新ってできますか?
>>425 最初に空のクラスを定義しておいて後から実装する。結局同じことと違う?
>>426 repaint()をコールする。質問と答えが噛み合ってるか分からんが。
428 :03/11/23 15:02
>>427
まあ同じことか。
空と言っても関数は戻り値を返すとこを書かないといけないと思ったけどnullにすればいいか。
ありがとう。
429デフォルトの名無しさん:03/11/23 15:28
コンソールで
java hogehoge
と打つのではなく、アイコンをダブルクリックして起動するためには
どうすればよいのでしょうか?
>>429
Windowsだったら。
バッチファイルを書くか、
java.exe のショートカットに引数を書くか、
.class の関連付けを java.exe にするか。
>>429-430
WinやMacやSolarisなら
実行可能Jarファイルを作るか。

http://www.google.com/search?lr=&ie=UTF-8&oe=UTF-8&q=%E5%AE%9F%E8%A1%8C%E5%8F%AF%E8%83%BD%20Jar%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
Google Search: 実行可能 Jar ファイル
432429:03/11/23 18:26
>>430-431さん
ふーむ、勉強になります!ありがとうございます。
まだ時間があるのでjarファイルを作る勉強から始めようと思います。
時間が足りなかったら>>430さんの方法で行こうかな…ありがとうございます。
433なおこ:03/11/23 23:18
イメージのサイズをある定数に代入したいのですが
−1が入ってきてうまく引き出せません。
どうしたら画像からサイズを引き出せるのでしょうか
ime[0]=getImage(getDocumentBase(),"sumple1.jpe");
ime[1]=getImage(getDocumentBase(),"no1.jpg.");
ime[2]=getImage(getDocumentBase(),"no2.jpg.");
ime[3]=getImage(getDocumentBase(),"no3.jpg.");
ime[4]=getImage(getDocumentBase(),"no4.jpg.");
ime[5]=getImage(getDocumentBase(),"no15.jpg.");
ime[6]=getImage(getDocumentBase(),"no11.jpg.");
ime[7]=getImage(getDocumentBase(),"no12.jpg.");
ime[8]=getImage(getDocumentBase(),"no13.jpg.");
ime[9]=getImage(getDocumentBase(),"no14.jpg.");
for(int i=0; i<10; i++) {//Image分のキャンバス作成
int iiwidth=ime[i].getWidth(this);
int iiheight=ime[i].getHeight(this);
System.out.println(iiwidth+"-"+iiheight);


}
>>433マルチはやめれ
メディアトラッカー
>>433
jpegのフォーマット解析して取得するのが確実
437デフォルトの名無しさん:03/11/25 18:59
リストボックスの項目を選択するたびに様々な変数の値を格納したいのですが、どのような処理が考えられるでしょうか?
438デフォルトの名無しさん:03/11/25 19:40
ウィンドウを作成して、別のクラスからそのウィンドウのラベルの文字列を編集する方法ってないでしょうか?
>>437
Button/JButton と ActionListener を使ったことないのか。
使ったことあるなら、それと似たようなもんだ (別の Listener がいいかも知れん)。
使ったことないなら、そういうサンプル探して習得しろ。本が手っ取り早い。
>>438
ある。そのクラスのインスタンスにウィンドウのインスタンスの参照を与える方法を考えれ。
あとは Frame なり JFrame なりのリファレンスを読みな。
具体的にどうしたいかがさっぱりなので、これ以上は答えられない。
440438:03/11/25 22:44
ウィンドウはコンストラクタ内で作っているので、クラスのインスタンスを作成するとウィンドウを作る処理を繰り返してしまいます。
>>440
意味わかって書いてる?
442貧乏紙:03/11/25 23:13
>>438
いっぱいあるよ。
Javaのカプセル化の概念を使うとラベルに設定する文字列のセットメソッドを
自分で作成する。コンストラクタで作成されたラベルの文字列が変更できるように
ラベルオブジェクトをグローバル変数にする。
さっき作った文字列セットメソッド内に変更するラベルオブジェクトのsetText(String str)
で更新すると変わるを思おうけど。
俺にはここが「【Java初心者】今から始めるJava Part01」には到底見えませんがなにか?
444デフォルトの名無しさん:03/11/27 13:31
質問です.

インターフェースのでの多重継承とは、抽象クラスの代わり
として複数宣言できるということなのでしょうか。

ご助言お願いします.
インターフェースって継承できたの?
446444:03/11/27 14:58
のでのになってしまった…。

説明が足りないようなので、追加します。
JAVA関係のHPを見てまわって、クラスは多重継承はできないため
インターフェースを使って多重継承のようなものを実現できるとあり。
結局、抽象クラスを分けてインプリメントしているだけのように思えたので、
みなさんの助言をいただきたいと思いました。

インターフェースの多重継承意味、使える点などお願いします。
>>446
インターフェースはメソッドの実装を強制するためのものです
クラスを再利用する際にメソッドの実装が必要であることをプログラマに明示的に示す役割があります
多重継承とは全くの別物と考えてください

Java言語で学ぶデザインパターン入門 結城浩著
この本に有益な利用法が載っています

繰り返しになりますがJavaでは多重継承はできませんし
似たようなこともできません
448446:03/11/27 16:25
447さん、
ありがとうございます。
確かに、インターフェースをクラスにインプリメントした場合
メソッドを定義する必要があり、継承というより宣言だよなぁと思っていました。
多重継承とは違うと言ってもらいスッキリしました。



多重継承の問題のひとつは、
 親
┌┴┐
子a 子b
└┬┘
 孫

というように、子a,子bから多重継承した孫クラスがあった場合、
子aから継承した親のデータと、子bから継承した親のデータと、
親のデータを二つも持つことになって、ややこしくなるからではないでしょうか。

インターフェイスにはメソッドの宣言しかなく、データを持たせることはできないので、
上で述べたような、ややこしいことがなくなるわけですから。

あとは、多重継承に似たようなことなら、
委譲などを使って一応は実現できるかもしれません。
ダイヤモンド継承
つーか、なんでこんなスレがたってんの?
だれだよ、こんなスレたてた奴。
DelphiとC#と一緒にだれか立てたのか?
>>451
なにおいまさら
453デフォルトの名無しさん:03/11/28 20:35
ボタンなどが乗ったウィンドウを作り、定期的に更新してウィンドウの内容を状況に応じて変化させながら表示したいのですが可能でしょうか?
本当に知りたいので必死にお願いします!
454デフォルトの名無しさん:03/11/28 20:45
>>453
可能です。


ああいいことしたなあ必死な人に回答してあげちゃったよ鮮血出血大サービスだよめまいがはぅパタン
>>454
453とは別人です。
ウインドウを生成する際、どのオブジェクトが必要で、そのオブジェクトがどのような機能を持っているか。
そして、更新する際には一般的にどのようなアルゴリズムで実現するかについて知りたいです。
こちらは1週間ほど悩んでいてかなり必死です。
説明ないし、詳細が書かれた「日本語のサイト」を紹介してください。
>>455
日本語でなくともいいのなら、Sunのチュートリアルなんだだが
とりあえず、下のサイトあたりでも、つまみ読みしてみてはでどうか?
http://www.wakhok.ac.jp/%7Etatsuo/prog2002/
Programming 2002:Wakkanai Hokusei

画面更新のキーワードは、repaint()にイベントとか、オブザーバパターンで。
457デフォルトの名無しさん:03/11/29 22:57
HTMLに埋め込まれたアプレットをクリックしたり、Buttonを
押したら別のページへ移動する(アプレットがHTTPサーバからの
レスを読み込むのではありません、つまりa hrefタグをクリックしたのと
同じような感じで)処理を行いたいんですが、どのメソッドを使えばいいんですか?
アプレットコンテキスト
JDKとかでコンパイルの仕方がわからないんですが・・
JDKとかってJDKじゃないものでもコンパイルしてみようとしたのか...
jikesとか? 強いな。
>>459
おれも、最初の頃わからなかったので
本とか買ったり ネットで調べました
462デフォルトの名無しさん:03/11/29 23:27
javac ファイル名
と打ち込む。
「そんなコマンド知らん」といわれたらパスを通す。
フェイントかけないと パスが通らないことがあります
>>460さん
「とか」は取り消しの方向でおねがいしま
>>461さん
ネットで調べつつやっててその壁にぶつかったんですが、なんかイマイチ・・
>>462さん
どこに打ち込むんですか?
非常に教えて君でゴメンなさい
>>464 OSは?
>>465さん
windows xpです
>>459
Javaはじめようと思ったのなら
なぜ入門書など買わないの?

>ネットで調べつつやっててその壁にぶつかったんですが、なんかイマイチ・・
どういうキーワードで探してるのかわからないが・・・
ネットでの検索も出来ない人ですあなたは。
もしくは日本語が読めないとか?

そして>>463のギャグをスルーするなんて笑いのセンス0ですよ
>>467さん
入門書は金銭的余裕が無くて今は買えないので・・
>>463のはギャグだったんですか?小生わかりませんでした。
言葉の意味も。
>>466 スタートメニューからコマンドプロンプト。
でもそのあとcdで移動とか作業あるけどね。本買ったら?
>>469さん
わかりました。ありがとうございます。

入門書買って出直してきます・・
471デフォルトの名無しさん:03/11/29 23:56
>>470
そのほうが良い
実際、つまづく部分はもっと先にあるからな
>>463のギャグはスルーしてもいいが、
そもそもこのスレに書き込んでいる所からみて、
検索かけたりするのはあまり得意ではないと見た。

このレベルの入門者向けの本は何がいいのだろう。
結城本辺りかのう。
473デフォルトの名無しさん:03/11/30 01:07

>>463のギャグはスルーしてもいいが、

結城の入門書ってホントに初心者でもわかりやすいの・?
474デフォルトの名無しさん:03/11/30 01:08
robocodeでもやれ!
>>473
さあそれが判らんのだ。
とりあえずスレッド本は判りやすかった。
デザインパターン本も判りやすかった。

して結城の入門本はどうだろうか。
これは私は未読ゆえ判断できかねるが、
少なくとも上の2冊はしっかりした日本語で書けているし、
説明もまあ正確だ。

ネット上なら>>456の稚内北星のテキストかJavaでHello Worldだろうか。
JavaでHello World
http://www.hellohiro.com/
>>475
JavaでHello World って、ソースにコメントが少ないせいか、初心者の頃にはわかりにくかった記憶が。
おおおおお!
失礼、ぶっこきます。

win98
java1.4

で、Dos窓コンパイルエラーを別ファイルにリダイレクトするコマンドを
教えてください。1.3まではわかったのですが、1.4がうまくいきません。
>>478
標準エラー出力をファイルにリダイレクトすればいいが、
Windowse98のDOS窓にそういう機能はあっただろうか?
もしなければCygwinなどをインストールしてみては?。

ところで1.3での方法が判ったというのなら、
1.3ではどのような方法を使ったか書いてはどうだろうか?
その方法次第で返答も違ってくると思われるが。

http://www.gimlay.org/~javafaq/S003.html#S003-07
>>479
どうもです。
1.3までの方法は、リンク先にあるのと同じです。
1.4だと、同じ方法ではうまくいかないみたいです。
(´-`).。oO(リンク先には解決法が複数書かれているようだが。)
シェルをかえずに、ウィンDos窓 1.4用のコマンドは ないということですかね。
>>482 1.4のjavacのマニュアルにちゃんと
|コンパイラのメッセージを、指定されたファイルに送ります。
|デフォルトでは、コンパイラのメッセージは System.err に送られます。
っていう機能のオプションの指定に付いて書いてあるのになんで読まないかな...

484デフォルトの名無しさん:03/11/30 21:31
>>482
標準出力と標準エラー出力の違いは判るか?
リンク先を見た限りでは、Java1.3以前はコンパイルエラーを
標準エラー出力ではなく、標準出力に出力する機能があったようだ。

1.4にそういう機能が付いていないのなら、
標準エラー出力をファイルに保存するプログラムを自分で書いてはどうか?

Windows98ではなくNT,XP系統なら、標準エラー出力をリダイレクトする機能が
デフォルトでついていたようにもおもう。

いっそWindows98なんぞ捨てて、UNIXライクなOSをインストールするか、
それかcygwinをインストールするのが一番手軽な手法だとおもう。
>>478
1.4 なら javac -Xstdout filename sourcefiles
486デフォルトの名無しさん:03/11/30 22:06
javaで
beanを作る と セッター、ゲッターをつくる。
インスタンス化する と newする
は同義語でしょうか?
>>486
 前者は、それだとJavaBeansのプロパティのアクセッサメソッドの部分しか
説明してないから同義ではない。
 後者は、インスタンスを生成してそれを返すstaticメソッドでしかインスタンスを
取得できないクラスの存在があるので同義ではない。
>>483
そのマニュアルというのは、SDKをインストールした中にあるのですか?
入門者なので、わからないことが多くて・・
>>484
まだまだ、入門者なもので保存するプログラムを書くまでは勉強しないと・・
>>485
おかげさんで、エラー出力できるようになりました。どうもです。
>>488
http://java.sun.com/j2se/1.4.2/ja/download.html
日本語版 J2SE 1.4.0 ドキュメントってのがある。
あと、javac -Xでも出るけどこれはまあ仕方ない。
>>489
どうもです。よくよんで、参考にします。
30Mあったので、今の時点でDLはやめときます。
で、cygwinはインストールしてくれないの?
>>491
HDの残も400Mぐらいしかないので、エミュレータいれるのは今すぐというわけには・・
買い替えも予定してるので、そのときには試そうかなと・・・
なんでインスタンス化するんですか?メソッドを全部staticにしちゃ駄目なの?
>>493
インスタンスが2つ必要なときは?
>>494
なんか分かったような気がします…。
オブジェクト志向が全然分かっていないようです。
ありがとうございました。
496デフォルトの名無しさん:03/12/01 02:46
アプレットビューアのフレームの大きさを,
描かれる物の大きさ(例えば,正方形とか)の応じて
臨機応変に可変できるように行いたいのですが,例えば,ソースの中に
<APPLET CODE="sample.class" WIDTH=1000 HEIGHT=500></APPLET>
といったように記述しないとsample.javaのファイルをappletviewerコマンド
で実行できません.そしたら横方向に1000ピクセル,縦方向に500ピクセル
のフレームを最初から指定したことになり可変できません.
どうしたら描くモノの大きさに依存するようにフレームを作成できるのでしょうか?
どなたか宜しかったら教えて下さい.
497デフォルトの名無しさん:03/12/01 05:07
コンパイラは何がいいですか?
英語が出来ないので、Eclipseはちょっと敷居が高いような気がして。
>>497
コンパイラはSunのJDKを使うことになると思うが、Eclipseを敷居が高いというならばプログラムは無理だ。
あきらめろ。
なんだこの野郎!
JDKインストールして、
メモ帳とコマンドプロンプトでシコシコってのは駄目?
インストールが簡単なNetBeans
NetBeansはいいよ。遅いけど。
503デフォルトの名無しさん:03/12/01 10:57
今javaの勉強をしているのですが先ほどから詰まってしまっています
本を読むとクラスは別々のファイルに分けて記述できる、ということですが
上手くいきません、例文を写してコンパイルしようとしてもエラーが出てしまいます
エラーの内容を見てみるとmainメソッドを含むファイル以外に記述したクラスの変数やメソッドを読み込もうとするところで
「シンボルを解決できません」のメッセージが出ているようです
なぜなのでしょうか?

JDKをインストールして環境変数を設定してjavacコマンドが使えるようにしてして適当な場所にフォルダを作って「cd」でそこに移動してjavacでやっています
本を見ると各クラスをそれぞれ別ファイルに記述した場合mainメソッドを含むファイルを対象にしてjavacコマンドを使うように書かれていたのでそのようにしています
もちろんファイル名はクラス名と対応させています
見直したところソースファイルの記述は間違っていないようだし
上手くいかない理由はどのようなことが考えられるでしょうか?
よろしくお願いします

今まで一つのファイルにすべてのクラスを記述していたときは上手くいっていました
>>502
1.4.2 + 3.5.1は、そんなに遅くない。ただしメモリは192MB以上必要。
初心者っていうのは、質問の仕方も初心者なんだよな。
状況がさっぱりわからん。
いや、説明しようとしてる努力はみとめるが。
>>503
それら複数のファイルは同じディレクトリの上に配置しましたか?
507デフォルトの名無しさん:03/12/01 11:03
>>505
すいません、やっぱりわかり辛いですか・・・

>>503
もちろん同じディレクトリに入れてます
508デフォルトの名無しさん:03/12/01 11:06
Y氏 好循環  I氏 悪循環  (日本)
 (健康体)  (喘息)

1.(神が喘息であるかないかを決める)
  Y        I
2.喘息でない人  喘息の人は
は体力がある   体力がない
Y I
3.        行動力、
         五感(嗅覚)が鈍り感性が変化
         する
  Y        I
4.神は異常な感性の人間は本来人に迷惑をかけるか

ら外に出てはいけないと思っている。
Y I
5.変化なし    アトピーになる
Y I
6.正常な感性   外に出なくなりさらに異常な感

         性になる
Y I
7.正常な人間    異常な人間(レッテル)
509デフォルトの名無しさん:03/12/01 11:07
Y I
8. 死
  Y        I
9.      来世
Y I
10.神は異常な人間は人に迷惑をかけるので行動を抑

制する必要がある
Y I
11.神は異常な人間は人に迷惑をかけるので行動を抑

制する必要があると思っている。
Y I
12.神が喘息であるかないかを決める
  Y        I
13.喘息でない   喘息である
  Y        I
     1.に戻る

神は事態の収拾に必死、頑張れよー。
510デフォルトの名無しさん:03/12/01 11:08
アトピー性皮膚炎の治し方

行動力=ガッツ=体力

アトピー性皮膚炎の患者は、
感覚の鈍い人間が多い。
それはなぜか。
幼少期喘息になるから、
体力がつかないため、
五感が弱るからである。
解決方法は、
五感を強くしてやればいい。
体力をつけることですぐに五感が正常になり、
行動力も湧くのである。
五感が正常になり、体力もつけば、
アトピー性皮膚炎も不思議と消えることが多い。
>>505
私もそう思う。
余計な説明は事細かなんだが、必要な情報は書かれていない。
だから適切な解答も返ってこない。
とはいえ、なにが必要な情報で、なにが不必要かがわかれば、
壁にぶち当たることもないだろうが

そもそも、このスレが、こういった質問をするための適切なスレではないことは、
>>1-100あたりを読めば判るわけだし。

>>503
短いものならソースをさらすなり、出力されたコンパイルエラーを貼りつけほうがいい。
>>498
EclipseはSDKの中にあるコンパイラは使わないよ。
javac以外のSDKツールとかsrc.zipとかが必要だからSDKを
一緒にインストールするのが普通だけど。
513503:03/12/01 11:14
わかりました
//ファイル名Ptst1Cls.java
public class Ptst1Cls{
public void disp(){
System.out.println("this is Ptst1Cls");
}
}

//ファイル名Ptst1Prg.java
public class Ptst1Prg{
public static void main(String args[]){
Ptst1Cls dt = new Ptst1Cls();
dt.disp();
}
}

C:\Documents and Settings\ユーザー\My Documents\JAVA\ファイルを二つに分ける>java
c Ptst1Prg.java
Ptst1Prg.java:3: シンボルを解決できません。
シンボル: クラス Ptst1Cls
場所 : Ptst1Prg の クラス
Ptst1Cls dt = new Ptst1Cls();
^
Ptst1Prg.java:3: シンボルを解決できません。
シンボル: クラス Ptst1Cls
場所 : Ptst1Prg の クラス
Ptst1Cls dt = new Ptst1Cls();
^
514503:03/12/01 11:14
>>513
です、よろしくお願いします
コンパイルできた。
WindowsXP j2sdk1.4.2_02
>>513
Ptst1Cls.javaファイルはコンパイルできまていますか?
もしPtst1Cls.javaファイルがコンパイルできなければ
ファイル名に大文字/小文字の間違いはありませんか?
>>470
C言語などの他のプログラミング経験があるなら入門書もいらんのだが
518デフォルトの名無しさん:03/12/01 14:08
アプレットビューアのフレームの大きさを,
描かれる物の大きさ(例えば,正方形とか)の応じて
臨機応変に可変できるように行いたいのですが,例えば,ソースの中に
<APPLET CODE="sample.class" WIDTH=1000 HEIGHT=500></APPLET>
といったように記述しないとsample.javaのファイルをappletviewerコマンド
で実行できません.そしたら横方向に1000ピクセル,縦方向に500ピクセル
のフレームを最初から指定したことになり可変できません.
どうしたら描くモノの大きさに依存するようにフレームを作成できるのでしょうか?
どなたか宜しかったら教えて下さい.


アプレットを使ってクライアント側にあるファイル(textやcsv)を読み取って
ブラウザにその内容を表示するプログラムを作れと言われたのですが
どうすればよいのか検討がつきません。

代わりの方法を含めて何か良い案か参考になるHPはないでしょうか?
520 :03/12/01 14:23
Javaは宣言だけってできないんでしょ?
相互に依存するクラスの場合どうなるの?

class A{
B b;
}

class B{
A a;
}
みたいの。
前方宣言しなくてもコンパイルできるの?
エラーにならないの?
>>520
> 前方宣言しなくてもコンパイルできるの?
できる。

> エラーにならないの?
ならない。

言語仕様に従ったコンパイラなら。
522 :03/12/01 14:55
>>520
ありがとう。
でも同じファイルじゃないと無理とかある?
> 言語仕様に従ったコンパイラなら。
この部分が重要だな。
現実にはいかに言語仕様にしたがわないコンパイラがあることか。
>>518
ブラウザとは別に、別のウインドウを開くというやりかたはできないかな。
>>519
アプレットに署名する必要があったとおもうよ。
それかMSの以前のVMなら、セキュリティホールがあるから、そこをつけば、
クライアント側のローカルなファイルを読み出すことができたとおもうよ。
>>523
> > 言語仕様に従ったコンパイラなら。
> この部分が重要だな。
言語仕様でどの部分で >>520 に書かれてるんだ?
Sun の javac は >>521 のような挙動をするが。

> 現実にはいかに言語仕様にしたがわないコンパイラがあることか。
C++ とかの惨状みるとそーゆーふーに感じるかも。
526 :03/12/01 15:37
>>521
番号間違えた。ありがとう。
>>522
ない。
そういうコードを使ったデザインパターンもあるくらいだしな。
528 :03/12/01 16:24
>>527
たびたびありがとう。
529 :03/12/02 23:16
BigDecimalって何でしょうか?
どういうときに使うのでしょうか?

ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/math/BigDecimal.html
530デフォルトの名無しさん:03/12/02 23:34
今、redhat8.0使ってるんだけど、iアプリってlinuxからシュミレートできるの?だれか教えれ
>>529
double型の精度、桁数に不満があるとき
×シュミレート
○シミュレート
http://browncat.org/linux/iappli.html
>>532だと語弊があるような。
2進数では正確に表現できない数(0.1とか)を扱うため。
535デフォルトの名無しさん:03/12/05 00:57
|               http://1.??
|  |              http://1.??
|  |              http://1.??
|  |            http://1.??????
|  |          http://1.??????????
|  |      http://1.??????????????????
|  |    http://1.??????????????????????
|  |  http://1.??????????????????????????
|  |http://1.??????????????????????????????
|  |http://1.??????????????????????????????
|  |http://1.??????????????????????????????   スライムですが、何か?
|  |http://1.??????????????????????????????
|  |http://1.??????????????????????????????
|  |  http://1.??????????????????????????
|  |      http://1.??????????????????
>>529
Doubleは2進法で、BigDecimalは10進法で数値を扱います。
なので2進で無限小数に達してしまうような値をBigDecimalは正確に表すことができます。
BigDecimalはdoubleと比べ桁数がばかにならないけど
あそこまでつかうってことはめったにないかな

今、for文ってやつ学んでます
539 :03/12/06 03:26
下の文で、コマンドラインから入力したファイルを読み込むのではなく、
直接 FILE NAMEを入れた形で読み込ませたいのですが、どうすればいいんで
しょうか?直接読み込ませたい FILE NAMEはc:\javabook\sample.txtです。
540 :03/12/06 03:26
import java.io.*;

class FileReaderSample
{
public static void main(String args[])
{
try
{
// FileReader クラスを作成する.
FileReader f = new FileReader(args[0]);
//BufferedReaderオブジェクトを作成する
BufferedReader br = new BufferedReader(f);

// ストリームの最後に到達するまで文字を読み取って出力する.
String s;
while ((s = br.readLine()) != null)
{
// 文字を出力する.
System.out.print((String)s);
}

// FileReader オブジェクトを閉じる.
f.close();
}
catch (Exception ex)
{
System.out.println("Exception: " + ex);
}
}
}
>>539
FileReaderのコンストラクタに直接指定すれば?
\は\\に
542チ@:03/12/06 03:39
>541
早速ありがとうございます。
やってみたのですが、下のようにエラーが出てしまいました。

C:\javabook>javac FileReaderSample.java
FileReaderSample.java:5: ')' がありません。
public static void main(String c:\\javabook\\sample.txt)
^
FileReaderSample.java:5: \92 は不正な文字です。
public static void main(String c:\\javabook\\sample.txt)
^
FileReaderSample.java:5: \92 は不正な文字です。
public static void main(String c:\\javabook\\sample.txt)
^
FileReaderSample.java:5: \92 は不正な文字です。
public static void main(String c:\\javabook\\sample.txt)
^
FileReaderSample.java:5: \92 は不正な文字です。
public static void main(String c:\\javabook\\sampletxt)
^
FileReaderSample.java:30: ';' がありません。
}
^
エラー 6 個
(;´Д`)
544?@:03/12/06 03:48
>539
c:\\javabook\\sample.txtって入力するってことですよね?
>>544
勉強してください。
546_:03/12/06 04:03
>>542

// FileReader クラスを作成する.
FileReader f = new FileReader("c:\\javabook\\sample.txt");
//BufferedReaderオブジェクトを作成する
547?@:03/12/06 04:13
>546
ありがとうございます!ちゃんと表示されました。
ただ、コマンドラインから入力していたときはテキストファイルどおり、
改行されたかたちで表示されていたのですが、直接読み込ませた場合だと
改行されずに表示されてしまいました。
改行したかたちで表示させたいのですが、どうすればいいでしょうか?
重ねて質問で申し訳ないのですが、どうかお願いします。
548547:03/12/06 04:29
すみません、なんでもないです。
いい風味・・・
550デフォルトの名無しさん:03/12/06 22:46
ButtonやTextFieldなどのあるアプレットから
Frameベースの別ウィンドウにアプレットのコンポーネントを
全部渡して、別ウィンドウを閉じたらそのコンポーネントを
アプレットに戻して、初期状態にしようとしたところアプレットの
レイアウトがメチャクチャになってしまいました。
コンポーネント管理はアプレットから独立したインスタンスにさせてる
のですが、それでも上手くいきません。
この場合は、ウィンドウの作成破棄ごとに、コンポーネントのインスタンスを
全部作り直さないといけないのでしょうか?
551550:03/12/06 22:49
簡単な手順を説明すると

アプレットremoveAll→別ウィンドウのインスタンス作成→別ウィンドウadd→別ウィンドウshow

別ウィンドウremoveAll→アプレットadd→別ウィンドウdispose

という感じです。
連続でスマソ。
552デフォルトの名無しさん:03/12/07 00:18
初心者の本当に恥ずかしい質問でごめんなさい。
DOS上でのCLASSPATHの仕方がよくわかりません。

set CLASSPATH=%CLASSPATH%;.

こんな感じじゃなかったでしたっけ?
いくらやってもコンパイルエラー。
こんなバカな私に、回答してくれる方いらっしゃいますか?
>>552
【初心者】Java質問・相談スレ37【大歓迎】
http://pc2.2ch.net/test/read.cgi/tech/1070159693/
>>552
あってるような気がする。
ちなみに下記の検索エンジンで「DOS CLASSPATH」ってのを検索するといろいろでてくるから、参考まで。
ttp://www.google.co.jp/
このスレを否定するわけではないが、ネットを検索すればいろいろ情報は転がってる。
そっちを調べてみてうまくいかないようなら、コンパイルのときのエラーメッセージをそのまま貼り付けて再度質問したほうがよいように思われます。
>>552 わけわかんなきゃ、javacを実行するときに -classpath . をいれておけばいいよ。
つーか、大体、環境変数CLASSPATHを使うのはSunも推奨していない。

話それるけど、set CLASSPATH=%CLASSPATH%;. が必要な状態って
それ以前にカレントディレクトリを含まないCLASSPATHが定義されていて
デフォルトのユーザクラスパス(カレントディレクトリ)が上書きされている
状態だよね。自分で設定して忘れているってのはのぞいて、未だにそんな
ことするインストーラってあるの? 昔はAdobeのフォトデラックスとかあったけど。
557デフォルトの名無しさん:03/12/07 05:19
EJBって何でしょうか?
使う目的と言うか利用すればどういったことができるのでしょうか?
558デフォルトの名無しさん:03/12/07 05:32
>>557

複雑で遅いウンコなサーバサイドアプリケーション(Webがインターフェースとは限られない)構築フレームワークの総称です
>>557
リレーショナルデータベースのデータをオブジェクトにマッピングするもの。
560デフォルトの名無しさん:03/12/07 06:28
>>558
無意味

>>559
意味不明
>>560
要勉強。
EJB以前。
>>558
サーバー再度じゃなくても良いんじゃ?
>>559
それが目的なんだったらORマッピングのほうがお手軽。
>>561
意味不明

EJBは分散っていうのが売りやと思うけどちゃうか?
EJBの目的はSIerをだまくらかして、IBMやWeblogic、その他
EJBコンポーネント販売会社が儲かるためにある。
>>562
ORマッピングのひとつだろ。
>> リレーショナルデータベースのデータをオブジェクトにマッピングするもの。
> それが目的なんだったらORマッピングのほうがお手軽。

バカなことを言ってることに気付け。
>>562
分散の他にも、トランザクション管理が楽なのがいいんじゃないの?
>>564
バカだった。
それが目的なんだったらORマッピングに特化したシンプルなもののほうがお手軽。
あってるか?
567デフォルトの名無しさん:03/12/07 17:48
Swingを使って簡単なログ表示プログラムを作ってるんだが。
JTextPaneをJScrollPaneでラップして、JTextPaneにテキストを
追加する度にスクロールバーの位置を一番下にしようとしたら
なぜか、テキスト1行分ぐらい上に来ちゃって、その度に
スクロールバーをマウスで動かすハメになる
んだけど、これって一般的な対処法とかある?
568デフォルトの名無しさん:03/12/07 18:08
win2000でやっているんだけど本にWIN98でコンパイルの仕方しか載ってない。
WIN2000ではどうやってコンパイルすればいいですか?コマンドプロントで出力
しても駄目なんです。
>>568
「駄目なんです」がどういう状況を指すのかわからん。
何かエラーが出るのか?
打ったコマンドとソースと他にやった設定があれば書け。
情報が少なすぎでこれでは誰にも答えられんぞ。
570デフォルトの名無しさん:03/12/08 00:32
>>562

まあ具体的な機能としては、分散だろうな。
しかし真の目的にはSIerを騙すことなのは間違いない
>>570
EnterpriseJavaBeansっていう名前がそもそもいんちきクサイな。
572デフォルトの名無しさん:03/12/08 01:24
>>571
今ふと思ったんだが
javaBeansってコーヒー豆ももじったのか?
>>572
もちろんだな。
まだ初めてプログラムの勉強してるんですが本に載っているプログラムを丸暗記した方がいいですかね?
暗記じゃなくて片っ端から実際に打ち込め。
>>574
丸暗記するくらい打ち込め。
ただし、意味がわからないと丸暗記は難しい。
577デフォルトの名無しさん:03/12/09 11:29
暗記する必要があるのは for (ほにゃ; ほにゃ; ほにゃ) { ほにゃにゃ; }
とかいう流れだけで、ほにゃの中身まで暗記してもしょうがない。
578574:03/12/09 12:46
わかりました。がんがります。
Javaてどこで入手すればいいのですか?
581デフォルトの名無しさん:03/12/09 19:17
質問ですが、intの配列以外の
参照の仕方はどうするのでしょうか。
>>581
質問ですが、intの配列の
参照の仕方はどうするのでしょうか。
たとえば
int data1[] = new int[4];
int data2 = 10;
void test(int data[])  

↑この関数に、data1じゃ無くdata2を渡したいんですが…
渡せないでしょうか?

いくら、金を積んでも渡せねぇ
ぁぁ、わたせねぇだ・・・
>>583
上はint[]型、下はint型とタイプがそもそも違い、
下のint型はプリミティブ型という特別な型として扱われるので
リファレンスとして渡すことはできないと思います。

不変オブジェクトでよければ、
Integer型などを使うか、あるいはintをラッパする独自の型を作ってはどうでしょうか。
ただ何の必要があって、>>583のようなことをしたいのか分からないので
これ以上は何とも言えませんが。
>>583
もっとやりたいことを具体的に書くべきだな。
君の知ってるやり方は、test の結果を data1 「に」渡すやり方で、
多分 test の結果を data2 「に」渡したいんじゃないか?
もしそうなら、
・void じゃなくて int 型のメソッドにすればいい。
・あるいは >>585 曰くのラッパクラスを作る。
・あるいは int[] tmp = int[1]; を渡して data2 = tmp[0]; にする。
上から順に推奨される方法。ちなみに最後のは嫌われる。
587デフォルトの名無しさん:03/12/09 23:15
質問失礼します。
テキストエリアの中身を
TextArea ta=new TextArea();

FileWriter w=new FileWriter("test.txt");
w.write(ta.getText());

として出力しているのですが(直接関係の無いところは省略させてください)、
作成されたテキストファイル(メモ帳)では改行が↑のような文字(コピーすると改行されるので改行文字だと思うのですが)
で表示されてしまいます。テキストエリアの改行をそのままメモ帳に出力するには
どうすれば良いのでしょうか。よろしくお願いします。
>>587
改行コードには OS の違いなどにより、3種類ある。'\r', '\n', "\r\n" だ。
君は多分 Win なのだろうが、Win の改行コードは通常 "\r\n" と 2文字続く一方、
その例では \n のみが出力されているようである。

TextArea の値は String で表されている。
String が通常 "\n" で区切られているため、そのままファイルに出力されている。

いまどきのテキスト編集ソフトは、どの OS で作られたテキストも適切に改行してくれるが、
メモ帳はそうではないのであろう。どうしても改行コードを合わせたければ、

StringTokenizer st = new StringTokenizer(ta.getText(), "\n", true);
while (st.hasMoreTokens()) {
 String token = st.nextToken();
 if (token.equals("\n")) {
  w.write("\r\n");
 } else {
  w.write(token);
 }
}
こうしてみたらどうか。
>>572
Jarだってコーヒー豆瓶をもじった
590デフォルトの名無しさん:03/12/09 23:37
すいません
フィールドで
String s = "s";
int i = 1;
などはわかるけど

ArrayList al
Vector v;
などのような書き方で
特定のクラス名の変数を取ってるのは何をしているのでしょうか?
Stringだってクラスだぞおい。特殊だが。
まあもっと入門書や入門サイトを落ち着いて読め。
というか実際に打ち込んでコンパイル・実行してみろ。
そのほうが理解が早い。
592デフォルトの名無しさん:03/12/09 23:43
returnってよく分かりません
public kiesan(int a, int b);
return a*b; (適当に書いたのでコンパイルエラーは無視)
とかなら計算した結果を返すってわかるのですが

特に計算しないものをreturnする意味がよく分かりません
>>592
ただの return は返すのではなく「返る」だと思えばいい。
「それではスタジオにお返ししまーーす」と同義。
594デフォルトの名無しさん:03/12/10 00:06
>>593
でもreturnがなくても
帰るんじゃないの?

returnがない処理とある処理
ではメソッドで処理されたあとに
どう違ってくるのかがわかりません?

なければそのメソッドを呼んだ側は
呼び出したまんま処理がとまってしまうのでは?
>>594
ほとんど屁理屈ですな。
return を使えば中途抜けができる、という意味。
中途抜けをするための文を、最後に書くのも一切書かないのも同じこと。
596587:03/12/10 00:41
>>588
ありがとうございます。
597デフォルトの名無しさん:03/12/10 23:13
Win2000にtomcatとIIS入れてJSPとASPって同居できます?
・・・なんか言い方わるいけど・・・
なあ、
【初心者】Java質問・相談スレ37【大歓迎】
http://pc2.2ch.net/test/read.cgi/tech/1070159693/l50
と分かれている意味ってあるの?
無いんだったら向こう側に移行しないか?
>>598
>>1 の夢が実現する前は待ってやろうよ(嘘
>>597
問題ないんじゃない?
601デフォルトの名無しさん:03/12/11 19:12
すいません、
今Tomcat3.2.3から4.1.29にVerを上げたのですが
今まで文字化けしなかった
― (全角ハイフンかな)
だけが文字化けするようになってしまったのですが
どのように補正すれば直るのでしょうか。
使用している文字コードは何?
コンパイル時の文字コードは?
こいつらが問題だよな。

−〜¢£‖¬

>>601
― が化ける?
− こっちのほうじゃなくて?
>>602
すいません情報が足らなさ過ぎでした
文字コードはShift_JISです
コンパイルはEclipseのデフォルトの設定なんですが・・・なんだかわからないです

ただ今調べたのですがメール送信をする個所までは
文字コードが 0x2015で来ているのですがメールを送信すると化けていることから
メール送信の時に化けているのはわかるのですが
そこでどのようにすればいいのかがわからないのです・・・
ttp://www.javadrive.jp/javamail/smtp/index.html
あんま貼っちゃまずいんすがここのメールサンプルを使用しています
>605
Eclipseのデフォルト設定だと Shift_JISじゃなくてMS932じゃないかな。
Windowsだよね?
>>606
そうです、Windowsです
ついでに環境書き忘れてました
JDK1.4.1_05
TOMCAT4.1.29
です
>607
本当に化けてる文字は U+2015 ですか?

もうひとつ。変わったのはTomcatのバージョンだけですか?
Java2 SDKのバージョンも以前と変わっていませんか?
>>608
連続でレスなどしてすいません
まったくそのとおりでJDKも1.3→1.4.1に上げました
文字は
charAt で ― を捕まえて
System.out.println( (int)'―' );
結果:8213 → 16進数に変換で 2015
となるのですが間違ってますでしょうか
>>607
・ファイル保存はWindows上でShift_JIS
・コンパイル時の文字エンコーディング指定はWindows-31J
・Servletのresponse.setContentType()やJSPの<%@ page contentType="・・・" %>
 の文字エンコーディング指定はWindows-31J
でやってみれ。
JVM1.4.1からはShift_JISの扱いが変わって、全角ハイフンや全角にょろ(〜)の
マッピングが変更になった。
4.1.29ってHTTPヘッダを強制的にcharset=ISO-8859-1にしちゃうバグがあるんだろ?
TOMCAT開発MLで問題になってるってどっかで見た記憶が。
>>607
そこらへんのバージョンからから文字コードの指定が厳しくなった
contenttypeでcharsetを指定してるならWindows-31Jにするべし。
C言語ある程度できる人にとってのJAVAのお勧めの参考書ないでつか?
まぁ、あくまで学校で習った程度なんで線形リストとかツリー処理とかぐらいしかできんのでつが・・・
>>613
独習Javaやっとけ。
4.1.29 は日本語は無理。
>>613
いや、独習シリーズはやめとけ…。
>>611 >>615
ServletやJSPで不具合でる?
静的HTMLは日本語化けちゃうけど・・・・
>>616
なんで?
Cができる人なら勧めるけど。
619デフォルトの名無しさん:03/12/12 15:44
Javaだからということではないのですが
配列と配列を足して新しい配列にするという
方法でいい方法ってないんでしょうか
String [] str1 = new String[]{ "北", "東" };
String [] str2 = new String[]{ "南", "西" };
のような配列2つを1つの配列にまとめるような
綺麗なやり方ってどんなプログラムにすればいいのでしょうか

String型みたいに+=で繋げるようなことできないでしょうか
>>619
あんまり綺麗な方法ってないなあ。
String[] target = new String[str1.length + str2.length];
System.arraycopy(str1, 0, target, 0, str1.length);
System.arraycopy(str2, 0, target, str1.length, str2.length);
>>620
おお、すごいですね
自分はどうしても毎回For文やらWhileで回すという
考えしか見えなかったので、ソースコード量が軽減
するだけでも嬉しいです
ありがとう
622日立製作所 ◆twq9BhEA3g :03/12/12 18:23
興味有りage
623デフォルトの名無しさん:03/12/12 19:04
>>620
クローニング問題は解決しているか?
(無料)Java e-Learning system(神奈川大学 工学部 経営工学科 情報システム工学(内田)研究室) http://e-learning.inf.ie.kanagawa-u.ac.jp/e-learning/index.html

【ユーザ登録開始とテストシステム開始のお知らせ】
2003年11月17日よりユーザ登録を開始しました。
テストを受けたい方は左のメニューからユーザ登録してください。
ユーザ登録するにはメールアドレスが必要になります。
テストは12月12日(金)正午に公開 (第1章から第13章初級のみ)いたしました。
625デフォルトの名無しさん:03/12/12 23:20
Javaの変数名を取得する方法ってないでしょうか。
例えば

String text01 = "aaa";
String text02 = "bbb";

とある場合、

if(hoge.equals(text01)) {
・・・・・
}

スコープの中で"text01"という文字列が取得したいのです。
(Javascriptとのインタフェースの汎用化を考えてます)
詳しい方ご教授願えないでしょうか。
>>619
長さが変わる可能性があるのに配列なんか使うなよ。
ArrayList使え。そうすればArrayList#addAll()で解決。
>>625
無理。
628デフォルトの名無しさん:03/12/13 00:06
>>625
無理じゃない。リフレクションを使え。
>>628
ローカル変数の取得の話じゃないのか?
ソースコードそのものをファイルI/Oで読み取るとか。
java.lang.reflect.Member#getName
あの〜。スレ違いだと思いますが求人で会社でJAVAを未経験で習うようですが
会社で未経験で実践して上達した方がはやいですか?
>>632
なんと比べてか・・・
>>632
もともとここは、立てられた時点で削除されてもおかしくなかったような重複スレだから、
スレ違いかどうかは、もはやどうでもいいと個人的には思う。

あっちの正式なJava質問スレとは違って、ここの>>1には初心者のためのテンプレもないから、
このスレは人々を無駄に混乱させるだけで如何なる利益ももたらさないスレといえる。

故に削除人にスレストを掛けてもらうか、あるいは
このまま、>>632のような質問で1000を目指すのも一興かも知れない。

だがまあ、そんなことはともかくとして、>>632
せめてもう少し分かりやすい日本語で質問を書いてくれるとありがたいのだが。
>>632
質問ネタがマ板ネタだな。
マ板で聞いて見れ。
しかしCマンセーCOBOLマンセーアセンブラマンセーなどアンチJavaな古っちい香具師ら馬鹿りだから気をつけれ
CMAGAZINE 2002/09月号のjava sound apiを使ったサンプルプログラムが上手くコンパイル出来ません。
WinXP JDK1.4.2 です。

コンパイルでは何もエラーが出ないのに、実行すると
java.lang.NoClassDefFoundError: LinePlayer
Exception in thread "main"
と出ます・・・
637デフォルトの名無しさん:03/12/13 16:44
638デフォルトの名無しさん:03/12/14 22:15
mainメソッドって
参考書などはほぼ使用されていますが
実際、プログラム開発とかする時にはあまり使われているとは思えないのですが?

実際はみんなあんまり使わないの?
それはどういう意味なんだろ…
>>638
mainが無くてどうやってアプリケーション起動するんだ?
自分で作る場合、既に用意されている場合、形態はいろいろだがmainは必ずあるだろう。
641デフォルトの名無しさん:03/12/15 01:19
メソッド内の
変数と引数の変数
ではメソッド内における変数の位置的には同じ位置にいるのでしょうか?
それとも変数の優先順位とかあるのでしょうか?

つまり
static int keisan(int a,int b){
int c;

}
とあれば
そのメソッドの変数の位置関係は
int a;
int b;
int c;
と書かれていると同じでしょうか?
>>641
位置関係を知ってどうするつもりだ?
643デフォルトの名無しさん:03/12/15 01:25
いや変数に優先順位というのがあるのかないのかふと思っただけ
>>643
優先順位って何?
645デフォルトの名無しさん:03/12/15 01:36
優先順位は無視

static int keisan(int a,int b){
int c;

}
とあれば処理するマシンがこのソースを読み込んだときに
int a;
int b;
int c;
変数としては書かれているのと同じなの?

それとも変数と引数の中の変数は
同じ変数でも全く別物として認識するの?
>>645
「同じ」と「別物」の判断基準がわからん。
>>645
同じだよ
そのメソッドでは変数として引数内で宣言された変数も
中で宣言された変数も同じ変数として認識する
だから
static int keisan(int a,int b){
int b;
は同じ変数宣言を二度することになるからNGになる

>>646
もっと読解能力を身につけましょう
>>647
分解能が低くて仮引数宣言と変数宣言がごっちゃなら、その解釈もありだな。
649デフォルトの名無しさん:03/12/15 10:46
>>636
Cマガ読んでる香具師多いな。

おい、お前ら
JavaのためだけにCマガ読んでる香具師いるか?
>>645
関数ってなんだかわかってる?
数学やったことあるならわかると思うんだけど。
特に、多変数関数とかわかる?
>>645 は Java に参照渡しがあると勘違いしている悪寒。
>>650
いまどき数学の関数をもちだすやつ
>とあれば処理するマシンがこのソースを読み込んだときに

この辺もイマイチ理解していないことを露呈しているな。
コンパイラがソースを、なのか? VM がバイトコードを、なのか?
それとも AT互換機がソースを、と本気で誤解しているのか。
>>640
> >>638
> 形態はいろいろだがmainは必ずあるだろう。

ほとんど無いだろ。
Webアプリケーションに main は不要。Jakartaで配布されているものも main なんか
無いに等しい(当たり前だが)。
655649:03/12/15 15:16
このスレみている香具師でCマガ読んでる香具師は少ないのか。
>>640
Appletも自力でmain書かずに動く。
EJBも。
あと、TemplateMethodパターンでmain()をテンプレートに
した場合はかかなくて済むとかw
まぁ、>>638がとんちんかんなコトいってることには間違いない
658デフォルトの名無しさん:03/12/15 21:57
デバッグって具体的な作業として何をするのでしょうか?
「ログとかを見て値がどこま通ってるか確認する」のはわかりますが
その他に「デバッグ」でバグを取るためにどういった事をするのでしょうか?
>>658
バグが発見されたとして、そのバグを退治するのがデバッグ。
バグを取るためには
・バグの現象を特定する
・バグの原因を特定する
・バグの原因を取り除く
という作業をする。
初心者は、特に、最初の「バグの現象を特定する」をやらない。
「よくわからないけど、うまく表示されない」
とかな。
バグの現象が特定できれば、解決できたも同然。
だから、この板では、「うまく動かない」という質問で、どう「うまく動かない」のか説明しろとキツくツッコまれるわけだ。
660デフォルトの名無しさん:03/12/15 22:47
>>659
その説明はよくわかるけど
結局はデバッグ作業でバグを特定するために
「ログとかを見て値がどこま通ってるか確認する」
以外にどういった方法があるのかと言いたいのだろ?
CマガはJXTAのために買って読んでる。
662デフォルトの名無しさん:03/12/16 15:32
あのぉ・・・SUNのjava認定資格なんですけど。
取ると役に立つもんですか?
就職・転職に有利になったりとか?資格手当てでたりとか?あるんでしょうか?

http://suned.sun.co.jp/JPN/certification/

>>662
資格手当てなんか期待するな。
まぁ、資格一般のことだけど、「ないよりは有利」程度
ほかの条件が優れてればそっちが優先される。
664デフォルトの名無しさん:03/12/16 17:53
はじめまして。
JDK1.3で、Webで動かすJAVAアプレットを最近やり始めた者です。
(1.4はDLしてもなぜかインストーラが止まりました…)
JAVA関連ページを検索しては読んでは、勉強してます。
いわゆる、お絵描き掲示板(の、お絵描きアプレット)
らしきものを作ってるんですが、壁にぶつかってしまいました。
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class program1 extends Applet{
  Graphics graphics;
  Image image;
  int mx,my;
  public void init(){
    addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e){
        mx = e.getX();
        my = e.getY();
        image = getImage(getDocumentBase(), "nanashi.png");
        graphics.drawImage(image, mx, my, this);
      }
    });
  }
}
だいぶ端折ってますけど
ようするに、マウスをクリックした座標にnanashi.pngを表示させたいわけです。
ですが、javacでコンパイルすると
program1.java:14 シンボルを解釈処理できません。
シンボル: メソッド drawImage (java.awt.Image,int,int,<anoryumous java.awt.event.MouseAdapter>)
位置  : java.awt.Graphics の クラス
          graphics.drawImage(image, mx, my, this);
と、エラーが出てきてしまいます。
initメソッドの中ではdrawImageメソッドは使えないのでしょうか?
graphics.drawImage(image, mx, my, this);

↑この呼び出しの最後の this ってのは、program1 クラスのインスタンスじゃなくて
MouseAdapter を拡張している無名クラスのインスタンスを指すんじゃないか?
667デフォルトの名無しさん:03/12/16 23:09
パッケージのjp.co〜の上のディレクトリの設定ってどこでやっているのでしょうか?

サーバのフォルダには例えば
c\〜\〜\co\jp\〜
と言う風にCドライブからcoの上の階層も存在していると思うのですが
668デフォルトの名無しさん:03/12/16 23:16
質問です
引数の(string s)や(int i)などは
文字列や数値などを代入ということはわかるのですが

たまに(classA ca)のように実際使っているクラスなどを引数にしている物があるのですが
これの意味がわかりません
教えてください
>>668
Stringは、クラスだよ?
ならば、method(ClassA ca)は、method(String s)と同じことさね。
670デフォルトの名無しさん:03/12/16 23:38
>>669
ありがとうございます

両方とも文字列を代入ってこと?
では、ある時はString、ある時は自分で作ったクラスとか
使い分けする理由って何でしょうか?
>>670
あなたがなにが分かっていないか、私にはわからないから
なにを説明すれはいいのかわからないが。

Javaにおいて、intやcharなどの一部の型は、プリミティブ型と言われる特殊なものでね。
Stringなどの参照によってあらわされるクラスとは、色々と違いがある。

…って、そんなことを質問しているようではないしなあ。
なにが、わからんの?

>両方とも文字列を代入ってこと?
とりあえず、それに対する答えはNoだ。

>では、ある時はString、ある時は自分で作ったクラスとか
>使い分けする理由って何でしょうか?
んー、あるときはStringが必要で、あるときは自分で作ったクラスが必要だから。
というような回答では、きっと納得しないんだろうなあ。
String s は、文字列クラスへの参照変数
ClassA ca は、ClassAクラスへの参照変数
673デフォルトの名無しさん:03/12/17 00:39
doGetとdoPostの違いってなんでしょうか?
WebブラウザがWebサーバにデータを送る方法には、2種類あって、
ひとつは、GET、ひとつはPOST。

doGet, doPostもこれに対応したもの。
ブラウザがGETでデータをサーバに送信したときには、
サーバ側のJ2EEはdoGetメソッドを起動して、送られてきたデータを処理するし、
ブラウザがPOSTデータをサーバに送信すれば、
サーバ側のJ2EEはdoPostメソッドを起動して、送られてきたデータを処理する。

そんな感じ。
>>674
いまいち。

HTTPリクエストのメソッドは2種類じゃなくて7種類。
doGetはGET、doPostはPOSTのリクエスト時に実行される。

「サーバ側のJ2EE」・・・意味不明だな
サーバー側で動いてるJ2EEってことじゃないの?
>>667
逆。パスの通ってるディレクトリから jp\co\hogehoge\myproject\ 云々と続く。
jar (zip) に突っ込むときも同様。

>>676
クライアントで J2EE が動いてても意味なし、二重表現的で冗長ってことが言いたいのでは。
「サーブレットコンテナ」が適切か 初心者向けには「サーバ側」
678デフォルトの名無しさん:03/12/17 21:23
public int Class1{
int a = 4;
int b = 8;
メソッド1
return 〜;
}

public int Class2 extends Class1{
int b = 10;
int c = 12;
メソッド2
return 〜;
}
とあった時、
public int Class2{
int a = 4;
int b = 8;
int c = 12;
メソッド1
メソッド2
return 〜;
}

と書いてるのとイコールでしょうか?
違います。
680デフォルトの名無しさん:03/12/17 22:13
>>674
というかなんでWebサーバにデータを送るのに二種類もあるのでしょうか?
というかそれぞれの処理でPOSTとGETを使い分けているのもいまいちよくわかりません
>>678
どっちもコンパイル時にエラーになる、という意味では同じ。
682デフォルトの名無しさん:03/12/17 22:42
字句解析の説明してるとき、トークンって何?って聞かれたのですが、
なんて説明すればいいのでしょうか?
683無職PG:03/12/17 22:53
例えば英文のthis is a pen. を isで分けたらthis と a pen. が
それぞれトークンですって具体的に説明すれば?
684初心者です:03/12/17 23:02
同一ディレクトリに複数のJAVAファイル(myGraphics.java,myConsole.java,
H.java, Simulation.java,PumaKine.javaなど20個)があり、それらをまとめてコンパイル
したいのですが。mainを含むファイル(LISP.java)は、前述の複数のJAVAファイルの
classをimportする形で使っています。また、複数のファイルも互いに他のclassを
利用しています。
685デフォルトの名無しさん:03/12/17 23:04
staticの存在意義って何でしょうか?
なぜstaticがあるのとないのと使い分けるのでしょうか?
686初心者です:03/12/17 23:05
<Simulation.java>
import java.awt.*;
import java.io.*;

public class Simulation extends PumaKine
{
PumaKine pk= new PumaKine();
myGraphics gr= new myGraphics();

(以下略)
<myGraphics.java>
import java.awt.*;
import java.awt.event.*;
import myConsole;
import H;

public class myGraphics extends Frame
{
(以下略)
687初心者です:03/12/17 23:05
<LISP.java>
import java.io.*;

public class LISP extends EVAL {

myConsole CS= new myConsole("main");
myGraphics gr= new myGraphics();
ERROR ee= new ERROR();
READ rd= new READ();
PRINT pp= new PRINT();
PumaKine pk= new PumaKine();
EVAL ev= new EVAL();
Simulation sm= new Simulation();
(中略)

/* main */

public static void main (String args[]) throws IOException
{

LISP lp= new LISP();
ERROR ee= new ERROR();
CELLP arg= new CELLP(lp._CELL);
EVAL ev= new EVAL();
READ rd= new READ();
myConsole cs= new myConsole("New Robot Lisp");
Simulation sm= new Simulation();
int i,j;
double xx;
(以下略)

688初心者です:03/12/17 23:06
といった感じになっています。

LISP.java(mainを含むファイル)をコンパイルすると以下のようなerror
が出てしまいます。

PumaKine.java:7: '.' がありません。
import myGraphics;
^
.\myGraphics.java:4: '.' がありません。
import myConsole;
^
.\myGraphics.java:5: '.' がありません。
import H;
^
.\myConsole.java:4: '.' がありません。
import H;
^
注: 一部の入力ファイルは推奨されない API を使用またはオーバーライドしています。
注: 詳細については、-deprecation オプションを指定して再コンパイルしてください。
エラー 4 個

どのように解決したら良いでしょうか?
689デフォルトの名無しさん:03/12/17 23:18
JavaTIPSってなんでしょうか?
690無職PG:03/12/17 23:36
>>684 LISP.javaも同一ディレクトリにありますか?
>>685 便利だからです。
・静的な関数、変数、クラスは実行開始のとき1回だけ生成される(資源節約)
・staticで宣言することにより、同一クラス内の動的スロットに依存しないと明示できる
・クラスSystemのように大域的に扱える
ただしstatic関数を濫用しないこと
クラスをsingleton(例Runtime)として作ればstatic関数を無せます。


System.out.println("aaa");とかのSystemはstaticで定義されていることにより
大域的な使い方ができます。

>>688
1.3.x用に書かれたソースっぽい。
J2SDK 1.3.1でコンパイルしてみたら?
692デフォルトの名無しさん:03/12/17 23:47
>>684
同じディレクトリで
javac *.javaとやればまとめてコンパイルできる。

ほかのディレクトリにまたがるようなやつの
コンパイルには
Antを使うことをお勧めする。

あとそのときはpackage化もしとくのがお勧め。
>>690
ちょこちょこ気になるのだが。。。

> ・静的な関数、変数、クラスは実行開始のとき1回だけ生成される(資源節約)
関数 -> メソッド
実行開始のとき -> 必要になったとき
1回だけ生成 -> 1回だけロード

> System.out.println("aaa");とかのSystemはstaticで定義されていることにより
Systemはstatic -> System#outはstatic
>>680
POSTはhttpdに対してデータを「送信する」ために、
一方のGETのほうは、httpdからデータを「取得する」ために。

POSTは、手紙を入れるあのポストと同じ。
つまり手紙などを投函する、データを送信するという意味。
GETは、文字通りhttpdからデータを、
つまりはファイルなどをゲットするためのもの。

たとえば、httpdが持つindex.htmlのファイルが欲しければ、
GET方式で「index.htmlのファイルをくだちゃい」というリクエストを送るし。

httpdに対して、まとまった量のデータ、
たとえばホームページの感想やら、アンケートへの回答など、
そういった、まとまった量のデータを送りたいときには、
そのデータをPOST方式で送信。

GET方式でのリクエストはファイルをゲットする以外にも、
辞書サイトや、検索エンジンなどで見られるように、
検索キーとかそういったちょっとした短いデータを送信するのにも使われるけどね。

まあ、なにか情報をゲットするために使われるのがGETで、
情報を送信するのに使うのがPOSTたと覚えておけばいいとおもうよ。

>>675
あーすまそ。おれJ2EEはよく知らんのよ。
Javaではリクエストを処理するメソッドが七つもあるん?
訂正さんくす。
695デフォルトの名無しさん:03/12/18 01:24
javaでボタン押下時などにメールを投げる処理
をしたいのですが、どうすればいいのでしょうか?

どういう処理が必要とか全くわからないのですが
もしそういうサイトとかあれば教えてください
>>695
JavaMail APIを使ってみてはどうかな?
そもそも曖昧な質問なのでどう答えればいいのかわかからんが。
697デフォルトの名無しさん:03/12/18 01:59
>>696
ご回答ありがとうございます

たとえばあるシステムでボタンを押下したら
自動的にあるメールが特定の相手先に飛ぶシステムって結構多いと思うのですが
その場合、今言われたJavaMail APIを使ってるケースが多いのでしょうか?

それとも違うやり方とかあるのでしょうか?
>>697
サーバサイドの話?
それとも非サーバサイドの話?

>>695の技術力や知識は如何ほど?
ボタンが押されたら何かの処理を始めるといったことはできる?
それによって教えるサイトも違ってくるようにおもうのだが。
699初心者です:03/12/18 08:48
>>690 はい、あります。
>>691 ありがとうございます。J2SDK 1.3.1でコンパイルできました。
   しかし、動作がおかしいです。Macでは動いていたのに。
>>692 便利そうですね。使わせてもらいます。
700デフォルトの名無しさん:03/12/18 09:11
>>699
jDK1.4でも、javacのオプションをきちんと指定すれば
1.3用のソースコードはコンパイル通りますよ。
■検索結果 java http://ruitomo.com/~gulab/s.cgi?k=java&o=r&l=t

プログラム(pc2.2ch) 012 【初心者】Java質問・相談スレ38【大歓迎】 http://pc2.2ch.net/test/read.cgi/tech/1071613279/
プログラム(pc2.2ch) 001 【Java初心者】今から始めるJava Part01 http://pc2.2ch.net/test/read.cgi/tech/1062422058/
ヒッキー(etc.2ch) 159 Javaについて一緒に勉強するスレ       http://etc.2ch.net/test/read.cgi/hikky/1070949822/
>>694
J2EEに限ってHTTPプロトコルのメソッドが7つあると思うのか?
HTTP1.1を勉強しる。
あ、HTTP1.1ではメソッドが10ある
704デフォルトの名無しさん:03/12/18 10:43
>>703
GET,HEAD,POST,PUT,DELETE,CONNECT,TRACE
あとなんだっけ?
705デフォルトの名無しさん:03/12/18 11:00
OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT
これくらいしか思い出せん。全部集めると神竜が願いをかなえてくれるんだよね
10種類もそれぞれどう使い分けるのでしょうか。
POSTとGETの違いもまだよくわかりません。
>>702
http://java.sun.com/j2ee/sdk_1.3/ja/techdocs/api/javax/servlet/http/HttpServlet.html
7つあるよ。
doDelete
doGet
doHead
doOptions
doPost
doPut
doTrace
708デフォルトの名無しさん:03/12/18 13:11
>>699 >>700
http://java.sun.com/j2se/1.4/ja/compatibility.html

8. J2SE 1.4.0 の Javac バイトコードコンパイラは、Java 言語仕様への準拠を
強制する点で、以前のバージョンよりも厳密になっています。この新たなコン
パイラでは、Java 言語仕様に厳密に準拠していない既存コードは (たとえ以
前のバージョンのコンパイラでコンパイルできたとしても) コンパイルできません。
J2SE 1.4.0 コンパイラの厳密性が増したことを示す例を、次にいくつか示します。

コンパイラは、名前のないネームスペースから型をインポートする import 文を
拒否するようになりました。以前のバージョンのコンパイラは、こうした import
宣言を、理論的には言語で許可されていなくても (import 句に現れる型名が
スコープ内に存在しないため)、 受け入れていました。仕様の中では、import 文
の中に単純名を含めることはできないこと、また名前のないネームスペースから
インポートを行うことはできないことが明示されています。
要約すると、次の構文は有効ではなくなりました。

import SimpleName;

また、名前のないネームスペースからネストしたクラスをインポートする次の文も、
有効ではなくなりました。
import ClassInUnnamedNamespace.Nested;

コード内でこうした問題を修正するには、すべてのクラスを、名前のないネーム
スペースから名前付きのネームスペースへ移動する必要があります。
709デフォルトの名無しさん:03/12/18 13:14
>>707
CONNECTがない
>>707
…いや>>702はJ2EEにも対応するメソッドは当然七つあると言っているのだとおもうが。

まあたくさんあってもCONNECTは予約、
DLETEも大概、使われることはないだろうけれど。
>>706
POST はクライアント側からファイル転送できる、GET はできない。
君には当面それで十分かもしれない。
>>711-712
レスありがとうございます!
>>711さんのもググりながらじっくり読んでみます
714デフォルトの名無しさん:03/12/18 21:13
あるファイルの中に書かれている文字列を読み込んで
その値をメソッドの引数に代入して
それってfilereaderで読み込んで…
しか方法がないのでしょうか?

たとえば
メソッド(String a,String b);
の引数に
あるテキストの一行目の文字列と二行目の文字列を代入したいのですが…

教えてください
>>714
FileReaderでは何か不満か?
716デフォルトの名無しさん:03/12/18 21:57
>>715
不満はないけど
方法はそれしかないの?

やり方を知ってても損はないと思って
>>716
Perl とかなら何かあるかも知れんけど
Java では定石どおりやりなさい
718デフォルトの名無しさん:03/12/19 00:01
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);

いまいちよく分からないのですが
こういう処理があった場合
具体的には引数の(props, null)のpropsには
インスタンス化されたPropertiesの何が入るのでしょうか?

Propertiesはこの段階ではインスタンス化されただけで
具体的なデータは何もないと思うのですが…
>>718
その通り。場合によっては、プロパティ名とプロパティ値を入れておいたもの
を渡すこと(例えばエンコード関係とかロケール関係とか)で、そのプロパティ
値を利用したインスタンスを返してもらうこともある、ということ。

デフォルトのプロパティ値で使うとか、サンプル用のテヌキとからなら、空
Propertiesでも充分、つうことだろね。
720718:03/12/19 00:14
FactoryMethodパターンで、引数にインスタンス初期化用の属性セット
をコレクションで渡すってのは、J2EEの世界でありがちなやりかたですの。
コンストラクタで何かやってるかもしんねえだろが
722デフォルトの名無しさん:03/12/19 00:20
>>719-720
ということは
Propertiesに書かれている中味によって
getDefaultInstanceの引数に渡す値が変わってくるって事?

もっといえば
Propertiesに書かれている設定値などを引き渡すって事?
追加されれば、わたす数も多くなる?
>>721
Propertiesのデフォルトコンストラクタは、単なる空HashTable作成ですお。

>>722
そゆことですね。Session#getDefaultInstance()が、どのような
プロパティを受け付けるのかはしらんけど。
>>723
>>718のPropertiesクラスが、java.util.Propertiesである保証はどこにもないだろう。
>>723
ふと思ったが

Session.getDefaultInstance()
Session#getDefaultInstance()

ではどう違うんだ?
>>725
> Session.getDefaultInstance()
Java のメソッド呼び出し式。

> Session#getDefaultInstance()
javadoc の @see とか {@link } でのリンクの書き方。
727723:03/12/19 00:45
>>724
そういうことかい、スマヌ。
>>725
JavaDocとかでインスタンスメソッド表記する時に#つかうのよ。
クラスメソドにには使わんらしいね。ということで、単なるマチガイ
です。ゴメンヌ。
>>727
> クラスメソドにには使わんらしいね。ということで、単なるマチガイ
クラスメソッドもフィールドもコンストラクタも全部 # 使いますが…
729723:03/12/19 01:49
ウエーンイジメルー(ノД`)
>>729
(ノД`)ε`*)チュ

(ノД`)ヾ(゚∀゚*)ヨシヨシ
731デフォルトの名無しさん:03/12/19 08:12
>>729-730
(#゚∀゚)ドキドキ
732デフォルトの名無しさん:03/12/19 22:29
サンプルソースなどで
import java.util.*;
try{
java.util.Properties pr = new Properties();

ってあるソースをよく見かけるのですが
java.util.〜をつけている意味がよく分かりません
たしかに、importしているのなら
大抵の場合はjava.util.Propertiesなどと書かなくても良さそうだね
どこにあったの?そのソース?
734デフォルトの名無しさん:03/12/20 00:36
>>733
http://www.remus.dti.ne.jp/~hori-/jtips/file.html
のiniファイルからデータを取得ってとこ
いっしょっしょ。
>>732
無視しろ
もしくはそのソースと同じパッケージに同名のPropertiesというクラスがあるのかもしれない
サーブレットの話で申し訳ないのですがhtmlより
servlet?command=open
と言う情報がサーブレットに来てString型に変換した後
if文で条件分岐させたいのですが、このString型が文字と以下のようにしても条件一致してくれません
どのようにすれば良いのでしょうか?

String str = request.getParameter("command");
if(str == "open")
 System.out.println(str);
>>737
サーブレットの話ではない。
== ではなくてequalsメソッドで比較汁
739737:03/12/20 13:51
>>738
if(str.equals("open"))に変えると無事比較できました
ありがとうございました
740ひろ:03/12/20 19:27
ほんと最近javaに手を出し始めた初心者です。
あるディレクトリの配下にあるディレクトリやファイルをUNIXのfindコマンドのように
再帰的に出力する方法を考えているのですがよりコストの少ない方法での
書き方をアドバイスもらえませんでしょうか。。
よろしくお願いします。
Runtime#exec( "find foo -name bar" );

ってか横着せずに File#listFiles と File#getName で書いてみてください。
再起ループで 5 行程度。
>>740
不格好でも自分で作って書き込んでみたら、
それを添削してくれる親切なひともいるかもね
743ひろ:03/12/20 23:39
>>741
>>742
回答ありがとうございます。
もう少し資料を漁って考えてきます。。
744デフォルトの名無しさん:03/12/21 21:33
javaでソートについて教えてください
Vectorや配列などで取得したデータを
英数字の小さい順に並び替えたいのですが
どうすればいいのでしょうか?

1,a,3,6,b,64,5,645,zz,6,aa,45

1,3,5,6,6,45,64,645,a,aa,b,zz
みたいにです
>>744
1,3,45,5,6,64,645,a,aa,b,zz じゃなくて?
>>745
いや数字の小さい順です

それと、できれば6は複数あれば複数表示したいです
無理ならば一つだけ表示でもかまいません
>>746

1, 1a, 2, 11b はどういう順でならべたい?
・数値に変換できる物とできない物に分ける
・数値は数値で、そうでないもの(文字列)はそうでないものでソート
・数値のケツにそうでないものを足す

まとめてソートしようと思ったら、Stringクラスの場合>>745のように辞書式に比較しちゃうから
>>744のようにはならない。
>>747
基本的に1→1a→1z→2
の順番でお願いします
>>744
java.util.Comparator を適切に実装して
java.util.Arrays とか java.util.Collections に突っ込んで整列させるのが良いのでは?
Arrays#sort を使って好きなように比較メソッドを実装した比較オブジェクトを渡せ。
http://java.sun.com/j2se/1.4.2/ja/download.html
J2SE v 1.4.2_03SDKおとせない。
なんで。
>>749
ソートルールは全部列挙してからやったほうが早いよ。
>>748

きっと、
a1, a2, a10
の順でソートしたいっていうに違いない。
そんな無茶な

もう自分でクラス作れ。比較用の。
java.util.Comparator実装してcompareToメソッドを好きに書け。
>>754
結構面倒だな。
a1a はどうするんんだとか、悩んだらきりがない。
>>755
compareToなど使わなくても
http://takeoba.cool.ne.jp/moreJava/sort.htm
に書いている処理をちょっといじったらOKじゃないの?
>>757みたいなやつが、仕様書もろくに読まずに勝手な実装して
最後になってバグ発覚して大騒ぎになる原因を作るんだろうなあ。
compareToとcompareを間違えてるってことでしょ
760デフォルトの名無しさん:03/12/29 18:51
a
>>755
正規表現を使えばそんなに難しくはないかと。速いロジックには
なりそうにもないけど。
>>761
ほんとか? じゃ、正規表現でちょちょっと書いてみてくれ。
763デフォルトの名無しさん:03/12/30 16:22
結果として同じ処理でも、
ソースの書き方がいっぱいあって疲れるなぁ
それが一番最適か考えなきゃな・・・
正規表現のパターンが一定ならJavaCCを使うという手があるかも
>>763
近代プログラミングの基本。最初は動けばOK。

766デフォルトの名無しさん:04/01/14 18:51
アプレットの勉強をし始めた所なんですが、以下のプログラムを appletviewer で実行して
メニューから「中止」、「再起動」、「中止」・・・と繰り返していると、どんどん速度が速くなっていくんですが、理由が分かりません。
本当に初心者なんでとんでもない事をしているのかも知れませんが、よろしくお願いします。

---
public class Skelton extends Applet implements Runnable {
 private Thread runner_;
 private int x;
 public void init()
 { x = 0; }
 public void start() {
  if(runner_ == null) runner_ = new Thread(this);
  runner_.start();
 }
 public void paint(Graphics g) {
  g.setColor(Color.white);  g.fillRect(0, 0, 100, 100);
  g.setColor(Color.black);  g.drawString("x : " + x, 10, 20);
 }
 public void stop()
 { runner_ = null; }
 public void run() {
  while(true) {
   ++x;
   repaint();
   try { Thread.sleep(100); }
   catch(Exception e) {}
  }
 }
}
runner_はstartしてstopしてないよ。
Threadが増えてるから速くなっていってるように見えるんでしょ。
>>767
stop() は推奨されていない。
って聞いていたんで使ってはいけないものなのかと思ってました。

ありがとうございました!
>>768
いや、そもそもThreadクラスのstopは使ってはいけないよ
stop以外の他の方法があるから、それを使った方がいい
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/misc/threadPrimitiveDeprecation.html
>>768
っていうか、それは止まるのか?
>>769
参考になりました。
本当にJava触り始めた所で何も分かってなかったです。

>>770
なんとなく止まったように見えてたんでいいのかなと思ってました。

やっぱりデバッガとかいりますよね。
gdbみたいなものってJavaにもあるんですかね。
調べてみます。
>>771
デバッガあっても、マルチスレッドモノは、むずかしいぞ。
っていうか、EclipseかNetBeans使え。
>>772
Eclipseとかって重たくないですか?
少し触って見たんですが、重たくて耐えれませんでした。
後、愛用のエディタがvimなんでどうもああいうIDEって好きになれないんですよ。

IDEとか使ってボタン一発でビルドとかは簡単で良いんでしょうが、
antファイルの書き方とか自分なりに覚えていきたいんで、
今の所はコマンドラインで行こうと思ってます。
もう少し慣れてきたらeclipseなどを使おうとは思います。

助言ありがとうございます。
774デフォルトの名無しさん:04/01/17 01:10
>>773
Eclipse でもガンガン Ant 呼び出すぞ。
あと vi プラグイン使え。そりからメモリ増やせ。
775デフォルトの名無しさん:04/01/17 02:27
.javaでファイルを作っても
.java.txtになってしまうのですがどうしたら良いのでしょう?
>>775

とりあえず、googleという検索エンジンから、"拡張子"というキーワードを勉強してください。
はじめまして java初心者です。
質問なのですが、JavaScriptにてテキスト出力する際に、
記述するテキストの改行を許す書き方というのはあるのでしょうか?
例えば
document.write('test.text');

document.write('test.
text');
とするとエラーになってしまいます。
長文を表示させたい場合、改行がないと辛いのです。
どうすればいいのでしょうか?
よろしくお願いします。
>>777
JavaScript の質問は専用スレで。
JavaScriptとJavaは違う。
Javascript は Web 制作板
失礼しました 出直してきます。
J2SE1.4.2でJavaAppletを作って他の人に動作確認をしてもらったところ、動かないと言われました(灰色が表示されるだけとのこと)。
自分ではちゃんと動くことを確認したので、Javaの文法やHTMLに問題があるわけではなさそうです。
1.4.2で作った場合はそれ以上のバージョンを持っていないと動かないのでしょうか?
もしそうだとしたら、こちらのJavaのバージョンを下げるしか解決法はありませんか?
782781:04/01/17 16:41
age忘れ
783781:04/01/17 17:41
Javaのバージョンを下げてみたところ動いたようです。
失礼しました。
public class Wa{
  public static void main(String args[]){
    double a;
    a=0.33+0.35;
    System.out.print(a);
  }
}
で出力結果が0.6799999999999999になるのはなぜですか?
>>784
気のせいです。
>784
細かいことは気にするな。
788784:04/01/17 22:37
>>787
浮動小数点の計算で誤差が出るなんて初めて知りました。
ありがとうございます。
789デフォルトの名無しさん:04/01/18 22:54
SQLを表示する時
JSPで枠だけ実装して
実際のSQLはjavaソースでいろんなパターンのSQLをいくつか実装させて
その時の内容に応じてそれぞれの指定のSQLを呼び出して表示させようとした時
どうすればいいのでしょうか?

参考書やGoogleなどをみると
JSPに直接SQLが書かれていたりしているのがほとんどで
JSPとSQLの部分が書かれたソースを分散させて、JSP側でSQLを呼び出しているサンプルはありません
実際こういった分散は出来ないのでしょうか?
>>789
MVC(Model View Controller) もしくは DAO(Data Access Object)
を、ぐぐってくれ・・・(書き込み押してしまった・・)
>>790
MVCなどのように分散して使うというのはわかるのですが
サンプルというかJSPからの呼び出し型とか、わからないです
もしサンプルなどあれば教えてください

Googleなど見てもJSPに直接書かれたりしてるので
ちょうどいいサンプルはないので・・・
>>792
自分で作った、SQL を用いる(HTMLタグは一切登場しない)クラスが、
JSP から解決できればいいだけ。
そしたら <% %> 内でインスタンス生成してメソッド呼ぶとか、
static メソッド呼ぶとか。

これはアプリケーションの設計の問題であって SQL とは一切関係ない。
ググりのキーワードに SQL 入れても無駄。
794775:04/01/19 19:50
すいません。
めちゃくちゃ初歩的なことなんでしょうけどよく分かりません。
メモ帳でa.javaというファイルをつくっても、
a.java.txtとなってしまってプログラムを実行できません。
本で調べたらマイコンピューターかエクスプローラーでフォルダを開いて.txtを
削除しなさいと書いてあるのですが。よく分かりません。
>>794
> a.java.txtとなってしまってプログラムを実行できません。
メモ帳だったら、"a.java" みたいにダブルクォーテーションで括って保存するとか。
メモ帳以外のエディタ使うとか。
>>794
保存するときにファイルの種類をテキスト文章ではなく、
すべてのファイルを選択してa.javaという名前で保存
797775:04/01/19 20:12
>>795,796
”でくくる方法で出来ました!
ファイルの種類を変更してもだめだったのですが。
(知らずに変なことしてるからか?)
いずれにしても、ありがとうございました。
>>797
アイコンの上で右クリック>名前の変更
>>794
プログラムを作るのならWindowsについてもよく知っておくべき。
「拡張子」は初歩の初歩だし。
いくら初心者スレとはいえ、こんなのがプログラム組もうとしてるのか・・・
Java初心者じゃなくてパソコン初心者のレベルだろ?これ・・・
順番を間違えたな、確実に・・・
今度は「pathが通りません!」てくる悪寒・・・
プログラム未満,,,,,,
とりあえずJavaの本を一冊読み終えた
しかし数列の和を計算したり線をひっぱったり図形をかけるようになっただけで
ゲームをつくるとなると何すればいいんだか全くわからない。
これからどうしたらいいんだろう
簡単なものから作ればいい
ゲームといってもピンキリだから何を作りたいのかによる。
ゲーム機ばりのグラフィックあふれるゲームを作りたいのなら
Java以前にゲームプログラミングの知識が必要なので書籍を
当たってくれ。数は少ないがいくつか出ているはず。

そこまでは求めず、とりあえずゲームっぽいアプリを作りたい
というレベルならWeb検索すればサンプルはいくらでもある。
あとはまねするところからはじめてみよう。
>>803
ゲーム(スタンドアローンな)だったらJAVAじゃないほうが(ry
807803:04/01/23 23:55
iアプリ程度作れればイイと思っています。
Javaとかi-appliの仕様書というか資料にも有益な事が書いてありました
資料を読みまることも大事だなと思いました
というより資料読まないことには何もわからないですよね
>>807
ttp://www.horae.dti.ne.jp/~yoji/
とか読んでみたらどうだろう。
内容はちょっと古いけど、「どうすればいいか」くらいはわかるんじゃないかな。
809デフォルトの名無しさん:04/01/24 03:58
親クラスと子クラスの関係が継承関係である場合
親と子の中に同じメソッドTestMethodがある場合
親クラスのTestmethodを呼び出そうとしたら
オーバーライドの関係で子クラスのメソッドの処理が実行されるのでしょうか?

実際ためしたらそうなったのですが・・
810デフォルトの名無しさん:04/01/24 04:25
javaの処理で特定のファイルを開くにはどのような記述が必要でしょうか?
例えばメインを実行したら、指定のexcelファイルなどを開きたい時にはどうすればいいのでしょうか?
>>810
java.io.FileInputStreamとか
812デフォルトの名無しさん:04/01/24 11:43
>808
自分のHPの宣伝するなよ。
>>809
もちろん。

class らーめん {int get価格(return 500;)}
class チャーシューらーめん extends ラーメン {int get価格(return 700;)}
class 玉子らーめん extends ラーメン {int get価格(return 600;)}

ラーメン a = new ラーメン();
ラーメン b = new チャーシューメン();
ラーメン c = new 玉子ラーメン();

で食ったあとラーメン型を受け取り、価格を表示する。

public void ごちそうさま(ラーメン x) {
  System.out.println( x.get価格() );
}

この時、実際はどのラーメンかは分からなくても get価格
すれば価格は分かる。チャーシューメン食ったのに
親の 500 円返されたらおかしいだろ。
814デフォルトの名無しさん:04/01/24 23:37
CSVファイルを扱う時に
各行の四つ目のカンマの区切りに入ってるデータを抽出して出力したい場合は
どうすればいいのでしょうか?
815803:04/01/25 00:26
オブジェクト指向ってよくわかんねえや
>>StringTokenizer使って、取り出せば?
もっといいやり方あるのかな?
>>814 >>816
Stirng s = "aaa,bbb,ccc";
String[] sa = s.split(",");

sa[0] = "aaa";
sa[1] = "bbb";
sa[2] = "ccc";
Java初心者はまずはじめに何を作ればいいんですか?
>>818
みんなが欲しがってるもの
>>818
Hello World
>>818
まずはEJBの勉強だな
それからAntの使い方も忘れなく
>>817
1.3以前では使えないことにさえ注意すれば、それが一番楽だな。
>>821
初心者に EJB みたいなマイナーなもんすすめんな。
あんた、自分のまわりが EJB 当たり前だからって世間はそうではない。
>>823
釣られるなよw
825デフォルトの名無しさん:04/01/26 23:52
for(int i=0 ;i < 100;i++ ){
h.put(i, i+"個目");
}

のようにfor文で回して
1つ目のi引数に順番に入れたいのですが
これがコンパイルが通りません
キャストとかでStringにしてもうまいこといきません
どうすればいいのでしょうか?
826デフォルトの名無しさん:04/01/26 23:54
>>825
言い忘れましたが
HashMap h = new HashMap();
です
827825:04/01/27 02:01
すいません質問変えます
HashMap hm = new HashMap();
int count = 0;
while ((s = br.readLine()) != null) {
count++;
String[] sa = s.split(" ");
hm.put(count, sa[0]);
}

とした時に
hm.put引数のcountを文字列(String)として認識させたいのですが
nullで取得したりしてうまいこといきません
どうすればいいか教えてください
i は int。これはプリミティブ型。値を表すだけで、実体は無い。
Map で使えるのは Object か、そのサブクラスを型に持つ、インスタンス。
つまり実体のあるもの。
数から実体を作りたかったら Number のサブクラスを使う。例えば Integer。
h.put(new Integer(i), i + "個目");

でなければ String に変換する。君が value の方に使ってるのと同じ方法。
h.put("" + i, i + "個目");
String も Object のサブクラスだから Map で使える。

プリミティブ型はプリミティブ型にしかキャストできない。(ex. int → double)
また、オブジェクト型のキャストとプリミティブ型のキャストではまるで意味が違う。
829デフォルトの名無しさん:04/01/27 02:12
>>828
ありがとうございます
いろいろ試したのですが

System.out.println(h.put(new Integer(count), sa[0]));
System.out.println(h.put("" + count, sa[0]));
でもnullしか取得されません

お願いします
何をしたいんじゃ? null しか出なくて多分当たり前
Map の使い道わかってる?
put の意味分かってる?
put の返す値の意味分かってる?
new Integer(count) と "" + count はまったく違うものだって分かってる?
831デフォルトの名無しさん:04/01/27 02:29
>>830
テキストファイルを一行ずつreadLineで読み込んで
それを" "で分割して
その分割された1つ目の値をHashMapの二つ目の引数に代入する

また読込むたびにカウントアップして
そのカウント数を1つ目の引数に代入する

"1","1つ目の値"
"2","2つ目の値"
みたいに
ReadLineが存在するまで書き出していく
みたいにしたいのです
他のコレクションフレームワークでも可能かもしれませんがHashMapでお願いします
>>827 で、あとは ""+ i にすればもうできてるじゃん

そうじゃなくて、>>829 の println(HashMap#put を、何の意味があってしてるのかわからんから、
何を悩んでるかも分からんのよ
もう寝るから予想してること全部書く。

入れたそばからちゃんとはいってるかどうか調べてどうする。
そんなんじゃ put する意味無いし。Map は対応付けを覚えるためのもんで、
あとあと対応付けを調べるためのメソッドがあって当然。
取り出したけりゃ、それ専用のメソッドを探して、それを使えばよろしい。
API ドキュメントはしっかり手元において読まなきゃだめ。
ちなみに put の返す値は古い value が何だったか調べるだけのもん。

取り出すときは対応付けた key で探さないとだめ。
new Inreger(3) と "3" は equals では false を返す。つまり互換性無い。
equals が重要ってのもドキュメントに書いてある。

key として何が入ってるか調べるには keySet を取り出す。
これを Iterator で回すか ArrayList で包んで get(index) するか。
はじめから TreeMap を使って順序付けをしっかりさせておいてもいいが、
key が Comparable でないといけないので、その場合は String ではなく Integer を key に使う。
しかし今回の場合はカウントアップしてるだけなので key をもっかい for で回せばよかろう。

ではおやすみ。
834デフォルトの名無しさん:04/01/27 11:42
質問失礼します。
私の環境(WindowsXP)ではjarファイルは書類の様なアイコンですが、
自作のjarファイルのアイコンを変更することは可能でしょうか。
他の実行ファイル(***.exe)などのように、
自作のアイコンをダブルクリックして実行するようにしたいのですが…。
あのね。
jarファイルはzip圧縮ファイルなのね。
お前は「zipファイルのアイコンを変更することは可能でしょうか」
と言っているのね。
>>834
ああbatファイルを作るといいっすよ。
中身はjava -jar 元のjarファイルの名前(例えばtest.jar) で。

batファイルなら各batファイルごとに好きなように
アイコンを変更できましたよね?
837デフォルトの名無しさん:04/01/27 13:41
質問です。
Vectorにint型を格納するにはどうしたら良いのでしょうか。
>>837
ラッパークラスを使う
・ラッパクラス(Integer)
・要素1のint配列
・intをフィールドに持つ自作クラス
・番外編:Stringにする
・JDK1.5 にする
842デフォルトの名無しさん:04/01/28 13:35
お勧めのエディタはなんですか?
jcpad
Word 2003
すんません今DBにJavaから接続するプログラムを
書いているのですが
for (;;) {
// DB接続メソッド
connect();
〜〜書き込み処理〜〜
close();
}
とやるのがいいのか
// DB接続メソッド
connect();
for (;;) {
〜〜書き込み処理〜〜
}
close();
とやるのと処理的にはどちらのほうが普通なんでしょうか?
またそれは何故かという部分を簡単でいいので教えて頂けないでしょうか
>>842
Cpad for java2SDK・・・843と同じだが
>>845
普通は後者。厳密に言えば作業内容・量・タイミングによる。
トランザクションも考えるなら当然後者。
ちうかあまり Java のスレで聞くことじゃないね。
848デフォルトの名無しさん:04/01/29 04:37
質問します

for(i=0;i<num;i++){b[i]=((int)(Math.random() * 10));}
num:定数
と記述してb[0]〜b[num]まで乱数を格納します。

そのあと別の配列に数字を入れてこのbの配列と比較したいのですが、
bを参照するたび内容が変わってしまいます。
どうすれば、ある乱数を格納したまま其れを維持することが出来るでしょうか
つまり、乱数を格納するのは一回でかまわないんです。

よろしくお願いします。
>>848
貴方の頭は狂っているのですが、僕にうつさないでください
あと異臭がしますよ貴方
>>848
bを参照するときにif(c[i]=b[i]){}ってやってない?
851850:04/01/29 12:14
訂正。
if(b[i]=c[i]){}
↑これだと代入してる。
852845:04/01/29 13:00
>>847さん
ありがとうございます。
この手の質問はDBスレのほうで聞くもんでしょうか、やっぱり

ちょっと今まで膨大なInsert文発行していたので
どうかと思って質問した次第でした
ありがとうございます
>>850
すみません、自己解決できました
どうやらチェックする方のプログラムがミスってたようです^^;
失礼しました

>>849
はい 一年くらい風呂入ってません(笑
854デフォルトの名無しさん:04/02/08 11:00
質問age

jad使おうと思いダウンロードして解凍し、jad.exeを起動しようと思ったら強制終了するし、
classファイルをjad.exeにドラッグ&ドロップしてみても駄目だった。


                                タスケテポパーイ
855デフォルトの名無しさん:04/02/08 11:00
質問age

jad使おうと思いダウンロードして解凍し、jad.exeを起動しようと思ったら強制終了するし、
classファイルをjad.exeにドラッグ&ドロップしてみても駄目だった。


                                タスケテポパーイ
856854:04/02/08 11:01
なんで重複してんだよ・・・
連打してないのにorz
858そんな日には。:04/02/09 15:02
私は今、JBuilder9を使っておりまして,アプリケーションで作っており,
フレームごとに画面を設計し,画面遷移していくゲームを作成しております.
その際,ある1つの項目に対するコンボボックスが2つあるとします.
その2つのコンボボックスそれぞれから、1.0 と 2.0 を選択したとします.
そうすると、ある項目は合計 3.0 の数字を得たとします.
そして,そう言った形でいくつかの項目にも複数のコンボボックスが設けられていて,
それぞれの項目も数字が得られたとします.
すべてのコンボボックスを選択し、最終的にOKボタンを押します.
問題はここからなのです.
そのデータを次のフレームの画面へ行くとき,グラフという別の形に反映させたいのですが,どういったソースコードを書けばよいのが見当がつきません.
自分としては浅はかでありますが,publicはアクセス修飾子なので、違うフレームでもやり取りができるのではないかと考えております.
長くなりまして,わかりづらいかと思います.そのときはどうぞ言ってください.
どうぞよろしくお願いいたします
JBuilderシリーズは重すぎて使い物にならないですよ。
エディタがガリガリ、DOSプロンプトでカリカリやったほうが早い出よ。
>>859
JBuilderそんなに重いか?
1GHzくらいあれば問題ないぞ。

テキストエディタ程度でいいのならGUIエディット部分使わないわけで
コード編集だけなら全然重いってことはないぞ。

JBuilderの利点は
・struits使ったWEBアプリなら各種ツールが便利なこと
・GUIの配置がコードでがしがしやらなくていいのでらくなこと
・Tomcat内蔵でservlet/jspデバッグするのが楽

最新のバージョンはわからないけど、
GUIのイベント作成自体はボタン以外ほとんど手作業で面倒だったけどね

今ならGUIとServletまわりならNetBeansで事足りるが、
JBuilderのstrutsコンバータ、strutsザイナはうらやましい


>>858
画面とデータの遷移がわからないのか
グラフの描画がわからないのかどっちなんだ?
861859:04/02/09 16:08
Celeron600だ
862デフォルトの名無しさん:04/02/10 04:14
変数の値の参照方法について、どうしてもわからないことがあります。

たとえば、クラスAとクラスBがあったとします、
クラスAは、01.java、クラスBは02.javaと、別のファイルに記述してあります。
もし、01.java内のクラスAで使われた、変数xの値を、02.java内のクラスBで参照するには、どのような方法を用いたらいいのでしょうか?


01.java
Class A{

変数 x = 値;
}

02.java
Class B{
int y = x;
(ここで、ClassAの変数xの値を参照したい)
}


同じファイル内で参照する場合、
変数の宣言でpublicを付加すれば可能なのですが、
別ファイルだと「シンボルを解決できません」というエラーが出てしまいます。

ちなみに、パッケージは、01.javaも、02.javaも、同じパッケージになっていると思うのですが、J-Builderを使っているので、確信はありません。


>>862
クラス名はファイル名と同じにしる。
→ A.java
864デフォルトの名無しさん :04/02/10 21:42
こんにちは。当方JavaでWebアプリケーションを作り、自宅コンピュータをサーバとして外部からのアクセスをできるようにしたいのですが、
できません。サーバはTomCatを使っています。私は、あまりサーバ構築に関して素人なので分かりません。ちなみに推測ですが、アドレスのホスト名をデフォルトのlocalhost:8080にしています。
誰かアドバイスしてくれませんか?
>>864
まず、名前欄に fusianasan と書き込んでください。
866質問者:04/02/13 18:42
netBeanIDEを使ってて、あるフォルダをマウントして使ってた。
だんだんそのフォルダのファイルが多くなってきたので、そのフォルダの下に新たにフォルダを作って
IDEを使わないでjavaファイルを作成。
コマンドプロンプトからはコンパイル、実行は出来たんだけど、IDEでそのファイルを開いて実行しようとすると
なにやらごちゃごちゃとエラーが出て実行できない。
そのフォルダもマウントしなきゃいけないのかな、と思いマウントしようとしたが指定出来ない。
どうやったらIDEから実行出来るようになるんだ?
因みにコマンドプロンプトが作ったclassファイルを削除して、IDEから実行するとclassファイルは出来てるみたい。
プロジェクトの設定の問題だな
パッケージって理解してるかいな?

NetBeansやると最初に通る道だろうけどね
java初心者で今は色々なプログラムを見て回っているのですが
public static void main(String args[])
の一行を理解しようとしています。

public static void main←この部分はプログラムはここから始まりますよってことですよね?
では
(String args[])←この部分はなにをしているのでしょうか?

String型のargsというのを作ってそうですけど、たいていのプログラムの場合このargsっ使われて
ないと思うんです。またプログラムによっては

(string[] args)となっているものもありますよね?(string args[])との違いはあるのでしょうか?
String[] hogeとString hoge[]は同じ意味、どちらで書いてもいい。
mainにStringの配列を渡すのは歴史的経緯というか伝統というか。

昔はプログラムはほとんどがコマンドラインから実行するものだった、で
引数(オプション)を文字で打ち込んで実行するのが普通だったから
その文字列を受け取れるようにしてある。
>>868
> String型のargsというのを

String型ではない。String[]型。Stringの配列型。
型だから String args[] という書き方はイクない。
後ろに書くのはオサーン系。
>>868
public:パッケージに関係なくクラス外部から参照可能
static:クラス名.メソッド名でアクセスする、クラスメソッド
void:戻り値を持たない
main:mainという名前のメソッド(慣例でプログラムのエントリーポイント)
args[] ←JavaVMがコマンドライン引数を並べて渡してくれる

public class Hoge
{
public static void main(String[] args)
{
System.out.println("引数の個数は"+args.length+"個です");
for(int i = 0;i < args.length;i++)
{
System.out.println("第"+i+"引数は"+args[i]+"です");
}
}
}


javac Hoge.java
java Hoge aaa bbb ccc ddd eee
やってみれ。
872868:04/02/17 22:40
>>868
>昔はプログラムはほとんどがコマンドラインから実行するものだった、で
>引数(オプション)を文字で打ち込んで実行するのが普通だったから
>その文字列を受け取れるようにしてある。

ようするにメインプログラムは何かを受け取っているわけですね。
というより受け取れるようにしているわけですね。

>>870
>String型ではない。String[]型。Stringの配列型。
>型だから String args[] という書き方はイクない。
>後ろに書くのはオサーン系。

Stringの配列型は通常 String[] args と書くわけですね。
868さんの見解とあわせて考えるとコマンドラインからの命令は一つとは
限らない。そこで String[] としていくつかの命令を格納できるようにしてる。

こんな感じかな。。。
873868:04/02/17 22:41
>>871
今からためしてみますです
874868:04/02/17 22:46
連投すみません
>>871
感動しました!!
これは得した気分です
皆さんありがとうございました!!!!!
>>874
おまい感受性高いな。その調子でがんばれ。
その感動を忘れるな。
俺は忘れた。
javaの実行環境は指定されたクラスの中のmainメソッドを実行しに行く。
javaのメソッドは戻り値の型、メソッド名、引数の型で判別されるから、
名前だけmainでは認識されない。
なので void main(String[] xxx)までは確定(ただし引数名xxxは命名規約に沿っていれば何でもいい)。
さらに外部からアクセスするためにはpublicであることが必要。
されにnewしないでクラス内のメンバを使用できるようにするためには、
staticであることが必要。

public static void main(String[] XXX)は必然。

最初にjavaを触ったときは、classの宣言から始まって、
Hello Worldを出すためにいったい何行書かせるつもりだ、と真面目にあきれたのを思い出したよ・・・。
System.out.println();という記述もうっとおしかったし、
さらに標準入力を取ろうと思ったらもうね。

Eclipseがなかったら、今だってめんどくさいと思いならが、書いてたんだろうな。
877868:04/02/17 23:54
>>875
今までHTML、C言語、CASLU、ベリログ、などの言語を触り程度
勉強してきた中でJAVAには最も可能性を感じます。
(他の言語が駄目だって言ってるわけではないですよ)

ですので、JAVAについて知るたびに興奮してしまうのです。。
最低限自分で調べて分からない事があったらまた
お世話になることがあるでしょうが、よろしくおねがいします!!
スレ汚しだったらすみません。
878868:04/02/18 00:11
>>876
>javaのメソッドは戻り値の型、メソッド名、引数の型で判別
関数の戻り値=void
メソッド名=main
引数の型=(String[] hoge)
を参照して確定しているという事ですね。

>>さらに外部からアクセスするためにはpublic
これはいくつかプログラムを見てきたので感覚的にわかりました。

>>newしないでクラス内のメンバを使用できるようにするためにはstaticであることが必要
main というクラスがいくつもあってはおかしいから静的(static)にしているってことですよね?

ここの方の説明はものすごくわかりやすい解説です。
非常に参考になります!!
879(1):04/02/18 01:21
>>878
もしかしたら分かってるのかも知れないけど、一応念のため・・・。

javaのクラスを宣言する、というのは「型」を宣言すること。
public SampleClass{
 public int value = 1;
}
と宣言したクラスは、
SampleClass sample1;
見たいに、変数を宣言する時の「型」のように使う。
普通に変数を宣言する時の、たとえば整数型の変数を宣言する際に
int test;
と書く場合の、「int」というのと同じようなもの。
で。このとき、変数testにはまだ、実際の値は入ってない。
test = 1;
と書いて、値を入れてやると初めてtestに1という値が設定される。
880(2):04/02/18 01:22

クラスの場合も同じことで、実際の値を入れてやる必要がある。
それが「new」するということ。new演算子は、新しい「値」を作る、という意味。
SampleClass sample1;
sample1 = new SampleClass(); // この時点でsample1に値が入る。
ここまでやって、初めてsample1の中のメンバが呼べる。
System.out.println(sample1.value);
のように。

staticメンバというのは、このnewする手順が必要なく、単純にクラスの宣言のみから引ける。
public SampleClass{
 public static int value = 1;
}
と宣言すると、
System.out.println(SampleClass.value);
という呼び方で「1」という値を取得できる。「new」しなくても参照できる。

mainを記述したクラスは、javaの実行環境によって、newされてから実行されるわけではなくて、直接、mainというメソッドを参照される。だから、static宣言しておかないと、javaはmainメソッドを参照できない。

以上、蛇足気味の長文失礼。
>それが「new」するということ。new演算子は、新しい「値」を作る、という意味。

これはどうなんかね。
new と static を関連させて勉強する意味ってあまりないと思うぞ。
new は単にコンストラクタメソッドを明示的に呼び出すための就職誌だと思った方が
理解が早くなると思う(説明する側もラクだし)。
882868:04/02/18 07:58
>public SampleClass{
> public static int value = 1;
>}
>と宣言すると、
>System.out.println(SampleClass.value);
>という呼び方で「1」という値を取得できる。「new」しなくても参照できる。

この部分は非常に参考になりました。newとstaticの明確な違いが理解しやすいです。

>new は単にコンストラクタメソッドを明示的に呼び出すための就職誌
修飾子とは、クラス・メソッド・コンストラクタにアクセス権限を与えることをいうわけですね。
逆に一つ勉強になりました!!
883U ◆CZtFsGiu0c :04/02/18 14:14
>>881
>new と static を関連させて勉強する意味ってあまりないと思うぞ。
>new は単にコンストラクタメソッドを明示的に呼び出すための就職誌だと思った方が
>理解が早くなると思う(説明する側もラクだし)。

そんなことないでしょう。newは「インスタンス」を生成するキーワードですね。
インスタンスを生成しなければインスタンスメソッドは呼べないのだから、main
が静的メソッドであることとの関係は明確でしょう。

>>868

2chで勉強するのもいいけど、まずちゃんとした入門書を一冊読んだほうがいいよ。
884868:04/02/18 14:47
>>883
Java言語プログラミングレッスン
〜Java言語を始めよう〜
結城 浩[著]

Java言語プログラミングレッスン
〜オブジェクト指向を始めよう〜
結城 浩[著]

の2冊をすでに読んでみました。
細かいところについての説明があまりなかったので
喉につかえていた部分をここで質問させてもらって
いました。
ほかになにかお勧めの参考書はあるでしょうか?
885U ◆CZtFsGiu0c :04/02/18 15:08
>>884

えーと結城さんの本も含めて「入門書」そのものは読んだことないのですが、

>修飾子とは、クラス・メソッド・コンストラクタにアクセス権限を与えることをいうわけですね。

この書き込み見て、入門レベルの知識がないのかな、と思いました。とりあえず
結城さんの本の目次をざっと見たところ、その辺の説明はありそうですが…

とはいえ、mainメソッドのことを説明しているかどうかはわからないので、
入門書を読んでもわからないことを聞くことは問題ないです。でも、入門書に
書いてある内容はきちんと理解してくださいね。
886868:04/02/18 17:22
はい!!
精進しますです
887デフォルトの名無しさん:04/02/20 14:33

JAVAを始めようかと思って、
JBuilder9 Personal を入れてみたんだが、
これってJAVAで作られてるの?
むっちゃ遅いんだけど・・・。こんなの
公開したら製品版買う人減るんじゃなかろうか。

とりあえず練習なんで、コマンドラインの
JavaをSunから入手することにして
DL中です。
コマンドラインベースでいいのならJBuilderもそんなに重くないと思うけど?
快適に動かすなら1GHz、512MB以上推奨だと思うけどね

なんにせよ最初はテキストエディタ+SDKで一ヶ月はさわってほしい
環境設定とか自然と覚えるから
みんなeclipse使ってないの?
>>888
Celeron 2GHz ですが、起動に10秒くらいかかります。
ダイアログの表示もワンテンポ遅れる感じですねぇ。
まあ、慣れの問題もあるんでしょうが。
891デフォルトの名無しさん:04/02/20 16:26
>889
一応入れてあるけど、解説本そのものが難しい。
eclipseは統合環境だから、どっちかっていうと多人数で使ったりantとかやる人用でないか?
まあ、そんなオレは一人でもeclipse使ってるわけだけど。
最初にどっちさわったかでいいんだよんなもん
>>890
10秒かかったとしてもこまめに起動繰り返す訳じゃないし
コード補完やら構文チェックやらがあることを考えると
その起動の問題なんてたいしたこと無いと思うのだが?

コマンドラインベースでのプログラム程度なら
ダイアログの反応速度とかまったく影響しないでしょ

いろいろいじればわかると思うけど
JBuilderに限らずどの統合環境もサイズでかいしヘビーだよ

このスレは初心者用だと思うが、Eclipseは初心者向けではないねぇ
NetBeans3.51のほうが環境設定しなくてもいろいろある分おすすめかと
ただ、βとはいえ3.6のほうが遙かに使いやすいので今は微妙な感じか
もうすぐ3.6が完成すると思われるのでそれまではsdkベースでもいいかもしれない
894太陽ネット:04/02/20 16:44
誰か教えてください。

Javaで違うフォルダのテキストファイル(ソースを記述している)
を読み込んで、プログラム上でそのソースを実行することはできますか?
>>894
マルチウザイ
896868:04/02/20 22:16
お久しぶりです。
あれからしばらく一人で色々調べたりしてたのですが
アプレットを作っていて分からない事がでてきました。

現在KeyEvent を使用してキーボードの入力キー(↑↓→←)
を識別し、それにより文字列を動作させようとしています。

動作自体には問題ないのですが、どうしても不安定で
画面がちらついてしまいます。
自分なりに調べてためしてみたんですが、うまくいきません。

http://www1.ocn.ne.jp/~nasitaka/situmon/situmon.html

上に自分が作ったソースを掲載しましたので、どなたか
ご教授願います。。。
>>894
DynamicJava とか BeanShell とか pnuts とか使えば?

http://koala.ilog.fr/djava/
http://www.beanshell.org/
https://pnuts.dev.java.net/
>>896
アプレットのところ動かなかったぞ

ちらつきはダブルバッファリングを勉強すべし

ダブルバッファリングの概念はここの図がわかりやすいかな
http://www5.airnet.ne.jp/sakuraba/java/laboratory/JDK1.4/Graphics/BufferStrategy/BufferStrategy.html
899868:04/02/20 22:48
あれはソースだけ掲載してたんです(>.<)
ちゃんと書いてなくてすみませんでした。。。。

ダブルバッファリングですね!!
勉強してきますです
>>899
これからはこっちでいいんじゃないかな。
http://pc2.2ch.net/test/read.cgi/tech/1076338506/
901868:04/02/21 08:41
>>900
ほよよぉ(>.<)
もうそちらに行っても大丈夫でしょうか。('-'。)(。'-')。

あちらはこわぁぁい方が多くていこうかどうか迷ってました。
それとさりげなくここスレの「第一回画像表示ソフトを作ろう」
を作ってたり(笑)

とりあえずダブルバッファだけでも自分で理解できるように
頑張りますです。。。
898さんのおかげで原理はわかったんですけどね。
やっぱりJAVAの経験が浅いんで他の人のソースの
応用がきかないのが辛い(/ー ̄;)シクシク
902デフォルトの名無しさん:04/02/21 09:16

class practice
{
public static void main(String argc[]) {
byte b1 = 1;
byte b2 = 2;
byte b3 = b1*b2;
System.out.println(b3);
}

}

JAVAってのはこれでエラーが出るんですね。
C/C++ではこの辺はwarningもでないと思うけど。

byteをすべてintに変えるとエラーが出ないので
別に桁あふれを気にしているわけじゃないのか?
argc = arg count
904868:04/02/21 10:43
>>898
無事解決しました!!
こんな基礎的なことに2時間もかかってしまった・・・・
>>902
javaは型が厳密なので

ワーニングでながしたり何もでないのよりは
エラー返した方がいいと思うぞ

型が厳密なのがいいかどうかはプログラムで喰ってる人ならわかると思うけど

まじめに答えると
javaの基本はバイトってのはバイナリを扱う単位で計算に使うものではない
バイナリ扱う関係上8bitという精度もってるにすぎない
これは16bit精度をもっているcharも同じ

計算結果を8bitに押さえたいのならintで計算して8bitに切って格納するべし
>>902
二項数値昇格によって両辺のオペランドの型が byte であっても int に格上げされる。
int から byte への代入は基本的に言語規定によってコンパイル時エラーになる。

final byte b1 = 1;
final byte b2 = 2;
byte b3 = b1*b2;
にするとエラー出なくなると思うけど。
>>905
> javaは型が厳密なので
っつーか静的型付け言語の癖に C の基本データ型が曖昧すぎるだけだと思われ。
javaアプレットでゲームを作ったのですが、htmlで起動できません!
コンパイルするときにエラーメッセージもでないし、アプレットビューアでは普通に動作するんです。
javaファイルは本に載ってたものを移して、ヴァージョンを合せたり少し改造したものです。
考えられる原因を教えてください(@@;)

sdkのバージョン=j2sdk1.4.1_02
ブラウザのバージョン=6
>>908
JDK 1.4.1 以降はデフォルトで JDK 1.2 以降で実行可能なバージョンのクラスファイル吐くので

javac -target 1.1 hoge.java

とかして JDK 1.1 で実行可能なバージョンのクラスファイルを吐くように指定してコンパイルしてください。
>>908
インターネットエクスプローラ
 ->ツール->インターネットオプション->詳細設定-><applet>にJava2--を使用、をオン。
911908:04/02/21 17:52
レスありがとうございます。
>>909
普通にコンパイル出来ました。
>>910
すいません、そのような項目がないです。ネットに公開されてるようなゲームは全部出来ますので設定は大丈夫だと思います。

情報が足りないのなら答えます。
>>911
-target 1.1 つけてコンパイルしたのかよ?
913908:04/02/21 18:07
>>912
しました。つづりも間違ってないです。
hogeってとこは自分のファイル名でいいんですよね?
それで実行はできたのか?

MicrosoftのJavaで実行したいなら
インターネットエクスプローラ
 ->ツール->インターネットオプション->詳細設定->MicrosoftVM->Javaコンソールの使用、をオンに。
そうすればどういうエラーになってるか見れる。
または
jview /a
でもMicrosoft版アプレットビューワができる。
915908:04/02/21 18:21
>>914
おお!!できた!!できました!!
すいません実行できてました!!
このために何ヶ月も悩んでました、ほんとにありがとうございます!!m(-_-)m
またなにか問題があったら書き込みます。お手数かけました。
本当に解決したのか?
MSVMでだけ動くのならいいだろうけど、
SDKいれるってことは大概プラグインもはいるだろうから
sunのjreで動かないってのは問題だな

XPとか標準でMSVM入ってないのも多いからな
そして場合によってはSunのが標準で入ってる
917デフォルトの名無しさん:04/02/21 21:14
sdk1.4.1を使っているのですかtools.jarにクラスパスを通しているのに、mailパッケージが認識しません
s.java:9: パッケージ javax.mail は存在しません。
どうしたらいいですか?
javax.mailはtools.jarの中にはない。
j2eeかJavaMail実装を持ってくるかでどうぞ。
919デフォルトの名無しさん:04/02/21 21:33
>>918 あり
おめ
921デフォルトの名無しさん:04/02/22 20:32
はじめまして、Javaを全く扱ったことないのですが
勉強したいと思います。
初心者でも分かりやすいお勧めの本を
教えてください。
宜しくお願いいたします。
922デフォルトの名無しさん:04/02/23 01:26

C++の経験ありで、現在、独習JAVAで学習中なのですが、
interface というのは abstract class で機能的には代替
可能と考えていいんでしょうか?

>>922
代替可能だが、あくまで可能であるだけ。
その逆は不可能ってのは分かるよな?
>>923
abstract class の場合は、一部分でもメソッドの実装が
できるから、実装がまったくできない interface では代替
できないっていうことでいいのかな?
interfaceは多重に継承できるけど
abstractはできないYO。
classから見てimplementsは複数できるけど
extendsは複数できないYO。
>>925
なるほど。参考になりますた。
927デフォルトの名無しさん:04/02/23 03:35
今、スレッドについて勉強しているんですが、下のようなプログラムでdelete()とcreate()が
複数のスレッドから呼び出される場合に、create()の中のd!=nullの判定後にdelete()が他スレッド
から呼び出されてしまうというようなことはあるんでしょうか?
もしあるとしたらどのように改善したらいいでしょうか・・・
public class synchronizedtest {
static Data d = null;
public static void main(String[] args) {
         //スレッドの作成・実行
}
static synchronized void create() {
if(d != null) {
d.init();
return;
}
d = new Data();
}
static synchronized void delete() {
d = null;
}
}

class Data {
double g;
void init() {
g=0;
}
}
>>927
> create()の中のd!=nullの判定後にdelete()が他スレッド
> から呼び出されてしまうというようなことはあるんでしょうか?
ない。

もちろん、d != null の判定後、returnで、create()メソッドから帰ってきたあとなら、
delete()が他のスレッドから呼び出されることはあるわけであるから、
ほんとうならば、上の質問には「ある」と答えるべきかもしれないが。
>>924
まあ、>>925もそうなんだが、interfaceはほんとに単なるインタフェースだから、
・変数を宣言できない
・定義したメソッドは、実装クラスで必ず実装しなければならない
ってこと。

基本的に、クラスの枠組みを定義したいときはinterfaceを使えばいい。
多重実装もできるし。
abstract classを使う場合はあまりないので、慎重に考察するとクラス設計の見直しにもなる。
変数は宣言できるっしょ。
public static finalになるが
931デフォルトの名無しさん:04/02/23 09:47
java2sdkをインストールしたら、あるHPのネットゲームのページ開くのがものすごい遅くなってさ
コーヒマークみたいなんでてさ、文字もちょっとかわったし、あまりに遅いんで、
javaruntimeとjavaplug-inを削除したら、ふつうに開けるようになったんだけどさ
この二つはとくにいらないのか?学校の先生にきくとさ、runttimeはいるはずなんだけど
とかいって、あやふやにされたんだけど、ちなみにこの二つを削除しても、
ちゃんと、コンパイルもとうるし、コンソール画面で結果も表示されます。
この二つはなんなんですか?
削除してしまってよかったんでしょうかね?
MSのJVM?
>>930
それ定数。
配列やImmutableじゃないクラスの場合はそうでもないが。
>>932
そいつマルチポストでの荒らし
935デフォルトの名無しさん:04/02/23 13:15
volatileって複数スレッドからアクセスされ得る変数につけるということでいいんでしょうか?
volatile Object data;
とか宣言した場合にはオブジェクトへの参照をもつdataが複数スレッドからアクセス可能という
ことですか?それともdataの指すオブジェクトがそうなのでしょうか
volatileはVMの動作で最適化を防ぎます
Cとかだと効果分かりやすいけどね

基本的にvolatileで変数を宣言するより
synchronizedで最適化を防止するほうがいい

1つのメソッドだけ使う場合ってのはあまりないはず
937デフォルトの名無しさん:04/02/23 15:02
int データを char に変換して出力したいのですが、どう書いたらいいでしょうか?
>>937
マルチ氏ね






キャスト使え
性的メソッド?とそうじゃないメソッドってどう違うの?

静的メソッドはクラスに関連付けられているので
className.Method()
で呼び出す。

通常のメソッドはインスタンス(オブジェクト)に
関連付けられているので
clsName Object = new clsName;
Object.Method();
で呼び出す。

静的メソッドの場合は引数で変更するオブジェクトを
伝えてやらないとオブジェクトの中身を変更することは
できないです。

Java学習して3日目なんで、違ってたら
指摘おながいします。
>>940
Objectってクラスがあるので、例だとしても混乱のもとになるので
clsName Object 〜 なんて書き方やめましょう。
んーそうじゃなくて、なんで区別する必要があるの?ってこと。
例えば、
a = b.length( );
じゃなくて、
a = String.length(b);
でもいいじゃん。
>>942
Mathクラスなんかは非staticメソッドだと
使いにくくないですか? いちいちオブジェクトを
作成して、別にオブジェクトへの操作をするわけ
でもなし、かえって分かりづらい。

>>942の例は逆に全部staticメソッドにしたらどうかという
提案だと思いますけど、言語としてはそういう使い方
もできますけど、オブジェクトに対する操作というのが
明確にならなくて分かりにくいと思います。
>>942
オブジェクトの中身を熟知しているのはそのオブジェクト自身というのが基本

引数aだけの場合はいいけど、同じようにlengthを取得する、
ただし引数はクラスBといった場合その引数をかえた関数を
どんどん追加していかないとダメでしょ?

オブジェクト指向プログラムってのは相手の敷地に入って
いじくり回すのではなく、メッセージを投げ合うもの
つまり、「君のAクラスのlengthはいくつ?」って感じできくのだよ

C言語やってた人だと勝手に上がり込むstaticメソッド
多用したくなるのはわかるけどね
つまり、「Bクラスさんちょっくらあがらせてもらいますよ、lengthはこれですね」

Bクラスが変更されたらstaticメソッドもってるクラスもいじらないといけないし
java 2 SDK Standard Edition
ってドコからダウソするんだっけ?
前見た時とHPの内容が変わっててワカンネ
>>946
な、なんだってー
URLミスかな・・・indexに飛んじゃうんだよorz
アリガd
948デフォルトの名無しさん:04/02/24 17:07
オブジェクト自体に対するsynchronizedブロックもしくはsynchronizedインスタントメソッドと
オブジェクトのインスタンス変数についてのsynchronizedは互いに相互排除されるのですか?
949デフォルトの名無しさん:04/02/24 19:44
↑の補足です
class SharedData {
Data d;

synchronized void exampleMethod() {・・}
void exampleMethod2() {synchronized(this) {・・・}}
void exampleMethod3() {synchronized(d) {・・・・}}
}
これら3つのメソッドは相互排除されるんでしょうか?
exampleMethodとexampleMethod2はお互いにされる。
exampleMethod3はロックしてるものが違うからされない。
>>950
ありがとうございました
952デフォルトの名無しさん:04/02/24 21:31
Socket sから入出力ストリームをgetInputStream/getOutputStreamで取得した場合、
ソケットを閉じる前にストリームを閉じた方がいいのでしょうか?
>>952
Streamを閉じると、Socketも閉じられるよ。
ttp://java-house.jp/ml/archive/j-h-b/006992.html#body
次スレ

【初心者】Java質問・相談スレ42【大歓迎】
http://pc2.2ch.net/test/read.cgi/tech/1077518664/l50
955デフォルトの名無しさん:04/02/25 23:50
標準API以外によくつかわれるライブラリにはどんなものがあるんでしょうか?
知っておいた方が便利とかよく用いられるものがあったら教えてください
>>955
J2EE Servlet API…サーブレットのAPI。
JAX-P/B/M/RPC/etc…XML使っていろいろするAPI。
Jakarta-Commons…大抵の人が再発明を繰り返すであろうユーティリティ
が一堂に。それぞれいちいち便利です。

このへんは普通に使うようになるんちゃうかな。
957デフォルトの名無しさん:04/02/26 09:42
winxp amd64でアプレットを使うためには、どのようにインストールすればよいのですか?
ただインストールすると、IEにJavaVMが出てこないのですが。
>>957
インストールしたってのはJRE?それともWinXP?

WinXPだったら、デフォルトでJavaVMが入らなくなってるので、
1. Windows Updateを使って、MicrosoftのJavaVMを入れる。
2. SunからJREをダウンロードしてきて入れる。
のどちらかでOK。

JREだったら、コンパネのJava Plug-inを開いて、
ブラウザタブの中のMicrosoft Internet ExplorerにチェックでOK。
959デフォルトの名無しさん:04/02/26 19:22

NetBeansを入れてみたのですが、これは
コンソールアプリは作成できないのでしょうか?

javac と java で実行できるファイルなのですが、
NetBeansで実行すると

java.lang.NoClassDefFoundError: Example2/Example2 (wrong name: Example2)
at java.lang.ClassLoader.defineClass0(Native Method)

こういった感じのエラーがでます。

IDE Tutorial の SwitchColor は実行できました。

それと、Cでいうところの getchar(); のように、
コンソール起動した場合に自動的に終了しないような
メソッドがあれば教えてもらえるとありがたいです。
普通に作れるけど?
実行もおわれば自動的にプロセス終了するよ
あ、2つめまちがえた入力があるまでまつってことね?
リターンキーが押されるまでまつなら
System.in.read();
でいいのでは?
普通に使えてる方が多いみたいですね。
コンソールだと、

E:\Data\Dev_Java\PROJECT\Practice>java practice
8
class java.lang.Integer

こんな感じでうまく実行されるんですが。

どっか設定がまずいのかな。

>>962
これ使えました。ありがとうございます。
パッケージを指定したらうまく動作しました。
これは必須なんですかね?

package Practice;

public class practice
{
public static void main(String args[]) {
パッケージのディレクトリがずれているんじゃないの?
966デフォルトの名無しさん:04/02/27 05:54

Javaって Mutexみたいな待ち時間付きの同期機構は
ないんですかね?
968デフォルトの名無しさん:04/02/27 10:46
>>958
レスありがとうございます.
SUN jre 1.5.0 AMD64をいれました。
しかし、アプレットが動きません。
win2000では、IEにjavaVMが表示されるのですが、WinXP AMD64では、IEに表示されません。
JRE 1.4.2でも出てきません。
なにか手続きがあるのでしょうか。
AMD64ってわざわざかくってことは
XPのx86-64対応版?

jre1.5と並んで正式版じゃないしなー

x86-64版はIEが2つあった気がする
>>968
すまそ。AMD64はよく知らないっす。
Windows Updateから入れるMSのJVMは?
バージョンが1.1で古いけど・・・。
971デフォルトの名無しさん:04/02/27 18:25

*.classファイルをダブルクリックで起動させる方法ってありますか?

x.class というファイル名の場合、
java x
で起動できますが、エクスプローラでこういう指定はできるのかな?
ふつうに出来るよ

ただ、配布して簡単に起動させたいのならjarにするべし
ダブルクリックで起動できるし圧縮もされる
リソース類もまとめれる
973デフォルトの名無しさん:04/02/27 18:31
ファイル選択ダイアログ(javax.swing.JFileChooserクラス)みたいなやつでフォルダ選択できるものってないですか?
探してるんですけど見つからないんですが、ひょっとしてないですか。
>>973
それでディレクトリ選択の設定すればいいだけ
もしかしてAPIマニュアル読まない人?
975デフォルトの名無しさん:04/02/27 19:46
>>974
すみません。
まだ読み方がわかってないみたいでした。
976デフォルトの名無しさん:04/02/27 22:01

Baseクラスから派生されたDeriveというクラスのインスタンスを
作るときに、Baseクラスの引数付きコンストラクタを
呼ぶにはどうすればいいんですか? C++だと

class Derive : public Base {
 Derive() : Base(a,b) { }
};

こんな感じですが。
>>976
class Derive extends Base {
public Derive() {
super(100);
System.out.println("Deriveコンストラクタ");
}

1階層上のコンストラクタはsuperで呼び出せました。
2階層上の引数付きコンストラクタは呼べないんですかね?
Baseクラスのコンストラクタで superを使うのが一般的なのかな?
次スレ

【初心者】Java質問・相談スレ42【大歓迎】
http://pc2.2ch.net/test/read.cgi/tech/1077518664/l50
ぽ