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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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デフォルトの名無しさん:2007/05/29(火) 18:04:45
ずるしてらくしてかれいに2げっとかしらかしら〜
3デフォルトの名無しさん:2007/05/29(火) 18:55:46
チョー初心者です
SUN JAVA プログラマ って取得すればそれなりの評価はありますか?
SUNの開発ソフトを使わないと取得は難しいのでしょうか?
4デフォルトの名無しさん:2007/05/29(火) 19:15:52
>>3
プログラマの資格は全て、あんまり評価されない。

会社によっては給料良くなる資格もあるけど、それは自分で調べてね。
5デフォルトの名無しさん:2007/05/29(火) 20:17:26
>>3
誰も取らないから希少価値があるんじゃないかな?

少なくとも既にできる人たちは取らないと思います。
免許とかではないので。
6デフォルトの名無しさん:2007/05/29(火) 21:12:51
char a='こんにちは';

この記述の仕方間違っていますか?
文字リテラルがとじられていませんと言わてしまいます。
7デフォルトの名無しさん:2007/05/29(火) 21:17:24
>>3
まぁ会社によっては一時金支給、極まれに給料上乗せってところが多いんじゃないかしら
あ、ソフト開発関連の会社ね。
試験費用出してくれるような会社だったら腕試しに受けてみてもいいかも。
自腹じゃ受ける気にならんよなぁ
8デフォルトの名無しさん:2007/05/29(火) 21:18:30
>>6
まちがってる
9デフォルトの名無しさん:2007/05/29(火) 21:18:49
>>6
間違い過ぎ
10デフォルトの名無しさん:2007/05/29(火) 21:23:13
>>6
まず文字と文字列の違いから調べる
116:2007/05/29(火) 21:26:18
>>8さん
>>9さん

文字列引数どうやってかけばいいんすかね?
教えて貰ってもいいっすか?



126:2007/05/29(火) 21:27:19
>>10さん

出直してきます。
13デフォルトの名無しさん:2007/05/29(火) 21:28:45
>>11
文字列引数の定義お願い。

>>6は引数関係ないし、ぶっちゃけ釣りだとおもってるんで。
14デフォルトの名無しさん:2007/05/29(火) 21:32:43
何か宿題のニオイがする・・・・
15デフォルトの名無しさん:2007/05/29(火) 21:37:47
>>13さん

釣りじゃないっすよ。2ヶ月まえから勉強しはじめました。
引数って型の「=」の後の文字や数字の事じゃないんすか?

なんかintばっかりで飽きたので、いろんな型使ってみようと思って試してみたらエラーでた次第でございます。
出直してきます。


16デフォルトの名無しさん:2007/05/29(火) 21:49:18
2ヶ月でそれか・・・。
つーか、適当な本嫁。
根本的におかしすぎて、何を言っていいやらさっぱりだ。
17デフォルトの名無しさん:2007/05/29(火) 22:10:03
javascriptを使って、そのページを見ている人が画面でどのような操作を
したかわかるようになりますか?
文章のコピーなど・・・
18デフォルトの名無しさん:2007/05/29(火) 22:13:38
あんたはWebアプリの仕組みから勉強しなおしだな。
19デフォルトの名無しさん:2007/05/29(火) 22:19:03
jre1.6.0_1をインストール後、
コントロールパネルにあるJavaを起動しようとすると、
Could not find the main class
とエラーがでて、起動失敗します。

Eclipse_v3.2.1で、6.0準拠でコンパイルし、HelloWorldを実行しても、同様のエラーが出て実行できません。

以前のjre(1.5.0_11)では、問題は発生しませんでした。

解決方法がありましたら、情報ください。よろしくお願いします。
20デフォルトの名無しさん:2007/05/29(火) 22:22:20
スレの頭から飛ばしまくってんなぁ・・・

>>19
アンインストールしてみれば?
21デフォルトの名無しさん:2007/05/29(火) 22:28:45
よくみると1のテンプレにJavaScriptの質問はスレ違いって書いてあったな。
スマソ
2219:2007/05/29(火) 22:39:06
>>20
1.6も1.5も一度アンインストールしてから、再インストールしてもダメでした
別のPCでは問題ないので、使ってるPCに何かしら原因があるのはわかるんですが、
それがなんなのかさっぱりです。
23デフォルトの名無しさん:2007/05/29(火) 23:10:06
>>22
Eclipseは起動するんでしょ?
設定からJava − インストール済のJREのところを確認。
出来るのであれば一度クリアして設定しなおしてみて。
24デフォルトの名無しさん:2007/05/30(水) 00:25:24
ttp://informa.sourceforge.net/
これを使ってRSSを取得しようとしているのですが、
アクセス先のURLにベーシック認証が設定されている場合
どうすればよいでしょうか。
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"));

ちなみにプログラミングは最近はじめたばかりの初心者です。どうかお願いします。
26デフォルトの名無しさん:2007/05/30(水) 04:10:43
プログラム内でi++だけしても、アプリ再起動したときにファイル名ぶつかる。
ファイルかDBにiを保存するしかないんじゃない?
27デフォルトの名無しさん:2007/05/30(水) 04:13:59
>>24
informaを使ったことないので見当外れかもしれないが、
FeedParser#parseでURLを渡す代わりに、
setRequestPropertyでAuthorizationにセット済みのURLConnectionのInputStreamを渡してやるとか?
2819:2007/05/30(水) 08:14:20
>>23
やってみましたが、状況は変わらずです。
29デフォルトの名無しさん:2007/05/30(水) 08:50:17
>>28
環境変数(path, classpath)あたりをいじったことある?
3019: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
の結果をファイルを指定に書き出すオプションはあるんでしょうか?
ちょっと見付けられなかったので、もしあれば、教えて頂けないでしょうか。
32デフォルトの名無しさん:2007/05/30(水) 09:30:49
>>30
環境変数周りは昔から鬼門なんだわ。
path(classpathでない方)にjava関連が残っているならば一度消す。
それで起動しなくなるならば、アンインストールしてインストールしなおす方がいいかも。
classpathの方は、存在自体がウンコの場合があるので、一度環境変数ごと消す方がいい。

リンク先見たが、勝手にclasspath書き換えるのか・・・糞林檎。
33デフォルトの名無しさん:2007/05/30(水) 09:32:04
>>31
標準出力をファイル出力なんかにパイプするなりしたら?
3419:2007/05/30(水) 10:35:34
>>32
ダメでした・・・

CLASSPATH、QTJavaの2つの環境変数を消して(ほかにJava関連はありませんでした)、
再起動⇒アンインストール⇒再起動⇒jre1.6インスト
したのですが、同様のエラーが以前発生します。

QuickTImeもアンイストしたんですが、意味無かったです。

そもそもCLASSPATHなくても、jre1.5は問題なく動作してたので、何が原因かますますわからなくなってしまいました。
35デフォルトの名無しさん:2007/05/30(水) 11:59:04
>>34
コマンドプロンプトを表示して、
java -version
と打つとどうなる?
36java.lang.Exception:2007/05/30(水) 13:45:33
>> 34
「jre1.6インスト」
そもそもEclipse環境にはJREじゃなくてJDKが必要なんだけど・・・
37デフォルトの名無しさん:2007/05/30(水) 13:55:12
> そもそもEclipse環境にはJREじゃなくてJDKが必要なんだけど・・・
ウソはいかん。
3819: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();
}
}
40デフォルトの名無しさん:2007/05/30(水) 14:34:58
>>38
アンインストールはされてないようだね。
pathなどにも入っていないということになれば、レジストリに設定されているという所だろうな。
上書きインストール、アンインストール、その他もろもろ試してダメだとすると、近くに詳しい人いないならばOS入れなおす方が早そう。
4131:2007/05/30(水) 14:45:50
>>33
ありがとうございました。頂いた線でやってみたいと思います。
4219: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
どこが間違ってるか教えてくれないでしょうか。
4439:2007/05/30(水) 15:24:11
追記
JInternalFrame.setSelected(true)で見た目上は選択済みの色になったのですが
エンターキーを押すとバックグラウンドのツールで改行が・・・。
4519:2007/05/30(水) 15:42:38
結果として解決できませんでしたが、色々とご意見ありがとうございました。
レジストリもわかる範囲でいじってみましたが、うまくいきませんでした。

時間に余裕ができたら、OS入れなおしてみます。それまでは1.5で、やってみます。

46デフォルトの名無しさん:2007/05/30(水) 19:35:29
firefoxで連続した半角文字を折り返す処理について
下記で紹介されているスクリプトを使ってみたのですが
なぜかまともに動いてくれません・・・。原因がわからない。
このスクリプトを使うとき何か注意しないといけない点とかありますか?

http://www.koikikukan.com/archives/2005/08/04-235647.php
47デフォルトの名無しさん:2007/05/30(水) 21:03:21
>>46
質問する場所を注意しないといけませんね
48デフォルトの名無しさん:2007/05/30(水) 21:07:07
>>46

+ JavaScript の質問用スレッド vol.56 +
ttp://pc11.2ch.net/test/read.cgi/hp/1178526934/
49デフォルトの名無しさん:2007/05/30(水) 22:04:22
あるクラスCLASS1で求めた整数型の値kを別のクラスCLASS2で呼び出したいんですけどどうすればいいんですか?
5024:2007/05/30(水) 23:36:39
>>27
ご説明いただいた方法でできました。
ありがとうございます。
51デフォルトの名無しさん:2007/05/31(木) 05:22:26
>>49
アルファベットぐらい自分で勉強してから来い
52デフォルトの名無しさん:2007/05/31(木) 07:16:45
Javaの参考書を買おうと思うのですが、プログラミングに使ってるソフトがエクリプスならばやはり参考書もエクリプスで解説してるものがいいんでしょうか?
53デフォルトの名無しさん:2007/05/31(木) 09:11:59
>>52
その方がいいとは思う。
だけど、Eclipseを使っていて、かつ入門に適した本ってのがない。

個人的にはEclipseの本1冊と、独習Javaあたりを併用するのがいいと思う。
独習Eclipseとか出ないかね。
54デフォルトの名無しさん:2007/05/31(木) 11:07:51
コードスタイルについて質問なんですけど、
public class hoge{
public void hage(){
}
}
てやるのが一般的らしいのですが、
public class hoge
{
public void hage()
{
}
}
て書くのは邪道?
55デフォルトの名無しさん:2007/05/31(木) 11:26:09
>>54
そんなのはプロジェクトのコーディング規約なわけで、自分だけでやるなら
なんだっていいだろ。
まあ、ECMAぐらいは知っておけ
5654:2007/05/31(木) 12:29:25
レスありがとうございます。
そうですか・・・目を慣らさせとくために、コードスタイルを前者に変えて
やって見ようかと思います。
57デフォルトの名無しさん:2007/05/31(木) 12:54:15
コードフォーマットはこだわらない。
んなもん、Eclipseで設定して一発変換でしょう。
58デフォルトの名無しさん:2007/05/31(木) 15:47:46
>>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)
対処法などありましたら教えていただけないでしょうか。
60デフォルトの名無しさん:2007/05/31(木) 17:06:43
>>59
なんかぐぐるとこういうのがあったりするけど、DB板で聞いたほうがいいかもね。
http://eai.ittoolbox.com/groups/technical-functional/seebeyond-l/update-timestamp6-in-oracle-results-in-sqlexception-965046?cv=expanded
聞きなおすときにはOracleとJDBCの正確な版数(たとえば9.2.0.5とかそういうマイナー版数まで含めたもの)も
示したほうが教えてもらえるかも。
61デフォルトの名無しさん:2007/05/31(木) 21:44:44
テスト用と割り切った GUI を提供するような仕組みなりプログラムってないものでしょうか。

単に、開発中に動くようになった部分をメンバーに見せるとき、CUI だとあんまりだってだけなのですが。

極論すれば

public static String executeA();
public static String executeB(String);
public static String executeC(String String);

こんなのを用意したら(引数も戻り値も String で結構)、
パラメータの数分のテキストエリアと、実行ボタンが並ぶ。
戻り値はメッセージボックスでフォーマット無視で表示してくれれば構わないのですが。
62デフォルトの名無しさん:2007/05/31(木) 22:18:44
>>61
引数を配列で渡してGridLayoutかなんかにfor文でグリグリ貼り付ければできそうな気も
するけど…あとはコンポーネント毎にリスナを登録して…actionPerformedの中がちょっと
面倒かな?そうでもないかな?よくわからないや
単なる思い付きです。
63デフォルトの名無しさん:2007/05/31(木) 22:37:50
>>61
javax.swing.JOptionPane 使えば、いくらか似たような事ができそうな気もする。
64デフォルトの名無しさん:2007/05/31(木) 23:01:53
>>61
ある程度の制限をかければ可能ジャマイカ?
というか、JUnitのTestRunnerみたいなのでいけそうだけど。

個人的にはCUIでいいと思うけどなぁ
Eclipseのプラグインでリッチなコンソールを作るのはどうだ?w
65デフォルトの名無しさん:2007/06/01(金) 00:00:13
日本語が含まれているjavaファイルがコンパイル時にエラーになってしまいます・・・。
66デフォルトの名無しさん:2007/06/01(金) 00:13:27
エラーも貼らないで相談ですか
67デフォルトの名無しさん:2007/06/01(金) 00:21:05
>>62-64
やっぱりそんな所と言うか、地道に一つ作ってあとはコピペ
がよさそうですかね。ありがとうございます。

EclipseのRCPは少し考えたのですが、意外と手ごろと言う感じでなかったので。
スタンドアロンでもいけるあたりはいい感じだったのですけど。
68ニュースナビゲーター:2007/06/01(金) 00:31:44

人気の高いニュースをすぐ見よう。
「祭」に、のりおくれるな。

2ちゃんねるニュース速報+ナビ
http://newsnavi.2ch.net/

WWWブラウザの「お気に入り」や「ブックマーク」に登録しよう。
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;
}
70デフォルトの名無しさん:2007/06/01(金) 01:53:46
この程度のプログラムで丁寧に解説するって、見たまんまじゃん。
よくわからないじゃなくてホントはまったくわからないんだろ?
71デフォルトの名無しさん:2007/06/01(金) 02:08:14
まったくといっても過言ではないですね。
すいません。
どうか僕が理解できるように解説してください。お願いします
72デフォルトの名無しさん:2007/06/01(金) 03:19:51
コードが何をするのかがわからないのか、
なんでこのコードで目的を達成できるのかがわからないのか。
73デフォルトの名無しさん:2007/06/01(金) 03:48:23
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などのファイルを読み込んで表示させるにはどうすればよいのでしょうか?
76デフォルトの名無しさん:2007/06/01(金) 09:47:34
なんかボタンがあって、
それを押すと、忠告が出るやつの
タグってどういうのですか?
インプット何とかってやつw
7754:2007/06/01(金) 10:29:01
JOptionPane.show〜Dialog("-------");色々あるから〜は自分で調べてね。
78デフォルトの名無しさん:2007/06/01(金) 10:46:10
>>76
お前のソレはjavaScriptの事じゃね?
79デフォルトの名無しさん:2007/06/01(金) 12:45:23
いままでの中で一番レベルの低いスレになりそうです
80デフォルトの名無しさん:2007/06/01(金) 18:26:13
アプレットのテキストエリアに.txtなどのファイルを読み込んで表示させるにはどうすればよいのでしょうか?
どうしても出来ません
教えてください
81デフォルトの名無しさん:2007/06/01(金) 18:51:29
アプレットが出来ないのか、テキストエリアが出来ないのか、ファイルの読み込みができないのか、権限を与えるのができないのか、まずは状況を説明汁
82デフォルトの名無しさん:2007/06/01(金) 21:03:00
テキストファイルはサーバーにあるの?クライアントにあるの?
83デフォルトの名無しさん:2007/06/01(金) 22:00:52
finally節の使い所教えてください
84デフォルトの名無しさん:2007/06/01(金) 22:03:25
>>83
java.io.Closeable 実装クラスのインスタンスを必ず close() するのに使ったり
85デフォルトの名無しさん:2007/06/01(金) 22:29:22
ファイル入力(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行上書きされているようで上手くいきません

どなたかいい方法を教えてください
87デフォルトの名無しさん:2007/06/01(金) 23:13:45
>>86
TextArea#appendとかではいけない?
88デフォルトの名無しさん:2007/06/02(土) 01:15:36
>>87
ありがとうございます
出来ました。
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;
}
90デフォルトの名無しさん:2007/06/02(土) 13:09:42
>>89
丁寧にいうと、お前には無理。
91デフォルトの名無しさん:2007/06/02(土) 17:11:04
指定した範囲の乱数を取得したいのですが、どのようにしたらよいでしょうか?
例えば2以上6以下の範囲でといった感じです。
お願いします。
92デフォルトの名無しさん:2007/06/02(土) 17:42:28
>>89-90
>>69-72

あと複合化じゃなくて復号な。二重に間違ってる。
93デフォルトの名無しさん:2007/06/02(土) 18:23:23
>>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が同じと見なされないみたいで、
消えてくれません。

いい方法はないでしょうか?
95デフォルトの名無しさん:2007/06/03(日) 00:03:45
Pointクラスというものがある。
96デフォルトの名無しさん:2007/06/03(日) 00:08:21
配列の代わりにListを使う
9794:2007/06/03(日) 00:39:57
>>95
J2MEなのでありませんでした orz
>>96
String専用Vectorみたいなもの?

結局座標をStringにしてしまいました。
98デフォルトの名無しさん:2007/06/03(日) 00:56:55
専用クラスつくってequalsメソッドをオーバーライド、これだね
99デフォルトの名無しさん:2007/06/03(日) 01:57:19
hashCodeのオーバライドも忘れずに
100デフォルトの名無しさん:2007/06/03(日) 04:47:35
java+swingでsocketを使ってネットワーク認証を行うプログラムを作っているのですが、IP更新をJAVAから行うことはできますか??
認証をとった後、IPを自動的に更新したいのですが検索しても見つけられなかったもので・・・
101デフォルトの名無しさん:2007/06/03(日) 08:21:49
Javaを勉強していく上でJavascriptが必要になるときってありますか?
102デフォルトの名無しさん:2007/06/03(日) 08:25:40
別に
103デフォルトの名無しさん:2007/06/03(日) 08:49:33
Web系が多いから必然的にやることになるわな。
だけど、難しい処理なんてほとんどないから、必要になった時に文法とか関数調べられればそれだけでOKだと思う。
104デフォルトの名無しさん:2007/06/03(日) 10:14:55

 【プログラマーの方々へ】

ageで失礼します。Threadを使う並列処理プログラミングを上手に行う方法を
ご教示ください。

javaのサンプルファイルを見て勉強しますと、「あ、こんなところで
wait();」、「ここでsynchronizedを使うのはなぜ」、「notify();を
わざわざメソッドの最後に書き込むのはどうして」、などの疑問が
噴出します。

C.A.R.ホアの並列処理の教科書を読んで勉強をしたことがあるのですが、
理論と実践は随分違うなと感じます。

実際に現場で並列処理のプログラミングをされていらっしゃる方々、
どうかご教示ください。お願い申し上げます。
105デフォルトの名無しさん:2007/06/03(日) 11:14:53
>>104
Threadでの処理が必要だなと感じたらThreadで処理する。
synchronizedでもwaitでも何でも必要なかったらしない
使わざるを得ない、又は使った方が良いパフォーマンスが得られたからから使うって感じかな。
Threadを使ったものと使わないものを二つ用意してパフォーマンスを比べるってのが理解しやすい思うよ。
106デフォルトの名無しさん:2007/06/03(日) 11:44:21
>>105
レスどうもありがとうございます。

そこの判断に利用できるTOOLは何かありますでしょうか。
スレッドの振る舞いを可視化できるようなモノがあったら使ってみたいの
ですが。
107デフォルトの名無しさん:2007/06/03(日) 14:01:04
Javaでマルチスレッドなプログラミングをやりたいなら
ダグリー共著の少し前に出た本を読むといいよ
108デフォルトの名無しさん:2007/06/03(日) 17:11:48
すみません。初心者なのですが、どうしても分らないので質問させてください。
swingを使っています。

まず、下記のように画像を表示するメソッドを作り、一旦画像を表示させました。

public void imagehyouji(String image){
   label01 = new JLabel(new ImageIcon(image));
   panel02.add(label01);
}

しかし、その後で別の画像の引数を渡してメソッドを呼び出しても、画像が変わらないのです。
このメソッドをどのように改良すれば、メソッドを呼び出すたびに画像を変えられますか?

お手数ですが、どうか教えてください。お願いいたします。
109デフォルトの名無しさん:2007/06/03(日) 17:41:51
>>108
画像をセットするメソッド
JLabel#setIcon(Icon icon)

セットしたらコンテナのvalidate()を呼んで描画を更新する
110デフォルトの名無しさん:2007/06/03(日) 18:12:38
>>109
できたぁあああああああ
ありがとうございました!( TДT)
111デフォルトの名無しさん:2007/06/03(日) 20:41:49
org.apache.commons.httpclient について教えてください。
あるサイトにログインし、トップページを表示するようなプログラムを作ろうとしたのですが、
org.apache.commons.httpclient.HttpMethodDirector isRedirectNeeded
情報: Redirect requested but followRedirects is disabled
と、出てしまいログインすることが出来ませんでした。

処理の流れとしましては
http://login.hogehoge.xxx/login を post送信
↓(ログイン画面を解析して、setParameterにリクエストパラメータをセットし)
http://login.hogehoge.xxx/login を post送信
↓(ここでorg.apache.commons.httpclient.HttpMethodDirector isRedirectNeededと出てしまいます)

PostMethodではsetFollowRedirects(true)にするとエラーになったので、GetMethodに変えて
送信してみましたが、GETリクエストは処理されないのか「パスワード」が違います。のHTMLが返ってきました。


正常な流れだと
http://login.hogehoge.xxx/login を post送信
↓(ログイン画面を解析して、setParameterにリクエストパラメータをセットし)
http://login.hogehoge.xxx/login を post送信
↓(ここで http://hogehoge.xxx/index.html にリダイレクトするHTMLが返ってくるはずです)
http://hogehoge.xxx/index.html に リダイレクト送信

になると思うのです。 ヘッダー情報を細かく開示しないと判断できないでしょうか?^^;
Redirect処理の方法が分からなく躓いていると思うのですが、どなたかご教示願います。
112デフォルトの名無しさん:2007/06/03(日) 20:43:22
あぁ、すみません、アンカー付いちゃった><
113デフォルトの名無しさん:2007/06/03(日) 21:50:53
誰か…>>74について…
114デフォルトの名無しさん:2007/06/03(日) 22:14:09
>>113
必要性があると思えない。
プロセス(JVM)を分けたいならば、シリアライズなり方法は幾らでもあるだろ?
マルチスレッドじゃダメなのか?
どうしてVMを分けて同じメモリを共有したいんだ?
で、だれ(どのVM)がGCするんだ?

質問の意図が解らないから誰も答えないんだよ。
115111:2007/06/03(日) 22:14:35
org.apache.commons.httpclient についてですが、
違う方法(HttpURLConnection)を使ったらできました。

先ほどエラーになった個所では、 ●●へジャンプします。って リダイレクトする
htmlが取得できました。
その後トップページにリダイレクトしたら ログイン後の画面になってました。
116デフォルトの名無しさん:2007/06/03(日) 22:51:50
>>114
何を興奮してるんです?
可能かどうか聞いただけなんですが
117デフォルトの名無しさん:2007/06/03(日) 23:03:20
>>116
随分と偉そうだな
118デフォルトの名無しさん:2007/06/03(日) 23:20:08
>>113
おまえには無理
119デフォルトの名無しさん:2007/06/03(日) 23:24:57
>>118
的確な答え、サンクス
120webmaster@気まぐれアナスイ:2007/06/03(日) 23:30:07
!(Φ_Φ+)
確かに構成図だけでは何をしようとしているか理解する事は難しいです。
構成図のみで理解し使用目的が分かればprogram.上bug.は起こらないと思います。
121デフォルトの名無しさん:2007/06/03(日) 23:34:30
>>113
Cなりなんなりでメモリを共有する親子プロセスを作って、
それぞれのプロセスでJNIを経由してJVM起動すれば
共有できるんじゃないかな。
122デフォルトの名無しさん:2007/06/03(日) 23:37:41
116ですが
>>114さん失礼しました

そうですね。
普通ならマルチスレッドでやるような事を
無理矢理わざわざJVMのマルチプロセスで実現することは可能なのかなと
そういう事でした。

重ねて、失敬しました
123デフォルトの名無しさん:2007/06/03(日) 23:41:01
>>121
やはり、JNI絡みになりますかね。
なんとなく理解しました。
ありがとうございます
124デフォルトの名無しさん:2007/06/04(月) 01:58:38
>>74
Java共有クラス
http://www-06.ibm.com/jp/developerworks/java/040709/j_j-shared.html
アプリケーションで実装したという話は聞いたことがない。
125デフォルトの名無しさん:2007/06/04(月) 02:36:01
どなたか100もよろしくお願いします。
126デフォルトの名無しさん:2007/06/04(月) 07:38:29
>>125
IP更新の意味が誰も解らないと思われ
127デフォルトの名無しさん:2007/06/04(月) 07:40:51
Hibernateで値を変えていないのに更新されてしまうことがあります。
なぜですかね?
128デフォルトの名無しさん:2007/06/04(月) 08:02:06
>>127
なんの値が更新されてしまうんだ?w
129デフォルトの名無しさん:2007/06/04(月) 11:06:20
質問です

Java Runtime Environment Version 6 Update 1(最新版?)をインストールしようとすると

「インストールパッケージを開くことができませんでした。パッケージが
存在し、アクセスできることを確認してください。または、アプリケーションベンダに
問い合わせ、このパッケージが有効なWindowsイントーラパッケージであること
確認してください。」


と言う説明がでました。板違いかもしれませんが誰か詳しい方、初心者に教えて下さい。
宜しくお願いします。

130デフォルトの名無しさん:2007/06/04(月) 11:22:46
>>129
教えて下さいって書いてあるけど、何を教えて欲しいの?
131デフォルトの名無しさん:2007/06/04(月) 11:31:03
>>130

すいません。レスありがとうございます。

インストールしようとするとあのようなメッセージがでて
うまくインストールできません。何か解決方法があれば教えて頂きたいです。
132 ◆uzjW2GOr6w :2007/06/04(月) 11:48:04
なんかスレ違い気味な気もしますが、半分Javaの話なので
ここで質問させてください。

JavaのWebサービスとVB.NETのクライアント間で
SOAPを使った通信について知りたいのですが、
参考になるサイトや書籍を教えていただけますか?
ここでレクチャーして頂けるならそれでもOKです。

Javaでシリアライズした物と.NETでシリアライズした物では
書式が変わってきますよね。
(Javaはstrinとかintとかも全部書き出すけれど、
 .NETの場合は変数名だけが残って型の情報が失われる)
このあたりをどう吸収すればよいか知りたいのです。
よろしくお願いします。
133デフォルトの名無しさん:2007/06/04(月) 12:41:12
>>132
その差異を吸収するのがSOAP。
自分で決めたフォーマットでやりとりすればいいだけ。
片寄せするのが手っ取り早いけどね。
当然ながら、全ての変換が上手くいくわけない。
134デフォルトの名無しさん:2007/06/04(月) 12:44:03
>>131
インストールしたJREと自身のOSはマッチしているか確認
135デフォルトの名無しさん:2007/06/04(月) 12:46:08
通信内容は言語に依存しない。
吸収も何もXMLの定義が十分なら問題ないはず。
136 ◆uzjW2GOr6w :2007/06/04(月) 16:17:03
レスありがとうございます。
実はSOAPについてもあまり理解できておらず、
Webを見ても求めている情報が出てこないのですが、
XMLEncoder.writeObjectと同じような感じで
SOAPを吐けるのでしょうか?

それともまずWSDLありきなのでしょうか?
よろしくお願いします。
137デフォルトの名無しさん:2007/06/04(月) 17:01:58
>>136
定義からオブジェクト、オブジェクトから定義どちらでも可能。
138デフォルトの名無しさん:2007/06/04(月) 17:31:21
昔、生SOAPを直接使わずAxis使って、
Javaクライアントから⇔VB.NETのWebサービスの呼び出しをやったことがある。
AxisのJSDL2Javaが自動生成したコードで何とかなったよ。

と思ったら、この場合は逆なのか…
Webサービス呼び出しのコードは
.NETも、WSDLから自動生成できたんじゃないかったっけ?
139デフォルトの名無しさん:2007/06/04(月) 17:43:07
Java1.4.2で、デリゲートや関数ポインタって使えないですよね?
140デフォルトの名無しさん:2007/06/04(月) 17:57:51
ない
141デフォルトの名無しさん:2007/06/04(月) 19:14:38
>>140
ども。
142デフォルトの名無しさん:2007/06/04(月) 21:42:49
すいませんアプレット初心者なのですが
”全て選択”や”コピー”といったボタンを作成して
テキストエリアなどに書き込まれた文章をコピーするには
どうやって作ればいいのでしょうか?


143デフォルトの名無しさん:2007/06/04(月) 21:49:41
>>142
new JButton("全て選択");
new JButton("コピー");
144100:2007/06/04(月) 21:57:28
>>126
わかりにくくてすみません
Windowsでいうところのipconfig /renewのことです
145デフォルトの名無しさん:2007/06/04(月) 22:04:46
>>142
getText()
146デフォルトの名無しさん:2007/06/04(月) 22:10:20
>>144
標準APIでは無理。
147デフォルトの名無しさん:2007/06/04(月) 22:22:34
>>143
ボタンを作ってそのボタンが押されたときというif文の
中に何をするかの処理を書かなくてはいけない問い事は
わかります。その何をするかの処理のところで「全て選択」や
「コピー」という処理をさせるにはどのように書けばよいのでしょうか?
148デフォルトの名無しさん:2007/06/04(月) 23:31:59
>>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 【】;
}
}
151デフォルトの名無しさん:2007/06/05(火) 05:10:06
自分に代わって穴埋めを押し付けているのではなくアドバイスが欲しいってこと?

授業をよく思い出し参考書や配布物をしっかりと読み直しましょう
友達と相談し合ったり先生に質問するのもいいでしょう
int kye,のような打ち間違いにも気をつけて全てを埋めたら
念のためコンパイルして正しく実行されるか確認しましょう
152デフォルトの名無しさん:2007/06/05(火) 05:13:21
>>149
宿題は宿題スレへ

★★ Java の宿題ここで答えます Part 61 ★★
http://pc11.2ch.net/test/read.cgi/tech/1179168569/
153デフォルトの名無しさん:2007/06/05(火) 12:14:51
staticっていう修飾子は何のためにあるのですか?。
無くてもいいように思うのですが。
154デフォルトの名無しさん:2007/06/05(火) 12:20:13
オブジェクト指向を勉強すればわかる
155デフォルトの名無しさん:2007/06/05(火) 12:30:03
Math とか static 無かったらウザいことに
156デフォルトの名無しさん:2007/06/05(火) 12:40:11
無くてもいいけどあると便利。
便利だからどんどん使うと大変なことになるけど。
157デフォルトの名無しさん:2007/06/05(火) 13:08:12
>>153 悪魔で俺の見解だ、他の人は知らん。例えばDBのConnectionを拾得する
メソッドがある。DBManager#getPoolableConnectionとしよう。
他のクラスでDBManagerを通じてDBにアクセスしたい時getPoolableConnectionを
staticメソッドにしておけば、わざわざインスタンスを作る必要がないわけだ。
後は分かるな。
158デフォルトの名無しさん:2007/06/05(火) 13:49:47
そんなもんシングルトンパターンでいいじゃん。
159デフォルトの名無しさん:2007/06/05(火) 14:09:30
シングルトンなら結局static使ってんじゃん
160デフォルトの名無しさん:2007/06/05(火) 14:09:35
static使わずに、どうやってシングルトンするつもりなんだろ……
161デフォルトの名無しさん:2007/06/05(火) 15:48:50
下記サイトではビーンクラスのインスタンスをバイナリでファイルに書き出して
それを読み込んでいますが、このファイルの中に書かれているバイナリを
そのままreturnすることは可能ですか?
可能であれば方法を教えていただきたいです。
http://www.geocities.co.jp/Playtown/7799/progmemo/java_serialize.htm
FileOutputStreamやObjectOutputStreamをreturnしてみましたが
バイナリが返っている様子はありませんでした。
162デフォルトの名無しさん:2007/06/05(火) 17:29:42
>>161
returnする側のメソッドからファイルデータを返すなら、
ストリームからreadしたものを返せばいいんじゃね?
ストリームそのものをreturnして、
そのストリームを使って呼び出し側でreadするなら、
returnする側のメソッド内で既にreadしてるとかcloseしてしまってるかに注意。
163デフォルトの名無しさん:2007/06/05(火) 17:45:06
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>
164デフォルトの名無しさん:2007/06/05(火) 18:50:29
スレ違いじゃねぇか?
165163:2007/06/05(火) 18:57:05
>>164
wikiで関連スレは確認したつもりですが、他に適当なスレはありますでしょうか?
宿題スレとかでしょうか?
166デフォルトの名無しさん:2007/06/05(火) 19:28:29
http://www2.2ch.net/2ch.html
ここが良いんでない?
167デフォルトの名無しさん:2007/06/05(火) 19:58:58
JSP内に
<INPUT TYPE='text' NAME='text1' VALUE='テキスト'>
があります。

doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException

のrequestとresponseは具体的に、何から値をもらっているのでしょうか?
168デフォルトの名無しさん:2007/06/05(火) 20:28:07
あら、リンク張ったつもりが2chのトップに出る。悪い。
169デフォルトの名無しさん:2007/06/05(火) 20:37:35
プログラム板にframe知らないやつがいるのか・・・
170デフォルトの名無しさん:2007/06/05(火) 20:55:13
>>167
サーブレットエンジンから。
さらにいえば、HTTPリクエストから。
HTTPリクエストはあなたのブラウザから値をもらう。

入門書でも買ってこいや
171デフォルトの名無しさん:2007/06/05(火) 22:48:04
staticな変数は何となくわかってきたのですが、staticなメソッドやクラスが
どうして必要なのかわかりません。
例えばMathクラスのメソッドがどうしてstaticなのか?。
もしstaticでなければどううざいのか?。
インスタンスを生成するのってそんなに手間がかかるものなんでしょうか?。
172デフォルトの名無しさん:2007/06/05(火) 22:59:56
>>171
それはインスタンスというものを理解する必要があるね。
インスタンスは、それぞれ独立して個別の値を保持する実体だ。
つまり、いつ何時呼び出しても同じ動作をするものは、
わざわざインスタンスにする意味がないってこった。
173デフォルトの名無しさん:2007/06/05(火) 23:02:56
・インスタンスがメモリを消費
・インスタンスを作らないと使えない

以上に問題を感じなければ普通のメソッドでもいいんじゃね?
ログ出力クラスとかも毎回インスタンス作るのか?
174デフォルトの名無しさん:2007/06/05(火) 23:19:42
JavaDocを見るとき、調べる対象のメソッドがインスタンスメソッドかクラスメソッドか判るだけで
どんなことをするメソッドなのかあたりが付くようになる。
なのでインスタンスを持つ必要がないメソッドは極力staticを付けた方が良い。
175デフォルトの名無しさん:2007/06/06(水) 00:06:35
>>174
>インスタンスを持つ必要がないメソッドは極力staticを付けた方が良い。
そして地獄を見る
176デフォルトの名無しさん:2007/06/06(水) 00:48:57
>>175
どうして?
177デフォルトの名無しさん:2007/06/06(水) 02:20:40
>>176
きっと、想像できなかった仕様変更があって、
内部状態に応じて動作が変わるようにしなければいけなくなるんだろう。

たとえば、テストモードかどうかをオブジェクト内部に持つような
仕様に急に変わって、テストモードだったら(本番データを使えないので)
こっちの方法で計算するようにしてね、と言われるとか。
178デフォルトの名無しさん:2007/06/06(水) 02:32:36
それstaticぜんぜん関係ないじゃん。
179デフォルトの名無しさん:2007/06/06(水) 05:44:39
>>174
地獄へ落ちるに同意。
本当にインスタンスが不要であることが確信できるような場合にのみstaticを付けるが正しい。

インスタンスをもつ必要がない、というガイドラインだとデータクラス以外は全部staticでいいじゃんて話になるし、実際にそういうプロジェクトの経験もある。
180デフォルトの名無しさん:2007/06/06(水) 06:45:35
必要のない作りこみはプログラムを無駄に複雑にし、不具合を呼び込み拡張を困難にする。
将来的に使われなかったら無駄になるし、
使われるときになって実際に必要とされる機能との相違があれば、結局作り直し。
static で済むなら static で作り、必要に応じてリファクタリングする。

しかし、定数でないstaticなフィールドについては、
単体テストで弊害になるのでできるだけやめた方がいい希ガス
181163:2007/06/06(水) 09:06:00
>>168
だよね…。厨はカエレ!的な意味かと思ったよ…。
で、正しく何スレでしょうか…?
182デフォルトの名無しさん:2007/06/06(水) 09:31:23
>>180
staticでなくて済むならば非staticにして作り、必要に応じてリファクタリングでも良いかと・・・
183デフォルトの名無しさん:2007/06/06(水) 09:37:33
>>181
Tomcat+jsp+struts何たらってスレでも1000行ってるから次スレで
http://pc11.2ch.net/test/read.cgi/tech/1161862896/1001-1100
184デフォルトの名無しさん:2007/06/06(水) 09:40:40
スレ名変更してた。
java+webフレームワーク
http://pc11.2ch.net/test/read.cgi/tech/1181063688/
185181:2007/06/06(水) 09:46:53
>>183
>>184
誘導ありがとうございました!次スレまで調べていただいて感謝です!
186デフォルトの名無しさん:2007/06/06(水) 11:00:26
>>179
>インスタンスをもつ必要がない、というガイドラインだとデータクラス以外は全部staticでいいじゃんて話になる

ならないだろ。データクラス以外はインスタンス化しないのか?
187デフォルトの名無しさん:2007/06/06(水) 11:04:56
mein(String[] args)メソッドで呼び出すときは他クラスにメソッド配置しないと
全部staticなメソッドになって地獄見た;
188デフォルトの名無しさん:2007/06/06(水) 11:12:54
地獄見そうなメソッドだなw
189デフォルトの名無しさん:2007/06/06(水) 11:57:59
>>186
そういうプロジェクトを少なくとも2つ見た事あるぞ。
自分は追加要因(火消し)で入ったもんだから、もはや手遅れでそのルールに従ったけど、結局はプロジェクトは両方とも破綻
190デフォルトの名無しさん:2007/06/06(水) 12:04:28
具体例が無いからどっちが良いとは言えんな。
どっちにしたって地獄見るのは設計がダメだったって事なんだろうし。
191デフォルトの名無しさん:2007/06/06(水) 12:26:10
Javaで、Windowsのファイル毎の
関連付けアプリケーションのパスを取得する方法ってありますか?
192デフォルトの名無しさん:2007/06/06(水) 12:52:20
>>191
Windowsのシステムに関わる話なので当然Windows専用になってしまうが、
cmdの内部コマンドのassocとftypeをJavaから呼び出してやればいいのでは?
たとえば.txtなら、
assoc .txtで.txt=hogehogeが得られたら、
ftype hogehogeでhogehoge=関連付けアプリケーションのパスとか引数の与え方、になる。
193192: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にコペーする
}
195デフォルトの名無しさん:2007/06/06(水) 14:44:01
>>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
いまからプログラミングの勉強したいんですが初心者は何から始めるのがお奨めですか?就職に役立てるような技術が欲しい
199デフォルトの名無しさん:2007/06/06(水) 18:12:22
>>198
医師・看護師・薬剤師・介護福祉士がちょうおすすめ。
仕事はプログラマ並みかそれ以上にキツいけど。
200デフォルトの名無しさん:2007/06/06(水) 18:27:46
>医師・看護師・薬剤師・介護福祉士がちょうおすすめ。
この仕事の人にプログラミングの技術がいるってことですか?
201デフォルトの名無しさん:2007/06/06(水) 18:41:13
>>200
プログラミングは趣味で。
202デフォルトの名無しさん:2007/06/06(水) 19:41:07
>>199
その選択ができるのは進学前の高校生までだろ。
>>198は大学生くさいから諦めろ。
公務員試験の勉強をしつつ、経理の勉強でもしとけ。
プログラミングは趣味で。
203デフォルトの名無しさん:2007/06/06(水) 19:49:20
2流以下の大学の学生がプログラム関係の資格を持っていると
旧帝大で留年してるような奴と対等になれる。

ぶっちゃけ資格は何でもいい。
204デフォルトの名無しさん:2007/06/06(水) 20:16:31
勉強は二の次にして、これをネタに
あちこちの勉強会に出席してコネを作ってくのがいいんじゃまいか
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"

と出力されました。
どうやらコンパイラのバージョンより実行環境のバージョンが新しくなっていしまっているようなのですが、
実行環境をコンパイラのバージョンにあわせるにはどのような設定をしたらよいのでしょうか?
206デフォルトの名無しさん:2007/06/06(水) 23:30:19
>>187
mainの中で自分自身をnewしろよ。。。
207205:2007/06/06(水) 23:31:35
ちなみにjre1.5.0_11\bin
は持っているようです。
サンマイクロもページ分かりにくい・・・。
もう一回古いバージョンを落とそうにも場所が分からず・・・。
208デフォルトの名無しさん:2007/06/06(水) 23:35:53
>>205
Eclipseは自前のコンパイラを使うからjavacのバージョンは関係ない。
そもそも1.6のJREは-target 1.5でコンパイルしたクラスファイルを実行できる。
まず実行できなかったときの例外を確認するのが先。
209205: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
210208:2007/06/06(水) 23:45:05
>>209 >>1 死ねよ。
211デフォルトの名無しさん:2007/06/06(水) 23:47:55
>>205
>>208
もしコンパイラの問題だとしたら、
プロジェクトを右クリックしてプロパティを開く。
Java Build Path
という項目があるからTabの
Libraries
を選択して、JRE System Libraryをダブルクリックすれば
どのコンパイラが利用されているかわかる。
212デフォルトの名無しさん:2007/06/06(水) 23:48:20
親切な人が豹変したw
213デフォルトの名無しさん:2007/06/06(水) 23:56:16
これで満足?てかおんなじ人が質問してるのね。。。
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");
}
}
214デフォルトの名無しさん:2007/06/07(木) 00:00:04
>>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;
}
215デフォルトの名無しさん:2007/06/07(木) 00:03:48
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

このプログラムに則してポリモーフィズムと動的ディスパッチについて説明してほしいです。お願いします。
216205:2007/06/07(木) 00:20:34
親切にありがとうございます。
ここへの質問は初めてです。

>>213様のソースを実行してみたのですが、エクリプス上では想定通りの結果でしたが
コマンドラインからの結果は全く変わりませんでした・・・。
(コマンドラインは再起動しました)
staticでは無いメソッドを追加しても変わらない。う〜ん・・・。

javacとjavaのパスは通っているみたいですし、set CLASSPATH=%CLASSPATH%;.
をしても変化がありませぬ。

エクリプスのコンパイラは、標準のものを設定してみました。jre1.5.0_11です。
217デフォルトの名無しさん:2007/06/07(木) 00:24:09
だからstaticもコンパイラも関係ないって。>>210が切れるのも無理はない。
218205:2007/06/07(木) 00:46:02
クラスパスのオプションが必要かと思って以下の通り実行しても
結果は変わりません・・・。
java -classpath "C:\Program Files\eclipse\workspace\KBSYS\test" testa

ただ、コマンド上でのコンパイルは成功します。classファイルのタイムスタンプも変化します。

>>1や各種リンクを一昨日から散々あたっているのですが、原因が・・・。
何か、根本的で単純な間違えをしていそうな気もするのですが・・・。
219213:2007/06/07(木) 00:57:50
>>216
勘違いしているようなので
213のソースコードは>>187へのレス。

ただ213のソースコードが動かないとするとバージョンの違いではない。
今からやれることはだね、
1. ファイル名とクラス名が一致しているか確認(test.javaでclass testaとかしてないか)
2. java -cp . testaを試す
3. DOS窓じゃなくcygwinならセミコロンの代わりにコロンで区切ってみる
4. さっぱりわからんからjdkの再インストール
220213:2007/06/07(木) 01:13:05
わかった。。。
(wrong name: test/testa) ← なんでpackage化されてるんだよ!

java test.testa

でいけない?
221デフォルトの名無しさん:2007/06/07(木) 01:16:35
プロジェクト名がKBSYSなんでしょ。
そしたらtestはパッケージなんじゃねえの?

cd "C:\Program Files\eclipse\workspace\KBSYS"
javac test\testa.java
java test.testa

これでどうよ?
222221:2007/06/07(木) 01:17:54
>>220
うわ、かぶった。すまん
223213:2007/06/07(木) 01:27:30
>>221
どもです。。。
たぶんtestディレクトリの一個上の階層で
やるべき作業がわからなくて、結果が同じです、
と言われることを考えたら、全部書くべきだった orz
224デフォルトの名無しさん:2007/06/07(木) 01:31:08
え、動いたの?動いてないの?
225デフォルトの名無しさん:2007/06/07(木) 01:48:28
誰か223を英訳してくれ
226デフォルトの名無しさん:2007/06/07(木) 01:52:58
JAVAアプレットでTextAreaを使うと.append(string)でテキストを追加できますが
TextComponentを使うと.setText(string)で書き込む事は出来ますが全て上書きに
なってしまいます。TextComponentで追記するにはどうすればいいのでしょうか?
227デフォルトの名無しさん:2007/06/07(木) 02:04:36
>>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.
228デフォルトの名無しさん:2007/06/07(木) 02:08:23
>>226
敢えてやるならgetStringでとりだして文字列追加してsetString。
素直にTextArea使った方が早くね?
229デフォルトの名無しさん:2007/06/07(木) 04:10:16
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("(");
とするとエラーが出るのですが、それはもともと"("が対応してないからでしょうか?
230229:2007/06/07(木) 04:12:50
>>229のはインデントがうまくいってないので補足です。
str.split(" ") ←空白1個でsplitしています。
よろしくおねがいします。
231229:2007/06/07(木) 04:25:58
すいません、自己解決しました。

まさかと思い
if(token[i].length() != 0)
とするとちゃんと
t
u
になりました。

空白は文字としてカウントされないんでしょうか?
でもそしたらsplit(" ")でスプリットされないんでは・・・。
なんか解決できたけどしっくりこないです。
232デフォルトの名無しさん:2007/06/07(木) 04:38:13
>>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("\\(");
とする必要がある。
233229: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分だという風に解釈させる方法がみつからないのですが、どうしたらいいでしょう?


236デフォルトの名無しさん:2007/06/07(木) 13:38:59
Calendar
237デフォルトの名無しさん:2007/06/07(木) 13:55:29
ノートパソコンにJavaをいれたいのですがどうすればいいですか?
共有ソフトが使えません。
238デフォルトの名無しさん:2007/06/07(木) 13:57:35
開発環境一式をCDなりDVDに焼いてノートパソコンにインストールする
239デフォルトの名無しさん:2007/06/07(木) 16:13:10
>>237
共有ソフトという謎のモノに詳しい人に聞きなさない
240デフォルトの名無しさん:2007/06/07(木) 16:39:33
winrarとかいうヤツ
241デフォルトの名無しさん:2007/06/07(木) 17:39:19
今日からJAVAをはじめようと思ってNetBeansをインストールしたのですが、
何をどうすればいいのか良く分かりません。とりあえずプロジェクトなるものを作って、
出来たMain.javaにネットから持ってきたHelloWorldの表示プログラムを貼り付けたのですが、
実行してみるとエラー?かなんかで実行できません。しかも文字化けしてるし・・・。
Cannot find nbproject/build-impl.xml imported from E:\a??a?-a?°a?ca??a
みたいな感じなのですが・・・。助けてください
242デフォルトの名無しさん:2007/06/07(木) 17:51:45
243デフォルトの名無しさん:2007/06/07(木) 17:54:09
そっちで聞けって事ですね!
ありがとでう
244デフォルトの名無しさん:2007/06/07(木) 19:06:17
GUIの左上のアイコン(コーヒーカップの絵)って変えられないんですか?
245デフォルトの名無しさん:2007/06/07(木) 20:27:18
>>244
java.awt.Window, java.awt.Frame,javax.swing.JFrame,javax.swing.JWindow
あたりの
setIconImage()
setIconImages()
かな?
246デフォルトの名無しさん:2007/06/07(木) 21:36:36
>>245
詳しくありがとうございます
変更できました
247デフォルトの名無しさん:2007/06/07(木) 22:03:17
JTableの列にJButtonをいくつか描画して、それぞれのイベントリスナを実装しました。
まず手始めに、そのボタンをクリックするとコンソールに
そのボタンが存在するrowを表示するもので試し成功しました。
次はボタンが押されたら、そのボタンが存在する行を削除するものを試しましたが、
消せたり消せなかったりします。消せないときはボタンとしての機能が
完全に止まっていてイベントすら発生しません。
原因がさっぱりでわかりません。

248デフォルトの名無しさん:2007/06/08(金) 07:43:48
ソースもなければエラーメッセージも無しか、ゆとりは凄いな。
249247:2007/06/08(金) 08:14:31
すいません。携帯からだったもんで。
そして今もまた携帯からなんで出直します。
250デフォルトの名無しさん:2007/06/08(金) 10:12:36
質問です。
テキストフィールドに入力された文字列がプログラム中で指定されている文字列と正しいかどうか判定するには、
どう記述したらいいですか?
251デフォルトの名無しさん:2007/06/08(金) 10:16:11
252デフォルトの名無しさん:2007/06/08(金) 10:18:22
>>250
<input type="text" name="hogehoge" value="" />

request.getParameter( "hogehoge" ).equals( "tashiro" )
253デフォルトの名無しさん:2007/06/08(金) 10:59:45
SwingUtilities.invokeLater()を使うのが推奨されているのは
setVisible()のほかにどのような処理がありますか?
254デフォルトの名無しさん:2007/06/08(金) 11:06:18
>>253
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/api/javax/swing/SwingUtilities.html#invokeLater(java.lang.Runnable)
>このメソッドは、アプリケーションスレッドが GUI を更新する必要があるときに使用されます。
255デフォルトの名無しさん:2007/06/08(金) 11:17:36
>>254
具体的にはどういうときですか?
256デフォルトの名無しさん:2007/06/08(金) 13:04:57
>>234
お願いします
誰か助けてください
257デフォルトの名無しさん:2007/06/08(金) 13:38:24
>>256
つ やさしいJava
258デフォルトの名無しさん:2007/06/08(金) 15:00:58
現在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というのが上からの命令。

参考サイト・商品サイトだけでも、ご存じの方いらっしゃいますか???
261デフォルトの名無しさん:2007/06/08(金) 15:39:32
>>258
アニメーションさせるならばSpliteを作成するのが基本。
ダブルバッファリングから初めてスプライトの基礎を学ぶといいよ。
簡単なシューティングゲームくらいすぐ作れる。

>>260
サーバーJavaでゴリゴリプログラミングはNGってのが意味不明。
タッチパネル(クライアント)の開発元に問い合わせれば、そのタッチパネルのアドオンとかでありそうだけど、そっちは調べたの?
262デフォルトの名無しさん:2007/06/08(金) 15:51:46
>>261
SpliteをJava APIで探しましたけど見つかりませんでした。
JSplitPaneじゃないでしょうけど、
BasicSplitPaneDivider
BasicSplitPaneUI
らへんでしょうか?

ああ、言い忘れましたが一応ダブルバッファリングはSplitとやらを使わずに出来てます。申し訳ないです。
Spriteでぐぐっても出てきませんでした。もう少し詳しく教えていただけませんでしょうか?
263デフォルトの名無しさん:2007/06/08(金) 16:23:08
>>262
基本APIにゃない。
自分でコンポーネントクラスを拡張して作るんだよ。
264デフォルトの名無しさん:2007/06/08(金) 16:47:55
>>263
spliteに関しては後で調べてみようと思います。

早い話、ThreadとRunnableではループし続けるアニメーションしか作れないのかを知りたいです

というか後程ソースを出して再度書き込んでみます。お手数おかけしました
265デフォルトの名無しさん:2007/06/08(金) 18:02:04
JAVAを始めようかと思ってるのですが、オブジェクト指向についてちょっと聞きたいことがあります。
僕はFLASHをよく作るのですが、オブジェクト指向の概念というのはFLASHもJAVAも類似しているのでしょうか?
実際、まだクラス、オブジェクト、継承など全く理解していません。
FLASHでいうところのシンボル、インスタンスと同じものとして考えてもいいのでしょうか?
266デフォルトの名無しさん:2007/06/08(金) 19:56:17
>>265
類似とまではいかないかも知れないけど、似ているところはある。
というのもFlashというかActionScriptがオブジェクト指向っぽく書かれている。
267デフォルトの名無しさん:2007/06/08(金) 21:10:36
ネットで検索しながらiBatisとHSQLDBで簡単なアプリ(非WEB)を作ってます。

そこで質問なのですが、HSQLDBスタンドアロンモードを終了させる時はSQLで"SHUTDOWN"と打て、
とあるようなのですが、ibatisからSHUTDOWNを流そうとするとエラーになってしまいます。
どうやったら終了させられるのでしょうか?
268デフォルトの名無しさん:2007/06/08(金) 22:42:20
swingでタイピングソフトを作ってるのですが、キーボードの取得方法がわかりません。
KeyListenrを使って、できるのでしょうか?
ActionListenerならある程度わかるのですが。
269デフォルトの名無しさん:2007/06/08(金) 22:50:39
今やってるプロジェクト(オープン系)で「seasar」っての使ってるんですが
なんか、そのプロジェクトのリーダーが
全てのビジネスオブジェクトとDAOをシングルトンで
管理するように設定したって言ってました。

俺としてはありえないと思ったんですが、
これって正しい方法なんでしょうか?

俺の考えが間違ってんですかね。
270デフォルトの名無しさん:2007/06/08(金) 23:01:32
>>269
漏れもありえないと思う
271デフォルトの名無しさん:2007/06/08(金) 23:20:47
>>258=264
> スレッドを1度破棄してもう1度作るとか、そんな恐ろしいことしなきゃ無理なんでしょうか?
スレッドをsuspendで止めるほうがよっぽど恐ろしい。
スレッドの状態管理オブジェクト作ってwait/notifyで止めたり状態変更したりしましょう。
272デフォルトの名無しさん:2007/06/08(金) 23:34:42
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()を呼び出すタイミングによってはきちんと取得できていたりでどうにも安定しません。

この辺りを詳しくご教授願えないでしょうか。宜しくお願いいたします。
273デフォルトの名無しさん:2007/06/08(金) 23:36:45
>>270
やっぱりそう思いますか?

周りにいる同じプロジェクトの人たちに聞いても
誰も疑問を抱いて無いんですよね。
何がおかしいの?って感じで。
自分の考えが間違ってるのかって悩んでたんで、
安心しました。

ありがとうございます。

これから数ヶ月そんなプロジェクトに
関わんなきゃいけないと思うと気が重いっス。
274デフォルトの名無しさん:2007/06/08(金) 23:58:14
>>272
paint の中で createImage するしかない。
コードが見辛くなるけど初回の gBuf == null のときとそうでないときで処理をわける。
275デフォルトの名無しさん:2007/06/09(土) 00:28:06
>>274
回答ありがとうございます。
paintの中でしか生成出来ないんですか…わかりました。やってみます。
276デフォルトの名無しさん:2007/06/09(土) 00:35:20
リアルタイムJAVAってどうやったら使えるの?
277デフォルトの名無しさん:2007/06/09(土) 00:43:25
>>276
質問の意味が良くわからん。
278デフォルトの名無しさん:2007/06/09(土) 00:55:31
普通のVMとは違う特殊なVMやリアルタイム用のAPIとかあるの?
です。

ないかな。
279デフォルトの名無しさん:2007/06/09(土) 00:59:22
>>278
ねーよ、バカw
詩ねwww
280デフォルトの名無しさん:2007/06/09(土) 01:00:43
281デフォルトの名無しさん:2007/06/09(土) 01:13:20
Javaなんかで文字化けしやすい文字とかってあるのでしょうか?
282デフォルトの名無しさん:2007/06/09(土) 01:20:44
>>281
どういう状況を想定してるの?
283デフォルトの名無しさん:2007/06/09(土) 01:34:14
いや何となく
284デフォルトの名無しさん:2007/06/09(土) 02:08:51
窓の手で、「右クリックでコマンドプロンプトを可能」にしたのですが困っております。
これで現れるコマンドプロンプトでは、コンパイルが出来ません。

「スタート」→「アクセサリ」→「コマンドプロンプト」のものでは出来ます。
何か対処法はありますでしょうか。
285デフォルトの名無しさん:2007/06/09(土) 03:06:36
窓の手の作者に聞け
「右クリックでコマンドプロンプトを可能」にした時に出るコマンドプロンプトに環境変数を設定する方法について
286デフォルトの名無しさん:2007/06/09(土) 06:33: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を呼び出す
}
292デフォルトの名無しさん:2007/06/09(土) 11:40:40
リフレクション
293デフォルトの名無しさん:2007/06/09(土) 13:27:36
javaのオンラインリファレンスを見ても、
目的のソフトを作るにはどのクラスを使えばいいのか全く分からないのですが、
どうすればそういうのが分かってくる様になるんでしょうか?
オライリーのリファレンスマニュアルとかを見ればいいんですかね?

294デフォルトの名無しさん:2007/06/09(土) 13:30:22
インターフェースを実装する事って、
そのインターフェースの中にあるメソッドが必ず使われるという担保だけで
ちゃんとメソッドが組み込まれていれば必ずしも必要ではない?

上記の場合、クラスにメソッドがあるけど、インターフェースが実装されてない場合
コーディングルール的な事をのぞけば、単純に動かすということだけであれば
わざわざあとで実装する必要性はない?
295デフォルトの名無しさん:2007/06/09(土) 13:52:35
>>294
インターフェイスは、
メソッドが使われることを担保するのではなく、
メソッドが存在することを担保するものじゃないのか?
同じシグニチャのメソッドが存在してもインターフェイスを実装していない場合、
多態性の恩恵に預かれないんじゃないか?
複数のクラスをインターフェイスで総称できなくなる。
296デフォルトの名無しさん:2007/06/09(土) 14:03:52
>>295
>メソッドが存在することを担保するものじゃないのか?
失礼しました
その通りです。
297デフォルトの名無しさん:2007/06/09(土) 14:03:59
>>293
たくさんサンプルを読め
サンプルには何を実現しようとしているか目的が説明されているはずだ
いろいろ読んでるうちにそれぞれのクラスはどういう目的でどういう使い方をするのか分かってくる
あとは自分の目的に合わせて使う応用力の問題
298デフォルトの名無しさん:2007/06/09(土) 14:27:27
質問させてください
パターンマッチで末尾にバックスラッシュ(もしくは円記号)があるかどうかを調べたいんです。
そこでサンプルを作るのですが

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です。
299デフォルトの名無しさん:2007/06/09(土) 14:35:07
すいません。matcdesをmatchesと読み替えてください。
300デフォルトの名無しさん:2007/06/09(土) 14:36:34
String#matcdes(String pattern)は文字列全体がpatternにマッチするかどうか
301デフォルトの名無しさん:2007/06/09(土) 14:38:35
あ、おれもまんまコピーしちまったwww
String#matchesね
302デフォルトの名無しさん:2007/06/09(土) 14:41:53
その用途に限るなら、buf.endsWith("\\")でいいんじゃない?
303デフォルトの名無しさん:2007/06/09(土) 14:52:41
カタコトで「マッチデース」とか言ってる検索係の外人を想像した。
304デフォルトの名無しさん:2007/06/09(土) 15:38:54
文字列を、指定した幅内に描画する方法はありますか?
例えば、ある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したいのですが、
どうすればいいのでしょうか?
初歩的な質問ですいません。
306デフォルトの名無しさん:2007/06/09(土) 16:06:30
>>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);
307デフォルトの名無しさん:2007/06/09(土) 16:11:12
>>305
byte b = -1;
System.out.printf("0x%X%n", b);
308289:2007/06/09(土) 16:12:04
>300
ありがとうございます。納得いきました。
309デフォルトの名無しさん:2007/06/09(土) 16:16:13
>>308
末尾の文字列が\かどうかなら>>302でいいと思う。
もし、任意のパターンが文字列中に含まれるかどうかを知りたいなら、
Matcher#find()を使って判定するとかかな。
310デフォルトの名無しさん:2007/06/09(土) 16:21:53
>>307
ありがとうございます。
311デフォルトの名無しさん:2007/06/09(土) 16:31:13
>>306のstringWidthでは描画コンテクストを無視するからgetStringBoundsを使った方が正確かもね
312デフォルトの名無しさん:2007/06/09(土) 16:36:29
JAVAからwindowsのバッチファイルを引数を渡して起動したいのですが、
そういった操作をするクラスは用意されているのでしょうか?
Runtimeというのを見つけたのですが、これは別物でしょうか?
ちょっとコーディング試してみたのですが、ぬるぽが帰ってきます。

文字列入出力なら分かるのですが・・・。
313デフォルトの名無しさん:2007/06/09(土) 16:39:22
すみません。
本を参考に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などの他の環境が必要なんですか?
314デフォルトの名無しさん:2007/06/09(土) 16:43:46
package mybeans;とちゃうの?
315デフォルトの名無しさん:2007/06/09(土) 16:56:48
>>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
316310:2007/06/09(土) 17:00:03
>>307
すいません。そのメソッドないです。
もしかして1.5じゃないとダメですか?
317デフォルトの名無しさん:2007/06/09(土) 17:01:11
>>314
mybenasのパッケージ(ディレクトリ)に入れてある、
コンポーネントの方のjavaファイルの1行目はpackage mybeans;で、
試しに単独でコンパイルしたらコンパイルできました。
でもサーブレットの方のjavaファイルの1行目がimport mybeans;になってて、
>>313のような状況です。
318デフォルトの名無しさん:2007/06/09(土) 17:06:31
>>316
printf は .5以降じゃないとだめ。
319デフォルトの名無しさん:2007/06/09(土) 17:23:09
>>316
実行環境のバージョンくらい最初から書け
String s = Integer.toHexString(b).toUpperCase();
System.out.println("0x" + s.substring(Math.max(s.length() - 2, 0)));
320デフォルトの名無しさん:2007/06/09(土) 17:34:56
>>305
final String hexdigit = "0123456789ABCDEF";
System.out.println("0x" + hexdigit.charAt((b >> 4)&0x0F) + hexdigit.charAt(b & 0x0F));
321デフォルトの名無しさん:2007/06/09(土) 17:35:09
>>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のペイントのようなソフトを作りたいのですが、

参考になるお勧めの参考書・サイトありますか?
323310:2007/06/09(土) 18:22:49
>>319
>>321
できました。ありがとうございます。
324デフォルトの名無しさん:2007/06/09(土) 18:37:42
>>322
「お絵かき java」で検索
325デフォルトの名無しさん:2007/06/09(土) 18:50:32
>>313
書のタイトルとページ数を書け。
もっているヤシがいるかもしれない。
その上でソースをあげてくれよ
326312: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));
329デフォルトの名無しさん:2007/06/09(土) 20:20:20
あ、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 のコード見てるみたいでぜんぜんすっきりしないんですけど
331デフォルトの名無しさん:2007/06/09(土) 20:44:45
System.out.print(Integer.toHexString(b[i] & 0x0FF));

System.out.printf("%02X", b[i]);
でだめ?
332デフォルトの名無しさん:2007/06/09(土) 21:04:34
>>331
327じゃないけど
sprintfみたいな機能ならあるとうれしい
333デフォルトの名無しさん:2007/06/09(土) 21:18:48
>>328=329
Integer.toHexString(b[i] | 0xffffff00).substring(6) とか。
334デフォルトの名無しさん:2007/06/09(土) 21:23:06
せっかくPrintStreamにprintfが付いたのに
PrintStreamがOutputStreamだからStringに持って来れん
これだからJavaは使えん糞だと言われるんだよなぁ
335デフォルトの名無しさん:2007/06/09(土) 21:38:25
>>334
String.formatメソッドとかFormatterクラスをよく調べてみたことある?
336デフォルトの名無しさん:2007/06/09(土) 21:51:55
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);
337デフォルトの名無しさん:2007/06/09(土) 21:55:55
すみません。HelloWorldのクラス化でいきなりもうダメぽです。
↓のようなプログラムを書いたのですが、printlnの("の部分がコンパイル通りません。
なんかIDがありませんと言われてしまいます。何故でしょうか?意味が・・・

public class UserInput {
  System.out.println("Hello World");
}

public class MyJavaTest {
  public static void main(String args[]) {
    UserInput();
  }
}
338デフォルトの名無しさん:2007/06/09(土) 22:00:36
>>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());
339327: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で作った変数はインスタンスを生成するごとに、
メモリ食うってことはないですよね?

インスタンスへのポインタ?みたいなものは、
何バイトくらいメモリ食うのでしょうか?
341デフォルトの名無しさん:2007/06/09(土) 22:21:40
環境依存では
342デフォルトの名無しさん:2007/06/09(土) 23:03:43
>>340
オブジェクトヘッダはVM依存だね。
343313:2007/06/09(土) 23:09:51
>>325
レスありがとうございます。
色々やってたら無事コンパイルできました。
1行目も本に載ってたimport mybeans;のままでできました。
クラスパスなども修正したので、結局何が原因だったのかよく分かりませんが、
やはりサーブレットをコンパイルする場所(ディレクトリ)が問題だったようです。
因みに本は高橋麻奈さんのやさしいJava活用編第2版で、
問題の箇所はレッスン7のサンプル6でした。
お陰さまで助かりましたありがとうございました。
お騒がせして申し訳ありませんでした。
失礼しましたm(_ _)m
344デフォルトの名無しさん:2007/06/09(土) 23:44:57
>>337
プログラム勉強するの辞めたほうがいいと思う。
どういう本で勉強しているのか、どういう授業を受けているのかは知らないけど、人の話も聞いていないし理解しようともしてないでしょw

何故か?
クラスに定義できるのは、メソッドと変数だけだから。
で、命令文(ステートメント)はメソッド(コンストラクタを含む)にしか記述できない。
345312:2007/06/09(土) 23:52:59
JAVAからwindowsのバッチファイルを引数を渡して起動の質問をした者です。
ProcessBuilderから引数を渡してバッチを起動するところは成功しました。
(環境変数のPATHに起動したいバッチのパスを入れた)

しかし、バッチファイルの途中で処理が止まって、エラーも出ずに処理が止まってしまいます。
具体的に、バッチファイルの中でLhacaを使ってファイルを解凍をしている作業があるのですが、そこで止まってしまうようです。(getInputStream()で確認)
Lhacaも環境変数に入ってますし、コマンドラインから単体で実行した時は問題なく動くのですが・・・。

偉い方、ご教授願いますm(_ _)m
346デフォルトの名無しさん:2007/06/09(土) 23:53:52
>>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" );
  }
}
347デフォルトの名無しさん:2007/06/09(土) 23:57:19
>>346
教育している側から言えば、出題の意図はコンストラクタに記述、だと思う。
クラスの理解は、コンストラクタ⇒変数⇒メソッドかな。
メソッドの引数(特に参照型)は最初は教えちゃダメダメ
348デフォルトの名無しさん:2007/06/10(日) 00:03:58
>>347
ごめん。>>344>>337だけ読んでレスした。
もっと前からやりとりがあったんかな?
少し上のほう読んでみたけど確認できなかった。
349デフォルトの名無しさん:2007/06/10(日) 00:08:56
>>348
いや、単発だから回答としては問題ないと思うよ。
ただ、そう書いても>>337は理解できないと思うが・・・
ここは質問・相談スレであって丸投げじゃないからと、言い過ぎた。
すみません。
350デフォルトの名無しさん:2007/06/10(日) 00:09:28
>>345
Lhacaを入れていないから分からないけど、Lhacaが何か入力を求める場面とかない?
もしくは解凍ファイルを正しく出せる等、Lhacaの出力先は確保されてる?
どういうところで実行が止まっているのか状況が分からないから何とも言い様が無い。
> コマンドラインから単体で実行した時
っていうのは、Lhacaを単体で実行?バッチファイルを実行?
351345:2007/06/10(日) 00:25:31
説明が不足していました。
> コマンドラインから単体で実行した時
これは、Lhacaでの解凍を組み込んだバッチファイルでの実行の事です。
具体的に、以下のようなコマンドを発行しています。
lhaca "C:\Program Files\eclipse\workspace\aaa\bbb\ccc.lzh"

バッチファイルの実行では、自分が指定したディレクトリに解凍されたファイルが想定通り出力されます。

よろしくお願いします。
352デフォルトの名無しさん:2007/06/10(日) 00:38:06
>>345
なんだっけな、昔似たようなことで嵌ったような・・・
バッチファイルを実行させるのは無理とかそんな結論だった気もするけど、ちょっと覚えてないわ。
バッチファイルをCあたりで1個のexeにして解決したと思う。
353デフォルトの名無しさん:2007/06/10(日) 00:38:28
>>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 + "です");
}
}
355デフォルトの名無しさん:2007/06/10(日) 01:04:22
情報処理技術者試験向けのJAVA言語の必勝勉強方法とかあったら教えてください^^
356345: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を先に取り出すようにすると、バッチの途中までが出力されます。
バッチの途中でフリーズしているようです。
作業ディレクトリ、環境変数の設定はしていないので、明日あたり取り組んでみたいと思います。
357デフォルトの名無しさん:2007/06/10(日) 01:29:56
>>354
なんて本?
Javaでは、「2.0」のように小数点を数値リテラル(定数)として記述した場合、doubleとして扱われるのが仕様。
なので、doubleをfloatに変換していると見なされコンパイラが警告を出す。

型を指定して小数を書く場合、2.0F, 2.0Dと後ろに型を現す識別子を記述すること。
同じように12桁ほどの整数だとintと見なされlongにいれられない。
この場合はLを後ろにつける。
f,d,l など小文字でもOKだが、lと1が見分けつくにくいので大文字推奨。
358デフォルトの名無しさん:2007/06/10(日) 01:36:09
>>357
thx

世界でいちばん簡単なJava
359デフォルトの名無しさん:2007/06/10(日) 01:37:27
>>357
おおお2.0Fとしたらいけた
ありがたや〜
360デフォルトの名無しさん:2007/06/10(日) 01:40:32
>>358
その本、地雷の中の地雷。
やさしいJavaが良書に思えるほど。
361デフォルトの名無しさん:2007/06/10(日) 01:42:45
>>360
そうなのか・・・

わざわざ買いなおしたのに・・・
362デフォルトの名無しさん:2007/06/10(日) 01:44:16
>>354
a=2.0f;

っていうかその本は捨てたほうがいいかも。
ずっと前にも2chスレに同じような質問があった気がする。

うわー。教えてgoo!とかにもあるなあ。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2153924
http://www.temptech.co.jp/others/java_qa/2020.html

その本ってもしかして
  世界でいちばん簡単なJava の e 本Java の基本と考え方がわかる本
  2003年6月1日 第1版第1刷発行 著者 堀江幸生
  発行 株式会社秀和システム (ISBN4-7980-0533-9 C3055)
  http://www.amazon.co.jp/dp/4798005339/
じゃねえか?

http://pc8.2ch.net/test/read.cgi/tech/1161492130/964-981
改訂されてないみたいだね。
363デフォルトの名無しさん:2007/06/10(日) 01:46:35
>>362
あああゴミなのかこの本

昨日からやる気出して取り組んでるのにヽ(`Д´)ノ
研究室の金だからいいけどさ・・・

364デフォルトの名無しさん:2007/06/10(日) 01:54:41
>>362
てかgooではない方のQ&Aも間違ってるじゃねーかw
365デフォルトの名無しさん:2007/06/10(日) 01:57:00
>>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
366デフォルトの名無しさん:2007/06/10(日) 01:58:11
>>364
たしかにw

なんだかなー
367デフォルトの名無しさん:2007/06/10(日) 02:08:42
JavaのソースコードでSQL文を書く時
Stringにまとめていれるほうがいいのか
StringBufferに一行ずつ書いて後でStringにするのがいいのか
メモリ上の問題とかも考えて
どちらのほうがいいのでしょうか?

Stringに入れた場合、SQLに入れる変数が大量にある場合、見づらくなる気もしますが
368デフォルトの名無しさん:2007/06/10(日) 02:19:47
>>340
Instrumentation#getObjectSize
369デフォルトの名無しさん:2007/06/10(日) 03:10:16
Java6で追加されたjavax.scriptを使いたいんだけど、
第三者によって書かれたスクリプトを安全に実行したいんです。
JavaScriptからでも普通にJavaのAPIにアクセス出来てしまうのですが、
これを禁止する方法はあります?
370デフォルトの名無しさん:2007/06/10(日) 07:53:26
>>367
動的SQLか静的SQLかにもよるけど。
静的SQLの場合、定数として宣言するのが定石。
この時、書き方としては+で連結して書いて何も問題ない。
コンパイラがコンパイルする時に、最適化して1つの文字列としてくれるから。
読みやすさを重視して、1行ずつ改行してインデントきって+連結。

静的SQLの場合、やはり定数として宣言して?を使ったPreparedStatementで使用するのが良い。
もっと複雑なSQLを構築したい場合は、動的にSQLを作成するけど、そういう場合はStringBufferを使用するほうが好ましい。

ただ、どちらにせよコードに定数としてSQLを書くよりも、SQLは外部のテキストファイルか何かで管理する方がベスト。
複雑なSQLを動的に作成する必要がある場合、本当に必要かを検討し、静的SQLの組み合わせで処理できないかを考えるべし。
この辺りは3層構造とかの記事でも読んで。
371356:2007/06/10(日) 08:11:18
>>365
書庫操作ライブラリの自作ですか!
たくさん勉強が必要そうですね。

まさにwgetでデータを取ってきて解凍する処理です。
lhasaとかtarなら正常終了したのですね?
次に試してみます!ありがとうございます。
372デフォルトの名無しさん:2007/06/10(日) 08:22:54
>>369
「第三者によって書かれたスクリプト」が安全なわけないだろ
373デフォルトの名無しさん:2007/06/10(日) 09:33:31
>>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 とか潰したりはできそう。
どのクラスを使って良くて、どのクラス使っちゃダメってのを個別に制御しようとすると面倒臭そうだけど
374デフォルトの名無しさん:2007/06/10(日) 10:36:39
>>371
漏れも調子に乗って既存のlzh系処理ソフトにラッピングする形で
自前の書庫管理してたんだけど途中で書庫サイズが2GB超えて
ぼろぼろになって原因がそっちにあるのが分かってやる気なくした

自分でライブラリ作った方が安心出来るよ

375デフォルトの名無しさん:2007/06/10(日) 11:51:23
>>372
今ご覧になってるWebブラウザは第三者が書いたJavaScriptを安全に実行しているわけで。
>>373
全部のパッケージ潰せて、わずかな安全な自前の関数だけScriptEngine#put()できればとりあえず使いものになります。
java、javax、com、orgあたりを潰せばjava seのapiすべて潰したことになるのかな?潰し忘れがあったらかなりデンジャラス。
あちこちドキュメント漁ってるんだけど、なんでこんな大事なことどこにも書いてないんだろう。
でもとりあえずありがとう
376デフォルトの名無しさん:2007/06/10(日) 12:55:05
>>375
どうしてJavaScriptでローカルのディスクに書き込めないのはなぜ?
377デフォルトの名無しさん:2007/06/10(日) 13:13:52
>>375
アプレットでも使われているけど第三者のクラスファイルを安全に実行する
既存のモデルを使う。Javaのセキュリティモデルを勉強すること。
あとjava.sun.comにドキュメントあるよ。JavaSEのドキュメントのページからリンク
はられてる。
378デフォルトの名無しさん:2007/06/10(日) 13:35:55
すいません。 誰か教えてください。


DoJa-3.5用(900用)のエミュレータを使ってHelloWorldを出すという、初歩の初歩でつまずいてるのですが、ビルドを実行すると

javac:ターゲットリリース1.1がデフォルトのソースリリース1.5と競合しています。

とでて、ビルドが失敗してしまいます。
どうすればよいのでしょうか? Javaスレの神様どうかお教えください。お願いします。
379デフォルトの名無しさん:2007/06/10(日) 13:41:09
380デフォルトの名無しさん:2007/06/10(日) 13:42:32
と思ったら既にマルチしてたのね

もう回答は期待出来ないな

じゃ
381デフォルトの名無しさん:2007/06/10(日) 14:12:23
すいません。 マルチはダメなんですね。ごめんなさい。
sun.tools.javac.Mainを使用するをチェックしていないのが原因でした。
回答が期待できないといわれたので、別の方法で考えました。 自分で考えたほうが身につきますね。ありがとうございました。
382デフォルトの名無しさん:2007/06/10(日) 14:39:17
昨日Image関連で質問した物です。回答ありがとうございました。

回答いただいた内容で解決できたのですが、新たな疑問点が。

Imageをクラス間でやりとりすることは不可能なのでしょうか。
メンバにImageを持たせ、paintにて描画した後、
他クラスからそのImageを取得しようとしたところ、
Paintメソッド内では存在してましたが他クラスから呼び出した時点でnullになっていました。

3DのCUBEを乱数に寄り平行移動させた物を複数生成し、
1クラスにつき一つのCUBEをImageに描画させ、
のちに統合したImageをCanvasに描画するという手順を取っているのですが、
Imageのやりとりが出来ないとなるとこの手法が使えません。
ご教授宜しくお願いいたします。
383デフォルトの名無しさん:2007/06/10(日) 14:43:12
static
384デフォルトの名無しさん:2007/06/10(日) 15:17:31
Java2ME環境で質問です。
ネットワーク上のNetBIOS名を列挙したい場合はTCP/UDPから上の部分をすべて自前で実装する以外ありませんか?

JCIFSというライブラリはありますが、LGPLなので手が出しづらいです。
スレ違いになりますがjarからclassファイルを取り出して使用した場合はソースを公開する必要があるのかないのか
分かる方はこちらも教えていただけると幸いです。
385デフォルトの名無しさん:2007/06/10(日) 15:28:03
>>371
lhasaはいいとして、lzhを扱えるtarはないと思うので念のため。
サンプルでtarが展開しているのはtar-ballをgzipで固めたtazファイル。
ProcessBuilderで呼び出したバッチファイルで、
ファイルを生成するプログラムがうまく動作しないとかだといやだなあと思って確認しただけなので。

Lhaca自体の問題というより実行環境の問題の気がしなくもない。
eclipseから起動しているのが原因とかかも。
バッチを呼び出しているjavaプログラムを直接コマンドラインからjavaコマンドで叩いた場合はどうなる?
386デフォルトの名無しさん:2007/06/10(日) 15:45:00
>>384
そのjarのライセンスに従ってください
387デフォルトの名無しさん:2007/06/10(日) 16:32:42
>>377
JDKドキュメントのセキュリティの項は目を通してみているけど、さっぱりわからない。ムズ過ぎ……

>>現在、SDK の一部として提供されているコードはすべてシステムコードと見なされて、固有のシステムドメインの中で実行されます。
>>システムコードには、自動的にすべてのアクセス権が与えられます。

とか書かれてるけど、javax.scriptはシステムコードですべてのアクセス権が与えられてて制限は出来ないってこと?
388デフォルトの名無しさん:2007/06/10(日) 16:52:35

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が呼ばれるのですか?
389デフォルトの名無しさん:2007/06/10(日) 17:07:51
>>388
何故26がbyteなのですか?
390デフォルトの名無しさん:2007/06/10(日) 17:10:45
>>388
127以下の数だからってbyteとして扱われるわけじゃない。
Lつけなきゃ整数リテラルはすべてint。言語仕様の3.10.1参照。
391デフォルトの名無しさん:2007/06/10(日) 19:13:20
データベースの中身を拾ってきて
それをCSV形式でファイルに書き出してデスクトップに落としたい場合
メモリ上にファイルを作成→一行ずWriteで書き出す→拡張子をCSVにしてデスクトップに保存する

こういうクラスを作ってやっているのですが
だいたい皆さんもこういうやり方でやっているのでしょうか?
もっと簡単な方法とかあるのでしょうか?
392デフォルトの名無しさん:2007/06/10(日) 19:19:21
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はその記載されたクラス自身を示すような気がして
下のような考えと悩んでいます。すいませんが教えてください。
394デフォルトの名無しさん:2007/06/10(日) 19:57:27

TestClassA tca = new TestClassA();
TestClassB tcb = new TestClassB();

ActionForward afa = tca.execute();  ・・・(1)
ActionForward afb = tcb.execute();  ・・・(2)

(1) のとき this は tca
(2) のとき this は tcb
395デフォルトの名無しさん:2007/06/10(日) 20:01:21
>>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();
}


これを実行して比べてみたら?
396デフォルトの名無しさん:2007/06/10(日) 20:01:33
>>391
それで何か問題あるの?
>>392
Windows固有の機能だからJavaにはなさそうだ。
>>393
もちろん@が正解。ただそのコードじゃコンパイル通らないはずだよ。TestClassAはきっとabstractなクラスだ。
397デフォルトの名無しさん:2007/06/10(日) 20:05:35
>>391
少しだけOO的に書くのであれば、DBから取得してきたデータをBeanクラスに詰め、Writerで1行ずつ書き出すとベター
DBから取得してきたデータをいきなりCSVの1行にするくらいならば、データ量にもよるけど、SQLで組んじゃう方が楽じゃね?
398デフォルトの名無しさん:2007/06/10(日) 20:34:28
>>387 セキュリティマネージャ差し換えるんだよ。

>>392 ActiveDirectoryというかLDAPなら。
399デフォルトの名無しさん:2007/06/10(日) 20:38:21
>>396
問題はないけど
ちょいとアナログなやり方なので
他に方法があるのなら参考にしたかった
400デフォルトの名無しさん:2007/06/10(日) 21:04:14
>>393
常にTestClassBを示す
401デフォルトの名無しさん:2007/06/10(日) 21:17:10
>>399 == >>391
それを言うなら
アナログ
じゃなくて
アナクロ
402デフォルトの名無しさん:2007/06/10(日) 21:48:39
超初心者失礼します
enumを使おうと思って調べたんですが、よくわかりません
とりあえずJ2SE5.0なので言語レベルで実装されてるとは思うのですが
enum hoge{
oerjao, idos;
};
てな感じじゃだめなんでしょうか、Eclipseだと無理っぽいんですが…
403デフォルトの名無しさん:2007/06/10(日) 22:03:54
>>402
普通に使えるはず。
使えないなら以下をチェック

・eclipseのバージョン
・プロジェクトのプロパティ
  -> Javaコンパイラ
  -> Javaのビルドパス
    -> ライブラリ
404デフォルトの名無しさん:2007/06/10(日) 22:29:46
>>398
System#setSecurityManager()でセキュリティを設定するとスクリプトは安全だけど、
アプリケーション全体に制限が加わってしまってそれ以外のファイルアクセスなんかが
出来なくなっちゃうよね?やっぱりわからん…
405デフォルトの名無しさん:2007/06/10(日) 22:36:18
>>403
よくわからんのですが、コンパイラの準拠レベルとやらを5.0に上げたら通るようになりました
ありがとうございました
406デフォルトの名無しさん:2007/06/11(月) 00:12:16
>>398
その手のスクリプトってパッケージとか持ってないと思うし、
コードベースで動作制限もできないようなきがするから、
SecurityManager でやるにしても、あんまし便利には出来んと思うけど。
407デフォルトの名無しさん:2007/06/11(月) 01:11:43
>>375とかセキュリティマネージャとか言ってる奴は馬鹿だろ。
言語レベルのセキュリティとスクリプトエンジンの実装のセキュリティは別問題。
組み込みエンジンのセキュリティ確保は組み込む人間が全部自分で必要なものを1から実装する。
これは>>375の仕事。

何を何処までどうするか、それをどうやって実現するか全て自分でやる。用意されてるものを使うんじゃなくて自分で用意する。

具体例でいえば"ブラウザは外部の入力は汚染されたものと仮定してセキュリティ制限下で処理してる"
""でくくった部分を>>375が全部やる部分。
実装例だせば、ecma-262ではトップレベルコンテキストは常に一つで一切操作出来ないのが仕様だが、
ブラウザでそれやると文書間でトップレベルコンテキストが共有されてしまうから動作変更して文書毎にトップレベル生成してる。
javaの実装であるrhinoはセキュアであることは実装対象外だから一切配慮されてなくて、
セキュアな実行環境がほしい場合は組み込む者が適切に実装しろとrhinoのドキュメントにご丁寧に書いてある。
これだけ言ってわからんならノウハウ本か他のソース読め。
408デフォルトの名無しさん:2007/06/11(月) 02:09:41
バカ避けのために作られた言語なのに
どうしてバカばっかり集まってくるのはなぜ?
409デフォルトの名無しさん:2007/06/11(月) 03:06:49
それはおまいが一番よく知ってるんだぜ?
410デフォルトの名無しさん:2007/06/11(月) 09:25:56
>>407
sun.org.mozilla.javascript.internal.Context#setClassShutter() で
Javaのクラスを遮断することができることがわかった。
さすがにRhinoがセキュリティについて一切配慮されてないなんてことはなさそう。
sun.org.mozilla.javascript.internal.SecurityController もセキュリティ関連だからもっと調べてみる
411デフォルトの名無しさん:2007/06/11(月) 12:05:20
JDBCドライバを実装するのにオススメのサイトや書籍(できれば日本語)
を教えていただけませんか?
412デフォルトの名無しさん:2007/06/11(月) 12:46:39
>>411
JDBCドライバを実装するの?
JDBCドライバを使用してDBアクセスを試すんじゃなくて。
後者ならば、「JDBCによるJavaデータベースプログラミング」あたり。
やさしいのがいいってならば、どれでもいい気がする。

ドライバの実装は・・・少なくとも初心者質問スレじゃスレ違い

413デフォルトの名無しさん:2007/06/11(月) 13:13:02
>>412
ドライバの使用じゃなくて実装です。
使用法の情報は多くあるのですが実装についてはあまりみないもので。

スレ違いですか…
どこが適切なんだろうか
414デフォルトの名無しさん:2007/06/11(月) 13:34:49
>>410
そこら辺は最近追加された新しいAPIだよ。

sunのrhinoは元とは別モンの劣化品だからただ実行する以上の用途はmozilaのパッケージ使った方が良いぞ。
ドキュメントもすべて揃ってるから組み込みチュートリアルとかもあるし。
(javadocはサンプルjsコードの一部をコピペしただけ。)

悪いことは言ってないぞ?
415デフォルトの名無しさん:2007/06/11(月) 14:29:36
>>413
情報無いよな、そもそも必要に迫られるもんじゃないし。
公開されていソースが一番の情報源では?

スレは作成したいドライバのDBベンダのスレのがいいかも。
416デフォルトの名無しさん:2007/06/11(月) 16:02:29
初歩的で申し訳ないのですが、下のプログラムがコンパイルで通りません。
シンボルを見つけれませんと出るのですが、どういうことなのでしょうか?

//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();
    }
  }
}
417デフォルトの名無しさん:2007/06/11(月) 16:07:28
>>416
//Info.java
public class Info {
  public int num[][];

  public void Info(){
    num = new int [10][10];
    System.out.print("test\n");
  }
}
418デフォルトの名無しさん:2007/06/11(月) 16:13:50
>>417
ありがとうございます。しかし、コンパイルは通ったのですが、
System.out.print(a.num[i][j]);
のところでエラーが出てしまいます。どうしてなのでしょうか?
419デフォルトの名無しさん:2007/06/11(月) 16:15:17
というよりも、今気付いたのですが、コンストラクタの中の"test"って文字が表示されてないってことは、
まず、コンストラクタの中に入ってないってことですね。それはエラーも出るはず・・・;;
420デフォルトの名無しさん:2007/06/11(月) 16:18:29
public void Info()はコンストラクタではない。
ただのメソッド。
ヒント:void
421デフォルトの名無しさん:2007/06/11(月) 16:24:11
もし>>417のままにしたいなら Info a = new Info(); a.Info(); でnumを初期化
422デフォルトの名無しさん:2007/06/11(月) 18:05:00
>>420-421
ありがとうございます。voidを除いたら正常に動作しました。
調べてみると、コンストラクタは返り値を持たないので型の宣言は指定したらダメっぽいんですね・・。
勉強になりました。
423デフォルトの名無しさん:2007/06/11(月) 19:35:30
一昨日くらいにJAVAを始めたのですが、いまいちクラスとかメソッドとかの良さが分かりません。
まだあまりプログラミング量が少ないからなのかもしれませんが、オブジェクト指向の利点というものを
活かしきれていないような気がします。どうやってもC言語のような感じでプログラムを書いてしまいます。

そこで相談なのですが、何かこういうプログラムを作ってみるといいよって感じのはないでしょうか?
こういうプログラム作ったら、クラスの凄さがよくわかるとか・・・。
424デフォルトの名無しさん:2007/06/11(月) 19:50:17
>>423
システム設計するようになると良くわかるよ
425デフォルトの名無しさん:2007/06/11(月) 20:02:01
>>424
具体的にはどのようなプログラムを作ればいいのでしょうか?
良く分かるために貪欲に何でも作ろうかと思うのですが。
426デフォルトの名無しさん:2007/06/11(月) 20:12:46
>>425
俺はTECHSCOREのデザインパターンのページ読んだら結構納得できた
427デフォルトの名無しさん:2007/06/11(月) 20:45:57
>>425
ステップ数で300くらいの処理を3−4程度のクラスに分割してみる。
自分の経験からだと、CSVの読み書きクラスとかほど良いボリューム
428デフォルトの名無しさん:2007/06/11(月) 20:49:30
よくわからないので質問させてください。
class Example1{
public static void main(String args[]){
for(int i = 0; i < 10000; i++)
System.out.println("teswt");
}
}
というプログラムをjarにまとめてダブルクリックで実行できるようにしました。
ところがダブルクリックしても出力されません
タスクマネージャーでプロセスを見ると一瞬javaw.exeが出るので実行はされていると思うのですが、
コマンドプロンプトが自動で起動されたりはしないのでしょうか?
もし自動で起動させる方法があるのなら教えてください。
429デフォルトの名無しさん:2007/06/11(月) 21:06:22
>>428
それは実行されて、プログラムも終了しただけかと。
CUIならコマンドプロンプトから実行したら?
430デフォルトの名無しさん:2007/06/11(月) 21:10:30
>>429
やはりコマンドプロンプトから実行するしかありませんか。
実はIRC用のBOTを作っていて友人に配布することになりダブルクリックだけで実行できたほうが便利かなと思ったのです。
がんばってGUIをつけることにします。

質問に答えていただきありがとうございました。
431デフォルトの名無しさん:2007/06/11(月) 22:26:29
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は推奨されないみたいなので。
433デフォルトの名無しさん:2007/06/11(月) 23:22:33
>>432
強制?
無限ループのThreadを終了?
434デフォルトの名無しさん:2007/06/11(月) 23:24:28
>>433
強制です。
ロック最中でもロック開放してThreadを停止したいんです。
435デフォルトの名無しさん:2007/06/11(月) 23:31:17
>>434
どうしてstopが非推奨になっているかを考えれば代替手段もないことに気づくと思うんだが・・・
436デフォルトの名無しさん:2007/06/11(月) 23:47:34
Java アプレットの話です。どうして表示結果があんなにキタナイの。
図形の座標の計算が変だと思う、円周をどうやって表現するの?
そこで間違っているから、Java は隙区内。

こんなにキレイな円と多角形の重なりも簡単、とかいうなら、
ひとつ アプレット の例を作って見せてね。
437デフォルトの名無しさん:2007/06/11(月) 23:49:58
URLConnection時のクッキー書き込みについて教えて頂きたいです。

Webページにクッキーを固定で書くだけのテスト用ページを作成しました。
http://*****/cookie.php
 <?php setcookie("test","123",time()+60*60*24); ?>

このテスト用ページに
URLConnectionまたはHttpURLConnectionで
アクセスするとクッキーが書き込まれないのですが
java(URLConnection)では、クッキーは書かれないのでしょうか?
それとも何かクッキーを許可するような設定値があるのでしょうか?

ブラウザのURL欄に上記テスト用ページを直打ちすると
正常に書かれるのでテスト用ページの処理は問題無いと思うのですが。。

アドバイス頂きたいです。よろしくお願いします。
438デフォルトの名無しさん:2007/06/12(火) 00:21:43
こんなのどうだろ。開発時間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向けね。
440デフォルトの名無しさん:2007/06/12(火) 00:29:19
そうか、「アプレットの例」か。さらに簡単になるな。たびたびすまん
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);
}
}
}
441デフォルトの名無しさん:2007/06/12(火) 00:32:46
ていうかjava2dの描画精度のことなら6ですでに改善されてるだろうが。
わざわざ釣られる必要はないよ。
442デフォルトの名無しさん:2007/06/12(火) 00:40:13
所詮、ドット絵なんだからアンチエイリアスしないとキレイな曲線にはならないでしょ
443デフォルトの名無しさん:2007/06/12(火) 02:40:21
C言語で
typedef struct _header {
unsigned char opcode;
unsigned long oprand;
} header;

memcpy(&header, src_ptr, sizeof(header))

unsigned char 1byteリトルエンディアン
unsigned long 4byte リトルエンディアン

みたいな感じでバイナリファイルのヘッダ解析とか
したりしますよね?

これってJavaでどうやって書けばいいんですか?
教えてください。
444デフォルトの名無しさん:2007/06/12(火) 03:10:23
java.ioやNIOつかってストリーム指向で。
MP3やoggのデコーダのソースは参考にならないかい?
445デフォルトの名無しさん:2007/06/12(火) 09:06:45
ど忘れした。
読み込み中等で表示されるGUI部品で青い部分が伸びていくやつ何て名前だっけ?
シーケンスじゃなくて・・・あぁ・・・思い出せない。
446デフォルトの名無しさん:2007/06/12(火) 09:07:38
>>445
プログレス
447デフォルトの名無しさん:2007/06/12(火) 09:10:12
>>446
早っ!ありがとう。
448デフォルトの名無しさん:2007/06/12(火) 16:09:05
よい解決方法があれば、教えて下さい。

FTPClientで日本語ファイルを転送しようとしたところ、
ファイル名が文字化けしてしまいました。
日本語ファイルは対応していないのでしょうか?
ちなみに転送元、転送先ともにSJISです。
449デフォルトの名無しさん:2007/06/12(火) 16:17:43
GUIでプログラムを作ろうと思ったら何を勉強したらいいのでしょうか…
450デフォルトの名無しさん:2007/06/12(火) 16:25:32
>>448
FTPClient?それはどこのパッケージ?

>>449
awt、swing、(swt)
451デフォルトの名無しさん:2007/06/12(火) 16:42:02
>>450
素早い解答ありがとうございますw
これから勉強してみます。
452デフォルトの名無しさん:2007/06/12(火) 17:13:43
>>448
sunのjdk6にはそんなもん存在せんからエスパーだがリーダー見直せ。
それかnio使って自分で縁コード汁!
453デフォルトの名無しさん:2007/06/12(火) 18:24:09
>>450,452
org.apache.commons.net です。
commons-net-1.4.1.jarを使ってます。

なるべく労力を少なくしたかったのですが、
ダメっぽいですね。

ありがとうございました。
454デフォルトの名無しさん:2007/06/12(火) 19:14:24
失礼します
Labelの仕様について質問なんですが、setforegroundで文字の色は変わるんですが
setbackgroundで背景の色が変わりません
ボタンの場合foreback両方問題なく色を変えられます
Labelっていうのは四角い領域だと理解してたんですが、間違ってますか?
なぜsetbackgroundで色が変わらないんでしょうか?
455デフォルトの名無しさん:2007/06/12(火) 19:52:33
変わるよー
ラベルのサイズが小さいんじゃない?
456デフォルトの名無しさん:2007/06/12(火) 20:04:17
opaque
457デフォルトの名無しさん:2007/06/12(火) 20:07:35
>>455
変わりますか…
サイズはsetboundsで40*40確保してるので問題ないと思うんですが…
458デフォルトの名無しさん:2007/06/12(火) 20:08:16
間違えた、60*40でした。関係ありませんが一応
459デフォルトの名無しさん:2007/06/12(火) 20:16:42
>>454
バリデートツリーは?
460デフォルトの名無しさん:2007/06/12(火) 20:37:54
>>459
やってみましたがダメでした
もちろんForegroundでは色が変わります
461デフォルトの名無しさん:2007/06/12(火) 20:40:52
462デフォルトの名無しさん:2007/06/12(火) 21:04:58
JDKダウンロードしましたが、どうしていいやら・・・。

https://www.ssl-on.net/SHOP/mh-unit/tmp4/sampleform.html
このサンプルオーダーフォームを改造してCDを売りたいんですが
なにからはじめれば良いでしょうか??
タグ内にJAVAって書いてあったのでJAVA使ってるんですよね?

よろしくお願いします。
463デフォルトの名無しさん:2007/06/12(火) 21:07:01
>>462
本の1冊でも読んでこい
464デフォルトの名無しさん:2007/06/12(火) 21:09:49
>>463
そこをなんとか・・・・
友達から頼まれて・・・俺もまったくわからないのに・・。
今日中に仕上げてしまいたいんですー><
465デフォルトの名無しさん:2007/06/12(火) 21:10:15
>>462
ゆとり教育キタ━━━━━━(゚∀゚)━━━━━━ !!
466デフォルトの名無しさん:2007/06/12(火) 21:10:48
>>464
わからんものを引き受けるな。
467デフォルトの名無しさん:2007/06/12(火) 21:21:41
まぁ、2ちゃんで聞けば出来るだろうと思って引き受けちゃいました。。。
お願いしますー!
468デフォルトの名無しさん:2007/06/12(火) 21:24:05
CGIっすかね?^^;
469デフォルトの名無しさん:2007/06/12(火) 21:29:50
>>461
色指定するとき透明度の設定ちゃんとしろってことでしょうか?
今透明度0でやってみましたが無理でした
470デフォルトの名無しさん:2007/06/12(火) 21:31:32
>>467
2ちゃんで宣伝した方がCD売れるかもよ
471デフォルトの名無しさん:2007/06/12(火) 21:42:57
472デフォルトの名無しさん:2007/06/12(火) 21:45:16
>>471
透明度のところopaqueにしても無理でした
473デフォルトの名無しさん:2007/06/12(火) 21:56:34
>>462
Adobe PageMillか・・・
懐かしいな
474デフォルトの名無しさん:2007/06/12(火) 22:21:55
今度学校でjavaやるんだけどリナックスでしなきゃいけないんだけど窓
となんか違うとこあるの?めんどくさい?一応Cなら少しやってて窓使ってます
475デフォルトの名無しさん:2007/06/12(火) 22:32:20
>>472
ヒント:メソッド
476デフォルトの名無しさん:2007/06/12(火) 22:56:20
>>475
すみません、よくわかりません…
477デフォルトの名無しさん:2007/06/12(火) 23:00:21
>>474
日本語とは違うようだね
478デフォルトの名無しさん:2007/06/12(火) 23:34:59
>>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);
479デフォルトの名無しさん:2007/06/12(火) 23:41:58
>>476
俺どんだけ親切なんだか・・・
つ setOpaque(boolean)
480デフォルトの名無しさん:2007/06/12(火) 23:59:24
>>479
できました…
懇切丁寧にありがとうございました
481デフォルトの名無しさん:2007/06/13(水) 00:03:32
ProcessBuilderでlhacaの起動でフリーズすると質問したものです。
やはりlhacaの問題でした。
lhasaに入れ替えてプログラムを実行したところ、正常に終了しました!
wgetの動きも怪しかったのですが、バックグラウンドで動作するオプションを入れたところ
問題なく動作するようになりました。

これで漏れの壮大なアプリ作成の一歩が始まった感じです。
いろいろ答えてくれた皆様、ありがとうございました!
482デフォルトの名無しさん:2007/06/13(水) 09:27:11
log4j とかを使って syslogd に出力すると
ログの方に <139> とか <142> という数字が出てくるのですが
ERR とか INFO とかに対応しているようなのですが
番号との関係一覧見たいなものを探しても見つかりません
どこかにありますか?
483デフォルトの名無しさん:2007/06/13(水) 10:40:34
すみません、基礎的なことでわからないことがあります
swingを使うときmainのあるクラス?をJFrameのサブクラスにするみたいなんですが
理由はなんでしょうか?
初心者は黙ってJFrame継承しとけっていうならそうします。
484デフォルトの名無しさん:2007/06/13(水) 10:43:48
俺はそうしない。
485デフォルトの名無しさん:2007/06/13(水) 11:04:03
>>483
mainのあるクラスはプログラムの実行開始場所。
そのクラスがJFrameのサブクラスである必要は無いし、しない方がいいと思う。
JFrameのサブクラスでアプリケーション作成したならば、それを実行するだけのクラスを作る方がいいと思う。

JFrameを継承するのか、継承しないでnewしてシコシコとコンポーネントを追加していくのもあり。
ただし、その初期化処理は誰がやるんだね?
JFrameにコンポーネント追加したり、基本設定を行わせるクラスを作成するのも手だけど、無理に切り離す必要はないと思う。
だから、よくあるコーディング方法としては、コンストラクタまたはコンストラクタから初期化メソッドを呼び出して設定を行う。
486デフォルトの名無しさん:2007/06/13(水) 12:13:13
>>485
ありがとうございます
別に継承が必須ってわけではないんですね
487デフォルトの名無しさん:2007/06/13(水) 14:25:05
JFrameのインスタンス.show();このメソッド推奨されてませんが、
代わりになるメソッドとか有るんですか?
488デフォルトの名無しさん:2007/06/13(水) 15:05:03
setVisible
489デフォルトの名無しさん:2007/06/13(水) 15:10:37
setVisible
490デフォルトの名無しさん:2007/06/13(水) 15:15:35
>>487
APIのリファレンスを読む習慣をつけておいた方がいいと思う。
非推奨メソッドについて替わりになるものがあれば大抵書かれてある。
491デフォルトの名無しさん:2007/06/13(水) 16:33:41
>488-500 情報thx
492デフォルトの名無しさん:2007/06/13(水) 17:30:12
>>491
(ノ´∀`*)どういたしまして

だけじゃ感謝されただけなので・・・
ttp://java.sun.com/javase/ja/6/docs/ja/api/index.html
プログラム中は、ブラウザのタブにこのページは必ず開いている
これ必須
493デフォルトの名無しさん:2007/06/13(水) 17:32:44
ダウンロードして使えよ
494デフォルトの名無しさん:2007/06/13(水) 17:40:57
>>492
いつも思うんだけど
なんでサンプルプログラムも一緒に載ってないのかなぁ

================================
メソッドの詳細

actionPerformed
void actionPerformed(ActionEvent e)
アクションが発生すると呼び出されます。
================================

これじゃ何も分からんよ。

確かにその通りだし、知ってれば使えるんだけどさ。
495デフォルトの名無しさん:2007/06/13(水) 17:43:54

それでさぁ、そこには

================================
http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/event/ActionListener.html

さらに詳しい API リファレンスおよび開発者ドキュメントについては、
[Java SE 開発者用ドキュメント]
を参照してください。
開発者向けの詳細な解説、概念の概要、用語の定義、
バグの回避策、およびコード実例が含まれています。
================================

って続くんだけど、

[Java SE 開発者用ドキュメント]

のリンク先クリックしても

Page Not Found

笑うしかないよね
496デフォルトの名無しさん:2007/06/13(水) 18:46:01
>>495
ちゃんとあるようだが?
日本語に訳されていなければ原典をあたるくらいの応用力がないと生きていけないぞ。
ttp://java.sun.com/javase/6/webnotes/devdocs-vs-specs.html
497デフォルトの名無しさん:2007/06/13(水) 19:37:38
javaアプリケーションがダイアログを表示した場合に、
それを検知し閉じる処理をする別のjavaアプリケーションを作りたいのですが
どういうクラスを使いコードを書けば良いのか分かりません。

キーワード、アプローチの仕方を教えてください。
498デフォルトの名無しさん:2007/06/13(水) 20:26:14
>>497
別のアプリだと、多分ネイティブの機能が必要でしょうね。
JavaアプリでJNI使うとかで書くと大変だから、ネイティブだけで
作った方がいいような気がします。

で、その実装はやはりOS/ウィンドウマネージャなどによりますね・・・
Javaプロセス間通信みたいな話ってどうなってるんでしたっけ?
499デフォルトの名無しさん:2007/06/13(水) 20:37:14
両方自分が作ったものならRMIとかで
500デフォルトの名無しさん:2007/06/13(水) 21:11:44
ウィンドウアプリケーションってのを作ろうとしていて、
とりあえずは足し算アプリを作りました。
そして、ウィンドウに表示するところまでは漕ぎつけたのですが、
ここからが分かりません。

今、僕はクラスファイルをコマンドプロンプトで実行させているんですが、
これをダブルクリックで実行できるようにするには、どうすればいいのでしょうか?
501デフォルトの名無しさん:2007/06/13(水) 21:13:28
MANIFESTと一緒にjarにする
502デフォルトの名無しさん:2007/06/13(水) 21:33:30
503デフォルトの名無しさん:2007/06/13(水) 21:46:39
drawLineの線をPixelGrabberで取得した色をつけたいのですが、
setColorはどのようしたらいいでしょう?
504デフォルトの名無しさん:2007/06/13(水) 23:01:21
すいません、今プログラマになろうとしたら
言語はJavaを勉強するのが一番なんですかね?。
唐突な質問ですいません。
505デフォルトの名無しさん:2007/06/13(水) 23:07:31
>>504
その通りです
でも、プログラマにはならない方がいいです
506デフォルトの名無しさん:2007/06/13(水) 23:17:05
なんでですか?
507デフォルトの名無しさん:2007/06/13(水) 23:21:58
その辺り自分で解決する能力がプログラマには必要だということ。
まずは、板違いという問題を解決するところから始めよう。
つ ttp://pc11.2ch.net/prog/
508デフォルトの名無しさん:2007/06/13(水) 23:33:45
>>507
ごめんなさい。そしてありがとうございました。
509デフォルトの名無しさん:2007/06/13(水) 23:34:49
>>504
各言語にはメリットデメリットがある
何が一番かは何を作りたいかによる
510デフォルトの名無しさん:2007/06/13(水) 23:35:05
>>506
板違い承知で一言だけ。
趣味でやっているうちが華。
511デフォルトの名無しさん:2007/06/14(木) 01:22:05
512デフォルトの名無しさん:2007/06/14(木) 05:15:08
こういうのが欲しいんですけど作ってくださいっていうのはダメですか?
フリーのソフトを探してもないみたいで
513デフォルトの名無しさん:2007/06/14(木) 06:06:56
JRE のほかのバージョン (旧バージョンと新バージョン) と関連マニュアルは
どこで入手できますか?
http://www.java.com/ja/download/faq/other_jreversions.xml
514デフォルトの名無しさん:2007/06/14(木) 06:09:01
>>511
お前、親切だな
515デフォルトの名無しさん:2007/06/14(木) 06:12:49
ok
516512:2007/06/14(木) 07:39:00
色に関したソフトで色を足して教えてくれるものはあるみたいですが
欲しい色があって自分の持ってる絵の具で何を足したらいいのか教えてくれるものがほしい

例えば
朱色+?=赤

朱色:持ってる絵の具
赤色:欲しい色
?色:朱に足す絵の具

マンセルカラーという分布図を見ればなんとなく見当はつく気がするんですが問題は
持ってる絵の具はたかだか12色とかぐらいだからそれでわかんなくなっちゃう
ちなみに実際の絵の具はマンセルの表からつくられているらしくて
絵の具の番号はそれによって付けられてるらしいです
517デフォルトの名無しさん:2007/06/14(木) 08:13:21
>>516
RGB での合成?
絵の具の割合とかって話になると感覚的な分野になるから難しいような気がする。
518512:2007/06/14(木) 08:50:56
絵心のあるひとはそれが感覚的に分かるらしいんですが、
http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%B3%E3%82%BB%E3%83%AB%E3%83%BB%E3%82%AB%E3%83%A9%E3%83%BC%E3%83%BB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0
すいません。それ以上のことはちょっとわかりません
519デフォルトの名無しさん:2007/06/14(木) 09:37:47
質問失礼します。

今Javaでゲームを作っているのですが、
著作権を考えて画像や音声などのファイルを暗号化(圧縮?)したいと思っています。
配布されているゲームは、複数のファイルを一つにまとめてるのが大半ですが、
JavaでそれらのファイルをJarに含めずに、同じような事をするにはどうすればいいのでしょうか?
参考になるサイトでもかまいませんので、教えていただけると嬉しいです。
520デフォルトの名無しさん:2007/06/14(木) 10:40:38
>>519
自分でフォーマットを考えオリジナルのフォーマットで一つにまとめる。

例えばZipStreamとCipherを組み合わせたり
単純にByte配列を合体させてプログラム内部で分割するバイト数を記述とか

プログラムのdecompileにも注意
521デフォルトの名無しさん:2007/06/14(木) 12:04:41
>>516
こっちに行ってみたらどうだ

◆こんなソフトウェアつくってください!〜Part9〜◆
http://pc11.2ch.net/test/read.cgi/software/1175477056/
522497:2007/06/14(木) 13:30:59
>>498,499
レスありがとうございます。
他人が作った(ソースの無い)ものなので、RMIの実装は難しいです。

ということはネイティブなプログラムを書く事になりますが、
C言語には暗いので、なにか代替の方法があれば教えてください。
OSはWindows XPです。
523デフォルトの名無しさん:2007/06/14(木) 15:57:08
>>522
別にCでなくても得意の言語を使っても構わんよ
WindowsならDLLを作れればいいんだから
524516:2007/06/14(木) 16:44:00
>>521
了解しました
マンセルカラーを調べてみましたが青が青に見えない色が使われているとか問題があるみたいです
確かに単純ではないのかもしれません
色の足し算が出来るなら引き算も出来るのかと思ったんですがそうではないのかも
一応聞いてみます。ありがとうございました
525デフォルトの名無しさん:2007/06/14(木) 18:12:11
卒研でタイピングゲームを作成することになったんですが、
GUIなどについてのオススメの参考書などありましたら教えてください。
サーブレットでの作成を考えています。よろしくお願いします。
526デフォルトの名無しさん:2007/06/14(木) 18:29:47
>>525
ゴメン。どうしたいのか分からないw

GUIって言ってるけどAjax?だったら、スレ違い。

GUIとサーブレットという単語に関連がなくてサーブレットを
使ってサーバで記録を付けるという話ならまぁ分からんでも無いが・・・
・・・卒業に一抹の不安がありますwww

GUIは、JDKについてくるSwingSetを見たら基本的なコンポネントが分かるかな。
それに、イベントモデルとかをWebのページで勉強すればOK。
キーワードは、"AWT イベントモデル" あたりで。
527デフォルトの名無しさん:2007/06/14(木) 19:30:46
>>526
ありがとうございます。
いまいちjava自体も分かってないんでこれから勉強します。
528デフォルトの名無しさん:2007/06/15(金) 15:13:04
Java プログラムで jar ファイルを作成することはできるでしょうか?
読み取りなら JarFile クラスでできそうですが。。。
529528:2007/06/15(金) 15:16:29
JarOutputStream ですね。
530デフォルトの名無しさん:2007/06/15(金) 16:59:21
PNG画像データが InputStream に入っているときに、
BufferedImage を構築するには、どうしたらよいでしょうか?
531デフォルトの名無しさん:2007/06/15(金) 17:07:26
>>530
javax.imageio.ImageIO#read(InputStream)
532497:2007/06/15(金) 17:31:43
>>523
そうですか〜
別の言語のスレで質問してみます。
ありがとうございました。
533デフォルトの名無しさん:2007/06/15(金) 19:23:50
C言語でいう、
int v[10];
int* v2 = &int[5];
を、Javaでやりたいんですが、どうやったらいいですか?
int[] v = new int[10];
int[] v2 = &int[5]; <---ここください。

534デフォルトの名無しさん:2007/06/15(金) 19:24:32
↑めちゃ間違い。訂正すまん。
int v[10];
int* v2 = &v[5];
を、Javaでやりたいんですが、どうやったらいいですか?
int[] v = new int[10];
int[] v2 = &v[5]; <---ここください。
535デフォルトの名無しさん:2007/06/15(金) 20:05:48
>>534
無理
536デフォルトの名無しさん:2007/06/15(金) 20:23:52
そういう使い方するなら Integer[] でいいだろ
537デフォルトの名無しさん:2007/06/15(金) 22:29:20
>>536
それ言うなら Integer[] じゃなくて

List<Integer> と List#sublist じゃなかろーか
538デフォルトの名無しさん:2007/06/15(金) 23:31:58
以下で定義されるブロック構造を導入する事で何が可能になり、それはプログラム開発において何に寄与するか?
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
ぬるぽ ぬるぽ ぬるぽ ・・・
540デフォルトの名無しさん:2007/06/16(土) 00:36:24
>>539
ガッ ガッ ガッ ・・・
541534: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でもよいのならそうしたいのですが・・
543デフォルトの名無しさん:2007/06/16(土) 01:39:11
>>538
BNF表記で言語の構造を定義することで何が可能になり何に寄与するか?
って、逆に言うと、言語の構造を定義しないでどうやってプログラムできますか?
544デフォルトの名無しさん:2007/06/16(土) 02:32:29
>>543
じゃなくて、>>538 の表記を説明しろってことでは?
545デフォルトの名無しさん:2007/06/16(土) 02:57:09
>>541
javaのリストはただの動的配列だぞ。歴史的にはベクタの非同期版。
ランダムアクセスマーカーがついてるから一定時間以内のランダムアクセスを保証する。
マーカー付きでシーケンシャル・ランダム両アクセスが可能な場合
一般的にはアルゴリズムが切り変わってるから
541が想像してるのとは別物。
ArrayList使え、つーかjavadoc読め。
546デフォルトの名無しさん:2007/06/16(土) 07:54:31
IBMのPCにバンドルされているRuntimeと
SunのRuntimeって何か違うの?
547デフォルトの名無しさん:2007/06/16(土) 08:15:19
ランダムならHashedArrayMap
548542:2007/06/16(土) 10:57:05
自己解決しました^^;
ローカルアドレス http://xxx.xxx.xxx.xxxx:8080/ だと携帯のメーラーがアンカー付けてくれなかったみたいです。
http://ドメイン/ にしたらアンカー付けてくれました。
549548:2007/06/16(土) 10:58:02
すみません、投稿にアンカー付いちゃったm(_ _)m
550デフォルトの名無しさん:2007/06/16(土) 14:32:28
http://mail2.nara-edu.ac.jp/~asait/java/tomcat/tomcat.htm#section32
このページを参考にTOMCAT使おうとしてるんだけど
jspは動かせるけどclassから動かない・・・。
invokerのコメントアウトも削ってるのに404になる。
誰かエロい人教えてください。
551デフォルトの名無しさん:2007/06/16(土) 14:49:00
サーブレット名の前に/servlet/をつけてないんじゃないの
552550:2007/06/16(土) 14:53:06
サーブレット名って例のHelloWorldなら
http://localhost:8080/mypages/servlet/HelloWorldじゃダメってことですか
教えてくんでごめんなさい。
553デフォルトの名無しさん:2007/06/16(土) 15:01:03
WEB-INF/classesにHelloWorld.classはあるのか?
554デフォルトの名無しさん:2007/06/16(土) 15:04:37
web.xml の設定がまずいんだろう。私もはまったことがある。
URL のマッピングがうまくいっていないんだろう。
555デフォルトの名無しさん:2007/06/16(土) 15:47:44
import java.util.Scanner;

と書くと、「シンボルが解決できません」と出てエラーになってしまいます。
J2SEのバージョンは1.5なので、Scnanerが実装されていないはずはないのですが・・・。
何故だか分かる方いますか?
556デフォルトの名無しさん:2007/06/16(土) 16:16:39
Scnaner→Scanner
557デフォルトの名無しさん:2007/06/16(土) 16:29:12
>>556
すいません、そこはただのタイプミスです(^-^;
558デフォルトの名無しさん:2007/06/16(土) 17:02:45
>>555
・javacのパスが1.5を指してない
・eclipseのビルドが1.5に設定されてない
559デフォルトの名無しさん:2007/06/16(土) 17:34:32
>>558
その通りでした・・・1.4.12のままでした。
助かりました、ありがとうございます。
560デフォルトの名無しさん:2007/06/16(土) 20:25:41
)553
置いてます。
>554
マッピングですか…。
xmlはよくわからないんですけど調べてみます。
561デフォルトの名無しさん:2007/06/16(土) 21:52:57
jarのアプリから同階層のファイルのパスが取得できずに困っています。

apl
│ readme.txt

└─work.jar
test.class
このようなJarアプリの構成の場合、readme.txtはwork.jarと同じ階層なので
./readme.txtと指定すれば良いと思ったのですが、読みにいけません。
test.classから見た場合を考え
../../readme.txtとしましたが、やはり読みにいけません。

System.getProperty("user.dir")を使用すればよいだけなのですが
なぜファイルが見つけられないのか困っています。

どなたか教えてください。
562デフォルトの名無しさん:2007/06/16(土) 22:19:15
"readme.txt"
563デフォルトの名無しさん:2007/06/16(土) 23:37:16
>>561
設定次第だけど、多分ソレは見えない。
アプリから読みたい場合、jarを自分で作っているならば、jarのルート(デフォルトパッケージ)の所にreadme.txtを置いてjarにする。

Webから読みたいならば、readme.txtをjspとか置いてある公開されているディレクトリに配置しなきゃダメ。
564デフォルトの名無しさん:2007/06/16(土) 23:37:25
文字セットを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);
}
565デフォルトの名無しさん:2007/06/17(日) 00:15:40
>>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のコンストラクタを調べて変換かけてくれ。
566デフォルトの名無しさん:2007/06/17(日) 00:16:07
Javaランタイムについて質問なんですが、"J2SE Runtime Environment 5.0 Updata 6"みたいなのはプログラムの追加と削除から消していいんでしょうか。
567デフォルトの名無しさん:2007/06/17(日) 00:18:22
>>566
オタクの環境で必要かどうかなんて、知らんがな。
他にどんなソフト入っているかとかによるから答えようがない。
568デフォルトの名無しさん:2007/06/17(日) 00:34:10
なんかテキストファイルを隔行で読み込んでしまうんだが、なぜ?
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;
}
569デフォルトの名無しさん:2007/06/17(日) 00:37:14
>>568
while (true){
String line = br.readLine();
if(line == null) break;
list.add(line);
}
 
570568: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の設定なのかもしれませんが・・・。
よろしくお願いします
572デフォルトの名無しさん:2007/06/17(日) 00:58:18
>>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できないとなれば、ソケット通信自体に制限がかかっているとしか考えにくいかな。

573568:2007/06/17(日) 01:17:44
>>569
解決しました!
ありがとう。

でも同じような処理なのになんでだろ・・・
574デフォルトの名無しさん:2007/06/17(日) 01:22:38
>>568
ヒント: br.readLine() の呼び出し回数
575デフォルトの名無しさん:2007/06/17(日) 02:32:02
TOMCATとMysqlを連動させようとしてます。
ちゃんと\libにもmysql-connector置いて環境変数も通ってるはずなんだけど、
Error at SQL connectionになります。
プログラム自体は間違ってないはずなんだけど、かれこれ数時間格闘してます。
TOMCATも他の簡単なものでは動いてます。
わかる方いたら教えてください。
576デフォルトの名無しさん:2007/06/17(日) 08:35:02
>>575
設定が間違っているだけだろう。
Tomcat、MySQL、OSなどの各バージョン、それからTomcatとMySQLは同じマシンなのか違うマシンなのか・・・など
まず、全ての環境を書け、アホ

1. 単純なJDBCの接続はできるか?
2. Tomcatの管理コンソールからは?
577デフォルトの名無しさん:2007/06/17(日) 10:44:43
Javaでドロップレット(アイコンにファイルをドラッグ&ドロップして作業させる)を作ることはできますか?
もし参考になるサイトをご存知でしたら教えていただけませんか?
よろしくお願いします。
578デフォルトの名無しさん:2007/06/17(日) 11:44:58
先週からservletによる課題作成を始めたのですが、
public void doGet(HttpServletRequest req, HttpServletResponse res)〜
といったメソッドを使い、JSPへ変数の値を受け渡すことは出来たのですが、
画面遷移時にreqとresの値を初期化していない、という指摘を受けました。

ServletConfigなどを調べ、初期処理メソッドを作り、super.init(conf);
といった感じで書いてみたのですが、System.out.printlnで調べてみると、
reqもresも全く初期化されていませんでした。
req == null; のようにするとエラーが起きてしまいますし、
どうすれば初期化出来るのか、どのメソッドが正解なのか分かっていません。

何かしらヒントを頂ければと思います。宜しく御願いします。
579575: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のパスがうまくいってないんだろうとは思うけど…。
580デフォルトの名無しさん:2007/06/17(日) 11:52:44
>>579
どういう例外が発生したのか、手を抜かずに書こう。
スタックトレースは長いが全文書くくらいのつもりで。

JDBCデータソースを使ってるとしたら、
Tomcatは4.x系と5.0系と5.5系で設定方法が違うので、気をつけて。5.0系はこれを参照
ttp://tomcat.apache.org/tomcat-5.0-doc/jndi-datasource-examples-howto.html
使ってないとしたら、JDBCドライバの置き場所かURLの間違いだろう。

どっちにしろ、スタックトレースがないので判断のしようがない。
581デフォルトの名無しさん:2007/06/17(日) 13:04:18
>>577
start "" "対象jarのパス" %1
というバッチファイルを書いてそれに対してエクスプローラからファイルをドロップすれば
mainのargs[0]でファイルパスが取得できるよ
もっといい方法もありそうな気はするけど
582デフォルトの名無しさん:2007/06/17(日) 16:07:17
Java で Windows の service は作れますか?
コントロールパネルのサービスから起動・停止コントロール出来ますか?
583デフォルトの名無しさん:2007/06/17(日) 16:12:12
できたらすごいよね
584デフォルトの名無しさん:2007/06/17(日) 17:06:12
デーモンというかクライアントに機能をサービスするだけなら出来る。
いわゆるサービスにするためにはサービスマネージメントAPIを実装
する必要があるからJNIでも使うしかないんじゃないかな。
汎用的なサービス化ツールも無い訳じゃないけどね。
585デフォルトの名無しさん:2007/06/17(日) 17:27:43
それなら初めからCで書けば良いじゃないか
586デフォルトの名無しさん:2007/06/17(日) 18:23:11
回答いただいたみなさんありがとうございます
質問の仕方が悪かったので仕方ないのですが
もう Java で単独で動くところまで出来上がってて
それを Windows 上でサービスにしてインストール
出来たらいいなと思って質問しました
bat ファイルでも作って起動時に実行でもいいんですけど
もう少しスマートな方法は無いかな・・・と
587デフォルトの名無しさん:2007/06/17(日) 19:12:03
Cでラッパー書けばよくね?
588デフォルトの名無しさん:2007/06/17(日) 19:14:43
それなら初めからCで書けば良いじゃないか
589デフォルトの名無しさん:2007/06/17(日) 19:15:55
よくよめ。もうJavaで出来ちゃってんだよボケ
590デフォルトの名無しさん:2007/06/17(日) 19:26:22
じゃぁ漏れがサービス化ラッピング用の
AbstructInteface創ってやるから
お待ちください
591デフォルトの名無しさん:2007/06/17(日) 20:04:51
System.out.println("Format:"+channel.getFormat().toString());

channel.getFormat().toString()

こんなにドットが続く意味が分かりません。
printlnでメソッドを引数に出来るのですか?
初歩の質問ですいません。
592デフォルトの名無しさん:2007/06/17(日) 20:19:46
printlnが引数にとっているのはメソッドではなくメソッドを評価した値です
593デフォルトの名無しさん:2007/06/17(日) 20:27:39
>>591
System.out.println("Format:"+channel.getFormat().toString());

String str = "Format:"+channel.getFormat().toString();
System.out.println(str);
594デフォルトの名無しさん:2007/06/17(日) 20:34:50
>>591
>>592

なるほど。やっと意味が分かった気がします。
返信ありがとうございます。


channnel.getFormat().toString()

という記述は、channnelというオブジェクトに対してgetFormatというメソッドの中のtoStringというメソッドを使って、それを評価した値がstrに格納されるということでしょうか?
なんか変な解釈をしてそうですが。
595デフォルトの名無しさん:2007/06/17(日) 20:36:09
ちがいます
どうみても変な解釈です
本当にありがとうございました
596デフォルトの名無しさん:2007/06/17(日) 20:39:19
>>595

ですよね。
getFormat()とtoString()の間を結ぶドットの意味が分からないというのが問題点です。
どう見ても勉強不足です。
本当にアリガトウございました。
597デフォルトの名無しさん:2007/06/17(日) 20:43:34
598デフォルトの名無しさん:2007/06/17(日) 20:48:13
人にjarファイルを配布する際、
swtって外部DLLとか持ってこないといけないっぽいけど、
swingだと何も用意しなくていいの?

599デフォルトの名無しさん:2007/06/17(日) 20:51:54
>>598
SWTも月末に出るver3.3だと外部dllは必要ない。
600デフォルトの名無しさん:2007/06/17(日) 20:54:36
>>596
channnel.getFormat().toString()は、
Object obj = channnel.getFormat();
obj.toString();
とおんなじ
601デフォルトの名無しさん:2007/06/17(日) 20:59:31
>>600

今度こそ本気で分かりました。
toStringの意味が分かってなかったのが原因だったようです。
ご丁寧にも返信くれた方ありがとうございました!
602デフォルトの名無しさん:2007/06/17(日) 21:47:53
>>586
Microsoft Java Language Conversion AssistantでC#に変換しちゃえ
603598:2007/06/17(日) 23:05:40
>598 
うわマジサンクス

諦めてswingで画面作り直してたけど、SWTでもなしでいけるようになるのか…
604デフォルトの名無しさん:2007/06/17(日) 23:59:31
informaってインストールはどうすればいいのでしょうか?
サイトからダウンロードはしたのですが……
605デフォルトの名無しさん:2007/06/18(月) 00:49:10
packageとimportの意味が調べてもよく分かりません。教えてください。
606デフォルトの名無しさん:2007/06/18(月) 01:50:43
調べて分からない人間に教えて分かるとは思えない
607デフォルトの名無しさん:2007/06/18(月) 03:14:11

public class GuessServlet extends HttpServlet{
public void doGet( HttpServletRequest request,
HttpServletResponse response)
throws IOException,ServletException{
response.setContentType("text/plain; charset=Windows-31J");

これのresponse.setContentTypeというのは、サーバーからクライアントに送られる文字の
エンコードにだけ関与しているということでしょうか?
608デフォルトの名無しさん:2007/06/18(月) 04:17:22
何でそう思ったのか書け
609デフォルトの名無しさん:2007/06/18(月) 08:07:43
>605 簡単に説明。extendsは別のクラスにあるメソッドを使うための儀式みたいな物。
packageはプロジェクトが大規模になるとファイルが散乱して美しくない&再利用しにくい
ということでフォルダーを作ってその中にファイルを入れてしまおうというシステム
610デフォルトの名無しさん:2007/06/18(月) 08:10:19
みすった^^;extendsじゃなくてimportな。
611577:2007/06/18(月) 10:15:30
>>581
ありがとうございます
でも自分にはまだ難しくて解りません(´・ω・`)
612デフォルトの名無しさん:2007/06/18(月) 19:37:02
swingで自前でダイアログ作るのってどうすればいいのでしょうか・・・?

dialog.show();を使ったら推奨されないとか言われてeclipseにおこられてしまいました・・・。

613デフォルトの名無しさん:2007/06/18(月) 19:50:11
>>612
http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/Window.html#show()
> 推奨されていません。 JDK version 1.5 以降は、 setVisible(boolean) に置き換えられました。
614デフォルトの名無しさん:2007/06/18(月) 20:48:27
>>575
うちではできてる
615デフォルトの名無しさん:2007/06/18(月) 22:04:24
RMIのリモートオブジェクトなのですが、
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/rmi/spec/rmi-arch3.html
のように、リモートオブジェクトのスレッドは保証されていないとあります。
これを固定する方法はあるのでしょうか?
サーブレットのシングルスレッドモデルのようなイメージです。
性能面等はとりあえず差し置いて構わないのですが。
カスタムソケットファクトリあたりがそうなのかなあと思ったのですが
使い方がよく分かりませんでした…
616デフォルトの名無しさん:2007/06/18(月) 22:10:50
>>615
RMIは単なる中継に使って、別プロセスで本体を上げていてはどうか?
RMIのシグネチャの中にスレッドを特定するキーを持たせておいて
RMIの機能は単なるディスパッチャ。
やりたいことが何かわからんのでこれくらいしか・・・
617デフォルトの名無しさん:2007/06/18(月) 23:10:24
>>615
まんま、簡易Servletでも作成してしまえばいいと思われ。
イベントのディスパッチスレッドがリクエスト毎にスレッド立ち上げればいいでしょう。
618デフォルトの名無しさん:2007/06/18(月) 23:51:43
ファンクションキーでタブやフレームをきりかえれるような処理ってできますか?

F2を押したら現在のフレームを閉じて新しいフレームを開く みたいな
619デフォルトの名無しさん:2007/06/19(火) 00:11:51
>>618
ヒント: java.awt.Event
620デフォルトの名無しさん:2007/06/19(火) 01:03:59
Wikipediaを読んでいたら「Javaでは意図せずオーバーライドしてしまう問題がある」というような記事が
書かれていたんですが、この問題はいつごろから指摘されたものなんでしょう?
言語設計時にすでにわかっていたんでしょうか?それとも後から見つかったものでしょうか?
621デフォルトの名無しさん:2007/06/19(火) 01:14:12
>>620
意図しないオーバーライドはあまり問題になることはない。
問題になるのはオーバーライドしたつもりがしてなかったケース。
この対策としてjava 5から@override が追加になった。
622デフォルトの名無しさん:2007/06/19(火) 01:22:14
>>621
実際はそうなんですか。
「してるつもりがしてなかった」ってのは気をつければ防げますけど
「するつもりがないのにしていた」のはいくら気をつけても防げないので問題が大きそうに感じたんですが。

てことは設計時に気づいてたけど問題が小さいので気にしなかったって感じなんですかね?
623デフォルトの名無しさん:2007/06/19(火) 01:26:10
Javaに限ったことではないんじゃねーか?
オーバーライドをサポートするすべての言語で起こりうる問題だとおもわれ。
624デフォルトの名無しさん:2007/06/19(火) 01:26:33
>>620
意図しないオーバーライドが問題になるケースって具体的にどんなん?
オーバーライド失敗には、メソッド名のスペルミスとかあるけど。
625620:2007/06/19(火) 01:41:47
>>623
例えばC#だとoverrideの指定が必須らしいんでそういうのは起こらないそうです

>>624
本来呼ばれるはずのないタイミングで呼ばれる可能性があるのでは?
626デフォルトの名無しさん:2007/06/19(火) 01:53:19
質問。
tとhに値を入れてその計算の結果に基づいて、いくつかの言葉から
1つを表示するには(例えば、暑い、寒い)どうすればいいですか?

今は結果以外のも表示されてしまっています
627デフォルトの名無しさん:2007/06/19(火) 01:58:43
>>626
もう少し常人にわかるように質問してくれ
628デフォルトの名無しさん:2007/06/19(火) 02:06:38
例えばt=15 h=12
t+h<25なら 暑い
t+h<10なら 寒い

今回は27なので暑い  と表示させたいのに寒いも表示されてしまう
629デフォルトの名無しさん:2007/06/19(火) 02:14:53
暑い=0、寒い=1なら対象の数を2で割れば余りが0か1になるからそれで表示できる。
こんな感じ?
630デフォルトの名無しさん:2007/06/19(火) 02:21:22
計算結果を使って表記したいんですよ
631デフォルトの名無しさん:2007/06/19(火) 02:26:47
>>630
計算結果ってどういう根拠の計算をするんだよ。適当でいいのかw
(t + h) % 2 とか
632デフォルトの名無しさん:2007/06/19(火) 02:33:29
例えば
tが湿度 kが温度

不快指数を出す

結果から
暑いとか寒いとか表示させる
633デフォルトの名無しさん:2007/06/19(火) 02:35:47
じゃそうすればいいじゃん。
わからんから、>>628の例で行けば
例えばt=15 h=12 
t+h<10なら 寒い
そうでないなら 暑い 
634デフォルトの名無しさん:2007/06/19(火) 02:39:27
暑いとか表示させたい種類が6つ
635デフォルトの名無しさん:2007/06/19(火) 02:48:30
なんとなくわかった。 else if の使い方がわからなかったって話か。
中学生は早く寝なさいね

http://www.hellohiro.com/basic/ifelse.htm
636デフォルトの名無しさん:2007/06/19(火) 02:50:11
else ifって言えばよかったんだ。失敗した

一応言うけど中学生じゃないよ
637デフォルトの名無しさん:2007/06/19(火) 03:59:45
>>625
>本来呼ばれるはずのないタイミングで呼ばれる可能性があるのでは?
それオーバーロードじゃね?
638デフォルトの名無しさん:2007/06/19(火) 04:33:11
いやオーバーライドでしょ

意図せず呼ばれるっていう例じゃないけどこういう時問題になりそう

Hogeを継承したSpecialHogeがあってSpecialHogeのほうに状態の正当性を表明する
AssertValidメソッドがあったとする
それとは無関係にあとからHogeのほうにAssertValidメソッドが追加されたとする
するとSpecialHogeのAssertValidはあとから追加されたHogeの同名メソッドをオーバーライドしてしまって
HogeのAssertValidが呼ばれなくなってしまう

みたいな。
639デフォルトの名無しさん:2007/06/19(火) 07:34:29
スーパークラスのメソッドも確認せずに継承して意図しないオーバーライドってどんだけ間抜けな奴なんだ
640デフォルトの名無しさん:2007/06/19(火) 08:06:04
>>625
いや、C# のoverride指定が必須で問題が起こらないってんなら、

Javaでもオーバーライド禁止したいなら
メソッドに final指定しときゃ良いんだから問題は起こらないと言える。
641デフォルトの名無しさん:2007/06/19(火) 08:11:02
>>639
スーパークラス側で後からメソッド追加したらたまたまサブクラス側に同じシグネーチャの
メソッドが既にあったっつーことでわ?
642デフォルトの名無しさん:2007/06/19(火) 08:11:40
>>640
釣りか?
オーバーライドを禁止してどうする。
643デフォルトの名無しさん:2007/06/19(火) 08:16:27
>>642
オーバーライドを禁止すりゃ「意図しないオーバーライド」は起きない。至極当然の話。
644デフォルトの名無しさん:2007/06/19(火) 08:19:01
クラス A でオーバーライドするためには final を削除する必要がある。
しかし、その状態ではクラス B でその関数を意図せずにオーバーライドする可能性がある。
645デフォルトの名無しさん:2007/06/19(火) 08:22:26
>>644
上段は「オーバーライドされたくないメソッド」を「意図してオーバーライドしたい」ケースだから別の問題。

下段は意味がわからん。
646デフォルトの名無しさん:2007/06/19(火) 08:31:45
>>638
とはいっても現実にそーゆー問題が多発しているかというと???
>>624 が言うようなスペルミスはかなり多発してるけど。
647デフォルトの名無しさん:2007/06/19(火) 08:45:47
>>645
「意図してオーバーライドしたい」メソッドは final にできないが、
そのメソッドはいくらでも「意図しないオーバーライド」が出来てしまう、ということだ。
648デフォルトの名無しさん:2007/06/19(火) 08:51:54
>>647
finalがつかないなら、親クラスはオーバーライドされても良いと意思表示してる。

非finalなら子クラスが知らないうちに「意図しないオーバーライド」する可能性はあるものの、
オーバーライドしたら、いまどきのIDEなら表示してくれるので危険性はかなり低い。
649デフォルトの名無しさん:2007/06/19(火) 09:01:15
>>638
でもそれ実際には問題になりにくいよな。
HogeのAssertValidが状態の正当性を表明するものなら
状態の正当性を表明するSpecialHogeのAssertValidに上書きさたからといって
問題になるのは考えにくいわけで。

状態の正当性を表明以外でAssertValidって名前にするのも考えにくいし……
650デフォルトの名無しさん:2007/06/19(火) 09:29:23
C#の場合は非virtualのメソッドや隠蔽を盛り込んでしまったんで、
あの辺を厳密にせざるを得なかったのだと思う。
javaの場合は現状のままで混乱もない。単なる言語の設計思想の差だ。
651616:2007/06/19(火) 10:21:50
>>616-617
遅くなりましたがありがとうございます。
自分も大体同じ案を考えたのですがそれが普通か分からず、
RMIオブジェクトの生成あたりをカスタマイズする方法が
もしかしたらあるのかも、と思い質問させて頂いていました。
まずはその線で行ってみます。
652デフォルトの名無しさん:2007/06/19(火) 10:29:11
>>648
override があればその危険性を排除できる。
final によるコントロールは override の代替にはならんよ、ということ。
653デフォルトの名無しさん:2007/06/19(火) 10:55:31
素直に言語仕様が甘かったと認めればいいのに
C#よりJavaの方が先発だから仕方ない
654デフォルトの名無しさん:2007/06/19(火) 11:04:42
甘かったというよりは後発がより優れているのは当然。
後発で先発と同じ失敗をしたらたたかれるだろw
655デフォルトの名無しさん:2007/06/19(火) 11:21:57
C# に typedef がないのは(ry
656デフォルトの名無しさん:2007/06/19(火) 11:45:28
>>652
> override があればその危険性を排除できる。
うっかりoverride付け忘れの危険性もあるわけで、どっちもどっちじゃね?

まぁ、普通は警告見れば気付くだろうけど
それ言ったら「意図しないオーバーライド」も相当間抜けな話だし。
657デフォルトの名無しさん:2007/06/19(火) 11:52:28
>>652-656
オマエら他所いってやれ
658デフォルトの名無しさん:2007/06/19(火) 12:17:17
>>657
技術屋って上級者ほど空気読めないよな
659デフォルトの名無しさん:2007/06/19(火) 12:47:39
たまたま話の流れがそれでヒートしただけでは・・・
660デフォルトの名無しさん:2007/06/19(火) 13:20:48
JAVAやってみたいがEclipseをIDEに使う場合
他に何を入れればいいかが判らない
J2SEいれてそれでOK?
JavaSwingとかはJ2SEに一緒に入ってるの?
661デフォルトの名無しさん:2007/06/19(火) 13:32:02
>>660
J2SEも含めて何もいれる必要はない。
しいて言えば、基本APIドキュメントの日本語版程度。
662デフォルトの名無しさん:2007/06/19(火) 13:45:21
>>661
レスサンクス
逝って来る
663デフォルトの名無しさん:2007/06/19(火) 13:56:05
>>656
override がないとエラーなんすけど・・・
664デフォルトの名無しさん:2007/06/19(火) 15:00:24
>>663
今のところJavaではオーバーライドするのにoverrideなんてものは要らん
他の言語の話なら他所でやってくれ
665デフォルトの名無しさん:2007/06/19(火) 15:35:47
つーか
>するとSpecialHogeのAssertValidはあとから追加されたHogeの同名メソッドをオーバーライドしてしまって

こうなる前にまず、リファクタリングでスーパーのメソッドに移動してると思うんだが。
ただの不注意、誰でもあるからどうしようもない。
666デフォルトの名無しさん:2007/06/19(火) 15:51:39
現実的に起こりえるのは、オーバーライドしちゃいけないメソッドをオーバーライドしちゃったというケースだからね。
finalがあるのでこれを防ぐってのがJavaの設計思想なわけだ。
orverrideと書かなきゃオーバーライドできないってのもありだけど、ダメと言っているのにオーバーライドする馬鹿がいるとしたらJavaのが優秀w
667デフォルトの名無しさん:2007/06/19(火) 16:04:04
>>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.
668デフォルトの名無しさん:2007/06/19(火) 22:45:34
>>667
エラーだろうが警告だろうが上の文脈では本質的に同じだろう。
つかさすがにそれはスレ違い
669デフォルトの名無しさん:2007/06/19(火) 22:53:36
javaってC#のnewオーバーロードに相当する機能はないの?
670デフォルトの名無しさん:2007/06/19(火) 22:55:21
>>667
いや、>>656は区別してるから文脈上は別。
区別できてなかったら>>663がアホなんだろ。

っつか、スレ違いならレスつけるな
671デフォルトの名無しさん:2007/06/19(火) 22:56:11
>>669
newオーバーロードが欲しいケースって、どんなケース?
672デフォルトの名無しさん:2007/06/19(火) 23:00:55
Charset charset1 = Charset.forName("SJIS");
CharsetDecoder decoder = charset1.newDecoder();
ByteBuffer bb = ByteBuffer.wrap("a".getBytes());
System.out.println(decoder.decode(bb).toString());

先生・・・aが表示されんとです・・。
673デフォルトの名無しさん:2007/06/19(火) 23:10:36
>>672
1.6以降だと表示される。1.5、1.4だと駄目だったと思う。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6196991
が原因。CharsetDecoder#decode(ByteBuffer) のバグ。
674デフォルトの名無しさん:2007/06/19(火) 23:13:21
>>672
2文字(ab)以上でないとダメみたい
675デフォルトの名無しさん:2007/06/19(火) 23:21:57
>>672
1.4でソース読んでみた。
0.5(平均バイト) × 1(バイト) が 0になる為、1バイトは無視されるバグだった。
676669: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}
677デフォルトの名無しさん:2007/06/19(火) 23:26:43
>>676
それは知ってる。

で、具体的にどんなケースで必要になるの?って質問なんだが。
678デフォルトの名無しさん:2007/06/19(火) 23:54:05
デリゲートだっけ?そういうのがないjavaだと困らんような。
公開フィールドに突っ込まれたクロージャは将来困るかも知れんが。
679デフォルトの名無しさん:2007/06/19(火) 23:56:54
> 公開フィールドに突っ込まれたクロージャは将来困るかも知れんが。
???
680デフォルトの名無しさん:2007/06/20(水) 04:15:12
どんな場合に使うかも知らずに「知ってる」って…w
681デフォルトの名無しさん:2007/06/20(水) 08:30:14
使われたくないスーパークラスのメソッドを隠す
publicをprivateにするのも可
インターフェイスの明示的実装とあわせて、
継承を繰り返したりインターフェイスを多数実装したクラスが
継承メンバだらけでぐちゃぐちゃになるのを防ぐ機能だよ
さすがにスレ違いだなすまん
682デフォルトの名無しさん:2007/06/20(水) 09:22:42
>>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.
683デフォルトの名無しさん:2007/06/20(水) 09:37:12
続く

> Next, members that are hidden by other members are removed from the set.

だけど、これは(集合内の)他のメンバによって隠ぺいされるメンバは集合から削除される、なんだろな。
684デフォルトの名無しさん:2007/06/20(水) 18:21:04
基底クラスでpublicになってるのを派生クラスでprivateにするのはC#でも無理だな
派生クラスで基底クラスが実装してるものと同じインターフェイスを実装しなおしたいとか、
インターフェイスを実装したいけど、そのメンバが
基底クラスのメンバと名前が被ってるとかいうときに使う
685デフォルトの名無しさん:2007/06/20(水) 19:51:32
くだらない質問ですいません。
int b=1;
int c=0;
int d=b---c;
これは解釈の仕方ではインクリメント演算子にもなるし、
デクリメントにもなると思います。この場合はデクリメント演算子と
解釈して計算するそうです。なぜそうなるのでしょうか?
人間がこういう場合はこうすると決めたことなのでしょうか?
686デフォルトの名無しさん:2007/06/20(水) 19:56:38
むしろどう解釈したらインクリメントになるのか教えてほしい
687デフォルトの名無しさん:2007/06/20(水) 20:00:48
すいません、間違えました。前置演算子として解釈するのか
後置演算子として解釈するのかでした。
688デフォルトの名無しさん:2007/06/20(水) 20:13:49
左から判定していくんじゃねーの
689デフォルトの名無しさん:2007/06/20(水) 20:15:12
>>685
C言語は解釈順が決められていないが
Javaは前から評価していくと決まっていて、
単項演算子は、2項演算子の-よりも優先度が高いから
d = (b--) - c
じゃないのか?
ttp://www.y-adagio.com/public/standards/tr_javalang/15.doc.htm#4779
690デフォルトの名無しさん:2007/06/20(水) 20:30:46
>>689
そのURLに書いてあるのは値の評価順のことでしょ
構文解析の話題とはまったく関係なくない?
691デフォルトの名無しさん:2007/06/20(水) 20:42:20
>>689
http://www.y-adagio.com/public/standards/tr_javalang/3.doc.htm#95504
> Javaは,他の字句変換を行えば文法的に正しいJavaプログラムが生成される場合でも,
> 各段階で(トークンの)最長可能変換を常に使用する。例えば,入力文字a--bは,
> a,-,-,bとトークン切出し(3.5)すれば,文法的に正しいJavaプログラムの一部となるが,
> 文法的に正しくないa,--,bにトークン化される。
692デフォルトの名無しさん:2007/06/20(水) 21:09:26
>>681
つリスコフの置換原則
693デフォルトの名無しさん:2007/06/20(水) 21:25:57
eclipseのVisual Editorでswingを使ったGUIプログラムを作りました(main()はなし)
eclipse上からはメニューからJava Bean実行を選ぶだけで実行出来るのですが、
コマンドプロンプトや他のPCから実行したい場合どうすればよいのでしょうか?
694デフォルトの名無しさん:2007/06/20(水) 21:28:45
エントリポイントないのにどうやって実行するんだ?
695デフォルトの名無しさん:2007/06/20(水) 21:32:05
>>693
いったい何を言っているんだ・・・
mainメソッドを記述したクラスを作って実行すればいいじゃないか?
696デフォルトの名無しさん:2007/06/20(水) 21:38:00
685です。回答ありがとうございました。
ホームページを見たのですが、勉強不足で理解できませんでした。
いろいろ自分で調べてわかるようにしたいと思います。
697デフォルトの名無しさん:2007/06/20(水) 21:47:18
「左から順に解析される」
「複数の解釈が可能な場合は常に長い方が採用される」

この2点だけおさえておけばいい。
あとは理解力の問題だ。

「この条件で自分で解析するとしたらどうなるだろうか?」
というのを実際に紙にでも書いて考えてみれ。
698デフォルトの名無しさん:2007/06/20(水) 22:30:54
見てすぐに理解できないコードは実務では不要
言語研究とか趣味ならいいが。
699デフォルトの名無しさん:2007/06/21(木) 04:52:42
String hoge = fuga.split("regex");
if(hoge.length >= 3 && hoge[2].equals("hage")){
}
みたいに書いたときにIndexOutBoundみたいなException出る心配はないですよね
700デフォルトの名無しさん:2007/06/21(木) 05:21:26
>>699
IndexOutOfBoundsExceptionが出る心配はない。
その前にコンパイルエラーが出る。
701デフォルトの名無しさん:2007/06/21(木) 05:24:45
つ String[] hoge =
配列の要素数をチェックしているからhoge[2]でインデックス範囲外アクセスの例外は出ないよ
702デフォルトの名無しさん:2007/06/21(木) 05:38:31
>>700
すみません typo です

String[] hoge = fuga.split("regex");

と解釈してください
703デフォルトの名無しさん:2007/06/21(木) 05:39:57
必ず左から評価されると決まっていない場合は
ifを2行に分ける必要があるんだけど
Javaの場合は大丈夫だお
704デフォルトの名無しさん:2007/06/21(木) 07:39:28
// さっき知ったJadが凄過ぎて感動して耳から鼻くそが出てきそう
705デフォルトの名無しさん:2007/06/21(木) 08:35:10
if(hoge.length >= 3 & hoge[2].equals("hage")){
}
だとショートサーキット評価が行われないから、
hoge[2]が無ければArrayIndexOutOfBoundsExceptionが投げられる。
706デフォルトの名無しさん:2007/06/21(木) 10:39:34
送信ボタンを押しても、反応しません・・。
どこか、間違えていますか?
初心者なので、ご指摘・修正の方を宜しくお願いいたします。

http://i-get.jp/upload500/src/up5912.txt
707デフォルトの名無しさん:2007/06/21(木) 11:12:52
>>706
JButton button2
コンストラクタの中で定義しているローカル変数のbutton2とインスタンス変数のbutton2の名前が衝突しているのが原因。
解決方法としては、コンストラクタの方の
 JButton button2 = new JButton("送信"); /* 送信ボタン */

 button2 = new JButton("送信"); /* 送信ボタン */
とする。
それだけだとぬるぽが起こるガッ、原因は同じ。
708デフォルトの名無しさん:2007/06/21(木) 11:18:48
>>707
ご回答ありがとうございます!
修正をさせて頂きましたが、ぬるぽが発生します。
ぬるぽを防ぐにはどの様に修正した方が良いでしょうか?
色々とぐぐったのですが、初心者なので良く分かりませんでした。
質問ばかりですみません・・。
709デフォルトの名無しさん:2007/06/21(木) 11:29:23
>>708
原因は一緒だといってるだろうガッ
解決した理由を考えなければ、貴様は何度も同じ質問をする。
710デフォルトの名無しさん:2007/06/21(木) 11:33:52
711デフォルトの名無しさん:2007/06/21(木) 12:05:45
>>705
ぬるぽじゃないの?
712711:2007/06/21(木) 12:23:10
あ、ああああ。すません。演算子見てませんでした。
713デフォルトの名無しさん:2007/06/21(木) 17:08:38
StreamTokenizer って指数形式の浮動小数点数を数値として読み取ってくれないのですか?
読み取らせるにはどうしたらよいでしょうか。
714デフォルトの名無しさん:2007/06/21(木) 20:29:36
JDBCでMySQLにデータ追加するプログラムを作っているのですが、
eclipseで実行するとデータ追加出来るのに、JavaWebStartで実行するとできません。
ドライバか何か設定してやらないといけないのですか?
715デフォルトの名無しさん:2007/06/21(木) 20:37:51
エスパーさーーん出番ですよー
716デフォルトの名無しさん:2007/06/21(木) 20:41:42
-classpath
717デフォルトの名無しさん:2007/06/21(木) 23:31:34
エスパーしても要求するライブラリインスコさせてないとかセキュリティマネージャとか色々ありすぎる。
718618:2007/06/22(金) 00:58:49
>>619
ありがとう
答えは、VK_F1でOKでしょうか?

なんかjava.awt.event.KeyEvent
の説明にあった、「定数の値に頼らないでください」の注意書きがよくわからなかったのですが…

719デフォルトの名無しさん:2007/06/22(金) 01:19:13
定数と比較する時に数値リテラルを使うなって事。

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?
721デフォルトの名無しさん:2007/06/22(金) 05:51:15
おk

場合によっちゃ型まで変更があるかも知れん。

final String COLOR_RED="#ff0000";

if(getColor()==127)...

こうなったら定数とgetColor()の定義以外にリテラルも変更する必要が出て来てバグを誘発したりする。

公開されてるAPIリファレンスの説明文から分かる情報以上の、たとえばソースコードから
得た情報に依存したコードを書くのは行儀悪い。
722デフォルトの名無しさん:2007/06/22(金) 11:11:40
型の変更に対応できるソースなんて書けないだろ
その例だと>>720もアウトだし。
723デフォルトの名無しさん:2007/06/22(金) 11:30:15
JDialog って、コンストラクタで作成した後で、
オーナーを変更することはできないのですか?
724デフォルトの名無しさん:2007/06/22(金) 11:59:39
>>723
作成した後に変える必要があるのですか?
新たにnewすることはいけないことですか?
専用のPanelを作成することはできないのですか?
特定の用途であれば、それぞれのパネルを保持すればよいのではないですか?
725723: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 はコンストラクタ内の最初に呼び出さなければいけないので、これもできません。

何かいい方法はないでしょうか?
726デフォルトの名無しさん:2007/06/22(金) 13:38:21
作成側でownerに対する参照を持っているべきだと思うな。
使い分けはオーバーロードしておきゃOK

class SomeDialog extends JDialog {
 public SomeDialog(Dialog owner) {
  super(owner);
 }
 public SomeDialog(Frame owner) {
  super(owner);
 }
}
727デフォルトの名無しさん:2007/06/22(金) 13:41:18
>>725
createDialog みたいなメソッド作って、そこで instanceof して
2種類のコンストラクタ呼び分けるしかないのでは?

1.6以降なら JDialog のコンストラクタが Window も引数にとれるようになってるけど。
728デフォルトの名無しさん:2007/06/22(金) 13:42:31
どうしても中で判定したい場合は、次のメソッドを追加。

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() // ?
    }
}
729デフォルトの名無しさん:2007/06/22(金) 15:41:46
ローゼンのキャラが解説してるjavaのサイトがあったのですが
どなたかご存知ないですか?
クライアントサーバとかの解説がされているページです。
730デフォルトの名無しさん:2007/06/22(金) 19:58:15
クライアントサーバ方式のチャットを作っています。
クライアントがメッセージを受け取り、TextAreaに追加する際
同時にキャレットを動かし最新の発言が見えるようにしています。

これだとログをさかのぼり読んでいる最中に発言があると\(^o^)/オワタなので、
スクロールバーが一番下にある状態に時だけキャレットを動かしたいと思うのですが
どうやってそういう状態を知るのか分からず、実装できません。
助言をください。

以下が現在使っているメソッドです。

public void addMessage(String str) {
messageArea.setText(messageArea.getText() + "\n" + str);

try {
messageArea.setCaretPosition(messageArea.getText().length());
} catch (Exception ex) {
}
}
731デフォルトの名無しさん:2007/06/22(金) 20:40:11
>>730
JScrollPane#getVerticalScrollBar()で取得した垂直スクロールバーに対して、
getMaximun()で最大値, getValue()で現在のスクロール量が取れる。
スクロール可能な実際の最大値は、getMaximun()の値から縦の長さ分引いた値になるので注意。
あとは、この辺組み合わせればできるだろ。
732デフォルトの名無しさん:2007/06/22(金) 20:50:06
733デフォルトの名無しさん:2007/06/22(金) 20:56:09
>>732
グロ画像。今時こんなの貼るやついるんだな。
734sage:2007/06/22(金) 21:13:49
コマンドプロントにて
javac ファイル名.javaでエンターを押し
コンパイラされて文字が出てくるはずだと思うのですが
何故か出てきません

public class ExerciseD2L1 {
public static void main(String args[]) {
System.out.println("ここに文字いれてます");
}
}

↑間違っていますか?
735デフォルトの名無しさん:2007/06/22(金) 21:17:15
コンパイルしただけじゃだめだぞw
後に実行しないと。

>java ExerciseD2L1 エンター
736sage:2007/06/22(金) 21:27:22
解決できました!
>>735さんありがとうございます><
737736: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
738デフォルトの名無しさん:2007/06/22(金) 22:20:17
>>737
> javac SampleD2L2.java
でコンパイルが成功したら

> java SampleD2L2
で実行。
739736:2007/06/22(金) 22:27:13
>>738さんありがとうございました><
無事解決しました
740デフォルトの名無しさん:2007/06/22(金) 23:13:03
>>736
読んでいる参考書を晒して欲しい
もしかしたらば、とんでもなく糞本を読んでいるかもしれない。
丸の内なんとかとか・・・
741デフォルトの名無しさん:2007/06/22(金) 23:28:19
awtコンポーネントとswingコンポーネントを
Frame、JFrame内に共存させてもいいんでしょうか。

試してみたところ不具合は起きませんでしたが、
この先疑問を抱えながら開発するのは不安なので
ご存知の方教えてください。
742デフォルトの名無しさん:2007/06/23(土) 00:10:22
不安だったらやめとけ
743デフォルトの名無しさん:2007/06/23(土) 00:29:39
うちのPCは家庭用最先端な4コアCPUです。
こういうのはマルチスレッドの処理が速いと聞きましたが、
このスレッドってJAVAのThreadと同じものですか?
Thread使って並列処理するとうちのPCの性能を生かせるのでしょうか?
それとも、JAVAのThreadとは別物なのでしょうか?
744デフォルトの名無しさん:2007/06/23(土) 00:34:26
匿名クラスってコンストラクタ定義できないっスよね?
745デフォルトの名無しさん:2007/06/23(土) 00:56:02
>>744
できない。

インスタンス初期化子使うかフィールド宣言に初期化子付けるか、そーゆーので代用。
746デフォルトの名無しさん:2007/06/23(土) 01:34:28
増えたと思ったらw

>>741
軽量が先、重量が後に描画される。
747デフォルトの名無しさん:2007/06/23(土) 02:17:31
>>743
VMの実装によると思われる。
たぶん、凡人が考えるようなことはやっている。
748デフォルトの名無しさん:2007/06/23(土) 04:14:36
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デフォルトの名無しさん:2007/06/23(土) 08:38:06
>>750
書いてあるよ。
ttp://java.sun.com/javase/ja/6/docs/ja/api/java/lang/Object.html#wait(long)
>現在のスレッドをこのオブジェクトの待機セットに入れるときに、wait メソッドはこのオブジェクトのロックだけを解除します。

最初は慣れないが、ガンガレ。
752デフォルトの名無しさん:2007/06/23(土) 08:47:59
>>751
Σ( ̄ロ ̄lll)
wait(long)じゃなくてwait()のところを読んでいたので気がつかなかった・・・

感謝です
753デフォルトの名無しさん:2007/06/23(土) 08:50:42
>>750
sunの開発者向けページにあるチュートリアル見ると幸せになれるよ。
sunのjavadocは完全に公開仕様な部分しかふれてないから
実装よりの事は伏せてある(リスナが呼ばれる順に依存しちゃダメな理由とか)。
外部プロジェクトから取り込んだライブラリのドキュメントと見比べると
コピペだって事が分かる。javadocの方針は仕様のみ書けって事だからそういうもんなんだろ。
ただ、そのコピペが所々間違えてるんでチュートリアルとかガイドをちゃんと読んだ方が良い。
754デフォルトの名無しさん:2007/06/23(土) 08:57:40
755デフォルトの名無しさん:2007/06/23(土) 09:10:18
>>749
>左のパネルには可能な限り大きな正方形を表示します。
>左のパネルの横幅は縦幅以上には広がりません、
>ウィンドウが横に広がれば
>右のパネルの横幅は変わらず、左のパネルだけが広がります。

矛盾してない?
756デフォルトの名無しさん:2007/06/23(土) 09:39:30
ウィンドウの横幅を広げれば、自動的にウィンドウの縦幅も広がっていくって事なんじゃない?
757デフォルトの名無しさん:2007/06/23(土) 10:56:54
>>748
よく知らんが、shutdownは残りのタスクが終了するまで待つとかしないん?
758749:2007/06/23(土) 11:43:23
分かりやすい説明がが書けず、すみません。

>>755
ウィンドウが横に広がれば、
右のパネルの横幅は変わらず、左のパネルだけが優先して広がるが、
左のパネルの横幅がウィンドウの縦幅の大きさまで達するとそこからは右のパネルが広がりだすという事です。

>>756
いえ、そうではありません。
ウィンドウが縦に広がった場合は特に特別な事はなく、右のパネルも左のパネルも
ウィンドウが広がった分だけ広がります。
759デフォルトの名無しさん:2007/06/23(土) 12:11:12
ああ、つまり
┏━━┳━┓
┃   ┃  ┃
┃   ┃  ┃
┗━━┻━┛
では無く、
┏━━┳━┓
┃   ┃  ┃
┃   ┃  ┃
┣━━┫  ┃
┗━━┻━┛
なんだな。左下にパネルで無い部分があると(右下にもあるかも知れないが)。
760749:2007/06/23(土) 12:19:39
あ、左のパネルが長方形でもその中に描写可能な最大の正方形をと描くという意味で、
左のパネル自体が正方形という意味ではないです。

この記述は質問レスにいらなかったかもしれませんが、
左パネルの(横幅が縦幅に達した後)広がりが止める理由が分かってもらえればと思い書きました。
実際紛らわしくなっただけのような気もしますが(^_^;)
761デフォルトの名無しさん:2007/06/23(土) 13:20:50
>>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に怒られてしまいます・…
所有者ってなんでしょうか。親フレームだと思ったのですが…
764デフォルトの名無しさん:2007/06/23(土) 18:32:55
judeでクラス図を書こうとしてるんですけど、どうかいていけばいいかわかりません。
問題
ある旅行代理店では,宿泊施設と交通機関のチケットをセットにした商品販売を開始することにした.
この商品販売のための,計算機システムの導入も検討している.
この商品は顧客が店舗に行き,代理店の店員と価格や時間等を考慮し相談しながら販売することを想定している.
しかし,将来は顧客自身がウエブサイトや携帯電話等を通して,この商品を購入することが可能となるようにしたいと思っている.
この代理店は以下の三つの既存システムを利用可能である.
765デフォルトの名無しさん:2007/06/23(土) 18:35:09
* 宿泊施設の空室照会および予約システム: 交通機関の駅等の名前と,宿泊人数,宿泊希望日を入力すると,宿泊可能な宿泊施設の候補を5つ程度教えてくれる.
候補は価格の安い順,高い順でソートできる.
候補として提示される宿泊施設の情報は,施設が提供した自由記述の説明である.そして,空室を予約することができる.
* 交通機関(列車,バス,飛行機)の空席照会および予約システム: 人数,出発希望日時,到着希望日時と到着先を入力すると,空席がある交通機関の組合せ候補を5つ程度提示してくれる.
移動時間の短い順,価格の安い順で候補はソートされる.
そして,空席を予約することができる.
* 最寄駅等の照会システム: 住所を入力すると最寄の交通機関駅等の候補(5つ程度)と,そこまでの距離を教えてくれる.

尚,支払い業務については当面考えなくても良い.
766デフォルトの名無しさん:2007/06/23(土) 18:39:24
上記に示した商品販売のための計算機システムの設計をせよ

って問題です。
どうやって作っていけばいいのかおしえてください。
767デフォルトの名無しさん:2007/06/23(土) 18:41:18
>>763
たぶんDialogの完全名を解決できていない。
インスタンス生成の方にはjava.awt.を付けてるのに変数名の型に付けてないのは何で?

>>764-766
judeの使い方について説明を求めているのであれば板違い。ソフト板とかか?(違うかも)
宿題なら宿題スレへ。
768デフォルトの名無しさん:2007/06/23(土) 18:41:57
なんのために学校行ってるの?
769デフォルトの名無しさん:2007/06/23(土) 18:46:44
>>762
ソースファイルの文字エンコーディングを調べて、
例えばutf-8なら、
javac -encoding utf-8 ソースファイル
のようにコンパイルするか、
自宅のPCのOSで使われている文字エンコーディングにソースファイルを変換してからコンパイルすれ。
770デフォルトの名無しさん:2007/06/23(土) 18:50:48
>>763
せっかくswingでダイアログ作るならJDialog使えよw
771デフォルトの名無しさん:2007/06/23(土) 19:01:53
772763:2007/06/23(土) 19:26:05
>>767

ありがとうございます。
単なるimport文抜けのミスでした…


>>770
フォントサイズとかレイアウトとかを自分で変更したかったので・・・
JDialogだとなんかフォントおかしくなりませんか?
773デフォルトの名無しさん:2007/06/23(土) 19:49:55
>>772
現行のswingスレの478あたりからの流れを読むといいかも
774デフォルトの名無しさん:2007/06/23(土) 20:44:10
intをStringにキャストするにはどうすればいいんですか?
int a=1;
String s;
s = (String)a;
これでエラーになります。
775デフォルトの名無しさん:2007/06/23(土) 20:51:20
Integer.toString(a);
あるいは
String.format("%d", a);
776デフォルトの名無しさん:2007/06/23(土) 20:54:47
>>775
ありがとうございます。
777デフォルトの名無しさん:2007/06/23(土) 21:04:52
StringBuffer sb = new StringBuffer();
String s = sb.append(a).toString();
778デフォルトの名無しさん:2007/06/23(土) 21:09:39
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
pw.printf("%d", a);
pw.flush();
String s = sw.toString();
779デフォルトの名無しさん:2007/06/23(土) 21:11:17
>>777-778
面白い?
780デフォルトの名無しさん:2007/06/23(土) 21:14:27
「int を String に変換」 はできるけど、「int を String にキャスト」 は不可能だと思うが……

Integer.toString(v) も『キャスト』って呼んでいいの?
781772:2007/06/23(土) 23:02:08
>>773

おお、そんな方法があったのですね。
自分でダイアログ用のライブラリを作ってしまいましたorz
782デフォルトの名無しさん:2007/06/23(土) 23:04:07
変数の帰り値を取得するのってどうするのでしょうか?

PHPの場合は
function test(&$abc, &$def) {
}

という感じだったのですが、javaの場合??になっています。
783デフォルトの名無しさん:2007/06/23(土) 23:05:10
>>780
>>774に対する回答としては、「キャストできない」が正解だろうな。
>>775のやり方は「キャストではないけど、変換は可能」だし。
784デフォルトの名無しさん:2007/06/23(土) 23:06:46
>>782
[戻り値の型] メソッド名(引数1, 引数2){}
適当にJavaの解説サイトくらい読んでから質問しろな
785デフォルトの名無しさん:2007/06/23(土) 23:16:01
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();
786デフォルトの名無しさん:2007/06/24(日) 03:01:39
>>785
パイプが詰まったら止まっちゃうだろう。マルチスレッドで
787デフォルトの名無しさん:2007/06/24(日) 05:50:02
詰まらなくても \n 忘れると止まるw
788デフォルトの名無しさん:2007/06/24(日) 14:21:26
Javaでフォーム最前面表示って可能ですか?
toFront();ループでやってみたんですが
常に最前面表示される方法は無いでしょうか?
アクティブでなくても構いません
789デフォルトの名無しさん:2007/06/24(日) 14:42:47
SwingかHTMLか話はそこからだ
790デフォルトの名無しさん:2007/06/24(日) 14:49:27
>>788
1.6以降なら java.awt.Window#setAlwaysOnTop(boolean)

それ以前だと標準APIじゃ無理。
JNI使って自力でやったりするしかない。
791デフォルトの名無しさん:2007/06/24(日) 14:50:30
>>790
1.5以降だった。
792デフォルトの名無しさん:2007/06/24(日) 15:07:20
main(String[] args) の argsの引数を受け取って、
String s1 = args[0];
String s2 = args[1];
という文を書くと、
引数無しで実行するとエラーになってしまいます。
エラーではなく、正常に実行されてif文で「引数を入れてください」みたいなコメントを出したいのですが
どういう条件にすればいいんでしょうか?
793デフォルトの名無しさん:2007/06/24(日) 15:17:25
>>792
args.length でチェック。
794デフォルトの名無しさん:2007/06/24(日) 15:38:05
プロパティファイルって普通どこにどんな名前で保存するんでしょうか
795デフォルトの名無しさん:2007/06/24(日) 17:26:43
JFreeChartに関して
同じグラフの中に棒グラフと折れ線グラフを表示する方法はありますか
796792:2007/06/24(日) 17:29:46
>>793
出来ました。ありがごうございます
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();
}
798デフォルトの名無しさん:2007/06/24(日) 17:42:19
>>797
それが書かれてた入門書って何?
799デフォルトの名無しさん:2007/06/24(日) 17:57:58
SWINGで
ボタンにキーを割り当てる方法を教えて頂けませんか?
例えばOKボタンがあって
クリックしてもALT+スペースを押しても
同じ動作をする様にしたいです
800デフォルトの名無しさん:2007/06/24(日) 18:00:32
コンストラクタが無いね

例で之は酷くない?
801デフォルトの名無しさん:2007/06/24(日) 18:02:41
>>797
勘違い系の入門書の筆頭だな、そりゃ
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
すみません。誤爆でした。
806デフォルトの名無しさん:2007/06/24(日) 18:42:19
やっぱ、やさしいjavaか。最近エンカウント率高いな。
そんな本すぐに窓から投げ捨てろ!!

コンストラクタとはインスタンスを初期化するためのしくみ。


あ〜ちなみにやさしいjavaがどういう本かと言うと、
やさしいC++のポインタの説明が無くなったがだけ。
コードがまるっきし同じで説明もまあ、同じ事言ってるかな。
java独自の仕様にはとくに触れてないというか説明してないというか。

んでやさしいC++がCを知らんでもわかるようにってコンセプトでやさしいCって本と内容がかなり重複してる。

第3版なんて5.0対応と謳いつつ、内容は5.0の新機能を使ってないんで5.0でもコンパイラ通るだけ。
807デフォルトの名無しさん:2007/06/24(日) 19:12:18
すげー
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オブジェクトに情報を表示させる
}
}
809デフォルトの名無しさん:2007/06/24(日) 19:24:44
>>808
個人的な意見だが、俺なら type と engine は public final にする。
810デフォルトの名無しさん:2007/06/24(日) 19:25:57
やさしいJavaか・・・乙
コンストラクタを説明するにはインスタンスを考えなきゃいけないんだが、インスタンスはOK?
クラスってのがデータの設計図で、実際にデータとするのがインスタンスだ。
クラスが携帯のアドレス帳のフォーマットで、インスタンスが登録した1件1件のデータと思いねぇ。

コンストラクタってのは、このインスタンスを生成する時に1回だけ呼び出される特殊なメソッド。
何か特別なこと(初期値の設定)とかする場合もあれば、何もしない場合もある。
811デフォルトの名無しさん:2007/06/24(日) 19:30:03
てか、やさしいjavaは576頁あって半分以上が変数・配列・制御文だからな。

>>808
コンスタラクタ付けただけかい。
carクラスにpublic void printInfo()はやめようぜ。
812デフォルトの名無しさん:2007/06/24(日) 19:44:54
>>803
・取り囲むクラスに dispose() が無い。
>>803 が静的文脈内にあるので、インスタンスメソッド dispose() を呼び出せない。

のどっちか。
813デフォルトの名無しさん:2007/06/24(日) 19:47:08
>>811
それってどんなボッタ?
814797: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クラスを呼び出す事が出来るようになる
という事でしょうか?
815デフォルトの名無しさん:2007/06/24(日) 20:01:30
>>814
君に「安物買いの銭失い」という言葉を贈ろう。

本は複数買ったほうが良い。1度に一気に買わなくてもいいから。
それぞれの記述の違いを見比べると本質が理解できる場合が多いよ。
816デフォルトの名無しさん:2007/06/24(日) 20:04:40
Core Javaに一刀入魂!
817デフォルトの名無しさん:2007/06/24(日) 20:07:14
前面にIE
後ろにJavaアプリ(SWING)
の状態でIEがアクティブの時にキーストローク送って裏に有るJavaアプリを
操作する方法は無いでしょうか?
818デフォルトの名無しさん:2007/06/24(日) 20:09:10
>>799
InputMap
819デフォルトの名無しさん:2007/06/24(日) 20:10:07
JSPのELで、オブジェクトのアクセッサを介さずに、publicなインスタンス変数に直接アクセスすることはできますか。
他人の作ったクラスで、publicなインスタンス変数にアクセスするものがあるので。
820810:2007/06/24(日) 20:17:31
クラスとインスタンスの例えで、車とか動物だったらその本はまずNG

>>814
インスタンスを生成するってのは、まんまデータを作るって事。
変数を宣言してるので、car1はそのデータに名前をつけていると考えればいい。
つまり、Car car2 = new Car() と書けば、もう1つデータ(インスタンス)が作成させる。
(この辺の例えもアドレスデータで考える方が納得しやすい)

なんで、呼び出すことができるってのは間違っていないけど、まずはデータとして利用できるようになるって考えるべき。
アドレスデータであれば、登録(インスタンス化)したんで、見ることができるようになったわけだ。
例えばこんな感じ
System.out.println("車の型は" + car1.type);
car1のtypeを読み出している
ここまで理解できてから、「メソッド」という機能を習得する
これはクラス(データ)に操作(振る舞い)を持たせることができる機能
821デフォルトの名無しさん:2007/06/24(日) 20:26:03
メソッドや変数にstaticをつけると、クラスメソッドやクラス変数になるのはわかるのですが、
classにstaticをつけると、どのような処理になるのでしょうか?
822デフォルトの名無しさん:2007/06/24(日) 20:28:51
>>821
静的メンバクラスになる。
static がなければ内部クラスになる。
823808:2007/06/24(日) 20:29:27
>>812
ありがとうございます。

なぜか、ダイアログをfinalでnewしたらいけました・…
824デフォルトの名無しさん:2007/06/24(日) 20:31:20
>>821
前提として1つのクラスの中に別のクラスを記述する場合にしかclassにstaticは使わない
インナークラスっていうんだが、暫くはないものとして考えてOKだと思われ
825デフォルトの名無しさん:2007/06/24(日) 21:00:10
>>822,824
ありがとうございます。
調べてみたところ、静的メンバクラスというのは、
クラス配下に静的メンバだけしか持たないということらしいのですが、
一体、どういったときに使用するのでしょうか?
826736:2007/06/24(日) 21:04:04
>>740さん
10日でおぼえるJava入門教室 第二版
という本なのですが・・・・
どうでしょうか?
827デフォルトの名無しさん:2007/06/24(日) 21:17:13
>>826
思いっきり丸の内じゃねーかwww
828デフォルトの名無しさん:2007/06/24(日) 21:21:17
>>825
> クラス配下に静的メンバだけしか持たない
逆。内部クラスは静的メンバをもてない。

内部クラスって用語は、結構混乱があるので注意。
本や人によっては「入れ子になったクラス」全般を指してたりする。
俺は言語規定の
> 内部クラス(inner class)は,明示的又は暗黙にstaticと宣言されない入れ子クラスとする。
って定義にしたがってるだけ。
829797:2007/06/24(日) 21:32:30
>>815
大体読んだのですが、そんな気がしてきました。
表面を軽く説明して読者をわかった気にさせる感じですね。
明日、>>816さんが奨めているCore Javaという本を大きめの書店に探しにいってみます。

>>820
ちょっとアドレス帳で作ってみました。こんな感じでしょうか?
この場合のメソッドとは何でしょうか?
本の方には、「クラスの機能を表す仕組み」とあるのですが、このプログラムの場合
アドレスブックに載っているデータを表示するのが目的なので、system.out〜の部分がメソッドになるのでしょうか?
830797: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();
}
}
831デフォルトの名無しさん:2007/06/24(日) 21:47:28
show()がAddressbookクラスのメソッド
ほかにも、
public String 居住する都道府県を取得();
public void こいつに電話をかける();
とかいろいろ考えられるでしょ
832デフォルトの名無しさん:2007/06/24(日) 21:53:04
>>828
内部クラス != 静的メンバクラスですか?

内部クラス(インナークラス)・・・クラスにstaticがつかず、静的メンバをもてない。
静的メンバクラス・・・クラスにstaticがつく。静的メンバを持っている??? ←ここが分かりません。
833デフォルトの名無しさん:2007/06/24(日) 22:04:10
staticが付いたクラスは名前の前に (外部のクラスの名前). が付いただけの独立したクラス
834デフォルトの名無しさん:2007/06/24(日) 22:05:02
>>832
静的メンバクラスは、インスタンスメンバも 静的メンバを持てる。
内部クラスは、インスタンスメンバは持てるが 静的メンバを持てない。
835デフォルトの名無しさん:2007/06/24(日) 22:06:20
× 静的メンバクラスは、インスタンスメンバも 静的メンバを持てる。
○ 静的メンバクラスは、インスタンスメンバも 静的メンバも持てる。
836デフォルトの名無しさん:2007/06/24(日) 22:09:04
>>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 方法


静的内部クラスは、外部クラスのインスタンスを必要としない。
一方、非静的内部クラスは外部クラスのインスタンスを必要とするけど、その代わりそのインスタンスに暗黙的にアクセスできる。
837デフォルトの名無しさん:2007/06/24(日) 22:10:28
間違えた。

new Sample().new Inner02();
838デフォルトの名無しさん:2007/06/24(日) 22:12:43
>>827
そんなに糞なのか?
恐いものみたさに立ち読みしてみるか
839デフォルトの名無しさん:2007/06/24(日) 22:21:31
class Sample{
private int value;
static class InnerClass{
private Sample 外部クラスのインスタンス;
public InnerClass(Sample soto){外部クラスのインスタンス = soto;}
public void Hoge(){外部クラスのインスタンス.value = 2;}
}
これが内部クラス
実際C#だとこんな風にする
840デフォルトの名無しさん:2007/06/24(日) 22:23:59
実際っていうか、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("変更");
844843: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("表示");
845843: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);
}
}
846デフォルトの名無しさん:2007/06/25(月) 00:07:13
なにがやりたいのかがわからない。
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
は不可能なんでしょうか?
おねがいします
848デフォルトの名無しさん:2007/06/25(月) 00:22:49
>>847
WindowsアプリとJavaアプリのとの違いを勉強しておいで
849デフォルトの名無しさん:2007/06/25(月) 00:31:30
dll経由のネイティブインターフェイスを使ったり
ランタイムをつかったり
いろんな方法があるので、具体的にどんな操作を
行いたいのかが纏まってからの方がよさそう
850デフォルトの名無しさん:2007/06/25(月) 00:35:02
>>848,849
JNIで実装したいのですが、、
851843: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("表示");
852843: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);
}
}
853デフォルトの名無しさん:2007/06/25(月) 01:40:05
シンボル未解決なんてどうせどっかタイプミスしてんだろ。
エラーメッセージに出てる行とその前後をよく見直せ。
854749:2007/06/25(月) 02:09:03
855デフォルトの名無しさん:2007/06/25(月) 04:16:38
おめでとう
856デフォルトの名無しさん:2007/06/25(月) 07:38:38
>>843
配列を使うほうが難しいのでVectorを勉強するべき
時に、i++ でなくて ++i を好んで使うのはなんで?
857デフォルトの名無しさん:2007/06/25(月) 07:39:30
補足し忘れた。
VectorはArrayListと使い方は一緒
858デフォルトの名無しさん:2007/06/25(月) 08:07:05
C++ 使いはイテレータの関係上 ++i を好む傾向がある。
859デフォルトの名無しさん:2007/06/25(月) 09:23:49
long型より大きい数を使いたい場合には変数はどのようにすればいいのでしょうか?
860デフォルトの名無しさん:2007/06/25(月) 09:27:29
BigInt
861デフォルトの名無しさん:2007/06/25(月) 10:21:25
>>859
ヘルプで変数見たらサイズとか範囲とかあるだろ?
そんなことすら調べれないならPGなんかすんな
862859:2007/06/25(月) 10:28:37
>>861
お前には聞いてない。
863デフォルトの名無しさん:2007/06/25(月) 10:44:10
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
晒していい?答えは聞いてない!

内部型がどうこういってるやつは
http://javafaq.jp/ のS14~16読んでこい。
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
869デフォルトの名無しさん:2007/06/25(月) 13:03:48
もの凄い初心者ですまんとです
eclipse+VEでSWTで何か作っとるとですが
イメージを貼り付ける方法がわからんとです
「Image xxx;」とかするとエラーになるとです
誰か教えて欲しいとです
870デフォルトの名無しさん:2007/06/25(月) 14:25:33
ものすごい初心者ならばコンソールアプリケーションから学べ
871デフォルトの名無しさん:2007/06/25(月) 14:29:27
それはコマンドプロントとかでやるヤツのことですか?
一応やったとです
872デフォルトの名無しさん:2007/06/25(月) 14:45:07
try chatchは条件分岐に使ってもよいのでしょうか?
例えばArrayIndexExceptionが起きたら、違う処理をさせるとかです。
たくさんやる処理なのでif文で分岐させるのと、
どっちが速いかとか気になります。
873デフォルトの名無しさん:2007/06/25(月) 14:49:03
>>872
タブー
try-catchは例外処理の為の仕組みだから条件分岐には使用しちゃダメ
ちなみにパフォーマンスも悪い
例外ケースが最速になるような最適化をすると思うかい?
874デフォルトの名無しさん:2007/06/25(月) 14:49:11
基本的に例外は遅いし、
プログラムを読む時に基本的にまずエラー処理の文脈で理解されるものだから、
単なる条件分岐の代わりとして try-catch は使わないのが基本。

大抵は補助的に関数を使うこと等で解決できると思うが。
875デフォルトの名無しさん:2007/06/25(月) 15:29:13
初心者な質問ですみませんが、メインメソッドに対してString型以外
(例えばint)を引数として渡すにはどうすればよいでしょうか。

public static void main(int args)ではコンパイルエラーでした。
876デフォルトの名無しさん:2007/06/25(月) 15:31:28
>>875
コンパイルエラーが起きるとも思えんが。
877デフォルトの名無しさん:2007/06/25(月) 15:35:03
ありがとうございます。
アルェーEclipseからfatalなんちゃらって文句言われたんですが…。
しかし、構文としては問題ないみたいですね。
ケアレスミス含め、他の部分を見直すことにします。
878デフォルトの名無しさん:2007/06/25(月) 15:39:06
public static void main(String[] args)
はないとだめだからな。
Javaはここから以外で始まらない
879デフォルトの名無しさん:2007/06/25(月) 15:42:14
>>875
普通、シェルがコマンドライン引数としてjavaプログラムに渡す引数は文字列しかない。
引数に数字が入っていてもそれは数字を表す文字であって数値とは解釈されない。
数値と解釈するか文字列と解釈するかは受け取る側のプログラムに任されている。
なので、public static void main(String[] args)で受けて、
引数をintとして解釈したいならInteger#parseIntなり他の手段なりで、
文字列をintに変換する必要がある。
880デフォルトの名無しさん:2007/06/25(月) 15:42:58
>>872-873
イベント駆動型の条件分岐はあるけどね
881デフォルトの名無しさん:2007/06/25(月) 15:51:22
難読化の手法の一つとしては条件分岐を例外処理に書き換えるってのがあるけれど、
実行効率とかを考えると使いどころが難しいし、書き換えは人間がやる仕事ではない。
「たくさんやる処理」に適用するならなおさら
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");
}
}
883デフォルトの名無しさん:2007/06/25(月) 17:06:44
>>882
どこが邪道だと思うのかを書かないと何とも言えない
884デフォルトの名無しさん:2007/06/25(月) 17:19:04
>>882
args の長さを最初に1回チェックすればいいだけだろ?
何で例外使うのか。
885デフォルトの名無しさん:2007/06/25(月) 17:30:26
Exceptionでcatchする時点でタコ
886デフォルトの名無しさん:2007/06/25(月) 17:34:13
>>884
はあ?長さ?
887デフォルトの名無しさん:2007/06/25(月) 17:50:56
ぷww
 length
【名-1】 長さ、全長{ぜんちょう}、丈
888デフォルトの名無しさん:2007/06/25(月) 18:04:51
ばかばっかだなw
889デフォルトの名無しさん:2007/06/25(月) 18:10:35
>>882
問題なし
890デフォルトの名無しさん:2007/06/25(月) 18:22:58
Integer.parseInt なら大した処理じゃないからいいように見えるが、
その処理がもの凄い時間がかかる場合は?
とか考えると、先にコマンドライン引数の個数をチェックした方が一般的にはいい。
個数だけじゃ判定できないって場合は別だが。
891デフォルトの名無しさん:2007/06/25(月) 18:38:10
初めて来てみた。で、いきなり笑った
もう来ません。ありがとうございましたw
892デフォルトの名無しさん:2007/06/25(月) 19:03:54
アプレットについて質問です。

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だと意味があるとか、そういうことなのでしょうか?
よろしくお願いします。
893デフォルトの名無しさん:2007/06/25(月) 19:14:13
>>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);
894デフォルトの名無しさん:2007/06/25(月) 19:30:53
>>892
<param name="fontcolor" value="ff00ff">
というのがあれば、0xff00ff (255,0,255)の色になり、なければ
0,0,255のまま

895デフォルトの名無しさん:2007/06/25(月) 19:40:45
----------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はコンパイルの必要が無いですよね。
コンパイルが必要が不要かってのは具体的にどう判断すればいいんでしょうか?
896デフォルトの名無しさん:2007/06/25(月) 19:49:39
>>895
自分でコードを書くとき、ふつうは不必要なコードなんて書かない。
そうでないケースでも、必要か不必要か迷ってる時間があったらコンパ
イルしてしまえばいい。

antとかEclipseとか使うようになれば、コンパイルの手間なんて気にな
らなくなる。
897デフォルトの名無しさん:2007/06/25(月) 19:58:05
Test02.javaもコンパイル必要
898デフォルトの名無しさん:2007/06/25(月) 20:00:45
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 は無いと動かないみたいですけど
他のは無くてもとりあえず動いています
どういうときに使うのでしょうか?
899デフォルトの名無しさん:2007/06/25(月) 20:04:02
>>887
例外処理を使ってるのはlengthの問題じゃないってことだよ
900デフォルトの名無しさん:2007/06/25(月) 20:33:56
>>885
ParseException と ArrayIndexException の
どちらも発生する可能性あるじゃないですか!!

その上でどっちが発生しても同じメッセージ出すんだから
まとめて Exception にした方が効率いいじゃないですか?
901デフォルトの名無しさん:2007/06/25(月) 20:37:47
誤爆?何の言語使ってるの?
NumberFormatException
ArrayIndexOutOfBoundsException
902デフォルトの名無しさん:2007/06/25(月) 20:38:32
ワラタ
まあ実際例外処理なんてそんなもんだろw
903デフォルトの名無しさん:2007/06/25(月) 21:01:03
>>900はそれでいいので、決してJavaが書けますとか言ってプロジェクトに来ないでくださいね
904デフォルトの名無しさん:2007/06/25(月) 21:02:31
>>900はネタで書いてんだろ
905デフォルトの名無しさん:2007/06/25(月) 21:25:47
7割くらい本気です
906デフォルトの名無しさん:2007/06/25(月) 22:10:46
Exception サブクラス全部拾っちゃうだろ常識的に考えて・・・(=ω=.)

RuntimeExceptionは拾っちゃダメだろ。
907デフォルトの名無しさん:2007/06/25(月) 22:16:20
main で最終的に Exception 拾うのって本当にナシなのかな。
考慮されてない例外が投げられた場合って、
例外拾わないままエラー終了してくれた方がいいのか?
製品でも?
908875:2007/06/25(月) 22:20:29
>>878,879
ありがとうございます。理解しました。
909デフォルトの名無しさん:2007/06/25(月) 22:25:51
>>907
マジレスしとけば、Exceptionで拾って復帰することに意味があり、復帰させる事ができるならば、catchしてもいいと思う。
Webアプリでも創れば解るけど、フレームワーク周りでExceptionはcatchされて処理されるケースが多い。
mainで拾わずに起動プロセスに投げても、stackTraceは表示されるわけだが、それでもわざわざ拾う必要はあるかい?
910デフォルトの名無しさん:2007/06/25(月) 22:28:16
>>909
ユーザを混乱させないために、
分かりやすい形でエラーが発生した旨を表示した方が
いいんじゃないかな、とか思ったりするんだよね。
911デフォルトの名無しさん:2007/06/25(月) 22:41:05
>>909
だったら各所で入力チェックと例外処理を記述しろよw
mainで拾う例外なんてぬるぽとか、要はバグだろ?
ユーザーに分かりやすい様に、ぬるぽで落ちました、サーセンwwwとでも表示するのかい。
912デフォルトの名無しさん:2007/06/25(月) 22:48:11
そう。要はバグ。
まあ、Java なら拾わなくていいのかな・・・。
913デフォルトの名無しさん:2007/06/25(月) 23:06:28
ていうかwibアプリのフレームワークという特殊な例をそこで出すか?
それ自体まさに例外な気がする。
914730: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など他にもいろいろ入れなくてはいけないんでしょうか…
よろしくお願いいたします。
917デフォルトの名無しさん:2007/06/26(火) 01:26:00
setHp(int)がprivateメソッドになってるんじゃないの?
918デフォルトの名無しさん:2007/06/26(火) 02:19:16
もしそれならこんな風にならない?

[javac] l1npc.setHp(j);
[javac]      ^

919916:2007/06/26(火) 06:59:00
ちょっとずれていました…

[javac] l1npc.setHp(j);
[javac]    ^

「ドット」.を指し示している状態です
920デフォルトの名無しさん:2007/06/26(火) 11:43:46
どう見ても l1npc にシンボル setHp が無いんだろう。
921デフォルトの名無しさん:2007/06/26(火) 12:06:38
◎渡してる j がint型ではない
○setHpじゃなくてsetHPとかSetHpとかになってる
▲setHpがprivateメソッドになってる
922デフォルトの名無しさん:2007/06/26(火) 13:22:58
a1,a2,a3,a4,…a20
という変数があった時、
これらの変数をfor文で一気に配列に代入することって可能ですか?

int[] ia = new int[20];
for(int i = 0; i < 20; i++) {
ia[i] =

この後が分かりません
923デフォルトの名無しさん:2007/06/26(火) 13:39:00
>>922
不可能
924デフォルトの名無しさん:2007/06/26(火) 13:42:02
>>923
そうでしたか、ありがとうございます。
925デフォルトの名無しさん:2007/06/26(火) 13:59:37
listなら可能
926デフォルトの名無しさん:2007/06/26(火) 14:28:05
>>922
どうしてもならリフレクションでできるけど、
まずはそういう変数を作ってる時点でダメだな。
927デフォルトの名無しさん:2007/06/26(火) 14:28:32
Servlet って何でこんなにややこしいんやろ。PHP みたいにお気軽にできんのかな。
928デフォルトの名無しさん:2007/06/26(火) 14:45:28
そりゃLLと比べりゃjavaはややこしいだろうよ。
groovyとかruby使えば良いじゃん。
929デフォルトの名無しさん:2007/06/26(火) 14:51:21
servletの何がややこしいんだ?
基本的な概念だけ覚えてあとはクラスをその都度調べればいいだけだ
930デフォルトの名無しさん:2007/06/26(火) 14:56:46
いや、多分サーバを用意する必要があるのが面倒っていってるんだろう。
PHPを例に出すってことは。
PHPは、Apacheのモジュール有効にするだけでいいし、という話かと。

CGI経由で、起動するJavaのテンプレート系フレームワークがあってもいいかな、とは思う。
931デフォルトの名無しさん:2007/06/26(火) 15:02:04
>>929
PHPに比べたらややこしいだろ。
ファイルアップロードとかで差が出る。
932デフォルトの名無しさん:2007/06/26(火) 15:31:22
そう、ファイルアップロードは致命的だよな。デフォルトで 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個入るんですけど、
入らないようにする方法ってないでしょうか?
934デフォルトの名無しさん:2007/06/26(火) 16:31:00
System.out.printlnのoutがPrintStream型でバイナリのストリームってのが納得いきません
入力を受け取るInputStreamのinも同様に納得がいかないです
文字を入出力してるんだからテキストデータのストリームであるべきじゃないんですか?
935デフォルトの名無しさん:2007/06/26(火) 16:42:00
>>933
%> と <% の間の改行を消すといいかも
936デフォルトの名無しさん:2007/06/26(火) 16:42:37
>>934
標準入出力はリダイレクトでバイナリファイル扱う可能性があるので、
バイナリのストリームの方が良い。テキストからバイナリに
完全な復元ができない事も考えればバイナリであるべき。

System.in がテキストデータを扱う事の方が多いのに
InputStream だとバイナリしか取れなくて、いちいち
InputStreamReader でラップするのが面倒ってのは同意するけど。
937デフォルトの名無しさん:2007/06/26(火) 16:44:16
>>934
gzip -dc foo.tar.gz | tar xf -
みたいに、標準入出力はバイナリを受け渡すことも多いのです。
938デフォルトの名無しさん:2007/06/26(火) 16:46:43
文字を入出力しているという前提が間違っている、ということで。
>>934 の憤りはどこへぶつければいいのかwww
939デフォルトの名無しさん:2007/06/26(火) 16:55:38
>>935
改行削ったら上手くいきました!
レスありがとう!!
940934:2007/06/26(火) 17:16:18
なるほど…バイナリもテキストもどっちも扱う可能性があるので
変換可能なバイナリストリームを採用してるんですね。

でも、System.out.println("Hello"); のようなありきたりの文は、
Helloという文字列のテキストデータをバイナリストリームで扱ってることになりませんか?
InputStreamReaderの場合と同じようにPrintWriterでラップするなら分かるんですが。
941デフォルトの名無しさん:2007/06/26(火) 17:36:27
端末から見たらテキストなんてエンコーディングに従ったバイト列だろ。
out.print形式はjavaがデフォルトのエンコーディングを使って変換してるだけ。
たしかjavadocに書いてあるぞ。

ところでjavaって標準出力がDOS-BOXなどの端末だった場合、
System.outへ一度出力した文字は消せないの?
テキストがスクロールアウトして新しいテキストが流れてくるんじゃなくて
ローグライクみたいにスクロールさせずに画面更新したりクリアしたりってどうするの?
942デフォルトの名無しさん:2007/06/26(火) 17:37:03
>>940
そのままバイナリストリームで扱ってて、最終的にシェルがそれをテキストに変換にしてるんじゃね?
943デフォルトの名無しさん:2007/06/26(火) 17:40:22
>>941
端末操作はモロ環境依存
944デフォルトの名無しさん:2007/06/26(火) 17:42:12
>>941
> System.outへ一度出力した文字は消せないの?
改行前なら \r で行頭に戻れるかもしんない。
端末と System.out の実装の両方に依存するけど。

> ローグライクみたいにスクロールさせずに画面更新したりクリアしたり
jcurses みたいな外部ライブラリ使ってくれ。
945デフォルトの名無しさん:2007/06/26(火) 17:45:57
というかテキストストリームとバイトストリームの区別って改行コードの扱いだけだったと思ってたんだが違うの?
946デフォルトの名無しさん:2007/06/26(火) 17:46:41
>>942
その理論だと標準入力をInputStreamReaderでラッピングする必要も無い気がする
947デフォルトの名無しさん:2007/06/26(火) 18:14:42
int型のメソッドでreturnでxという変数を返すとき、mainの条件で「xが帰ってこない場合」というifは作れるのでしょうか?
948デフォルトの名無しさん:2007/06/26(火) 18:15:18
変数 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);
950デフォルトの名無しさん:2007/06/26(火) 18:25:56
エルレガーデンのHPでメニューバーがグラデーションになっていてスクロールすると
バックが透けているのですが、javaで出来るんでしょうか?
気になって調べてみたんですが、分からなかったので。。どなたか教えてください。
エルレHP http://www.ellegarden.jp/ja/index.asp
951デフォルトの名無しさん:2007/06/26(火) 18:29:58
誰か>>850を、、
952デフォルトの名無しさん:2007/06/26(火) 18:34:18
>>951
いくら出す?
953デフォルトの名無しさん:2007/06/26(火) 18:35:43
何をきっかけとして>>817の処理を行うつもりなの?
IEのスクリプト?
954デフォルトの名無しさん:2007/06/26(火) 18:42:06
>>947
そのメソッドで例外を投げれば、値を返さずにメソッドを終了すること
ができる。mainではtry-catchすればいい。

そんなことはしないで、Integerなどクラスを使って、値を返したくない
ときはnullを返すのが良いと思う。
955デフォルトの名無しさん:2007/06/26(火) 18:47:21
>>950
Javaだとかなり難しい。ウェブ制作板へどうぞ。
956941:2007/06/26(火) 18:48:56
thx!
やっぱ依存か。
Consoleクラスが追加されたけど現状だとエコー文字列のマスクしかできないからなぁ。
957デフォルトの名無しさん:2007/06/26(火) 19:26:11
任意のURLからHTMLの特定部分、例えばTABLEだけを吸い出したい
時に、純粋にJAVAだけを使うのと他のスクリプト言語を併用するのでは
どちらが効率や再利用性の面で優れてますか。

またできたら、上記の場合のお勧めのスクリプト言語を教えてください。
958デフォルトの名無しさん:2007/06/26(火) 19:28:46
GroovyやRhinoからjavaのライブラリ使う。
HTMLParserとか。
959デフォルトの名無しさん:2007/06/26(火) 19:29:24
>>950>>955
java script を使うほうが一般的ですがjavaアプレットでも簡単にできます
960デフォルトの名無しさん:2007/06/26(火) 19:36:45
Rhinoってサーバサイドで動くんですか?
961デフォルトの名無しさん:2007/06/26(火) 19:46:29
javaしか使えないくせに
俺一流プログラマー
みたいな顔してる上司がうぜぇ
Cマスターの俺に指図すんじゃねーよ屑
こんな糞言語使えるだけで満足か
早く市んでくれ
962デフォルトの名無しさん:2007/06/26(火) 20:10:55
cは開発の能率悪いでしょ
963デフォルトの名無しさん:2007/06/26(火) 21:02:02
>>957
TidyLibというものがあります。
ほとんどの言語に対するバインディングがあるので、
一度調べてみてください。
商用製品でも採用例が多く、一番実績があると思います。
964デフォルトの名無しさん:2007/06/26(火) 23:04:05
>>949
>String url = "localhost:5432"; // args[0];
  ↓
String url = "jdbc:postgresql:dbnamehogehoge";

しかしそのエラーメッセージも不親切だよなw
965デフォルトの名無しさん:2007/06/26(火) 23:18:58
Socketって後始末に明示的にclose()呼び出さなくてもいいですか?
SocketインスタンスがGCに回収されるときに自動的にコネクション切断
などの面倒は見てくれるんでしょうか?
966デフォルトの名無しさん:2007/06/26(火) 23:40:54
明示的に呼び出せるタイミングがあるなら、そのタイミングでcloseを呼び出せ
967デフォルトの名無しさん:2007/06/26(火) 23:54:50
>>965
面倒見てくれるかどうかは実装依存だろう。
SocketもSocketImplもfinalizeはオーバーライドされていないから、
GCのタイミングでの処理は何もしないかもね。
まあ適当な時に適当に切断はされるだろうけど、エレガントに処理されるかどうかは分からん。
968デフォルトの名無しさん:2007/06/26(火) 23:57:54
基本的にネイティブなリソースを触った場合GCに任せないで自分で解放する。
ファイナライザ使うのも間違い。
969デフォルトの名無しさん:2007/06/27(水) 00:03:17
>>966-968
レスありがとうございました!
なるほど、close()は明示的に呼び出さないとダメなんですね。
勉強になりました。
970デフォルトの名無しさん:2007/06/27(水) 00:04:19
GC時に処理させたいならファイナライザを使うのは間違いじゃないと思うがね
最後までその機会が来ないことがあることは想定しておかないといけないが
971デフォルトの名無しさん:2007/06/27(水) 00:06:53
>>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() とかもしとかないとだめ?
973デフォルトの名無しさん:2007/06/27(水) 00:32:02
>>970
この場合はGCに任せて良いかどうか判断するのが難しいだろう。
javaのファイナライザがどういうためのものかちゃんと理解してないならなおさら。
974デフォルトの名無しさん:2007/06/27(水) 00:47:58
>>957
JavaにXMLパーザってついてなかったっけ?
975デフォルトの名無しさん:2007/06/27(水) 00:51:00
HTMLはSGMLアプリケーションなんだが。
XMLパーサにHTML食わせても整形式エラー吐くと思うぞ。
976デフォルトの名無しさん:2007/06/27(水) 00:56:20
>>974
ドキュメント検索したらHTMLパーサも付いてましたね
HTML->JAVA
JAVA->HTML
HTML->HTML

でXMLも噛ませられれば操作上は十分になってきますね

XMLパーサとサーブレット&JSPを使うとXSLは必要なくなるんでしょうかね?

ご回答いただいた方々、まことに有難うございました
いただいた回答の中のRhinoは有用性が高そうなので
検討してみます。
977デフォルトの名無しさん:2007/06/27(水) 00:57:40
>>972
(1) 使ってるラッパークラスのコンストラクタが例外を発生しないこと
(2) ラッパークラスの close がラップしてるクラスの close を呼び出すこと
を確認して、最も外側のクラスの close を対処すればいい。
978デフォルトの名無しさん:2007/06/27(水) 00:57:53
javax.swing.text.html.parser
979デフォルトの名無しさん:2007/06/27(水) 01:03:51
>>972
s.close() すれば
s.getInputStream() で得られたストリームも自動的に close() される。

sclose() してない時に br.close() した場合、成功すれば、
s も勝手に close() される。
980デフォルトの名無しさん:2007/06/27(水) 01:06:08
>>979
IDEによってはエラーを吐きますね。
明示的にクローズした方がいいと思います。
981デフォルトの名無しさん:2007/06/27(水) 01:06:11
>>978
あれパーサでパースして結果をレンダラに渡す程度の使い道しか想定してないからなぁ。
パース結果を自分でハンドリングするなら他のライブラリの方が良い。
まあ、それ以前にHotJavaのパーサは3.2finalの独自拡張なんで現行とは少し違うが。
982デフォルトの名無しさん:2007/06/27(水) 01:09:33
パーサの存在を知らなくて自作してしまったorz
983デフォルトの名無しさん:2007/06/27(水) 01:12:37
SGMLのパーサを実装できるほど程の知識と腕があるなら自前が良いけどなw
正規表現なんかで実装しちゃだめだぜ。
984デフォルトの名無しさん:2007/06/27(水) 01:16:45
javaでbigintの変数を宣言するときにはどのようにすればよいのでしょうか?
bigint a; のような感じにしても認識してくれません
985デフォルトの名無しさん:2007/06/27(水) 01:20:31
java.math.BigInteger
986デフォルトの名無しさん:2007/06/27(水) 01:22:04
前にもあったぞこのネタ
987デフォルトの名無しさん:2007/06/27(水) 02:25:03
このスレはネタとバグでできています
988デフォルトの名無しさん:2007/06/27(水) 02:30:27
long型でないと数値がオーバーするので、long型の配列を作りたいのですが、
long p[]=new long[(int) (n+1)];だと結局エラーが出てしまいます。どうすればよいでしょうか?
989デフォルトの名無しさん:2007/06/27(水) 02:36:05
>>988
何がどうエラーが出るんだ?
明確なエラーが出るのにその状況とエラーメッセージを書かないのは問題を解決したくないからか?
990デフォルトの名無しさん:2007/06/27(水) 02:41:38
エラトステネスのふるいのメソッドを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];
}
991デフォルトの名無しさん:2007/06/27(水) 02:51:07
>>990
エラーも書けよ
992デフォルトの名無しさん:2007/06/27(水) 02:53:12
エラーは

Exception in thread "main"

です
993デフォルトの名無しさん:2007/06/27(水) 02:57:48
小出しにするなよ、もっといろいろ出てるだろ
994デフォルトの名無しさん:2007/06/27(水) 02:58:16
>>990
配列サイズはintなのでlongは無理。
配列以外のコレクションを使うか、配列を複数用意して使う。
でも単純に考えてもint限界のInteger.MAX_VALUE*8バイトでもギガバイトをはるかに超えてることは認識してる?
そのプログラムのような単純なエラトステネスのふるいはかなり効率が悪いと思うし。
995デフォルトの名無しさん:2007/06/27(水) 03:03:04
whileに直せばいいじゃん
996デフォルトの名無しさん:2007/06/27(水) 03:17:50
> for(i=2; i<=n; i++) p[i]=1;{
ここじゃね?
シンタックスエラー出てない?
997デフォルトの名無しさん:2007/06/27(水) 03:19:52
じゃあ1000取り合戦でもしますか
998デフォルトの名無しさん:2007/06/27(水) 03:20:00
>>996
文法的には問題ないはずだが、アルゴリズム的には知らん
999デフォルトの名無しさん:2007/06/27(水) 03:20:33
殺伐としてきたZE!!!!
1000デフォルトの名無しさん:2007/06/27(水) 03:21:15
いやっほーーーーーーーーーーーぅ!!!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。