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

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

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

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

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


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

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

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
javaアプレットとアプリケーションって
JAVAを勉強したら両方できるようになるの?
なるよ
1発目からしょっぱいのきたなー
コマンドプロンプトからjavaを実行したときに
ウィンドウのフレームを表示しないように(全画面表示)したいのですが可能でしょうか?
>>6
ありがとうございました
試してみます
85:04/08/05 14:07
以下の部分が全画面表示することは分かりました。
GraphicsDevice device;

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();

try{
JFrame frame = new JFrame(gc);
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
frame.setVisible(true);
}catch(Exception ex){
device.setFullScreenWindow(null);
System.exit(0);
}
でも今まで自分はjavaswingではなくjava2d?を使ってきました。←おかしな表現ですが・・・
MyUniverse universe = new MyUniverse(this);
Canvas3D canvas = new Canvas3D(config);
以上のような感じです。
その結果ウィンドウが2つに・・・
1つにするためにはjavaswingでプログラムを1から書き直すしかないのでしょうか?
>>8
表現がおかしいのは分かってないからでしょ
それは java3D 。Swing とは話の次元が違う。

>1つにするためにはjavaswingでプログラムを1から書き直すしかないのでしょうか?

> JFrame frame = new JFrame(gc);
これを書いたことで1つ増えたんだから、これ消して代わりに今でてる Window もってくれば?
jspを作れる人はサーブレットも作れるのですか?
逆とか。
片方しかできない人もいますか?
普通はセットでできるものですか?
>>10
普通はセットでできる物だが。
そんなこと聞いてどうするんだ
たとえば、jsp単体でも掲示板とか作れますよね。
そうしたらサーブレットは使えないんじゃないかなと思ったんです。
いや、だから使えなかったからどうしたというんだ。
webブラウザでアップレットを起動した場合、
ファイル読み込みはできるんでしょうか?
1615:04/08/05 16:12
失敬。アプレットでした
>>13
できるできない、書ける書けない、使える使えない、なんてくだらないこときくな。
プログラミングなんて、覚えればできる。覚えなきゃ出来ない。それだけのことだろ。
誰でもいつか覚えられるんだから誰でもいつか書ける。
JSP は単純にサーブレットに変換される。変換の定石が覚えられれば誰でもできる。
近いもんなんだからすぐに覚えられる。だからすぐに書ける。
ある分野を勉強してる奴は短時間でその分野のソースが書ける。
でも勉強したことあってもぼんくらなら時間がかかる。
勉強したこと無い奴はそれだけ時間がかかる。
でもプログラミングが得意な奴の、性格・経験的に合ってる分野ならサンプルソースみただけで即座に自分のものにできる。

さぁ、ほんとのところ君は一体何が聞きたいのだね。
ぼんくらでもかたっぽで実践積めば同時に両方習得したことになりますか? ってことか?
ぼんくらには無理。

>>15
基本的にはできない。もし知らんユーザに使わせるつもりなら、やめたほうがいい。
1815:04/08/05 16:19
>>17
やっぱりそうですか、、
アプレットビューアでは読み込みできてブラウザだとできないんで
「あれ?」と思ってました。
ありがとうごまいます
短距離を速く走れる人は
ハードル競技も速く走れますか、みたいな無駄な質問
小学生か
2013:04/08/05 16:35
あん?お前らスレタイ読めねーのか?
「初心者大歓迎」って書いてんだろ?
大歓迎してもてなせや。
>>20
ここはぼったくりバーなんだよ。
ど素人はすっこんでろ。
俺のほうが初心者歴なげーんだよ、俺に挨拶もなしにでけー態度とるな
上下関係大事なんだよ初心者界じゃ、ごめんなさいしなさい。
23デフォルトの名無しさん:04/08/05 17:29
jvm から os の環境変数ってどのようなクラスを使用したら獲得できますか?
初心者っぽい質問ですまそ。
>>23
System.getProperties()
2523:04/08/05 17:41
>>24
ありがとうございます。しかし、自分も
System.getProperties().list(System.out);
でgetProperties() が os に依存する環境変数まで持ってきてくれるのかと思っていた
んですが、やはりダメでした。 例えば、os (Windows 2000です) で設定されている
`KANWADICTPATH' という環境変数はどのようにしたら jvm 内で取得可能なのでしょうか?
>>25
System.getenv()
deprecatedだけど
基本的にはできません。
OS 上で動き環境変数を利用するのはあくまで JVM であり、
JVM の中で動いているプログラムからは OS 独自の情報は取得できません。
1) シェルスクリプトにおいて、main の引数に与えましょう。
2) JNI を使いましょう。
3) org.apache.tools.ant.taskdefs.Execute などを利用しましょう
4) 1.5 でなら取得できる模様です
 http://www5.airnet.ne.jp/sakuraba/java/laboratory/J2SE1.5/TinyTips/EnvVariables/EnvVariables.html

2823:04/08/05 18:03
>>26さん
私の使用するjava1.4.2_5 では、 getenv は使用できないようです。
java.lang.Error: getenv no longer supported, use properties and -D instead: CLASSPATH
at java.lang.System.getenv(System.java:691)
at A.main(A.java:18)
Exception in thread "main"
2923:04/08/05 18:06
>>27さん
いやーありがとうございました。m(_ _)m
助かります。

自分の場合(1) が今のところ有力候補ですが、(4) はビックリしました。
タイガーでは使えるなんて・・・
JNI は、ちょっと時間かかっちゃうかなー。
(3) の ant.taskdefs はこれからget してみようかなと思います。

では。
3023:04/08/05 18:18
>>27さん
ハハ、`org.apache.tools.ant.taskdefs.Execute' 面白いですね。
環境変数が全部でてきましたわ。 ^^;
315:04/08/05 18:43
>>9
それはそうなのですが
public class FirstApplet extends Applet {
public FirstApplet() {
}
public static void main(String[] args) {
FirstApplet applet = new FirstApplet();
MainFrame frame = new MainFrame(applet, 500, 500);
}
}
こういう書き方なのでどうやってやればいいのかさっぱり・・・
public class FirstApplet extends Applet {
public FirstApplet() {
}
public static void main(String[] args) {

GraphicsDevice device;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
device = ge.getDefaultScreenDevice();
GraphicsConfiguration gc = device.getDefaultConfiguration();
try{
ここになんて書けばいいのでしょうか><
frame.setUndecorated(true);
device.setFullScreenWindow(frame);
frame.setVisible(true);
}catch(Exception ex){
device.setFullScreenWindow(null);
System.exit(0);
}
}
俺はJava3D は全く分かっていないので以下そのつもりで。

MainFrame は Window のサブクラスだけどコンストラクタ中で既に表示されてるわけだから、
setUndecorated は適用できない。
というわけであとから表示できる Window を作らなければならない。
だから JFrame のインスタンスを作って Applet を add するようにしてみたとする。つか、してみた。
JFrame frame = new JFrame();
frame.getContentPane().add(applet);
frame.setUndecorated(true);
device.setFullScreenWindow(frame); //ここで勝手に setVisible されるので改めてしなくてもいい
そうするとだな、少なくとも手元の環境では Canvas3D が何にも表示してくれない。
配置はされている。MouseListener をしかけるとクリックに反応してるのがわかる。
OpenGL か何かしらんが、3Dエンジンが出力先を見失ってるんじゃないかと思うんだがなんともわからん。

ちなみに、undecorated して fullscreen せず setBounds だけしておいた Frame から、
alt 押してメニュー出して最大化すると期待通りの結果になる。こうなるといいんだが。
力になれなくてもうしわけないね
335:04/08/05 19:15
>>32
できました!!!!
質問に答えてくださった皆様ありがとございました。
>>10
ServletができるならJSPもできる。
JSPができてServletできないこともあろうが
デバッグなどをやっているとServletもできないと話にならなくなる。
>>18
jarsignerで署名すればできるぞ。
Apache Antを使えば楽に署名できる
36デフォルトの名無しさん:04/08/05 19:32
>>22
while(true){
 System.out.println("ごめんなさい");
}
でも近頃の流れだとServletはJavaコーディングだけど
JSPなんてタグばっかり・・・
>>33
何でわしの環境でできないんだろう。哀しひ。
39デフォルトの名無しさん:04/08/05 19:34
いまから、このスレッドに
ごめんなさいオブジェクトをセッションに格納する。
public static final String SORRY = "SORRY";
session.setAttribute(SORRY, "ごめんなさい。");

謝罪要求されたときは以下の文字列を貼り付けよ。
session.getAttribute(SORRY);
貼り付けるだけで謝罪したことになる。

>>36
session.getAttribute(SORRY);


よし、謝罪完了!
40デフォルトの名無しさん:04/08/05 19:35
>>37
Strutsだ
Tapestryだ
41デフォルトの名無しさん:04/08/05 19:37
謝罪コードを使いやすくする!

public String sorry(){
 return (String)session.getAttribute(SORRY);
}

これを使うときは

sorry()とするだけで謝罪完了だ!
session.setAttribute(SORRY, "てやんでこんちくしょう");
public static final String SORRY = "ぬるぽ";
44デフォルトの名無しさん:04/08/05 21:22
コンテキストに保存してさらに使いやすくしよう。

public abstract class SorryServlet extends HttpServlet {
 protected void init(ServletConfig servletconfig) throws ServletException {
  super.init(servletconfig);
  if(servletConfig.getServletContext().getAttirbute(SORRY) == null){
   servletConfig.getServletContext().setAttirbute(SORRY, "悪ぃな。おめえが謝れっていうから謝ってやるよ。");
  }
 }
}
45デフォルトの名無しさん:04/08/05 21:50
String strSyazai = "すみません";
for(;;){
 strSyazai += strSyazai;
 System.out.println(strSyazai);
}
StringBuffer strSyazai = new StringBuffer("すみません");
for(;;){
 strSyazai.append(strSyazai);
 System.out.println(strSyazai.toString());
}
こっちのほうが倍々に増えていい
Aというクラス内にある int a を、
実装されたB,Cにおいて共有したいのですが、可能でしょうか?

たとえば、
B.a = 100; としたら、
C.a も自動的に100にしたいのです(内部でつながっている状態)。

Aの同じインスタンスを、BとCで持つ。
Aをシングルトンにするってのもいいなー。
static
Integer
>>50
ダウト
age
53デフォルトの名無しさん:04/08/06 14:35
いまこそ本スレage
>>990
ガッ
おぼえてないな。
まちがいなくおぼえてないな。
990までは。
前スレのでしょう
ごめんぬる○なさいのでしょう
996にしてほしかったな。
>>47
> Aというクラス内にある int a を、
> 実装されたB,Cにおいて共有したいのですが、可能でしょうか?
>
> たとえば、
> B.a = 100; としたら、
> C.a も自動的に100にしたいのです(内部でつながっている状態)。
>
>

●Propertiesクラス、直列化を使ってファイルか呼ぶ。
●Aクラス、Bクラス、Cクラスの共通のスーパークラス、インターフェースを作り変数を
スーパークラスまたはインターフェースにプルアップする。

ただしこの場合は定数でないときはやめたほうがいい。
定数でないときはスーパークラス内のフィールドはprivateまたはpackage privateまたはprotectedにして
getterメソッドからのみアクセスできるようにする。setterも用意する。
しかしいずれにしてもこのやり方は煩雑になりやすい。
よってプロパティファイルやXMLファイルから拾うとかのほうがいい。
定数なら。

ようするに設計が悪い。
aを静的に宣言するんじゃだめなのかなー・・
6147:04/08/06 19:23
>48-60


色々意見ありがとう。
JAVA入門書を図書館で借りたのですが、そこまで突っ込んで書いてある部分が無かったので困ってました。
キーワードがいっぱい出てきたのでヒントになりました、調べて見ます。

62デフォルトの名無しさん:04/08/06 19:33
Javaアプレットでおしえてくだちい。プログラムの実行を、
ある地点で完全に停止させたいのですが、いい方法ありま
すか?while(true) { ; } だと CPU 占拠しちゃうんで、
それ以外で。stop() 呼び出してもうまく止まらないし。
sleep() 長時間呼び出しの場合、それで Thread 呼び出し
しないといけないのはナシの方向で・・・御願いします。
いや、考え方の問題なだけであって、ちゃんと書いてある。
クラスが何なのか、インスタンスが何なのか分かってれば、
んで文法がわかってればどうすべきかも分かる。
そこあいまいにしとくと幾ら本を調べてもうまくいかない。

共有したいものをプリミティブ型の、各クラスに直接ぶら下がったフィールド値にしたい、
という、はっきりした条件を君が示したからそれなりの答えも出ているが、
その条件自体が適切であるかどうかは、君がどんなプログラムを組みたいか分からないので評価できない。
はっきり言って、みんなちょっと疑問に思いながら回答している。
>>62
完全に停止、の定義がわからない。
各 Component がユーザの要求に対してなんらの反応を示さない、ということ?
65デフォルトの名無しさん:04/08/06 19:52
>>64
アプレットをその時点で明示的に破棄してくれるのが理想です。

たとえば、
 処理A
 if (条件 true) {
  プログラム停止(アプレット破棄)
 }
repaint() ;
 処理B
という流れで、repaint() されない所でプログラム停止させたいの
でつ。本当はスマートじゃないのは重々承知ですが。
exitとかで脱出とか無理だっけ・・・?
>>65
設計がおかしいだけでは?
そのコードが走るイベント部分がどーなってるかだけ
多分ポカーンとしている人が沢山いる気がする。

アプレットはブラウザ上で実行されるわけで
ブラウザを操作される以上描画自体は阻止できないと思うが。

paint()
 if(!条件)処理/*条件を満たすといつもの内容は描画しない*/
みたいなのを加えればいいとかそういう次元の話なのかしら?
なんでrepaint呼んじゃまずいのか気になってしかたない。
paint メソッドの中にいろいろ書いてるからでしょう。
初心者とか、バカが書いてサイトで垂れ流してるコードにありがち。
>>68 でも理解できなかったら我々にとっては放置した方が身のためかも知れん。
public class MyApplet extends Applet ...
 MainPane pane;

 if (条件) {
  remove(pane);
 }

class MainPanel extends Panel ...

これでもだめか。

なんにせよ「停止」なんちう言葉が
ほんとうに似つかわしいかどうか一回深く考えた方がよい。
72デフォルトの名無しさん:04/08/07 00:15
>>47
もう答えは出てますよ。
Aクラスのint aをstaticにすればいいだけです。
そうすればB.aとC.aは連動します。同じ変数なのですから。
ただそれだけです。
ちなみに>>58はネタ師です。簡単な問題をわざとひねくり回して
しっちゃかめっちゃかな事を言う性質の悪い人です。
スルーしてください。
>>72
そこまでいいきるのはおかしい。

将来、新たにAを継承したDとEを作り
aを共有しようとする可能性だってある。
aがstaticなら望まずともBともCとも共有してしまう。
Aをベースにポリモフィズムという設計なら破綻する。

継承ではなく委譲にすれば
柔軟な形で共有することもできる。
静的なアクセスにしばられることもない。

というわけで
>>47に書かれた情報だけで
解決策がstaticとはいいきれない。

なんつってまぁ多分解決だろうけど。
ちょっと書いてみたかっただけよん:p
Stinrg#split( String regex )
でregexに"\\"をいれるとどんな文字列で
メソッドを実行しても↓のようなエラーがでてしまします。

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
^

\で文字列を区切りたいんですが、どうしたらいいでしょうか?
75デフォルトの名無しさん:04/08/07 02:49
>>74
こうしてください。

int index=text.indexOf("\\");
String s1=text.substring(0,index);
String s2=text.substring(index);
76デフォルトの名無しさん:04/08/07 04:35
JTextFieldのMS-IMEがデフォルトでONになってしまいます。
テキストコンポーネントのインプットメソッドをONにしたりOFFにしたりするにはどうしたらいいですか?
77デフォルトの名無しさん:04/08/07 05:22
>>47   例えばこういうやり方もある。

class A {
  static class Data {
    int a;
  }
  private static Data dat=new Data();
  Data mydat;

  A() {
    setData(dat);
  }
  void setData(Data d) { }
}
class B extends A {
  void setData(Data d) {
    mydat=d;
  }
}
class C extends A {
  void setData(Data d) {
    mydat=d;
  }
}

こうすると Bオブジェクトの「int a」(=mydat.a)と
Cオブジェクトの「int a」(=mydat.a)は、連動する。
なお、Aを拡張してD,Eクラスを作った時にsetData(Data d)を
上記の様にオーバーライドしなければ、そのクラスの「int a」(=mydat.a)は
B,Cの「int a」(=mydat.a)とは連動しない。(>>73の言う様になる)
よって「int a」(=mydat.a)が連動するサブクラスを選ぶ事ができる。
>>74
"\\\\"
>>76
java.awt.im.InputContext#setCompositionEnabled(boolean)
java.awt.Component#getInputContext()

java.awt.Component#enableInputMethods(boolean)
>>61
デザインパターンを勉強せよ
ぶっちゃけ  

  
んな大げさな。ぶっちゃけ。
ありえない。
自動的にONになってるというのが解せんが、
JavaにはインプットメソッドのON/OFFという概念はない。

Windows版でおそらく質問者の意図に近い解決法は

入力文字種を漢字に。(日本語インプットメソッドの擬似的ON)
>> getInputContext().setCharacterSubsets(new Character.Subset[] {InputSubset.KANJI});
入力文字種を制限しない。(日本語インプットメソッドの擬似的OFF)
>> getInputContext().setCharacterSubsets(null);

だが、これは厳密にはインプットメソッドのON/OFFをしているわけではない。
現在のAPI実装では結果的にはそうなってるように見えるが。

JavaHouse Brewers MLの 24510、24682あたりのスレッド参照。
ttp://java-house.jp/ml/archive/j-h-b/024510.html
ttp://java-house.jp/ml/archive/j-h-b/024682.html
>>75
>>78
レスどうも
ためしてみます
>>83
JavaHouse Brewers MLの 24510、24682あたりのスレッドって、1.2時代の話でしょ。

1.3からは>>79が書いてるように
java.awt.im.InputContext#setCompositionEnabled(boolean)
が使えるから、そーゆー事しなくても良いはず。
eclipseスレとどっちで質問するか迷ったのですが、あっちは荒れてるみたいなので
こっちで質問させてください。
eclipse2.1.3を日本語化したものを使ってるのですが、日本語版J2SEドキュメント
を http://java.sun.com/j2se/1.4.2/ja/download.html から落として、
JREの設定からJavadoc URLで、解凍したドキュメントのdocsディレクトリを指定した
のですが、エディタでSystem.out.printlnとかにマウスカーソルをホバーさせても
英語で説明が表示されます。docsの中のhtmlを見てみると日本語で書かれているので
間違えて英語版を落としてきたとかいうことはありません
どうすれば日本語のドキュメントを読むことができるのでしょうか
>>86
Eclipse Wikiの日本語化のとこに書いてあるだろ。
>>86
そこはJavadocじゃなくてソースコードをみているから。
>>87
おお、こんな便利なものがありましたか
ありがとうございます

>>88
てことは、Javaプログラマの皆さんは、マニュアルが必要なときはブラウザを開いて
直接docs/ja/index.htmlから読んでるということでしょうか
>>89
> てことは、Javaプログラマの皆さんは、マニュアルが必要なときはブラウザを開いて
> 直接docs/ja/index.htmlから読んでるということでしょうか

EclipseならJavadocのURLを設定しておけばShift + F2でAPIドキュメント開けるでしょ。
俺はmergedoc使ってるけど。
意外とブラウザで開いておくのもみやすいもんだよね

タブブラウザなことが前提だけど
ブックマークしていくと面白いようにさがせるよ
>>89-90
それすらめんどくさくて英語を読んでいます
職業プログラマは少なからずそのまま読んでおることでしょう
ていうか読まざるを得ないからな、標準APIはともかく
commonsとかは
94デフォルトの名無しさん:04/08/07 23:12
>>92
DOCを読む事自体が、すでに面倒くさい行為でしょう。
職業プログラマならSEのクラスは、ほぼ暗記してるので
脳内のAPIリファレンスから参照してるはずです。
>ほぼ暗記してるので
>脳内のAPIリファレンスから参照してるはずです。

ということは、自分が今知っている範囲のことしかできないってことね。

記憶力の無駄遣いだと思う。
丸暗記より「どこを見れば何がわかる」をたくさん知っている方が効率的。
Javaは多重継承出来ないって聞いたんですが本当ですか?
>>96訂正します。
Javaではクラスの多重継承が出来ないと聞いたのですが本当ですか?
本当です
そうですか、残念です。
ややこしくなるから、わざとできないようにしてあるんでしょう・・・?
多重継承はなくても、多重継承みたいなことはできるはず。
javaを使って、WindowsマシンにつけたGPIBボードを操作したいのです。
ボードメーカーからは、dllが供給されています。

そこで質問なのですが、javaで下記のようなことはできるのでしょうか。

バイナリデータ列を任意に作ってそこへのポインタを引数にする。例えば、
 01 02 03 58 00
という5バイトのデータ列を作り、その先頭データへのポインタを、DLL呼び出しの
引数に使うことができるか、です。perlだとpack()が使えるケースです。

すいませんが教えてください。
そういうのはJNI使ってブリッジ用のDLLを作ったほうが楽。
だけど、メーカーによってはたとえばNIだったらGPIBボード
用のJavaライブラリ公開しているとこあるよ。
>>102
なるほど、JNIというのがあるんですね。これならできそうです。

今はperl/Tkでいろいろ書いているんですが、javaに乗り換えようかな、とも思っています。
でも速度の点でどちらのほうが優位なのか分からず踏み切れずにいます。
perl/Tkは日本語をサポートしていないことが最大の問題なのではありますが…
104デフォルトの名無しさん:04/08/08 07:08
Javaで掲示板とかチャットを作ってみたいんだけど、参考になるソースはどこかにあるかな?
105デフォルトの名無しさん:04/08/08 07:25
>>101
byte[] binaryData = {0x01, 0x02, 0x03, 0x58, 0x00};

簡単にできます。
106デフォルトの名無しさん:04/08/08 07:28
>>101
byte[] binaryData = {0x01, 0x02, 0x03, 0x58, 0x00};
callDllOfGPIB( bynaryData );

簡単にできます。
>>104
はい、どこかにあります。
108デフォルトの名無しさん:04/08/08 10:21
http://www.geocities.co.jp/SilkRoad/5552/ColorTriangle2.html

このページで公開されてるjava3Dとかいうのがまったく見れないんですが
java3dをみるためには何かインストールする必要があるんですか?
初心者な質問ですいません・・・
見るだけならいらないと思う。
必要
111デフォルトの名無しさん:04/08/08 10:45
>>109
そうなんですか?
うーん・・・
なんでみれないんだろ・・・
112108:04/08/08 11:20
いろいろDLして試してみたんですが
ぜんぜん変化なしです
他のページのjava3dも試してみたんですが
http://www.takana.info/java3d/doc/
このページとかエラーになっちゃってやっぱり実行できないです
どうやったらいいですか?だれかアドバイスください・・・。
Java3D Runtime for the JRE
>>102
大規模なDLLだとスタック足りないってなるのがかなり問題
すこしおおきくしてほしいものだなぁ
115デフォルトの名無しさん:04/08/08 11:47
すいません、
あるフォルダにあるファイルのListを取り出す方法を教えてもらいたいのですが。

そういうAPIが見つかりません。
>>115
探し方が足りません。File#list
117115:04/08/08 11:49
>>116
あ・・・すいません。
未熟者です。

ありがとうございました。
>>115
まじめに探したとは思えません。
File#list()
119デフォルトの名無しさん:04/08/08 12:36
シンボルが解決できないというのはどういうことですかね?
importもしてるし。
わからん。

WorkPlus.java [315:1] シンボルを解決できません。
シンボル: メソッド setListData (java.lang.String)
場所 : javax.swing.JList の クラス
jList1.setListData(fName[c]);
^
エラー 1 個
コンパイルエラー WorkPlus.
多分、馬鹿なんだと思う
121デフォルトの名無しさん:04/08/08 12:44
修正
jList1.setListData(fName[c]);
   ^
修正してる暇があったらよく見直せ
void setListData(Object[] listData)
void setListData(Vector listData)
123デフォルトの名無しさん:04/08/08 12:46
>>119
別に馬鹿じゃないですよ。
fName[c]をfNameにしてくださいませ。
124119:04/08/08 12:52
>>123
解決しました。
助かりました。
ご迷惑おかけしました。
125とほほ:04/08/08 13:03
JDesktopPaneのインナーフレームにステイタスバーを表示したいのですが
こんなエラーがでてしまいます。

シンボル: メソッド showStatus (java.lang.String)
場所 : DesktopTest の クラス
showStatus(eventname) ;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
もしてるんですが・・・
良い方法を、教えてください。
showStatus なんてメソッド標準 API にはない。
自分で勝手に作ったメソッドだろ?
DesktopTest とは別のクラスに作ったんだろうよ。見直せ。

>>119 もそうだが、
指定のメソッドのあるなしに import は関係ない。
import の意味も分かってないのに報告すな。
あ、Applet にあったか。Applet じゃないんだろ?
なら呼べないわ。
無意識下で、自分は間違っていないということを裏付けたいがために
「importもしてます」と強調するんだろうな。
その時点で心がけが間違ってる。
129とほほ:04/08/08 13:22
いや、エラーが出る時点で自分が間違っていることは認識してる。
一応、cで食ってるのでimportの意味は解ってる。
importが足りない可能性も有るから、書いた。

とりあえず、128は市ね
>一応、cで食ってるのでimportの意味は解ってる。
ぎゃはははは
131とほほ:04/08/08 13:24
いや失礼。

>指定のメソッドのあるなしに import は関係ない。
本当か?
132とほほ:04/08/08 13:28
あれ?どうしたの
ぎゃははははの人
早く答えてよ。
import はパッケージ名の無い、クラス名とおぼしきシンボルを解決させるだけの意味しかない。
import をどうこねくり回しても本来あるはずのメソッドを見失うようにはならない。
稀だが、違うパッケージの同名のクラスが import から導き出されたら関係あるがな。
でもまさかそういう可能性まで考えて報告したんではないだろう。
そこまで分かってたら原因から除外できるのも分かるはずだ。
134とほほ:04/08/08 13:38
それで? >>130 のぎゃはははの意味がわかんないんだけど。
さっさと答えてよ。
CのincludeとJavaのimportは機能が違うからだろ
136とほほ:04/08/08 13:44
>134
おまえは、誰だ。
>133
私の間違い。失礼しました。
メソッド名を長々書くならjavaでimportは不要でした。
CとJavaのimportを一緒にしている奴がいるスレはここでつか?ぎゃはははは!
ギャーギャー騒ぐな。初心者スレだ
でも基地害スレじゃないよ
Socketの読み取り可能なバイト数を取得する方法はないですか?
InputStream#available() ではなくて?
142デフォルトの名無しさん:04/08/08 14:43
Cみたく動的にメモリを配置したいんですが
Javaではどうすればいいのでしょうか?
mallocみたいなものって・・ないよねwポインタがないし。
ここは基地害スレじゃないよ
>>141
NIOを使用しているのでInputStreamは使えないんです。
>>142
配置したいって何?

確保したいとは違うの?
146デフォルトの名無しさん:04/08/08 14:48
>>140
J2SE 1.4 だったら、java.nio.channels.SocketChannelというのがあるけど、
実際に読み込みを実行しないとバイト数は分からんみたいね。
>>142
ByteBuffer#allocateDirectじゃダメ?
JNIを使うとC,C++で直接ヒープをさわれるけど。
148デフォルトの名無しさん:04/08/08 14:49
何なんですか? この雰囲気は?
とほほ氏に対して重箱の隅をつつくような批判をさも大げさに
繰り広げているけど、いい加減にして欲しいですね。
要は、showStatus(String s)がContainerクラスに所属してるものと
勘違いしただけの事でしょうが。
それならimport指定の有無が関係あると考えるのは当然の事でしょうが。
つりはやめれ。
150デフォルトの名無しさん:04/08/08 14:50
>>142
byte[] buffer = new byte[バイト数]
とするしかないと思う
>>146
SocketChannelを使用していると無理ですか。
java.net.Socketだとselectが使えないですしね。
ありがとうございました。
>>142
Vectorなどの動的に管理できる
コレクションクラスを使うとよいのでは。

ポインタあるよ。
"NullPointerException"
ほらあった。
153デフォルトの名無しさん:04/08/08 15:02
>>140
その瞬間での読み取り可能数を知る方法は、実際に読み込む以外に
ないですね。
その通信単位の読み取り可能数はプロトコルによって取得法が
154デフォルトの名無しさん:04/08/08 15:04
>>142
たくさんあります。
155デフォルトの名無しさん:04/08/08 16:48
StringBuffer fileLog[];
int c;
fileLog[c] = new StringBuffer();

こうすると、なぜか例外処理が発生し、fileLog[c]が使えません。
なぜなのでしょうか?
156デフォルトの名無しさん:04/08/08 16:51
cは、forループとなってます。
初期値は0です。

for(c = 0;c < curLogList.length ; c++)
{

fileLog[c] = new StringBuffer();
fileLog[c].setLength((int)f.length());
fileLog[c].append(sb);
}

sbは、StringBufferで、ファイルからReadしたデータが格納されてます。
それをappendで、fileLogへ追加したいのですが、
例外が発生してしまいます。
157デフォルトの名無しさん:04/08/08 17:04
>>156
StringBuffer fileLog[] = new StringBuffer[curLogList.length];
という風に配列オブジェクトを生成してないから
ぬるぽが発生しているのではないかな?
>>142
ポインタあるし。
Javaのオブジェクトは動的メモリ配置させないほうが難しい。
159デフォルトの名無しさん:04/08/08 17:11
Javaの勉強を始めたものです。
SunからSDKダウンロードしてDOSプロンプト上で
簡単なjavaプログラム、javaアプレットを実行する所まで出来ました。
ところでデスクトップ上に「java Web Start アプリケーションマネージャ」
というショートカットが出来てるのですがこれは何ですか?
何のために使うのでしょうか?
160156:04/08/08 17:18
>>157
ご返答ありがとうございます。

StringBuffer fileLog[] = new StringBuffer[curLogList.length];とし、
内部では、fileLog[14]とインスタンス化されましたが、

そのあと、fileLog[0]に、ファイルからReadしたデータをappendすると例外が発生してしまいます。
なぜなのかがわかりません。
只今も格闘中です。

int c;
char recv[] =new char[100000];
StringBuffer fileLog[] = new StringBuffer[curLogList.length];

for(c = 0;c < curLogList.length ; c++)
{
File f = new File(curPath + curLogList[c]); ←Readするファイル(.txt)のあるPath
FileReader fr = new FileReader(f);

while(-1!=fr.read(recv)) {
fileLog[c].append(recv); ←ここで例外発生。
}
}
>>152
ガッ
162デフォルトの名無しさん:04/08/08 17:28
>>160
fileLog[0]がヌルポインタだからです。
fileLog[0]=new StringBuffer();
としてから、append()してくださいませ。
163デフォルトの名無しさん:04/08/08 17:30
for(c = 0;c < curLogList.length ; c++)
{
fileLog[c] = new StringBuffer(); ←こうしてくださいませ。

File f = new File(curPath + curLogList[c]); ←Readするファイル(.txt)のあるPath
FileReader fr = new FileReader(f);

while(-1!=fr.read(recv)) {
fileLog[c].append(recv); ←ここで例外発生。
}
}
>>159
実行すればいいじゃない
>>164
実行したらパソコンが壊れちゃった
>>165
その今書き込んでる奴を使え
仕込み漫才かYO
YOUかYO

サンプルだよサンプルデモ。げぇむもついてるYO
赤いたまも黒いたまもむつかしいYO
これだYO
ttp://java.sun.com/products/javawebstart/ja/demos_ja.html
16876:04/08/08 20:16
>>79
>>83
>>85
レスありがとうございます。

>>79の方法でやろうと、
myjtextfield.getInputContext().setCompositionEnabled(false);
としてみたんですけど、
InputContextインスタンスが取得できずに、nullpointerexceptionが出てしまいました。

いろいろ調べたら、
http://java-house.jp/ml/archive/j-h-b/043354.html
の方法

texiFieldがFocusGainedされた時
Input Method Frameworkにより
IMEをオフにして直接入力
textField3.getInputContext().setCharacterSubsets(null);

があり、これをしたらMS-IMEがoffになってくれました。

でもデフォルトでMS-IMEがonになるって>>83さんのいうように自分のjreは変なんですかねぇ。
> InputContextインスタンスが取得できずに、nullpointerexceptionが出てしまいました。
それは>>168の使い方が悪いだけ。
17076:04/08/08 20:26
>>169
んじゃどうやったら取得できるんですか?
今日はJAVAでJAVAJAVA洗濯しました。
>>170
> textField3.getInputContext().setCharacterSubsets(null);
こっちでは取得できてんだろ。使い方が悪いだけ。
173160:04/08/08 21:36
>>163
ご返答の程、ありがとうございます。

ご指摘のとおり記述しなおしたところ、うまくビルドできました。
StringBuffer fileLog[] = new StringBuffer[curLogList.length];のままだと、まだnullの状態なんですね。
知らなかったです。

本当に助かりました。
17476:04/08/08 21:59
>>172
>> textField3.getInputContext().setCharacterSubsets(null);
>こっちでは取得できてんだろ。
おおそういえばそうです。

ためしにやったらできした。
何でできなかったのかな??
175デフォルトの名無しさん:04/08/08 22:27
Javaの印刷について詳しく載ってるサイトってあります?
176デフォルトの名無しさん:04/08/08 23:25
Graphicクラスだけど、
drawString使うと、文字列中の改行が無視されてしまいます。
改行をきちんとされるようにしたいのですが・・・。
JavaでGUIを勉強し始めようとおもっているのですが
AWTとSWINGどっちからやるのがおすすめですか?
>>177
SWINGがいいと思います。
AWTは古いコンポーネントなので処理も重く使い勝手が悪いです。
SWINGはそのAWTを改善したものですので、
SWINGを勉強しましょう。
>>178
即レスdくすです。

早速、SWINGを勉強してみます。
軽量コンポーネントって誤解をまねくよな
大文字、小文字、全角、半角
少しは気にしてくださいよ
すくなくともAWTが一番軽いよ
ネイティブだしな

でも、機能少なすぎてお話にならないのでSwingでいい
何も考えずsetSizeするのだけやめれば大丈夫

分からなかったらNetBeansつかえ

Bean とか、Beans とかって何ですか?
豆?

なんかコンポーネント化されたクラスみたいな解説は見たことがあるがいまいちはっきり分からない。
だれか簡潔に一言でスカッとトロトロに解説してください。(略してスカトロ)
>>183
ウンコ喰って氏ね
OK.ウンコだけじゃアレなのでリンゴも食って寝ます。
186デフォルトの名無しさん:04/08/09 00:52
SocketでHTTPプロトコル通信プログラムを作成してるのですが
転送コーディング無しのエンティティボディをストリームクラス
(BufferedReader)で読み込むと、Content-Lengthの80%位
読み込んだ後に-1が返ってきてそれ以上読み込めなくなってしまいます。
例えば10万バイトなら8万バイト読み込むと-1が返ってきてしまうのです。
その後にRangeヘッダ指定の部分GETで、残りの2万バイトを読み込もうと
すると、今度は1万6千バイト位読み込むと-1が返ってくるのです。
大きいボディでも小さいボディでも同じなのです。
300バイトだと250バイトで-1が返ってくるのです。しかもどのURLでもです。
一度もボディを全て読み込めた事がありません。
どうか解決策を教えてください。
>>180
軽量コンポーネントってOSのリソースを使わないって意味だからな。
GUIの描画にOSの機能(ネイティブ)使うのと、
Javaを使うのとどっちが速いかは言うまでも無い。
「遅い軽量コンポーネント」と言うようにすれば勘違いも減るだろう。
え、逆でしょ
>>186
読み込んでる部分のコードがないと何とも答えられんと思うが。
>>188
Swing勉強した方がいい
またまたご冗談をw
Swingは軽量コンポーネントなので遅いですよ。
192183:04/08/09 01:08
俺の質問は・・・?
無視
>>186 readLineで読み込んだ文字列の長さを積算して、
「80%しか読めない」とかいってるわけじゃないよね? まさか。
>>191
SWTは?
197デフォルトの名無しさん:04/08/09 01:22
>>191
横槍だけどさ。
その遅いってのは何と比べて?
SwingはAWTをベースに軽量化&高速化した物って
俺の持ってる本には載ってる。
また、別の本だったかサイトだったかに
AWTは重量コンポーネントと呼ばれるってのも読んだ事がある。

軽量コンポーネントの「軽量」とは軽いって意味じゃないのか。
違うなら詳しい説明よろしく。
198デフォルトの名無しさん:04/08/09 01:30
>>194
違います。
例えばHTMLソースのエンティティボディを読み込んで
そのバイナリデータを出力すると、明らかに途中で途切れてるのです。

>>189
コートは簡単なものです。
レスポンスヘッダ部分を読み終えた後に
size = r.read(buffer, 0,buffer.length); (rはBufferedReader)
をsizeの合計がContent-Length以上になるまで
ループしてるだけなのです。しかし、その途中で-1が
返ってきてしまうんです(泣)しかも大体8割位のとこで。。。
>>196
SWTは速い重量コンポーネント。

>>197
> その遅いってのは何と比べて?
ネイティブ、AWT、SWT全て

> SwingはAWTをベースに軽量化&高速化した物って
作者が勘違いしているのでしょう。
軽量化は正しい、しかし軽いという意味ではない。

> AWTは重量コンポーネントと呼ばれるってのも読んだ事がある。
OSのリソースを食うというだけで重いわけじゃない。
win9x系ではリソースが少ないので問題が発生することがあるが、
それ以外ではなんの問題も無い。

> 軽量コンポーネントの「軽量」とは軽いって意味じゃないのか。
違う。
>>198
Readerのreadメソッドの返り値はバイト数ではなく文字数だから,文字コード変換
の結果として実際にソケットから読み出したデータのバイト数よりも小さい整数値を
返したとしても不思議ではない。
シングルトンに関することで教えてください。

シングルトンの、「インスタンスの生成を1つに制限する」という機能は、
「クラスのコーディング時に静的属性や静的メソッドだけ使うようにする」
ということで実現できてしまう気がするのですが、
あえてシングルトンを使うメリットはどんなところにあるのでしょうか?

シングルトンの実装の方法はわかったのですが、
メリットが見えないのです…。
> シングルトンに関することで教えてください。
一人身のブタです。
かわいそうなのでほっといてやってください。
>>201
「クラスのコーディング時に静的属性や静的メソッドだけ使うようにする」 ように気をつけなくても良くなる。
>>198 バイナリデータをreaderで読むなよ。
205デフォルトの名無しさん:04/08/09 01:48
>>199
ぜんぜん理解できん。

何が重量で何が軽量なんだ?
うーん・・・
OSのGUIが重量で、JAVAが提供してるGUIが軽量なのか?
java始めようと思って、sunで最新版(1.4.2_05)をDLして
インストールした訳だが、インストールの途中で以下のエラーが出る。
--------------------------------------------------
jre\bin\awt.dll:Old File not found. However a file of the same name was
found. No update done since file contents do not match.
--------------------------------------------------
古いファイルがないって・・・。Update専用って話じゃないし。
マシンを2台持ってて、OSはどちらともWin2k。
メインのマシンは、問題なくインストールできた。
開発用として使おうと思ってるマシンで、このエラー。
ちなみにOSクリーンインストールしてパッチも最新版にしてこの有様。
当然だが、クロックアップなぞ一切していない。
プログラム始める前から躓いてる俺ってorz。
誰か救ってください。
207デフォルトの名無しさん:04/08/09 01:56
>>201
そのクラスを使用するクラスを選別する事ができます。
静的メソッド&静的属性だと、どのクラスからでも呼び出せて
しまうので、どのクラスから使用されてるのか掴みにくくなってしまいます。
さらに、そのクラスがアクティブかどうかが、実行上の重要なキーワードと
なる時に必要となります。
静的属性&メソッドだと常にアクティブになってしまうので、その選択が
できません。
さらに、そのクラスが大規模なデータを持つ場合にメモリの節約になります。
必要な時だけ実体化させ、それ以外の時は0にできます。
静的だと常に属性がメモリを占有する事になってしまいます。
>203さん
ご解答ありがとうございました。やっとすっきりしました。

>202さん
…ほっといてあげます。
209デフォルトの名無しさん:04/08/09 02:01
>>204
実は、BufferedInputStreamも試したのです。
結果は同じでした。8割くらいでー1が帰ってきます。
chunked転送コーディング時は、どっちにしろBufferedReaderを
使わねばならないので、プログラム上スッキリさせる為に
Readerを用いてるのです。
210201 208:04/08/09 02:04
>207さん
ご丁寧にありがとうございます。
非常によくわかりました。
シングルトンの場合では、必要がない場合には
アクティブにさせないこともできるということが
ポイントなのですね。

どうもありがとうございました。
211197&205:04/08/09 02:07
あー見つけた!
うーん、どうやら>>199の言う通りAWTを高速化したってのは作者の勘違いなのか?

OSのGUI部品とJAVAで定義されたGUIクラスを二重で持ってるから重量と呼ばれる。
それに対し、SwingはJAVAだけで完結してるから軽量って意味とあった。
動作が軽いって意味ではないと。

ただ、AWTは形状や機能の一貫性が保障されないし、
Swingは物凄く機能強化されてるから、Swingを使うのがお徳だよとある。
新しいSwingが遅いってのは、OS依存がないって利点の負の副産物だったんだな〜。

何冊か参考書読んだけど、こういう根本的な事書いてる本なかったな。
すげー基本的な事なんだろうけど勉強になった。
>>187>>199に感謝。
すいません、C#の話なのですが質問をさせてください。

javaにはGUI設計手段としてSwingとかSWTがありますが、C#にはあるのでしょうか?
Windows.Formsか、それともUser32.dllを無理やり読み出して自前でウィンドウ作るか、とか
>>209 194や200も書いているけど、Reader系は文字ストリームだから
エンコーディング変換の処理が入る。だから普通使わない。
#まあSunのiso-8859-1が8bitクリーンである実装に依存する書き方する人いるけど。

で、BufferedInputStreamも試して駄目なら他でおかしいところが
あるはずだから、状況を再現する一番短いコードをさらしたら?
>>212
俺は使った事も無いし使う予定も無いが、monoのGtk#とか。
http://www.mono-project.com/using/gtk-sharp.html
>>210=201=208
203や207の言ってることはどっちかというと電波発言だぞ。
静的メソッドでは動的束縛ができないというのが本質だ。
>>211
> ただ、AWTは形状や機能の一貫性が保障されないし、
それはどのOSでも一貫性が保証されないという意味であり、
逆にいえばSwingはどのOSでも一貫性が保証される。

が、それはJavaアプリの場合の話であり、
それを動かしているOSやJava以外のアプリとの一貫性は保証されない。

ようするに、JavaアプリはどのOSでも同じように見える代わりに、
他のアプリとは同じように見えなくなるということ。

多くのユーザーは複数のOSで同じアプリを使わんよ。
それよりか、自分の使っているOSと同じようなインターフェースを望む
>SwingはどのOSでも一貫性が保証される。
これが大事なんだろ
OSごとに作る必要がなくなってOSの垣根を越えて
ユーザーを獲得できる
2兎追うものは..
泥棒のはじまり。
>>218
それは作る側の論理だな。
そりゃ、どのOSでも同じインターフェースだと作るほうは楽だろうよ。
でも使う側からみりゃ、OSや他のアプリと違うインターフェースは見難い使いにくい。
結果的に、SWTみたいにOSネイティブの機能を使って、そのOSのインターフェースに
あわせた使いやすいインターフェースにするのがユーザーを獲得することにつながる。
SUNもそれに気づいたから、SwingにOSネイティブを入れることにしたんだろうよ。
俺、SwingのUI好きだよ
UIを自分で自作できたりする所なんかもいいね
基本的にSystemLAFでほとんど間に合うけどね
たとえばWinだとALT押したらメニューにカーソルいくとかよくできてる
ま〜ネイティブで高速化するなら大歓迎だけどね
しかも大概文句言う人はWinユーザーだからちょうどいい

なんとなくWEBサービスに載せにくいSWTはEclipse専用になりそうな予感
って現行でもほぼEclipse専用か
なんだかんだでSwingは業務系アプリ作りやすいのでそれなりに価値があるかと
文字エンコーディングにUS-ASCII、CP-1252、ISO-8859を指定して
Readerでバイトデータを読み込むと、そのbyteデータがそのまま
1バイト拡張される形でcharに格納されるのでしょうか?
>>224
対応する文字についてはそうだが、それ以外のbyteコードがある場合は?に変換される
226デフォルトの名無しさん:04/08/09 09:17
>>225
ありがとうございました。
>>226
今チェックしてみたけど出力されるまでは、?に変換されずにちゃんと持ってるみたい。

一応アホなテストコードを
String a = "abcdあああああああああscdcdscsd";
byte[] b = a.getBytes( "Shift_JIS" );
Reader in =new BufferedReader( new InputStreamReader( new ByteArrayInputStream( b ), "ISO8859-1" ) );
char[] c = new char[1024];
Arrays.fill( c, '\0' );
in.read( c );
int i = 0;
while ( c[i] != '\0' ) {
System.out.print( c[i] );
System.out.print( ':' );
System.out.println( Integer.toHexString( c[i] ) );
i++;
}
>>227
InputStreamReaderのAPIリファレンスには含まれない文字の扱いについて
書かれていないから、実装依存である可能性は認識しておいたほうがいいと思う。
Charset#encodeには明確にデフォルトの置換文字列に置き換えるって書かれているけど。
229デフォルトの名無しさん:04/08/09 10:50
>>227
>>228
ありがとうございました。

>>214
あなたの言うとおりでした。何とか問題が解決しました。
>>227
わざわざテストまでしてくれて、どうもありがとうございました。
231デフォルトの名無しさん:04/08/09 11:09
>>228
以前のサーブレットは、国際化の仕様にバグがあったので、
この手法を使って無理やりSJISを通してたよ。
実装依存で問題が出た例はないみたいだけど、
あまりやるべきことではないな。
>>206
過去スレに何度か同様の報告が出てるので、なんとか探してみて下さい。
4スレくらい前で解決した例があった気がします。
そのときは質問者が余計なことをしてインストールしたファイルを上書きしたか何かで
みんな飽きれてそれ以降問答が続かなかったような気もしますがとにかくインストール自体は成功したようです。
この手の問題は、遭遇してない人には、
遭遇した人のマシンをあちこち調べでもしないとなかなかアドバイスしにくいと思うんでそこをひとつよろしく。
>>206 >>232の言うのを探してみた。46スレだな。
「どかせたものを戻す」辺りが意味分からん流れだったが。
まあ、普通は戻さなくても動く・・・・・・んじゃないか?

>553 名前:デフォルトの名無しさん 投稿日:04/06/01 13:07
>>>549
>同じファイルがあって邪魔って書いてあるじゃねーか
>jre以下をどかせ

>554 名前:549 投稿日:04/06/01 14:08
>>>553
>\j2sdk1.4.2_04\jre 以下を一旦どかせたら無事インストール完了しました。^^;
>どかせたものをその後元に戻したらVMのバージョン情報もかえってきました。
>ありがとうございます。
234デフォルトの名無しさん:04/08/09 16:37
こんにちわ
えっと早速ですが質問です

Javaにはポインタがありませんよね?

Cで関数名の配列に対応させた関数へのポインタの配列を用意して
関数を呼び出す処理をJavaで書くにはどのようにしたら良いのでしょうか
インタフェースを定義して、それを実装したクラスを定義して、
そのクラスのインスタンスを生成して、インタフェースの配列を生成する。
などなど。無名クラスについて知っておくとなお良いかも。

とりあえずメソッドへのポインタは用意できないからしょうがない。
リフレクションちうのもあるけどあんま関係ない。

>Javaにはポインタがありませんよね?
イメージ的には、クラスを型にした変数はインスタンスへのポインタだよ。演算できないけど。
あんまり端的に言い放つと不毛な議論がはじまるから今後慎重にどうぞ。
236デフォルトの名無しさん:04/08/09 16:51
>>235
すんません(;´Д`)
以後気を付けます
×インタフェースの配列を生成する。
○インタフェースの配列を生成して、配列から各インスタンスへ参照させる。
238デフォルトの名無しさん:04/08/09 18:13
>>234
JAVAにも似た様なものがあります。
例えば同じクラス内のStringオブジェクトを引数とする3つのメソッドをindexの値によって、
どれか呼び出す時にはこうします。

void func() {
  String[] methodList = {"funcA", "funcB", "funcC"};
  int index;
  String text;
  ・
  ・
  getClass().getDeclaredMethod(methodList[index], new Class[1]{ String.class}).
  invoke(this, new Object[1]{text});
}

void funcA(String str) { }
void funcB(String str) { }
void funcC(String str) { }
MyFunction を実装した無名クラスのインスタンスを返す例。
こういう方が好きだなぁ。リフレクションと違ってコンパイル時に名前解決するし。
クラスだらけになるけど。
なお、必要なければいちいち create せずに Caller のコンストラクタで一個用意してもいいし。

public interface MyFunction {
 public void funcX(String str);
}

public class Caller {
 void func() {
  MyFunction[] funcs = { createFuncA(), createFuncB(), createFuncC() };
  //略
  funcs[index].funcX(str);
 }
 public MyFunction createFuncA() {
  return new MyFunction() {
   public void funcX(String str) {
    //場合によっては TheClass の内部にアクセスするなんやかや
   }
  };
 }
 public MyFunction createFuncB() {
  return new MyFunction() { /*略*/ };
 }
 public MyFunction createFuncC() {
  return new MyFunction() { /*略*/ };
 }
}
>>238
へェーへェーへェーへェー(゚д゚)つ"
それなんかの本に載ってるかい?
# WEBプログラミング板に妥当なスレがあるのか無いのか・・・見つからないので、もしあったら誘導してください(_ _)

Apache2.0.48、Tomcat5.0 を JK2 でつないで Solaris8 上で動作させています。
Java Servlet から日本語ファイル名の URL にリダイレクトする必要があり、
当初は UTF-8 で URL エンコードしていましたが、
お客さんがファイル名が読めないのはどうしても嫌だと言い張って、
何とか日本語表示できないかと考えています。
クライアントはとりあえず IE6 のみで。

JK2 が UTF-8 エンコードで送信するのに、
IE がファイル名を Shift_JIS としてデコードしてしまうらしく文字化けが発生するので、
下記のようにその逆の操作をはさんでみましたが

response.sendRedirect( baseURL + new String( fileName.getBytes("Windows-31J"), "UTF-8" ));

状況が改善されません。
最終的には JK2 のコードに手を加える道も残ってはいますが、
できればコード側で対処したいです。
お知恵をお貸しください。
>>238
>>240
リフレクションは一見便利なようだけど、安易に使わない方がいいよ。
プログラムが読みにくくなったり、パフォーマンスが落ちたりする。
正しい使い方としては、設定ファイルを読み込んで、オブジェクトを初期化する処理がある。
JavaBeansなんかも内部ではリフレクション使いまくっているし。
あとは、Javaでスクリプト言語のインタプリタを実装するときとか。
java.net.URLEncoderを使って、
new String( fileName.getBytes("Windows-31J"), "UTF-8" )
の部分を
URLEncoder.encode(fileName, "Shift_JIS")
としたらいけないかなぁ。

webprog板なら、このスレ
http://pc5.2ch.net/test/read.cgi/php/1087331455/l50
>>239
それも良い。
いいんだけど、>>238の方がいろいろ応用がきくんじゃないかな?
>>238は、少し変えればメソッドのパラメータ構成もそれぞれ別にできるし
返値もそれぞれ別にできる。
ケースによっては、外にも幾つか応用がきく。
>>241
無理。URLとして使用できる文字はRFCで決められている。
それ以外の文字を使うとブラウザが正しく動作しない。
画像ファイル名を日本語にすると表示しないのと同じ。

インターネットにはRFCという規格・仕様があって、
ブラウザはそれに沿って作られているので、規格外のURLは扱えません、
とでもお客さんには説明するんだね。
>>241
せめてローマ字で我慢してもらうしかないのでは。。。
お役に立てず申し訳ない
>>244
お前、>238だろ。
>238なんて単なるオナニーコードだろ。
違うよ。
アンタこそ>>240=>>247だろ。
このホットジャバ野郎。
すみません、質問です。
テキストファイルから一行読み込んでHTMLに変換し、結果を返したいのですが、

aaa;bbb;cccなら
<td>aaa</td><td>bbb</td><td>ccc</td>と返し、

aaa;j3なら
<td colspan="3">aaa</td>、

aaa;bbb;j2cccなら
<td>aaa</td><td colspan="2">bbb</td><td>ccc</td>

という解析を入れたいので正規表現で実現しようとし、
一番上は簡単に出来ましたがcolspanが絡んでくるとどうもアイディアが浮かびません。

どうしたらよいでしょう?
250デフォルトの名無しさん:04/08/09 21:00
>>249
テキストファイルからHTMLに変換する仕様がなけりゃ
答えようがないべ。
単純にセミコロン(;)区切りの行を分割したいなら、
java.util.StringTokenzerを使って、
for(i = new StringTokenizer(line, ";"); i.hasMoreTokenz();) {
...
}
というようなループを作って回せ。
240は俺どえす。
line.split(";")
253249:04/08/09 21:23
StringBuffer strBuf = new StringBuffer();

Pattern pattern = Pattern.compile(";");
Pattern joinPattern = Pattern.compile(".*;j[0-9].*")

String[] joinToken = joinPattern1.split(str);
String[] token = pattern.split(str);

Matcher matcher = joinPattern.matcher(str);

if (token.length == 1);
else if (!matcher.matches()) {
 strBuf.append("<tr>");
 for (int i = 0; i < token.length; i++) strBuf.append(addTDTag(token[i]));
 strBuf.append("</tr>\r\n");
}
return strBuf.toString();

で変換します。
ただこのままでは二番目と三番目の解析が出来ないので
これに追加、若しくは変更してできるようにしたいのです。

因みに
addTDTag()は渡された文字列を<td></td>ではさむだけの単純なメソッドです。
254241:04/08/09 21:30
やはり難しそうですね・・・。
JK2 を書き換えたとしてもネスケでは表示できないし・・・。
一応出来る可能性はかなり低いと思ってくださいとは言ってありますが(^^;

ふとクライアントサイドにいったん処理を戻して、
スクリプトなどを使ってファイルを読みに行かせる方法を思いついたので
そっち方向で試してみたいと思います。
>>249
StringBuffer sb=new StringBuffer();
StringTokenizer st=new StringTokenizer(text, ";");
String prevToken=null;
while(st.hasMoreTokens()) {
  String token=st.nextToken();
  if(token.startsWith("j")) {
    int count=0;
    try {
      count=Integer.parseInt(token.substring(1, token.length()));
    } catch (NumberFormatException ex) { }
    if(count>0 && prevToken!=null) {
      sb.append("<td colspan=\"" + count + "\">");
      sb.append(prevToken);
      sb.append("</td>");
      prevToken=null;
      continue;
    }
  }
  if(prevToken!=null) {
    sb.append("<td>");
    sb.append(prevToken);
    sb.append("</td>");
  }
  prevToken=token;
}
if(prevToken!=null) {
  sb.append("<td>");
  sb.append(prevToken);
  sb.append("</td>");
}
256249:04/08/09 21:34
>>255
ありがとうございます。
StringTokenizerでやるなんて考えもしませんでした。
>>256
ね、念の為にコンパイルして、textに適当な文を入れて、
sb.toString()を出力してみてくださ〜い(汗)
258249:04/08/09 22:25
java test aaa;bb;ccc
<td>aaa</td><td>bb</td><td>ccc</td>

java test aaa;bb;ccc;j2
<td>aaa</td><td>bb</td><td colspan="2">ccc</td>

java test aaa;bb;j2ccc
<td>aaa</td><td>bb</td><td>j2ccc</td>

java test aaa;bb;j2;ccc
<td>aaa</td><td colspan="2">bb</td><td>ccc</td>

java test bb;j2;ccc
<td colspan="2">bb</td><td>ccc</td>

3番目の例も4番目のようにすればいいので
成功といっていいでしょう。本当にありがとうございました。
259デフォルトの名無しさん:04/08/10 07:28
教えてください!

文字を描画するときにDrawStringを使うと一行表示できたのですが、
指定領域内で自動改行する文字列を描画するにはどうすればよいのでしょうか。

よろしくお願いいたします。
できません。自分で改行してください。
使ったこと無いけどこのあたりが関係するでしょう
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/font/LineBreakMeasurer.html
261デフォルトの名無しさん:04/08/10 09:58
まじですか・・・
これ試したのですが、フォントがDrawStringと違ってしまいます。
(いろいろ設定してみたのですが・・・)

アプレットでゲーム作ったんですが、
WindowsMEの人に、グラフィックが表示されないと言われました。
OSによって、絵が出ないことってありえることですか?
無いとは言えないけど副次的要素だな
それより調べなきゃならないことがやまほどある
Java コンソール見てもらった? VM は同じ? ブラウザは? バージョンは?
テスト環境との違いは全部当らなきゃだめ。
>>261
class MyLabel extends JLabel {
  public void paint(Graphics gg) {
    super.paint(gg);

    String text="適当な文章";
    Graphics2D g=(Graphics2D)gg;
    Font font=new Font("Dialog", Font.BOLD, 15);
    g.setFont(font);

    Rectangle rect=new Rectangle(100,100,100,100);
    float head=(float)rect.getX();
    float row=(float)rect.getY();
    float height=(float)g.getFontMetrics().getHeight();

    Map attrMap=font.getAttributes();
    AttributedString attrStr=new AttributedString(text, attrMap);
    AttributedCharacterIterator it=attrStr.getIterator();
    FontRenderContext frc=g.getFontRenderContext();

    LineBreakMeasurer lbm=new LineBreakMeasurer(it, frc);
    TextLayout line;
    while((line=lbm.nextLayout(rect.width))!=null) {
      line.draw(g, head,row);
      row+=height;
      if(!rect.contains(head, row+height)) break;
    }
  }
}
↑は、サイズ100の正方形範囲内に文字列を書く例です。
266訂正:04/08/10 13:40
class MyLabel extends JLabel {
  public void paint(Graphics gg) {
    super.paint(gg);

    String text="適当な文章";
    Graphics2D g=(Graphics2D)gg;
    Font font=適当なフォント;
    g.setFont(font);

    Rectangle rect=new Rectangle(100,100,100,100);
    float head=(float)rect.getX();
    float base=(float)rect.getY();

    Map attrMap=font.getAttributes();
    AttributedString attrStr=new AttributedString(text, attrMap);
    AttributedCharacterIterator it=attrStr.getIterator();
    FontRenderContext frc=g.getFontRenderContext();

    LineBreakMeasurer lbm=new LineBreakMeasurer(it, frc);
    TextLayout line=lbm.nextLayout(rect.width);
    if(line==null) return;
    base+=line.getAscent();
    while(rect.contains(head, base)) {
      line.draw(g, head, base);
      base+=line.getDescent();
      line=lbm.nextLayout(rect.width);
      if(line==null) break;
      base+=line.getAscent();
    }
  }
}
267デフォルトの名無しさん:04/08/10 15:05
おぉ!

すばらしいです!
英数は途中で途切れないですし、理想的な文字描画になりました。

自分が書いたときはLineBreakMeasurerのところで処理に時間が
掛かっていたのですが、これだと速いです。

感謝!
268デフォルトの名無しさん:04/08/10 15:24
java.util.Hashtableのようなんだけど、
put()する側がkeyを指定するのではなく
ユニークなものを自動発行してくれるようなのってありますか?

なければつくるのですが、
標準的なものがあればその方がいいので。
269268:04/08/10 15:30
keyは整数もしくは文字列に限定したいので、value自体をkeyにはできません。
>>268
ArrayList
271268:04/08/10 15:51
270さんレスありがと

ArrayListはjava.util.ArrayListのことだと思いますが、
add(Object o)した直後にsize()することで確かにoに対するkeyはもらえます。
でもこの操作はatomicでないし、要素をremove()すると破綻するのでダメなんです。
272デフォルトの名無しさん:04/08/10 15:52
>>268
単にユニークなキーならシーケンスを使ってもよいと思うけど、
セッションIDみたいな、予測不可能なキーを生成したいのであれば、
java.security.SecureRandomがよい。
>>271
だとすると自分で実装になるかね。
頑張れ。
274デフォルトの名無しさん:04/08/10 16:00
>>271
element: 任意の要素
map: HashMap
rnd: SecureRandom

synchronized(map) {
for (;;) {
Integer key = new Integer(rnd.nextInt());
if (map.contains(key)) {
continue;
}
map.put(key, element);
break;
}
}

こんな感じかな。
上は書き込み処理だけど、アトミックな動作を保証するなら
読み込みもsynchrinizedしないといけない。
Hashtableはそれ自体が同期化されているので、
同期化されていないHashMapを利用して、それをラッピングするような
クラスを作って実装するのがよいぞ。
275268:04/08/10 16:08
みなさんどうも
がんばって自前で実装してみます。

ところで要素の数はたかだか数千なんですが、このコードは手抜きすぎですか?
int key = value.hashCode();
while (this.containsKey(Integer(key))) { key++; }
276デフォルトの名無しさん:04/08/10 16:30
>>275
手抜き杉。
それだと、同じ値のvalueをたくさん突っ込むと。
whileのループを回る回数がどんどん増えていくぞ。
そもそも、hash codeってそういう使い方をするためのものじゃないし。
>>267
ただ、あのコードはいろんなフォント(属性)が入り混じった
テキストを枠内描画する為のものでして、単一フォントのテキストなら
GraphicsとFontMetricsだけを使って自前で位置計算した方が
いいと思います。
と思いましたが、外にもっと便利なやり方があるかもしれません。
と思いましたが、他にやり方はありません。
↑ニセモノです。
281デフォルトの名無しさん:04/08/10 19:26
ネットワークの勉強のため「javaネットワークプログラミング」っていう本を買ったんですが
この本に載ってる下のようなプログラムを実行しようとするとなぜかエラーになってしまいます。実行する際はコマンドプロンプトを2つ立ち上げ、それぞれのプロンプトで
サーバー側のプログラムとクライアント側のプログラムをコンパイルして
実行しました。クライアント側の実行には
本にも書かれてるように「java client 自分のIP username」
という風にしました。しかし、何度やっても接続ができずタイムアウトエラーになってしま
います。なぜこうなるんでしょうか?
考えられる原因を教えてください。


http://private.rocketbeach.com/~mms1617/2ch/upload/dat/0004.txt
http://private.rocketbeach.com/~mms1617/2ch/upload/dat/0002.txt
>本にも書かれてるように「java client 自分のIP username」
>という風にしました。
初心者は自分の行ったことをもっと正確に報告するように心がけましょう。

とりあえず
1) IP が間違ってる。 localhost ではうまくいったのか?
2) ノートンセキュリティが邪魔してる
283282:04/08/10 20:08
自分のIPは診断君で確認しました
(ちなみに自分のIPは202.71.73.101でした)
それと、ノートンは常駐させてません
ウィルスチェックにはAVG6.0というのを常駐させてますが一応
AVGを切ってから再び実行してみたんですがまったく変化が無かったです

一応実行文とエラーの際表示されたメッセージ載せときます
D:\java prog\samples\smp2>java client 202.71.73.101 unko
java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at client.main(client.java:33)
案の定な回答でんな。
要するに最初から IP アドレスも含めてコマンドラインに打った全文を書いときましょうということですのよ。

診断君で表示されるのは、ルータがプロバイダから貰ってる IP アドレスでしょうたぶん。ダイアルアップなどのナマ接続でない限り。
あなたのマシンが直接属するネットワークはルータより内側だから、通用する IP アドレスは
192.168.x.x と 127.0.0.1 ですよ。

[ 診断君 ] −インターネット− [202.71.73.101 ルータ 192.168.0.1(例) ] −LAN− [ 192.168.0.2(例) あなたの PC 127.0.0.1 ]

大体こんな感じ。
client.class から 202.71.73.101 へのリクエストは、自分の IP ではなくルータへのリクエスト。
インターネットから一旦外に出てもっかい中に入ろうとするような感じで伝達される。
しかしルータは 12345 番のポートをあけていない。あけてるのは内側の 192.168.0.2 。だから到達しない。だからタイムアウトになる。
到達させるためには到達されうる IP アドレスをしてしなければならない。
もしインターネットの向こうにいる友達などに、192.168.0.2 で立ち上がってるサービスを公開したい場合は、
ルータに NAT やらなにやらの設定を行わなければならない。板違いなのでよそで聞いてね。
ちなみに w2k 系なら ipconfig、win98 なら winipcfg。
これらで表示されるのが自分の IP アドレス。
286デフォルトの名無しさん:04/08/10 20:45
>>283
IPアドレスを外部に公開する設定を行ってない限り
IPアドレス指定ではServerSocketにつながりません。
localhostにしてください。

D:\java prog\samples\smp2>java client localhost unko

これなら上手くいきます。
 ストリームクラスをラップするストリームクラスの close() メ
ソッドを見てみると、自分が保持しているストリームの close を
呼ぶとか、underlying なストリームを close するとかいう説明の
ものがある一方、ただ単にストリームを閉じるとだけ書いてあるも
のがあります(例えば 1.4.2 のドキュメントでは
InputStreamReader がそうでした)。

 これはラップしたクラスを close した後に、ラップされたクラ
スも明示的に close しなければならないということなのでしょう
か。それともラップしたクラスの close を呼べば自動的に下層の
クラスも close されていくことが保証されているのでしょうか。
すみません、よろしければお教え下さい。
288デフォルトの名無しさん:04/08/10 21:06
>>287
ストリームのラッパ系のクラスは
ラップされたクラスも自動的にcloseする。
安心して使ってくれたまい。
>>288 今の実装がそうなっているのはそうだとして、
closeされることが誰か/何かによって保証されているの?
290287:04/08/10 21:15
>288
 クラスによってドキュメントの記述が違うので、
その挙動のルールがどこかで規定されているといいのですが…。
そうでないと、「どうして close してないんだ!リソースリークだ!」
といちゃもんをつけられたときに言い返せないのです…(⊃д`)
>>290
ラップするストリームのクラス(FilterInputStreamなど)に内部ストリームを取り出す
メソッドが無いというのが全てを物語っていると思うが。
292287:04/08/10 21:45
>291
 ラッパーのコンストラクタにラップされるストリームを渡すとき
にはそれをあらかじめ変数に入れておいて、取っておかなくてはな
らないのだろうか、と考えていたんです。まぁサンプルコードとか
でも直接 new した一時オブジェクトを入れているし、大丈夫なん
でしょうけど…。

 いろいろありがとうございました。上の人に「一番外で close
するだけでいいよね?」と言質を取ろうと思います(w

簡単に手に入るものは、載ってるようで載ってない。書籍の方に何かあるのかな。
http://java.sun.com/j2se/1.4/ja/docs/ja/relnotes/devdocs-vs-specs.html

http://java.sun.com/docs/books/tutorial/essential/io/overview.html
ここの最後に「gc するとき勝手に閉じる」って書いてあるから、
とりあえず「gc はされるんでリークは解消されます」とは言えるんじゃない?だめ?
294287:04/08/10 22:35
>293
 レスありがとうございます。

>「gc はされるんでリークは解消されます」
 いや、それだと close() は全くしなくていいってことになっちゃうので…(w
「gc されるんだからいいだろうが(゚Д゚)ゴルァ!!」とはむちゃくちゃ言いたいんですけどね…。

 そういえばふと思ったんですが、

new FileOutputStream("c:\\hoge");

 みたいにして一時オブジェクトを生成すると、gc されるかプロ
グラムが終わるまでファイルは開きっぱなしなんでしょうかね?
InputStream#close()
>Closes this input stream and releases any system resources associated with the stream.
>この入力ストリームを閉じて、そのストリームに関連するすべてのシステムリソースを解放します。

これだけじゃ不満なのか?
>>294
試せばすぐ分かるがyes.
もっと怖いのはこれ。
Reader in = new InputStreamReader(new FileInputStraem(filename), "シフトJIS");

UnsupportedEncodingException?
298287:04/08/10 23:05
>295
 サブクラスで close がオーバーライドされている場合、スーパ
ークラスのドキュメントは使えないと思うので…。

 今ちらちらドキュメントを見てみると、説明が Close the
stream. だけってのは Reader Writer のサブクラス(の一部)だ
けみたいですね。Stream 系はきちんと書いてあるっぽい…。

>296
 試せばよかったですね。不精してしまってすみません。

>297
 例外処理の後も filename のファイルが開きっぱなしということ
でしょうか…?やっぱり finally でラップの全てのレベルで
close しないといけないのかな…でも非常に煩雑だしなぁ…('A`)
>>298
InputStream の一般的な規約だから、
InputStream を継承するクラスは基本的に >>295 を守る。
普通は >>295 を守るし、普通は守らない場合は考慮しない。
OutputStream や Reader、 Writer も同様。

っつーかネストしたストリームも全部 close するのって
石橋を叩いて叩いて叩きまくって、しまいには壊すタイプだな。
普通は2重closeで例外食らうし。
> サブクラスで close がオーバーライドされている場合、スーパ
>ークラスのドキュメントは使えないと思うので…。

逆じゃないのか?ドキュメントに明確に記述してある場合以外は
スーパークラスの仕様が適用されると考えるのが自然。interfaceも同様。

Reader/Writerもthe streamってのはそれがラップしてるものに他ならない
わけだから、それを閉じるってことは・・・
と考えていけば外側のストリームのclose()ですべてOKと考えられる。

厳密なことを言い出すとキリが無い(あるいは不安にさせるSunが悪いか)が
外側のストリームclose()だけで良いってのが非常に一般的だ。

>やっぱり finally でラップの全てのレベルでclose しないといけないのかな…

原発でも制御しない限りそんな必要はない。

ただし、finallyでのclose()だけは必須。
ちなみに、「ドキュメントに明確に記述してある」の例は、
java.util.IdentityHashMap
302287:04/08/10 23:51
 そうですね、よく考えたらスーパークラスの仕様を参考にできな
いんだったら interface の存在意義がなくなっちゃいますもんね…。
みなさんいろいろありがとうございました。とても勉強になりました。
303282:04/08/11 00:14
ありがとうございました
304デフォルトの名無しさん:04/08/11 00:18
RMIで、無名パッケージに全部コード書いて動作させると動くんですが、
パッケージ化させるとクラスパスの関係か?なんだか知りませんが、動作しません。

どうしたらいいですか?
305282:04/08/11 00:33
と、一応実行できてうれしいんですが
実はまだよくわかってません
診断君ででてくるIPと
ipconfigとかで出てくるIPは
いったいどういう違いがあるんですか?
グローバルなIPとローカルなIPみたいな関係ですか?
でも自分は自宅から光でインターネットにつないでるだけで
LANにはつないでないはずなんでローカルなIPなんてあるとは
思えないんですが・・・。
あほみたいな質問ですいません。
あほだし、あほ故にスレ違いにも気づかない
307デフォルトの名無しさん:04/08/11 00:47
>>306
そんなこといわずに。教えて。ください。おね。がいします。
308デフォルトの名無しさん:04/08/11 00:50
java.utiljのこと、コレクションのことなんだけど

Hashtable使うんだったらHashMap
HashMap使うんだったらTreeMapですよねえ?
>>308
いちがいには言えない
きちがいには言えない
javaでうんこをパッケージングしたいんですけど。
クラス設計はどうしたらいいかな。
いまJavaでプログラムをしていたのですが、
わからないところがあるので質問させてください。

コンソールから文字列を入力させて、CSV形式で保存したいと考え、
File csv = new File("output.txt");
BufferedWriter wr = new BufferedWriter(new FileWriter(csv, true));
InputStreamReader sr = new InputStreamReader(System.in);
として、
while(true) {
i = sr.read();
if (i == '\n'){
break;
}
else{
wr.write((char)i);
}
}(このあとコンマをいれたり、flushしたり

というふうにしたのですが、Enterを押してwhileを抜けると
ファイルにも改行が入力されてしまいます。
回避する方法はないでしょうか?
>>312 環境がわからないからそのものずばりは言えないけど
\r, \n とかCR, LFとか大丈夫? 何が入力されて
何が出力されているかちゃんとモニタしてごらん。
でも、自分だったらreadLine使って人任せにする。
314デフォルトの名無しさん:04/08/11 02:09
>>312
自分が試してみた所、(BufferedWriterをSystem.outから構築)
Writerをflush()しても改行されなかった。(末尾に改行コードがない)
おそらく、そちらの環境では改行すると\r\nと二文字入るのではないかな?
>>305
診断君ででてくるIPとipconfigとかで出てくるIPは同じです。
IP以外に問題があるのです。
ファイアーウォールがあると、インターネット側からのアクセス
を自動的に排除してしまいます。
またプロバイダによっては、同じく排除するように
自動設定してるところもあります。(安全の為に)
>>313
>>314
環境を書くのを忘れていました。すいません
win2000pro j2sdk1.4.2_05 パスを通してコマンドプロンプトでコンパイルしています。 

windowsなので、改行コードは\r\nの2文字が入ってるようです。
317 :04/08/11 03:03
Java1.5ていつでるの?しばらくプログラムからはなれてたけど、もう出てるのかと思った。
5.0だっつってんだろぉぉー
319デフォルトの名無しさん:04/08/11 04:16
java3Dのアプレットを表示しようとするとなぜか
java.lang.NoClassDefFoundError:javax/media/j3dGroup
というのが表示されてアプレットがエラーになってしまいます
なぜなんでしょうか?
一応java2SDKはインストールしています
osはwindows2000です
320305:04/08/11 04:18
>>315
ありがとうございました
>>319
java3Dはjava2SDKには付属していません。
322Sun:04/08/11 06:50
>>308
ごめん。HashtableとVectorは見なかったことにして
深夜のネタ大会
ネタっていうか起きてたっていうか
>>316 line.separatorが\r\nって自分でわかってるのなら、
行末の判定を\nだけでやるのは駄目ってのは理解できるよね。
>>322
つーかそれぞれ同期が入ってる分別物だろ
StringBufferとStringBuilderくらい違う

単純にこれをつかえというのは愚か
場合に応じて使い分けるのが正解
ネットゲームの課金問題で運営側と裁判中
ログよむと面白い
荒らすなよwww
ttp://ryozanpaku.s59.xrea.com/






328312=316:04/08/11 12:20
>>325
そうでした・・・。理解できてます。

そこでまたわからないのですが、
行末の判定を\r\nの2文字でやるにはどうしたら良いんでしょうか。
File csv = new File("output.txt");
BufferedWriter wr = new BufferedWriter(new FileWriter(csv, true));
InputStreamReader sr = new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(sr);

while(true) {
  String line=br.readLine();
  if(line.equals("")) break; //enterキーのみの空文で終了

  (lineを加工=このあとコンマをいれたり)
  wr.write(line);
  wr.flush();
}
HashMapとTreeMapってどっちが出し入れ速いかな?
>>329 readLine()がnullを返したときの処理が抜けてるよ。
>>331
特別な事をしない限り、コンソール入力ストリームに終了はない。
>>330
HashMapの実装の仕方とその扱うデータ集合との相性によって
大きく異なるが、大規模なデータになるほど理論上はHashMapの方が速い。
>>333
サンクス。
上の方でHashMapならTreeMapみたいな事書いてあるの見たから、どっちが良いのかなとちょっと気になった。
>>332 そう? 標準入力を要求するプログラムにパイプでデータを流すとか
特別なことじゃないと思うけどな。type con | java Hogehogeで実行して
^Z打ったときにnullが返るのってそんなに特別?
HashMapとTreeMapは、SortedMapインタフェースが保証する機能、
つまり、キーの順序付けが必要かどうかで使い分けるんじゃないかな。
337335:04/08/11 15:03
type conは例が悪いか。パイプの元のプログラムがエラーで終了する
ことってかなりありえるよねってこと。
while(true) {
  String line=br.readLine();
  if(line==null || line.equals("")) break;

  (lineを加工=このあとコンマをいれたり)
  wr.write(line);
  wr.flush();
}
>>336
そうだよ。そんなことこのスレの住人なら皆知ってるよ。
340デフォルトの名無しさん:04/08/11 15:13
違うよ。それだと、逆に言えばキーの順序付けが必要でなかったら
Hashを使えって事になっちゃうじゃん。
341デフォルトの名無しさん:04/08/11 15:15
<%@ page language="java" contentType="text/html;charset=Shift_JIS" %>
<html>
<head><title>forward.jsp</title></head>
<body>
<jsp:forward page="http://www.yahoo.co.jp" />
元のページ。
</body>
</html>

こうやっても飛ばないのですがなぜでしょう。
なっていいじゃん。
TreeMapの方が速いなら、順序づけがあろうと無かろうとHashMapの代替に使っても良いかなと思ったのですよ
>>341
jsp:forwardにしろRequestDispatcher#forward()にしろ、
別サーバ上のリソースにフォワード出来ない。
response.sendRedirect()しましょう。
>>343
それじゃ HashMap の存在意義ってなんだよ
つか構造考えてみるなり 手元の VM で計測してみるなりすれば?
346ゲソ:04/08/11 15:32
>>341
jsp:forwardはサーブレットエンジン内部で転送するものだけぇ、
同じサーブレットエンジン内のページにしか飛ばせん。
responseのsendRedirectメソッドを使いんさい。
こっちはリダイレクトっていって、クライアントのブラウザに
別のURLに接続しなおさせるものだけぇ、別のサイトに対しても使えるだわい。
347ゲソ:04/08/11 15:41
>>343
TreeMapは2色木、HashMapはハッシュ表だけぇ、
TreeMapから要素を取り出すために要する時間は、
全要素数nに対してlog(n)時間かかる。
HashMapはnの大きさに関係なくほぼ一定の時間で取り出せる。
ちゅうことは、要素がようけ入っとるほどHashMapの方が速い。
要素が少ない(10以下くらい)なら、Map使うよりかは、
配列を線形探索した方が多分速いで。
10万個の要素から1万回取り出す操作で試してみたが、気にするほどの速さの差は無いっぽい。
確かにHashMapの方が速いんだけど、それでもミリ秒単位。
キーも値もStringだからかな。
hash 作る時間が関係しとるんだろう
それにしても値は関係ないだろなに言うとんねん
いや、データ量の多いクラスがキーなら、差がもっと出るのかなと
自分が馬鹿なのかと思って一生懸命意味考えてます私
横からすんません、質問をば
LinkedHashMapって列挙も早いよって理解でいいんですかね
>>352
Mapに登録した要素の順序が問題になるときに使うクラス。
ttp://www-6.ibm.com/jp/developerworks/java/020111/j_j-mer0821.html
354デフォルトの名無しさん:04/08/12 09:49
>>350
実行時間がlog(n)オーダーというのは、
本当にデータ数が大きくなったら、実行時間の増加がほとんどなくなるということだよ。
データ量が無茶苦茶大きい場合はどの種類のMapもあんまり違いはないかも。
ただ、理論的にはHashMapが全般に速いはずなので、後々扱うデータの数が増えることを考えたら
とりあえずHashMapを使うのがよい。
ただし、辞書順で表示しないといけないとか、範囲で検索するとか、
要素を登録した順序を維持したいとか、単純なMapを超える特性が求められる場合は
他の物を使った方が効率が良くなる場合がある。
盆休みで暇な方、ここの418のやつ作ってくれませんか?
http://pc5.2ch.net/test/read.cgi/tech/1089527630/

419さんがつくってくれたんだけど、コンパイルでエラーがおきちゃいます。
>>355
vec.deleteになってるところを、vec.removeにしろ
357305:04/08/12 13:49
java3Dのアプレットを表示しようとするとなぜか
java.lang.NoClassDefFoundError:javax/media/j3dGroup
というのが表示されてアプレットがエラーになってしまいます
なぜなんでしょうか?
一応java2SDKはインストールしています
java3Dもインストールしてます
(java3d-1_3_1-windows-i586-directx-sdk.exe
っていうのと
java3d-1_3_1-windows-i586-opengl-sdk.exe
っていうやつです)
原因としてはいったい何が考えられますか?
どなたかアドバイスを・・・

359357:04/08/12 15:08
>>358
Java2 Runtime Environment
っていうやつをダウンロードしたいんですが
ダウンロードするところがわかりません
すいませんが直でリンク張ってもらえます?
>>359
SDK入れてるなら入ってるから。
361名前は開発中のものです。:04/08/12 16:00
JAVAで簡単なキー入力のゲームを作っています。
ときどきウインドウの大きさを変えたりなんかして、
アプレットにフォーカスがなくなり、キー入力が聞かなくなります。
いろんな頁で「画面をクリックしてみてください」と書いてありますが、
キーボードのフォーカスがなくなったら、アプレットに「画面を
クリックしてください」と表示したいのです。
addFocusListener(this);
を使用すればいいというところまでは分かったのですが、何を登録して
いいのかわかりません。この場合画面でしょうか。patnt(g)のg?
それともアプレット自体を登録する方法があるのでしょうか。
よろしくお願いします。
まず想像しましょう。
'addFocusListener' なんだから、当然 FocusListener を add するんです。

でもきちんと知識を蓄えましょう。
http://java.sun.com/j2se/1.4/ja/docs/ja/api/index.html
該当クラスの addFocusListener についての情報を見てください。
載ってなければ親クラスの頁を辿っていくと書いてあります。

>それともアプレット自体を登録する方法があるのでしょうか。
FocusListener は インタフェースですから、
Applet を継承したクラスで、ついでに FocusListener を実装しとけば可能です。
363357:04/08/12 17:31
>>360
そうなんですか?
じゃあなんでjava3dアプレットが表示できないんでしょう・・・?
うーん・・・わからん。
>>363
ちゃんと下まで読んで設定はしたのか?
>>363
これを見て、
ttp://www6.ocn.ne.jp/~tmitsu/Java/Config/j2re_win.html#Part5
J2SDKをインストールしたディレクトリを指定すればいいと違うのか?
ちなみにこのウィンドウは、コントロールパネルのJava Plug-inから開ける。
RMI/IIOP やっとるんですが、なんかバグっぽいのを発見しました
これは既知なのか、それともバグではなくてちゃんとした仕様なのか・・・
どなたか情報をいただけたら幸いです。

リモートメソッドを呼ぶとき String→String or Integer な HashMap を渡しているのですが、
value の方に "" リテラルがあると転送中に例外が発生するのです。
これが何故か、new StringBuffer().toString() とか new String("") だと問題ない。
どんな例外だかコードが出るだけなのでよく分かりませんが、展開中に失敗しているような感じ。

他にも "" を送っているところはあると思うのですが(ちと膨大なのでまだつかめてません)、
何故か特定の部分でだけ起こるっぽい。同時に送っているほかのデータに関係しているのか・・・

こんなの聞いたことある方いらっしゃいますか?
Javaはぬるぽって本当ですか?
368287:04/08/12 20:52
 度々すみません。

 HttpURLConnection のことなのですが、APIドキュメントを見る
と、そこから得られた InputStream、OutputStream のいずれかを
close した場合、インスタンスに関係するネットワークリソースは
開放されるが、共有された下層の持続的なコネクションは開放され
ない、とあります。

 disconnect() を使うとその下層のソケットが開放されることも
ある、と書いてありますが… disconnect() の説明をみると、サー
バに当分リクエストを発行しないだろうことを示す、とあります。

 HttpURLConnection を使用した場合、InputStream か
OutputStream を閉じれば disconnect() は呼ばなくてもよいので
しょうか。それとも何かの基準で呼ばなければならないのでしょう
か。

 すみません、お答えいただけますと幸いです。
>>368

HTTP の keep-alive について調べてみよう。
いきなりHttpURLConnectionから入ると逆に難しいんじゃない?
httpプロトコルの仕様見たほうが簡単だと思うよ、すっごく単純だから

やったら畏まった記述してるけど斜め読みすればさくっと
あとは右脳にまかせるんだ、毎夜好きなあの子を淫らに妄想して自主トレできる奴はそのまま、好きなあの子を機械臭い中高年のおっさんにかえて、B80の小ぶりなブラジャーをあけずにPort80開くんだ!!!そこがストリームだあああ
質問です。
行列の掛け算の消費メモリ、スピードを出来るだけ節約したく思っています。
以下2種類のクラスを記しますが、
クラスAの方がBよりわずかにスピードは上なのですが、メモリをかなり消費してしまいます。
その理由がわかりません。どこか無駄のある処理をしている部分はありますでしょうか?
372続き:04/08/12 21:47
**************
public class A {

public static void main(String[] args) {
System.out.println("残りメモリ1=" + Runtime.getRuntime().freeMemory());
int limit=300;
long start = System.currentTimeMillis();
double[][] A=new double[limit][limit];double[][] B=new double[limit][limit];double[][] C=new double[limit][limit];
for(int i=0;i<limit;i++){
A[i][i]=1.0; B[i][i]=1.0;
}
C=times(A,B);
long end1 = System.currentTimeMillis();
long time1 = end1 - start;
System.out.println("time1=" + time1);
System.out.println("残りメモリ2=" + Runtime.getRuntime().freeMemory());
}
俺のナレーションでみんな出そうなっただろ?恥ずかしがるな、お前だけじゃない
374続き:04/08/12 21:48
public static double[][] times(double[][] A, double[][] B) {
int gyou = A.length;i nt gyou2 = A[0].length; int retu = B[0].length;
double[][] ans = new double[gyou][retu];
for (int i = 0; i < gyou; i++) {
for (int j = 0; j < retu; j++) {
double d = 0;
for (int k = 0; k < gyou2; k++) {
d += A[i][k] * B[k][j];
}
ans[i][j] = d;
}
}
return ans;
}
}
**********

375続き:04/08/12 21:48
public class B {

public static void main(String[] args) {

System.out.println("残りメモリ1=" + Runtime.getRuntime().freeMemory());
int limit = 300;
long start = System.currentTimeMillis();
matrixM A = new matrixM(limit);
matrixM B = new matrixM(limit);
matrixM C = new matrixM(limit);
for (int i = 0; i < limit; i++) {
A.put(i, i, 1.0);
B.put(i, i, 1.0);
}
C = A.times(B);
long end1 = System.currentTimeMillis();

long time1 = end1 - start;
System.out.println("time1=" + time1);
System.out.println("残りメモリ2=" + Runtime.getRuntime().freeMemory());
}
}
376続き:04/08/12 21:49
class matrixM {
double data[][];
int ncol, nlin;

public matrixM times(matrixM x) {
matrixM ans = new matrixM(nlin);
for (int i = 0; i < ans.nlin; i++) {
for (int j = 0; j < ans.ncol; j++) {
double d = 0;
for (int k = 0; k < ncol; k++) {
d += data[i][k] * x.data[k][j];
}
ans.data[i][j] = d;
}
}
return ans;
}
public matrixM(int n) {
data = new double[n][n];
ncol = nlin = n;
}
public void put(int i, int j, double d) {
data[i][j] = d;
}
}

**************************************************
377デフォルトの名無しさん:04/08/12 21:54
>>368
HTTP1.1は、持続的接続がデフォルトの設定になっています。
1.0以前は、同じホスト内のどれかのファイルパスを対象とする送受信が
終わると同時にその接続はcloseされてしまい、その度にソケット接続を
やり直さねばなりませんでしたが、1.1以降は一度そのホストにアクセスしたら
しばらく接続状態が続き、同じソケットで複数の送受信ができる様になり、
いちいちソケット接続をやり直さなくてもよくなりました。
そうなると新しいcloseの基準が必要となりますが、一つは一定時間送受信が
無いと接続を終了するというものであり(timeout)、もう一つは
JAVA式に言えばリクエストプロバティのConnectionフィールドにcloseを
記入してリクエスト送受信を行う事です。closeを含めるとそのリクエスト送受信を
最後に接続が終了する事を相手サーバーに伝える事になります。
disconnect()とは、リクエストヘッダにConnection: closeを含める事なのです。
よって次のInputStreamかOutputStreamの実行で、そのソケット接続は終了する事を
相手サーバーに伝えます。
disconnect()の使用の基準は、相手サーバーに明確に接続終了を伝える事がアプリケーション上
必要なケースか、又は相手サーバーに無駄なaccept待機を使わせない様にする為の礼儀です。
378デフォルトの名無しさん:04/08/12 22:31
>>371
double[][] ans = new double[gyou][retu];
これが無駄です。

double[][] ans = new double[gyou][retu];

double[][] ans = new double[ gyou * retu ];

ans.data[i][j] = d;

ans[ j*i + j ] = d;

こうした方がいいでしょう。
379間違えた 訂正:04/08/12 22:34
>>371
double[][] ans = new double[gyou][retu];
これが無駄です。

double[][] ans = new double[gyou][retu];

double[][] ans = new double[ gyou * retu ];

ans.data[i][j] = d;

ans[ i*retu + j ] = d;

こうした方がいいでしょう
380287:04/08/12 22:40
 みなさんいろいろお返事ありがとうございます。persistent
connection って言葉からもしかしたら TCP/IP コネクションを使
いまわすやつのことかな…と想像はしていたんですが、やっぱりそ
うなんですね。

> disconnect()とは、リクエストヘッダにConnection: closeを含める事なのです。
> よって次のInputStreamかOutputStreamの実行で、そのソケット接続は終了する事を
> 相手サーバーに伝えます。

 …ということは、disconnect() を呼んでも即座に TCP/IP コネ
クションが切断されるわけではないんですね。HTTPリクエストが勝
手に発生しても困るから当たり前なのかもしれませんが…意外でした。

 …で、本題なのですが…一般的に(といっても何をもって一般的
というのかはわかりませんが…)、disconnect() しない、という
ことは普通なのでしょうか。それとも、FileStream を閉じないな
どのしてはいけないレベルのことなのでしょうか…?どうもそこら
へんの常識がわからなくて…。「コネクションやストリームは開い
たら閉じなければならない」という原則に反するので、いいものか
どうか迷っているのです…。
381378-379:04/08/12 22:40
すいません。上を前面的に撤回します。
パッと見してans.data[i][j]が、ans.data[i][i]に見えてしまいました。
んな事するわけないですな。
質問です。
行列の掛け算の消費メモリ、スピードを出来るだけ節約したく思っています。
以下2種類のクラスを記しますが、
クラスAの方がBよりわずかにスピードは上なのですが、メモリをかなり消費してしまいます。
その理由がわかりません。どこか無駄のある処理をしている部分はありますでしょうか?
**************
public class A {

public static void main(String[] args) {
System.out.println("残りメモリ1=" + Runtime.getRuntime().freeMemory());
int limit=300;
long start = System.currentTimeMillis();
double[][] A=new double[limit][limit];double[][] B=new double[limit][limit];double[][] C=new double[limit][limit];
for(int i=0;i<limit;i++){
A[i][i]=1.0; B[i][i]=1.0;
}
C=times(A,B);
long end1 = System.currentTimeMillis();
long time1 = end1 - start;
System.out.println("time1=" + time1);
System.out.println("残りメモリ2=" + Runtime.getRuntime().freeMemory());
}
public static double[][] times(double[][] A, double[][] B) {
int gyou = A.length;i nt gyou2 = A[0].length; int retu = B[0].length;
double[][] ans = new double[gyou][retu];
for (int i = 0; i < gyou; i++) {
for (int j = 0; j < retu; j++) {
double d = 0;
for (int k = 0; k < gyou2; k++) {
d += A[i][k] * B[k][j];
}
ans[i][j] = d;
}
}
return ans;
}
}
**********
public class B {

public static void main(String[] args) {

System.out.println("残りメモリ1=" + Runtime.getRuntime().freeMemory());
int limit = 300;
long start = System.currentTimeMillis();
matrixM A = new matrixM(limit);
matrixM B = new matrixM(limit);
matrixM C = new matrixM(limit);
for (int i = 0; i < limit; i++) {
A.put(i, i, 1.0);
B.put(i, i, 1.0);
}
C = A.times(B);
long end1 = System.currentTimeMillis();

long time1 = end1 - start;
System.out.println("time1=" + time1);
System.out.println("残りメモリ2=" + Runtime.getRuntime().freeMemory());
}
}
class matrixM {
double data[][];
int ncol, nlin;

public matrixM times(matrixM x) {
matrixM ans = new matrixM(nlin);
for (int i = 0; i < ans.nlin; i++) {
for (int j = 0; j < ans.ncol; j++) {
double d = 0;
for (int k = 0; k < ncol; k++) {
d += data[i][k] * x.data[k][j];
}
ans.data[i][j] = d;
}
}
return ans;
}
public matrixM(int n) {
data = new double[n][n];
ncol = nlin = n;
}
public void put(int i, int j, double d) {
data[i][j] = d;
}
}
*************************************************
みなさんいろいろお返事ありがとうございます。persistent
connection って言葉からもしかしたら TCP/IP コネクションを使
いまわすやつのことかな…と想像はしていたんですが、やっぱりそ
うなんですね。

> disconnect()とは、リクエストヘッダにConnection: closeを含める事なのです。
> よって次のInputStreamかOutputStreamの実行で、そのソケット接続は終了する事を
> 相手サーバーに伝えます。

 …ということは、disconnect() を呼んでも即座に TCP/IP コネ
クションが切断されるわけではないんですね。HTTPリクエストが勝
手に発生しても困るから当たり前なのかもしれませんが…意外でした。

 …で、本題なのですが…一般的に(といっても何をもって一般的
というのかはわかりませんが…)、disconnect() しない、という
ことは普通なのでしょうか。それとも、FileStream を閉じないな
どのしてはいけないレベルのことなのでしょうか…?どうもそこら
へんの常識がわからなくて…。「コネクションやストリームは開い
たら閉じなければならない」という原則に反するので、いいものか
どうか迷っているのです…。
>>387

WWWブラウザ使ったことないのか(w

1回の接続で1つのリソースしか取ってこないんなら毎回切ってもいいだろうが。
389デフォルトの名無しさん:04/08/12 23:22
javaアプレットを実行しようと思ったらjava.lang.NoSuchMethodError:sun.net.www.http.KeepAliveCache.get(Ljava/net/URL;)Ljava/lang/Object;
っていうエラーが表示されてしまいます
なぜですか?
390JAVA一年生:04/08/12 23:43
みなさんがJAVAに開眼した本などあったら教えてください。
お前が馬鹿だからだな
392287:04/08/12 23:58
>388
 いえ、disconnect() しなくていいのならできればしたくないので…。

 Sun のサイトの、

ttp://java.sun.com/docs/books/tutorial/networking/urls/readingWriting.html

 なんかをみると、HttpURLConnection を使っているっぽいのに
disconnect() を呼んでない(というより URLConnection で受けて
いるので disconnect() が呼べない)ので、やっぱり
disconnect() はなしでも大丈夫なのかな…。みなさんいろいろあ
りがとうございました。
>>390
他クラスのメソッドを呼ぶのに何通りも方法があるのに気付いて、
1日潰して「色んなHelloWorld」を作ってみたことがある。
new とか static とか implements とか import とか、普段何気なく
使っていたキーワードの意味が次々に繋がって、まさに「開眼」だった。
それ以来解説サイトで飛び交うやりとりがするすると頭に入るようになったよ。
394デフォルトの名無しさん:04/08/13 00:19
gccでjavaのコンパイルってできますか?
jvmのコンパイルはできるんじゃない?
396389:04/08/13 00:31
エラーが消えなくてこまってます
どなたかおしえてください
馬鹿が消えなくて困ってます
どなたかおしえてください
398394:04/08/13 00:34
>>395

JAVAは超入門者なもんで、JVMの意味が理解できません。
>>394
くわしくはこちらをどうぞ。
「gcjって使ってる人います?」
ttp://pc5.2ch.net/test/read.cgi/tech/1046627795

>>395
はいはい、よかったね。
400394:04/08/13 00:52
>>399

激しく感謝します。m(_ _)m
401389:04/08/13 01:13
うーん・・・
何かの設定ミスですかね?
もう一回javaをインストールしてみようかなぁ
すいません。質問です。

int a = 0;
InputStreamReader br = new InputStreamReader(System.in);

a = b.read();

System.out.println(a);

最後のprintのところで
キーボードから入力したとおりの数値が出ません。
どうすればいいのでしょうか。
>>402
スペースキー押したら 32 を表示したいとかだったらそれで良いのだが。

何を入力して、期待した出力は何で、実際の出力は何だったわけ?
>>390
青柳本を読んだときかなぁ。
ttp://www.amazon.co.jp/o/ASIN/4769203721/ref=noism

絶版だけど……
405デフォルトの名無しさん:04/08/13 05:38
javaアプレットを実行すると、アプレットビューアで
「Start:アプレットは初期化されていません。」
と言われます。
どうしたら初期化できますか?
>>402
br と b の関係は? typo?
>>402
キーボードから入力できるのは数字。その場合数字を表す数値が入力されている。
じゃなくて数値を表す数字を入力して数値に変換するには、
BufferedReader あたりを使って 1行入力し、Integer クラスで変換する。

>>405
Javaコンソール見てからもっぺんこい
408デフォルトの名無しさん:04/08/13 11:44
SocketでHttp通信プログラムを作ってるのですが
HTMLソースを読みこんで解釈して、次はその中に記述されてる
リソースURLにアクセスすると、200以外のコードが返ってきて
アクセスできなくなる事が、稀にあります。
しかし、プログラムを再起動して初めからいきなりその
リソースURLを読み込むと成功するのです。
下層Socketの使い回しが原因なのかと思って、一アクセスごとに
Socketを作り直し、常にConnection: closeにして、さらに試験的に
一アクセスごとに数秒待機するようにしても、HTMLソースを読み込んだ次だと
アクセスが失敗してしまうのです。プログラムを再起動して初めから
そのリソースURLを指定すると普通に読み込めるのにです。
リクエストラインとリクエストヘッダは全く同じ文章を送っています。
Referも正確に記述してますし、UserAgentを初めとする各ヘッダも
ある標準の製品ブラウザと全く同じ文章を送っています。
それなのに起動後、同ホストに1回目と2回目のアクセスでは
リソースURL成功の結果が違うのです。
どうか対処法を教えてくださいませ。
409905:04/08/13 11:53
>>408
Http通信するならJakarta commonsのHttpClientとか使えば。
JavaでhttpしゃべるのにSocket使うのなんて苦労が多いだけで意味ないと思うが。
HttpURLConnectionとかあるし。
410デフォルトの名無しさん:04/08/13 19:36
ネスケ4.7でJavaScriptからAppletのメソッドにアクセスできません。
IEでは出来ているんですけど、なぜでしょうか?
>>410
根輔が対応してないから。要するに無理。
質問です。

諸般の事情で、Javaでhttpプロトコルをいじる雲行きになりそうなのですが、
一冊、Javaのネットワークプログラミングに関する本を購入したいと思っております。

>>281の本とかどうなのでしょう?また、お勧めの本等ありましたら紹介していただけると幸いです。
RFC
414デフォルトの名無しさん:04/08/14 00:10
/の逆を打とうとすると¥になっちゃうんですが、
Shiftを押すとちゃんと”_”になります。
autoexec.batを変な設定にしてしまったからでしょうか?
ちなみにSET PATHがふたつありました。
ふたつとも”;c:j2sdk1.4.2_05\binを付け加えた方がいいですか?
バックスラッシュ=¥でNP
>>413
いや、なるべく一般書の範囲で(;´Д`)
417414:04/08/14 00:27
>>415
>>416
ありがとうございます
418デフォルトの名無しさん:04/08/14 00:28
>>413
英語なんか読める訳ないだろ。
和訳読めば。
>>412
確かURLConnectionクラスはソースがあるから参考にしてみては
421デフォルトの名無しさん:04/08/14 01:08
eclipseでjavadocってどうやって作るんですか?

javadocコマンドの欄になにを指定していしていいかわからないです。

わかる方よろしくお願いします
>>421
ここ来る前にやるべき事があるだろ
423414:04/08/14 01:20
C:\PROGRA~1\NETWOR~1\MCAFEE~1\SCAN.EXE C:\ /NOBREAK /SILENT
NLSFUNC は Windows の DOS コマンドプロンプトからは組み込めません.
という表示がでたのですが 対処のしかたが分かりません
PATHの表示は
PATH=C:\FJUTY;C:\PROGRA~1\NETWOR~1\MCAFEE~1;C:\J2SDK1.4.2_05\BIN
です。
【Java/C/PHP/他】統合開発環境Eclipse M13
http://pc5.2ch.net/test/read.cgi/tech/1089456669/
質問です。
パッケージ名に「x」がつくのとつかないのとは意味的にどういう違いがあるの?
javax.swingとか・・。

xが付加されるパッケージ名にはなにかあるのでしょうか?
xがつくとカコイイ!
427デフォルトの名無しさん:04/08/14 01:56
javaxのxとはextensionの略で、ズバリ拡張パッケージの事なのです。
今までにない新時代のjavaパッケージであると表現してるのです。
SUNは大げさな名前が好きですからね。
イベント発行もfireとかして、僕もつられてfire系メソッドを
書く時は、映画パトリオットを思い出しながらファイアーと叫んでいます。
ありがとうございます。
xはextensionのx。ちぃ覚えた。
拙作の httpd です。随分長い間放置している上に汚いソースですが、
参考の一助にでもなればお使いください。現在連続稼働(放置)40日目でつ。

URL
http://yoda.myhome.cx/
ソースのダウンロード
http://yoda.myhome.cx/yoda/2ch.txt
ソースはこっちだった。。。_| ̄|○
http://yoda.myhome.cx/products/
431デフォルトの名無しさん:04/08/14 03:30
Emailクライアントを作ろうと考えてるのですが、自分の使ってるメールサーバーの
IPが何なのか分かりません。
SMPTサーバーのアドレス
smtp.onyx.dti.ne.jp
からIPアドレスを取得する方法は有るのでしょうか。

よろしくお願いします。
>>431
202.216.228.39
433デフォルトの名無しさん:04/08/14 03:57
>>432
有難うございます。
宜しければ後学のためにどのようにこのIPを取得したのか
教えていただけますでしょうか
>>433
DOS窓なりシェルなりで
ping smtp.onyx.dti.ne.jp
435デフォルトの名無しさん:04/08/14 04:17
>>433
あ、なるほど。
基本的なことが抜けてるなぁ。。
本当に有難うございました!。
彼は自分のプログラムの中にpingを埋め込むつもりなんだろうか・・・
437デフォルトの名無しさん:04/08/14 05:04
>>436
いえ、ただ単に、Propのなかに入れる自分のメールサーバーのIPを
調べる方法が分からなかったので。。。
IPさえ分かれば普通にそれをハードコードするだけです。
>普通にそれをハードコードするだけです。

ヲイ!
別にいいんじゃないか。
ハードコーディングする以上は自分専用なんだし。
ツッコム位ならマシな方法を知っているんだろうから
教えてやってはどうか。
439==431
441デフォルトの名無しさん:04/08/14 07:32
Stringの配列に任意の文字列が含まれているかを
調べるメソッドってないでしょうか?
442デフォルトの名無しさん:04/08/14 07:48
Swing のコンポーネントで MouseEvent を受け取らない方法ありませんか?
setEnable(false) でも MouseEvent は受信してしまうみたいです。
setVisilble(false) は使うわけにはいきませんので、MouseEvent 完全無視の
良い方法があったら教えてください。
>>431
JavaMailなんて使ったこともないけど
わざわざIPアドレスで指定しないといけないの?

まぁ誰もツッコミ入れてないので、きっとそうなんだろう
444デフォルトの名無しさん:04/08/14 08:48
>>442
一つの方法です。compoが対象コンポーネントです。

MouseListener[] mls=compo.getMouseListeners();
for(int i=0; i<mls.length; ++i) {
  compo.removeMouseListener(mls[i]);
}
>>441
indexOf()
含まれてたら0以上、なかったらー1
446441:04/08/14 09:00
>>445
配列全体に対してつかえましたっけ?

[0]〜[100] の配列のどれかにその文字列が
含まれてるか?という感じなんですが。
ああ、す、すみません。。。。
自分でループ処理するしかないと思います。。。
448431:04/08/14 09:57
>>446
matches(String regex)
Arrays.asList(String[]).contains(string)
てのでもいいけど
自分で処理した方が早いかな
ああ、String配列の要素に、検索文字列がequalで存在してるかどうか
だったのですか。
String配列内のどれかのStringに、検索文字列がsubStringとして含まれてるか
どうかと思ってしまいました。。。
451431:04/08/14 11:55
>>448
俺を貶めるな
452デフォルトの名無しさん:04/08/14 12:02
最近Javaやりだしました。
Javaのオブジェクト指向プログラミングって、結論言ってしまえば、

「クラスごとにインターフェイスを実装して、自分を利用したいクラスは、
そのインターフェイスを利用してやり取りするもの」

でいいですか?
>>452
人がいいのもほどほどに、あまり利用されないようにね。
>>452
それは単に、インタフェースの使い方の説明でしょう。
455452:04/08/14 12:26
>>454
うん…。

どうしても構造化プログラミングから頭が離れなくて、
なにか一言でオブジェクトな頭になる考え方ないですか?
>>455
ポリモフィズムを理解しろ
457452:04/08/14 12:55
>>456
ポリモフィズムを表現するのにインターフェイスが最適っぽかったので、
めぐりめぐって>>452インターフェイスの使い方の説明になってしまったのかも。
ってことは>>452でいい?
そんなもの。
459441:04/08/14 13:36
レスどうもです。
とりあえず、自分でまわすことにしてみました
460デフォルトの名無しさん:04/08/14 13:40
>>452
違います
>>457 それだとクラスの継承はオブジェクト指向と関係ない機能
であるということになるがそれでいいと思う?
462452:04/08/14 14:11
>>461
うん、そう思ってました。

もう継承は、クラスやインターフェイスの「機能の拡張(構造化の延長)」にしか使わないと割り切って、
極端な話、始めは使わない方向でいくのがいいと判断しました。
それにオブジェクト指向というよりは構造化の便利機能のようにおもっているんですけど。
463デフォルトの名無しさん:04/08/14 14:26
>>462
いや、その考えで正しい。
ボリフォリズムは「動作」に基づくのであって、機能に基づくのではない。
よってextendsは機能拡張(継承)であり、inplementsは多態性を実現させるものと
するのが、純粋な理論上では、すっきりと整理されてる正しい意見だ。
extendsも当然多態性を実現させるけど、多態性を実現させる為「だけ」に
extendsするのは下手なOOPだよ。
ボリフォリズム
多態性はオブジェクト指向の中でも論じられる概念だけど、イコールではないよね。
ポリホモフィズム
ケツ掘りズム
468452:04/08/14 15:11
なんか、ひとつすっきりしました。みなさんありがとうございました。
質問させてください。
Vectorクラスのvecがあって、
それの要素iが0かどうか調べる時、
if ((Integer)vec.elementAt(i) == 0)
とすると
演算子 == は java.lang.Integer,int に適用できません。
とコンパイラに言われてしまいます。
どうしたら比較できますか?
vecにはintしか入れていません。
> どうしたら比較できますか?
vec.elementAt(i).equals(new Integer(0))

> vecにはintしか入れていません。
java.lang.Vector には参照型しか入らないので
プリミティブ型である int は入れられません。
471デフォルトの名無しさん:04/08/14 16:05
>>469
if( ((Integer)vec.elementAt(i)).intValue() == 0)
>>470さん、>>471さん、ありがとうございます。
お二方の通りにしたらできました。
ここでひとつ疑問が生まれてしまったのですが、
Integerとintってなにが違うんですか?
オブジェクトとプリミティブ型
スーパークラス型にサブクラスを代入した場合、
サブクラスで新規で作った、変数、メソッドは
捨てられるってことだよね??

オーバーライドしたところは、そのまま置き換わる
でいい?
intは、-2147483648〜2147483648の範囲の数値そのものであり、
Integerは、簡単に書くと
class Integer {
  int value;

(いろんなメソッド)
}
と、intの数値を内包しているクラスオブジェクトなのです。
>>474
捨てられないですよ。
ただサブクラスのメソッド&フィールドが
アクセスできなくなるだけですよ。
>474

捨てられるって表現でいいのかなぁ?
実際そのスーパークラス型の変数をキャストすればちゃんと
使えるし。
>>474
> スーパークラス型にサブクラスを代入した場合、
> サブクラスで新規で作った、変数、メソッドは
> 捨てられるってことだよね??
「捨てる」というのが何をさしてるのか良くわからんが、
サブクラスで宣言されたクラスメソッド、クラス変数、インスタンス変数、
およびスーパークラスで宣言されなかったインスタンスメソッドは一時的に見えなくなるだけ。

もっかいサブクラス型の変数に代入すれば全部見えるようになる。
振る舞いをスーパーのものに「制限する」って感じじゃないかと。
480469:04/08/14 16:32
>>473さん>>475さんありがとうございます。
よくわかりました。Integerの方が便利なんですね。
ああ、制限というより
中身はどうであれ
「スーパーであるかのように振舞う」だね。
>>480
便利だが隣の店に車で買い物に行くようなもの
483474:04/08/14 16:54
>476 >477 >478 >479

そうだったんか・・・間違えて理解してた。。
良く分かりました。ありがとう。
MIDP上で、RandomのnextInt()を使うと小数点になってしまいます。
Mathにも小数点を丸める方法がありませんでした。
どうしたら小数点を丸められますか?
そもそも乱数の使い方が違うのでしょうか?
>>484
お前の目は毛穴だな
486442:04/08/14 17:45
444 さんありがとうございます。一応その方法も検討したのですが、
永続的に MouseEvent を拒否したいのではなく、その都度切り替えたかったので
setEnable のように簡単な方法がないかな〜と。
結局、removeMouseListener する前に現状のリスナーを保存しておき、後で戻して
やるしかなさそうですね。どうもでした。
>RandomのnextInt()を使うと小数点になってしまいます。
もはやカオスだな
>>485,>>487
かけ算するのはわかってるんです。小数点が丸められないんです。
>>486

未確認ですけど、
Component#disableEvents(AWTEvent.MOUSE_EVENT_MASK);
でどうなります?
何言ってんのか、何に困ってんのかサッパリ分からん。
>小数点が丸められないんです。
フォントが小さいからじゃないの?
複数ピクセル使うフォントなら丸くなるよ。
丸めるって表現じゃ理解できないですか?
http://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E5%B0%8F%E6%95%B0%E7%82ケ%E3%82%92%E4クク%E3%82%81%E3%82%8B&num=50

Round使いたいけど使えないんです。
MIDPのMathクラスにRoundが入ってないんです。
>>489
おお、そ、それだ!
>>491
7件しかヒットしないものを、何偉そうに貼ってんだ。
>Round使いたいけど使えないんです。
はじめからそう言えよ。つかそんなの (int) でキャストすりゃいいだろ。
切捨て切り上げは小学生レベルの問題だしあほくさい。

そもそも nextInt で何故に実数になるの?(小数"点"にはなりえないのはおいといて)
>>489
>>492
俺の試し方が悪いのかもしれないが、効かないかもしれないぞ。
それを試した上でだめで、前に同じ質問して同じ remove せよとの回答貰った。
今試しても効いてない。
KeyEvent を enable するのには使えてるんだがなぁ・・・
>>493
ありがとうございます。できました。
じゃぁ国語辞典に載っていてもだめですか。
http://dictionary.goo.ne.jp/search.php?MT=%B4%DD%A4%E1%A4%EB&kind=&mode=0&jn.x=40&jn.y=17
>>495
丸めるという表現の意味は当然分かってます。
小数点になってしまいます、小数点を丸めたいですというアホな日本語を馬鹿にしています。
点にはならね−し小数点は普通丸いっつの。

せめて小数点「で」といってほしかった。
間違えてごめんなさい
>>484の言っていることも
>>490の言ってることも
本気でわからん。
↓これ全部で小数
1.398424
 ↑この点は小数点
>>498
ごめん。明朝でないとだめだ。
そんなことをネチネチ言ってたのかYO
ちとちいさすぎねぇか
11cm なら平均ちょっと下回るくらいだろ
すると俺の方が小さいということに・・・。
丸め誤差かもよ
確か勃起時で13cmが平均
506デフォルトの名無しさん:04/08/14 19:15
ネットワーク関係を勉強中のネット初心者君です。
ヤフーメッセンジャーのエミュレーター版のソフトで「ヤフーエミュレーター」
っていうのがあるんですがああいうのってどうやって作るんですか?
ヤフー側のサーバーにログインするにはまず何から始めればいいのかという
基本的なことからわからないんですが。
こういうのって普通に「javaネットワークプログラミング」とかいう本を読んでるだけで
できるようになるんですか?
本読むだけで作れるようなら苦労しないなぁ。

>ああいうのってどうやって作るんですか?
まずヤフーメッセンジャーみたいなソフトの作り方を勉強する。
ガワを参考にするぐらいにして、独自に。
そしたらどうやってエミュレータ作ればいいか、ほんわかと分かる。
Math#round()でだめな理由は何よ
509デフォルトの名無しさん:04/08/14 19:49
>>507

メッセンジャーみたいなソフトの作り方ってどうやって勉強したらいいんでしょうか?
あと、ガワってなんですか?
>>509
>メッセンジャーみたいなソフトの作り方ってどうやって勉強したらいいんでしょうか?
じゃぁまぁ好きな本から読んでけや。

>あと、ガワってなんですか?
ガワって方言なのかな? 普段使ってて普通に通じてたけど・・・
外観のこと。ボタンがどこについてようが、フォントがどうだろうが、
果ては Window が表示されずにコンソールアプリになってしまおうが、ソフトウェアの本質、必要な要件は同じ。
メディアプレーヤのスキンみたいな位置付けだとでも思っておくれ。

コンソールアプリって何ですかとか聞かないこと。きりが無くなる。
>>506
ヤフエミュを作れるスキルのあるやつはここにはいないから安心しろ
ここには >511 レベルの馬鹿しかいないからな。
513デフォルトの名無しさん:04/08/15 00:09
サーブレットでのPrintWriterによるHTML出力を1行ずつ
逐次表示したいのですが、可能でしょうか?

PrintWriter out = response.getWriter();
for (int i=0; i<100; i++) {
  out.println(i + "回目"); // この行をHTMLに逐次表示
  Thread.sleep(1000);
}

これだと、for文がすべて回ってから一気に表示されてしまいます。

実際にはfor文ではなくて処理の重い作業をやっているのですが、
ブラウザ側ではステータスバーが進むだけで、どこまで処理が行っているのか
ユーザがわからないので、随時HTMLを出力したいのです。
>>513
out.flush()
>>513

1ページ分ちゃんと出さないとブラウザで表示できるかどうかは
わからないんじゃないの?
516デフォルトの名無しさん:04/08/15 01:16
今23歳なんですが大学の3年次編入の受験を受けようかどうしようか迷ってます
親はお金のことは心配するなといってくれているんで好きなように
やらしてもらおうかと思ってるんですが
やっぱり年齢的にきついんで素直に中途採用でどこかの小さな会社に入ったほうがいいの
かなあとかいうふうにも思ったりしてます。
どうしたらいいですか?
517デフォルトの名無しさん:04/08/15 01:19
JtoolBarをNorthに2つつけることはでき巣か?
518デフォルトの名無しさん:04/08/15 01:47
northにJPanelかBoxをつけて、そこにJToolBarを二つつければOK
519デフォルトの名無しさん:04/08/15 03:14
>>514
意味ないです。

>>515
そう言われるとそうですが、ということは実現不可能?
一旦リクエストを終了して、自動的にリクエストを繰り返す方法だと、
変数の中身が引き継げないし・・・
不可能なのか・・・
>>516
プログラマーになる前提で。
PGM出来るなら若いうちにどこでもいいんで会社入って経験積んだほうが
いいと思われ。
年取るとPGM出来ても経験ないと雇ってくれないとこ多い。
まあ、まだ卒業しても25歳?なら問題ないと思うが。

もしかして誤爆?
521517:04/08/15 03:28
>>518
ありがとうございます。
JPanelにセットしたら希望通りのデザインにできました。
522516:04/08/15 04:15
>>520

>まあ、まだ卒業しても25歳?なら問題ないと思うが。
年齢のこと一番気にしてたんでそれ聞いて安心しました
それにいくら経験つんでも大卒じゃないと大手には入れ無いと思うんで
やっぱり大学に入ってみます
ありがとうございました
>>522
いまどき2年も時間を無駄にするような選択はしない方が良い
524デフォルトの名無しさん:04/08/15 06:23
イベントの処理の仕方にはいろいろあると思うんですが、

add○○Listener(new ○○Listener(){メソッド});ここに全部書く
add○○Listener(this);JFrameにリスナーを実装する
add○○Listener(MyAdapter);別のクラスを自分で作る
etc

どの方法が一番美しいですか?
どれも美しくないっていう意味かな?
526デフォルトの名無しさん:04/08/15 06:52
>>525
どの方法がもっとも拡張しやすく、コンパクトで、
一般的かなと思いまして。
527デフォルトの名無しさん:04/08/15 10:48
javaAppletを作成したのですがeclipseからは実行できるのにアプレットを貼り付けたhtmファイルからは実行できません
なぜなんでしょうか?
>>527 OSとブラウザの種類、JavaPluginを入れているか、VMのバージョン、
Javaコンソールの出力、アプレット内で使用しているAPIのバージョン(1.1系か
Java2系か)とコンパイルオプションは実行系と一致しているか、
「実行できない」とはどういう意味か(htmファイルをworkbench内でダブル
クリックしてもブラウザが立ち上がらないとか、ブラウザは立ち上がるが
アプレットが表示されないとか)、くらいあると答えやすいよ。
>>526
場合によりまくる
530527:04/08/15 12:29
>>528
早速の回答ありがとうございます!

OSはWindows2000
ブラウザはIE6
javaのバージョンは1.4.2_05です

ステータスバーに「アプレットの読み込みに失敗しました」と出ます
コンソールに "access denied (java.io.FilePermission map1.dat read)" と表示されたので、外部ファイルが読み込めていないっぽいのかなぁと思っています

Permissionって属性のことですよね
えーと、どうすればいいんだろう...
アプレットでは基本的にファイル読み書き不可

http://hogehoge.hoge/hogeappret/←こんなのうっかり踏んでファイルごっそり消されたらたまらんだろ
532527:04/08/15 12:38
>>531
ぇぇぇぇぇ、そうなんですか!
じゃあゲームでハイスコアとかできないのかな

ああ、でもすごい納得
ありがとうございました... ぅう
ハイスコアはサーバー側に置く
534527:04/08/15 12:42
>>533
んん?
アプレットでファイルの読み書きはできないんですよね

よかったらもう少し詳しく...
アプレットは、サーバから PC へブラウザにダウンロードしてもらって、ユーザが使う
アプレットはそのサーバと(だけ)通信ができる
サーバ側にサーバのファイルとアクセスするプログラムを置いておけば、ハイスコア管理できる
CGI がおけるなら CGI でよい
Perl などでやるように GET や POST の時にパラメータを送る
やり方はちょっと探せばあちこちで紹介してる
536527:04/08/15 13:24
>>535
なぁるほど
あくまでアプレットとは別のプログラムになってしまうんですね

色々試してみます
ありがとうございました
ディスクトップマスコットのようなものを作りたいんですが
フレームレスな画像の表示はどうしたらできますか?
LayeredEX
539デフォルトの名無しさん:04/08/15 20:58
JWindowからサブクラスを作って、paint()で透過色と非透過色を使って
画像を表示しませう。
540デフォルトの名無しさん:04/08/16 09:08
test
アプロダってどうやってつくればいいんですか?
サイト運営についての質問ってココでOKですか?
全然違う
このスレ的な回答したとしてもおそらく期待はずれ
110番で年金について聞くってのは
きっとこういう奴なんだろうな
544デフォルトの名無しさん:04/08/16 10:01
absctractってなんの為に使うのですか?
仕様は固まってるけど実装が固まらない時
public abstract void actionPerformed(ActionEvent ev);
ボタンが押されたら呼ばれる が 何を行うかは未定
public abstract int compareTo(Object obj);
比較結果を返す が 比較方法は未定
抽象クラス、メソッドの定義に使う。
継承先で振る舞い決めろや、って時に。
>>545
若干訂正 "呼ぶ側の"仕様ね
548デフォルトの名無しさん:04/08/16 10:13
>>544
Javaのabstractは、共通の処理をまとめたクラスを作って、
その機能を継承するサブクラスを作るのを容易にするという
ユーティリティ的な性格が強い。
それに対して、複数のクラスに対して
共通のアクセス手段を作るために使うのがinterface。
いずれにしても一言では説明しきれないので、
SUNのJavaDocからabstractクラスの例を探して使われ方を
調べてみたら?
それからデザインパターンの本を読むのがよい。
549デフォルトの名無しさん:04/08/16 10:24
>>541
JAVAなら簡単に、サーバーアプリケーションを構築できる。
シンプルなアップローダー程度なら簡単。
550デフォルトの名無しさん:04/08/16 10:42
PHPの方がいいよ。
あるもの使えばいいじゃない
>>549
Javaでサーバープロセス作らせてもらえるかどうかが問題じゃないのか。
553552:04/08/16 13:47
複数人が更新権限持ってるサーバーでそういうことをしたいなら、CGIのように
毎回プロセス立ち上げるほうが無難かと。でもって、そういうことをしたいなら、
プロセス生成が遅いJavaは徹底的に不向き。
Javaでサーバーを立てたいなら、APサーバーへのデプロイができるサイトにする
が良いと思う。管理マンドクセーけど。
Javaは何番目に難しい言語ですか?
ハンバーグは何番目に難しい料理ですか?
ぐらい無意味な質問
Javaは9番目くらいに難しい。
ハンバーグは395番目くらいに難しい。
Javaは11番目だった
558デフォルトの名無しさん:04/08/16 17:01
すいません、ArrayListってどうやって展開したらいいのですか?
展開ってどういう意味? オレ用語は使わないでね
とりえあえず get(int) か iterator() あたり。
一個ずつ表示したいのです。
相手の電脳に侵入したいので防壁Arrayを展開したいのです。
>>560
一個を表示する処理を、個数分だけ繰り返せば?
その一個を表示する処理がわからんのです。
君は本当にアホやな
好きな方使え
1.
for ( int i = 0; i < a.size(); i++ ) {
String s = (String)a.get( i );
System.out.println( s );
}

2.
for ( Iterator i = a.iterator(); i.hasNext(); ) {
String s = (String)i.next();
System.out.println( s );
}
ClassCastException がどうたら言ってきても
みなさん 無視しませウ
>>564
ありがたき幸せ。
JavaのiteratorのhasNextってなんか不自然でない?
なんでだい?
1つ目の要素をとってくるのにいきなりnext使うから?
next の本当の名前は
getCurrentElementAndAdvanceToNextPosition
でもそれだとやっぱりhasNextって嘘を返すんだよね?
じゃ、こっちだな。
getNextElementAndAdvanceToNextPosition
current, hasCurrent にして欲しいってことか? 前にもそんな話あったな・・・
2回目以降がニュアンス的に next でぴったりくるからそれでいいじゃないか。
どんな単語が一番いいかは英語圏の人間にまかせとけよ。
javaに限らずiterator全般の話なわけね。
forの終了条件とiteratorの組み合わせが不自然なのかも
だから
for (String str : list) System.out.println(str);
それは1.5?
パターンとしての iterator は否定する理由もないが、
今の方法ではマンドクセ。
だから 1.5 の拡張 For ループじゃね?
質問です。

「メソッド「‥‥」のコードが65566バイトの制限を越えています。」

というエラーが発生してコンパイルできないのですが、
この原因は何なのでしょうか、又メモリを増やすなどの解決方法はありますでしょうか?。
>>579
メソッドを小さくする。
メモリを増やしても無理。Java の仕様。
581579:04/08/16 19:27
すみません。

メソッドを小さくするというのは、具体的にどうすればよいのでしょうか?
変数をできるだけ作らないようにすればよいのでしょうか?

初心者ですみません。。m(__)m
>>581
メソッド分割、クラス分割。
583デフォルトの名無しさん:04/08/16 19:31
>>576
そーいうソルトシンタックスを無闇に増やすから、そのうちあれもこれもって
いろんな構文を増やして、だんだんゴチャゴチャ分かりにくくなるんだ。
Iterator処理のたった2行程度を書くのを惜しんでどうするのか?
そんな機能増やす時間があるなら、SEのパッケージクラスを
再構築してもっとパワーアップしろ。まだ中身がスカスカなままじゃないか。
1個のメソッドで65Kですか?
>>583
偉くなってから JCP で発言ヨロ。
586579:04/08/16 19:37
すみません、最後にそのメソッドが何バイトあるのかを確認する方法が
あれば教えていただけないでしょうか?

ちなみに自分はeclipseを使っています。
そんなクソなソースコードは捨ててしまえ
いったいどんなメソッドなんだ
589デフォルトの名無しさん:04/08/16 19:48
>>583
ソルトシンタックスって聞いたことないんだけど
もしかしてシンタックスシュガーのこと?

} の閉じ忘れか何かじゃないのか?
「65566バイトを越えているメソッド」っての、想像できてる?
自分でおかしいと思わないの?
591579:04/08/16 20:06
メソッド分割していたら、なんとかうまくいきました。

いろいろ、ifなどの条件をつけていったら9000行くらいいってしまって‥‥

}の閉じ忘れとかじゃあないと思います。
80KB越えのjspなら見たことあるぜ!
593デフォルトの名無しさん:04/08/16 20:09
9000行かよ
あとから保守する奴の身にもなってやれよ
500KB超えのHTML出力なら見たことある
>>591
9000 行?
まずクラス分割したほうが良い。
コンパイルがとおる、動作すれば良いってもんじゃない。
>591
コンパイルじゃなしとりあえずメソッド切り刻む事からしないと
100行でも自分は多いと思う、そんなソース見せられたら
ぎゃあああああああーおとーさーーーーーーーーーーーーーん
597デフォルトの名無しさん:04/08/16 20:14
自分の仕事じゃなければそのソース見てみたいな
クラス分けてすむ問題じゃなくて、最初から設計みなおすべき。
if文の嵐なら規則があるはずだから、ただアフォみたく並べるんじゃなくて
配列なり何なりで最適化出来るはず。
まさかループ使ってないとかじゃないよね?
if文のネストとか10超えてたりしそう(w
1クラスでさえ多くても400行程度でしょう・・・
>>598
クラス分割は、if文を多態で置き換えることを考慮するもんだ。
>>600
じゃ、6000行ある javax.swing.JTable は糞か?
インナークラス満載ではあるが。
JTable はやることが多いもの。特別許してやろうよ。
そのソースくれたら美麗に直してやる。
つーかコンテストやりたいコンテスト 暇人自由参加で
605579:04/08/16 20:41
多態とか、ネストとかそもそもそういう専門用語がわからないので、勉強したあとで
また来ます。

どうもありがとうございました。
そんなんで9000行も書いたのか
どんな処理内容だ?
たぶん普通に書くと100行くらいで収まるんだろうな
SJC-Pを取ったばかりの新人に読ませたいんだけど、
今でもコアJavaが本格的な入門書の定番なのかな?
いきなり、Java言語仕様じゃキツイよね。
609デフォルトの名無しさん:04/08/16 20:46
行数でクラスを切り分けるなんて始めて聞きました。
皆さんすごいですね。
僕はフィールドで切り分けていました。
つまり、関連性の少ないフィールドがあれば、それを別のクラスに追い出すとかです。
クラスの主役はデータなのだと考えていました。

これからは行数で切り分けてみようと思います。
これで僕も上級者の仲間入りですよね?
恐ろしい根気だな
C スレにも配列なしで 100変数くらい作ったやつがいたが
「こんなに苦労するはず無い!
 プログラミングがこんな苦労するものなら、
 誰かがもっと簡単化できる方法を編み出して、みんなそれを使ってるはず!」
とはどうしても思えないらしい。
思ってても自分の知ってる範囲で解決するので手一杯、勉強まで気が回らないらしい。
611デフォルトの名無しさん:04/08/16 20:50
以上な行数はリファクタリングのシグナルの一つだろ
必ずしもクラス分割ってわけじゃないが見直しする必要はある
>>609
一所懸命煽るネタ考えたらしいけど遅かったね
つか誰も行数でクラスを切り分ける話なんかしてないからたいして煽りになってない
>>609
行数で切り分けるのが昔くさいと言いだげだが、
クラスの主役がデータってのはいつの話だ?

クラスの主役はデータ、操作どちらかではない。
両方だ。多態は分かるか?
もしかして行数が多い方が工数が増えて報酬も増えるとかさ
615デフォルトの名無しさん:04/08/16 20:54
ByteBuffer を String にしたいのですが、
やり方がわかりません。
いろいろ調べたのですが、どうもうまくいかないのです。
どなたか分かる方教えてください。
よろしくお願いします。
dejavu?
617デフォルトの名無しさん:04/08/16 20:56
>>611
Javaの世界では、リファクタリングがとても重要らしいですね。
昔、どこかのスレで「VSにはリファクタリングツールがついてこない。
これではとても人に薦められない。初心者にはきちんとリファクタリングから教えるべきだ。」
と、書いてありました。
僕の俺常識では、初心者にまず教えるべきなのは、なるべくリファクタリングが必要にならない上手な設計
ということになっていたので新鮮な驚きでした。
そのスレを読んで、僕は始めて初心者になれたのです。
それまでは屑でした。
>>617
> 僕の俺常識では

僕か俺かはっきりしろ。バカ。
>>617
>>617
いやまだ屑でしょ。
何をどう煽り言いたいのかさっぱ分からん。
>>617
煽り乙
そりゃ最初から完璧な設計ができれば一番だがそうはいかないことの方が多いのさ
まずは動かすことが優先される場合も多いしな
622デフォルトの名無しさん:04/08/16 21:02
>>613
そんなに昔に教わったことではないのですが・・・
Javaは日進月歩らしいですから、すでに古い常識なんでしょうね。
僕が教わったのは、まずフィールドから設計を始めるということでした。
もう古臭いんでしょうね。
>>622
でクラス設計とJavaって何か関係あんの?
>>622
教わった? とりあえずそいつの言うことは信用するな。
そいつはデータベースに詳しくないか?
625デフォルトの名無しさん:04/08/16 21:10
>>615
正確には、ByteBufferの補助配列をStringにする事になりますが。。。

ByteBuffer bb=wrapかallocate&putでStringのbyteデータを構築
new String(bb.array());
626デフォルトの名無しさん:04/08/16 21:37
>>624
どこの会社でも必ず教えることだと思うんですけどね。
あなたの会社は新しいというか・・斬新なんでしょうね・・・
>>626
どこの会社でもクラスはフィールドで切り分けると教えられるのか・・・
俺、釣られてるのか?
ネタと煽りを同時にやって失敗してるようにしか見えないんだよね俺には
>>626はDB設計とOO設計に違いが分かっていないと思われ
>>626がいってるのは正規形に適合させることをフィールド切り分けと
いってるに過ぎない
630デフォルトの名無しさん:04/08/16 21:49
>>629
素人が口出すな。
631デフォルトの名無しさん:04/08/16 21:51
>>628
行数で切り分けるほうがネタだと思うんだけど・・
>>630
ネタじゃなかったようだな w
データオリエンテッドで全てを解決することは出来ないよ。
633デフォルトの名無しさん:04/08/16 21:52
>>632
素人が口出すな。
なんだやっぱりDOA信者かよw
>>633
まぁな。お前はプロだからな w
>>628
だから行数で切り分ける話なんぞ誰一人しとらんつーの
「素直に書いていったらたかだかこんなぐらいの行数で済むんじゃないか」
といっとるだけだ
>>632
いつの間に「全て」なんて前提が…
638デフォルトの名無しさん:04/08/16 21:57
>>634
あのさ、理解できないなら書き込むなよ?
ほかの奴はおとなしくなっただろ?
なんでかわかるか?
普通に新人教育受けてある程度仕事してる奴は、
みんな意味理解できてんだよ。
お前だけなんで理解できない?
素人だからだろ?
>>637
>609 を見る限り、俺にはそうとしか受け取れん。
>>638
で、お前の結論はクラスはフィールドで分けるんだな。
さすがプロだな。
何このネタスレ
>>640
何故、フィールドから設計して、フィールドで切り分けるかわからんのなら、
おそらく、独習Java読みましたってレベルなんだろ?
もうお前帰れよ。
いらないよ。
>>638
問題はお前のネタの振り方と煽り方がうんこすぎ。
中途半端なんだよバカ。
644デフォルトの名無しさん:04/08/16 22:02
>>640
素人が口出すな。
表現力のなさにみんなあきれてるだけだろ
えーと、「クラスを切り分ける目安としてフィールドを考慮する」程度の表現だったら良いってだけの話?
> 「クラスを切り分ける目安としてフィールドを考慮する」
「クラスを切り分ける目安の一つとしてフィールドを考慮する」
それならまあ妥当な表現
だけど基本は責任範囲モデル
プログラムはデータだけで構成されているわけじゃない
データを扱う側の設計ができなきゃ意味がないよ
649デフォルトの名無しさん:04/08/16 22:13
>>648
帰れって言ったはずだよな?
>>659
厨房の俺にしか相手にしてもらえないかわいそうな香具師が何いってんだ?
651デフォルトの名無しさん:04/08/16 22:17
お前は、行数で切り分けとけ。
バーヤ。氏ね。
>>651
さすが園児ニアはちがうなw
653デフォルトの名無しさん:04/08/16 22:25
ここまで煽っといてなんですが、俺Javaやったことありません。
続きは野口スレでw
654初心者:04/08/16 22:30
質問には全然答えないクセに、こんな明らかに釣りのプログラミング設計論争が
あると、やたら書き込むなんて何を考えてるんですか?
もうちょっと真面目にやってください。
655デフォルトの名無しさん:04/08/16 22:32
>>654
ここって初心者しかいないんじゃない?
野口スレおいでよ。
面白いよw
野口スレってどこよ
ポインターくらい貼れよ
つい最近まで隣にあったんだけどね
659デフォルトの名無しさん:04/08/16 22:49
600 :デフォルトの名無しさん :04/08/16 20:17
1クラスでさえ多くても400行程度でしょう・・・

まぢで?
もういいって。
じゃーJava1.4APIのほとんどのクラスはクソということで
野口スレツマンネ
>>659
そのくらいだろ。800行超えたら危険な匂いがするだろ
夏休みっていつまでですか?
終わらない夏休み
666デフォルトの名無しさん:04/08/17 03:44
Java厨ってほんとにいるんだな・・・
まさか、行数で判断してるとは・・・
全く恐れ入るわw
9000行あるクラスについて何か変だと疑問を持つことはそんなにいけないことですか?
メソッドが長いという話からいつのまにかクラスの長さの話になってるな
      
    |┃三             _________
    |┃              / お前たち!
    |┃ ≡    _、_   <     ケンカはやめろ!
____.|ミ\___( <_,` ) _ \   俺が・・・来てやったぜッ!
    |┃=___    \    ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    |┃ ≡   )   人 \ ガラッ
671デフォルトの名無しさん:04/08/17 04:43
65KB程度のメソッドも扱えないJavaはやっぱり糞だな
さっさと死滅しろ
672デフォルトの名無しさん:04/08/17 04:46
673デフォルトの名無しさん:04/08/17 06:52
600 :デフォルトの名無しさん :04/08/16 20:17
1クラスでさえ多くても400行程度でしょう・・・

歴史に残る名言だな。
終わらない夏休み
675初心者:04/08/17 09:45
Javaスレも眺めてるとなかなかおもしろいですね。
愉快ですね、朝からごちそうさま。笑い我慢しすぎて腹筋オーバーフローしそうでした
俺にもこんな夏休みください
677デフォルトの名無しさん:04/08/17 11:10
こんばんわ

コマンドプロンプトからjavacで自作の「WorkPlus.java」をコンパイルして「WorkPlus.class」をつくり、コマンドプロンプトからjavaで実行したところ、
次のようなエラーが表示されます。

>C:\Documents and Settings\admin>java D:\java\WorkPlus
>Exception in thread "main" java.lang.NoClassDefFoundError: D:\java\WorkPlus

この問題を解決する方法を教えていただきたいのですが。
よろしくお願いいたします。
678デフォルトの名無しさん:04/08/17 11:11
ちなみに、ソースコードは下記の通りとなります。

import javax.swing.JList;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.border.*;
import java.net.*;
import java.io.*;
import java.util.*;
import javax.net.ssl.*;
import java.security.*;
import java.lang.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.print.*;

public class WorkPlus extends JFrame {

public WorkPlus() {
}

private void exitForm(java.awt.event.WindowEvent evt) {
System.exit(0);
}

public static void main(String args[]) {
new WorkPlus().show();
}
}
>>677
java -cp D:\java WorkPlus

javaコマンドで指定するのは、クラスファイルの名前ではなくクラスの名前です。
680677:04/08/17 12:41
>>679
解決しました
ありがとうございました。
681パソコン初心者:04/08/17 14:02
ある自然数nより大きい最小の素数を計算して表示するプログラムをjava言語で作るにはどうしたらいいですか?よかったら説明もつけてお願いします。
683デフォルトの名無しさん:04/08/17 14:20
アプレットをダウンロードしてソースを参考にしたいのですが、どうしてもできません。
どなたか解決方法を教えてください。

■やってみたこと
1. HTMLのappletタグにあるcodebase、codeよりパス、ファイル名を取得。
2. それを元にダウンロードソフト(Nettransporter)でDL。一応レファラはアプレットを起動するURLで指定。しかしDLできず。
3. codeにあるファイル名は ***.class ではなく ***.***.class であった。
4. パスをきちんと指定すれば、他のHTMLファイルからでもアプレットは実行できる。
684デフォルトの名無しさん:04/08/17 14:25
>>609
うおっほっほ。まったくこやつはう゛ぁかか天才のどっちかじゃな。うおっほっほ。
by チェスマスターヘックス
クラスファイル落としてリバースエンジニアリング?すごいね。
すごいことなのか?
Bitを後ろから読み直すように変換するにはどうしたらよいのでしょうか

例:
16進数の「C1」は「1100 0001」なので、
後ろから順に読み直して
「1000 0011」
16進に直して「83」という値が欲しい
int s = 0xc1, d = 0;
for (int i=0; i<8; i++) {
 d = (d << 1) | (s%2);
 s >>= 1;
}
System.out.println(d);
>>683
その前に、自分の作った class ファイルでからソースが読み取れるか試してください。
>>689
逆コンパイル知らないのか?
Jad とか JadClipse でぐぐってみれ。
ttp://www.google.com/search?hl=ja&ie=UTF-8&q=JadClipse&lr=lang_ja

簡単なのならjavapコマンドでもいけるし。
SDKインスコしてるのならおまいのマシンにも入ってるよ。> javap
ttp://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/javap.html
689は本当に無知だな
>>688
さんくすこ
キミはすごい
>>690
知ってるよ
>>683 みたいなレベルのことを聞きにくるような奴のことだから
class ファイルから"直" でソースが読めるもんだと勘違いしてるんじゃないかと思って書いただけ
>>693
いいから、お前はもう出てくるな。
695683:04/08/17 15:25
ごめんなさい。私のアホな質問でご迷惑をおかけしました。

classファイルから逆コンパイルの方法は分かりましたが、肝心のclassファイル自体
がダウンロードできません。どうすれば良いですか?
1. HTMLのappletタグにあるcodebase、codeよりパス、ファイル名を取得。
2. それを元にダウンロードソフト(Nettransporter)でDL。
ここもうちょっと詳しく書いてよ。
>>694
馬鹿の相手はいいから答えてやれよ
>>694
何、それ位の事で得意気になってるのか。逆コンパイルなど
レクチャーするレベルじゃないじゃん。低脳は低脳の回答をするもんだな。
ひっこむのは君の方だ。
それくらい、って何?
そもそも逆コンパイルはもとめられてる回答じゃないし。
700683:04/08/17 15:52
>>696

http://www.xxx.com/***/aaa.html
上で動くアプレットのclassファイルです。

aaa.htmlのappletタグを見たところ、
codebaseは一応記述してありましたが、="./"でした。
codeはpackagename.classname.classという形式での記述でした。

しかし
http://www.xxx.com/***/packagename.classname.class
をダウンロードしようと試みても、ファイルが存在しません。

なんだか余計分かりにくい説明かも。実際のサイトを見てもらえれば分かりやすいんだろうけど
具体的なURLを出すのってやっぱまずいですか?
無知といわれて必死だな
>>700
http://www.xxx.com/***/packagename/classname.class
とかかもね。パッケージとクラスパス等について調べるといいように思うよ。
>>700
ブラウザを使っているのがWindows環境だったら、ブラウザからアプレットを実行して
C:\Documents and Settings\ユーザ名\Application Data\Sun\Java\Deployment\cache\javapi\v1.0\jar
あたりにxx.zip があると思うから解凍してみ。
「C:\Documents and Settings\ユーザ名」は環境に合わせて適当に読み替えて。
704683:04/08/17 16:11
>>702
ビンゴ!でした。ありがとうございました!

>>703
そういう方法もあるのですね。勉強になります。


くだらない質問でご迷惑おかけしました。皆さん本当にありがとうございました。
>>701
必死なのはそっちじゃないのかな?
恥ずかしさと怒りのあまり、レスの文字が震えてるようだが
>>694=697だろ。
自作自演までして必死だなw 自分でバカを演じてちゃしょうがないな。
707デフォルトの名無しさん:04/08/17 16:54
インスタンスをシリアライズして入出力するクラスはなんですか?
またネタか。
>>707
java.lang.ShiriaraisuIO
>>706
>>694だが、たった今戻ったところだ。何もかも自演に見えてしまう君の可哀想な思考回路には心底同情するよ。
バカとバカが罵りあうスレはここです
訂正
バカとバカとバカが罵りあうスレでした
713デフォルトの名無しさん:04/08/17 18:12
コンストラクタはどうして必要なのでしょうか。
クラスの頭でフィールド変数の宣言と同時に初期値を設定すればいいと思ってしまう僕を許してください。
初期化パターンが複数ある場合にはどうするんですか
>>713
じゃインスタンス作る時どうするの?
Integer クラスのインスタンスを得る例を提案してみてよ。
716713:04/08/17 18:25
やった、釣れたー
717713:04/08/17 18:26
>>714-715
僕は馬鹿だから分かりません
718713:04/08/17 18:35
>714
気づきませんでした。

>715
ちょっと僕には難しい話です。
719デフォルトの名無しさん:04/08/17 18:47
>>683に情報の不足は無い。
てことは、>>685ですぐ回答があっていいはずなんだよね。
何故、>>702まで引っ張る必要があったの?
720デフォルトの名無しさん:04/08/17 18:49
初心者大歓迎って、初心者が質問に答えるスレって意味だった?
今ごろ気付きましたか?( ̄ー ̄)
チョイスに対しsetFontで設定しても、適用されるフォントと適用されないフォントがあるんでしょうか?
SerifなんかだとちゃんとSerifになるんですが、
MS ゴシックやMS 明朝だと、Dialogのままになってしまいます(フォント名は変わってくれるんですが)。
グラフィックやテキストフィールドなんかは、ちゃんとMS ゴシックやMS 明朝にも反応するんです。
何故なんでしょうか?
723デフォルトの名無しさん:04/08/17 18:55
なんか違うんだよな。
逆汗するって言ってるんだからjavapとかJADとか一言書くだけでいいんだしさ。
ちょっと間違ってるよな?
724デフォルトの名無しさん:04/08/17 18:55
もしかして400行の制限とかあるのかい?
質問です。
渡された文字列が、ひらがなだけで構成されているかを判断する為に、
文字こーどが必要だと思い、
一文字ずつCharacter.getNumericValue()メソッドで判別しようとしたが
どの文字も-1しか返ってこないので
このメソッドは文字コードを返さない事がわかった。

文字コードを取得するためにはどうすればよいのですか?
726デフォルトの名無しさん:04/08/17 19:06
DBに登録したjpegファイルをImageIOでサーブレットに出力すると、画質が落ちてしまいます。
どうすれば、DBに登録した時のファイルサイズで読めるんでしょうか。
下が問題のソースです。

response.setContentType("image/jpeg");
os = response.getOutputStream();

Iterator readers = ImageIO.getImageReadersByFormatName("jpeg");
ImageReader reader = (ImageReader) readers.next();

iis = ImageIO.createImageInputStream(rs.getBinaryStream(1));
reader.setInput(iis, true, true);

ImageReadParam param = reader.getDefaultReadParam();
BufferedImage srcImg = reader.read(0, param);

ImageIO.write(srcImg, "jpeg", os);
reader.dispose();
727デフォルトの名無しさん:04/08/17 19:10
オラオラ!早く答えろよ!
>>725 ICUを使う。 >>726 ImageIOを使わない。
>>725
文字コードを気にせずに済むこんな方法も。
public static boolean isHiragana(String str){
 for(int i = 0; i < str.length(); i++){
  if(Character.UnicodeBlock.of(str.charAt(i)) != Character.UnicodeBlock.HIRAGANA){
   return false;
  }
 }
 return true;
}
はっきりいってUnicodeBlockを使う方法はお薦めできない
731デフォルトの名無しさん:04/08/17 21:35
>>726
jpggファイルを展開した後に、またそれをjpeg変換で書き込んだら
画質が落ちるのは当然のように思うが。。。。
>>725
宿題スレにカタカナバージョンがあるよ
733デフォルトの名無しさん:04/08/17 23:47
検索画面で入力項目に値が入っていない場合はその項目を検索条件から外す様にしたい。
ここでSQL文は外部のファイルにあるものとします。
例)SQL:SELECT * FROM HOGE WHERE HOGE_ID = ? AND HOGE_NAME = ?
ここで検索画面にHOGE_ID:'999',HOGE_NAME=''の値が入力された場合
SELECT * FROM HOGE WHERE HOGE_ID = '999'と同等の検索結果を得ようとした場合は
どのように実装すればよいでしょうか?できるだけPreparedStatementを使用したいです。
日本語がへんだったらすみません。
馬鹿?
735デフォルトの名無しさん:04/08/18 00:35
>>725
正規表現
736725:04/08/18 00:44
質問に答えて下さった皆様ありがとうございます
色々方法があるようなのですが、
文字列を一文字ずつshort型に変換して、
その値が3041〜3093までかどうかで判別しようと思います。
>>733
HOGE_NAMEにワイルドカードを入れればいい。
でも、最適化したSQL使った方が速いよ。
>>722
フォントに関してはSwingとAWTなどで挙動が違うよ。

>>722の書き込みだけでは、私にはよくわからないが、
>グラフィックやテキストフィールドなんかは、ちゃんとMSゴシックやMS明朝にも反応するんです。
というところからして、MS明朝の指定が有効にならないのは、
AWTなコンポーネントなのではないだろうか。

詳しくは>>1のリンク先にあるSunのドキュメントから国際化のページと、
そのページにあるフォントについて調べるといいとおもう。
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/intl/index.html
配列でa[-1]とか負の値を扱えるようにするのってどうやったらいいんでしょうか?
>>739
配列じゃ無理。
HashMapでも使うがいい。
741739:04/08/18 09:58
>>740
そうなんですか、ありがとうございます
勉強してみます
インスタンスメンバの利点は何ですか?
クラスメンバの方はインスタンスを生成しなくてもすぐ利用できるから
便利だと思います。
>>742
同じようなの前も見たな。釣りか?
>>742
じゃ複素数をあらわすクラスでも試しに作って、
あとは引きこもって出てこないでください。
745デフォルトの名無しさん:04/08/18 13:15
>>739
>>740
配列の大きさがあくまでも有限で、1つの区間で表現できるなら、
値をずらずことで可能だぞ。
例えば、-5から+5までの範囲の配列なら、
a[-1 + OFFSET]
という感じでやればよい。
C++なら配列演算子をオーバーライドすることで、
a[-1]というような配列へのアクセスが有効になったりするんだが、
Javaは演算子をオーバーライドできないので、
java.util.Listを実装するようなクラスを作るしかない。
746742:04/08/18 17:09
ぷぷ、僕の釣りテクニックは最高ですね。
また、>>743>>744の2匹をつれちゃいましたw
747743-744:04/08/18 18:12
はははは 釣れた釣れた
レスしてやると必ず釣れる
748739:04/08/18 19:11
結局誰も突っ込まなかったですね。
配列で負のインデックスなんてネタ質問以外の何物でもないんですけどね。
今日は大漁大漁♪
>>745
すっごい違和感あるんだけど
9000ステップ超過させた仕様書をだうんろーどできるりぽじどり教えてください
逆に9000行にしなければならない理由なんかどこにもないだろ
現に質問者だってメソッドわけられたんだから、、、
質問者のコーディングの問題だ
仕様書が悪いとは思えないね
でもいかにリファクタリングにできるかッてのはやりたいよな
9000行のコードうpきぼん
リファクタリングってレベルじゃないだろ。
9000行のコードなんて外部仕様もらってゼロから作り直したほうが絶対早いって。
754デフォルトの名無しさん:04/08/18 23:26
シンクロナイズドについて質問なんですけど、下の2つは同じ意味ですか?

class A{

public syncronized void method(){

//ここに動作を記述

}

}



class A{

public void method(){
syncronized(this){

//ここに動作を記述

}
}

}
同じ
っていうかsynchronized節の目的は必要な処理だけを排他して
一つのスレッドのモニタ確保時間を短縮して処理効率を上げるためだから
全ての処理を囲むなよ

756デフォルトの名無しさん:04/08/18 23:45
>>755
どうもありがとうございます。

757デフォルトの名無しさん:04/08/18 23:47
シンクロナイズド修飾詞と節はThreadとRunnableの関係みたいなものですね。
ファイルを読み込んでソートしたものを読み込んだファイルと
同名のファイル名で書き込むにはどうすればいいんですか?
>>758
1. Reader で読む
2. Collections.sort か TreeSet でソートする
3. Writer で書く
>>759
メモリーにおさまらないような巨大ファイルだったらどうすんだ?

>>758
RandamAccessFileを使え
Runtime#exec("sort hoge.txt")
762デフォルトの名無しさん:04/08/19 00:28
Javaの魅力って何?
763デフォルトの名無しさん:04/08/19 00:30
VMが小さい
>>762
厨房でも使える簡単な言語仕様
765デフォルトの名無しさん:04/08/19 00:32
J2SE 5.0 Beta 2 になってから、何か変わった?
言語仕様っていうか、ライブラリの分かりやすさ。
リリースノート嫁
768765:04/08/19 00:34
>>766
ライブラリがわかりやすくなったの?
769デフォルトの名無しさん:04/08/19 00:35
768は偽者です。 ご注意ください。
騙る意味が分からん。
771777:04/08/19 05:23
まじで9000どっかアップしてよ!ここに居る暇な人達が書き直したコード見たら
みんな勉強なるじゃんか?こゆーコード書いてるとこーゆー人になっちゃうとか
なあ?頼むよ!よし、じゃーこうしよう、レス番指定してくれたら該当者は無理してでも暇作って書くって
わかった!追加オプションもつける!複数回に及ぶ番号指定もsageてない奴には有効とします!
777
777
777
javaでマクロツールを作りたいのですが
参考サイトないですか?
774デフォルトの名無しさん:04/08/19 10:44
>>749
配列に関する固定観念を捨てるのだ。
java.util.ArrayListは+方向のみ拡張可能だけど、
これを-方向にも拡張できるようにすると考えればよかろう。
775デフォルトの名無しさん:04/08/19 10:47
>>773
Cでいうプリプロセッサのようなものかい?
http://jappo.opensourcefinland.org/
こんなんじゃだめかな。
コンソールのようにテキストを表示してくれるコンポーネントないですか?
777デフォルトの名無しさん:04/08/19 16:16
こんにちは
JAVAで印刷に挑戦しています。(JDK1.4)
Printableインターフェイスを実装し、printに印刷内容を
記述しています。

この際、pageFormatでgetImageableX等の情報で印刷可能範囲を
取得できるのですが、この余白がプリンターの設定できる最小の
余白よりかなり広いようです。
そこで、印刷範囲等の制御をしてみたいのですが、プリンターが
持つ印刷可能範囲といった情報を知るにはどのようにすれば良い
のでしょうか。
ご教授宜しくお願いいたします。

また、印刷に関して参考になるサイト等ありましたら教えていた
だけますでしょうか。
重ねがさねよろしくお願いいたします。
Assert機能を使うため、-eaオプションを付けたいのですが、
Antではどのようにすれば良いのでしょうか?直接javacを起動しないと無理でしょうか?
779デフォルトの名無しさん:04/08/19 17:29
>>776
java.awt.TextAreaまたはjavax.swing.JTextArea

Telnetクライアントが欲しいなら、こんなのがあるぞ
http://www.jcraft.com/jcterm/
780776:04/08/19 17:34
>>779
レスありがとうございます。
今日から始めたので通信関係とか高度なことはしてません。
文字を複数行出したかっただけです。
ほんと助かりました。
>>776
System.out.printlnとかで出したいという意味なら、出力先が
JTextPaneなPrintStreamを作るのがいい。(前作った)
782デフォルトの名無しさん:04/08/19 17:39
>>777
ごめんね、分からん
>>778
<javac source="1.4" ...
でコンパイルすればよい。
実行時については、英語だけど、この辺に書いてある
http://ant.apache.org/manual/CoreTypes/assertions.html
ただし、Ant1.6以降でないと使えないので、
古いAntを使うなら<arg>要素で直接コマンドを指定すればよい。

>>778
javacタスクにsource="1.4"をつけてコンパイルして、実行は以下のとおり。
<java classname="foo.bar.Buz" fork="true">
 <jvmarg value="-ea"/>
</java>
jvmargでJavaVMに引数を渡すのと、fork="true"で別のVMを動かすのがポイント。
784776:04/08/19 18:44
今日も2匹釣れました。
ありがとうございました。プゲラ
785778:04/08/19 19:00
>>782, 783
ありがとうございます。早速やってみます。
786776:04/08/19 19:17
>>784
すごく気分が悪い
787779:04/08/19 21:04
>>776
もうお前には教えてやらん。
氏ね。
788デフォルトの名無しさん:04/08/19 21:14
AWTで2ちゃんブラウザ(ホットゾヌとか)みたく
一つのウインドウに複数のパネルを組み込むには
どうしたよいですか?
>788
JSplitPaneを組み合わせな
790デフォルトの名無しさん:04/08/19 21:22
>>789
AWTのみでは無理ですか?
AWTでは簡単には無理
792デフォルトの名無しさん:04/08/19 21:31
その簡単ではない方法の
例とかって無いですか?
>>792
何をしたいの?
パネルを配置したいだけじゃなくて、
個々のパネルの幅をマウスで変えたいんでしょ?
>>792
自分でスプリットペーンを実装する
795デフォルトの名無しさん:04/08/19 21:47
今現在AWTで作ってるアプリケーションがあるんですが
それの周りに他の画面をくっつけてメニューみたいなものを作りたいんですよ。
難しいですかね?
単に配置するだけならレイアウトマネージャ使えるけど?
797デフォルトの名無しさん:04/08/19 21:50
>>795
簡単に出来ますよ??
何がわからないんですか?
798デフォルトの名無しさん:04/08/19 21:55
>>796-797
レイアウトマネジャだと自分で自由に大きさを変えられなくないですか?
自分で自由に配置したり大きさを変えたいんですよ。
JavaのGUIって糞だよな。VBみたいにいかないもんかね。
800デフォルトの名無しさん:04/08/19 21:57
>>798
ああそうですか。
じゃぁ好きにしなさい。
>>798
なるほどね
残念だけどそれはコンポーネント自作するしかないね
まあでもコーディング量的には150行くらいかな
>>798
レイアウトマネージャを自作すればいいじゃん。
803デフォルトの名無しさん:04/08/19 22:00
>>800
結局無理って事ですか?
君には簡単には無理
805デフォルトの名無しさん:04/08/19 22:02
>>803
だから、簡単だって言ってるだろ?
806デフォルトの名無しさん:04/08/19 22:02
>>801-802
自作ですか・・・
分かりました、やってみます。
ありがとうございました。
>>805
お前本当に分かってるのか?
コンポーネントよりトウモロコシの方がうまいよ。
暇だからSplitPaneLayout作ってやろうか?
>>809
ぜひお願いします!
811デフォルトの名無しさん:04/08/19 22:45
あげ
812デフォルトの名無しさん:04/08/19 22:54
2ちゃんねるブラウザのレイアウトに名前ってあるんですか?
pane.setLayout(new 2chLayout());
んじゃ今から作るよ
ちょっと時間くれ
815デフォルトの名無しさん:04/08/19 23:10
>>814
お願いします!
つかれた、、、とりあえず原理だけね
適当に作ったからバグありありだけど後は直してくれ
まず、テスト用クラス

import java.awt.*;

public class Test extends Frame {
public Test() {
setSize(100, 100);
this.setLayout(new SplitLayout());
add(SplitLayout.FIRST, new Button("b1"));
add(SplitLayout.SECOND, new Button("b2"));
}
public static void main(String[] args) {
new Test().setVisible(true);
}
}
レイアウトマネージャ

import java.awt.*;
import java.awt.event.*;

public class SplitLayout implements LayoutManager {
public static String FIRST = "FIRST";
public static String SECOND = "SECOND";
private static Dimension minimum = new Dimension(1,1);
private static Dimension preferred = new Dimension(10, 10);
private Component firstComponent;
private Component secondComponent;
private Container parent;
private int position = 50;

public SplitLayout() {
}
public void addLayoutComponent(String name, Component comp) {
if (name.equals(FIRST)) firstComponent = comp;
else if (name.equals(SECOND)) secondComponent = comp;
}
public void removeLayoutComponent(Component comp) {
if (firstComponent == comp) firstComponent = null;
else if (secondComponent == comp) secondComponent = null;
}

つづく
public Dimension preferredLayoutSize(Container parent) { return preferred; }
public Dimension minimumLayoutSize(Container parent) { return minimum; }
public void layoutContainer(Container p) {
if (p == null) return;
if (firstComponent == null) return;
if (secondComponent == null) return;
p.addMouseMotionListener(new Nob());
int width = p.getSize().width;
int height = p.getSize().height;
int fw = position - 4;
int sx = position + 4;
int sw = width - (position + 10);
firstComponent.setBounds(0, 0, position, height);
secondComponent.setBounds(sx, 0, sw, height);
parent = p;
}
public class Nob extends MouseMotionAdapter {
public void mouseDragged(MouseEvent e) {
if (parent == null) return;
Container c = (Container)e.getComponent();
if (parent != c) return;
int width = parent.getSize().width;
position = e.getX();
if (position < 5) position = 5;
if (position >= (width - 5)) position = width - 5;
parent.doLayout();

}
}
}
819デフォルトの名無しさん:04/08/20 00:50
>>816
おお、この短時間で作るとはさずがですね!
有り難く使わせていただきます!
本当にありがとうございました!!
p.addMouseMotionListener(new Nob());



if (parent == null) p.addMouseMotionListener(new Nob());

のまちがいな。
821デフォルトの名無しさん:04/08/20 05:38
Layoutマネージャを簡単に自作できるJAVAって面白いですね。

ところで、JBuilderを使用しているのですが、自作したlayoutと
constraintsをソース上ではなく、設計画面上で設定できるよう
する方法はありますでしょうか。
ご存知の方がいましたらよろしくお願いいたします。
>>821
それはJBuilderの拡張の話ですね
JBuilderのまにあるをよみませう
親クラスのコンストラクタ呼び出しに関する質問です。

下のようにすると、親、子のコンストラクタが両方呼び出されますが、
これは言語の実装としてなにか意味があるのでしょうか?

親コンストラクタを明示的に呼び出したいなら(こんな仕様が無くても)
super()を書けばいいだけです。
が、例えば、親コンストラクタを呼びださずに子クラスのコンストラクタを呼び出す、
という実装が出来ません(そんなことをするのかどうかはともかく)。

(ちなみに、この問題の元ネタは数日前の某@○TのMLです。)

class Parent{
Parent(){
System.out.print(1);
}
}
class Child extends Parent {
Child(){
System.out.print(2);
}
}
class Test {
public static void main(String[] args) {
new Child();
}
}
>>823

オーバライド - メソッドの上書き
継承したクラスで処理が少し違う場合など、オーバーライドを使って上書きをし
新しい処理を書き換え可能にした。


自分は上記のように認識してます。
>>823
オブジェクトを作るときはコンストラクタを呼ぶ(たとえ親の部分でも)
826デフォルトの名無しさん:04/08/20 09:13
>>823
コンストラクタというのは、
そのオブジェクトの構築に最低限必要な情報を渡すところだから、
デフォルトでサブクラスからスーパークラスのコンストラクタが呼ばれない仕様だったら、
初期化ミスによるバグが頻発することになる。
> が、例えば、親コンストラクタを呼びださずに子クラスのコンストラクタを呼び出す、
> という実装が出来ません(そんなことをするのかどうかはともかく)。
こうするのであれば、親に必ず空のコンストラクタを用意するべき。
親のコンストラクタを呼び出さなくてもよい場合があるということは、
親に空のコンストラクタを用意できるということなんだから。
mainメソッドの引数(argv)の内容を
VMが動いているPCのLANGがenの状態で
日本語で書きたいのです。

java ClassName 日本語

みたいな感じで。この日本語部分を日本語として
扱うことは無理なのでしょうか?
1.4.1ではjava -Dfile.encodingでいけたのですが、
1.4.2ではどうやっても????になってしまいます。。
828デフォルトの名無しさん:04/08/20 09:31
うーん、難問じゃ
少し姑息な手じゃが、
String b = new String(a.getBytes("ISO-8859-1"), "Shift_JIS");
でいけんかの?
あたまでっかちに考えれば
親のコンストラクタを呼ばないというのは
継承の本来の狙いに反するよね。
なんのために継承したのか、
本当に継承関係であるべきなのか。
そんな継承に対する思想も見え隠れ。
>>823の例だとわかりやすい。
830827:04/08/20 09:44
>>828
それは以前試してたんですが、もう一度試してみました。
結果は?????のままです。。JISAutoDetectでもダメでした。
もしかして標準入力(System.in)からargvに渡されるときに、
すでに????に変換されちゃってるんでしょうか?
そうするとたぶん無理なんですよね??(@_@)
>>830
渡された物が既に?になってるかどうか確かめてみては?
a.getBytesで中身見て。
832デフォルトの名無しさん:04/08/20 10:01
JBossでアプリ開発してます。
深いところでExceptionが起こった場合に、stacktraceを表示すると、

at org.jboss.resource.adapter.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:164)
... 93 more

みたいな感じで省略されてしまうのですが、
これを全部表示する方法を御存知ありませんか?
javaであるメソッドを高速化したいときに行う手段としてはどのようにするのが
定石なのでしょうか?もうjavaの書き方をいろいろ工夫して変えても一向に早くならない状況です。

例えば、その部分だけC言語やfortranで置き換えるとかはどうでしょうか?
834827:04/08/20 10:30
byte[] bytes = argv[0].getBytes("ISO-8859-1");
String str = "";
for(int i = 0; i < bytes.length; i++) {
  int k = (new Byte(bytes[j])).intValue();
  str = str + Integer.toHexString(k).toUpperCase();
}
System.out.println(str);

>>831
こんな感じでやってみたんですが、これで確認できているんでしょうか。。
これで問題ないとすると、3F3F3F3F3F3F3F3F3F3F3F3Fと表示されるので、
??????になってるっぽいです。。ちょっと泣きそうです。。
なんで1.4.1ではfile.encodingがOKで1.4.2ではNGになったんでしょう。。

>>833
どういうことをしたいのか書いてないので具体的な方策は示せませんが、
大局的には、javaの起動オプションにserverとかすれば早くなるらしいです。。
835デフォルトの名無しさん:04/08/20 10:37
javaのJテキストエリアでは、atokのカーソル近くの表示がでません。
どうしたらいいですか?
>>834
1.4.1 は Windows の codepage 情報を無視してたけど
1.4.2 からは解釈するようになったんじゃなかったっけ?
java.lang.String#charAt(int) で \uFFFE になってないか調べてみれば?

っつーか、コマンドライン引数でなくてファイルとかから読み込めば良いだけのような。
>>833
高速化したいならJNI化するってのも一つの方法だけど、
メソッドの粒度が小さいとオーバーヘッドが大きくてJNI化前より遅くなる事もあるので注意してくらさい
838デフォルトの名無しさん:04/08/20 11:01
>>819さんと似た質問なんですが、
配置した個々のパネルの幅をマウスで変えるにはどうしたらよいのでしょうか?
>>833
はい、ドゾー
ttp://www-6.ibm.com/jp/developerworks/java/020809/j-javaopt.html

何より大切なのはボトルネックを特定することでしょう。
闇雲に自称最適化を行っても的外れなことをやっている場合があるので。

コーディングレベルで気をつけても効果は薄いかな。
例外処理の回数を減らすくらいなら有効だと思う。

「Java 最適化」でググれば結構見つかるので、自分で調べてもいいんじゃないでしょうか。
840827:04/08/20 11:03
>>836
今調べてみたんですが、file.encodingはシステムプロパティなのでダメ、ということらしいです。
http://www.simeji.com/wiki/pukiwiki.php?Java%a4%ce%cd%ab%dd%b5#content_1_5
ちなみにlinuxなんですが、LANGをEUC_JPにしてれば読めるのですが、
LANGを設定するのはjava起動の直前ではだめで、サーバの起動時に設定しないとダメだったので、
ほかのアプリケーションのことを考えるとLANGはenのまましかあり得ないのです。。

>java.lang.String#charAt(int) で \uFFFE になってないか調べてみれば?
すいません、これによって何がわかるんですか? 無知ですいません。。

>っつーか、コマンドライン引数でなくてファイルとかから読み込めば良いだけのような。
目から鱗です。。ショッキングです。。
841デフォルトの名無しさん:04/08/20 11:13
>>838
AWTなら、しこしこと自作するしかねぇべ。
SwingならJLayeredPaneやJSplitPaneを利用して
希望に近いことができるぞ。
>>840
> すいません、これによって何がわかるんですか? 無知ですいません。。
悪い。FFFE じゃなくて FFFD だったかも。

http://www.unicode.org/charts/PDF/UFFF0.pdf
> FFFD REPLACEMENT CHARACTER
> • used to replace an incoming character
>  whose value is unknown or unrepresentable in Unicode
> • compare the use of 001A as a control
>  character to indicate the substitute function
843833:04/08/20 11:20
どうもありがとうございました
844デフォルトの名無しさん:04/08/20 11:32
>>841
レスありがとうございます!
やはり自作ですか、自分なりにがんばってみようとおもいます。
あと一つ質問ですが、今現在AWTってあまり使われていないんでしょうか?
Swingの方がいいですかねぇ?
845デフォルトの名無しさん:04/08/20 11:44
>>844
Swingの方が多機能だし、本当の意味でプラットフォーム非依存なので、
JDK1.2以降ならそちらを使った方がいい。
どうしてもAWTでなければならないのは、JDK1.1.x以前対応の
アプレットを作る場合くらい。
最近はSWATという選択肢もあるぞ。
846デフォルトの名無しさん:04/08/20 11:45
ごめん、SWTだった
847デフォルトの名無しさん:04/08/20 11:56
言語プロパティファイルをユーザがブラウザ上で書き換えるロジックを作成中です。
Servletからnative2asciiを起動するには、どうやればいいんでしょうか。
もしくはServlet内でユニコードで変換した方がスマート?
848デフォルトの名無しさん:04/08/20 12:07
>>846
SwingとSWT検討してみたいと思います。
ただ自分の技術で移行作業がスムーズにできるか不安ですが・・・
何回もありがとうございました!
>>847
プロパティファイルって、ただload/saveすればVM内の文字列(String=UTF-8)と
ファイル上の\u表記の間で相互変換されるから変換ロジックなんて他に要らないんじゃ?
>>849
> プロパティファイルって、ただload/saveすればVM内の文字列(String=UTF-8)と
String は Java の char (符号無し16ビット整数)の配列を使ってるので UTF-16。
UCS-2だろ?
852デフォルトの名無しさん:04/08/20 17:18
すいません、初歩的な質問をさせていただきます。
Shift_JISにエンコードした文字列のバイト数を取得しようとしています。


import java.io.*;

public class MojiCode{

public static void main(String args[]){

String string = "あいうえお12345";

System.out.println("エンコード前は" + string.length() + "文字");

try {
byte[] sjis_arr = string.getBytes("SJIS");
}catch(UnsupportedEncodingException e){
System.out.println("エンコードエラー");
}

System.out.println("エンコード後は" + sjis_arr.length + "文字");

}

}

で、実行させると”シンボルを解決できません。”とはじかれてしまいます。
tryの括弧の中でのbyte[]宣言が問題らしいことは分かったのですが、それ以上
のことがさっぱりわかりません。どなたか教えていただけますでしょうか?
>>852
sjis_arr をtryブロックの中で宣言しているから、
tryブロックの外側では解決できない。
>>852

import java.io.*;

public class MojiCode{

public static void main(String args[]){

String string = "あいうえお12345";

System.out.println("エンコード前は" + string.length() + "文字");

try {
byte[] sjis_arr = string.getBytes("SJIS");
System.out.println("エンコード後は" + sjis_arr.length + "文字");
}catch(UnsupportedEncodingException e){
System.out.println("エンコードエラー");
}

}

}
>>852
> try {
>  byte[] sjis_arr = string.getBytes("SJIS");
> }catch(UnsupportedEncodingException e){
>  System.out.println("エンコードエラー");
> }
>
> System.out.println("エンコード後は" + sjis_arr.length + "文字");
sjis_arr は宣言されたブロック(この場合はtryブロック)内でしか使用できない。
ブロック外で使用しようとしてるのでエラー食らっただけ。
856デフォルトの名無しさん:04/08/20 17:23
>>853レス感謝です!
>tryブロックの外側では解決できない。
まじすか、じゃぁByte配列はtryの括弧より前で宣言しなきゃならないってことでしょうか?
>じゃぁByte配列はtryの括弧より前で宣言しなきゃならないってことでしょうか?
そういうこと。
>>856
>>854みたいに中に入れてもいい
外に出すとこんな感じか

byte[] sjis_arr = null;
try {
sjis_arr = string.getBytes("SJIS");
}catch(UnsupportedEncodingException e){
System.out.println("エンコードエラー");
}

if ( sjis_arr != null )
System.out.println("エンコード後は" + sjis_arr.length + "文字");
859デフォルトの名無しさん:04/08/20 19:10
こんばんわ

DoJa3.5でiAppliを開発してますが、
ビルドして起動したんですが、仮想端末上のスクリーンが白黒のままでカラーになりません。

例として、DialogのsetBackground(Graphics.GREEN);
としてるんですが、白黒として表示されてしまいます。
仮想端末をカラー表示させるにはどのようにすればいいのでしょうか?

こっちいきなはれ。

【初心者歓迎】iアプリ相談室
http://pc5.2ch.net/test/read.cgi/tech/1089530578/
861859:04/08/20 19:28
>>860
失礼しました
>>352
TreeMap, TreeSetはTreeMap#put()した時点で
ソートしてくれるからその分HashMap, HashSetよりも遅くて当たり前。

LinkedHashMapとHashMapとの速度違いについては
JavaでHelloworldに説明が載っている。
もちろん、ArrayListとLinkedListとの速度の違いも同様。

Linkedでない系 挿入、削除が遅い。インデックスアクセスは速い。 LinkedHashMap, LinkedHashSetは挿入された順序を保持する。
Linked系 挿入、削除が速い。インデックスアクセスは遅い。
Tree系 挿入削除は遅い。挿入時にソートしてくれる。

詳細は
http://www.hellohiro.com/collections.htm
IBMのJREはどこにあるのでしょうか?

IBMのwebpageを探しても見付かりませんでした
今はWindows用のは単体では配布してなかったと思われ。
Freenetに流れて枡
>>864
そうなのかどうりで見付からないわけだな

でもLinux用のはあるということですか?
>>866
Linux 用のと AIX 用のは単体で配布してると思われ。
>>864 単体ではないけど、いまは
IBM Developer Kit for EclipseといってEclipse3.0と抱き合わせで
配布している。契約上なにかと抱き合わせにしないと配布できないんだよね、Win版は
昔はWebServiceToolkitと抱き合わせだった。
869868:04/08/20 22:26
>>863 はい。
http://www-106.ibm.com/developerworks/java/jdk/
ただWin版はインストーラがついてないのでJavaPluginが
そのままだとインストールされない。手動でやること。
870868:04/08/20 22:30
あ、あともしこのJDKをEclipseと一緒につかうことがあったら、
eclipse.exeのオプションに-vmargs -Xj9をつけること。IBM JDK/x86のJIT
部分のバグのせいでJ9 VMに逃げないとTask viewかどっかで誤動作するから。
871856:04/08/20 23:11
>>858亀レスだがサンクスです
>byte[] sjis_arr = null;
配列の初期化はこうやればOKでしたか。
初期化がうまいことわからなかったんでtryの中に入れてたんですわ。
>>854,855,857.858どうもありがとうございました。
>>862
でも、なんかの雑誌のArrayListとLinkedListの比較記事で、
LinkedListはArrayListより全般的に操作が遅い、ってことになってたんだよね。

LinkedListは挿入、削除の時のカーソル移動にインデックスを辿っているからとか。
しかもArrayListに比べると大量のデータ(十万件程度が限界?)を保持できない、
とかなってると存在意義すら疑ってしまう。
>>872
10万件のリストの3番目に要素を追加する時の動作を考えたら、
LinkedListの存在意義がわかる。





・・・ってのは理屈で、実際にLinkedListなんぞ使うことは99%ない。
よっぽどの特殊用途でのみ。
なんででかって言うと、一般に連続したメモリ領域の一括操作は激速だから。
配列操作がすごく速いのと同じようにArrayListもすごく速い。
律儀に使い分けてた…
どーせ配列に入るのはポインタだしな。
JLabel。
すごい機能性が高いと思ったら
やっぱりプログラミングとして慣れるのにかなり大変だとわかった。
うむむ・・・。
877876:04/08/21 04:46
まちがえたJTableねw
878デフォルトの名無しさん:04/08/21 06:42
JTableが機能性が高い?
表をカラム単位でしか操作できない時点でー50点だ。
なんか作りかけで発表して、その後ほったらかしにしてるって感じ
なんだよな。使用感も例えるなら普通車を運転するのに大型車並の
労力が必要で、それでいてその大型車は十分な操作ができないって
感じ。JFCの中でもあのクラスは、クラス設計に無駄な部分が多い。
機能の実現を中途半端で終了してしまったから、結果として
そういう無駄な部分ができてしまったのだろうが。
>表をカラム単位でしか操作できない時点でー50点だ。

詳細キボーン
880863:04/08/21 08:46
レストンクスでした

とても参考になりました。
JTable使えないヤツがいるな
ageてる時点でお察しください
882デフォルトの名無しさん:04/08/21 10:00
いつみてもJavaMailがDLできません……
俺が見に行ってる先が間違っているのでしょうか。
JavaMailはどこでDLするべきなんですか。
883デフォルトの名無しさん:04/08/21 10:43
DLできない…… T^T
いつになったら出来るのであろうか……
プロクシ通してやってみれば
ガーベッジコレクタ使ってますか?
 System.gc() だっけ?
>>886
下手に使うと逆に遅くなったりするけどね。
888デフォルトの名無しさん:04/08/21 15:01
>>872-873


Jakarta Commons Connlectionの
コレクション系クラスとかは使わないのか?
ListとHashが合体したようなコレクションもあるそうだ。
889デフォルトの名無しさん:04/08/21 15:01
>>886
java.lang.ref.SoftReference
を使ってやったほうが速いぞ。
890デフォルトの名無しさん:04/08/21 15:54
JTableのRowサイズの変更のしかたは簡単にわかるけど、
Columnサイズの変更の仕方ってどうするんですか?
リファレンス見てものってないんですよ。

すいませんが教えていただきたい。
嘘つくでない
リファレンスにのってるよ

探せないといえばいいのにのってないと言い切るあたりがすごいな
892デフォルトの名無しさん:04/08/21 16:02
JTableは複雑なので
簡単に見つかりません。
誰かご存知な方はいますか?
893デフォルトの名無しさん:04/08/21 16:04
>>892
こうやってみたらうまくいくかも。

DefaultTableColumnModel cm=(DefaultTableColumnModel)(jTable1.getColumnModel());
TableColumn column0 = cm.getColumn(0);
column0.setMinWidth(200);

カラムのindexが0のものの最小値を200に設定する〜。

個々のカラムの管理はTableColumnがおこなっています。
JTableではありません。
カラムの最大値、最小値(上記)など、様々な設定ができます。
この辺は、javadocのTableColumnを参照すればわかるはずです。
895894:04/08/21 16:19
>>892
初心者のうちはJTableはやや難かもね。
俺もまだ初心者です(^^

あと、>>891 >>893のような荒らしもいるんで
気にせず落ち込まず頑張ってJavaをマスターしてくださいね。
世の中悪い人も居ます。
896デフォルトの名無しさん:04/08/21 17:13
ルックアンドフィールの必要性って?
897デフォルトの名無しさん:04/08/21 17:19
>>896
解決です。見た目ですね。
スキンみたいなものだよ、きっと。
あとWindows使ってるのに、「やっぱMacだぜー」とか言いたいマカーとか。
899デフォルトの名無しさん:04/08/21 18:06
896ですorz
import com.sum.java.swing.plaf.motif.*;
import com.sum.java.swing.plaf.windows.*;
import com.sum.java.swing.plaf.mac.*;
ってインポートしたら
パッケージcom.sum.java.swing.plaf.motifは存在しない
と怒られました。パスが通ってない?
900デフォルトの名無しさん:04/08/21 18:10
>>899
sumってorz
すいませんsunでした。
もう来ません。
>>895
アホだな、>>891を荒らしと言い切るとは。2chの使い方ってもんがわかってない
>>901
まぁまぁ。
純真な中学生には夢を見させてあげないと。
903デフォルトの名無しさん:04/08/21 18:56
>>884
普通にDLできるじゃん。そっちの設定がおかしいよ。
>>903
釣られてダウンロードましたねw
905884:04/08/21 19:55
マジ?いましてみたけど出来ないんだけど?
しかたないから、ファイル名で検索して、本家じゃないところでDLしてました。
javamail-1_3.zipってファイルなんだけど、最新ってjavamail-1_3_2.zipなのかな??
できれば最新のファイル名とMD5の値を教えてほしい。
>>905
まさかと思うがライセンスに同意してるよな?
907884:04/08/21 20:56
いまいったら、やっと繋がった!
ご迷惑をお掛けしてすまんかった。
ファイル名はjavamail-1_3_2-ea.zipだったんだな。
eaってのはearly access版だが、いいのか?
JakartaスレってDAT落ちしてるの?
910デフォルトの名無しさん:04/08/22 01:32
リモートのファイルを取得する一般的な方法について教えてください。
911デフォルトの名無しさん:04/08/22 01:53
JAVAでWORDファイルのプロパティを取得することは可能ですか?
>>911
可能です
Javaの落とし穴の続編みたいのってないの?
あれってもう古くなったんじゃない?
J2EEの落とし穴みたいな。
>>910
リモートにファイル一覧を返答するなんらかのサービスを起動して、クライアントからそのプロトコルに従って問い合わせます。
915デフォルトの名無しさん:04/08/22 04:26
javaコマンドとかで空白を含む引数やパラメターを指定できますか?
""でかこめば普通に入るだろ?
917デフォルトの名無しさん:04/08/22 04:59
>>916
レスありがとうございます。

いろいろ実験してわかったことなんですが、My Documentsなどにコンパイルしたいファイルがある場合
直前のcdコマンド(WinXPコンソールの場合)で""を囲まないと、
だめになるみたいです。

それはJavaの話じゃなくて、コマンドシェル全般の話だよ。
空白がパラメータの区切りに使われている以上、
何らかの形でエスケープしてやらねばダメだってこと。

それとXPならエクスプローラからアイコンをドロップすれば
自動的に””で囲んでくれるよ。
 なんでファイル名やディレクトリ名に空白を使えるようになんて
したんだろうな…。激しく使いにくい…
パスセパレータ以外の文字は最大限使えるように設計するのは
普通だと思うけど? Linux系でもちゃんと空白使えるよね。
Windows系で使いにくいのはまともな補完を実装していない
cmd.exeのせい。
>>919
今更なに言ってんだ。
>913

J2EE・EJBのアンチパターン系の本でいいんじゃねーの
XPのcmd.exeは一応補完を実装してるよな。
Tabキーで補完するよ。
まあ、bashには遠くおよばないけどな。
doskeyつかえ。
すれ違い。
926886:04/08/22 17:48
>>889
どうも。次から使ってみます。
927デフォルトの名無しさん:04/08/22 19:40
JavaWebStartって、マックOS上のネットスケープでも動きますか?
マックなんかでJava使ってる奴は馬鹿
929デフォルトの名無しさん:04/08/22 19:47
マックはJavaなしじゃうごきませんよ。(ぷ)
マックと聞くとすぐ釣られる奴はバカ。
931911:04/08/22 19:51
>>912
どうも。

参考になる、HPとかあったら教えてください。
マックは糞だろ?
ただ自分が多数派だというだけでマックに優越感を感じているウィン厨は
中国人が自分は世界の中心だと思ってるのと一緒(キモッ
中国よかインドのが人口多くないか?
へりくつこねるマカーは氏んだ方がいいね
マックのJavaの互換性のなさといったらまじでひどすぎ
ふざけんな
どこの誰が多数派ということを理由にしてるんだ?
人工知能を作るにはどうしたらいいですか
>>937

>>934レベルの人口無能なら頭を半年ぐらいひねれば比較的簡単に出来るんじゃないかと
>>937
class AI{
  public void main(String[] args){
    System.out.println("こんにちは");
  }
}

あいさつをする人工知能。
あ、インド10.5億ぐらいで中国13億ぐらいなのか orz
最近2050年にインドの人口が世界一になるって記事よんで混乱してた
>920
 そうなんだ。UNIX系でもスペースが使えるとは知らんかった…orz
 でもそうすると、スペースがあるパスでは "" で囲まなきゃいけ
ないからワイルドカードの指定はできないっていうことで自分の理
解はあってる…?その場合、空白ありのディレクトリにある複数の
*.java ファイルを javac コマンドで一度にコンパイルする時は、
全ての *.java ファイルを直指定したり、cd したりしないと無理…?
>>941
関係ない
javac */*.javaでOK
>>941
D:\Temp>dir *.txt
2004/08/22 21:29 0 a h o ?.txt
2004/08/22 21:29 0 aho?.txt
>>936は文盲
>>944
おまえがな
>>937
人工知能とかはわざわざJavaでやる意味ないよ。
どうしてもやりたいならルールエンジンとかでググってみそ。
>>945
さっきからなに必死になってるの?
>942
 あ、なるほど、空白入りのディレクトリもワイルドカードで指定
すればいいんですね。…と思ったら… windows (というか
windows の javac)では無理でした…。

 後、bash では javac "ho ge"/*.java でも上手くいきそうなこ
とに気づきました(cygwin では確認)。ちょっと気持ち悪いです
が…。windows の javac ではこれも無理。アプリ側に至れり尽く
せりのワイルドカード展開を求めるのは酷なのかもしれませんが…。

>943
windows で
javac "ho ge\*.java"
だと javac が * を文字として認識してしまうのです。
今の最新の javac だとわかりませんが…

 みなさんレスありがとうございました。
>>948
まだ誤解が入ってるようだけど
コマンドラインを最初に解釈するのはシェル(WinならCMD.EXE)
つまりシェルが解釈してmainの引数に渡してくれるわけだ
で、ワイルドカードはシェルの機能だからシェルしか解釈できない
java側はシェルによって展開されたものをそのまま使ってるに過ぎない
だから"*.java"とした場合、javaが解釈できなくて当然

で、なんでWinでだめかというと、
CMD.EXEはディレクトリに対するワイルドカードの解釈で
一致するものが二つ以上あると処理をエラーにしちゃうからなのだ
ためしにDIR */*.javaとかやってみればすぐわかるよ
単にCMD.EXEの機能が低いだけ
>>949
>で、ワイルドカードはシェルの機能だからシェルしか解釈できない
あなたも説明怪しいなあ。
ためしにcmd.exe上での
echo *
の動作を解説してみてよ。
ECHOはCMD.EXEの組み込みコマンドだもの
どうとでも動作を変えられるよ
これで実はcmd.exeじゃなくてcommand.com使ってました
とかだと話はさらにややこしくなるな。
953デフォルトの名無しさん:04/08/23 00:18
switch〜case文についての質問なのですが・・・
case1: case2: case3:
これでこのどれか一つだけが実行されるのではなくて
case1:→case2:→case3:
と順に実行されるようにしたいのです・・・

他に方法があるなら別に
switch〜case文じゃなくても構いません。

よろしくお願いします。
放っときゃそうなると思うが
>>953
switch(1){
 case 1:
  someprocess();
 case 2:
  otherprocess();
 case 3:
  moreprocess();
}

っていうか、わざわざswtch〜case使わずに順に記述すればいいだけだと思うが。
てか逐次処理になぜswitch文、、、はっ、釣られてるのか?
だから行数で給料が決(ry
while文についての質問なのですが

while(index<Integer.MAX_VALUE) {
}

とやるとほぼ無限に近いループが出来ますが完璧では
ありません。無限ループを実現させるには
どうしたらいいのでしょうか?
>>958 ()の中がいつもtrueなら無限ループになる。
でもその手のコード書くときってループの終了条件が
ループのどっかに埋もれて読みにくいときあるから、
可能な限り他の方法にいったほうがいいとおもうけどな。
>>958
まずはコンパイルを通して下さいねw
釣られるなよ・・
>949

 なんと…。windows はワイルドカード展開せずに引数をそのまま
渡して、UNIX 系はシェル側でワイルドカード展開を行う…と思っ
てたんですけど、勘違いだったんですね…。もしかして
command.com はワイルドカード展開せずに cmd.exe だとワイルド
カード展開するってことなんでしょうか?

 ちなみに自分が今使っているのは Windows XP なので、使ってい
るシェルは cmd.exe だと思います。

 結局、javac */*.java だとだめなんですね…。空白つきのパス
を許すのなら "ho ge"\* くらいは展開して欲しいなぁ…
みんなマラソン観戦のひまつぶし?
for( ; ; ){ 無限ループ}
環境変数使えばよくない?
>>962
ていうかそんなに困ってるならAnt使ったら?
Antのワイルドカードのパス指定は便利だよ
ああ、環境変数じゃ通らないな、すまぬ
967デフォルトの名無しさん:04/08/23 00:56
ライフサイクル管理できるフリーのコンポーネントって有りませんか?
Jakartaを漁ってみても見当たりませんし、Tomcatのソース見たら外部コンポーネント
使用せずに自前で実装してました。

もし無いのであればTomcatのセッション管理を参考に自分で作る事になるんで、
ちょっと鬱になってます。

宜しくお願いします。
ライフサイクルって具体的には何を管理すんの?
969デフォルトの名無しさん:04/08/23 01:08
>>968
ライフサイクルだけでは具体的ではありませんか?
というかライフサイクルを起こすトリガーは?
Webのsession timeoutにあわせるってこと?
971967:04/08/23 01:18
ライフゲームのライフサイクルのことです。
どうしてそんなことも分かりませんか!
ライフゲームかよ
わからねーよそんなの
腹抱えて笑っちまったぜ夜中なのに
俺釣られてんの?
ほほえましいのか
釣りなのか
騙りなのか
見当がつかんなw
974975:04/08/23 01:57
>>967
要は ObjectPool ってこと?
ほんとライフサイクルだけじゃわからんばい・・・。
ライフル? っていうか、アイフル?
お金に困ってんのか・・・。
あ! キミの人生のライフサイクルを考えたいってこと?


Object PoolならJakarta Commons Poolが使えんじゃないの?
でも質問者はセッション管理を参考にして、、といってるから
もっと高位の実装が欲しそうなんだなとはおもうけど、、、。
>>971
まじでライフゲームだとして
そんなのセッション管理の仕組みでやったら重くてしょうがないだろ。
シミュレータ内を流れる時間はどの種族にも同じなんだから
タイマーが一つと世界を表すint[][]の配列、
後は種族ごとの動作を表すシングルトンオブジェクトがあれば
基本的に作れるだろ?(移動、敵策、戦闘、突然変異、、、)
いちいちオブジェクトを生成消滅させる必要なんか全くなし。
かわりにマップ上の数値が変わればOK。
977デフォルトの名無しさん:04/08/23 08:45
こんにちは
質問ですが

JTableに使われるフォント(Font)の詳細はどのようにして調べるのでしょうか?
978977:04/08/23 08:47
すいません
修正します

JTableのColumn(上部のタイトル側)に使われるフォントはどうやって調べるのでしょうか?
UIManager.getFont("TableHeader.font");

設定は同じくputかと。
980unk:04/08/23 11:48
誰かこの問いに答えられるヒトいない?

ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=14068&forum=12&2
Tomcat4.1でRemotePortを取得するにはどうすればよいのでしょうか?
質問者の名前がクソだな
982unk:04/08/23 13:07
>>981
ハァ?
おめーは脳ミソがクソなんじゃねーの
983デフォルトの名無しさん:04/08/23 13:08
984初心者1号:04/08/23 13:36

房な質問をさせていただきます

いつも仕事でservletを製作する場合、servletを製作した後javacをして
Tomcatを再起動させて動作を確認しています

今回、自作ホームページでservletを使用しようと思っています
ローカルサーバでjavacを行ってサーバー上にアップさせて動作を
確認することになりますが、Tomcatを再起動させなくてもservletは
動作可能なのでしょうか?
(たしかTomcatは再起動した際、ディレクトリのソースファイルを
読み込むときいたような気がします)

また、WEB-INF以下に設置しなくても動作可能なのでしょうか?
うんこはクソだろ・・・?
>>984
> Tomcatを再起動させなくてもservletは動作可能なのでしょうか?

可能です。

> また、WEB-INF以下に設置しなくても動作可能なのでしょうか?

不可能です。


初心者なら、NetBeans使え。
987初心者1号:04/08/23 13:58
ご回答ありがとうございます >>986

ということはローカルでjavacを行い、サーバ上のWEB-INF以下に
アップロードしweb.xmlをWEB-INF以下に設置しパスを指定すれば
よいということですよねぇ?
988うんこ:04/08/23 14:00
>>980
request.getServerPort()で得られるものとはどう違うんでしょう?
>パスを指定すれば
激しく意味不明
990987:04/08/23 14:06
servlet-mappingのことなんですが
/servlet/*....
みたいなパスで呼び出せるようにするみたいな
すいません、いくら調べても結論のでている回答がないので質問させてください。
DNSのキャッシュに関してなんですが、

java.security.Security.setProperty("networkaddress.cache.ttl","0");
java.security.Security.setProperty("networkaddress.cache.negative.ttl","0");
でもダメで、
System.setProperty("networkaddress.cache.ttl","0");
System.setProperty("networkaddress.cache.negative.ttl","0");
でもダメで、
  起動コマンドに、
  java -Dnetworkaddress.cache.ttl=0 hoge.class
でもだめで、
  $JAVA_HOME/lib/security/java.security ファイルにnetworkaddress.cache.ttl=0を
  追加したら、想定通りにDNSキャッシュを無効に出来ました。

セキュリティマネージャーがロード時にこの値を取り込んでくれるようなのですが、
この値をファイル編集ではなく、プログラム内から変更することはできないのでしょうか。


>>985
うんこなんてどこにも書いてないよ
ゆ、ゆないてっど・きんぐだむ
994デフォルトの名無しさん:04/08/23 20:58
画像Aと画像Bを読み込んでピクセル毎に平均を取った画像Cを出力するプログラムを作ろうとしました。
MemoryImageSource source;
source = new MemoryImageSource(640, 480, pix, 0, 640);
Image im = createImage(source);
if (ImageIO.write((BufferedImage) im, "png", outfile)) { //

3行目で、シンボルを解決できません。
シンボル:メソッド createImage (java.awt.image.MemoryImageSource)
場所  :ImageIOTest2 の クラス
      Image im = createImage(source);
            ^
となってしまいます。JAVAはJ2SDK 1.4.2_05で、importは
java.awt.*; java.awt.image.*; java.awt.Graphics;
java.awt.image.MemoryImageSource;
javax.imageio.*; java.io.*;
をしています。どなたかご教授ください。
>>994
そのコードがあるクラスのスーパークラスがcreateImageメソッドを持ってないんだと思うが。
996デフォルトの名無しさん:04/08/23 21:19
>>995
いえいえ・・
ちゃんと持ってますよ。
勝手に決め付けないでください。(--);
>>991
プログラムから変更できたらセキュリティマネージャの意味ないじゃん

dnscache.propertiesファイル
-------------------------------------------------------------
networkaddress.cache.ttl=0
networkaddress.cache.negative.ttl=0
-------------------------------------------------------------

java -Djava.security.properties=dnscache.property Foo

とかじゃだめかい?
998!!
>>996
コンパイラが解決できねーっつてんだ。
ソース見直せ。
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。