【初心者】Java質問・相談スレッド102【大歓迎】
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド101【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1177938653/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。
http://pc10.2ch.net/hp/ 次スレは
>>980 あたりで。
ずるしてらくしてかれいに2げっとかしらかしら〜
チョー初心者です SUN JAVA プログラマ って取得すればそれなりの評価はありますか? SUNの開発ソフトを使わないと取得は難しいのでしょうか?
>>3 プログラマの資格は全て、あんまり評価されない。
会社によっては給料良くなる資格もあるけど、それは自分で調べてね。
>>3 誰も取らないから希少価値があるんじゃないかな?
少なくとも既にできる人たちは取らないと思います。
免許とかではないので。
char a='こんにちは'; この記述の仕方間違っていますか? 文字リテラルがとじられていませんと言わてしまいます。
>>3 まぁ会社によっては一時金支給、極まれに給料上乗せってところが多いんじゃないかしら
あ、ソフト開発関連の会社ね。
試験費用出してくれるような会社だったら腕試しに受けてみてもいいかも。
自腹じゃ受ける気にならんよなぁ
11 :
6 :2007/05/29(火) 21:26:18
>>8 さん
>>9 さん
文字列引数どうやってかけばいいんすかね?
教えて貰ってもいいっすか?
12 :
6 :2007/05/29(火) 21:27:19
>>11 文字列引数の定義お願い。
>>6 は引数関係ないし、ぶっちゃけ釣りだとおもってるんで。
何か宿題のニオイがする・・・・
>>13 さん
釣りじゃないっすよ。2ヶ月まえから勉強しはじめました。
引数って型の「=」の後の文字や数字の事じゃないんすか?
なんかintばっかりで飽きたので、いろんな型使ってみようと思って試してみたらエラーでた次第でございます。
出直してきます。
2ヶ月でそれか・・・。 つーか、適当な本嫁。 根本的におかしすぎて、何を言っていいやらさっぱりだ。
javascriptを使って、そのページを見ている人が画面でどのような操作を したかわかるようになりますか? 文章のコピーなど・・・
あんたはWebアプリの仕組みから勉強しなおしだな。
jre1.6.0_1をインストール後、 コントロールパネルにあるJavaを起動しようとすると、 Could not find the main class とエラーがでて、起動失敗します。 Eclipse_v3.2.1で、6.0準拠でコンパイルし、HelloWorldを実行しても、同様のエラーが出て実行できません。 以前のjre(1.5.0_11)では、問題は発生しませんでした。 解決方法がありましたら、情報ください。よろしくお願いします。
スレの頭から飛ばしまくってんなぁ・・・
>>19 アンインストールしてみれば?
よくみると1のテンプレにJavaScriptの質問はスレ違いって書いてあったな。 スマソ
22 :
19 :2007/05/29(火) 22:39:06
>>20 1.6も1.5も一度アンインストールしてから、再インストールしてもダメでした
別のPCでは問題ないので、使ってるPCに何かしら原因があるのはわかるんですが、
それがなんなのかさっぱりです。
>>22 Eclipseは起動するんでしょ?
設定からJava − インストール済のJREのところを確認。
出来るのであれば一度クリアして設定しなおしてみて。
24 :
デフォルトの名無しさん :2007/05/30(水) 00:25:24
25 :
デフォルトの名無しさん :2007/05/30(水) 04:06:33
すいません、質問です。 画像ファイルを作成するプログラムを作っています。 カメラを使用しており、GUIのスナップボタン押すとjpegの画像ファイルが出来上がるというものです。 そこで質問ですが、スナップボタンを押す度にtest0.jpeg、test1.jpeg、test2.jpeg・・・ というように新しい画像ファイルを作成するには、下記の変数iにどのような処理を施せば良いのでしょうか。 ImageIO.write(tmp_img, "jpeg", new File("test"+ i +".jpeg")); ちなみにプログラミングは最近はじめたばかりの初心者です。どうかお願いします。
プログラム内でi++だけしても、アプリ再起動したときにファイル名ぶつかる。 ファイルかDBにiを保存するしかないんじゃない?
>>24 informaを使ったことないので見当外れかもしれないが、
FeedParser#parseでURLを渡す代わりに、
setRequestPropertyでAuthorizationにセット済みのURLConnectionのInputStreamを渡してやるとか?
28 :
19 :2007/05/30(水) 08:14:20
>>28 環境変数(path, classpath)あたりをいじったことある?
30 :
19 :2007/05/30(水) 09:09:54
>>29 pathは必要に応じて、変数加えたりしています。
自分も問題が起きたとき環境変数に原因があるのかとも思いましたが、
調べたとき、Javaに関わっていた変数は以下の2つでした。
CLASSPATH
jre1.5のインストール場所\lib\ext\QTJava.zip
と
QTJava
jre1.5のインストール場所\lib\ext\QTJava.zip
1.6をインストール後にも、この変数には変化がなかったので、
問題の原因と思って試しに上の2つを削除したんですが、変化はなかったです。
言われて気付いたんですが、上記の環境変数について調べてなかったので、
ちょっとQTJavaについてググったら、
ttp://blue.ap.teacup.com/applet/pierrot/20051116/archive に、原因っぽいのが書いてあるので、試してみます。
31 :
デフォルトの名無しさん :2007/05/30(水) 09:28:03
質問よろしくお願いいたします。 Java実行のコマンドラインで -verbose:gc -Xloggc を指定すると、ガベージコレクションの内容がファイルに書き出されますが、同様に -verbose:class の結果をファイルを指定に書き出すオプションはあるんでしょうか? ちょっと見付けられなかったので、もしあれば、教えて頂けないでしょうか。
>>30 環境変数周りは昔から鬼門なんだわ。
path(classpathでない方)にjava関連が残っているならば一度消す。
それで起動しなくなるならば、アンインストールしてインストールしなおす方がいいかも。
classpathの方は、存在自体がウンコの場合があるので、一度環境変数ごと消す方がいい。
リンク先見たが、勝手にclasspath書き換えるのか・・・糞林檎。
>>31 標準出力をファイル出力なんかにパイプするなりしたら?
34 :
19 :2007/05/30(水) 10:35:34
>>32 ダメでした・・・
CLASSPATH、QTJavaの2つの環境変数を消して(ほかにJava関連はありませんでした)、
再起動⇒アンインストール⇒再起動⇒jre1.6インスト
したのですが、同様のエラーが以前発生します。
QuickTImeもアンイストしたんですが、意味無かったです。
そもそもCLASSPATHなくても、jre1.5は問題なく動作してたので、何が原因かますますわからなくなってしまいました。
>>34 コマンドプロンプトを表示して、
java -version
と打つとどうなる?
36 :
java.lang.Exception :2007/05/30(水) 13:45:33
>> 34 「jre1.6インスト」 そもそもEclipse環境にはJREじゃなくてJDKが必要なんだけど・・・
> そもそもEclipse環境にはJREじゃなくてJDKが必要なんだけど・・・ ウソはいかん。
38 :
19 :2007/05/30(水) 14:20:18
>>35 別の作業してたので遅くなりましたが、
>java -version
java version "1.6.0_01"
Java(TM) SE Runtime Environment (build 1.6.0_01-b06)
Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
と表示されます。
39 :
デフォルトの名無しさん :2007/05/30(水) 14:21:21
JOptionPaneのボタンに初期状態でフォーカスを当てて、ダイアログを開いてからエンターキーを押すとダイアログが閉じるようにしたいのですが どのようなメソッドを利用すれば宜しいでしょうか。setFocusable(true);では上手くいきませんでした。 下記サンプルコードです。 public class MainFrame extends JWindow { private JDesktopPane desktopPane = new JDesktopPane(); private JOptionPane optionPane = new JOptionPane(); public static void main(String[] args) { MainFrame main = new MainFrame(); main.setSize(300, 300); main.setVisible(true); } public MainFrame() { desktopPane.setSize(100, 100); desktopPane.setVisible(true); this.add(desktopPane); optionPane = new JOptionPane("TEST", JOptionPane.WARNING_MESSAGE, JOptionPane.YES_NO_OPTION); optionPane.setFocusable(true); JInternalFrame iFrame = optionPane.createInternalFrame(desktopPane, "TEST"); if (!desktopPane.isAncestorOf(iFrame)) { desktopPane.add(iFrame, 0); } iFrame.setBorder(new BevelBorder(BevelBorder.RAISED)); iFrame.show(); } }
>>38 アンインストールはされてないようだね。
pathなどにも入っていないということになれば、レジストリに設定されているという所だろうな。
上書きインストール、アンインストール、その他もろもろ試してダメだとすると、近くに詳しい人いないならばOS入れなおす方が早そう。
41 :
31 :2007/05/30(水) 14:45:50
>>33 ありがとうございました。頂いた線でやってみたいと思います。
42 :
19 :2007/05/30(水) 14:47:27
>>40 誤解をまねいてしまったようで、すいませんが、
さきほどのはjre1.6をインストしたときに実行・表示されたものです。
アンインストしたときに同上のコマンドを実行しても、認識はされませんでした。
43 :
デフォルトの名無しさん :2007/05/30(水) 15:20:16
同フォルダ内にtest.txtがあれば「ふぁいる:test.txtは、そんざいします。」と
その下に「OK:なんとかかんとか」という表示され、
txtがない場合はそんざいしません。という文章が表示されるプログラムを組んだのですが、
二つほど問題が発生しました。
1:OK:の隣りのなんとかかんとかの部分が表示されない。(なんとかかんとか、という文章ではなく違うなにかが表示される予定)
2:test.txtがフォルダ内にない場合には、コンパイルでエラーが出てしまう。
プログラムはこれです→
http://ccfa.info/cgi-bin/up/upload.htmlのup3656 どこが間違ってるか教えてくれないでしょうか。
44 :
39 :2007/05/30(水) 15:24:11
追記 JInternalFrame.setSelected(true)で見た目上は選択済みの色になったのですが エンターキーを押すとバックグラウンドのツールで改行が・・・。
45 :
19 :2007/05/30(水) 15:42:38
結果として解決できませんでしたが、色々とご意見ありがとうございました。 レジストリもわかる範囲でいじってみましたが、うまくいきませんでした。 時間に余裕ができたら、OS入れなおしてみます。それまでは1.5で、やってみます。
46 :
デフォルトの名無しさん :2007/05/30(水) 19:35:29
49 :
デフォルトの名無しさん :2007/05/30(水) 22:04:22
あるクラスCLASS1で求めた整数型の値kを別のクラスCLASS2で呼び出したいんですけどどうすればいいんですか?
50 :
24 :2007/05/30(水) 23:36:39
>>27 ご説明いただいた方法でできました。
ありがとうございます。
>>49 アルファベットぐらい自分で勉強してから来い
Javaの参考書を買おうと思うのですが、プログラミングに使ってるソフトがエクリプスならばやはり参考書もエクリプスで解説してるものがいいんでしょうか?
>>52 その方がいいとは思う。
だけど、Eclipseを使っていて、かつ入門に適した本ってのがない。
個人的にはEclipseの本1冊と、独習Javaあたりを併用するのがいいと思う。
独習Eclipseとか出ないかね。
コードスタイルについて質問なんですけど、 public class hoge{ public void hage(){ } } てやるのが一般的らしいのですが、 public class hoge { public void hage() { } } て書くのは邪道?
>>54 そんなのはプロジェクトのコーディング規約なわけで、自分だけでやるなら
なんだっていいだろ。
まあ、ECMAぐらいは知っておけ
56 :
54 :2007/05/31(木) 12:29:25
レスありがとうございます。 そうですか・・・目を慣らさせとくために、コードスタイルを前者に変えて やって見ようかと思います。
コードフォーマットはこだわらない。 んなもん、Eclipseで設定して一発変換でしょう。
>>53 ありがとうございます
とりあえず、知り合いに薦められた「やさしいJava」を買って、そのあとエクリプスの方も買うことにします
59 :
デフォルトの名無しさん :2007/05/31(木) 16:59:22
Oracle9.2 JDBCを利用して更新可能カーソルを宣言、日付列の更新を行うと例外が発生します。 java.sql.SQLException: 内部エラー: Unable to construct a Datum from the specified input at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134) at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179) at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1130) at oracle.sql.SQLUtil.makeDatum(SQLUtil.java:1100) at oracle.sql.SQLUtil.makeOracleDatum(SQLUtil.java:1583) at oracle.jdbc.driver.UpdatableResultSet.updateObject(UpdatableResultSet.java:1615) at oracle.jdbc.driver.UpdatableResultSet.updateDate(UpdatableResultSet.java:1481) at oracle.jdbc.driver.OracleResultSet.updateDate(OracleResultSet.java:2852) 対処法などありましたら教えていただけないでしょうか。
テスト用と割り切った GUI を提供するような仕組みなりプログラムってないものでしょうか。 単に、開発中に動くようになった部分をメンバーに見せるとき、CUI だとあんまりだってだけなのですが。 極論すれば public static String executeA(); public static String executeB(String); public static String executeC(String String); こんなのを用意したら(引数も戻り値も String で結構)、 パラメータの数分のテキストエリアと、実行ボタンが並ぶ。 戻り値はメッセージボックスでフォーマット無視で表示してくれれば構わないのですが。
>>61 引数を配列で渡してGridLayoutかなんかにfor文でグリグリ貼り付ければできそうな気も
するけど…あとはコンポーネント毎にリスナを登録して…actionPerformedの中がちょっと
面倒かな?そうでもないかな?よくわからないや
単なる思い付きです。
>>61 javax.swing.JOptionPane 使えば、いくらか似たような事ができそうな気もする。
>>61 ある程度の制限をかければ可能ジャマイカ?
というか、JUnitのTestRunnerみたいなのでいけそうだけど。
個人的にはCUIでいいと思うけどなぁ
Eclipseのプラグインでリッチなコンソールを作るのはどうだ?w
65 :
デフォルトの名無しさん :2007/06/01(金) 00:00:13
日本語が含まれているjavaファイルがコンパイル時にエラーになってしまいます・・・。
エラーも貼らないで相談ですか
>>62-64 やっぱりそんな所と言うか、地道に一つ作ってあとはコピペ
がよさそうですかね。ありがとうございます。
EclipseのRCPは少し考えたのですが、意外と手ごろと言う感じでなかったので。
スタンドアロンでもいけるあたりはいい感じだったのですけど。
69 :
デフォルトの名無しさん :2007/06/01(金) 01:36:57
公開鍵と秘密鍵を使用して暗号化、複合化をするメソッドなのですが いったい何をしているのかよくわからないのでどなたか丁寧なコメントの 書き込みや解説などしてください。お願いします。 public int extMod(int a, int b, int n) { long ret = a % n; for(int i=1; i<b; ++i) { ret = (a * ret) % n; } return (int)ret; } public int[] encrypt(int e, int n, int[] from) { int[] to = new int[from.length]; for(int i=0; i<from.length; ++i) { to[i] = extMod(from[i],e,n); System.out.println("" + from[i]+" => "+to[i]); } return to; }
この程度のプログラムで丁寧に解説するって、見たまんまじゃん。 よくわからないじゃなくてホントはまったくわからないんだろ?
71 :
デフォルトの名無しさん :2007/06/01(金) 02:08:14
まったくといっても過言ではないですね。 すいません。 どうか僕が理解できるように解説してください。お願いします
コードが何をするのかがわからないのか、 なんでこのコードで目的を達成できるのかがわからないのか。
javaで2つのDVI-Dに画像を表示というかDVI-Dにデータを 送りたいのですがどうすればいいでしょうか?
74 :
デフォルトの名無しさん :2007/06/01(金) 08:50:55
JVM間のメモリ共有って技術的に可能ですか? 親JVM ├───┬───┬─ … 子JVM 子JVM 子JVM … みたいな構成で。
75 :
デフォルトの名無しさん :2007/06/01(金) 09:30:26
アプレットのテキストエリアに.txtなどのファイルを読み込んで表示させるにはどうすればよいのでしょうか?
なんかボタンがあって、 それを押すと、忠告が出るやつの タグってどういうのですか? インプット何とかってやつw
77 :
54 :2007/06/01(金) 10:29:01
JOptionPane.show〜Dialog("-------");色々あるから〜は自分で調べてね。
>>76 お前のソレはjavaScriptの事じゃね?
いままでの中で一番レベルの低いスレになりそうです
80 :
デフォルトの名無しさん :2007/06/01(金) 18:26:13
アプレットのテキストエリアに.txtなどのファイルを読み込んで表示させるにはどうすればよいのでしょうか? どうしても出来ません 教えてください
アプレットが出来ないのか、テキストエリアが出来ないのか、ファイルの読み込みができないのか、権限を与えるのができないのか、まずは状況を説明汁
82 :
デフォルトの名無しさん :2007/06/01(金) 21:03:00
テキストファイルはサーバーにあるの?クライアントにあるの?
finally節の使い所教えてください
>>83 java.io.Closeable 実装クラスのインスタンスを必ず close() するのに使ったり
ファイル入力(1000件) → 処理 → ファイル出力(1000件) 1GBくらいある大容量ファイル(改行無しの固定長)を上記の流れを繰り返すことで処理したいのですが、 skipなどを使用しても、入力ファイルから同じ箇所を何回か読んだりしてうまく処理できません。 ファイル分割入力の方法を教えていただけないでしょうか?
86 :
デフォルトの名無しさん :2007/06/01(金) 22:54:10
String line=""; if(bt==button1){ try{ BufferedReader fin = new BufferedReader(new FileReader("File.txt")); //String line; while((line = fin.readLine())!=null){ textArea.setText(line); // System.out.println(line); } fin.close(); } catch(Exception ee){ System.out.println("読み込みエラー"); System.exit(1); } } このようにしてテキストエリアに"File.txt"の中身を書き込みたいんですが 1行1行上書きされているようで上手くいきません どなたかいい方法を教えてください
>>86 TextArea#appendとかではいけない?
88 :
デフォルトの名無しさん :2007/06/02(土) 01:15:36
89 :
デフォルトの名無しさん :2007/06/02(土) 12:51:25
公開鍵と秘密鍵を使用して暗号化、複合化をするメソッドなのですが いったい何をしているのかよくわからないのでどなたか丁寧なコメントの 書き込みや解説などしてください。お願いします。 public int extMod(int a, int b, int n) { long ret = a % n; for(int i=1; i<b; ++i) { ret = (a * ret) % n; } return (int)ret; } public int[] encrypt(int e, int n, int[] from) { int[] to = new int[from.length]; for(int i=0; i<from.length; ++i) { to[i] = extMod(from[i],e,n); System.out.println("" + from[i]+" => "+to[i]); } return to; }
指定した範囲の乱数を取得したいのですが、どのようにしたらよいでしょうか? 例えば2以上6以下の範囲でといった感じです。 お願いします。
>>91 えーと「6以下」ってことは6も含むのな?
整数で2, 3, 4, 5, 6のどれかをランダムに取得するなら
int rand = (int)(Math.random() * 5) + 2;
でどうぞ。
実数値で [2, 6) の範囲というのなら、
double rand = Math.random() * 4 + 2;
でいいと思う。
94 :
デフォルトの名無しさん :2007/06/02(土) 23:16:34
(x,y)座標の集団を管理したいのですが、 int[] pos = {x,y} の形で座標を表して、 これをVectorに格納するという形にすると、 vec.addElement(pos);で座標{x,y}を格納した後、 それをを消そうとして、 int[] pos2 = {x,y}; vec.removeElement(pos2);としても posとpos2が同じと見なされないみたいで、 消えてくれません。 いい方法はないでしょうか?
Pointクラスというものがある。
配列の代わりにListを使う
97 :
94 :2007/06/03(日) 00:39:57
>>95 J2MEなのでありませんでした orz
>>96 String専用Vectorみたいなもの?
結局座標をStringにしてしまいました。
専用クラスつくってequalsメソッドをオーバーライド、これだね
hashCodeのオーバライドも忘れずに
java+swingでsocketを使ってネットワーク認証を行うプログラムを作っているのですが、IP更新をJAVAから行うことはできますか?? 認証をとった後、IPを自動的に更新したいのですが検索しても見つけられなかったもので・・・
101 :
デフォルトの名無しさん :2007/06/03(日) 08:21:49
Javaを勉強していく上でJavascriptが必要になるときってありますか?
別に
Web系が多いから必然的にやることになるわな。 だけど、難しい処理なんてほとんどないから、必要になった時に文法とか関数調べられればそれだけでOKだと思う。
【プログラマーの方々へ】 ageで失礼します。Threadを使う並列処理プログラミングを上手に行う方法を ご教示ください。 javaのサンプルファイルを見て勉強しますと、「あ、こんなところで wait();」、「ここでsynchronizedを使うのはなぜ」、「notify();を わざわざメソッドの最後に書き込むのはどうして」、などの疑問が 噴出します。 C.A.R.ホアの並列処理の教科書を読んで勉強をしたことがあるのですが、 理論と実践は随分違うなと感じます。 実際に現場で並列処理のプログラミングをされていらっしゃる方々、 どうかご教示ください。お願い申し上げます。
>>104 Threadでの処理が必要だなと感じたらThreadで処理する。
synchronizedでもwaitでも何でも必要なかったらしない
使わざるを得ない、又は使った方が良いパフォーマンスが得られたからから使うって感じかな。
Threadを使ったものと使わないものを二つ用意してパフォーマンスを比べるってのが理解しやすい思うよ。
>>105 レスどうもありがとうございます。
そこの判断に利用できるTOOLは何かありますでしょうか。
スレッドの振る舞いを可視化できるようなモノがあったら使ってみたいの
ですが。
Javaでマルチスレッドなプログラミングをやりたいなら ダグリー共著の少し前に出た本を読むといいよ
すみません。初心者なのですが、どうしても分らないので質問させてください。 swingを使っています。 まず、下記のように画像を表示するメソッドを作り、一旦画像を表示させました。 public void imagehyouji(String image){ label01 = new JLabel(new ImageIcon(image)); panel02.add(label01); } しかし、その後で別の画像の引数を渡してメソッドを呼び出しても、画像が変わらないのです。 このメソッドをどのように改良すれば、メソッドを呼び出すたびに画像を変えられますか? お手数ですが、どうか教えてください。お願いいたします。
>>108 画像をセットするメソッド
JLabel#setIcon(Icon icon)
セットしたらコンテナのvalidate()を呼んで描画を更新する
>>109 できたぁあああああああ
ありがとうございました!( TДT)
111 :
デフォルトの名無しさん :2007/06/03(日) 20:41:49
112 :
デフォルトの名無しさん :2007/06/03(日) 20:43:22
あぁ、すみません、アンカー付いちゃった><
113 :
デフォルトの名無しさん :2007/06/03(日) 21:50:53
>>113 必要性があると思えない。
プロセス(JVM)を分けたいならば、シリアライズなり方法は幾らでもあるだろ?
マルチスレッドじゃダメなのか?
どうしてVMを分けて同じメモリを共有したいんだ?
で、だれ(どのVM)がGCするんだ?
質問の意図が解らないから誰も答えないんだよ。
115 :
111 :2007/06/03(日) 22:14:35
org.apache.commons.httpclient についてですが、 違う方法(HttpURLConnection)を使ったらできました。 先ほどエラーになった個所では、 ●●へジャンプします。って リダイレクトする htmlが取得できました。 その後トップページにリダイレクトしたら ログイン後の画面になってました。
116 :
デフォルトの名無しさん :2007/06/03(日) 22:51:50
>>114 何を興奮してるんです?
可能かどうか聞いただけなんですが
119 :
デフォルトの名無しさん :2007/06/03(日) 23:24:57
!(Φ_Φ+) 確かに構成図だけでは何をしようとしているか理解する事は難しいです。 構成図のみで理解し使用目的が分かればprogram.上bug.は起こらないと思います。
>>113 Cなりなんなりでメモリを共有する親子プロセスを作って、
それぞれのプロセスでJNIを経由してJVM起動すれば
共有できるんじゃないかな。
122 :
デフォルトの名無しさん :2007/06/03(日) 23:37:41
116ですが
>>114 さん失礼しました
そうですね。
普通ならマルチスレッドでやるような事を
無理矢理わざわざJVMのマルチプロセスで実現することは可能なのかなと
そういう事でした。
重ねて、失敬しました
123 :
デフォルトの名無しさん :2007/06/03(日) 23:41:01
>>121 やはり、JNI絡みになりますかね。
なんとなく理解しました。
ありがとうございます
どなたか100もよろしくお願いします。
Hibernateで値を変えていないのに更新されてしまうことがあります。 なぜですかね?
質問です Java Runtime Environment Version 6 Update 1(最新版?)をインストールしようとすると 「インストールパッケージを開くことができませんでした。パッケージが 存在し、アクセスできることを確認してください。または、アプリケーションベンダに 問い合わせ、このパッケージが有効なWindowsイントーラパッケージであること 確認してください。」 と言う説明がでました。板違いかもしれませんが誰か詳しい方、初心者に教えて下さい。 宜しくお願いします。
130 :
デフォルトの名無しさん :2007/06/04(月) 11:22:46
>>129 教えて下さいって書いてあるけど、何を教えて欲しいの?
>>130 すいません。レスありがとうございます。
インストールしようとするとあのようなメッセージがでて
うまくインストールできません。何か解決方法があれば教えて頂きたいです。
なんかスレ違い気味な気もしますが、半分Javaの話なので ここで質問させてください。 JavaのWebサービスとVB.NETのクライアント間で SOAPを使った通信について知りたいのですが、 参考になるサイトや書籍を教えていただけますか? ここでレクチャーして頂けるならそれでもOKです。 Javaでシリアライズした物と.NETでシリアライズした物では 書式が変わってきますよね。 (Javaはstrinとかintとかも全部書き出すけれど、 .NETの場合は変数名だけが残って型の情報が失われる) このあたりをどう吸収すればよいか知りたいのです。 よろしくお願いします。
>>132 その差異を吸収するのがSOAP。
自分で決めたフォーマットでやりとりすればいいだけ。
片寄せするのが手っ取り早いけどね。
当然ながら、全ての変換が上手くいくわけない。
134 :
デフォルトの名無しさん :2007/06/04(月) 12:44:03
>>131 インストールしたJREと自身のOSはマッチしているか確認
135 :
デフォルトの名無しさん :2007/06/04(月) 12:46:08
通信内容は言語に依存しない。 吸収も何もXMLの定義が十分なら問題ないはず。
レスありがとうございます。 実はSOAPについてもあまり理解できておらず、 Webを見ても求めている情報が出てこないのですが、 XMLEncoder.writeObjectと同じような感じで SOAPを吐けるのでしょうか? それともまずWSDLありきなのでしょうか? よろしくお願いします。
>>136 定義からオブジェクト、オブジェクトから定義どちらでも可能。
昔、生SOAPを直接使わずAxis使って、 Javaクライアントから⇔VB.NETのWebサービスの呼び出しをやったことがある。 AxisのJSDL2Javaが自動生成したコードで何とかなったよ。 と思ったら、この場合は逆なのか… Webサービス呼び出しのコードは .NETも、WSDLから自動生成できたんじゃないかったっけ?
Java1.4.2で、デリゲートや関数ポインタって使えないですよね?
ない
142 :
デフォルトの名無しさん :2007/06/04(月) 21:42:49
すいませんアプレット初心者なのですが ”全て選択”や”コピー”といったボタンを作成して テキストエリアなどに書き込まれた文章をコピーするには どうやって作ればいいのでしょうか?
>>142 new JButton("全て選択");
new JButton("コピー");
144 :
100 :2007/06/04(月) 21:57:28
>>126 わかりにくくてすみません
Windowsでいうところのipconfig /renewのことです
145 :
デフォルトの名無しさん :2007/06/04(月) 22:04:46
147 :
デフォルトの名無しさん :2007/06/04(月) 22:22:34
>>143 ボタンを作ってそのボタンが押されたときというif文の
中に何をするかの処理を書かなくてはいけない問い事は
わかります。その何をするかの処理のところで「全て選択」や
「コピー」という処理をさせるにはどのように書けばよいのでしょうか?
>>147 全て選択:
TextComponent#selectAll()
JTextComponent#selectAll()
コピー:
StringSelection ss = new StringSelection(TextComponent#getSelectedText())
ClipboardOwner onwer = ...;//必要に応じて適当に。
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(ss, owner);
みたいな感じでできると思うけど。
149 :
奏 :2007/06/05(火) 04:08:25
穴埋めのプリントなのですが、自分なりに考えてもどうしてもわからないところがあるので、ご指導よろしくお願いします。 問題はコマンドから暗号化する文字列と暗号化鍵値key(8進数)を指定し、その文字列を暗号化鍵値で暗号化する。 暗号化の方法は文字列の各文字に暗号鍵値を加算し、暗号文字列にする。また暗号文字列を数値化して暗号値の配列に格納し、その暗号値を再び元の文字列に復号するという問題です。 自分で埋めた場所以外は【】で表示しているので、どなたがアドバイスよろしくお願いします。
150 :
奏 :2007/06/05(火) 04:10:37
public class Angou{ public static void main(String []arg){ int key=Integer.parseInt(arg[1],8); int []angti=new int[arg[0].length()]; String angou=toAngou(arg[0],key,angti); String fukugo=toFukugo(angti,key); } public static String toAngou(String str,int kye,int 【】){ char []angmoji=【】; for(int i=0;i<angmoji.length;i++){ angti[i]=【】+key; angmoji[i]=(char)angti[i]; } return new 【】; } public static String toFukugou(int 【】,int key){ char []fukumoji=【】; for(int i=0;i<fukumoji.length;i++){ fukumoji[i]=(char)【】-key); } return new 【】; } }
自分に代わって穴埋めを押し付けているのではなくアドバイスが欲しいってこと? 授業をよく思い出し参考書や配布物をしっかりと読み直しましょう 友達と相談し合ったり先生に質問するのもいいでしょう int kye,のような打ち間違いにも気をつけて全てを埋めたら 念のためコンパイルして正しく実行されるか確認しましょう
staticっていう修飾子は何のためにあるのですか?。 無くてもいいように思うのですが。
オブジェクト指向を勉強すればわかる
Math とか static 無かったらウザいことに
無くてもいいけどあると便利。 便利だからどんどん使うと大変なことになるけど。
>>153 悪魔で俺の見解だ、他の人は知らん。例えばDBのConnectionを拾得する
メソッドがある。DBManager#getPoolableConnectionとしよう。
他のクラスでDBManagerを通じてDBにアクセスしたい時getPoolableConnectionを
staticメソッドにしておけば、わざわざインスタンスを作る必要がないわけだ。
後は分かるな。
そんなもんシングルトンパターンでいいじゃん。
シングルトンなら結局static使ってんじゃん
static使わずに、どうやってシングルトンするつもりなんだろ……
>>161 returnする側のメソッドからファイルデータを返すなら、
ストリームからreadしたものを返せばいいんじゃね?
ストリームそのものをreturnして、
そのストリームを使って呼び出し側でreadするなら、
returnする側のメソッド内で既にreadしてるとかcloseしてしまってるかに注意。
nestedタグの属性の指定について質問させて下さい。 ■質問内容 以下のようなクラスの値をJSPで表示する場合 nestedのproperty指定はどのようにすればよいのでしょうか? ■test.java private Vector vec; public Vector getVec() { return vec; } public void setVec(Vector vec) { this.vec = vec; } ■test.java内の値vecの中身 vec +--Vector[0]--自作Formクラス[0]--プロパティ1 | +-プロパティ2 | +--Vector[1]--自作Formクラス[0]--プロパティ1 | +-プロパティ2 | +--自作Formクラス[1]--プロパティ1 +-プロパティ2 ■jsp <nested:iterate property="vec"> ←一番最初のnestedのプロパティは「test.javaのvec」で良いが <nested:iterate property="???"> ←次のnestedのプロパティはVectorであり、明示的なプロパティ名を持たない <tr> <td><nested:text property="プロパティ1" /></td> <td><nested:text property="プロパティ2" /></td> </tr> </nested:iterate> </nested:iterate>
スレ違いじゃねぇか?
165 :
163 :2007/06/05(火) 18:57:05
>>164 wikiで関連スレは確認したつもりですが、他に適当なスレはありますでしょうか?
宿題スレとかでしょうか?
JSP内に <INPUT TYPE='text' NAME='text1' VALUE='テキスト'> があります。 doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException のrequestとresponseは具体的に、何から値をもらっているのでしょうか?
あら、リンク張ったつもりが2chのトップに出る。悪い。
プログラム板にframe知らないやつがいるのか・・・
>>167 サーブレットエンジンから。
さらにいえば、HTTPリクエストから。
HTTPリクエストはあなたのブラウザから値をもらう。
入門書でも買ってこいや
staticな変数は何となくわかってきたのですが、staticなメソッドやクラスが どうして必要なのかわかりません。 例えばMathクラスのメソッドがどうしてstaticなのか?。 もしstaticでなければどううざいのか?。 インスタンスを生成するのってそんなに手間がかかるものなんでしょうか?。
>>171 それはインスタンスというものを理解する必要があるね。
インスタンスは、それぞれ独立して個別の値を保持する実体だ。
つまり、いつ何時呼び出しても同じ動作をするものは、
わざわざインスタンスにする意味がないってこった。
・インスタンスがメモリを消費 ・インスタンスを作らないと使えない 以上に問題を感じなければ普通のメソッドでもいいんじゃね? ログ出力クラスとかも毎回インスタンス作るのか?
JavaDocを見るとき、調べる対象のメソッドがインスタンスメソッドかクラスメソッドか判るだけで どんなことをするメソッドなのかあたりが付くようになる。 なのでインスタンスを持つ必要がないメソッドは極力staticを付けた方が良い。
>>174 >インスタンスを持つ必要がないメソッドは極力staticを付けた方が良い。
そして地獄を見る
>>176 きっと、想像できなかった仕様変更があって、
内部状態に応じて動作が変わるようにしなければいけなくなるんだろう。
たとえば、テストモードかどうかをオブジェクト内部に持つような
仕様に急に変わって、テストモードだったら(本番データを使えないので)
こっちの方法で計算するようにしてね、と言われるとか。
それstaticぜんぜん関係ないじゃん。
>>174 地獄へ落ちるに同意。
本当にインスタンスが不要であることが確信できるような場合にのみstaticを付けるが正しい。
インスタンスをもつ必要がない、というガイドラインだとデータクラス以外は全部staticでいいじゃんて話になるし、実際にそういうプロジェクトの経験もある。
必要のない作りこみはプログラムを無駄に複雑にし、不具合を呼び込み拡張を困難にする。 将来的に使われなかったら無駄になるし、 使われるときになって実際に必要とされる機能との相違があれば、結局作り直し。 static で済むなら static で作り、必要に応じてリファクタリングする。 しかし、定数でないstaticなフィールドについては、 単体テストで弊害になるのでできるだけやめた方がいい希ガス
181 :
163 :2007/06/06(水) 09:06:00
>>168 だよね…。厨はカエレ!的な意味かと思ったよ…。
で、正しく何スレでしょうか…?
>>180 staticでなくて済むならば非staticにして作り、必要に応じてリファクタリングでも良いかと・・・
185 :
181 :2007/06/06(水) 09:46:53
>>179 >インスタンスをもつ必要がない、というガイドラインだとデータクラス以外は全部staticでいいじゃんて話になる
ならないだろ。データクラス以外はインスタンス化しないのか?
mein(String[] args)メソッドで呼び出すときは他クラスにメソッド配置しないと 全部staticなメソッドになって地獄見た;
地獄見そうなメソッドだなw
>>186 そういうプロジェクトを少なくとも2つ見た事あるぞ。
自分は追加要因(火消し)で入ったもんだから、もはや手遅れでそのルールに従ったけど、結局はプロジェクトは両方とも破綻
具体例が無いからどっちが良いとは言えんな。 どっちにしたって地獄見るのは設計がダメだったって事なんだろうし。
191 :
デフォルトの名無しさん :2007/06/06(水) 12:26:10
Javaで、Windowsのファイル毎の 関連付けアプリケーションのパスを取得する方法ってありますか?
>>191 Windowsのシステムに関わる話なので当然Windows専用になってしまうが、
cmdの内部コマンドのassocとftypeをJavaから呼び出してやればいいのでは?
たとえば.txtなら、
assoc .txtで.txt=hogehogeが得られたら、
ftype hogehogeでhogehoge=関連付けアプリケーションのパスとか引数の与え方、になる。
193 :
192 :2007/06/06(水) 12:54:42
忘れてた。 ftypeで得られるパスには環境変数名も含まれる場合も多いだろうから、 環境変数を展開する処理も必要。
194 :
デフォルトの名無しさん :2007/06/06(水) 14:29:58
教えていただきたいのですが、あるディレクトリにファイルを コピーする時はどうすればいいのでしょうか? protected void CopyFiles(IProject project){ //コペーする絶対パスが設定されてるファイル File file = projectPage.files; //ファイルがコペーされるディレクトリ + \ IPath newDir = project.getLocation().addTrailingSeparator(); //fileをnewDirにコペーする }
>>194 FileInputStream と FileOutputStreamを使え
ファイルのコピーなんて、教科書に載ってないか?
196 :
デフォルトの名無しさん :2007/06/06(水) 15:33:51
>>195 アーッ!
すいません。ど忘れしてました。ありがとうございます。
197 :
デフォルトの名無しさん :2007/06/06(水) 15:37:32
教えていただきたいのですが、eclipse3.2.2上で lombozを認識してくれないのですが、原因はわかりますか?
198 :
デフォルトの名無しさん :2007/06/06(水) 17:44:08
いまからプログラミングの勉強したいんですが初心者は何から始めるのがお奨めですか?就職に役立てるような技術が欲しい
>>198 医師・看護師・薬剤師・介護福祉士がちょうおすすめ。
仕事はプログラマ並みかそれ以上にキツいけど。
200 :
デフォルトの名無しさん :2007/06/06(水) 18:27:46
>医師・看護師・薬剤師・介護福祉士がちょうおすすめ。 この仕事の人にプログラミングの技術がいるってことですか?
>>199 その選択ができるのは進学前の高校生までだろ。
>>198 は大学生くさいから諦めろ。
公務員試験の勉強をしつつ、経理の勉強でもしとけ。
プログラミングは趣味で。
2流以下の大学の学生がプログラム関係の資格を持っていると 旧帝大で留年してるような奴と対等になれる。 ぶっちゃけ資格は何でもいい。
勉強は二の次にして、これをネタに あちこちの勉強会に出席してコネを作ってくのがいいんじゃまいか
205 :
デフォルトの名無しさん :2007/06/06(水) 23:21:20
エクリプス上で実行できたクラスファイルがバッチ上で実行が出来ずに困っています。 カレントディレクトリはクラスファイルの場所を指定しています。 ためしにjavacとjavaのバージョンを確認してみたところ、 C:\Program Files\eclipse\workspace\KBSYS\test>javac -J-version java version "1.5.0_11" C:\Program Files\eclipse\workspace\KBSYS\test>java -version java version "1.6.0_01" と出力されました。 どうやらコンパイラのバージョンより実行環境のバージョンが新しくなっていしまっているようなのですが、 実行環境をコンパイラのバージョンにあわせるにはどのような設定をしたらよいのでしょうか?
>>187 mainの中で自分自身をnewしろよ。。。
207 :
205 :2007/06/06(水) 23:31:35
ちなみにjre1.5.0_11\bin は持っているようです。 サンマイクロもページ分かりにくい・・・。 もう一回古いバージョンを落とそうにも場所が分からず・・・。
>>205 Eclipseは自前のコンパイラを使うからjavacのバージョンは関係ない。
そもそも1.6のJREは-target 1.5でコンパイルしたクラスファイルを実行できる。
まず実行できなかったときの例外を確認するのが先。
209 :
205 :2007/06/06(水) 23:42:49
>>206 ありがとうございます!
まず、実行時のエラーですが、(クラスファイル名はtesta)以下のような出力になります。
C:\Program Files\eclipse\workspace\KBSYS\test>java testa
Exception in thread "main" java.lang.NoClassDefFoundError: testa (wrong name: test/testa)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
ちなみに、ユーザー環境変数のPATHは、以下のようにjavac.exeのあるディレクトリを指定しています。
C:\Program Files\Java\jdk1.5.0_11\bin
210 :
208 :2007/06/06(水) 23:45:05
>>205 >>208 もしコンパイラの問題だとしたら、
プロジェクトを右クリックしてプロパティを開く。
Java Build Path
という項目があるからTabの
Libraries
を選択して、JRE System Libraryをダブルクリックすれば
どのコンパイラが利用されているかわかる。
親切な人が豹変したw
これで満足?てかおんなじ人が質問してるのね。。。 public class testa { public static void main(String[] args) { testa inst = new testa(); inst.non_static_method(); } public testa() { } public void non_static_method() { System.out.println("hahaha"); } }
>>192 ありがとうございます!大変助かりました。
ひどいコードだと思いますが誰かの役にたつかもなので一応かいておきます。(環境変数名の解決はまだです)
static String ExePath(String FileName){
String epath="";
try{
//Runtime runexe = Runtime.getRuntime();
Process process = Runtime.getRuntime().exec("cmd /c assoc " + FileName.substring(FileName.lastIndexOf(".")));
InputStream is = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line, line2;
line = br.readLine();
System.out.println(line2 = line.substring(line.indexOf("=")+1));
Process process1 = Runtime.getRuntime().exec("cmd /c ftype " + line2);
InputStream is1 = process1.getInputStream();
BufferedReader br1 = new BufferedReader(new InputStreamReader(is1));
epath = br1.readLine();
epath = epath.substring(epath.indexOf("=")+1);
System.out.println(epath = epath.substring(0, epath.lastIndexOf(" ")));
} catch (Exception es) {
es.printStackTrace();
}
return epath;
}
abstractクラスMonsterには、Vampire,Werewolf,Zombieの三つの有形サブクラスがあります。各種のモンスターを六体作成し、1次元配列に格納しなさい。ループを使ってそれぞれのモンスターの種類を表示しなさい。 abstract class Monster { public String toString() { return getClass().getName(); } } class Vampire extends Monster {} class Werewolf extends Monster {} class Zombie extends Monster {} class MonsterTypes { static int NUMMONSTERS = 6; public static void main(String args[]) { Monster monsters[] = new Monster[NUMMONSTERS]; monsters[0] = new Zombie(); monsters[1] = new Vampire(); monsters[2] = new Werewolf(); monsters[3] = new Zombie(); monsters[4] = new Werewolf(); monsters[5] = new Vampire(); for(int i = 0; i < NUMMONSTERS; i++) System.out.println(monsters[i]); } } 実行結果 Zombie Vampire Werewolf Zombie Werewolf Vampire このプログラムに則してポリモーフィズムと動的ディスパッチについて説明してほしいです。お願いします。
216 :
205 :2007/06/07(木) 00:20:34
親切にありがとうございます。
ここへの質問は初めてです。
>>213 様のソースを実行してみたのですが、エクリプス上では想定通りの結果でしたが
コマンドラインからの結果は全く変わりませんでした・・・。
(コマンドラインは再起動しました)
staticでは無いメソッドを追加しても変わらない。う〜ん・・・。
javacとjavaのパスは通っているみたいですし、set CLASSPATH=%CLASSPATH%;.
をしても変化がありませぬ。
エクリプスのコンパイラは、標準のものを設定してみました。jre1.5.0_11です。
だからstaticもコンパイラも関係ないって。
>>210 が切れるのも無理はない。
218 :
205 :2007/06/07(木) 00:46:02
クラスパスのオプションが必要かと思って以下の通り実行しても
結果は変わりません・・・。
java -classpath "C:\Program Files\eclipse\workspace\KBSYS\test" testa
ただ、コマンド上でのコンパイルは成功します。classファイルのタイムスタンプも変化します。
>>1 や各種リンクを一昨日から散々あたっているのですが、原因が・・・。
何か、根本的で単純な間違えをしていそうな気もするのですが・・・。
219 :
213 :2007/06/07(木) 00:57:50
>>216 へ
勘違いしているようなので
213のソースコードは
>>187 へのレス。
ただ213のソースコードが動かないとするとバージョンの違いではない。
今からやれることはだね、
1. ファイル名とクラス名が一致しているか確認(test.javaでclass testaとかしてないか)
2. java -cp . testaを試す
3. DOS窓じゃなくcygwinならセミコロンの代わりにコロンで区切ってみる
4. さっぱりわからんからjdkの再インストール
220 :
213 :2007/06/07(木) 01:13:05
わかった。。。 (wrong name: test/testa) ← なんでpackage化されてるんだよ! java test.testa でいけない?
プロジェクト名がKBSYSなんでしょ。 そしたらtestはパッケージなんじゃねえの? cd "C:\Program Files\eclipse\workspace\KBSYS" javac test\testa.java java test.testa これでどうよ?
222 :
221 :2007/06/07(木) 01:17:54
223 :
213 :2007/06/07(木) 01:27:30
>>221 どもです。。。
たぶんtestディレクトリの一個上の階層で
やるべき作業がわからなくて、結果が同じです、
と言われることを考えたら、全部書くべきだった orz
え、動いたの?動いてないの?
誰か223を英訳してくれ
226 :
デフォルトの名無しさん :2007/06/07(木) 01:52:58
JAVAアプレットでTextAreaを使うと.append(string)でテキストを追加できますが TextComponentを使うと.setText(string)で書き込む事は出来ますが全て上書きに なってしまいます。TextComponentで追記するにはどうすればいいのでしょうか?
>>225 Thanks,
>>221 Maybe, the questioner will be failed again
and say the same output.
Because the execution should be in the upper directory.
I should explain everything.
>>226 敢えてやるならgetStringでとりだして文字列追加してsetString。
素直にTextArea使った方が早くね?
public class Test { public static void main (String[] args) { String str = "t u"; //tの後に空白(スペース)2回 String[] token = str.split(" "); //空白で文字列を分ける for (int i=0; i<token.length; i++) { if(token[i] != " ") //文字列が空白でないとき System.out.println(token[i]); } } } というプログラムなんですが、実行結果が t u となり、if(token[i] != " ")がうまく作動してくれないのか、空白を認知してくれません。 実行結果が t u となるようにしたいのですが、どうしたらいいのでしょうか? 初心者なんでよろしくお願いします。 あと、strを "u(t" として、String[] token = str.split("("); とするとエラーが出るのですが、それはもともと"("が対応してないからでしょうか?
230 :
229 :2007/06/07(木) 04:12:50
>>229 のはインデントがうまくいってないので補足です。
str.split(" ") ←空白1個でsplitしています。
よろしくおねがいします。
231 :
229 :2007/06/07(木) 04:25:58
すいません、自己解決しました。 まさかと思い if(token[i].length() != 0) とするとちゃんと t u になりました。 空白は文字としてカウントされないんでしょうか? でもそしたらsplit(" ")でスプリットされないんでは・・・。 なんか解決できたけどしっくりこないです。
>>229-230 >>1 読め。
それから API 仕様も読め。java.lang.String#split()
とりあえず
if(token[i] != " ") //文字列が空白でないとき
を
if(!("".equals(token[i]))) //文字列が空白でないとき
に直せば期待する動きになると思う。
> あと、strを "u(t" として、String[] token = str.split("(");
この場合は
String[] token = str.split("\\(");
とする必要がある。
233 :
229 :2007/06/07(木) 05:04:06
>>232 あ、stringに==使ってたんだ…。超初歩的な間違いですねorz
すいません、ご指摘ありがとうございます。
あと、”\\(”の件ですが、\\の意味についてググってみたら
”(”は特別な文字で\\はエスケープ文字といってそれを識別してくれる役割をもつみたいですね。
とても勉強になりました。ありがとうございます。
234 :
デフォルトの名無しさん :2007/06/07(木) 10:38:07
>>226 回答ありがとうございます。
僕は自分で作成したアプレットのテキストエリアの様なものに
BufferedReader fin = new BufferedReader(new FileReader("File.txt"));
while((line = fin.readLine())!=null){
みたいに.txtファイルを読み込んでそれを自分で作成したボタン
"すべて選択"、"コピー"という2つのボタンでコピーしどこにでも貼り付けれるような
状態に出来るGUIを作りたいのですがどうすればよいのでしょうか?
getString()で取り出してsetText()で追加というやりかたがうまくいかなかったのですが
getStringが使えなかったのでgetTextでやってみたのですが・・・
どうすればいいのでしょうか?よろしかったら例を挙げて教えていただけると助かります。
235 :
デフォルトの名無しさん :2007/06/07(木) 13:28:53
入力した数字を時間Aとして認識して、 その入力された時間Aの12600000ミリ秒後は何時何分(時間B)なのか、 更に時間Bの12600000ミリ秒後は何時何分で更にその12600000ミリ秒後は以下ループという風に作りたいのですが、 入力された数字を時間として取り扱うにはどうしたらいいのか困っています。 たとえばFormなんかで <INPUT type="text" name="text1">時<INPUT type="text" name="text2">分で入力します。 と表記して24時間表記で時間を入力させる(例01:15)として、それを午前1時15分だという風に解釈させる方法がみつからないのですが、どうしたらいいでしょう?
Calendar
237 :
デフォルトの名無しさん :2007/06/07(木) 13:55:29
ノートパソコンにJavaをいれたいのですがどうすればいいですか? 共有ソフトが使えません。
開発環境一式をCDなりDVDに焼いてノートパソコンにインストールする
>>237 共有ソフトという謎のモノに詳しい人に聞きなさない
240 :
デフォルトの名無しさん :2007/06/07(木) 16:39:33
winrarとかいうヤツ
今日からJAVAをはじめようと思ってNetBeansをインストールしたのですが、 何をどうすればいいのか良く分かりません。とりあえずプロジェクトなるものを作って、 出来たMain.javaにネットから持ってきたHelloWorldの表示プログラムを貼り付けたのですが、 実行してみるとエラー?かなんかで実行できません。しかも文字化けしてるし・・・。 Cannot find nbproject/build-impl.xml imported from E:\a??a?-a?°a?ca??a みたいな感じなのですが・・・。助けてください
そっちで聞けって事ですね! ありがとでう
GUIの左上のアイコン(コーヒーカップの絵)って変えられないんですか?
>>244 java.awt.Window, java.awt.Frame,javax.swing.JFrame,javax.swing.JWindow
あたりの
setIconImage()
setIconImages()
かな?
>>245 詳しくありがとうございます
変更できました
JTableの列にJButtonをいくつか描画して、それぞれのイベントリスナを実装しました。 まず手始めに、そのボタンをクリックするとコンソールに そのボタンが存在するrowを表示するもので試し成功しました。 次はボタンが押されたら、そのボタンが存在する行を削除するものを試しましたが、 消せたり消せなかったりします。消せないときはボタンとしての機能が 完全に止まっていてイベントすら発生しません。 原因がさっぱりでわかりません。
ソースもなければエラーメッセージも無しか、ゆとりは凄いな。
249 :
247 :2007/06/08(金) 08:14:31
すいません。携帯からだったもんで。 そして今もまた携帯からなんで出直します。
質問です。 テキストフィールドに入力された文字列がプログラム中で指定されている文字列と正しいかどうか判定するには、 どう記述したらいいですか?
>>250 <input type="text" name="hogehoge" value="" />
↓
request.getParameter( "hogehoge" ).equals( "tashiro" )
SwingUtilities.invokeLater()を使うのが推奨されているのは setVisible()のほかにどのような処理がありますか?
256 :
デフォルトの名無しさん :2007/06/08(金) 13:04:57
現在1つのthreadを使って、start()やsuspend()でアニメーションを作り停止・再開をしているのですが、 停止したアニメーションを初期状態の位置に戻すにはどのようにしたらよろしいでしょうか? [停止]ボタンを押すとint a=1されます。 で、suspend()したスレッドをresume()で呼び出し、run()内部にint aで分岐させて初期状態に戻そうとしているのですが、 停止したところから続きが再開されてしまい困ってます。 stop()→resumt()、stop()→start()では駄目でした。 スレッドを1度破棄してもう1度作るとか、そんな恐ろしいことしなきゃ無理なんでしょうか?
259 :
デフォルトの名無しさん :2007/06/08(金) 15:08:04
fillPolygonなんかで多角形を一色に塗る方法は分かったのですが、 ゲームなんかでよくあるように画像をはめ込むことはできませんでしょうか?
260 :
デフォルトの名無しさん :2007/06/08(金) 15:08:54
Cとアセンブラ、VB使いですが。 Java 初めてです。 クライアントからタッチパネルから「かなorカナ」入力させ、 (銀行のATMの漢字版) サーバー側で、日本語漢字の候補を、クライアントに送る・・・ というような、ミドルウェアや製品を知りませんか? サーバーJava で、ゴリゴリのプログラミングはNGというのが上からの命令。 参考サイト・商品サイトだけでも、ご存じの方いらっしゃいますか???
>>258 アニメーションさせるならばSpliteを作成するのが基本。
ダブルバッファリングから初めてスプライトの基礎を学ぶといいよ。
簡単なシューティングゲームくらいすぐ作れる。
>>260 サーバーJavaでゴリゴリプログラミングはNGってのが意味不明。
タッチパネル(クライアント)の開発元に問い合わせれば、そのタッチパネルのアドオンとかでありそうだけど、そっちは調べたの?
>>261 SpliteをJava APIで探しましたけど見つかりませんでした。
JSplitPaneじゃないでしょうけど、
BasicSplitPaneDivider
BasicSplitPaneUI
らへんでしょうか?
ああ、言い忘れましたが一応ダブルバッファリングはSplitとやらを使わずに出来てます。申し訳ないです。
Spriteでぐぐっても出てきませんでした。もう少し詳しく教えていただけませんでしょうか?
>>262 基本APIにゃない。
自分でコンポーネントクラスを拡張して作るんだよ。
>>263 spliteに関しては後で調べてみようと思います。
早い話、ThreadとRunnableではループし続けるアニメーションしか作れないのかを知りたいです
というか後程ソースを出して再度書き込んでみます。お手数おかけしました
JAVAを始めようかと思ってるのですが、オブジェクト指向についてちょっと聞きたいことがあります。 僕はFLASHをよく作るのですが、オブジェクト指向の概念というのはFLASHもJAVAも類似しているのでしょうか? 実際、まだクラス、オブジェクト、継承など全く理解していません。 FLASHでいうところのシンボル、インスタンスと同じものとして考えてもいいのでしょうか?
>>265 類似とまではいかないかも知れないけど、似ているところはある。
というのもFlashというかActionScriptがオブジェクト指向っぽく書かれている。
ネットで検索しながらiBatisとHSQLDBで簡単なアプリ(非WEB)を作ってます。 そこで質問なのですが、HSQLDBスタンドアロンモードを終了させる時はSQLで"SHUTDOWN"と打て、 とあるようなのですが、ibatisからSHUTDOWNを流そうとするとエラーになってしまいます。 どうやったら終了させられるのでしょうか?
swingでタイピングソフトを作ってるのですが、キーボードの取得方法がわかりません。 KeyListenrを使って、できるのでしょうか? ActionListenerならある程度わかるのですが。
今やってるプロジェクト(オープン系)で「seasar」っての使ってるんですが なんか、そのプロジェクトのリーダーが 全てのビジネスオブジェクトとDAOをシングルトンで 管理するように設定したって言ってました。 俺としてはありえないと思ったんですが、 これって正しい方法なんでしょうか? 俺の考えが間違ってんですかね。
>>258 =264
> スレッドを1度破棄してもう1度作るとか、そんな恐ろしいことしなきゃ無理なんでしょうか?
スレッドをsuspendで止めるほうがよっぽど恐ろしい。
スレッドの状態管理オブジェクト作ってwait/notifyで止めたり状態変更したりしましょう。
getGraphicsメソッドについて質問があります。 public class Test extends Applet{ ... } class Draw extends Canvas{ ... } という二つのクラスが有り、Drawの中でダブルバッファを行おうとしているのですが、 Graphics gBuf , Image imgBufをメンバ、initメソッド内にて imgBuf = createImage(300,300); gBuf = imgBuf.getGraphics();としたのですが、imgBufがnullとなりグラフィックコンテキストが取得できません。 しかしinit()を呼び出すタイミングによってはきちんと取得できていたりでどうにも安定しません。 この辺りを詳しくご教授願えないでしょうか。宜しくお願いいたします。
>>270 やっぱりそう思いますか?
周りにいる同じプロジェクトの人たちに聞いても
誰も疑問を抱いて無いんですよね。
何がおかしいの?って感じで。
自分の考えが間違ってるのかって悩んでたんで、
安心しました。
ありがとうございます。
これから数ヶ月そんなプロジェクトに
関わんなきゃいけないと思うと気が重いっス。
>>272 paint の中で createImage するしかない。
コードが見辛くなるけど初回の gBuf == null のときとそうでないときで処理をわける。
>>274 回答ありがとうございます。
paintの中でしか生成出来ないんですか…わかりました。やってみます。
276 :
デフォルトの名無しさん :2007/06/09(土) 00:35:20
リアルタイムJAVAってどうやったら使えるの?
278 :
デフォルトの名無しさん :2007/06/09(土) 00:55:31
普通のVMとは違う特殊なVMやリアルタイム用のAPIとかあるの? です。 ないかな。
279 :
デフォルトの名無しさん :2007/06/09(土) 00:59:22
Javaなんかで文字化けしやすい文字とかってあるのでしょうか?
いや何となく
284 :
デフォルトの名無しさん :2007/06/09(土) 02:08:51
窓の手で、「右クリックでコマンドプロンプトを可能」にしたのですが困っております。 これで現れるコマンドプロンプトでは、コンパイルが出来ません。 「スタート」→「アクセサリ」→「コマンドプロンプト」のものでは出来ます。 何か対処法はありますでしょうか。
窓の手の作者に聞け 「右クリックでコマンドプロンプトを可能」にした時に出るコマンドプロンプトに環境変数を設定する方法について
>>264 つーか、スレッド別に作っても、結局UIスレッドに委譲しなきゃダメじゃん
287 :
デフォルトの名無しさん :2007/06/09(土) 06:37:11
「アプリケーションソフトウェア」ってのを作りたいんですが、 そもそもプログラム以前に、この四角い枠を出現させる方法が分かりません。 「このデータはアプリケーションである」と宣言する方法みたいな、 そういうことを教えてください。
288 :
デフォルトの名無しさん :2007/06/09(土) 08:55:17
>>287 そういうことがやりたいならC#のほうがいいな。
289 :
デフォルトの名無しさん :2007/06/09(土) 09:00:19
>>287 JFrame JDialog
setVisible(true);
290 :
デフォルトの名無しさん :2007/06/09(土) 09:17:10
ヒントになりました。どうもありがとうございました。 会社がJAVAを主力にしていて、その勉強の一貫でもあるので、 ここはJAVAでやってみます。
291 :
デフォルトの名無しさん :2007/06/09(土) 11:38:15
こんなことをしたいんだが、方法はありますか? /** * @param vo ヴァリューオブジェ * @param memberName メンバ引数名 public void (Object vo, String menberName) { //voのmemberNameに対応するgetterを呼び出す }
リフレクション
293 :
デフォルトの名無しさん :2007/06/09(土) 13:27:36
javaのオンラインリファレンスを見ても、 目的のソフトを作るにはどのクラスを使えばいいのか全く分からないのですが、 どうすればそういうのが分かってくる様になるんでしょうか? オライリーのリファレンスマニュアルとかを見ればいいんですかね?
294 :
デフォルトの名無しさん :2007/06/09(土) 13:30:22
インターフェースを実装する事って、 そのインターフェースの中にあるメソッドが必ず使われるという担保だけで ちゃんとメソッドが組み込まれていれば必ずしも必要ではない? 上記の場合、クラスにメソッドがあるけど、インターフェースが実装されてない場合 コーディングルール的な事をのぞけば、単純に動かすということだけであれば わざわざあとで実装する必要性はない?
>>294 インターフェイスは、
メソッドが使われることを担保するのではなく、
メソッドが存在することを担保するものじゃないのか?
同じシグニチャのメソッドが存在してもインターフェイスを実装していない場合、
多態性の恩恵に預かれないんじゃないか?
複数のクラスをインターフェイスで総称できなくなる。
>>295 >メソッドが存在することを担保するものじゃないのか?
失礼しました
その通りです。
>>293 たくさんサンプルを読め
サンプルには何を実現しようとしているか目的が説明されているはずだ
いろいろ読んでるうちにそれぞれのクラスはどういう目的でどういう使い方をするのか分かってくる
あとは自分の目的に合わせて使う応用力の問題
質問させてください パターンマッチで末尾にバックスラッシュ(もしくは円記号)があるかどうかを調べたいんです。 そこでサンプルを作るのですが String buf = "\\"; String pattern = "\\\\$"; System.out.println(buf.matcdes(pattern) ? "OK" : "NG"); は"OK"になるのに String buf = "a\\"; String pattern = "\\\\$"; System.out.println(buf.matcdes(pattern) ? "OK" : "NG"); は"NG"になってしまいます。 なにか勘違いしてるのでしょうか。 環境はWinXPで1.5.0_10-b03です。
すいません。matcdesをmatchesと読み替えてください。
String#matcdes(String pattern)は文字列全体がpatternにマッチするかどうか
あ、おれもまんまコピーしちまったwww String#matchesね
その用途に限るなら、buf.endsWith("\\")でいいんじゃない?
カタコトで「マッチデース」とか言ってる検索係の外人を想像した。
文字列を、指定した幅内に描画する方法はありますか? 例えば、あるFontで"Sample"という文字列の幅が100だとしますと、この文字列の幅を80に縮小して、 Graphics g に描画する方法を探しています。 描画する文字列の幅は、以下のようにすることで得ることができました。 g.setFont(new Font("Serif", Font.BOLD, 30)); FontMetrics fm = g.getFontMetrics(); int size = fm.stringWidth("Sample") 実際に文字列を描画するには、Graphics#drawStringを使用すると思うのですが、 このメソッドには文字列の幅の指定ができないようです。 描画する文字列の幅を指定する方法がありましたら、ご教授お願いします。
305 :
デフォルトの名無しさん :2007/06/09(土) 16:03:30
byte値を0xFFの形でsysoutしたいのですが、 どうすればいいのでしょうか? 初歩的な質問ですいません。
>>304 int x0 = 20, y0 = 20;
double requestWidth = 100;
String text = "ABC";
Graphics2D g2 = (Graphics2D)g;
FontMetrics fm = g.getFontMetrics();
double m = requestWidth / fm.stringWidth(text);
g2.translate(x0, y0);
g2.scale(m, 1);
g2.translate(-x0, -y0);
g.drawString(text, x0, y0);
>>305 byte b = -1;
System.out.printf("0x%X%n", b);
308 :
289 :2007/06/09(土) 16:12:04
>300 ありがとうございます。納得いきました。
>>308 末尾の文字列が\かどうかなら
>>302 でいいと思う。
もし、任意のパターンが文字列中に含まれるかどうかを知りたいなら、
Matcher#find()を使って判定するとかかな。
>>306 のstringWidthでは描画コンテクストを無視するからgetStringBoundsを使った方が正確かもね
312 :
デフォルトの名無しさん :2007/06/09(土) 16:36:29
JAVAからwindowsのバッチファイルを引数を渡して起動したいのですが、 そういった操作をするクラスは用意されているのでしょうか? Runtimeというのを見つけたのですが、これは別物でしょうか? ちょっとコーディング試してみたのですが、ぬるぽが帰ってきます。 文字列入出力なら分かるのですが・・・。
すみません。 本を参考にjavaを勉強してますが、mybeansを使うところで、 1行目でエラーが出てサーブレットをコンパイルできません。 import mybeans;でコンパイルすると '.' (ドット)がないと出ます。 ただ、本にはimport mybeans;と記入するように書いてありますが、 付録のCDに入ってる手本のソースファイルにはimport mybeans.*; と書いてあったので、そのように記入してコンパイルすると、 今度は、パッケケージmybeansは存在しませんと出ます。 で、サーブレットをコンパイルする際の、ディレクトリの位置の問題かと思って、 mybeansパッケージと同じディレクトリでコンパイルすると、 1行目のimport mybeans;のエラーはでなくなりましたが、 2行目3行目のimport javax.servlet.*;とimport javax.servlet.http.*; のクラスが存在しないと出てしまいます。 開発環境はJDKの1.6.0.1とtomcat 5.5です。 mybeansを使うにはnetbeansなどの他の環境が必要なんですか?
package mybeans;とちゃうの?
>>312 public static void main(String[] args) throws Exception {
Process p = new ProcessBuilder("hoge.bat", "moge").start();
java.io.Reader in = new java.io.InputStreamReader(p.getInputStream());
while (true) {
int c = in.read();
if (c == -1) break;
System.out.print((char)c);
}
in.close();
}
hoge.bat
echo %1
316 :
310 :2007/06/09(土) 17:00:03
>>307 すいません。そのメソッドないです。
もしかして1.5じゃないとダメですか?
>>314 mybenasのパッケージ(ディレクトリ)に入れてある、
コンポーネントの方のjavaファイルの1行目はpackage mybeans;で、
試しに単独でコンパイルしたらコンパイルできました。
でもサーブレットの方のjavaファイルの1行目がimport mybeans;になってて、
>>313 のような状況です。
>>316 printf は .5以降じゃないとだめ。
>>316 実行環境のバージョンくらい最初から書け
String s = Integer.toHexString(b).toUpperCase();
System.out.println("0x" + s.substring(Math.max(s.length() - 2, 0)));
>>305 final String hexdigit = "0123456789ABCDEF";
System.out.println("0x" + hexdigit.charAt((b >> 4)&0x0F) + hexdigit.charAt(b & 0x0F));
>>316 そう。printf()は1.5以降。
int i = (int)b;
if (i < 0) i += 256;
String s = Integer.toHexString(i).toUpperCase();
if (s.length() == 1) {
s = "0x0" + s;
} else { // s.length() == 2
s = "0x" + s;
}
System.out.println(s);
あたりをどうぞ。
322 :
デフォルトの名無しさん :2007/06/09(土) 17:55:03
JavaでWindowsのペイントのようなソフトを作りたいのですが、 参考になるお勧めの参考書・サイトありますか?
323 :
310 :2007/06/09(土) 18:22:49
>>313 書のタイトルとページ数を書け。
もっているヤシがいるかもしれない。
その上でソースをあげてくれよ
326 :
312 :2007/06/09(土) 19:00:26
>>315 ありがとうございます!
エラーが5やら2で帰ってきて(作業ディレクトリ?)作業が難航していますが
そのソースをモトに進めたいと思います!
327 :
デフォルトの名無しさん :2007/06/09(土) 20:06:36
たぶん FAQ だと思うのですが、 整数を16進数表記に変換するには Integer.toHexString(i); とか Integer.toString(i, 16); とか があるとのことで、 byte[] b = {0x40, 0x24, 0x31, 0x08}; for(int i = 0; i < b.length; b++) System.out.print(Integer.toHexString(b[i] & 0x0FF)); とすると、 4024318 になってしまって 0 が抜けてしまいます。 CharacterEncoder ce = new HexDumpEncoder(); System.out.print(ce.encode(i)); も試してみたのですが、こちらは余計なものが付いてしまいます。 なんかすっきりした方法はあるのでしょうか?
328 :
デフォルトの名無しさん :2007/06/09(土) 20:13:44
for(int i = 0; i < b.length; i++) System.out.print((b[i] < 0x10 ? "0" : "") + Integer.toHexString(b[i] & 0x0FF));
あ、byte か。 for(int i = 0; i < b.length; i++) System.out.print(((b[i] & 0x0FF) < 0x10 ? "0" : "") + Integer.toHexString(b[i] & 0x0FF));
330 :
デフォルトの名無しさん :2007/06/09(土) 20:21:31
>>328 さっそくありがとうございます!!
でもなんか昔の BASIC のコード見てるみたいでぜんぜんすっきりしないんですけど
System.out.print(Integer.toHexString(b[i] & 0x0FF)); を System.out.printf("%02X", b[i]); でだめ?
>>331 327じゃないけど
sprintfみたいな機能ならあるとうれしい
>>328 =329
Integer.toHexString(b[i] | 0xffffff00).substring(6) とか。
せっかくPrintStreamにprintfが付いたのに PrintStreamがOutputStreamだからStringに持って来れん これだからJavaは使えん糞だと言われるんだよなぁ
>>334 String.formatメソッドとかFormatterクラスをよく調べてみたことある?
PipedOutputStream po = new PipedOutputStream(); PipedInputStream pi = new PipedInputStream(po); PrintStream ps = new PrintStream(po); for(int i = 0; i < b.length; i++) ps.printf("%02X", b[i]); byte[] bo = new byte[100]; int len = pi.read(bo, 0, 99); String s = new String(bo, 0, len); System.out.println(s);
すみません。HelloWorldのクラス化でいきなりもうダメぽです。 ↓のようなプログラムを書いたのですが、printlnの("の部分がコンパイル通りません。 なんかIDがありませんと言われてしまいます。何故でしょうか?意味が・・・ public class UserInput { System.out.println("Hello World"); } public class MyJavaTest { public static void main(String args[]) { UserInput(); } }
>>336 byte[100] ってなんだよw
PipedOutputStream po = new PipedOutputStream();
PipedInputStream pi = new PipedInputStream(po);
PrintStream ps = new PrintStream(po);
for(int i = 0; i < b.length; i++)
ps.printf("%02X", b[i]);
ps.printf("\n");
BufferedReader br = new BufferedReader(new InputStreamReader(pi));
System.out.println(br.readLine());
339 :
327 :2007/06/09(土) 22:05:07
>>335 できました!
String s = "";
for(int i = 0; i < b.length; i++)
s += String.format("%02X", b[i]);
System.out.println(s);
激しくありがとうございました!!!
340 :
デフォルトの名無しさん :2007/06/09(土) 22:12:24
なんだか予想以上にメモリを食うのですが、 staticで作った変数はインスタンスを生成するごとに、 メモリ食うってことはないですよね? インスタンスへのポインタ?みたいなものは、 何バイトくらいメモリ食うのでしょうか?
環境依存では
343 :
313 :2007/06/09(土) 23:09:51
>>325 レスありがとうございます。
色々やってたら無事コンパイルできました。
1行目も本に載ってたimport mybeans;のままでできました。
クラスパスなども修正したので、結局何が原因だったのかよく分かりませんが、
やはりサーブレットをコンパイルする場所(ディレクトリ)が問題だったようです。
因みに本は高橋麻奈さんのやさしいJava活用編第2版で、
問題の箇所はレッスン7のサンプル6でした。
お陰さまで助かりましたありがとうございました。
お騒がせして申し訳ありませんでした。
失礼しましたm(_ _)m
>>337 プログラム勉強するの辞めたほうがいいと思う。
どういう本で勉強しているのか、どういう授業を受けているのかは知らないけど、人の話も聞いていないし理解しようともしてないでしょw
何故か?
クラスに定義できるのは、メソッドと変数だけだから。
で、命令文(ステートメント)はメソッド(コンストラクタを含む)にしか記述できない。
345 :
312 :2007/06/09(土) 23:52:59
JAVAからwindowsのバッチファイルを引数を渡して起動の質問をした者です。 ProcessBuilderから引数を渡してバッチを起動するところは成功しました。 (環境変数のPATHに起動したいバッチのパスを入れた) しかし、バッチファイルの途中で処理が止まって、エラーも出ずに処理が止まってしまいます。 具体的に、バッチファイルの中でLhacaを使ってファイルを解凍をしている作業があるのですが、そこで止まってしまうようです。(getInputStream()で確認) Lhacaも環境変数に入ってますし、コマンドラインから単体で実行した時は問題なく動くのですが・・・。 偉い方、ご教授願いますm(_ _)m
>>337 クラスじゃなくてクラスのなかにあるメソッドを呼ばないとダメ
public class UserInput {
public void sayHello(){
System.out.println("Hello World");
}
public void sayAny( String text ){
System.out.println( text );
}
}
public class MyJavaTest {
public static void main(String args[]) {
UserInput userInput = new UserInput();
userInput.sayHello();
userInput.sayAny( "aaa" );
userInput.sayAny( "zzz" );
}
}
>>346 教育している側から言えば、出題の意図はコンストラクタに記述、だと思う。
クラスの理解は、コンストラクタ⇒変数⇒メソッドかな。
メソッドの引数(特に参照型)は最初は教えちゃダメダメ
>>348 いや、単発だから回答としては問題ないと思うよ。
ただ、そう書いても
>>337 は理解できないと思うが・・・
ここは質問・相談スレであって丸投げじゃないからと、言い過ぎた。
すみません。
>>345 Lhacaを入れていないから分からないけど、Lhacaが何か入力を求める場面とかない?
もしくは解凍ファイルを正しく出せる等、Lhacaの出力先は確保されてる?
どういうところで実行が止まっているのか状況が分からないから何とも言い様が無い。
> コマンドラインから単体で実行した時
っていうのは、Lhacaを単体で実行?バッチファイルを実行?
351 :
345 :2007/06/10(日) 00:25:31
説明が不足していました。 > コマンドラインから単体で実行した時 これは、Lhacaでの解凍を組み込んだバッチファイルでの実行の事です。 具体的に、以下のようなコマンドを発行しています。 lhaca "C:\Program Files\eclipse\workspace\aaa\bbb\ccc.lzh" バッチファイルの実行では、自分が指定したディレクトリに解凍されたファイルが想定通り出力されます。 よろしくお願いします。
>>345 なんだっけな、昔似たようなことで嵌ったような・・・
バッチファイルを実行させるのは無理とかそんな結論だった気もするけど、ちょっと覚えてないわ。
バッチファイルをCあたりで1個のexeにして解決したと思う。
>>351 止まってしまう、というのは異常終了するということ? フリーズするということ?
あと、エラーも出ずに、というけど、標準エラー出力はgetErrorStreamから取らないと。
まあ、標準出力と標準エラー出力のどちらに出すかはプログラム次第なんだけど。
エラーを出す前に固まったら関係ないしね。
プロセスが使用する作業ディレクトリとか環境変数とかは、
ProcessBuilderでstartする前に、ProcessBuilderのメソッドで設定することができるので、
バッチファイル単体で実行した時と同じような環境を整えてやってみて。
354 :
デフォルトの名無しさん :2007/06/10(日) 01:00:30
本の通りにやったのですがエラーが出てしまいます。 floatをdoubleに変えると問題ないのですが、floatは使えないんでしょうか。 精度が落ちている可能性 検出値: double 期待値: float a = 2.0; エラー 1個 //Exercise.java class Exercise { public static void main(String args[]) { float a; a = 2.0; System.out.println("変数aの値は" + a + "です"); } }
情報処理技術者試験向けのJAVA言語の必勝勉強方法とかあったら教えてください^^
356 :
345 :2007/06/10(日) 01:12:03
>>352 cでそんなことも出来るんですね!
難しそうですね〜・・・
>>353 getErrorStreamを組み込んでみましたが、何も出ていないようです。
Process p = new ProcessBuilder("wgetdata.bat","2006","06","06","06").start();
InputStream estream = p.getErrorStream();
InputStream stream = p.getInputStream();
while (true) {
int d = estream.read();
if (d == -1) {
estream.close();
break;
}
System.out.print((char)d);
}
while (true) {
int c = stream.read();
if (c == -1) {
stream.close();
break;
}
System.out.print((char)c);
}
これだと何もエクリプスのコンソールには出ませんでした。
getInputStreamを先に取り出すようにすると、バッチの途中までが出力されます。
バッチの途中でフリーズしているようです。
作業ディレクトリ、環境変数の設定はしていないので、明日あたり取り組んでみたいと思います。
>>354 なんて本?
Javaでは、「2.0」のように小数点を数値リテラル(定数)として記述した場合、doubleとして扱われるのが仕様。
なので、doubleをfloatに変換していると見なされコンパイラが警告を出す。
型を指定して小数を書く場合、2.0F, 2.0Dと後ろに型を現す識別子を記述すること。
同じように12桁ほどの整数だとintと見なされlongにいれられない。
この場合はLを後ろにつける。
f,d,l など小文字でもOKだが、lと1が見分けつくにくいので大文字推奨。
>>357 おおお2.0Fとしたらいけた
ありがたや〜
>>358 その本、地雷の中の地雷。
やさしいJavaが良書に思えるほど。
>>360 そうなのか・・・
わざわざ買いなおしたのに・・・
>>362 あああゴミなのかこの本
昨日からやる気出して取り組んでるのにヽ(`Д´)ノ
研究室の金だからいいけどさ・・・
>>362 てかgooではない方のQ&Aも間違ってるじゃねーかw
>>356 lhasaとかtarだと問題なく処理されて正常終了するなあ。
Lhaca自体の問題なのか、実行環境の問題なのかね。
ところで、名前からみてwgetで取ってきたlzhファイルを解凍する処理なのかな?
zipならwgetの処理からzipの解凍までjavaの標準APIで書けるけど、
lzhだと書庫操作用のライブラリを探すなり作るなりして、全部javaで書いてしまうとか。
Process p = new ProcessBuilder("moge.bat", "hoge.lzh", "hoge.taz").start();
java.io.Reader in = new java.io.InputStreamReader(p.getInputStream());
while (true) {
int c = in.read();
if (c == -1) break;
System.out.print((char)c);
}
in.close();
moge.bat
echo %1 %2
"C:\Program Files\Lhasa\Lhasa.exe" %1
tar xfzv %2
367 :
デフォルトの名無しさん :2007/06/10(日) 02:08:42
JavaのソースコードでSQL文を書く時 Stringにまとめていれるほうがいいのか StringBufferに一行ずつ書いて後でStringにするのがいいのか メモリ上の問題とかも考えて どちらのほうがいいのでしょうか? Stringに入れた場合、SQLに入れる変数が大量にある場合、見づらくなる気もしますが
>>340 Instrumentation#getObjectSize
Java6で追加されたjavax.scriptを使いたいんだけど、 第三者によって書かれたスクリプトを安全に実行したいんです。 JavaScriptからでも普通にJavaのAPIにアクセス出来てしまうのですが、 これを禁止する方法はあります?
>>367 動的SQLか静的SQLかにもよるけど。
静的SQLの場合、定数として宣言するのが定石。
この時、書き方としては+で連結して書いて何も問題ない。
コンパイラがコンパイルする時に、最適化して1つの文字列としてくれるから。
読みやすさを重視して、1行ずつ改行してインデントきって+連結。
静的SQLの場合、やはり定数として宣言して?を使ったPreparedStatementで使用するのが良い。
もっと複雑なSQLを構築したい場合は、動的にSQLを作成するけど、そういう場合はStringBufferを使用するほうが好ましい。
ただ、どちらにせよコードに定数としてSQLを書くよりも、SQLは外部のテキストファイルか何かで管理する方がベスト。
複雑なSQLを動的に作成する必要がある場合、本当に必要かを検討し、静的SQLの組み合わせで処理できないかを考えるべし。
この辺りは3層構造とかの記事でも読んで。
371 :
356 :2007/06/10(日) 08:11:18
>>365 書庫操作ライブラリの自作ですか!
たくさん勉強が必要そうですね。
まさにwgetでデータを取ってきて解凍する処理です。
lhasaとかtarなら正常終了したのですね?
次に試してみます!ありがとうございます。
>>369 「第三者によって書かれたスクリプト」が安全なわけないだろ
>>369 空の javax.script.SimpleBindings とかでグローバルスコープ上書きすれば
アクセスできないようにならん? とか思ったけど、Rhinoには通じないみたい。
で、ちょっと方向変えて
ScriptEngine engine = new ScriptEngineManager().getEngineByName("rhino");
Bindings b = engine.getBindings(ScriptContext.GLOBAL_SCOPE);
b.put("java", new Object());
みたいにするとパッケージの根元から潰したり、同じ事やれば、
デフォルトで Object とか System とか Thread とか潰したりはできそう。
どのクラスを使って良くて、どのクラス使っちゃダメってのを個別に制御しようとすると面倒臭そうだけど
>>371 漏れも調子に乗って既存のlzh系処理ソフトにラッピングする形で
自前の書庫管理してたんだけど途中で書庫サイズが2GB超えて
ぼろぼろになって原因がそっちにあるのが分かってやる気なくした
自分でライブラリ作った方が安心出来るよ
>>372 今ご覧になってるWebブラウザは第三者が書いたJavaScriptを安全に実行しているわけで。
>>373 全部のパッケージ潰せて、わずかな安全な自前の関数だけScriptEngine#put()できればとりあえず使いものになります。
java、javax、com、orgあたりを潰せばjava seのapiすべて潰したことになるのかな?潰し忘れがあったらかなりデンジャラス。
あちこちドキュメント漁ってるんだけど、なんでこんな大事なことどこにも書いてないんだろう。
でもとりあえずありがとう
>>375 どうしてJavaScriptでローカルのディスクに書き込めないのはなぜ?
>>375 アプレットでも使われているけど第三者のクラスファイルを安全に実行する
既存のモデルを使う。Javaのセキュリティモデルを勉強すること。
あとjava.sun.comにドキュメントあるよ。JavaSEのドキュメントのページからリンク
はられてる。
378 :
デフォルトの名無しさん :2007/06/10(日) 13:35:55
すいません。 誰か教えてください。 DoJa-3.5用(900用)のエミュレータを使ってHelloWorldを出すという、初歩の初歩でつまずいてるのですが、ビルドを実行すると javac:ターゲットリリース1.1がデフォルトのソースリリース1.5と競合しています。 とでて、ビルドが失敗してしまいます。 どうすればよいのでしょうか? Javaスレの神様どうかお教えください。お願いします。
と思ったら既にマルチしてたのね もう回答は期待出来ないな じゃ
381 :
デフォルトの名無しさん :2007/06/10(日) 14:12:23
すいません。 マルチはダメなんですね。ごめんなさい。 sun.tools.javac.Mainを使用するをチェックしていないのが原因でした。 回答が期待できないといわれたので、別の方法で考えました。 自分で考えたほうが身につきますね。ありがとうございました。
昨日Image関連で質問した物です。回答ありがとうございました。 回答いただいた内容で解決できたのですが、新たな疑問点が。 Imageをクラス間でやりとりすることは不可能なのでしょうか。 メンバにImageを持たせ、paintにて描画した後、 他クラスからそのImageを取得しようとしたところ、 Paintメソッド内では存在してましたが他クラスから呼び出した時点でnullになっていました。 3DのCUBEを乱数に寄り平行移動させた物を複数生成し、 1クラスにつき一つのCUBEをImageに描画させ、 のちに統合したImageをCanvasに描画するという手順を取っているのですが、 Imageのやりとりが出来ないとなるとこの手法が使えません。 ご教授宜しくお願いいたします。
static
Java2ME環境で質問です。 ネットワーク上のNetBIOS名を列挙したい場合はTCP/UDPから上の部分をすべて自前で実装する以外ありませんか? JCIFSというライブラリはありますが、LGPLなので手が出しづらいです。 スレ違いになりますがjarからclassファイルを取り出して使用した場合はソースを公開する必要があるのかないのか 分かる方はこちらも教えていただけると幸いです。
>>371 lhasaはいいとして、lzhを扱えるtarはないと思うので念のため。
サンプルでtarが展開しているのはtar-ballをgzipで固めたtazファイル。
ProcessBuilderで呼び出したバッチファイルで、
ファイルを生成するプログラムがうまく動作しないとかだといやだなあと思って確認しただけなので。
Lhaca自体の問題というより実行環境の問題の気がしなくもない。
eclipseから起動しているのが原因とかかも。
バッチを呼び出しているjavaプログラムを直接コマンドラインからjavaコマンドで叩いた場合はどうなる?
>>384 そのjarのライセンスに従ってください
>>377 JDKドキュメントのセキュリティの項は目を通してみているけど、さっぱりわからない。ムズ過ぎ……
>>現在、SDK の一部として提供されているコードはすべてシステムコードと見なされて、固有のシステムドメインの中で実行されます。
>>システムコードには、自動的にすべてのアクセス権が与えられます。
とか書かれてるけど、javax.scriptはシステムコードですべてのアクセス権が与えられてて制限は出来ないってこと?
public class a{ public static void b(int foo){ System.out.println("Int"); } public static void b(byte foo){ System.out.println("byte"); } public static void main(String args[]){ b(26); } } mainでbyteを入れているのに、何故intが呼ばれるのですか?
>>388 127以下の数だからってbyteとして扱われるわけじゃない。
Lつけなきゃ整数リテラルはすべてint。言語仕様の3.10.1参照。
391 :
デフォルトの名無しさん :2007/06/10(日) 19:13:20
データベースの中身を拾ってきて それをCSV形式でファイルに書き出してデスクトップに落としたい場合 メモリ上にファイルを作成→一行ずWriteで書き出す→拡張子をCSVにしてデスクトップに保存する こういうクラスを作ってやっているのですが だいたい皆さんもこういうやり方でやっているのでしょうか? もっと簡単な方法とかあるのでしょうか?
ActiveDirectory認証を利用するAPIはありますか?
393 :
デフォルトの名無しさん :2007/06/10(日) 19:42:06
会社でJavaの引き継ぎをまかせられてしまった初心者です(35歳)。プログラミング経験はほとんど皆無(商用経験は0、社内研究でperlを少しかじった程度)。 以下のプログラムが存在した場合、「this」はどこを示すのか悩んでいます。 class TestClassB extends TestClassA{ public String doExcute(){ 処理ロジック }; } class TestClassA{ public abstruct String doExcute(); public ActionForward excute(){ String result = null; result = this.doExcute(); } } ログを読む限り、TestClassBをインスタンス化して、excute()をcallしているのですが、 TestClassB内には存在しないため、スーパークラスのexcute()をcallしていると読めます。 その後、excute()の中で、「result = this.doExcute();」という記述があるのですが、これは どのような動きをしているのでしょうか。 その後の動きを見ると、TestClassBのdoExcuteを実行しているようなのですが、 具体的な動きがわらないため質問させていただきます。 @この場合、TestClassAの中でthisと宣言されているが、TestClassBがTestClassAを 継承しているので、thisはインスタンス化されたTestClassBを示す。それなのでTestClassBのdoExcuteが実行される。 ATestClassAの中でthisと宣言されているため、明示的にインスタンス化されてはいないが thisはTestClassAを示すため、自動的にインスタンス化される等して、TestClassA内の doExcuteを実行しようとする。しかし、TestClassA内にはabstructでしかdoExcuteが宣言 されていないので、自動的に実装しているものを探してTestClassBのdoExcuteを実行した。 感覚的には@な気がするのですが、thisはその記載されたクラス自身を示すような気がして 下のような考えと悩んでいます。すいませんが教えてください。
TestClassA tca = new TestClassA(); TestClassB tcb = new TestClassB(); ActionForward afa = tca.execute(); ・・・(1) ActionForward afb = tcb.execute(); ・・・(2) (1) のとき this は tca (2) のとき this は tcb
>>393 class TestClassB extends TestClassA{
public String doExcute(){ 処理ロジック };
public String doExcute2(){ふが};
}
class TestClassA{
public abstruct String doExcute();
public String doExcute2(){ほげ};
public ActionForward excute(){
String result = null;
this.doExecute2();
result = this.doExcute();
}
}
これを実行して比べてみたら?
>>391 それで何か問題あるの?
>>392 Windows固有の機能だからJavaにはなさそうだ。
>>393 もちろん@が正解。ただそのコードじゃコンパイル通らないはずだよ。TestClassAはきっとabstractなクラスだ。
>>391 少しだけOO的に書くのであれば、DBから取得してきたデータをBeanクラスに詰め、Writerで1行ずつ書き出すとベター
DBから取得してきたデータをいきなりCSVの1行にするくらいならば、データ量にもよるけど、SQLで組んじゃう方が楽じゃね?
>>387 セキュリティマネージャ差し換えるんだよ。
>>392 ActiveDirectoryというかLDAPなら。
399 :
デフォルトの名無しさん :2007/06/10(日) 20:38:21
>>396 問題はないけど
ちょいとアナログなやり方なので
他に方法があるのなら参考にしたかった
超初心者失礼します enumを使おうと思って調べたんですが、よくわかりません とりあえずJ2SE5.0なので言語レベルで実装されてるとは思うのですが enum hoge{ oerjao, idos; }; てな感じじゃだめなんでしょうか、Eclipseだと無理っぽいんですが…
>>402 普通に使えるはず。
使えないなら以下をチェック
・eclipseのバージョン
・プロジェクトのプロパティ
-> Javaコンパイラ
-> Javaのビルドパス
-> ライブラリ
>>398 System#setSecurityManager()でセキュリティを設定するとスクリプトは安全だけど、
アプリケーション全体に制限が加わってしまってそれ以外のファイルアクセスなんかが
出来なくなっちゃうよね?やっぱりわからん…
>>403 よくわからんのですが、コンパイラの準拠レベルとやらを5.0に上げたら通るようになりました
ありがとうございました
>>398 その手のスクリプトってパッケージとか持ってないと思うし、
コードベースで動作制限もできないようなきがするから、
SecurityManager でやるにしても、あんまし便利には出来んと思うけど。
>>375 とかセキュリティマネージャとか言ってる奴は馬鹿だろ。
言語レベルのセキュリティとスクリプトエンジンの実装のセキュリティは別問題。
組み込みエンジンのセキュリティ確保は組み込む人間が全部自分で必要なものを1から実装する。
これは
>>375 の仕事。
何を何処までどうするか、それをどうやって実現するか全て自分でやる。用意されてるものを使うんじゃなくて自分で用意する。
具体例でいえば"ブラウザは外部の入力は汚染されたものと仮定してセキュリティ制限下で処理してる"
""でくくった部分を
>>375 が全部やる部分。
実装例だせば、ecma-262ではトップレベルコンテキストは常に一つで一切操作出来ないのが仕様だが、
ブラウザでそれやると文書間でトップレベルコンテキストが共有されてしまうから動作変更して文書毎にトップレベル生成してる。
javaの実装であるrhinoはセキュアであることは実装対象外だから一切配慮されてなくて、
セキュアな実行環境がほしい場合は組み込む者が適切に実装しろとrhinoのドキュメントにご丁寧に書いてある。
これだけ言ってわからんならノウハウ本か他のソース読め。
バカ避けのために作られた言語なのに どうしてバカばっかり集まってくるのはなぜ?
それはおまいが一番よく知ってるんだぜ?
>>407 sun.org.mozilla.javascript.internal.Context#setClassShutter() で
Javaのクラスを遮断することができることがわかった。
さすがにRhinoがセキュリティについて一切配慮されてないなんてことはなさそう。
sun.org.mozilla.javascript.internal.SecurityController もセキュリティ関連だからもっと調べてみる
JDBCドライバを実装するのにオススメのサイトや書籍(できれば日本語) を教えていただけませんか?
>>411 JDBCドライバを実装するの?
JDBCドライバを使用してDBアクセスを試すんじゃなくて。
後者ならば、「JDBCによるJavaデータベースプログラミング」あたり。
やさしいのがいいってならば、どれでもいい気がする。
ドライバの実装は・・・少なくとも初心者質問スレじゃスレ違い
>>412 ドライバの使用じゃなくて実装です。
使用法の情報は多くあるのですが実装についてはあまりみないもので。
スレ違いですか…
どこが適切なんだろうか
>>410 そこら辺は最近追加された新しいAPIだよ。
sunのrhinoは元とは別モンの劣化品だからただ実行する以上の用途はmozilaのパッケージ使った方が良いぞ。
ドキュメントもすべて揃ってるから組み込みチュートリアルとかもあるし。
(javadocはサンプルjsコードの一部をコピペしただけ。)
悪いことは言ってないぞ?
>>413 情報無いよな、そもそも必要に迫られるもんじゃないし。
公開されていソースが一番の情報源では?
スレは作成したいドライバのDBベンダのスレのがいいかも。
初歩的で申し訳ないのですが、下のプログラムがコンパイルで通りません。 シンボルを見つけれませんと出るのですが、どういうことなのでしょうか? //Info.java public class Info { public void Info(){ int num[][]; num = new int [10][10]; System.out.print("test\n"); } } //Main.java import java.io.*; public class Main { public static void main(String args[]) { int i, j; Info a = new Info(); for(i=0; i<10; i++) { for(j=0; j<10; j++) { System.out.print(a.num[i][j]); } System.out.println(); } } }
>>416 //Info.java
public class Info {
public int num[][];
public void Info(){
num = new int [10][10];
System.out.print("test\n");
}
}
>>417 ありがとうございます。しかし、コンパイルは通ったのですが、
System.out.print(a.num[i][j]);
のところでエラーが出てしまいます。どうしてなのでしょうか?
というよりも、今気付いたのですが、コンストラクタの中の"test"って文字が表示されてないってことは、 まず、コンストラクタの中に入ってないってことですね。それはエラーも出るはず・・・;;
public void Info()はコンストラクタではない。 ただのメソッド。 ヒント:void
もし
>>417 のままにしたいなら Info a = new Info(); a.Info(); でnumを初期化
>>420-421 ありがとうございます。voidを除いたら正常に動作しました。
調べてみると、コンストラクタは返り値を持たないので型の宣言は指定したらダメっぽいんですね・・。
勉強になりました。
一昨日くらいにJAVAを始めたのですが、いまいちクラスとかメソッドとかの良さが分かりません。 まだあまりプログラミング量が少ないからなのかもしれませんが、オブジェクト指向の利点というものを 活かしきれていないような気がします。どうやってもC言語のような感じでプログラムを書いてしまいます。 そこで相談なのですが、何かこういうプログラムを作ってみるといいよって感じのはないでしょうか? こういうプログラム作ったら、クラスの凄さがよくわかるとか・・・。
>>423 システム設計するようになると良くわかるよ
>>424 具体的にはどのようなプログラムを作ればいいのでしょうか?
良く分かるために貪欲に何でも作ろうかと思うのですが。
>>425 俺はTECHSCOREのデザインパターンのページ読んだら結構納得できた
>>425 ステップ数で300くらいの処理を3−4程度のクラスに分割してみる。
自分の経験からだと、CSVの読み書きクラスとかほど良いボリューム
よくわからないので質問させてください。 class Example1{ public static void main(String args[]){ for(int i = 0; i < 10000; i++) System.out.println("teswt"); } } というプログラムをjarにまとめてダブルクリックで実行できるようにしました。 ところがダブルクリックしても出力されません タスクマネージャーでプロセスを見ると一瞬javaw.exeが出るので実行はされていると思うのですが、 コマンドプロンプトが自動で起動されたりはしないのでしょうか? もし自動で起動させる方法があるのなら教えてください。
>>428 それは実行されて、プログラムも終了しただけかと。
CUIならコマンドプロンプトから実行したら?
>>429 やはりコマンドプロンプトから実行するしかありませんか。
実はIRC用のBOTを作っていて友人に配布することになりダブルクリックだけで実行できたほうが便利かなと思ったのです。
がんばってGUIをつけることにします。
質問に答えていただきありがとうございました。
class Example1{ public static void main(String args[]){ for(int i = 0; i < 10000; i++) System.out.println("teswt"); } Thread.sleep( 10000 ); }
432 :
デフォルトの名無しさん :2007/06/11(月) 23:18:29
1.4でThreadを安全に停止するメソッドってありますか? stopは推奨されないみたいなので。
>>432 強制?
無限ループのThreadを終了?
>>433 強制です。
ロック最中でもロック開放してThreadを停止したいんです。
>>434 どうしてstopが非推奨になっているかを考えれば代替手段もないことに気づくと思うんだが・・・
Java アプレットの話です。どうして表示結果があんなにキタナイの。 図形の座標の計算が変だと思う、円周をどうやって表現するの? そこで間違っているから、Java は隙区内。 こんなにキレイな円と多角形の重なりも簡単、とかいうなら、 ひとつ アプレット の例を作って見せてね。
URLConnection時のクッキー書き込みについて教えて頂きたいです。
Webページにクッキーを固定で書くだけのテスト用ページを作成しました。
※
http://*****/cookie.php <?php setcookie("test","123",time()+60*60*24); ?>
このテスト用ページに
URLConnectionまたはHttpURLConnectionで
アクセスするとクッキーが書き込まれないのですが
java(URLConnection)では、クッキーは書かれないのでしょうか?
それとも何かクッキーを許可するような設定値があるのでしょうか?
ブラウザのURL欄に上記テスト用ページを直打ちすると
正常に書かれるのでテスト用ページの処理は問題無いと思うのですが。。
アドバイス頂きたいです。よろしくお願いします。
こんなのどうだろ。開発時間13分 import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.util.Random; import javax.swing.JFrame; public class Circle { public static void main(String[] args){ JFrame frame = new JFrame(){ @Override public void paint(Graphics g){ g.clearRect(0, 0, getWidth(), getHeight()); ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Random r = new Random(); for(int i = 0; i < 20; i++){ Color c = Color.getHSBColor(r.nextFloat(), 1, 1); g.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), 100)); int s = 50 + r.nextInt(150); g.fillOval(r.nextInt(getWidth() - s), r.nextInt(getHeight() - s), s, s); } } }; frame.setSize(640, 480); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } }
439 :
デフォルトの名無しさん :2007/06/12(火) 00:23:19
あっ、438は436向けね。
そうか、「アプレットの例」か。さらに簡単になるな。たびたびすまん import java.applet.Applet; import java.awt.*; import java.util.Random; public class CircleApplet extends Applet{ @Override public void paint(Graphics g){ g.clearRect(0, 0, getWidth(), getHeight()); ((Graphics2D)g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); Random r = new Random(); for(int i = 0; i < 20; i++){ Color c = Color.getHSBColor(r.nextFloat(), 1, 1); g.setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), 100)); int s = 50 + r.nextInt(150); g.fillOval(r.nextInt(getWidth() - s), r.nextInt(getHeight() - s), s, s); } } }
ていうかjava2dの描画精度のことなら6ですでに改善されてるだろうが。 わざわざ釣られる必要はないよ。
所詮、ドット絵なんだからアンチエイリアスしないとキレイな曲線にはならないでしょ
C言語で typedef struct _header { unsigned char opcode; unsigned long oprand; } header; memcpy(&header, src_ptr, sizeof(header)) unsigned char 1byteリトルエンディアン unsigned long 4byte リトルエンディアン みたいな感じでバイナリファイルのヘッダ解析とか したりしますよね? これってJavaでどうやって書けばいいんですか? 教えてください。
java.ioやNIOつかってストリーム指向で。 MP3やoggのデコーダのソースは参考にならないかい?
445 :
デフォルトの名無しさん :2007/06/12(火) 09:06:45
ど忘れした。 読み込み中等で表示されるGUI部品で青い部分が伸びていくやつ何て名前だっけ? シーケンスじゃなくて・・・あぁ・・・思い出せない。
447 :
デフォルトの名無しさん :2007/06/12(火) 09:10:12
よい解決方法があれば、教えて下さい。 FTPClientで日本語ファイルを転送しようとしたところ、 ファイル名が文字化けしてしまいました。 日本語ファイルは対応していないのでしょうか? ちなみに転送元、転送先ともにSJISです。
GUIでプログラムを作ろうと思ったら何を勉強したらいいのでしょうか…
450 :
デフォルトの名無しさん :2007/06/12(火) 16:25:32
>>448 FTPClient?それはどこのパッケージ?
>>449 awt、swing、(swt)
>>450 素早い解答ありがとうございますw
これから勉強してみます。
>>448 sunのjdk6にはそんなもん存在せんからエスパーだがリーダー見直せ。
それかnio使って自分で縁コード汁!
>>450 ,452
org.apache.commons.net です。
commons-net-1.4.1.jarを使ってます。
なるべく労力を少なくしたかったのですが、
ダメっぽいですね。
ありがとうございました。
失礼します Labelの仕様について質問なんですが、setforegroundで文字の色は変わるんですが setbackgroundで背景の色が変わりません ボタンの場合foreback両方問題なく色を変えられます Labelっていうのは四角い領域だと理解してたんですが、間違ってますか? なぜsetbackgroundで色が変わらないんでしょうか?
変わるよー ラベルのサイズが小さいんじゃない?
opaque
>>455 変わりますか…
サイズはsetboundsで40*40確保してるので問題ないと思うんですが…
間違えた、60*40でした。関係ありませんが一応
459 :
デフォルトの名無しさん :2007/06/12(火) 20:16:42
>>459 やってみましたがダメでした
もちろんForegroundでは色が変わります
462 :
デフォルトの名無しさん :2007/06/12(火) 21:04:58
>>463 そこをなんとか・・・・
友達から頼まれて・・・俺もまったくわからないのに・・。
今日中に仕上げてしまいたいんですー><
>>462 ゆとり教育キタ━━━━━━(゚∀゚)━━━━━━ !!
まぁ、2ちゃんで聞けば出来るだろうと思って引き受けちゃいました。。。 お願いしますー!
CGIっすかね?^^;
>>461 色指定するとき透明度の設定ちゃんとしろってことでしょうか?
今透明度0でやってみましたが無理でした
>>467 2ちゃんで宣伝した方がCD売れるかもよ
>>471 透明度のところopaqueにしても無理でした
>>462 Adobe PageMillか・・・
懐かしいな
474 :
デフォルトの名無しさん :2007/06/12(火) 22:21:55
今度学校でjavaやるんだけどリナックスでしなきゃいけないんだけど窓 となんか違うとこあるの?めんどくさい?一応Cなら少しやってて窓使ってます
>>454 問題なく変えれる。ソースを全部晒せとは言わない。必要十分に晒せ。
Label l = new Label("ABC");
l.setForeground(Color.green);
l.setBackground(Color.red);
Frame f = new Frame();
f.add(l);
f.pack();
f.setVisible(true);
>>476 俺どんだけ親切なんだか・・・
つ setOpaque(boolean)
>>479 できました…
懇切丁寧にありがとうございました
ProcessBuilderでlhacaの起動でフリーズすると質問したものです。 やはりlhacaの問題でした。 lhasaに入れ替えてプログラムを実行したところ、正常に終了しました! wgetの動きも怪しかったのですが、バックグラウンドで動作するオプションを入れたところ 問題なく動作するようになりました。 これで漏れの壮大なアプリ作成の一歩が始まった感じです。 いろいろ答えてくれた皆様、ありがとうございました!
log4j とかを使って syslogd に出力すると ログの方に <139> とか <142> という数字が出てくるのですが ERR とか INFO とかに対応しているようなのですが 番号との関係一覧見たいなものを探しても見つかりません どこかにありますか?
すみません、基礎的なことでわからないことがあります swingを使うときmainのあるクラス?をJFrameのサブクラスにするみたいなんですが 理由はなんでしょうか? 初心者は黙ってJFrame継承しとけっていうならそうします。
俺はそうしない。
>>483 mainのあるクラスはプログラムの実行開始場所。
そのクラスがJFrameのサブクラスである必要は無いし、しない方がいいと思う。
JFrameのサブクラスでアプリケーション作成したならば、それを実行するだけのクラスを作る方がいいと思う。
JFrameを継承するのか、継承しないでnewしてシコシコとコンポーネントを追加していくのもあり。
ただし、その初期化処理は誰がやるんだね?
JFrameにコンポーネント追加したり、基本設定を行わせるクラスを作成するのも手だけど、無理に切り離す必要はないと思う。
だから、よくあるコーディング方法としては、コンストラクタまたはコンストラクタから初期化メソッドを呼び出して設定を行う。
>>485 ありがとうございます
別に継承が必須ってわけではないんですね
JFrameのインスタンス.show();このメソッド推奨されてませんが、 代わりになるメソッドとか有るんですか?
setVisible
489 :
デフォルトの名無しさん :2007/06/13(水) 15:10:37
setVisible
>>487 APIのリファレンスを読む習慣をつけておいた方がいいと思う。
非推奨メソッドについて替わりになるものがあれば大抵書かれてある。
>488-500 情報thx
ダウンロードして使えよ
>>492 いつも思うんだけど
なんでサンプルプログラムも一緒に載ってないのかなぁ
================================
メソッドの詳細
actionPerformed
void actionPerformed(ActionEvent e)
アクションが発生すると呼び出されます。
================================
これじゃ何も分からんよ。
確かにその通りだし、知ってれば使えるんだけどさ。
javaアプリケーションがダイアログを表示した場合に、 それを検知し閉じる処理をする別のjavaアプリケーションを作りたいのですが どういうクラスを使いコードを書けば良いのか分かりません。 キーワード、アプローチの仕方を教えてください。
>>497 別のアプリだと、多分ネイティブの機能が必要でしょうね。
JavaアプリでJNI使うとかで書くと大変だから、ネイティブだけで
作った方がいいような気がします。
で、その実装はやはりOS/ウィンドウマネージャなどによりますね・・・
Javaプロセス間通信みたいな話ってどうなってるんでしたっけ?
両方自分が作ったものならRMIとかで
500 :
デフォルトの名無しさん :2007/06/13(水) 21:11:44
ウィンドウアプリケーションってのを作ろうとしていて、 とりあえずは足し算アプリを作りました。 そして、ウィンドウに表示するところまでは漕ぎつけたのですが、 ここからが分かりません。 今、僕はクラスファイルをコマンドプロンプトで実行させているんですが、 これをダブルクリックで実行できるようにするには、どうすればいいのでしょうか?
MANIFESTと一緒にjarにする
drawLineの線をPixelGrabberで取得した色をつけたいのですが、 setColorはどのようしたらいいでしょう?
504 :
デフォルトの名無しさん :2007/06/13(水) 23:01:21
すいません、今プログラマになろうとしたら 言語はJavaを勉強するのが一番なんですかね?。 唐突な質問ですいません。
>>504 その通りです
でも、プログラマにはならない方がいいです
506 :
デフォルトの名無しさん :2007/06/13(水) 23:17:05
なんでですか?
508 :
デフォルトの名無しさん :2007/06/13(水) 23:33:45
>>507 ごめんなさい。そしてありがとうございました。
>>504 各言語にはメリットデメリットがある
何が一番かは何を作りたいかによる
>>506 板違い承知で一言だけ。
趣味でやっているうちが華。
511 :
デフォルトの名無しさん :2007/06/14(木) 01:22:05
512 :
デフォルトの名無しさん :2007/06/14(木) 05:15:08
こういうのが欲しいんですけど作ってくださいっていうのはダメですか? フリーのソフトを探してもないみたいで
515 :
デフォルトの名無しさん :2007/06/14(木) 06:12:49
ok
516 :
512 :2007/06/14(木) 07:39:00
色に関したソフトで色を足して教えてくれるものはあるみたいですが 欲しい色があって自分の持ってる絵の具で何を足したらいいのか教えてくれるものがほしい 例えば 朱色+?=赤 朱色:持ってる絵の具 赤色:欲しい色 ?色:朱に足す絵の具 マンセルカラーという分布図を見ればなんとなく見当はつく気がするんですが問題は 持ってる絵の具はたかだか12色とかぐらいだからそれでわかんなくなっちゃう ちなみに実際の絵の具はマンセルの表からつくられているらしくて 絵の具の番号はそれによって付けられてるらしいです
>>516 RGB での合成?
絵の具の割合とかって話になると感覚的な分野になるから難しいような気がする。
518 :
512 :2007/06/14(木) 08:50:56
519 :
デフォルトの名無しさん :2007/06/14(木) 09:37:47
質問失礼します。 今Javaでゲームを作っているのですが、 著作権を考えて画像や音声などのファイルを暗号化(圧縮?)したいと思っています。 配布されているゲームは、複数のファイルを一つにまとめてるのが大半ですが、 JavaでそれらのファイルをJarに含めずに、同じような事をするにはどうすればいいのでしょうか? 参考になるサイトでもかまいませんので、教えていただけると嬉しいです。
>>519 自分でフォーマットを考えオリジナルのフォーマットで一つにまとめる。
例えばZipStreamとCipherを組み合わせたり
単純にByte配列を合体させてプログラム内部で分割するバイト数を記述とか
プログラムのdecompileにも注意
522 :
497 :2007/06/14(木) 13:30:59
>>498 ,499
レスありがとうございます。
他人が作った(ソースの無い)ものなので、RMIの実装は難しいです。
ということはネイティブなプログラムを書く事になりますが、
C言語には暗いので、なにか代替の方法があれば教えてください。
OSはWindows XPです。
>>522 別にCでなくても得意の言語を使っても構わんよ
WindowsならDLLを作れればいいんだから
524 :
516 :2007/06/14(木) 16:44:00
>>521 了解しました
マンセルカラーを調べてみましたが青が青に見えない色が使われているとか問題があるみたいです
確かに単純ではないのかもしれません
色の足し算が出来るなら引き算も出来るのかと思ったんですがそうではないのかも
一応聞いてみます。ありがとうございました
525 :
デフォルトの名無しさん :2007/06/14(木) 18:12:11
卒研でタイピングゲームを作成することになったんですが、 GUIなどについてのオススメの参考書などありましたら教えてください。 サーブレットでの作成を考えています。よろしくお願いします。
>>525 ゴメン。どうしたいのか分からないw
GUIって言ってるけどAjax?だったら、スレ違い。
GUIとサーブレットという単語に関連がなくてサーブレットを
使ってサーバで記録を付けるという話ならまぁ分からんでも無いが・・・
・・・卒業に一抹の不安がありますwww
GUIは、JDKについてくるSwingSetを見たら基本的なコンポネントが分かるかな。
それに、イベントモデルとかをWebのページで勉強すればOK。
キーワードは、"AWT イベントモデル" あたりで。
>>526 ありがとうございます。
いまいちjava自体も分かってないんでこれから勉強します。
528 :
デフォルトの名無しさん :2007/06/15(金) 15:13:04
Java プログラムで jar ファイルを作成することはできるでしょうか? 読み取りなら JarFile クラスでできそうですが。。。
529 :
528 :2007/06/15(金) 15:16:29
JarOutputStream ですね。
530 :
デフォルトの名無しさん :2007/06/15(金) 16:59:21
PNG画像データが InputStream に入っているときに、 BufferedImage を構築するには、どうしたらよいでしょうか?
>>530 javax.imageio.ImageIO#read(InputStream)
532 :
497 :2007/06/15(金) 17:31:43
>>523 そうですか〜
別の言語のスレで質問してみます。
ありがとうございました。
C言語でいう、 int v[10]; int* v2 = &int[5]; を、Javaでやりたいんですが、どうやったらいいですか? int[] v = new int[10]; int[] v2 = &int[5]; <---ここください。
↑めちゃ間違い。訂正すまん。 int v[10]; int* v2 = &v[5]; を、Javaでやりたいんですが、どうやったらいいですか? int[] v = new int[10]; int[] v2 = &v[5]; <---ここください。
そういう使い方するなら Integer[] でいいだろ
>>536 それ言うなら Integer[] じゃなくて
List<Integer> と List#sublist じゃなかろーか
以下で定義されるブロック構造を導入する事で何が可能になり、それはプログラム開発において何に寄与するか? A block is a sequence of statements, local class declarations and local variable declaration statements within braces. Statement :: Block | ..... Block ::= { BlockStatementsopt } BlockStatements ::= BlockStatement | BlockStatements BlockStatement BlockStatement ::= LocalVariableDeclarationStatement | ClassDeclaration | Statement
539 :
デフォルトの名無しさん :2007/06/16(土) 00:02:17
ぬるぽ ぬるぽ ぬるぽ ・・・
541 :
534 :2007/06/16(土) 01:33:19
>>535-537 どもです。
実際には、Vector3[] v でつかっているですが、要素ごとにVector3をnewする
のが痛いので、値型であるfloatの配列で new float[length*3]で領域を確保して、
たとえば v[index*3].add( v[index2*3] )とかやりたいんです。
listはきつです。ランダムアクセスするんで。
542 :
デフォルトの名無しさん :2007/06/16(土) 01:36:18
JavaMailについて教えてください。 携帯のメールに text/htmlタイプで送信したのですが、 受信側ではtext/plainとなってしまい、リンクにアンカーが付かなくて困ってます。 しかし、本文の最後にYahooから勝手に付いてくるフッターのようなものがあるのですが それにはアンカーが付いてます。 text/plainでもアンカーを付けることができるのでしょうか? アンカーが付けたいだけなので、text/plainでもよいのならそうしたいのですが・・
>>538 BNF表記で言語の構造を定義することで何が可能になり何に寄与するか?
って、逆に言うと、言語の構造を定義しないでどうやってプログラムできますか?
>>541 javaのリストはただの動的配列だぞ。歴史的にはベクタの非同期版。
ランダムアクセスマーカーがついてるから一定時間以内のランダムアクセスを保証する。
マーカー付きでシーケンシャル・ランダム両アクセスが可能な場合
一般的にはアルゴリズムが切り変わってるから
541が想像してるのとは別物。
ArrayList使え、つーかjavadoc読め。
IBMのPCにバンドルされているRuntimeと SunのRuntimeって何か違うの?
ランダムならHashedArrayMap
548 :
542 :2007/06/16(土) 10:57:05
549 :
548 :2007/06/16(土) 10:58:02
すみません、投稿にアンカー付いちゃったm(_ _)m
サーブレット名の前に/servlet/をつけてないんじゃないの
552 :
550 :2007/06/16(土) 14:53:06
WEB-INF/classesにHelloWorld.classはあるのか?
web.xml の設定がまずいんだろう。私もはまったことがある。 URL のマッピングがうまくいっていないんだろう。
import java.util.Scanner; と書くと、「シンボルが解決できません」と出てエラーになってしまいます。 J2SEのバージョンは1.5なので、Scnanerが実装されていないはずはないのですが・・・。 何故だか分かる方いますか?
Scnaner→Scanner
>>556 すいません、そこはただのタイプミスです(^-^;
>>555 ・javacのパスが1.5を指してない
・eclipseのビルドが1.5に設定されてない
>>558 その通りでした・・・1.4.12のままでした。
助かりました、ありがとうございます。
)553 置いてます。 >554 マッピングですか…。 xmlはよくわからないんですけど調べてみます。
jarのアプリから同階層のファイルのパスが取得できずに困っています。 apl │ readme.txt │ └─work.jar test.class このようなJarアプリの構成の場合、readme.txtはwork.jarと同じ階層なので ./readme.txtと指定すれば良いと思ったのですが、読みにいけません。 test.classから見た場合を考え ../../readme.txtとしましたが、やはり読みにいけません。 System.getProperty("user.dir")を使用すればよいだけなのですが なぜファイルが見つけられないのか困っています。 どなたか教えてください。
"readme.txt"
>>561 設定次第だけど、多分ソレは見えない。
アプリから読みたい場合、jarを自分で作っているならば、jarのルート(デフォルトパッケージ)の所にreadme.txtを置いてjarにする。
Webから読みたいならば、readme.txtをjspとか置いてある公開されているディレクトリに配置しなきゃダメ。
文字セットをMS932に指定して出力をしたいのですが、やり方がいまいちわかりません。 少しは考えて以下のソースになったのですが、ダメです。 もっと複雑な手順が必要でしょうか? while (true) { int c = stream.read(); if (c == -1) { stream.close(); break; } byte b =(byte)c; String s = String(b,"MS932"); System.out.print(s); }
>>564 バイトで読み込んで文字コードを変換したいってこと?
File file = new File("text.txt");
FileInputStream input = new FileInputStream(file);
byte[] bytes = new byte[file.length];
input.read(bytes);
String string = new String(bytes);
コンパイラは通してないけど、こんな感じ。
文字コードはデフォルトでないならば、Stringのコンストラクタを調べて変換かけてくれ。
Javaランタイムについて質問なんですが、"J2SE Runtime Environment 5.0 Updata 6"みたいなのはプログラムの追加と削除から消していいんでしょうか。
>>566 オタクの環境で必要かどうかなんて、知らんがな。
他にどんなソフト入っているかとかによるから答えようがない。
なんかテキストファイルを隔行で読み込んでしまうんだが、なぜ? Arraylistに歯抜けになって格納される・・・ public ArrayList readfile(String path){ ArrayList<String> list = new ArrayList<String>(); try{ BufferedReader br = new BufferedReader(new FileReader(path)); while (br.readLine() != null){ list.add(br.readLine()); } }catch(IOException e){ e.printStackTrace(); } return list; }
>>568 while (true){
String line = br.readLine();
if(line == null) break;
list.add(line);
}
570 :
568 :2007/06/17(日) 00:38:59
index指定していなかったorz
571 :
デフォルトの名無しさん :2007/06/17(日) 00:50:24
Javaのjava.net.URLを使用して、Webサイトの情報を集めるプログラムを
作成したのですが、WindowsとLinuxで速度が異様に異なります。
プログラムはこんな感じのものです。
※関連ありそうな部分だけ抜き出しています
while(継続条件){
URL stockURL = new URL("
http://アドレス ");
in = new BufferedReader(new InputStreamReader(stockURL.openStream(),"EUC_JP"));
while ((line = in.readLine()) != null) {
//処理
}
in.close();
}
このようなイメージのプログラムをスレッドで100個同時起動しているのですが、
Windowsだと2時間くらいで終わる処理がLinuxで実行すると1時間で5%くらいしか
完了していませんでした。
Linuxのシステムモニタを見ると、通信がある程度行われると全く行われない
状態が数分続き、その後にまた通信しているようなイメージに見えました。
※通信していない間はCPU使用率も落ちる。
Linuxのシステムモニタとログを出力した際にURLオブジェクト生成のあたりで
止まっていたりするので、通信系だと思うのですが何か原因がわかる方いましたら
ご教示願えませんでしょうか。
プログラムよりもLinuxの設定なのかもしれませんが・・・。
よろしくお願いします
>>571 Linuxはあまり詳しくないけど、どのLinuxを使っているかは書くべきじゃないか?
テストコードとして単純なソケットをつないで見るのはいかがだろうか?
String[] address = 略
while(int i = 0; i < 100; i++){
Thread thread = new Thread() {
public void run() {
Socket socket = new Socket(address[i], 80);
System.out.println("Connect!");
Thread.sleep(1000);
socket.close();
}
};
thread.start();
}
1秒置きにしかConnectできないとなれば、ソケット通信自体に制限がかかっているとしか考えにくいかな。
573 :
568 :2007/06/17(日) 01:17:44
>>569 解決しました!
ありがとう。
でも同じような処理なのになんでだろ・・・
>>568 ヒント: br.readLine() の呼び出し回数
TOMCATとMysqlを連動させようとしてます。 ちゃんと\libにもmysql-connector置いて環境変数も通ってるはずなんだけど、 Error at SQL connectionになります。 プログラム自体は間違ってないはずなんだけど、かれこれ数時間格闘してます。 TOMCATも他の簡単なものでは動いてます。 わかる方いたら教えてください。
>>575 設定が間違っているだけだろう。
Tomcat、MySQL、OSなどの各バージョン、それからTomcatとMySQLは同じマシンなのか違うマシンなのか・・・など
まず、全ての環境を書け、アホ
1. 単純なJDBCの接続はできるか?
2. Tomcatの管理コンソールからは?
Javaでドロップレット(アイコンにファイルをドラッグ&ドロップして作業させる)を作ることはできますか? もし参考になるサイトをご存知でしたら教えていただけませんか? よろしくお願いします。
先週からservletによる課題作成を始めたのですが、 public void doGet(HttpServletRequest req, HttpServletResponse res)〜 といったメソッドを使い、JSPへ変数の値を受け渡すことは出来たのですが、 画面遷移時にreqとresの値を初期化していない、という指摘を受けました。 ServletConfigなどを調べ、初期処理メソッドを作り、super.init(conf); といった感じで書いてみたのですが、System.out.printlnで調べてみると、 reqもresも全く初期化されていませんでした。 req == null; のようにするとエラーが起きてしまいますし、 どうすれば初期化出来るのか、どのメソッドが正解なのか分かっていません。 何かしらヒントを頂ければと思います。宜しく御願いします。
579 :
575 :2007/06/17(日) 11:45:11
>576 すいません。 環境は OS XP HOME TOMCAT5.0.28 Mysql4.1 j2sdk1.5.0_02 mysql connector/J 3.1.7 でTOMCATもMysqlも同じマシンです。 単純な接続もできず、 コンソールのユーザーデータソースは1つもない状態です。 web.xmlの設定や、server.xmlの設定が調べていてもよくわかりません。 多分Mysqlのパスがうまくいってないんだろうとは思うけど…。
>>577 start "" "対象jarのパス" %1
というバッチファイルを書いてそれに対してエクスプローラからファイルをドロップすれば
mainのargs[0]でファイルパスが取得できるよ
もっといい方法もありそうな気はするけど
Java で Windows の service は作れますか? コントロールパネルのサービスから起動・停止コントロール出来ますか?
できたらすごいよね
デーモンというかクライアントに機能をサービスするだけなら出来る。 いわゆるサービスにするためにはサービスマネージメントAPIを実装 する必要があるからJNIでも使うしかないんじゃないかな。 汎用的なサービス化ツールも無い訳じゃないけどね。
それなら初めからCで書けば良いじゃないか
回答いただいたみなさんありがとうございます 質問の仕方が悪かったので仕方ないのですが もう Java で単独で動くところまで出来上がってて それを Windows 上でサービスにしてインストール 出来たらいいなと思って質問しました bat ファイルでも作って起動時に実行でもいいんですけど もう少しスマートな方法は無いかな・・・と
Cでラッパー書けばよくね?
それなら初めからCで書けば良いじゃないか
よくよめ。もうJavaで出来ちゃってんだよボケ
じゃぁ漏れがサービス化ラッピング用の AbstructInteface創ってやるから お待ちください
System.out.println("Format:"+channel.getFormat().toString()); channel.getFormat().toString() こんなにドットが続く意味が分かりません。 printlnでメソッドを引数に出来るのですか? 初歩の質問ですいません。
printlnが引数にとっているのはメソッドではなくメソッドを評価した値です
>>591 System.out.println("Format:"+channel.getFormat().toString());
↓
String str = "Format:"+channel.getFormat().toString();
System.out.println(str);
>>591 >>592 なるほど。やっと意味が分かった気がします。
返信ありがとうございます。
channnel.getFormat().toString()
という記述は、channnelというオブジェクトに対してgetFormatというメソッドの中のtoStringというメソッドを使って、それを評価した値がstrに格納されるということでしょうか?
なんか変な解釈をしてそうですが。
ちがいます どうみても変な解釈です 本当にありがとうございました
>>595 ですよね。
getFormat()とtoString()の間を結ぶドットの意味が分からないというのが問題点です。
どう見ても勉強不足です。
本当にアリガトウございました。
598 :
デフォルトの名無しさん :2007/06/17(日) 20:48:13
人にjarファイルを配布する際、 swtって外部DLLとか持ってこないといけないっぽいけど、 swingだと何も用意しなくていいの?
>>598 SWTも月末に出るver3.3だと外部dllは必要ない。
>>596 channnel.getFormat().toString()は、
Object obj = channnel.getFormat();
obj.toString();
とおんなじ
>>600 今度こそ本気で分かりました。
toStringの意味が分かってなかったのが原因だったようです。
ご丁寧にも返信くれた方ありがとうございました!
>>586 Microsoft Java Language Conversion AssistantでC#に変換しちゃえ
603 :
598 :2007/06/17(日) 23:05:40
>598 うわマジサンクス 諦めてswingで画面作り直してたけど、SWTでもなしでいけるようになるのか…
informaってインストールはどうすればいいのでしょうか? サイトからダウンロードはしたのですが……
605 :
デフォルトの名無しさん :2007/06/18(月) 00:49:10
packageとimportの意味が調べてもよく分かりません。教えてください。
調べて分からない人間に教えて分かるとは思えない
public class GuessServlet extends HttpServlet{ public void doGet( HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException{ response.setContentType("text/plain; charset=Windows-31J"); これのresponse.setContentTypeというのは、サーバーからクライアントに送られる文字の エンコードにだけ関与しているということでしょうか?
何でそう思ったのか書け
>605 簡単に説明。extendsは別のクラスにあるメソッドを使うための儀式みたいな物。 packageはプロジェクトが大規模になるとファイルが散乱して美しくない&再利用しにくい ということでフォルダーを作ってその中にファイルを入れてしまおうというシステム
みすった^^;extendsじゃなくてimportな。
611 :
577 :2007/06/18(月) 10:15:30
>>581 ありがとうございます
でも自分にはまだ難しくて解りません(´・ω・`)
612 :
デフォルトの名無しさん :2007/06/18(月) 19:37:02
swingで自前でダイアログ作るのってどうすればいいのでしょうか・・・? dialog.show();を使ったら推奨されないとか言われてeclipseにおこられてしまいました・・・。
>>615 RMIは単なる中継に使って、別プロセスで本体を上げていてはどうか?
RMIのシグネチャの中にスレッドを特定するキーを持たせておいて
RMIの機能は単なるディスパッチャ。
やりたいことが何かわからんのでこれくらいしか・・・
>>615 まんま、簡易Servletでも作成してしまえばいいと思われ。
イベントのディスパッチスレッドがリクエスト毎にスレッド立ち上げればいいでしょう。
618 :
デフォルトの名無しさん :2007/06/18(月) 23:51:43
ファンクションキーでタブやフレームをきりかえれるような処理ってできますか? F2を押したら現在のフレームを閉じて新しいフレームを開く みたいな
>>618 ヒント: java.awt.Event
Wikipediaを読んでいたら「Javaでは意図せずオーバーライドしてしまう問題がある」というような記事が 書かれていたんですが、この問題はいつごろから指摘されたものなんでしょう? 言語設計時にすでにわかっていたんでしょうか?それとも後から見つかったものでしょうか?
>>620 意図しないオーバーライドはあまり問題になることはない。
問題になるのはオーバーライドしたつもりがしてなかったケース。
この対策としてjava 5から@override が追加になった。
>>621 実際はそうなんですか。
「してるつもりがしてなかった」ってのは気をつければ防げますけど
「するつもりがないのにしていた」のはいくら気をつけても防げないので問題が大きそうに感じたんですが。
てことは設計時に気づいてたけど問題が小さいので気にしなかったって感じなんですかね?
Javaに限ったことではないんじゃねーか? オーバーライドをサポートするすべての言語で起こりうる問題だとおもわれ。
>>620 意図しないオーバーライドが問題になるケースって具体的にどんなん?
オーバーライド失敗には、メソッド名のスペルミスとかあるけど。
625 :
620 :2007/06/19(火) 01:41:47
>>623 例えばC#だとoverrideの指定が必須らしいんでそういうのは起こらないそうです
>>624 本来呼ばれるはずのないタイミングで呼ばれる可能性があるのでは?
質問。 tとhに値を入れてその計算の結果に基づいて、いくつかの言葉から 1つを表示するには(例えば、暑い、寒い)どうすればいいですか? 今は結果以外のも表示されてしまっています
>>626 もう少し常人にわかるように質問してくれ
例えばt=15 h=12 t+h<25なら 暑い t+h<10なら 寒い 今回は27なので暑い と表示させたいのに寒いも表示されてしまう
暑い=0、寒い=1なら対象の数を2で割れば余りが0か1になるからそれで表示できる。 こんな感じ?
計算結果を使って表記したいんですよ
>>630 計算結果ってどういう根拠の計算をするんだよ。適当でいいのかw
(t + h) % 2 とか
例えば tが湿度 kが温度 不快指数を出す 結果から 暑いとか寒いとか表示させる
じゃそうすればいいじゃん。
わからんから、
>>628 の例で行けば
例えばt=15 h=12
t+h<10なら 寒い
そうでないなら 暑い
暑いとか表示させたい種類が6つ
else ifって言えばよかったんだ。失敗した 一応言うけど中学生じゃないよ
>>625 >本来呼ばれるはずのないタイミングで呼ばれる可能性があるのでは?
それオーバーロードじゃね?
いやオーバーライドでしょ 意図せず呼ばれるっていう例じゃないけどこういう時問題になりそう Hogeを継承したSpecialHogeがあってSpecialHogeのほうに状態の正当性を表明する AssertValidメソッドがあったとする それとは無関係にあとからHogeのほうにAssertValidメソッドが追加されたとする するとSpecialHogeのAssertValidはあとから追加されたHogeの同名メソッドをオーバーライドしてしまって HogeのAssertValidが呼ばれなくなってしまう みたいな。
スーパークラスのメソッドも確認せずに継承して意図しないオーバーライドってどんだけ間抜けな奴なんだ
>>625 いや、C# のoverride指定が必須で問題が起こらないってんなら、
Javaでもオーバーライド禁止したいなら
メソッドに final指定しときゃ良いんだから問題は起こらないと言える。
>>639 スーパークラス側で後からメソッド追加したらたまたまサブクラス側に同じシグネーチャの
メソッドが既にあったっつーことでわ?
>>640 釣りか?
オーバーライドを禁止してどうする。
>>642 オーバーライドを禁止すりゃ「意図しないオーバーライド」は起きない。至極当然の話。
クラス A でオーバーライドするためには final を削除する必要がある。 しかし、その状態ではクラス B でその関数を意図せずにオーバーライドする可能性がある。
>>644 上段は「オーバーライドされたくないメソッド」を「意図してオーバーライドしたい」ケースだから別の問題。
下段は意味がわからん。
>>638 とはいっても現実にそーゆー問題が多発しているかというと???
>>624 が言うようなスペルミスはかなり多発してるけど。
>>645 「意図してオーバーライドしたい」メソッドは final にできないが、
そのメソッドはいくらでも「意図しないオーバーライド」が出来てしまう、ということだ。
648 :
デフォルトの名無しさん :2007/06/19(火) 08:51:54
>>647 finalがつかないなら、親クラスはオーバーライドされても良いと意思表示してる。
非finalなら子クラスが知らないうちに「意図しないオーバーライド」する可能性はあるものの、
オーバーライドしたら、いまどきのIDEなら表示してくれるので危険性はかなり低い。
>>638 でもそれ実際には問題になりにくいよな。
HogeのAssertValidが状態の正当性を表明するものなら
状態の正当性を表明するSpecialHogeのAssertValidに上書きさたからといって
問題になるのは考えにくいわけで。
状態の正当性を表明以外でAssertValidって名前にするのも考えにくいし……
C#の場合は非virtualのメソッドや隠蔽を盛り込んでしまったんで、 あの辺を厳密にせざるを得なかったのだと思う。 javaの場合は現状のままで混乱もない。単なる言語の設計思想の差だ。
651 :
616 :2007/06/19(火) 10:21:50
>>616-617 遅くなりましたがありがとうございます。
自分も大体同じ案を考えたのですがそれが普通か分からず、
RMIオブジェクトの生成あたりをカスタマイズする方法が
もしかしたらあるのかも、と思い質問させて頂いていました。
まずはその線で行ってみます。
>>648 override があればその危険性を排除できる。
final によるコントロールは override の代替にはならんよ、ということ。
素直に言語仕様が甘かったと認めればいいのに C#よりJavaの方が先発だから仕方ない
甘かったというよりは後発がより優れているのは当然。 後発で先発と同じ失敗をしたらたたかれるだろw
C# に typedef がないのは(ry
>>652 > override があればその危険性を排除できる。
うっかりoverride付け忘れの危険性もあるわけで、どっちもどっちじゃね?
まぁ、普通は警告見れば気付くだろうけど
それ言ったら「意図しないオーバーライド」も相当間抜けな話だし。
たまたま話の流れがそれでヒートしただけでは・・・
660 :
デフォルトの名無しさん :2007/06/19(火) 13:20:48
JAVAやってみたいがEclipseをIDEに使う場合 他に何を入れればいいかが判らない J2SEいれてそれでOK? JavaSwingとかはJ2SEに一緒に入ってるの?
>>660 J2SEも含めて何もいれる必要はない。
しいて言えば、基本APIドキュメントの日本語版程度。
662 :
デフォルトの名無しさん :2007/06/19(火) 13:45:21
>>656 override がないとエラーなんすけど・・・
>>663 今のところJavaではオーバーライドするのにoverrideなんてものは要らん
他の言語の話なら他所でやってくれ
つーか >するとSpecialHogeのAssertValidはあとから追加されたHogeの同名メソッドをオーバーライドしてしまって こうなる前にまず、リファクタリングでスーパーのメソッドに移動してると思うんだが。 ただの不注意、誰でもあるからどうしようもない。
現実的に起こりえるのは、オーバーライドしちゃいけないメソッドをオーバーライドしちゃったというケースだからね。 finalがあるのでこれを防ぐってのがJavaの設計思想なわけだ。 orverrideと書かなきゃオーバーライドできないってのもありだけど、ダメと言っているのにオーバーライドする馬鹿がいるとしたらJavaのが優秀w
>>663 > 10.2.2 The new modifier
> A class-member-declaration is permitted to declare a member with the
> same name or signature as an inherited member. When this occurs,
> the derived class member is said to hide the base class member.
> Hiding an inherited member is not considered an error,
> but it does cause the compiler to issue a warning.
>>667 エラーだろうが警告だろうが上の文脈では本質的に同じだろう。
つかさすがにそれはスレ違い
javaってC#のnewオーバーロードに相当する機能はないの?
>>669 newオーバーロードが欲しいケースって、どんなケース?
Charset charset1 = Charset.forName("SJIS"); CharsetDecoder decoder = charset1.newDecoder(); ByteBuffer bb = ByteBuffer.wrap("a".getBytes()); System.out.println(decoder.decode(bb).toString()); 先生・・・aが表示されんとです・・。
>>672 1.4でソース読んでみた。
0.5(平均バイト) × 1(バイト) が 0になる為、1バイトは無視されるバグだった。
676 :
669 :2007/06/19(火) 23:24:21
>>671 すまん変な表現だった
C#では、派生クラスでnewキーワードを使ってスーパークラスと同じシグネチャの
メソッドを定義して、スーパークラスのメソッドを隠してしまえるの。
オーバーライドとは違って、派生クラスのオブジェクトをスーパークラスの
オブジェクトとして扱えば、スーパークラスに定義されたメソッドが呼び出される。
newを付けなくても動作は同じなんだけど、コンパイラで警告が出る。
こんな感じ
class A{public virtual void Method();}
class B : A{public new void Method();//オーバーライドするときはnewじゃなくてoverride}
>>676 それは知ってる。
で、具体的にどんなケースで必要になるの?って質問なんだが。
デリゲートだっけ?そういうのがないjavaだと困らんような。 公開フィールドに突っ込まれたクロージャは将来困るかも知れんが。
> 公開フィールドに突っ込まれたクロージャは将来困るかも知れんが。 ???
どんな場合に使うかも知らずに「知ってる」って…w
使われたくないスーパークラスのメソッドを隠す publicをprivateにするのも可 インターフェイスの明示的実装とあわせて、 継承を繰り返したりインターフェイスを多数実装したクラスが 継承メンバだらけでぐちゃぐちゃになるのを防ぐ機能だよ さすがにスレ違いだなすまん
>>681 > 使われたくないスーパークラスのメソッドを隠す
> publicをprivateにするのも可
> 3.7 Scopes
> The scope of a name is the region of program text within
> which it is possible to refer to the entity declared by the name
> without qualification of the name.
> 3.7.1 Name hiding
> The scope of an entity typically encompasses more program text
> than the declaration space of the entity. In particular,
> the scope of an entity may include declarations that introduce
> new declaration spaces containing entities of the same name.
> Such declarations cause the original entity to become hidden.
> 7.3 Member lookup
(中略)
> First, the set of all accessible (§3.5) members named N
> declared in T and the base types (§7.3.1) of T is constructed.
> Declarations that include an override modifier are excluded from the set.
> If no members named N exist and are accessible,
> then the lookup produces no match, and the following steps are not evaluated.
続く > Next, members that are hidden by other members are removed from the set. だけど、これは(集合内の)他のメンバによって隠ぺいされるメンバは集合から削除される、なんだろな。
基底クラスでpublicになってるのを派生クラスでprivateにするのはC#でも無理だな 派生クラスで基底クラスが実装してるものと同じインターフェイスを実装しなおしたいとか、 インターフェイスを実装したいけど、そのメンバが 基底クラスのメンバと名前が被ってるとかいうときに使う
685 :
デフォルトの名無しさん :2007/06/20(水) 19:51:32
くだらない質問ですいません。 int b=1; int c=0; int d=b---c; これは解釈の仕方ではインクリメント演算子にもなるし、 デクリメントにもなると思います。この場合はデクリメント演算子と 解釈して計算するそうです。なぜそうなるのでしょうか? 人間がこういう場合はこうすると決めたことなのでしょうか?
むしろどう解釈したらインクリメントになるのか教えてほしい
687 :
デフォルトの名無しさん :2007/06/20(水) 20:00:48
すいません、間違えました。前置演算子として解釈するのか 後置演算子として解釈するのかでした。
左から判定していくんじゃねーの
>>689 そのURLに書いてあるのは値の評価順のことでしょ
構文解析の話題とはまったく関係なくない?
eclipseのVisual Editorでswingを使ったGUIプログラムを作りました(main()はなし) eclipse上からはメニューからJava Bean実行を選ぶだけで実行出来るのですが、 コマンドプロンプトや他のPCから実行したい場合どうすればよいのでしょうか?
エントリポイントないのにどうやって実行するんだ?
>>693 いったい何を言っているんだ・・・
mainメソッドを記述したクラスを作って実行すればいいじゃないか?
696 :
デフォルトの名無しさん :2007/06/20(水) 21:38:00
685です。回答ありがとうございました。 ホームページを見たのですが、勉強不足で理解できませんでした。 いろいろ自分で調べてわかるようにしたいと思います。
「左から順に解析される」 「複数の解釈が可能な場合は常に長い方が採用される」 この2点だけおさえておけばいい。 あとは理解力の問題だ。 「この条件で自分で解析するとしたらどうなるだろうか?」 というのを実際に紙にでも書いて考えてみれ。
見てすぐに理解できないコードは実務では不要 言語研究とか趣味ならいいが。
String hoge = fuga.split("regex"); if(hoge.length >= 3 && hoge[2].equals("hage")){ } みたいに書いたときにIndexOutBoundみたいなException出る心配はないですよね
>>699 IndexOutOfBoundsExceptionが出る心配はない。
その前にコンパイルエラーが出る。
つ String[] hoge = 配列の要素数をチェックしているからhoge[2]でインデックス範囲外アクセスの例外は出ないよ
>>700 すみません typo です
String[] hoge = fuga.split("regex");
と解釈してください
必ず左から評価されると決まっていない場合は ifを2行に分ける必要があるんだけど Javaの場合は大丈夫だお
// さっき知ったJadが凄過ぎて感動して耳から鼻くそが出てきそう
if(hoge.length >= 3 & hoge[2].equals("hage")){ } だとショートサーキット評価が行われないから、 hoge[2]が無ければArrayIndexOutOfBoundsExceptionが投げられる。
706 :
デフォルトの名無しさん :2007/06/21(木) 10:39:34
>>706 JButton button2
コンストラクタの中で定義しているローカル変数のbutton2とインスタンス変数のbutton2の名前が衝突しているのが原因。
解決方法としては、コンストラクタの方の
JButton button2 = new JButton("送信"); /* 送信ボタン */
を
button2 = new JButton("送信"); /* 送信ボタン */
とする。
それだけだとぬるぽが起こるガッ、原因は同じ。
708 :
デフォルトの名無しさん :2007/06/21(木) 11:18:48
>>707 ご回答ありがとうございます!
修正をさせて頂きましたが、ぬるぽが発生します。
ぬるぽを防ぐにはどの様に修正した方が良いでしょうか?
色々とぐぐったのですが、初心者なので良く分かりませんでした。
質問ばかりですみません・・。
>>708 原因は一緒だといってるだろうガッ
解決した理由を考えなければ、貴様は何度も同じ質問をする。
712 :
711 :2007/06/21(木) 12:23:10
あ、ああああ。すません。演算子見てませんでした。
713 :
デフォルトの名無しさん :2007/06/21(木) 17:08:38
StreamTokenizer って指数形式の浮動小数点数を数値として読み取ってくれないのですか? 読み取らせるにはどうしたらよいでしょうか。
JDBCでMySQLにデータ追加するプログラムを作っているのですが、 eclipseで実行するとデータ追加出来るのに、JavaWebStartで実行するとできません。 ドライバか何か設定してやらないといけないのですか?
エスパーさーーん出番ですよー
-classpath
エスパーしても要求するライブラリインスコさせてないとかセキュリティマネージャとか色々ありすぎる。
718 :
618 :2007/06/22(金) 00:58:49
>>619 ありがとう
答えは、VK_F1でOKでしょうか?
なんかjava.awt.event.KeyEvent
の説明にあった、「定数の値に頼らないでください」の注意書きがよくわからなかったのですが…
定数と比較する時に数値リテラルを使うなって事。 final byte COLOR_RED=127; と定義されてるからと言って //赤の場合 if(getColor() == 127) System.out.println("赤です。") と書かない。実装がいつ変更されるか分からないから。 言い方変えると実装に依存するなと言う事。
720 :
デフォルトの名無しさん :2007/06/22(金) 05:36:26
//赤の場合 if(getColor() == COLOR_RED) System.out.println("赤です。") これはOK?
おk 場合によっちゃ型まで変更があるかも知れん。 final String COLOR_RED="#ff0000"; if(getColor()==127)... こうなったら定数とgetColor()の定義以外にリテラルも変更する必要が出て来てバグを誘発したりする。 公開されてるAPIリファレンスの説明文から分かる情報以上の、たとえばソースコードから 得た情報に依存したコードを書くのは行儀悪い。
型の変更に対応できるソースなんて書けないだろ
その例だと
>>720 もアウトだし。
723 :
デフォルトの名無しさん :2007/06/22(金) 11:30:15
JDialog って、コンストラクタで作成した後で、 オーナーを変更することはできないのですか?
>>723 作成した後に変える必要があるのですか?
新たにnewすることはいけないことですか?
専用のPanelを作成することはできないのですか?
特定の用途であれば、それぞれのパネルを保持すればよいのではないですか?
725 :
723 :2007/06/22(金) 12:54:17
すいません、質問を変えます。 やりたいことは、JOptionPane みたいに、 Component を受け取って、その親の Frame または Dialog を オーナーとするダイアログを作成したいんですが、 JDialog のコンストラクタが Frame または Dialog しか受け付けないので、 class SomeDialog extends JDialog { public SomeDialog(Component comp) { super(comp); // これはできない。 } } はうまくいきません。 super(SwingUtilities.windowForComponent(comp)); これも、JDialog のコンストラクタが Window を受け付けないので、だめです。 instance of で Window が Frame か Dialog かの判定はできますが、 super はコンストラクタ内の最初に呼び出さなければいけないので、これもできません。 何かいい方法はないでしょうか?
作成側でownerに対する参照を持っているべきだと思うな。 使い分けはオーバーロードしておきゃOK class SomeDialog extends JDialog { public SomeDialog(Dialog owner) { super(owner); } public SomeDialog(Frame owner) { super(owner); } }
>>725 createDialog みたいなメソッド作って、そこで instanceof して
2種類のコンストラクタ呼び分けるしかないのでは?
1.6以降なら JDialog のコンストラクタが Window も引数にとれるようになってるけど。
どうしても中で判定したい場合は、次のメソッドを追加。 static SomeDialog createInstance(Component component) { if(component instanceof Dialog) { return new SomeDialog ((Dialog) component); } else if(component instanceof Frame) { return new SomeDialog ((Frame) component); } else { throw new IllegalArgumentException() // ? } }
ローゼンのキャラが解説してるjavaのサイトがあったのですが どなたかご存知ないですか? クライアントサーバとかの解説がされているページです。
クライアントサーバ方式のチャットを作っています。 クライアントがメッセージを受け取り、TextAreaに追加する際 同時にキャレットを動かし最新の発言が見えるようにしています。 これだとログをさかのぼり読んでいる最中に発言があると\(^o^)/オワタなので、 スクロールバーが一番下にある状態に時だけキャレットを動かしたいと思うのですが どうやってそういう状態を知るのか分からず、実装できません。 助言をください。 以下が現在使っているメソッドです。 public void addMessage(String str) { messageArea.setText(messageArea.getText() + "\n" + str); try { messageArea.setCaretPosition(messageArea.getText().length()); } catch (Exception ex) { } }
>>730 JScrollPane#getVerticalScrollBar()で取得した垂直スクロールバーに対して、
getMaximun()で最大値, getValue()で現在のスクロール量が取れる。
スクロール可能な実際の最大値は、getMaximun()の値から縦の長さ分引いた値になるので注意。
あとは、この辺組み合わせればできるだろ。
>>732 グロ画像。今時こんなの貼るやついるんだな。
734 :
sage :2007/06/22(金) 21:13:49
コマンドプロントにて javac ファイル名.javaでエンターを押し コンパイラされて文字が出てくるはずだと思うのですが 何故か出てきません public class ExerciseD2L1 { public static void main(String args[]) { System.out.println("ここに文字いれてます"); } } ↑間違っていますか?
コンパイルしただけじゃだめだぞw 後に実行しないと。 >java ExerciseD2L1 エンター
736 :
sage :2007/06/22(金) 21:27:22
解決できました!
>>735 さんありがとうございます><
737 :
736 :2007/06/22(金) 22:16:59
先ほどのものですが 新しくメモ帳で同じようなものを作ったのですが public class SampleD2L2 { public static void main(String args[]) { System.out.println("文字"); } } これでコマンドプロントでjava SampleD2L2 エンターを押しても Exception in thread "main" java.lang.NoClassDefFoundError: が出てきます。 ・String に == は使うな。equals() を使え。 と書いてありますがそうするとどう書いていけばいいのでしょうか? ちなみに参考書を買ってやっているのですが 参考書ではjavac ファイル名.java エンターなのですが・・・・ ちなみにどちらをやってもできませんOTL
>>737 > javac SampleD2L2.java
でコンパイルが成功したら
> java SampleD2L2
で実行。
739 :
736 :2007/06/22(金) 22:27:13
>>738 さんありがとうございました><
無事解決しました
>>736 読んでいる参考書を晒して欲しい
もしかしたらば、とんでもなく糞本を読んでいるかもしれない。
丸の内なんとかとか・・・
awtコンポーネントとswingコンポーネントを Frame、JFrame内に共存させてもいいんでしょうか。 試してみたところ不具合は起きませんでしたが、 この先疑問を抱えながら開発するのは不安なので ご存知の方教えてください。
不安だったらやめとけ
うちのPCは家庭用最先端な4コアCPUです。 こういうのはマルチスレッドの処理が速いと聞きましたが、 このスレッドってJAVAのThreadと同じものですか? Thread使って並列処理するとうちのPCの性能を生かせるのでしょうか? それとも、JAVAのThreadとは別物なのでしょうか?
匿名クラスってコンストラクタ定義できないっスよね?
>>744 できない。
インスタンス初期化子使うかフィールド宣言に初期化子付けるか、そーゆーので代用。
増えたと思ったらw
>>741 軽量が先、重量が後に描画される。
>>743 VMの実装によると思われる。
たぶん、凡人が考えるようなことはやっている。
java.util.concurrent.ExecutorService の中にタスクが残っていなければ shutdown したいんですが、 独自の ExecutorService を作る必要がありますか?
749 :
デフォルトの名無しさん :2007/06/23(土) 07:41:23
GUIのレイアウトについての質問です。 ウィンドウを左右二つのパネルに分けています。 左のパネルには可能な限り大きな正方形を表示します。 右のパネルには色々な情報を表示します。 左のパネルの横幅は縦幅以上には広がりません、 (1) ウィンドウが横に広がれば 右のパネルの横幅は変わらず、左のパネルだけが広がります。 (2) 横幅=縦幅の時にウィンドウが横に広がれば 左のパネルは変化せず、右のパネルがだけが広がるようにしたいです。 GridBagLayoutを使い(1)は実現できましたが(2)はどのように実装すれば良いのでしょうか
750 :
デフォルトの名無しさん :2007/06/23(土) 08:29:27
JDKについているHTMLドキュメントが使い難い・・・不親切だし・・・ スレッドでwait()したらsynchronizedも解除されるなんてリファレンスに書いてないし・・・ 勉強中にこんなことで悩んでいたし・・・
>>751 Σ( ̄ロ ̄lll)
wait(long)じゃなくてwait()のところを読んでいたので気がつかなかった・・・
感謝です
>>750 sunの開発者向けページにあるチュートリアル見ると幸せになれるよ。
sunのjavadocは完全に公開仕様な部分しかふれてないから
実装よりの事は伏せてある(リスナが呼ばれる順に依存しちゃダメな理由とか)。
外部プロジェクトから取り込んだライブラリのドキュメントと見比べると
コピペだって事が分かる。javadocの方針は仕様のみ書けって事だからそういうもんなんだろ。
ただ、そのコピペが所々間違えてるんでチュートリアルとかガイドをちゃんと読んだ方が良い。
>>749 >左のパネルには可能な限り大きな正方形を表示します。
>左のパネルの横幅は縦幅以上には広がりません、
>ウィンドウが横に広がれば
>右のパネルの横幅は変わらず、左のパネルだけが広がります。
矛盾してない?
ウィンドウの横幅を広げれば、自動的にウィンドウの縦幅も広がっていくって事なんじゃない?
>>748 よく知らんが、shutdownは残りのタスクが終了するまで待つとかしないん?
758 :
749 :2007/06/23(土) 11:43:23
分かりやすい説明がが書けず、すみません。
>>755 ウィンドウが横に広がれば、
右のパネルの横幅は変わらず、左のパネルだけが優先して広がるが、
左のパネルの横幅がウィンドウの縦幅の大きさまで達するとそこからは右のパネルが広がりだすという事です。
>>756 いえ、そうではありません。
ウィンドウが縦に広がった場合は特に特別な事はなく、右のパネルも左のパネルも
ウィンドウが広がった分だけ広がります。
ああ、つまり ┏━━┳━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┗━━┻━┛ では無く、 ┏━━┳━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┣━━┫ ┃ ┗━━┻━┛ なんだな。左下にパネルで無い部分があると(右下にもあるかも知れないが)。
760 :
749 :2007/06/23(土) 12:19:39
あ、左のパネルが長方形でもその中に描写可能な最大の正方形をと描くという意味で、 左のパネル自体が正方形という意味ではないです。 この記述は質問レスにいらなかったかもしれませんが、 左パネルの(横幅が縦幅に達した後)広がりが止める理由が分かってもらえればと思い書きました。 実際紛らわしくなっただけのような気もしますが(^_^;)
>>757 shutdown は新規タスクの追加を禁止して、現在のタスクが全て完了したらシャットダウンするんです。
新規タスクの追加を禁止せずに、以後タスクが全て完了したタイミングでシャットダウンを予約〜ってことをするにはどうすればいいのかなーと。
762 :
デフォルトの名無しさん :2007/06/23(土) 18:04:47
学校でコメントアウトに日本語が含まれるプログラムを自宅のPCでコンパイルすると、 警告:この文字は、エンコーディング MS932 にマップできません。 との警告が表示されます。 学校のPCでは問題なくコンパイルできます。 自宅でのコンパイルの警告をなくしたいのですが、どなたか方法知りませんでしょうか?
763 :
デフォルトの名無しさん :2007/06/23(土) 18:11:42
swingでダイアログを作ろうとして、 Dialog NewDialog = new java.awt.Dialog(new BaseFlame()); と書いても Dialogが解決できませんとeclipseに怒られてしまいます・… 所有者ってなんでしょうか。親フレームだと思ったのですが…
judeでクラス図を書こうとしてるんですけど、どうかいていけばいいかわかりません。 問題 ある旅行代理店では,宿泊施設と交通機関のチケットをセットにした商品販売を開始することにした. この商品販売のための,計算機システムの導入も検討している. この商品は顧客が店舗に行き,代理店の店員と価格や時間等を考慮し相談しながら販売することを想定している. しかし,将来は顧客自身がウエブサイトや携帯電話等を通して,この商品を購入することが可能となるようにしたいと思っている. この代理店は以下の三つの既存システムを利用可能である.
* 宿泊施設の空室照会および予約システム: 交通機関の駅等の名前と,宿泊人数,宿泊希望日を入力すると,宿泊可能な宿泊施設の候補を5つ程度教えてくれる. 候補は価格の安い順,高い順でソートできる. 候補として提示される宿泊施設の情報は,施設が提供した自由記述の説明である.そして,空室を予約することができる. * 交通機関(列車,バス,飛行機)の空席照会および予約システム: 人数,出発希望日時,到着希望日時と到着先を入力すると,空席がある交通機関の組合せ候補を5つ程度提示してくれる. 移動時間の短い順,価格の安い順で候補はソートされる. そして,空席を予約することができる. * 最寄駅等の照会システム: 住所を入力すると最寄の交通機関駅等の候補(5つ程度)と,そこまでの距離を教えてくれる. 尚,支払い業務については当面考えなくても良い.
上記に示した商品販売のための計算機システムの設計をせよ って問題です。 どうやって作っていけばいいのかおしえてください。
>>763 たぶんDialogの完全名を解決できていない。
インスタンス生成の方にはjava.awt.を付けてるのに変数名の型に付けてないのは何で?
>>764-766 judeの使い方について説明を求めているのであれば板違い。ソフト板とかか?(違うかも)
宿題なら宿題スレへ。
なんのために学校行ってるの?
>>762 ソースファイルの文字エンコーディングを調べて、
例えばutf-8なら、
javac -encoding utf-8 ソースファイル
のようにコンパイルするか、
自宅のPCのOSで使われている文字エンコーディングにソースファイルを変換してからコンパイルすれ。
>>763 せっかくswingでダイアログ作るならJDialog使えよw
772 :
763 :2007/06/23(土) 19:26:05
>>767 ありがとうございます。
単なるimport文抜けのミスでした…
>>770 フォントサイズとかレイアウトとかを自分で変更したかったので・・・
JDialogだとなんかフォントおかしくなりませんか?
>>772 現行のswingスレの478あたりからの流れを読むといいかも
intをStringにキャストするにはどうすればいいんですか? int a=1; String s; s = (String)a; これでエラーになります。
Integer.toString(a); あるいは String.format("%d", a);
StringBuffer sb = new StringBuffer(); String s = sb.append(a).toString();
StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); pw.printf("%d", a); pw.flush(); String s = sw.toString();
「int を String に変換」 はできるけど、「int を String にキャスト」 は不可能だと思うが…… Integer.toString(v) も『キャスト』って呼んでいいの?
781 :
772 :2007/06/23(土) 23:02:08
>>773 おお、そんな方法があったのですね。
自分でダイアログ用のライブラリを作ってしまいましたorz
変数の帰り値を取得するのってどうするのでしょうか? PHPの場合は function test(&$abc, &$def) { } という感じだったのですが、javaの場合??になっています。
>>782 [戻り値の型] メソッド名(引数1, 引数2){}
適当にJavaの解説サイトくらい読んでから質問しろな
PipedOutputStream po = new PipedOutputStream(); PipedInputStream pi = new PipedInputStream(po); PrintStream ps = new PrintStream(po); ps.printf("%d\n", a); ps.flush(); BufferedReader br = new BufferedReader(new InputStreamReader(pi)); String s = br.readLine();
>>785 パイプが詰まったら止まっちゃうだろう。マルチスレッドで
詰まらなくても \n 忘れると止まるw
788 :
デフォルトの名無しさん :2007/06/24(日) 14:21:26
Javaでフォーム最前面表示って可能ですか? toFront();ループでやってみたんですが 常に最前面表示される方法は無いでしょうか? アクティブでなくても構いません
SwingかHTMLか話はそこからだ
>>788 1.6以降なら java.awt.Window#setAlwaysOnTop(boolean)
それ以前だと標準APIじゃ無理。
JNI使って自力でやったりするしかない。
main(String[] args) の argsの引数を受け取って、 String s1 = args[0]; String s2 = args[1]; という文を書くと、 引数無しで実行するとエラーになってしまいます。 エラーではなく、正常に実行されてif文で「引数を入れてください」みたいなコメントを出したいのですが どういう条件にすればいいんでしょうか?
プロパティファイルって普通どこにどんな名前で保存するんでしょうか
795 :
デフォルトの名無しさん :2007/06/24(日) 17:26:43
JFreeChartに関して 同じグラフの中に棒グラフと折れ線グラフを表示する方法はありますか
796 :
792 :2007/06/24(日) 17:29:46
797 :
デフォルトの名無しさん :2007/06/24(日) 17:36:52
質問があります。入門書に以下のようなサンプル例文があったのですが、 実際のJavaプログラムではこのようなオブジェクト作成、クラス利用は どのように使われているのでしょうか? class roadstarCar{ int type; int engine; } void output(){ System.out.println("車の型は" +type); System.out.println("車のエンジンは" +type); } class honban{ public static void main(String args[]){ roadstarCar eunos = new roadstarCar(); eunos.type = NA6CE; eunos.engine = B6; eunos.output(); }
799 :
デフォルトの名無しさん :2007/06/24(日) 17:57:58
SWINGで ボタンにキーを割り当てる方法を教えて頂けませんか? 例えばOKボタンがあって クリックしてもALT+スペースを押しても 同じ動作をする様にしたいです
800 :
デフォルトの名無しさん :2007/06/24(日) 18:00:32
コンストラクタが無いね 例で之は酷くない?
802 :
デフォルトの名無しさん :2007/06/24(日) 18:05:42
>>798 やさしいJavaって本です。
本当はCarクラスで、フィールド名はnumとgasだったのですがつまらないんで
マツダのロードスターをメインに書き換えてみました。
>>800 この本読んでもつかめなかったのですが、コンストラクタとはいったい何でしょうか?
803 :
デフォルトの名無しさん :2007/06/24(日) 18:15:16
ダイアログを消したいのですが、なぜか 「dispose() は型 new ActionListener(){} で未定義です。」 と言われます。 サンプルとか見てもこれで消えると思ったのですが… OK_button.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { dispose(); } });
804 :
ぴっころ :2007/06/24(日) 18:26:56
はじめまして。ぴっころです。 Cとは少し違うかもしれませんが、キャリフラグとオーバフローフラグ の違いを教えて頂けないでしょうか?
805 :
ぴっころ :2007/06/24(日) 18:27:47
すみません。誤爆でした。
やっぱ、やさしいjavaか。最近エンカウント率高いな。 そんな本すぐに窓から投げ捨てろ!! コンストラクタとはインスタンスを初期化するためのしくみ。 あ〜ちなみにやさしいjavaがどういう本かと言うと、 やさしいC++のポインタの説明が無くなったがだけ。 コードがまるっきし同じで説明もまあ、同じ事言ってるかな。 java独自の仕様にはとくに触れてないというか説明してないというか。 んでやさしいC++がCを知らんでもわかるようにってコンセプトでやさしいCって本と内容がかなり重複してる。 第3版なんて5.0対応と謳いつつ、内容は5.0の新機能を使ってないんで5.0でもコンパイラ通るだけ。
すげー
808 :
デフォルトの名無しさん :2007/06/24(日) 19:17:55
>>797 色々直してみた
class RoadstarCar{ // クラス名はClassNameのように単語ごとに大文字で始める
String type;
String engine; // 文字列はString型(正確にはクラス)で
public RoadstarCar(String type, String engine){
this.type = type; // コンストラクタでインスタンスを生成すると同時に初期設定する
this.engine = engine; // ここでは引数で渡された文字列で型式とエンジン名を初期化する
}
public void printInfo(){
System.out.println("車の型は" + type); // メソッド名は具体的に分かりやすい名前をつける、
System.out.println("車のエンジンは" + type); // methodName()のように小文字で始めて単語ごとに大文字に
}
}
class Honban{
public static void main(String args[]){
// コンストラクタに型式とエンジン名を文字列として渡して初期化
// 文字列を表現するには" "で囲めばよい
// いきなりNA6CEとか言われてもコンパイラが困っちゃうよ
RoadstarCar eunos = new roadstarCar("NA6CE", "B6");
// ↑クラス名とインスタンス名、メソッド名を明確に区別するためにも
// 大文字と小文字を使い分けるのは重要でしょ
eunos.printInfo(); // 最後にeunosオブジェクトに情報を表示させる
}
}
>>808 個人的な意見だが、俺なら type と engine は public final にする。
810 :
デフォルトの名無しさん :2007/06/24(日) 19:25:57
やさしいJavaか・・・乙 コンストラクタを説明するにはインスタンスを考えなきゃいけないんだが、インスタンスはOK? クラスってのがデータの設計図で、実際にデータとするのがインスタンスだ。 クラスが携帯のアドレス帳のフォーマットで、インスタンスが登録した1件1件のデータと思いねぇ。 コンストラクタってのは、このインスタンスを生成する時に1回だけ呼び出される特殊なメソッド。 何か特別なこと(初期値の設定)とかする場合もあれば、何もしない場合もある。
てか、やさしいjavaは576頁あって半分以上が変数・配列・制御文だからな。
>>808 コンスタラクタ付けただけかい。
carクラスにpublic void printInfo()はやめようぜ。
>>803 ・取り囲むクラスに dispose() が無い。
・
>>803 が静的文脈内にあるので、インスタンスメソッド dispose() を呼び出せない。
のどっちか。
813 :
デフォルトの名無しさん :2007/06/24(日) 19:47:08
814 :
797 :2007/06/24(日) 19:54:22
すいません。やさしいJavaのレッスン8からレッスン10をずっと読み直していました。
>>806 本屋のPC書籍のところに大ベストセラーで置いてあって、他の本より安かったんで買ってみました。
この手のプログラミング言語は初めてだったので、これでいいかと思い選びました。
Javaはオブジェクト指向言語らしいのですが、本にはオブジェクト指向プログラムとは何かの説明がまったくないので
広辞苑で調べてみたのですが、ひとつひとつのクラスに役割をもたせて、複数のクラスでひとつの処理をする、という事であっているのでしょうか?
カバーの後ろ開きに載ってるやさしいシリーズ、全部おなじ内容だったんですね。流石、経済学部卒ですね>作者
>>808 補足ありがとうございます。今、理解しながら読んでいます。
>>810 本には「コード上で作成される車1台1台の事をオブジェクト、またはインスタンスと呼びます。
本書ではオブジェクトと呼ぶことにしましょう。」
とあるのですが、>クラスが携帯のアドレス帳のフォーマットで、インスタンスが登録した1件1件のデータと思いねぇ。
と説明されれば一発でわかるのに対して、車で解説されると逆に混乱してしまいますね。
本書に、Car car1 = new Car(); とあり、これでインスタンスを作成してるっぽいのですが
これを宣言する事によって、
>>797 で書いた例文だとhonbanクラスからroadStarCarクラスを呼び出す事が出来るようになる
という事でしょうか?
>>814 君に「安物買いの銭失い」という言葉を贈ろう。
本は複数買ったほうが良い。1度に一気に買わなくてもいいから。
それぞれの記述の違いを見比べると本質が理解できる場合が多いよ。
Core Javaに一刀入魂!
817 :
デフォルトの名無しさん :2007/06/24(日) 20:07:14
前面にIE 後ろにJavaアプリ(SWING) の状態でIEがアクティブの時にキーストローク送って裏に有るJavaアプリを 操作する方法は無いでしょうか?
JSPのELで、オブジェクトのアクセッサを介さずに、publicなインスタンス変数に直接アクセスすることはできますか。 他人の作ったクラスで、publicなインスタンス変数にアクセスするものがあるので。
820 :
810 :2007/06/24(日) 20:17:31
クラスとインスタンスの例えで、車とか動物だったらその本はまずNG
>>814 インスタンスを生成するってのは、まんまデータを作るって事。
変数を宣言してるので、car1はそのデータに名前をつけていると考えればいい。
つまり、Car car2 = new Car() と書けば、もう1つデータ(インスタンス)が作成させる。
(この辺の例えもアドレスデータで考える方が納得しやすい)
なんで、呼び出すことができるってのは間違っていないけど、まずはデータとして利用できるようになるって考えるべき。
アドレスデータであれば、登録(インスタンス化)したんで、見ることができるようになったわけだ。
例えばこんな感じ
System.out.println("車の型は" + car1.type);
car1のtypeを読み出している
ここまで理解できてから、「メソッド」という機能を習得する
これはクラス(データ)に操作(振る舞い)を持たせることができる機能
メソッドや変数にstaticをつけると、クラスメソッドやクラス変数になるのはわかるのですが、 classにstaticをつけると、どのような処理になるのでしょうか?
>>821 静的メンバクラスになる。
static がなければ内部クラスになる。
823 :
808 :2007/06/24(日) 20:29:27
>>812 ありがとうございます。
なぜか、ダイアログをfinalでnewしたらいけました・…
>>821 前提として1つのクラスの中に別のクラスを記述する場合にしかclassにstaticは使わない
インナークラスっていうんだが、暫くはないものとして考えてOKだと思われ
825 :
デフォルトの名無しさん :2007/06/24(日) 21:00:10
>>822 ,824
ありがとうございます。
調べてみたところ、静的メンバクラスというのは、
クラス配下に静的メンバだけしか持たないということらしいのですが、
一体、どういったときに使用するのでしょうか?
826 :
736 :2007/06/24(日) 21:04:04
>>740 さん
10日でおぼえるJava入門教室 第二版
という本なのですが・・・・
どうでしょうか?
>>825 > クラス配下に静的メンバだけしか持たない
逆。内部クラスは静的メンバをもてない。
内部クラスって用語は、結構混乱があるので注意。
本や人によっては「入れ子になったクラス」全般を指してたりする。
俺は言語規定の
> 内部クラス(inner class)は,明示的又は暗黙にstaticと宣言されない入れ子クラスとする。
って定義にしたがってるだけ。
829 :
797 :2007/06/24(日) 21:32:30
>>815 大体読んだのですが、そんな気がしてきました。
表面を軽く説明して読者をわかった気にさせる感じですね。
明日、
>>816 さんが奨めているCore Javaという本を大きめの書店に探しにいってみます。
>>820 ちょっとアドレス帳で作ってみました。こんな感じでしょうか?
この場合のメソッドとは何でしょうか?
本の方には、「クラスの機能を表す仕組み」とあるのですが、このプログラムの場合
アドレスブックに載っているデータを表示するのが目的なので、system.out〜の部分がメソッドになるのでしょうか?
830 :
797 :2007/06/24(日) 21:38:47
改行が多すぎると言われたので分けました。 class Addressbook{ String name; String address; int phonenum; public Addressbook(String n, String a, int p){ n=name; a=address; p=phonenum; } public void show(){ system.out.println("名前は"+name); system.out.println("住所は"+address); system.out.println("TELは"+phone); } class Sato{ public static void main(String args[]){ Addressbook sato = new Addressbook(); sato.name = "佐藤"; sato.address = "東京都港区赤坂4"; sato.phone = 0355490000; sato.show(); } }
show()がAddressbookクラスのメソッド ほかにも、 public String 居住する都道府県を取得(); public void こいつに電話をかける(); とかいろいろ考えられるでしょ
832 :
デフォルトの名無しさん :2007/06/24(日) 21:53:04
>>828 内部クラス != 静的メンバクラスですか?
内部クラス(インナークラス)・・・クラスにstaticがつかず、静的メンバをもてない。
静的メンバクラス・・・クラスにstaticがつく。静的メンバを持っている??? ←ここが分かりません。
staticが付いたクラスは名前の前に (外部のクラスの名前). が付いただけの独立したクラス
>>832 静的メンバクラスは、インスタンスメンバも 静的メンバを持てる。
内部クラスは、インスタンスメンバは持てるが 静的メンバを持てない。
× 静的メンバクラスは、インスタンスメンバも 静的メンバを持てる。 ○ 静的メンバクラスは、インスタンスメンバも 静的メンバも持てる。
>>832 実は全然違う。
public class Sample {
public static class Inner01 { // 静的内部クラス
public String foo() { return Sample.this.toString(); } // この行でコンパイルエラー
}
public class Inner02 { // 非静的内部クラス
public String foo() { return Sample.this.toString(); }
}
}
new Sample.Inner01(); // クラス Sample 外からの Inner01 の new 方法
new Sample().Inner02(); // クラス Sample 外からの Inner02 の new 方法
静的内部クラスは、外部クラスのインスタンスを必要としない。
一方、非静的内部クラスは外部クラスのインスタンスを必要とするけど、その代わりそのインスタンスに暗黙的にアクセスできる。
間違えた。 new Sample().new Inner02();
>>827 そんなに糞なのか?
恐いものみたさに立ち読みしてみるか
class Sample{ private int value; static class InnerClass{ private Sample 外部クラスのインスタンス; public InnerClass(Sample soto){外部クラスのインスタンス = soto;} public void Hoge(){外部クラスのインスタンス.value = 2;} } これが内部クラス 実際C#だとこんな風にする
実際っていうか、C# の内部クラスは java の静的内部クラスで、 java における非静的内部クラスは C# には無いからなぁ……
841 :
デフォルトの名無しさん :2007/06/24(日) 22:25:56
>>833 -
みなさん、ありがとうございます。
むずかしいですね。
よく整理したいと思います。
842 :
デフォルトの名無しさん :2007/06/24(日) 22:47:35
フィールドは必要がなければprivate にしてカプセル化したほうが よりスマート クラスのできればpublic private 等を上手く使ったほうがいいだろう javaのこういた部分は洗練されてるので私は好きですね
843 :
デフォルトの名無しさん :2007/06/24(日) 23:32:24
ある数以下に含まれている素数をすべてスクロールリストに表示するプログラムを作っているのですが どうしても上手くいきません。どこがおかしいか指摘していただけるでしょうか? import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ex2a extends JFrame { JTextField f1 = new JTextField(); JButton b1 = new JButton("変更");
844 :
843 :2007/06/24(日) 23:33:41
すいませんまちがえました。以下が本物です。 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ex2f extends JFrame { JTextField f1 = new JTextField(); DefaultListModel model = new DefaultListModel(); JList l1 = new JList(model); JButton b1 = new JButton("表示");
845 :
843 :2007/06/24(日) 23:34:49
public ex2a() { setSize(400, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(null); c.add(f1); f1.setBounds(40, 40, 180, 40); c.add(b1); b1.setBounds(240, 40, 80, 40); b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { int n = (new Integer(f1.getText())).intValue(); boolean sosu = true; for(int i = 2; i < n; ++i) { if((n % i) == 0) { sosu = false; } } f1.setText("prime number : " + sosu); } }); } public static void main(String[] args) { (new ex2a()).setVisible(true); } }
なにがやりたいのかがわからない。 JListに表示したいのならば、JListに追加する。 actionPerfomedの中は、 int n = (new Integer(f1.getText())).intValue(); Vector primeList = new Vector(); for (int i = 2; i <= n; ++i) { if(i が 素数) primeList.add(new Integer(i)); } l1.setListData(primeList); こんな感じだ。
847 :
デフォルトの名無しさん :2007/06/25(月) 00:18:42
>>817 は不可能なんでしょうか?
おねがいします
>>847 WindowsアプリとJavaアプリのとの違いを勉強しておいで
849 :
デフォルトの名無しさん :2007/06/25(月) 00:31:30
dll経由のネイティブインターフェイスを使ったり ランタイムをつかったり いろんな方法があるので、具体的にどんな操作を 行いたいのかが纏まってからの方がよさそう
850 :
デフォルトの名無しさん :2007/06/25(月) 00:35:02
>>848 ,849
JNIで実装したいのですが、、
851 :
843 :2007/06/25(月) 01:05:02
>>846 ありがとうございます。Vectorの使い方がよく分からなかったので、配列を使ってやってみたのですが
シンボルが見つからないとエラーがでてしまいました。一体どこがおかしいのでしょうか?たびたび申
しわけございません。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ex2f extends JFrame {
JTextField f1 = new JTextField();
JList l1 = new JList();
JButton b1 = new JButton("表示");
852 :
843 :2007/06/25(月) 01:06:33
public ex2f() { setSize(400, 200); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(null); c.add(f1); f1.setBounds(40, 40, 180, 40); c.add(l1); l1.setBounds(40, 100, 180, 40); c.add(b1); b1.setBounds(240, 40, 80, 40); b1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { int m = (new Integer(f1.getText())).intValue(); int j = 0; int[] primeList = new int[100]; for(int n = 1; n <= m; ++n) { boolean sosu = true; for(int i = 2; i < n; ++i) { if((n % i) == 0) { sosu = false; } } if(sosu) { primeList[j] = n; ++j; } } l1.setListData(primeList); } }); } public static void main(String[] args) { (new ex2f()).setVisible(true); } }
シンボル未解決なんてどうせどっかタイプミスしてんだろ。 エラーメッセージに出てる行とその前後をよく見直せ。
854 :
749 :2007/06/25(月) 02:09:03
おめでとう
>>843 配列を使うほうが難しいのでVectorを勉強するべき
時に、i++ でなくて ++i を好んで使うのはなんで?
補足し忘れた。 VectorはArrayListと使い方は一緒
C++ 使いはイテレータの関係上 ++i を好む傾向がある。
long型より大きい数を使いたい場合には変数はどのようにすればいいのでしょうか?
BigInt
861 :
デフォルトの名無しさん :2007/06/25(月) 10:21:25
>>859 ヘルプで変数見たらサイズとか範囲とかあるだろ?
そんなことすら調べれないならPGなんかすんな
862 :
859 :2007/06/25(月) 10:28:37
864 :
デフォルトの名無しさん :2007/06/25(月) 10:44:27
#include<stdio.h> #include<time.h> void main() { int a,b,c,d,e,hp1,hp2=100,etou; printf("相手を選んでください。\n1.江藤(Lv1) 2.シーツ(Lv2) 3.金本(Lv3)\n"); scanf("%d",&b); printf("\n"); if(b==1) { hp1=100; while(hp1>0) { a=time(0); a=a%21;
865 :
デフォルトの名無しさん :2007/06/25(月) 10:49:08
etou=time(0); etou=etou%35; printf("プレイヤー(HP:%d)vs江藤(HP:%d)\n",hp1,hp2); printf("選択してください。 1.攻撃 2.寝る\n"); scanf("%d",&c);printf("\n"); if(c==1) { printf("プレイヤーは江藤を殴った。\n江藤に%dのダメージをあたえた!!\n\n",a); hp2=hp2-a; if(hp2<=0){e=1;} else if(hp2>0){ printf("江藤の逆襲だ!\nプレイヤーは%dのダメージをくらった!!\n\n",etou/2); hp1=hp1-(etou/2); } }
866 :
デフォルトの名無しさん :2007/06/25(月) 10:49:44
867 :
デフォルトの名無しさん :2007/06/25(月) 10:50:47
else if(c==2) { if(hp2>0){ printf("江藤の攻撃だ!\nプレイヤーは%dのダメージをくらった!!\n\n",etou/2); hp1=hp1-(etou/2);} else if(hp1<0){e=2;} } } if(e==1)printf("あなたの勝ちです!!\n"); else if(e==2){printf("あなたの負けです!!\n");} } printf("ゲーム終了です\n"); }
868 :
デフォルトの名無しさん :2007/06/25(月) 10:52:49
>>859 またお前か
最近ム板で暴れまわってるなw
猛威を振るう台風のようだ
くだらん事で荒しまくりwwww
もの凄い初心者ですまんとです eclipse+VEでSWTで何か作っとるとですが イメージを貼り付ける方法がわからんとです 「Image xxx;」とかするとエラーになるとです 誰か教えて欲しいとです
ものすごい初心者ならばコンソールアプリケーションから学べ
それはコマンドプロントとかでやるヤツのことですか? 一応やったとです
872 :
デフォルトの名無しさん :2007/06/25(月) 14:45:07
try chatchは条件分岐に使ってもよいのでしょうか? 例えばArrayIndexExceptionが起きたら、違う処理をさせるとかです。 たくさんやる処理なのでif文で分岐させるのと、 どっちが速いかとか気になります。
>>872 タブー
try-catchは例外処理の為の仕組みだから条件分岐には使用しちゃダメ
ちなみにパフォーマンスも悪い
例外ケースが最速になるような最適化をすると思うかい?
基本的に例外は遅いし、 プログラムを読む時に基本的にまずエラー処理の文脈で理解されるものだから、 単なる条件分岐の代わりとして try-catch は使わないのが基本。 大抵は補助的に関数を使うこと等で解決できると思うが。
初心者な質問ですみませんが、メインメソッドに対してString型以外 (例えばint)を引数として渡すにはどうすればよいでしょうか。 public static void main(int args)ではコンパイルエラーでした。
>>875 コンパイルエラーが起きるとも思えんが。
ありがとうございます。 アルェーEclipseからfatalなんちゃらって文句言われたんですが…。 しかし、構文としては問題ないみたいですね。 ケアレスミス含め、他の部分を見直すことにします。
public static void main(String[] args) はないとだめだからな。 Javaはここから以外で始まらない
>>875 普通、シェルがコマンドライン引数としてjavaプログラムに渡す引数は文字列しかない。
引数に数字が入っていてもそれは数字を表す文字であって数値とは解釈されない。
数値と解釈するか文字列と解釈するかは受け取る側のプログラムに任されている。
なので、public static void main(String[] args)で受けて、
引数をintとして解釈したいならInteger#parseIntなり他の手段なりで、
文字列をintに変換する必要がある。
880 :
デフォルトの名無しさん :2007/06/25(月) 15:42:58
難読化の手法の一つとしては条件分岐を例外処理に書き換えるってのがあるけれど、 実行効率とかを考えると使いどころが難しいし、書き換えは人間がやる仕事ではない。 「たくさんやる処理」に適用するならなおさら
882 :
デフォルトの名無しさん :2007/06/25(月) 17:02:33
public static void main(String[] args){ try{ int a = Integer.parseInt(args[0]); int b = Integer.parseInt(args[1]); int c = Integer.parseInt(args[2]); こんなことするのは邪道ですか? }catch(Exception e){ System.err.println("usage hogehoge"); } }
>>882 どこが邪道だと思うのかを書かないと何とも言えない
>>882 args の長さを最初に1回チェックすればいいだけだろ?
何で例外使うのか。
Exceptionでcatchする時点でタコ
ぷww length 【名-1】 長さ、全長{ぜんちょう}、丈
888 :
デフォルトの名無しさん :2007/06/25(月) 18:04:51
ばかばっかだなw
Integer.parseInt なら大した処理じゃないからいいように見えるが、 その処理がもの凄い時間がかかる場合は? とか考えると、先にコマンドライン引数の個数をチェックした方が一般的にはいい。 個数だけじゃ判定できないって場合は別だが。
初めて来てみた。で、いきなり笑った もう来ません。ありがとうございましたw
アプレットについて質問です。 Color fontcolor=new Color(0,0,255); String v23=getParameter("fontcolor"); if( v23!=null ) fontcolor=new Color(Integer.parseInt(v23,16)); System.out.println(fontcolor); System.out.println(v23); >java.awt.Color[r=0,g=0,b=255] >null 色情報を取り出して(0,0,255) => (0000FF)と16進数に変換して もう一度 Colorオブジェクトを生成することを示すコードだとは思うのですが、 どう意図でもってこう記述されているのかわかりません >< 古いバージョンのVMだと意味があるとか、そういうことなのでしょうか? よろしくお願いします。
>>892 Color(0,0,255) はパラメータが無かったときのデフォルト色。
Color(0,0,255) は小さなオブジェクトだから先に生成してあとで捨てることになっても問題はないだろう。
下のように書いてもいい。
Color fontcolor;
String v23=getParameter("fontcolor");
if( v23!=null ) fontcolor=new Color(Integer.parseInt(v23,16));
else fontcolor=new Color(0,0,255);
>>892 <param name="fontcolor" value="ff00ff">
というのがあれば、0xff00ff (255,0,255)の色になり、なければ
0,0,255のまま
----------Test01.java----------- class Test01{ public static void main(String[] args){ Test02 t2 = new Test02(); System.out.println(t2.s); } } -------------------------------- ----------Test02.java----------- class Test02{ String s = "test"; } -------------------------------- 例えば上のような2つのファイルがあった時、Test01.javaはコンパイルする必要があるけど Test02.javaはコンパイルの必要が無いですよね。 コンパイルが必要が不要かってのは具体的にどう判断すればいいんでしょうか?
>>895 自分でコードを書くとき、ふつうは不必要なコードなんて書かない。
そうでないケースでも、必要か不必要か迷ってる時間があったらコンパ
イルしてしまえばいい。
antとかEclipseとか使うようになれば、コンパイルの手間なんて気にな
らなくなる。
Test02.javaもコンパイル必要
SWTのwin32をダウンロードしたら swt-awt-win32-xxxx.dll swt-gdip-win32-xxxx.dll swt-wgl-win32-xxxx.dll swt-win32-xxxx.dll といくつもdllが付いてきたんですが swt-win32-xxxx.dll は無いと動かないみたいですけど 他のは無くてもとりあえず動いています どういうときに使うのでしょうか?
>>887 例外処理を使ってるのはlengthの問題じゃないってことだよ
>>885 ParseException と ArrayIndexException の
どちらも発生する可能性あるじゃないですか!!
その上でどっちが発生しても同じメッセージ出すんだから
まとめて Exception にした方が効率いいじゃないですか?
誤爆?何の言語使ってるの? NumberFormatException ArrayIndexOutOfBoundsException
ワラタ まあ実際例外処理なんてそんなもんだろw
>>900 はそれでいいので、決してJavaが書けますとか言ってプロジェクトに来ないでくださいね
7割くらい本気です
Exception サブクラス全部拾っちゃうだろ常識的に考えて・・・(=ω=.) RuntimeExceptionは拾っちゃダメだろ。
main で最終的に Exception 拾うのって本当にナシなのかな。 考慮されてない例外が投げられた場合って、 例外拾わないままエラー終了してくれた方がいいのか? 製品でも?
908 :
875 :2007/06/25(月) 22:20:29
>>878 ,879
ありがとうございます。理解しました。
>>907 マジレスしとけば、Exceptionで拾って復帰することに意味があり、復帰させる事ができるならば、catchしてもいいと思う。
Webアプリでも創れば解るけど、フレームワーク周りでExceptionはcatchされて処理されるケースが多い。
mainで拾わずに起動プロセスに投げても、stackTraceは表示されるわけだが、それでもわざわざ拾う必要はあるかい?
>>909 ユーザを混乱させないために、
分かりやすい形でエラーが発生した旨を表示した方が
いいんじゃないかな、とか思ったりするんだよね。
>>909 だったら各所で入力チェックと例外処理を記述しろよw
mainで拾う例外なんてぬるぽとか、要はバグだろ?
ユーザーに分かりやすい様に、ぬるぽで落ちました、サーセンwwwとでも表示するのかい。
そう。要はバグ。 まあ、Java なら拾わなくていいのかな・・・。
ていうかwibアプリのフレームワークという特殊な例をそこで出すか? それ自体まさに例外な気がする。
914 :
730 :2007/06/26(火) 00:02:10
>>731 うまくいきました。
レスありがとうございました。
915 :
デフォルトの名無しさん :2007/06/26(火) 00:07:05
お薦めは特に無いがJAVAが簡単でいんじゃね、汎用性からいってもCかJAVAかになると思う 汎用系の未経験求人なんてあるのだろうか、多分WEBオープン系がほとんどじゃね C言語は組込系の主流、組込系ってのは名前の通り、機械に組み込まれて変更がきかないタイプのプログラム 車の制御システムとか、プレステのゲームソフトとかに当たる 市場に出回ってからバグ見つかると直すのに超費用がかかるので、ゲーム会社とかはよく「仕様です」と言い張るw 言語としては普通だけどアドレス管理やメモリ管理がだるい、あと専門卒の若い子がやたらお出来になる JAVAはWEBオープン系の主流、オープン系ってのは、まぁお察しの通りインターネットみたく皆に開かれたプログラム yahooのような検索エンジンとか、amazonのようなお買い物サイトとかに当たる 運用開始後も楽々バグが直せるよヘヘイヘーイ 言語としてはかなり簡単、Cで手動な部分も自動で管理してくれる、でも誰にでもできる感じがCマニアには不評 取引先はどこだろうと似たようなものを作るので現時点ではほぼ意味なし、何でもいい ただし所属会社が固有の業界に特化していた場合、そこがキャリアの強みになり弱みにもなるので、転職時に響いてくる 例えば銀行・金融系などは只のIT屋は絶対に雇ってくれない、専門知識と十分な業界経験が最低条件になる ちなみに数学・英語は高2程度できれば十分(英語は語彙が多いにこした事はない) 証券のプロジェクトとかでデフォルト機能外の複雑な演算を組まされる事もあるが、基本的にはデフォルト機能で事足りる まぁネットOKのプロジェクトなら分からない事は逐次ネットで調べればよく、ネットNGなら回りの人に聞けばいいので
916 :
デフォルトの名無しさん :2007/06/26(火) 01:07:00
JAVASDK1.6環境で、build.xmlを使ってAntしたんですが、 「シンボルを見つけられません。」を連呼してとまってしまいます。 [javac] C:\L1J\src\l1j\server\server\MobTable.java:81: シンボルを見つけられ ません。 [javac] シンボル: メソッド setHp(int) [javac] 場所 : l1j.server.server.templates.L1Npc の クラス [javac] l1npc.setHp(j); [javac] ^ Wikiも見たり、環境変数なんかも調べたんですがまだわかりません。 tomcatなど他にもいろいろ入れなくてはいけないんでしょうか… よろしくお願いいたします。
setHp(int)がprivateメソッドになってるんじゃないの?
もしそれならこんな風にならない? [javac] l1npc.setHp(j); [javac] ^
919 :
916 :2007/06/26(火) 06:59:00
ちょっとずれていました… [javac] l1npc.setHp(j); [javac] ^ 「ドット」.を指し示している状態です
どう見ても l1npc にシンボル setHp が無いんだろう。
◎渡してる j がint型ではない ○setHpじゃなくてsetHPとかSetHpとかになってる ▲setHpがprivateメソッドになってる
a1,a2,a3,a4,…a20 という変数があった時、 これらの変数をfor文で一気に配列に代入することって可能ですか? int[] ia = new int[20]; for(int i = 0; i < 20; i++) { ia[i] = この後が分かりません
listなら可能
>>922 どうしてもならリフレクションでできるけど、
まずはそういう変数を作ってる時点でダメだな。
927 :
デフォルトの名無しさん :2007/06/26(火) 14:28:32
Servlet って何でこんなにややこしいんやろ。PHP みたいにお気軽にできんのかな。
そりゃLLと比べりゃjavaはややこしいだろうよ。 groovyとかruby使えば良いじゃん。
servletの何がややこしいんだ? 基本的な概念だけ覚えてあとはクラスをその都度調べればいいだけだ
いや、多分サーバを用意する必要があるのが面倒っていってるんだろう。 PHPを例に出すってことは。 PHPは、Apacheのモジュール有効にするだけでいいし、という話かと。 CGI経由で、起動するJavaのテンプレート系フレームワークがあってもいいかな、とは思う。
>>929 PHPに比べたらややこしいだろ。
ファイルアップロードとかで差が出る。
そう、ファイルアップロードは致命的だよな。デフォルトで Java にないのは。
933 :
デフォルトの名無しさん :2007/06/26(火) 16:30:21
<%@ page language="java" pageEncoding="UTF-8" %> <%@ page import="java.io.*" %> <% response.setContentType( "application/octet-stream;charset=Windows-31J" ); response.setHeader( "Content-Disposition", "attachment; filename=\"sample.csv\""); String text = "sample!!!"; out.write( text ); %> 上のプログラム動かしたら冒頭に改行が3個入るんですけど、 入らないようにする方法ってないでしょうか?
System.out.printlnのoutがPrintStream型でバイナリのストリームってのが納得いきません 入力を受け取るInputStreamのinも同様に納得がいかないです 文字を入出力してるんだからテキストデータのストリームであるべきじゃないんですか?
>>933 %> と <% の間の改行を消すといいかも
>>934 標準入出力はリダイレクトでバイナリファイル扱う可能性があるので、
バイナリのストリームの方が良い。テキストからバイナリに
完全な復元ができない事も考えればバイナリであるべき。
System.in がテキストデータを扱う事の方が多いのに
InputStream だとバイナリしか取れなくて、いちいち
InputStreamReader でラップするのが面倒ってのは同意するけど。
>>934 gzip -dc foo.tar.gz | tar xf -
みたいに、標準入出力はバイナリを受け渡すことも多いのです。
文字を入出力しているという前提が間違っている、ということで。
>>934 の憤りはどこへぶつければいいのかwww
>>935 改行削ったら上手くいきました!
レスありがとう!!
940 :
934 :2007/06/26(火) 17:16:18
なるほど…バイナリもテキストもどっちも扱う可能性があるので 変換可能なバイナリストリームを採用してるんですね。 でも、System.out.println("Hello"); のようなありきたりの文は、 Helloという文字列のテキストデータをバイナリストリームで扱ってることになりませんか? InputStreamReaderの場合と同じようにPrintWriterでラップするなら分かるんですが。
端末から見たらテキストなんてエンコーディングに従ったバイト列だろ。 out.print形式はjavaがデフォルトのエンコーディングを使って変換してるだけ。 たしかjavadocに書いてあるぞ。 ところでjavaって標準出力がDOS-BOXなどの端末だった場合、 System.outへ一度出力した文字は消せないの? テキストがスクロールアウトして新しいテキストが流れてくるんじゃなくて ローグライクみたいにスクロールさせずに画面更新したりクリアしたりってどうするの?
>>940 そのままバイナリストリームで扱ってて、最終的にシェルがそれをテキストに変換にしてるんじゃね?
>>941 > System.outへ一度出力した文字は消せないの?
改行前なら \r で行頭に戻れるかもしんない。
端末と System.out の実装の両方に依存するけど。
> ローグライクみたいにスクロールさせずに画面更新したりクリアしたり
jcurses みたいな外部ライブラリ使ってくれ。
というかテキストストリームとバイトストリームの区別って改行コードの扱いだけだったと思ってたんだが違うの?
>>942 その理論だと標準入力をInputStreamReaderでラッピングする必要も無い気がする
int型のメソッドでreturnでxという変数を返すとき、mainの条件で「xが帰ってこない場合」というifは作れるのでしょうか?
変数 x は返せない
949 :
デフォルトの名無しさん :2007/06/26(火) 18:25:01
jdbcでpostgreSQLにつなごうとしているのですが、 以下の設定でなぜかNo Suitable Driverと言われてしまいます。 どこがおかしいのでしょうか? CLASSPATHにはjarファイルの絶対パスを記述しています。 jdbcドライバは、postgresql-8.2-505.jdbc3.jar postgreSQLは8.2を使っています。 String url = "localhost:5432"; // args[0]; String usr = "test"; // args[1]; String pwd = "test"; // args[2]; // JDBCをここでロード Class.forName("org.postgresql.Driver"); // 接続 System.out.println("Connecting to Database URL = " + url); Connection db = DriverManager.getConnection(url, usr,pwd);
951 :
デフォルトの名無しさん :2007/06/26(火) 18:29:58
何をきっかけとして
>>817 の処理を行うつもりなの?
IEのスクリプト?
>>947 そのメソッドで例外を投げれば、値を返さずにメソッドを終了すること
ができる。mainではtry-catchすればいい。
そんなことはしないで、Integerなどクラスを使って、値を返したくない
ときはnullを返すのが良いと思う。
>>950 Javaだとかなり難しい。ウェブ制作板へどうぞ。
956 :
941 :2007/06/26(火) 18:48:56
thx! やっぱ依存か。 Consoleクラスが追加されたけど現状だとエコー文字列のマスクしかできないからなぁ。
957 :
デフォルトの名無しさん :2007/06/26(火) 19:26:11
任意のURLからHTMLの特定部分、例えばTABLEだけを吸い出したい 時に、純粋にJAVAだけを使うのと他のスクリプト言語を併用するのでは どちらが効率や再利用性の面で優れてますか。 またできたら、上記の場合のお勧めのスクリプト言語を教えてください。
GroovyやRhinoからjavaのライブラリ使う。 HTMLParserとか。
959 :
デフォルトの名無しさん :2007/06/26(火) 19:29:24
>>950 >>955 java script を使うほうが一般的ですがjavaアプレットでも簡単にできます
960 :
デフォルトの名無しさん :2007/06/26(火) 19:36:45
Rhinoってサーバサイドで動くんですか?
javaしか使えないくせに 俺一流プログラマー みたいな顔してる上司がうぜぇ Cマスターの俺に指図すんじゃねーよ屑 こんな糞言語使えるだけで満足か 早く市んでくれ
962 :
デフォルトの名無しさん :2007/06/26(火) 20:10:55
cは開発の能率悪いでしょ
963 :
デフォルトの名無しさん :2007/06/26(火) 21:02:02
>>957 TidyLibというものがあります。
ほとんどの言語に対するバインディングがあるので、
一度調べてみてください。
商用製品でも採用例が多く、一番実績があると思います。
>>949 >String url = "localhost:5432"; // args[0];
↓
String url = "jdbc:postgresql:dbnamehogehoge";
しかしそのエラーメッセージも不親切だよなw
Socketって後始末に明示的にclose()呼び出さなくてもいいですか? SocketインスタンスがGCに回収されるときに自動的にコネクション切断 などの面倒は見てくれるんでしょうか?
明示的に呼び出せるタイミングがあるなら、そのタイミングでcloseを呼び出せ
>>965 面倒見てくれるかどうかは実装依存だろう。
SocketもSocketImplもfinalizeはオーバーライドされていないから、
GCのタイミングでの処理は何もしないかもね。
まあ適当な時に適当に切断はされるだろうけど、エレガントに処理されるかどうかは分からん。
基本的にネイティブなリソースを触った場合GCに任せないで自分で解放する。 ファイナライザ使うのも間違い。
>>966-968 レスありがとうございました!
なるほど、close()は明示的に呼び出さないとダメなんですね。
勉強になりました。
970 :
デフォルトの名無しさん :2007/06/27(水) 00:04:19
GC時に処理させたいならファイナライザを使うのは間違いじゃないと思うがね 最後までその機会が来ないことがあることは想定しておかないといけないが
>>970 この質問の場合はfinalizeに処理させるのは間違いだろ。
一般論で質問者を惑わせるな。
972 :
デフォルトの名無しさん :2007/06/27(水) 00:31:11
便乗ですが Socket s = new Socket(hogehoge); BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream(), "UTF-8")); 見たいな処理したあとの解放って s.close(); だけでいい? br.close(); も必要? あるいは InputStreamReader の close() とかもしとかないとだめ?
>>970 この場合はGCに任せて良いかどうか判断するのが難しいだろう。
javaのファイナライザがどういうためのものかちゃんと理解してないならなおさら。
>>957 JavaにXMLパーザってついてなかったっけ?
HTMLはSGMLアプリケーションなんだが。 XMLパーサにHTML食わせても整形式エラー吐くと思うぞ。
976 :
デフォルトの名無しさん :2007/06/27(水) 00:56:20
>>974 ドキュメント検索したらHTMLパーサも付いてましたね
HTML->JAVA
JAVA->HTML
HTML->HTML
でXMLも噛ませられれば操作上は十分になってきますね
XMLパーサとサーブレット&JSPを使うとXSLは必要なくなるんでしょうかね?
ご回答いただいた方々、まことに有難うございました
いただいた回答の中のRhinoは有用性が高そうなので
検討してみます。
>>972 (1) 使ってるラッパークラスのコンストラクタが例外を発生しないこと
(2) ラッパークラスの close がラップしてるクラスの close を呼び出すこと
を確認して、最も外側のクラスの close を対処すればいい。
javax.swing.text.html.parser
>>972 s.close() すれば
s.getInputStream() で得られたストリームも自動的に close() される。
sclose() してない時に br.close() した場合、成功すれば、
s も勝手に close() される。
980 :
デフォルトの名無しさん :2007/06/27(水) 01:06:08
>>979 IDEによってはエラーを吐きますね。
明示的にクローズした方がいいと思います。
>>978 あれパーサでパースして結果をレンダラに渡す程度の使い道しか想定してないからなぁ。
パース結果を自分でハンドリングするなら他のライブラリの方が良い。
まあ、それ以前にHotJavaのパーサは3.2finalの独自拡張なんで現行とは少し違うが。
982 :
デフォルトの名無しさん :2007/06/27(水) 01:09:33
パーサの存在を知らなくて自作してしまったorz
SGMLのパーサを実装できるほど程の知識と腕があるなら自前が良いけどなw 正規表現なんかで実装しちゃだめだぜ。
javaでbigintの変数を宣言するときにはどのようにすればよいのでしょうか? bigint a; のような感じにしても認識してくれません
985 :
デフォルトの名無しさん :2007/06/27(水) 01:20:31
java.math.BigInteger
前にもあったぞこのネタ
このスレはネタとバグでできています
long型でないと数値がオーバーするので、long型の配列を作りたいのですが、 long p[]=new long[(int) (n+1)];だと結局エラーが出てしまいます。どうすればよいでしょうか?
>>988 何がどうエラーが出るんだ?
明確なエラーが出るのにその状況とエラーメッセージを書かないのは問題を解決したくないからか?
エラトステネスのふるいのメソッドをlong型に変更して扱える最大数を増やしたいのですが、上手く行かないのです。 public static int Primes(int n){ int i,k; int x[]={0}; int p[]=new int[n+1]; for(i=2; i<=n; i++) p[i]=1;{ for(i=2; i<=n; i++){ if(p[i]==1){ x[0]=i; for(k=2; i*k<=n; k++) p[i*k]=0; } } } return x[0]; }
エラーは Exception in thread "main" です
小出しにするなよ、もっといろいろ出てるだろ
>>990 配列サイズはintなのでlongは無理。
配列以外のコレクションを使うか、配列を複数用意して使う。
でも単純に考えてもint限界のInteger.MAX_VALUE*8バイトでもギガバイトをはるかに超えてることは認識してる?
そのプログラムのような単純なエラトステネスのふるいはかなり効率が悪いと思うし。
995 :
デフォルトの名無しさん :2007/06/27(水) 03:03:04
whileに直せばいいじゃん
> for(i=2; i<=n; i++) p[i]=1;{ ここじゃね? シンタックスエラー出てない?
じゃあ1000取り合戦でもしますか
>>996 文法的には問題ないはずだが、アルゴリズム的には知らん
殺伐としてきたZE!!!!
いやっほーーーーーーーーーーーぅ!!!
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。