5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:03/04/26 00:27
☆★☆こんなメッセージが出たら >>2 へ☆★☆
『'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。』
『Exception in thread "main" java.lang.NoClassDefFoundError: Hello』

>>2-3 初心者によくある質問と回答・他のFAQサイトへのリンク
>>4  JDKの配布元とAPIドキュメントへのリンク
>>5-6 過去スレの一覧
>>7-10 関連スレ
>>11 2ちゃんねる外のJavaサイト・無料の開発環境の配布場所
(諸般の事情でずれた場合は >>2-20 )

Google で検索 ⇒ http://www.google.co.jp/
JavaFAQ で探す ⇒ http://www.gimlay.org/~javafaq/javafaq.html
ご要望によりじゃばこサイト ⇒ http://www.javaco.org/
JavaScriptの質問はWeb製作板へどうぞ ⇒ http://pc3.2ch.net/hp/
パソコンの基本操作に関しては、PC初心者板へどうぞ ⇒ http://pc.2ch.net/pcqa/

これからJavaのプログラムを始めたいかたは >>2-4
必要な情報やコンパイラのダウンロード先へのリンクがあります。

基本的に sage 進行でおねがいします。また煽り厨は放置でお願いします。


403 :デフォルトの名無しさん:03/05/02 21:53
jarファイルの作成・展開をjavaの中でRuntime.getRuntime().execを
使用して行ってます。

単純な解凍は「jar xf F:\TEST.jar」で出来たのですが、
解凍先ディレクトリを指定した解凍の仕方が分かりません。

jarコマンドはtarコマンドとほぼ同じ、との事なので、
tarコマンドのディレクトリ指定方法を以下のように行ったのですが、
実行できません(使い方一覧が表示されてしまう)
「jar xf F:\TEST.jar -C D:\Melt\」

+Lhaca等で解凍した場合、きちんと指定ディレクトリに解凍できるので
方法はあると思うのですが、いろいろ試したものの出来ません。
どうやったらディレクトリを指定して解凍できるでしょうか?

404 :デフォルトの名無しさん:03/05/02 22:06
>>402
やはりそうなのですか。
一つのプログラムを指定してその送受信データを
取得するのはできるでしょうか?

プロキシタイプのプログラムというのは
どういうのでしょうか?
参考になるサイトか何かヒントになるクラスだけでもいいので
教えてください。

405 :1/2: 改行多すぎ:03/05/02 22:07
>>401
Base64 版は見せれんが、こんなのどうだ? ASCII 16 進数で入出力する
フィルタストリーム。

public class HexOutputStream extends FilterOutputStream{
  public HexOutputStream(OutputStream out){ super(out); }
  public void write(int ch) throws IOException{
    out.write(Character.forDigit((ch >> 4) & 0x0F, 16));
    out.write(Character.forDigit((ch >> 0) & 0x0F, 16));
  }
}
public class HexInputStream extends FilterInputStream{
  public HexInputStream(InputStream in){ super(in); }
  public int read() throws IOException{
    int ch1 = in.read();  if(ch1 < 0)  return ch1;
    int ch2 = in.read();  if(ch2 < 0)  return ch2;
    return ((Character.digit((char)ch1, 16) & 0x0F) << 4)
      || ((Character.digit((char)ch2, 16) & 0x0F) << 0);
  }
}


406 :2/2: 改行多すぎ:03/05/02 22:08
即興で書いたので細かいミスは勘弁。これを ObjectOutputStream と
ByteArrayOutputStream の間に置いてやって、最後に String を構築
してやれば良い。

ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(new HexOutputStream(baos));
out.writeObject(...);
out.close();
Strin hexText = new String(baos.toByteArray());

ByteArrayInputStream bais = new ByteArrayInputStream(hexText.getBytes());
ObjectInputStream in = new ObjectInputStream(new HexInputStream(bais));
Object hoge = in.readObject();
in.close();


407 :386 ◆IzdKJ.WAZA :03/05/02 22:18
あーやっぱりダメですね。。
byte [] にすると宣言する時点で 0xda の精度が落ちている(整数で218だから範囲外)
と怒られますし,char型にキャストして out.write((char)packet[i]) とやっても
やっぱり'?'に化けます。。

Javaで作るTCPクライアントとか見ても
out.println("Hello World!") とかで
パケット作成まではやってないし。。

とりあえずもう少し弄ってみます

408 :デフォルトの名無しさん:03/05/02 22:18
直接は関係ない話だけど
最近のjarコマンドってjavacと同じくjavaで書かれたはずだから
Runtime.getRuntime().execよりもこっちの方がいいと思うよ

409 :デフォルトの名無しさん:03/05/02 22:23
>>407
えーと、まず最初にバイナリデータの入出力に Writer 系を使うのを止めなさい。

410 : ◆IzdKJ.WAZA :03/05/02 22:31
>>409
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
↑まさにご指摘の通りでした。。これ削ってやってみます

411 :デフォルトの名無しさん:03/05/02 22:36
byte packet[] = {(byte)0x00, (byte)0x1d, (byte)0xda, (byte)0x03};
OutputStream out = new BufferedOutputStream(socket.getOutputStream());
out.write(packet);
out.flush();
...

412 :デフォルトの名無しさん:03/05/02 23:08
>>395
どこかで読んだことがあるが
「パソコンの実メモリが128MB以下の時は32MB
512MB以上のときは50%がデフォルト」
みたいなこと書いてあった。
ちなみに実際の数値は今俺が適当に考えたので違います。

まあそういうことなので、メモリ増やせば一番楽、あとはバッチファイルから起動するとか

413 : ◆IzdKJ.WAZA :03/05/02 23:31
>>411
どうもです 今電車の中なんで帰ったらやってみます

414 :デフォルトの名無しさん:03/05/02 23:57
ArrayListオブジェクトarrayがあるとして

こうやるのと
for (int i = 0; i < array.size(); i++) {
//処理
}
}
こうやるのでは
int length=array.size();
for (int i = 0; i < length; i++) {
//処理
}
}
後者のほうがパフォーマンス上がりますか?
それとも変わりませんか?

415 :デフォルトの名無しさん:03/05/03 00:02
>>414
大して変わらんと思われ。

もし、その程度のパフォーマンスの差が気になるなら
ArrayList の使用を止めるとか(これも大した改善は期待できない)、
その部分を native 化する(これも大した改善は期待できない)とか
考えたほうが良いと思う。

416 :デフォルトの名無しさん:03/05/03 00:03
>>414
理論上後者のほうがパフォーマンスが良いだろうが、よっっっぽどの
事がなければ現実的に変わらない。計測誤差に隠れるだろう。

417 :デフォルトの名無しさん:03/05/03 00:10
>>414
その程度の最適化は最近のJITコンパイラなら朝飯前だろうから、
人間様がわざわざやる必要はないと思われ。

つーか、HotSpot Server VM とか IBM JDK とかの最適化は
マジで凄い。

418 :デフォルトの名無しさん:03/05/03 00:12
>>417
何が、どう?

419 :414:03/05/03 00:23
みなさんありがとうございます
配列とかでは、気にしないで
lengthはよく使いますけど
コレクションの場合だと負荷がかかるんじゃないか?
パフォーマンス的にどうなのかな?
と思って質問させてもらいました
>>415ArrayList の使用を止めるとか
確かにそのとおりかもしれません
実際、余裕があればコレクションを使わずに配列を
使用するように心がけていますが
そうすると、ソースの見通しが悪くなるので
そういうことを天秤にかけてやってます


420 :417:03/05/03 00:35
>>418
実際、俺も昔、>>414のように不変値をローカル変数へキャッシュしたり、
メソッド呼び出しを減らすような変更をちまちまやってみたことがあったのよ。
しかも画像処理系のプログラムだったから、少しは効果あったかなと思って
ベンチマークとってみたんだが、全然効果なし。(w

そのとき使ってたのは HotSpot Server VM だったんだが、
ループを繰り返すたびに最適化が進んで実行速度が上がっていくのは
本当小気味よかったな。

421 :デフォルトの名無しさん:03/05/03 00:43
>>414 は可変値なわけだが。

422 :デフォルトの名無しさん:03/05/03 01:37
>>421はいいトコついたッ!

でも、処理中にサイズ変更がないことが前提じゃないのかな?
そうでなけりゃ質問者の2つ目の例はありえないよ。
通常、ランダムアクセスのList実装に対する
コレクションイテレートの好ましいイディオムは...
for (Iterator i=list.iterator(); i.hasNext();) {
// 処理
}
なんだから。

>>414
ちなみに僕は、array.size()がループ内での処理中に
サイズ変更が絶対に起こりえないと保障でき、かつ、
array.size()をこのループの繰り返し回数を導出する
ためだけに利用するのであれば、次のような方法が最善である
と信じています。Javaは「Write Once, Run Anywhere」
(1回書けば、いろんな環境で動く)なんていっちゃってるしw
結局、最適化は実装依存なわけだし。

for (int i=0, n=array.size(); i<n; i++) {
//処理
}

僕は別にベンチマークしたわけじゃないから効果の程はわからないけど。
質問者さんの記述した2つのループとの違いは、
forループのステートメントにカウンタ変数とループの
上限値変数の2つの変数を宣言し、初期化しています。
これによって、パフォーマンスだけではなく、変数スコープ
についても最適なものになります。


423 :デフォルトの名無しさん:03/05/03 01:49
toArrayしてから回してみたらどうかなw。


424 :401:03/05/03 01:55
>>405
禿しくクスコ!(・∀・)
とっても参考になる。
多謝。

425 :デフォルトの名無しさん:03/05/03 02:02
>>421
可変値であることを考慮しても大して変わらんと思われ。

426 :デフォルトの名無しさん:03/05/03 02:37
小数点ついている数値を
小数点以下を切り捨ててintに変換するものは無いでしょうか?
Mathクラス見ましたけどありませんでした

427 :デフォルトの名無しさん:03/05/03 02:54
double d = 0.123;
int i = (int) d; // 0.123の小数点以下を切り捨ててintに代入(0)

428 :デフォルトの名無しさん:03/05/03 02:58
キャストじゃだめなの?
眠くて頭回んないけど、+に関しては満たしてそう。

429 :デフォルトの名無しさん:03/05/03 03:00
>>422
forの初期化式で宣言する変数がすべて同じ型ならいいけど
違う型が混ざってる場合はうまく書けないよねえ。
そういう場合はどうしてますか?

430 :デフォルトの名無しさん:03/05/03 03:10
ArrayListは、入れた順番どうりに入ってることが
保証されてるんでしょうか?

431 :401:03/05/03 03:11
>>405
とりあえず今、テストさせてもらってます。
HexInputStreamクラスの、read()メソッドは、returnの部分が

return (
  (( Character.digit((char)ch1, 16) & 0x0F) << 4) |
  (( Character.digit((char)ch2, 16) & 0x0F) << 0)
);

こうなるかと思うのだが、いかがだろうか?
ch1を16進化した際に、4bitシフトさせて上位に移動し、
ch2をORで加算(論理和)ってことでしょ?

んで、これを実装して、テストコード部分も使わせていただいているのだけれど、
HexOutputStreamは、うまく動いてる。
この結果をHexInputStreamを使う側に食わせたときに、

ObjectInputStream in = new ObjectInputStream(new HexInputStream(bais));

の部分で、「InputStreamは、シリアライズされたオブジェクトを含んでないぞ(゚д゚)ゴルァ」
と、java.io.StreamCorruptedExceptionで怒られてしもうた。
今、ここを追っかけてるところ。




432 :bloom:03/05/03 03:13
http://homepage.mac.com/ayaya16/

433 :デフォルトの名無しさん:03/05/03 03:13
すんません質問です。

Javaアプレットを作ってHPにあげました。
俺はプレイできて、友人も一人だけプレイできたのですが、
ほとんどの人はプレイできないといいます。
Javaアプレットのあるページに飛ぶと、灰色の画面が映るだけだと。

なぜなんでしょうか・・・。

434 :デフォルトの名無しさん:03/05/03 03:24
>>430
はい

>>431
> ch2をORで加算(論理和)ってことでしょ?
そうだな、失礼。

> の部分で、「InputStreamは、シリアライズされたオブジェクトを含んでないぞ(゚д゚)ゴルァ」
そういえば read(byte[], int, int) もオーバーライドしてやらないとダメかも。前に一回
ハマって半日悩んだことがある。何でかは FilterInputStream#read(byte[],int,int) の
ソースを参照。ハァ? と思うかも。

public int read(byte[] buffer, int offset, int length) throws IOException{
  int count = 0;
  for(int i=0; i<length; i++){
    int ch = read();
    if(ch < 0)  break;
    buffer[offset + i] = (byte)ch;
    count ++;
  }
  return (count == 0 && length > 0)? -1: count;
}

435 :デフォルトの名無しさん:03/05/03 03:30
ちなみに FilterInputStream#read(byte[],int,int) の中身はこう↓

public int read(byte b[], int off, int len) throws IOException {
  return in.read(b, off, len);
}

16進数 ASCII のデコードしないで下層のストリーム直接バッファに読み込んでる。
(FilterOutputStream#write(byte[],int,int) はそんなこと無いのに)

汎用的に作りたかったら skip() とか available() とかも実装できるかな。
2 で割るだけだから。

436 :デフォルトの名無しさん:03/05/03 03:38
>>433
うまく行かない友達に「Java コンソール」というものを表示してもらって、
その内容をメールでもらってここに貼り付けろ。Java コンソールの出し方は
このレスのちょっと上にあったはず。

多分おまいと友達一人のマシンには JDK 1.4 が入っており、それ以外は
MS JVM が使われ、さらにおまいのアプレットが JDK 1.2 以上の API を使って
いると予想。

437 :434:03/05/03 03:40
うまく動いた。再度、禿しくサンクスコ(・∀・)

とはいえ、
return (count == 0 && length > 0)? -1: count;
ここがうまく理解できてない。

とりあえず修行が禿しく足らんことを自覚したので、
回線切らずに、JDKのソースの海に修行しに逝ってきます。


438 :437:03/05/03 03:40
まちがえた。
名前欄に変なこと書いた。
>>434
ね。重ねてサンクス。

439 :デフォルトの名無しさん:03/05/03 03:47
>>423
設計次第だねw
そうする場合は
bounds = arrayのtoArray()で任意の型の配列を取得;
for (int i=0; i<bounds.length; i++) {
// 処理
}
で処理するよね。
フィールドの場合はオーバーヘッドは気はしなくていいし。

>>429
ネタかなw
toArrayメソッドを利用するのは通常、同じ型である場合だよね。
わかってて言うのはだめだよ。
純粋に質問しているなら答えはこうだね。
Arrayに入っているものに対して処理を行う際にArrayに入っている
データの型が複数あるなら形によって処理を分岐する。
まあ、この場合の分岐の選択肢はif文やswitch文だけじゃないよね。

>>430
シングルスレッドで動いているなら大丈夫だね。
マルチスレッドならVector使うか自分で同期とった方がいいかな。



440 :デフォルトの名無しさん:03/05/03 04:57
たぶん簡単な質問だと思いますけど
String型の文字列をchar配列型にして
文字の順番を入れ替えるってできますよね?

441 :デフォルトの名無しさん:03/05/03 05:00
>>421
だから静的には最適化できないけど
JITコンパイラなら最適化できる格好のケース

442 :デフォルトの名無しさん:03/05/03 05:01
>>440
toCharArray

443 :デフォルトの名無しさん:03/05/03 05:03
>>440
toCharArray とか使えばできるけど、元の String には反映されないよ。

444 :デフォルトの名無しさん:03/05/03 05:18
char[] array = text.toCharArray();
// 文字の順番入れ替え...
text = new String(array);

445 :440:03/05/03 05:19
なるほど、そうすればString型に戻せるわけですか。
ありがとうございました。

446 :デフォルトの名無しさん:03/05/03 09:08
>420 wara

447 :128:03/05/03 09:29
doubleの配列aがあってその各値の大小に応じて
三つのdoubleの配列b,c,dに振り分けたいのですが
b,c,dの長さを決めるいい方法はないでしょうか?
いま私がやっているのはまずaの全ての値を調べて
b,c,dにはいる数をカウントしてb,c,dを作成し
再びaをの値を調べてb,c,dに振り分けているのですが
aを二回調べているので何か非効率的な気がします。

448 :デフォルトの名無しさん:03/05/03 09:53
b,c,dの長さは可変なわけだよな。
いったんArrayListとかに振り分けていって最後に配列に変換とか。


449 :デフォルトの名無しさん:03/05/03 11:05

値の大きさに応じてB、C、Dの条件があったとする
で、最初にb,c,dの配列の大きさを決めておく
ポイントはa.lengthが配列のサイズになると言うこと
double[] b_temp=new double[a.length];
//以下c,d についても同様
int bcount=0;
int ccount=0;
int dcount=0;
for(int i=0;i<a.length;i++){
if(B){
b_temp[bcount]=a[i];
bcount++;
}
else if(C){
c_temp[ccount]=a[i];
ccount++;
}
else if(D){
d_temp[dcount]=a[i];
dcount++;
}
}
//で、あらためてコピーする
System,arraycopy(b_temp,0,b,bcount);
//c,dも以下同様に



450 :デフォルトの名無しさん:03/05/03 11:54
>>449
最終的にb、c、dのサイズが分かるんだからArraryCopyの直前に
double b=new double[bcount];
double c=new double[ccount];
double d=new double[dcount];
したほうがいいような…?

451 :デフォルトの名無しさん:03/05/03 12:08
>>450

×double b=new double[bcount];
○double[] b=new double[bcount];

452 :デフォルトの名無しさん:03/05/03 12:18
>>450
いや、最初に作ってるのは一時記憶用
もちろん
double b=new double[bcount];
double c=new double[ccount];
double d=new double[dcount];
は、やりますよ。書き忘れだ

453 : ◆IzdKJ.WAZA :03/05/03 12:20
>>411
遅レスですが完璧に動作しました!
ありがとうございました〜ヽ(´∀`)ノ


454 :デフォルトの名無しさん:03/05/03 13:03
Java を EXE から起動させるのはどうしたらいいのでつか?
Createprocess でコマンドラインを指定すれば動きますが、
javaw.exe とかではなくて EXE として動かしたいのです。

455 :動画直リン:03/05/03 13:13
http://homepage.mac.com/hitomi18/

456 :デフォルトの名無しさん:03/05/03 14:29
>>423
> toArrayしてから回してみたらどうかなw。
toArrayメソッドは、新しい(もしくは引数で指定された)配列に
要素の内容を#コピー#するメソッドだから、
その分オーバーヘッドがかかって遅くなってしまうと思われ。

>>439
> >>429
> ネタかなw
> toArrayメソッドを利用するのは通常、同じ型である場合だよね。
>>429が言っているのは
for (int i=0, n=array.size(); i<n; i++) {
ってイディオムの"int i=0, n=array.size()"って部分は
iとnが同じint型だからできることだけど、
そうじゃなかったらどうすんの、ってことだと思うけど。
まあ、この例だとiはListのindex、nはその最大値+1になるから
型が異なることはあり得んのだが。

>>422
> 通常、ランダムアクセスのList実装に対する
> コレクションイテレートの好ましいイディオムは...
> for (Iterator i=list.iterator(); i.hasNext();) {
重箱の隅をつつくようだが、これは
「ランダムアクセスを提供しないList実装」に対するイディオムだろ。
つーか、>>422が言っていることは
http://java.sun.com/j2se/1.4.1/docs/api/java/util/RandomAccess.html
に書いていることそのものなんだが。

457 :デフォルトの名無しさん:03/05/03 15:02
>>454
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&oe=UTF-8&q=JNI+Java+%E8%B5%B7%E5%8B%95

458 :デフォルトの名無しさん:03/05/03 15:55
>for (int i=0, n=array.size(); i<n; i++)
for (int i=0;i<array.size(); i++) でも、どうせコンパイラ
かHotSpotが最適化してくれると思うんだが…

つうか、こんなことがボトルネックになるようなこと、あんまり
ないと思うんだけど。

459 :デフォルトの名無しさん:03/05/03 16:23
>>458 そう、size()みたいなインスタンスの内部状態に変化を起こさず
かつ非常に短いメソッドの場合は最適化を期待するし、実際ベンチマーク
とっても差はでないよね。逆アセンブルしてないから断定はしないけど。
HotSpotより昔の実装だとクラスをまたいだインライン展開はやらなかっ
たんだけどね。

どうせ仮想機械というよりも実行時コンパイラといったほうが
正確なようになっちゃったんだから、C++みたいにinlineキーワード
とconstメソッドみたいなの導入しちゃってコンパイラに最適化のヒント
を与えられるようにならんかな。

460 :429:03/05/03 16:32
>>439
そうじゃなくて
for (初期化式; 継続判定式; 更新式) の初期化式で
int i = 0, n = array.size() を書くことはできても
たとえば int i = 0, double x = 0.5 みたいなのは書けないって話。

こういう場合は結局 double x = 0.5 を for ループの外に
書かないとダメでしょ?

461 :デフォルトの名無しさん:03/05/03 16:44
簡単なEchoプログラム作ったんですけど
一回目はエコーが正常にできるんですけど
二回目以降はサーバ側がCPU100%状態になって
固まってしまうんですけど、なにが原因なんでしょう?
ちゃんとソケットは閉じてるんですが。

462 :461:03/05/03 17:13
なんとか自力で解決。

で、新たな問題。
PrintWriterとかBufferedReaderでサーバ側作ると
一回ごとに終了してしまうものなんですか?

463 :デフォルトの名無しさん:03/05/03 17:14
>>461
while か for 文を使っている部分があるだろう。そこを晒せ

464 :461:03/05/03 17:20
>>463
while(inputLine!=null){
out.println(inputLine);
}
こうやってたのを
while((inputLine=in.readLine())!=null){
out.println(inputLine);
}
こう直したらうまくいきました。
何故かはわからなかったけど。

465 :デフォルトの名無しさん:03/05/03 17:26
>>464
一つ目のはinputLineがnull以外の場合に、無限ループになる
二つ目のはinputLineを1行読んで、null以外なら表示してループする。
nullならループを抜けるというもの。

466 :デフォルトの名無しさん:03/05/03 17:30
>>464
ちゃんと考えれ。何で無限ループになるのかわかんないようなら、
アナタは多分プログラマ向いてないぞ。

467 :461:03/05/03 17:32
>>465
nullほど。


>>462のやつでInputStream型やOutputStream型ので作ってあるのは
終了せずにそのままサーバが動き続けるようです。
でも、それだと文字列操作のやり方がわからないし。

468 :デフォルトの名無しさん:03/05/03 17:41
>>464
君、実は何も知らないだろw
初心者向けJava本勝って基礎から勉強しなさい。
いきなりネットワークなんて無茶だよ…
さもないと韓国のように自称「ネット先進国」と
言わざるゐえなくなるぞ

469 :454:03/05/03 17:41
>>457
JNIを使うのでつね。サンスコ。
http://www.ki.rim.or.jp/~kuro/Java/JNI/

470 :461:03/05/03 17:45
>>468
マジで初心者なんです。
で、いろんなサイトのソースをコピって改造して
やってるとこ。

なんか>>462の問題も解決しました。
力技万歳。

471 :461:03/05/03 17:48
どうやらwhile(true)が鍵だったらしい。
サーバの方作って起動したらノートン先生がトロイ警告出したり
したこともあったし。
まぁ本読んで基礎もやりますよ

472 :447:03/05/03 21:10
>>448-452
レスありがとうございました。
配列を部分的にコピーできるのは知りませんでした。
その方法でやってみます。

473 :デフォルトの名無しさん:03/05/03 22:50
サーブレッツやJSPをやってみたくてサーバーを導入したいんですけど
お金がなくてPCが買えません…
今使っているWin2000にサーバーソフトを入れたいのですが
おすすめな者を教えてください。おねがします。

474 :デフォルトの名無しさん:03/05/03 22:51
>>473
何か根本的におかしな子と言ってる気がするが、答えはTomcatってとこだろう。

475 :デフォルトの名無しさん:03/05/03 22:52
>>473
Tomcat 4.1.24
http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.1.24/bin/jakarta-tomcat-4.1.24.exe

476 :デフォルトの名無しさん:03/05/03 23:34
SunOneStudio4入れるとTOMCATもインストールされる

477 :デフォルトの名無しさん:03/05/03 23:47
がっこの宿題でサーバー&クライアント(+PIPE)を使ってクライアント
がサーバにユーザーネームとパスワードでログオンし、メッセージを書
いたり受け取ったりすることができるプログラムを書けというのが出た
んですけど簡単な例とか載ってるHP知ってる人いませんかね。


478 :デフォルトの名無しさん:03/05/04 00:01
>>477
クライアントとサーバが PIPE で通信すんのか?

479 :デフォルトの名無しさん:03/05/04 00:11
PIPEは、READER と WRITER を使って、クライアントのメッセージ
のやり取りに使うんだと・・

480 :デフォルトの名無しさん:03/05/04 00:18
>>477
ttp://x68000.startshop.co.jp/~68user/net/
ここだろうな。

481 :デフォルトの名無しさん:03/05/04 00:22
ちょっくら見てきます・・

482 :デフォルトの名無しさん:03/05/04 00:24
Javaじゃない・・ですね。JAVA言語ではなんかありますか?

483 :デフォルトの名無しさん:03/05/04 00:36
うはっ。ここJava初心者スレだったね。スマソ。
ソケット扱える言語だったら同じように書けばできるけど初心者には難しいかもね。
Javaで書いてあるところは知らんので検索するなり、次のポインタを待ちなさい。


484 :デフォルトの名無しさん:03/05/04 00:38
はい!

485 :デフォルトの名無しさん:03/05/04 01:26
>>477
1. ソケット使ってネットワーク通信
2. パイプ使ってスレッド間通信

どちらかはっきりしる

486 :デフォルトの名無しさん:03/05/04 01:41
java.exeが以上終了(Abort)した時、
hs_err_pidプロセスID.log(hs_err_pid1012.log等)
というファイルができるんですが、それを作らせない方法知りませんか?


487 :デフォルトの名無しさん:03/05/04 01:48
ぬー、画像フォーマットの検出方法を忘れた

488 :477:03/05/04 01:57
えっと、ソケットは使いません。
import java.net
import java.io
import java.util
の範囲でできるものを探してます(何しろ初心者なんじゃ)。
画面も、スイングみたいなものは使わず、ただのアウトプットに
RUNしたあと
ユーザーネーム:
パスワード:
で、サーバがパスワード確認したら、

1.メーセージを読む
2.メッセージを書く
3.終了

みたいに表示・・・どですかね?

489 :デフォルトの名無しさん:03/05/04 02:02
>474-476
TOMCAT入れたよ!サンクス!


490 :デフォルトの名無しさん:03/05/04 03:27
Stringからfloatへの変換がわからないのですが。
すいませんおしえてください。

491 :デフォルトの名無しさん:03/05/04 03:29
float.valueOf(String s)

492 :デフォルトの名無しさん:03/05/04 03:36
Sun JDK1.4.2beta あげ

493 :デフォルトの名無しさん:03/05/04 03:40
>>492
1ヶ月前に出てますが。

494 :デフォルトの名無しさん:03/05/04 03:53
http://6822.teacup.com/fucker/bbs

495 :デフォルトの名無しさん:03/05/04 03:58
Σ(゚Д゚)

496 :422:03/05/04 04:44
>> 456へ

>>>422
>> 通常、ランダムアクセスのList実装に対する
>> コレクションイテレートの好ましいイディオムは...
>> for (Iterator i=list.iterator(); i.hasNext();) {
>重箱の隅をつつくようだが、これは
>「ランダムアクセスを提供しないList実装」に対するイディオムだろ。
>つーか、>>422が言っていることは
>http://java.sun.com/j2se/1.4.1/docs/api/java/util/RandomAccess.html
>に書いていることそのものなんだが。
>
またネタかな?
「ランダムアクセスのList実装」で間違いない。


497 :422:03/05/04 04:57
>> 456へ
50点だな。おいらも50点だが。
文の構成変えてて間違えたみたいだw
まあ、あそこで言いたかったのは「ランダムアクセスを提供しないList実装」
でもなく、単に「コレクションイテレートの好ましいイディオム」だけどね。

ちなみに2つ目に書いたのが、「ランダムアクセスのList実装に対する
イテレートの高速なイディオム」だな。
これは前提条件を満たさなければ好ましくないわけで、「通常」ではないな。

書き込み前にちゃんとチェックせねば。


498 :422:03/05/04 05:09
>>460
>>>439
>そうじゃなくて
>for (初期化式; 継続判定式; 更新式) の初期化式で
>int i = 0, n = array.size() を書くことはできても
>たとえば int i = 0, double x = 0.5 みたいなのは書けないって話。
>
>こういう場合は結局 double x = 0.5 を for ループの外に
>書かないとダメでしょ?

ちゃんと読んだ?414はArrayListオブジェクトに対する
イテレートする際のパフォーマンスのよいイディオムを
質問したんだよ?

それとその例の使いどころを教えてよ。
それが可能だとして、どうしてそうしたいの。
おいらはそうしたいと思ったことないぞw


499 :動画直リン:03/05/04 05:13
http://homepage.mac.com/hitomi18/

500 :monoのCSHAERPPPPアーティストグレイ風なミュージシャン:03/05/04 05:46
>490
オーケー、ブラザー俺が秘密にセッションしちゃうぜマイハート。
いいかい?ストリンぐからダぶるに変換するのは棚、

using System;

public class conv {
 public static void Main(String[] args){
  double a;
  string b="123";
  a=b.ToDouble();
 }
}

と書いてだな、

>csc conv.cs
>conv.exe

だ。

501 :デフォルトの名無しさん:03/05/04 05:56
>>488
ソケットって知ってて言ってんの?

502 :デフォルトの名無しさん:03/05/04 09:22
電球の差し込み口

503 :デフォルトの名無しさん:03/05/04 09:33
>>502
PentiumIIは電球だった!

291 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)