07/06/06 00:06:35
>>174
>インスタンスを持つ必要がないメソッドは極力staticを付けた方が良い。
そして地獄を見る
176:デフォルトの名無しさん
07/06/06 00:48:57
>>175
どうして?
177:デフォルトの名無しさん
07/06/06 02:20:40
>>176
きっと、想像できなかった仕様変更があって、
内部状態に応じて動作が変わるようにしなければいけなくなるんだろう。
たとえば、テストモードかどうかをオブジェクト内部に持つような
仕様に急に変わって、テストモードだったら(本番データを使えないので)
こっちの方法で計算するようにしてね、と言われるとか。
178:デフォルトの名無しさん
07/06/06 02:32:36
それstaticぜんぜん関係ないじゃん。
179:デフォルトの名無しさん
07/06/06 05:44:39
>>174
地獄へ落ちるに同意。
本当にインスタンスが不要であることが確信できるような場合にのみstaticを付けるが正しい。
インスタンスをもつ必要がない、というガイドラインだとデータクラス以外は全部staticでいいじゃんて話になるし、実際にそういうプロジェクトの経験もある。
180:デフォルトの名無しさん
07/06/06 06:45:35
必要のない作りこみはプログラムを無駄に複雑にし、不具合を呼び込み拡張を困難にする。
将来的に使われなかったら無駄になるし、
使われるときになって実際に必要とされる機能との相違があれば、結局作り直し。
static で済むなら static で作り、必要に応じてリファクタリングする。
しかし、定数でないstaticなフィールドについては、
単体テストで弊害になるのでできるだけやめた方がいい希ガス
181:163
07/06/06 09:06:00
>>168
だよね…。厨はカエレ!的な意味かと思ったよ…。
で、正しく何スレでしょうか…?
182:デフォルトの名無しさん
07/06/06 09:31:23
>>180
staticでなくて済むならば非staticにして作り、必要に応じてリファクタリングでも良いかと・・・
183:デフォルトの名無しさん
07/06/06 09:37:33
>>181
Tomcat+jsp+struts何たらってスレでも1000行ってるから次スレで
スレリンク(tech板:1001-1100番)
184:デフォルトの名無しさん
07/06/06 09:40:40
スレ名変更してた。
java+webフレームワーク
スレリンク(tech板)
185:181
07/06/06 09:46:53
>>183
>>184
誘導ありがとうございました!次スレまで調べていただいて感謝です!
186:デフォルトの名無しさん
07/06/06 11:00:26
>>179
>インスタンスをもつ必要がない、というガイドラインだとデータクラス以外は全部staticでいいじゃんて話になる
ならないだろ。データクラス以外はインスタンス化しないのか?
187:デフォルトの名無しさん
07/06/06 11:04:56
mein(String[] args)メソッドで呼び出すときは他クラスにメソッド配置しないと
全部staticなメソッドになって地獄見た;
188:デフォルトの名無しさん
07/06/06 11:12:54
地獄見そうなメソッドだなw
189:デフォルトの名無しさん
07/06/06 11:57:59
>>186
そういうプロジェクトを少なくとも2つ見た事あるぞ。
自分は追加要因(火消し)で入ったもんだから、もはや手遅れでそのルールに従ったけど、結局はプロジェクトは両方とも破綻
190:デフォルトの名無しさん
07/06/06 12:04:28
具体例が無いからどっちが良いとは言えんな。
どっちにしたって地獄見るのは設計がダメだったって事なんだろうし。
191:デフォルトの名無しさん
07/06/06 12:26:10
Javaで、Windowsのファイル毎の
関連付けアプリケーションのパスを取得する方法ってありますか?
192:デフォルトの名無しさん
07/06/06 12:52:20
>>191
Windowsのシステムに関わる話なので当然Windows専用になってしまうが、
cmdの内部コマンドのassocとftypeをJavaから呼び出してやればいいのでは?
たとえば.txtなら、
assoc .txtで.txt=hogehogeが得られたら、
ftype hogehogeでhogehoge=関連付けアプリケーションのパスとか引数の与え方、になる。
193:192
07/06/06 12:54:42
忘れてた。
ftypeで得られるパスには環境変数名も含まれる場合も多いだろうから、
環境変数を展開する処理も必要。
194:デフォルトの名無しさん
07/06/06 14:29:58
教えていただきたいのですが、あるディレクトリにファイルを
コピーする時はどうすればいいのでしょうか?
protected void CopyFiles(IProject project){
//コペーする絶対パスが設定されてるファイル
File file = projectPage.files;
//ファイルがコペーされるディレクトリ + \
IPath newDir = project.getLocation().addTrailingSeparator();
//fileをnewDirにコペーする
}
195:デフォルトの名無しさん
07/06/06 14:44:01
>>194
FileInputStream と FileOutputStreamを使え
ファイルのコピーなんて、教科書に載ってないか?
196:デフォルトの名無しさん
07/06/06 15:33:51
>>195
アーッ!
すいません。ど忘れしてました。ありがとうございます。
197:デフォルトの名無しさん
07/06/06 15:37:32
教えていただきたいのですが、eclipse3.2.2上で
lombozを認識してくれないのですが、原因はわかりますか?
198:デフォルトの名無しさん
07/06/06 17:44:08
いまからプログラミングの勉強したいんですが初心者は何から始めるのがお奨めですか?就職に役立てるような技術が欲しい
199:デフォルトの名無しさん
07/06/06 18:12:22
>>198
医師・看護師・薬剤師・介護福祉士がちょうおすすめ。
仕事はプログラマ並みかそれ以上にキツいけど。
200:デフォルトの名無しさん
07/06/06 18:27:46
>医師・看護師・薬剤師・介護福祉士がちょうおすすめ。
この仕事の人にプログラミングの技術がいるってことですか?
201:デフォルトの名無しさん
07/06/06 18:41:13
>>200
プログラミングは趣味で。
202:デフォルトの名無しさん
07/06/06 19:41:07
>>199
その選択ができるのは進学前の高校生までだろ。
>>198は大学生くさいから諦めろ。
公務員試験の勉強をしつつ、経理の勉強でもしとけ。
プログラミングは趣味で。
203:デフォルトの名無しさん
07/06/06 19:49:20
2流以下の大学の学生がプログラム関係の資格を持っていると
旧帝大で留年してるような奴と対等になれる。
ぶっちゃけ資格は何でもいい。
204:デフォルトの名無しさん
07/06/06 20:16:31
勉強は二の次にして、これをネタに
あちこちの勉強会に出席してコネを作ってくのがいいんじゃまいか
205:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/06 23:30:19
>>187
mainの中で自分自身をnewしろよ。。。
207:205
07/06/06 23:31:35
ちなみにjre1.5.0_11\bin
は持っているようです。
サンマイクロもページ分かりにくい・・・。
もう一回古いバージョンを落とそうにも場所が分からず・・・。
208:デフォルトの名無しさん
07/06/06 23:35:53
>>205
Eclipseは自前のコンパイラを使うからjavacのバージョンは関係ない。
そもそも1.6のJREは-target 1.5でコンパイルしたクラスファイルを実行できる。
まず実行できなかったときの例外を確認するのが先。
209:205
07/06/06 23:42:49
>>206
ありがとうございます!
まず、実行時のエラーですが、(クラスファイル名はtesta)以下のような出力になります。
C:\Program Files\eclipse\workspace\KBSYS\test>java testa
Exception in thread "main" java.lang.NoClassDefFoundError: testa (wrong name: test/testa)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$000(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
ちなみに、ユーザー環境変数のPATHは、以下のようにjavac.exeのあるディレクトリを指定しています。
C:\Program Files\Java\jdk1.5.0_11\bin
210:208
07/06/06 23:45:05
>>209 >>1 死ねよ。
211:デフォルトの名無しさん
07/06/06 23:47:55
>>205
>>208
もしコンパイラの問題だとしたら、
プロジェクトを右クリックしてプロパティを開く。
Java Build Path
という項目があるからTabの
Libraries
を選択して、JRE System Libraryをダブルクリックすれば
どのコンパイラが利用されているかわかる。
212:デフォルトの名無しさん
07/06/06 23:48:20
親切な人が豹変したw
213:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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
このプログラムに則してポリモーフィズムと動的ディスパッチについて説明してほしいです。お願いします。
216:205
07/06/07 00:20:34
親切にありがとうございます。
ここへの質問は初めてです。
>>213様のソースを実行してみたのですが、エクリプス上では想定通りの結果でしたが
コマンドラインからの結果は全く変わりませんでした・・・。
(コマンドラインは再起動しました)
staticでは無いメソッドを追加しても変わらない。う~ん・・・。
javacとjavaのパスは通っているみたいですし、set CLASSPATH=%CLASSPATH%;.
をしても変化がありませぬ。
エクリプスのコンパイラは、標準のものを設定してみました。jre1.5.0_11です。
217:デフォルトの名無しさん
07/06/07 00:24:09
だからstaticもコンパイラも関係ないって。>>210が切れるのも無理はない。
218:205
07/06/07 00:46:02
クラスパスのオプションが必要かと思って以下の通り実行しても
結果は変わりません・・・。
java -classpath "C:\Program Files\eclipse\workspace\KBSYS\test" testa
ただ、コマンド上でのコンパイルは成功します。classファイルのタイムスタンプも変化します。
>>1や各種リンクを一昨日から散々あたっているのですが、原因が・・・。
何か、根本的で単純な間違えをしていそうな気もするのですが・・・。
219:213
07/06/07 00:57:50
>>216へ
勘違いしているようなので
213のソースコードは>>187へのレス。
ただ213のソースコードが動かないとするとバージョンの違いではない。
今からやれることはだね、
1. ファイル名とクラス名が一致しているか確認(test.javaでclass testaとかしてないか)
2. java -cp . testaを試す
3. DOS窓じゃなくcygwinならセミコロンの代わりにコロンで区切ってみる
4. さっぱりわからんからjdkの再インストール
220:213
07/06/07 01:13:05
わかった。。。
(wrong name: test/testa) ← なんでpackage化されてるんだよ!
java test.testa
でいけない?
221:デフォルトの名無しさん
07/06/07 01:16:35
プロジェクト名がKBSYSなんでしょ。
そしたらtestはパッケージなんじゃねえの?
cd "C:\Program Files\eclipse\workspace\KBSYS"
javac test\testa.java
java test.testa
これでどうよ?
222:221
07/06/07 01:17:54
>>220
うわ、かぶった。すまん
223:213
07/06/07 01:27:30
>>221
どもです。。。
たぶんtestディレクトリの一個上の階層で
やるべき作業がわからなくて、結果が同じです、
と言われることを考えたら、全部書くべきだった orz
224:デフォルトの名無しさん
07/06/07 01:31:08
え、動いたの?動いてないの?
225:デフォルトの名無しさん
07/06/07 01:48:28
誰か223を英訳してくれ
226:デフォルトの名無しさん
07/06/07 01:52:58
JAVAアプレットでTextAreaを使うと.append(string)でテキストを追加できますが
TextComponentを使うと.setText(string)で書き込む事は出来ますが全て上書きに
なってしまいます。TextComponentで追記するにはどうすればいいのでしょうか?
227:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/07 02:08:23
>>226
敢えてやるならgetStringでとりだして文字列追加してsetString。
素直にTextArea使った方が早くね?
229:デフォルトの名無しさん
07/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("(");
とするとエラーが出るのですが、それはもともと"("が対応してないからでしょうか?
230:229
07/06/07 04:12:50
>>229のはインデントがうまくいってないので補足です。
str.split(" ") ←空白1個でsplitしています。
よろしくおねがいします。
231:229
07/06/07 04:25:58
すいません、自己解決しました。
まさかと思い
if(token[i].length() != 0)
とするとちゃんと
t
u
になりました。
空白は文字としてカウントされないんでしょうか?
でもそしたらsplit(" ")でスプリットされないんでは・・・。
なんか解決できたけどしっくりこないです。
232:デフォルトの名無しさん
07/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("\\(");
とする必要がある。
233:229
07/06/07 05:04:06
>>232
あ、stringに==使ってたんだ…。超初歩的な間違いですねorz
すいません、ご指摘ありがとうございます。
あと、”\\(”の件ですが、\\の意味についてググってみたら
”(”は特別な文字で\\はエスケープ文字といってそれを識別してくれる役割をもつみたいですね。
とても勉強になりました。ありがとうございます。
234:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/07 13:38:59
Calendar
237:デフォルトの名無しさん
07/06/07 13:55:29
ノートパソコンにJavaをいれたいのですがどうすればいいですか?
共有ソフトが使えません。
238:デフォルトの名無しさん
07/06/07 13:57:35
開発環境一式をCDなりDVDに焼いてノートパソコンにインストールする
239:デフォルトの名無しさん
07/06/07 16:13:10
>>237
共有ソフトという謎のモノに詳しい人に聞きなさない
240:デフォルトの名無しさん
07/06/07 16:39:33
winrarとかいうヤツ
241:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/07 17:51:45
>>241
スレリンク(tech板)l50
243:デフォルトの名無しさん
07/06/07 17:54:09
そっちで聞けって事ですね!
ありがとでう
244:デフォルトの名無しさん
07/06/07 19:06:17
GUIの左上のアイコン(コーヒーカップの絵)って変えられないんですか?
245:デフォルトの名無しさん
07/06/07 20:27:18
>>244
java.awt.Window, java.awt.Frame,javax.swing.JFrame,javax.swing.JWindow
あたりの
setIconImage()
setIconImages()
かな?
246:デフォルトの名無しさん
07/06/07 21:36:36
>>245
詳しくありがとうございます
変更できました
247:デフォルトの名無しさん
07/06/07 22:03:17
JTableの列にJButtonをいくつか描画して、それぞれのイベントリスナを実装しました。
まず手始めに、そのボタンをクリックするとコンソールに
そのボタンが存在するrowを表示するもので試し成功しました。
次はボタンが押されたら、そのボタンが存在する行を削除するものを試しましたが、
消せたり消せなかったりします。消せないときはボタンとしての機能が
完全に止まっていてイベントすら発生しません。
原因がさっぱりでわかりません。
248:デフォルトの名無しさん
07/06/08 07:43:48
ソースもなければエラーメッセージも無しか、ゆとりは凄いな。
249:247
07/06/08 08:14:31
すいません。携帯からだったもんで。
そして今もまた携帯からなんで出直します。
250:デフォルトの名無しさん
07/06/08 10:12:36
質問です。
テキストフィールドに入力された文字列がプログラム中で指定されている文字列と正しいかどうか判定するには、
どう記述したらいいですか?
251:デフォルトの名無しさん
07/06/08 10:16:11
>>250
>>1
252:デフォルトの名無しさん
07/06/08 10:18:22
>>250
<input type="text" name="hogehoge" value="" />
↓
request.getParameter( "hogehoge" ).equals( "tashiro" )
253:デフォルトの名無しさん
07/06/08 10:59:45
SwingUtilities.invokeLater()を使うのが推奨されているのは
setVisible()のほかにどのような処理がありますか?
254:デフォルトの名無しさん
07/06/08 11:06:18
>>253
URLリンク(java.sun.com)(java.lang.Runnable)
>このメソッドは、アプリケーションスレッドが GUI を更新する必要があるときに使用されます。
255:デフォルトの名無しさん
07/06/08 11:17:36
>>254
具体的にはどういうときですか?
256:デフォルトの名無しさん
07/06/08 13:04:57
>>234
お願いします
誰か助けてください
257:デフォルトの名無しさん
07/06/08 13:38:24
>>256
つ やさしいJava
258:デフォルトの名無しさん
07/06/08 15:00:58
現在1つのthreadを使って、start()やsuspend()でアニメーションを作り停止・再開をしているのですが、
停止したアニメーションを初期状態の位置に戻すにはどのようにしたらよろしいでしょうか?
[停止]ボタンを押すとint a=1されます。
で、suspend()したスレッドをresume()で呼び出し、run()内部にint aで分岐させて初期状態に戻そうとしているのですが、
停止したところから続きが再開されてしまい困ってます。
stop()→resumt()、stop()→start()では駄目でした。
スレッドを1度破棄してもう1度作るとか、そんな恐ろしいことしなきゃ無理なんでしょうか?
259:デフォルトの名無しさん
07/06/08 15:08:04
fillPolygonなんかで多角形を一色に塗る方法は分かったのですが、
ゲームなんかでよくあるように画像をはめ込むことはできませんでしょうか?
260:デフォルトの名無しさん
07/06/08 15:08:54
Cとアセンブラ、VB使いですが。
Java 初めてです。
クライアントからタッチパネルから「かなorカナ」入力させ、
(銀行のATMの漢字版)
サーバー側で、日本語漢字の候補を、クライアントに送る・・・
というような、ミドルウェアや製品を知りませんか?
サーバーJava で、ゴリゴリのプログラミングはNGというのが上からの命令。
参考サイト・商品サイトだけでも、ご存じの方いらっしゃいますか???
261:デフォルトの名無しさん
07/06/08 15:39:32
>>258
アニメーションさせるならばSpliteを作成するのが基本。
ダブルバッファリングから初めてスプライトの基礎を学ぶといいよ。
簡単なシューティングゲームくらいすぐ作れる。
>>260
サーバーJavaでゴリゴリプログラミングはNGってのが意味不明。
タッチパネル(クライアント)の開発元に問い合わせれば、そのタッチパネルのアドオンとかでありそうだけど、そっちは調べたの?
262:デフォルトの名無しさん
07/06/08 15:51:46
>>261
SpliteをJava APIで探しましたけど見つかりませんでした。
JSplitPaneじゃないでしょうけど、
BasicSplitPaneDivider
BasicSplitPaneUI
らへんでしょうか?
ああ、言い忘れましたが一応ダブルバッファリングはSplitとやらを使わずに出来てます。申し訳ないです。
Spriteでぐぐっても出てきませんでした。もう少し詳しく教えていただけませんでしょうか?
263:デフォルトの名無しさん
07/06/08 16:23:08
>>262
基本APIにゃない。
自分でコンポーネントクラスを拡張して作るんだよ。
264:デフォルトの名無しさん
07/06/08 16:47:55
>>263
spliteに関しては後で調べてみようと思います。
早い話、ThreadとRunnableではループし続けるアニメーションしか作れないのかを知りたいです
というか後程ソースを出して再度書き込んでみます。お手数おかけしました
265:デフォルトの名無しさん
07/06/08 18:02:04
JAVAを始めようかと思ってるのですが、オブジェクト指向についてちょっと聞きたいことがあります。
僕はFLASHをよく作るのですが、オブジェクト指向の概念というのはFLASHもJAVAも類似しているのでしょうか?
実際、まだクラス、オブジェクト、継承など全く理解していません。
FLASHでいうところのシンボル、インスタンスと同じものとして考えてもいいのでしょうか?
266:デフォルトの名無しさん
07/06/08 19:56:17
>>265
類似とまではいかないかも知れないけど、似ているところはある。
というのもFlashというかActionScriptがオブジェクト指向っぽく書かれている。
267:デフォルトの名無しさん
07/06/08 21:10:36
ネットで検索しながらiBatisとHSQLDBで簡単なアプリ(非WEB)を作ってます。
そこで質問なのですが、HSQLDBスタンドアロンモードを終了させる時はSQLで"SHUTDOWN"と打て、
とあるようなのですが、ibatisからSHUTDOWNを流そうとするとエラーになってしまいます。
どうやったら終了させられるのでしょうか?
268:デフォルトの名無しさん
07/06/08 22:42:20
swingでタイピングソフトを作ってるのですが、キーボードの取得方法がわかりません。
KeyListenrを使って、できるのでしょうか?
ActionListenerならある程度わかるのですが。
269:デフォルトの名無しさん
07/06/08 22:50:39
今やってるプロジェクト(オープン系)で「seasar」っての使ってるんですが
なんか、そのプロジェクトのリーダーが
全てのビジネスオブジェクトとDAOをシングルトンで
管理するように設定したって言ってました。
俺としてはありえないと思ったんですが、
これって正しい方法なんでしょうか?
俺の考えが間違ってんですかね。
270:デフォルトの名無しさん
07/06/08 23:01:32
>>269
漏れもありえないと思う
271:デフォルトの名無しさん
07/06/08 23:20:47
>>258=264
> スレッドを1度破棄してもう1度作るとか、そんな恐ろしいことしなきゃ無理なんでしょうか?
スレッドをsuspendで止めるほうがよっぽど恐ろしい。
スレッドの状態管理オブジェクト作ってwait/notifyで止めたり状態変更したりしましょう。
272:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/08 23:36:45
>>270
やっぱりそう思いますか?
周りにいる同じプロジェクトの人たちに聞いても
誰も疑問を抱いて無いんですよね。
何がおかしいの?って感じで。
自分の考えが間違ってるのかって悩んでたんで、
安心しました。
ありがとうございます。
これから数ヶ月そんなプロジェクトに
関わんなきゃいけないと思うと気が重いっス。
274:デフォルトの名無しさん
07/06/08 23:58:14
>>272
paint の中で createImage するしかない。
コードが見辛くなるけど初回の gBuf == null のときとそうでないときで処理をわける。
275:デフォルトの名無しさん
07/06/09 00:28:06
>>274
回答ありがとうございます。
paintの中でしか生成出来ないんですか…わかりました。やってみます。
276:デフォルトの名無しさん
07/06/09 00:35:20
リアルタイムJAVAってどうやったら使えるの?
277:デフォルトの名無しさん
07/06/09 00:43:25
>>276
質問の意味が良くわからん。
278:デフォルトの名無しさん
07/06/09 00:55:31
普通のVMとは違う特殊なVMやリアルタイム用のAPIとかあるの?
です。
ないかな。
279:デフォルトの名無しさん
07/06/09 00:59:22
>>278
ねーよ、バカw
詩ねwww
280:デフォルトの名無しさん
07/06/09 01:00:43
>>278
URLリンク(jcp.org)
JSR1な
281:デフォルトの名無しさん
07/06/09 01:13:20
Javaなんかで文字化けしやすい文字とかってあるのでしょうか?
282:デフォルトの名無しさん
07/06/09 01:20:44
>>281
どういう状況を想定してるの?
283:デフォルトの名無しさん
07/06/09 01:34:14
いや何となく
284:デフォルトの名無しさん
07/06/09 02:08:51
窓の手で、「右クリックでコマンドプロンプトを可能」にしたのですが困っております。
これで現れるコマンドプロンプトでは、コンパイルが出来ません。
「スタート」→「アクセサリ」→「コマンドプロンプト」のものでは出来ます。
何か対処法はありますでしょうか。
285:デフォルトの名無しさん
07/06/09 03:06:36
窓の手の作者に聞け
「右クリックでコマンドプロンプトを可能」にした時に出るコマンドプロンプトに環境変数を設定する方法について
286:デフォルトの名無しさん
07/06/09 06:33:51
>>264
つーか、スレッド別に作っても、結局UIスレッドに委譲しなきゃダメじゃん
287:デフォルトの名無しさん
07/06/09 06:37:11
「アプリケーションソフトウェア」ってのを作りたいんですが、
そもそもプログラム以前に、この四角い枠を出現させる方法が分かりません。
「このデータはアプリケーションである」と宣言する方法みたいな、
そういうことを教えてください。
288:デフォルトの名無しさん
07/06/09 08:55:17
>>287
そういうことがやりたいならC#のほうがいいな。
289:デフォルトの名無しさん
07/06/09 09:00:19
>>287
JFrame JDialog
setVisible(true);
290:デフォルトの名無しさん
07/06/09 09:17:10
ヒントになりました。どうもありがとうございました。
会社がJAVAを主力にしていて、その勉強の一貫でもあるので、
ここはJAVAでやってみます。
291:デフォルトの名無しさん
07/06/09 11:38:15
こんなことをしたいんだが、方法はありますか?
/**
* @param vo ヴァリューオブジェ
* @param memberName メンバ引数名
public void (Object vo, String menberName) {
//voのmemberNameに対応するgetterを呼び出す
}
292:デフォルトの名無しさん
07/06/09 11:40:40
リフレクション
293:デフォルトの名無しさん
07/06/09 13:27:36
javaのオンラインリファレンスを見ても、
目的のソフトを作るにはどのクラスを使えばいいのか全く分からないのですが、
どうすればそういうのが分かってくる様になるんでしょうか?
オライリーのリファレンスマニュアルとかを見ればいいんですかね?
294:デフォルトの名無しさん
07/06/09 13:30:22
インターフェースを実装する事って、
そのインターフェースの中にあるメソッドが必ず使われるという担保だけで
ちゃんとメソッドが組み込まれていれば必ずしも必要ではない?
上記の場合、クラスにメソッドがあるけど、インターフェースが実装されてない場合
コーディングルール的な事をのぞけば、単純に動かすということだけであれば
わざわざあとで実装する必要性はない?
295:デフォルトの名無しさん
07/06/09 13:52:35
>>294
インターフェイスは、
メソッドが使われることを担保するのではなく、
メソッドが存在することを担保するものじゃないのか?
同じシグニチャのメソッドが存在してもインターフェイスを実装していない場合、
多態性の恩恵に預かれないんじゃないか?
複数のクラスをインターフェイスで総称できなくなる。
296:デフォルトの名無しさん
07/06/09 14:03:52
>>295
>メソッドが存在することを担保するものじゃないのか?
失礼しました
その通りです。
297:デフォルトの名無しさん
07/06/09 14:03:59
>>293
たくさんサンプルを読め
サンプルには何を実現しようとしているか目的が説明されているはずだ
いろいろ読んでるうちにそれぞれのクラスはどういう目的でどういう使い方をするのか分かってくる
あとは自分の目的に合わせて使う応用力の問題
298:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/09 14:35:07
すいません。matcdesをmatchesと読み替えてください。
300:デフォルトの名無しさん
07/06/09 14:36:34
String#matcdes(String pattern)は文字列全体がpatternにマッチするかどうか
301:デフォルトの名無しさん
07/06/09 14:38:35
あ、おれもまんまコピーしちまったwww
String#matchesね
302:デフォルトの名無しさん
07/06/09 14:41:53
その用途に限るなら、buf.endsWith("\\")でいいんじゃない?
303:デフォルトの名無しさん
07/06/09 14:52:41
カタコトで「マッチデース」とか言ってる検索係の外人を想像した。
304:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/09 16:03:30
byte値を0xFFの形でsysoutしたいのですが、
どうすればいいのでしょうか?
初歩的な質問ですいません。
306:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/09 16:11:12
>>305
byte b = -1;
System.out.printf("0x%X%n", b);
308:289
07/06/09 16:12:04
>300
ありがとうございます。納得いきました。
309:デフォルトの名無しさん
07/06/09 16:16:13
>>308
末尾の文字列が\かどうかなら>>302でいいと思う。
もし、任意のパターンが文字列中に含まれるかどうかを知りたいなら、
Matcher#find()を使って判定するとかかな。
310:デフォルトの名無しさん
07/06/09 16:21:53
>>307
ありがとうございます。
311:デフォルトの名無しさん
07/06/09 16:31:13
>>306のstringWidthでは描画コンテクストを無視するからgetStringBoundsを使った方が正確かもね
312:デフォルトの名無しさん
07/06/09 16:36:29
JAVAからwindowsのバッチファイルを引数を渡して起動したいのですが、
そういった操作をするクラスは用意されているのでしょうか?
Runtimeというのを見つけたのですが、これは別物でしょうか?
ちょっとコーディング試してみたのですが、ぬるぽが帰ってきます。
文字列入出力なら分かるのですが・・・。
313:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/09 16:43:46
package mybeans;とちゃうの?
315:デフォルトの名無しさん
07/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
316:310
07/06/09 17:00:03
>>307
すいません。そのメソッドないです。
もしかして1.5じゃないとダメですか?
317:デフォルトの名無しさん
07/06/09 17:01:11
>>314
mybenasのパッケージ(ディレクトリ)に入れてある、
コンポーネントの方のjavaファイルの1行目はpackage mybeans;で、
試しに単独でコンパイルしたらコンパイルできました。
でもサーブレットの方のjavaファイルの1行目がimport mybeans;になってて、
>>313のような状況です。
318:デフォルトの名無しさん
07/06/09 17:06:31
>>316
printf は .5以降じゃないとだめ。
319:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/09 17:34:56
>>305
final String hexdigit = "0123456789ABCDEF";
System.out.println("0x" + hexdigit.charAt((b >> 4)&0x0F) + hexdigit.charAt(b & 0x0F));
321:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/09 17:55:03
JavaでWindowsのペイントのようなソフトを作りたいのですが、
参考になるお勧めの参考書・サイトありますか?
323:310
07/06/09 18:22:49
>>319
>>321
できました。ありがとうございます。
324:デフォルトの名無しさん
07/06/09 18:37:42
>>322
「お絵かき java」で検索
325:デフォルトの名無しさん
07/06/09 18:50:32
>>313
書のタイトルとページ数を書け。
もっているヤシがいるかもしれない。
その上でソースをあげてくれよ
326:312
07/06/09 19:00:26
>>315
ありがとうございます!
エラーが5やら2で帰ってきて(作業ディレクトリ?)作業が難航していますが
そのソースをモトに進めたいと思います!
327:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/09 20:21:31
>>328
さっそくありがとうございます!!
でもなんか昔の BASIC のコード見てるみたいでぜんぜんすっきりしないんですけど
331:デフォルトの名無しさん
07/06/09 20:44:45
System.out.print(Integer.toHexString(b[i] & 0x0FF));
を
System.out.printf("%02X", b[i]);
でだめ?
332:デフォルトの名無しさん
07/06/09 21:04:34
>>331
327じゃないけど
sprintfみたいな機能ならあるとうれしい
333:デフォルトの名無しさん
07/06/09 21:18:48
>>328=329
Integer.toHexString(b[i] | 0xffffff00).substring(6) とか。
334:デフォルトの名無しさん
07/06/09 21:23:06
せっかくPrintStreamにprintfが付いたのに
PrintStreamがOutputStreamだからStringに持って来れん
これだからJavaは使えん糞だと言われるんだよなぁ
335:デフォルトの名無しさん
07/06/09 21:38:25
>>334
String.formatメソッドとかFormatterクラスをよく調べてみたことある?
336:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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());
339:327
07/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:デフォルトの名無しさん
07/06/09 22:12:24
なんだか予想以上にメモリを食うのですが、
staticで作った変数はインスタンスを生成するごとに、
メモリ食うってことはないですよね?
インスタンスへのポインタ?みたいなものは、
何バイトくらいメモリ食うのでしょうか?
341:デフォルトの名無しさん
07/06/09 22:21:40
環境依存では
342:デフォルトの名無しさん
07/06/09 23:03:43
>>340
オブジェクトヘッダはVM依存だね。
343:313
07/06/09 23:09:51
>>325
レスありがとうございます。
色々やってたら無事コンパイルできました。
1行目も本に載ってたimport mybeans;のままでできました。
クラスパスなども修正したので、結局何が原因だったのかよく分かりませんが、
やはりサーブレットをコンパイルする場所(ディレクトリ)が問題だったようです。
因みに本は高橋麻奈さんのやさしいJava活用編第2版で、
問題の箇所はレッスン7のサンプル6でした。
お陰さまで助かりましたありがとうございました。
お騒がせして申し訳ありませんでした。
失礼しましたm(_ _)m
344:デフォルトの名無しさん
07/06/09 23:44:57
>>337
プログラム勉強するの辞めたほうがいいと思う。
どういう本で勉強しているのか、どういう授業を受けているのかは知らないけど、人の話も聞いていないし理解しようともしてないでしょw
何故か?
クラスに定義できるのは、メソッドと変数だけだから。
で、命令文(ステートメント)はメソッド(コンストラクタを含む)にしか記述できない。
345:312
07/06/09 23:52:59
JAVAからwindowsのバッチファイルを引数を渡して起動の質問をした者です。
ProcessBuilderから引数を渡してバッチを起動するところは成功しました。
(環境変数のPATHに起動したいバッチのパスを入れた)
しかし、バッチファイルの途中で処理が止まって、エラーも出ずに処理が止まってしまいます。
具体的に、バッチファイルの中でLhacaを使ってファイルを解凍をしている作業があるのですが、そこで止まってしまうようです。(getInputStream()で確認)
Lhacaも環境変数に入ってますし、コマンドラインから単体で実行した時は問題なく動くのですが・・・。
偉い方、ご教授願いますm(_ _)m
346:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/09 23:57:19
>>346
教育している側から言えば、出題の意図はコンストラクタに記述、だと思う。
クラスの理解は、コンストラクタ⇒変数⇒メソッドかな。
メソッドの引数(特に参照型)は最初は教えちゃダメダメ
348:デフォルトの名無しさん
07/06/10 00:03:58
>>347
ごめん。>>344と>>337だけ読んでレスした。
もっと前からやりとりがあったんかな?
少し上のほう読んでみたけど確認できなかった。
349:デフォルトの名無しさん
07/06/10 00:08:56
>>348
いや、単発だから回答としては問題ないと思うよ。
ただ、そう書いても>>337は理解できないと思うが・・・
ここは質問・相談スレであって丸投げじゃないからと、言い過ぎた。
すみません。
350:デフォルトの名無しさん
07/06/10 00:09:28
>>345
Lhacaを入れていないから分からないけど、Lhacaが何か入力を求める場面とかない?
もしくは解凍ファイルを正しく出せる等、Lhacaの出力先は確保されてる?
どういうところで実行が止まっているのか状況が分からないから何とも言い様が無い。
> コマンドラインから単体で実行した時
っていうのは、Lhacaを単体で実行?バッチファイルを実行?
351:345
07/06/10 00:25:31
説明が不足していました。
> コマンドラインから単体で実行した時
これは、Lhacaでの解凍を組み込んだバッチファイルでの実行の事です。
具体的に、以下のようなコマンドを発行しています。
lhaca "C:\Program Files\eclipse\workspace\aaa\bbb\ccc.lzh"
バッチファイルの実行では、自分が指定したディレクトリに解凍されたファイルが想定通り出力されます。
よろしくお願いします。
352:デフォルトの名無しさん
07/06/10 00:38:06
>>345
なんだっけな、昔似たようなことで嵌ったような・・・
バッチファイルを実行させるのは無理とかそんな結論だった気もするけど、ちょっと覚えてないわ。
バッチファイルをCあたりで1個のexeにして解決したと思う。
353:デフォルトの名無しさん
07/06/10 00:38:28
>>351
止まってしまう、というのは異常終了するということ? フリーズするということ?
あと、エラーも出ずに、というけど、標準エラー出力はgetErrorStreamから取らないと。
まあ、標準出力と標準エラー出力のどちらに出すかはプログラム次第なんだけど。
エラーを出す前に固まったら関係ないしね。
プロセスが使用する作業ディレクトリとか環境変数とかは、
ProcessBuilderでstartする前に、ProcessBuilderのメソッドで設定することができるので、
バッチファイル単体で実行した時と同じような環境を整えてやってみて。
354:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/10 01:04:22
情報処理技術者試験向けのJAVA言語の必勝勉強方法とかあったら教えてください^^
356:345
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/10 01:36:09
>>357
thx
世界でいちばん簡単なJava
359:デフォルトの名無しさん
07/06/10 01:37:27
>>357
おおお2.0Fとしたらいけた
ありがたや~
360:デフォルトの名無しさん
07/06/10 01:40:32
>>358
その本、地雷の中の地雷。
やさしいJavaが良書に思えるほど。
361:デフォルトの名無しさん
07/06/10 01:42:45
>>360
そうなのか・・・
わざわざ買いなおしたのに・・・
362:デフォルトの名無しさん
07/06/10 01:44:16
>>354
a=2.0f;
っていうかその本は捨てたほうがいいかも。
ずっと前にも2chスレに同じような質問があった気がする。
うわー。教えてgoo!とかにもあるなあ。
URLリンク(oshiete1.goo.ne.jp)
URLリンク(www.temptech.co.jp)
その本ってもしかして
世界でいちばん簡単なJava の e 本Java の基本と考え方がわかる本
2003年6月1日 第1版第1刷発行 著者 堀江幸生
発行 株式会社秀和システム (ISBN4-7980-0533-9 C3055)
URLリンク(www.amazon.co.jp)
じゃねえか?
スレリンク(tech板:964-981番)
改訂されてないみたいだね。
363:デフォルトの名無しさん
07/06/10 01:46:35
>>362
あああゴミなのかこの本
昨日からやる気出して取り組んでるのにヽ(`Д´)ノ
研究室の金だからいいけどさ・・・
364:デフォルトの名無しさん
07/06/10 01:54:41
>>362
てかgooではない方のQ&Aも間違ってるじゃねーかw
365:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/10 01:58:11
>>364
たしかにw
なんだかなー
367:デフォルトの名無しさん
07/06/10 02:08:42
JavaのソースコードでSQL文を書く時
Stringにまとめていれるほうがいいのか
StringBufferに一行ずつ書いて後でStringにするのがいいのか
メモリ上の問題とかも考えて
どちらのほうがいいのでしょうか?
Stringに入れた場合、SQLに入れる変数が大量にある場合、見づらくなる気もしますが
368:デフォルトの名無しさん
07/06/10 02:19:47
>>340
Instrumentation#getObjectSize
369:デフォルトの名無しさん
07/06/10 03:10:16
Java6で追加されたjavax.scriptを使いたいんだけど、
第三者によって書かれたスクリプトを安全に実行したいんです。
JavaScriptからでも普通にJavaのAPIにアクセス出来てしまうのですが、
これを禁止する方法はあります?
370:デフォルトの名無しさん
07/06/10 07:53:26
>>367
動的SQLか静的SQLかにもよるけど。
静的SQLの場合、定数として宣言するのが定石。
この時、書き方としては+で連結して書いて何も問題ない。
コンパイラがコンパイルする時に、最適化して1つの文字列としてくれるから。
読みやすさを重視して、1行ずつ改行してインデントきって+連結。
静的SQLの場合、やはり定数として宣言して?を使ったPreparedStatementで使用するのが良い。
もっと複雑なSQLを構築したい場合は、動的にSQLを作成するけど、そういう場合はStringBufferを使用するほうが好ましい。
ただ、どちらにせよコードに定数としてSQLを書くよりも、SQLは外部のテキストファイルか何かで管理する方がベスト。
複雑なSQLを動的に作成する必要がある場合、本当に必要かを検討し、静的SQLの組み合わせで処理できないかを考えるべし。
この辺りは3層構造とかの記事でも読んで。
371:356
07/06/10 08:11:18
>>365
書庫操作ライブラリの自作ですか!
たくさん勉強が必要そうですね。
まさにwgetでデータを取ってきて解凍する処理です。
lhasaとかtarなら正常終了したのですね?
次に試してみます!ありがとうございます。
372:デフォルトの名無しさん
07/06/10 08:22:54
>>369
「第三者によって書かれたスクリプト」が安全なわけないだろ
373:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/10 10:36:39
>>371
漏れも調子に乗って既存のlzh系処理ソフトにラッピングする形で
自前の書庫管理してたんだけど途中で書庫サイズが2GB超えて
ぼろぼろになって原因がそっちにあるのが分かってやる気なくした
自分でライブラリ作った方が安心出来るよ
375:デフォルトの名無しさん
07/06/10 11:51:23
>>372
今ご覧になってるWebブラウザは第三者が書いたJavaScriptを安全に実行しているわけで。
>>373
全部のパッケージ潰せて、わずかな安全な自前の関数だけScriptEngine#put()できればとりあえず使いものになります。
java、javax、com、orgあたりを潰せばjava seのapiすべて潰したことになるのかな?潰し忘れがあったらかなりデンジャラス。
あちこちドキュメント漁ってるんだけど、なんでこんな大事なことどこにも書いてないんだろう。
でもとりあえずありがとう
376:デフォルトの名無しさん
07/06/10 12:55:05
>>375
どうしてJavaScriptでローカルのディスクに書き込めないのはなぜ?
377:デフォルトの名無しさん
07/06/10 13:13:52
>>375
アプレットでも使われているけど第三者のクラスファイルを安全に実行する
既存のモデルを使う。Javaのセキュリティモデルを勉強すること。
あとjava.sun.comにドキュメントあるよ。JavaSEのドキュメントのページからリンク
はられてる。
378:デフォルトの名無しさん
07/06/10 13:35:55
すいません。 誰か教えてください。
DoJa-3.5用(900用)のエミュレータを使ってHelloWorldを出すという、初歩の初歩でつまずいてるのですが、ビルドを実行すると
javac:ターゲットリリース1.1がデフォルトのソースリリース1.5と競合しています。
とでて、ビルドが失敗してしまいます。
どうすればよいのでしょうか? Javaスレの神様どうかお教えください。お願いします。
379:デフォルトの名無しさん
07/06/10 13:41:09
>>378
こっち
スレリンク(tech板)
380:デフォルトの名無しさん
07/06/10 13:42:32
と思ったら既にマルチしてたのね
もう回答は期待出来ないな
じゃ
381:デフォルトの名無しさん
07/06/10 14:12:23
すいません。 マルチはダメなんですね。ごめんなさい。
sun.tools.javac.Mainを使用するをチェックしていないのが原因でした。
回答が期待できないといわれたので、別の方法で考えました。 自分で考えたほうが身につきますね。ありがとうございました。
382:デフォルトの名無しさん
07/06/10 14:39:17
昨日Image関連で質問した物です。回答ありがとうございました。
回答いただいた内容で解決できたのですが、新たな疑問点が。
Imageをクラス間でやりとりすることは不可能なのでしょうか。
メンバにImageを持たせ、paintにて描画した後、
他クラスからそのImageを取得しようとしたところ、
Paintメソッド内では存在してましたが他クラスから呼び出した時点でnullになっていました。
3DのCUBEを乱数に寄り平行移動させた物を複数生成し、
1クラスにつき一つのCUBEをImageに描画させ、
のちに統合したImageをCanvasに描画するという手順を取っているのですが、
Imageのやりとりが出来ないとなるとこの手法が使えません。
ご教授宜しくお願いいたします。
383:デフォルトの名無しさん
07/06/10 14:43:12
static
384:デフォルトの名無しさん
07/06/10 15:17:31
Java2ME環境で質問です。
ネットワーク上のNetBIOS名を列挙したい場合はTCP/UDPから上の部分をすべて自前で実装する以外ありませんか?
JCIFSというライブラリはありますが、LGPLなので手が出しづらいです。
スレ違いになりますがjarからclassファイルを取り出して使用した場合はソースを公開する必要があるのかないのか
分かる方はこちらも教えていただけると幸いです。
385:デフォルトの名無しさん
07/06/10 15:28:03
>>371
lhasaはいいとして、lzhを扱えるtarはないと思うので念のため。
サンプルでtarが展開しているのはtar-ballをgzipで固めたtazファイル。
ProcessBuilderで呼び出したバッチファイルで、
ファイルを生成するプログラムがうまく動作しないとかだといやだなあと思って確認しただけなので。
Lhaca自体の問題というより実行環境の問題の気がしなくもない。
eclipseから起動しているのが原因とかかも。
バッチを呼び出しているjavaプログラムを直接コマンドラインからjavaコマンドで叩いた場合はどうなる?
386:デフォルトの名無しさん
07/06/10 15:45:00
>>384
そのjarのライセンスに従ってください
387:デフォルトの名無しさん
07/06/10 16:32:42
>>377
JDKドキュメントのセキュリティの項は目を通してみているけど、さっぱりわからない。ムズ過ぎ……
>>現在、SDK の一部として提供されているコードはすべてシステムコードと見なされて、固有のシステムドメインの中で実行されます。
>>システムコードには、自動的にすべてのアクセス権が与えられます。
とか書かれてるけど、javax.scriptはシステムコードですべてのアクセス権が与えられてて制限は出来ないってこと?
388:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/10 17:07:51
>>388
何故26がbyteなのですか?
390:デフォルトの名無しさん
07/06/10 17:10:45
>>388
127以下の数だからってbyteとして扱われるわけじゃない。
Lつけなきゃ整数リテラルはすべてint。言語仕様の3.10.1参照。
391:デフォルトの名無しさん
07/06/10 19:13:20
データベースの中身を拾ってきて
それをCSV形式でファイルに書き出してデスクトップに落としたい場合
メモリ上にファイルを作成→一行ずWriteで書き出す→拡張子をCSVにしてデスクトップに保存する
こういうクラスを作ってやっているのですが
だいたい皆さんもこういうやり方でやっているのでしょうか?
もっと簡単な方法とかあるのでしょうか?
392:デフォルトの名無しさん
07/06/10 19:19:21
ActiveDirectory認証を利用するAPIはありますか?
393:デフォルトの名無しさん
07/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が実行される。
②TestClassAの中でthisと宣言されているため、明示的にインスタンス化されてはいないが
thisはTestClassAを示すため、自動的にインスタンス化される等して、TestClassA内の
doExcuteを実行しようとする。しかし、TestClassA内にはabstructでしかdoExcuteが宣言
されていないので、自動的に実装しているものを探してTestClassBのdoExcuteを実行した。
感覚的には①な気がするのですが、thisはその記載されたクラス自身を示すような気がして
下のような考えと悩んでいます。すいませんが教えてください。
394:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/10 20:01:33
>>391
それで何か問題あるの?
>>392
Windows固有の機能だからJavaにはなさそうだ。
>>393
もちろん①が正解。ただそのコードじゃコンパイル通らないはずだよ。TestClassAはきっとabstractなクラスだ。
397:デフォルトの名無しさん
07/06/10 20:05:35
>>391
少しだけOO的に書くのであれば、DBから取得してきたデータをBeanクラスに詰め、Writerで1行ずつ書き出すとベター
DBから取得してきたデータをいきなりCSVの1行にするくらいならば、データ量にもよるけど、SQLで組んじゃう方が楽じゃね?
398:デフォルトの名無しさん
07/06/10 20:34:28
>>387 セキュリティマネージャ差し換えるんだよ。
>>392 ActiveDirectoryというかLDAPなら。
399:デフォルトの名無しさん
07/06/10 20:38:21
>>396
問題はないけど
ちょいとアナログなやり方なので
他に方法があるのなら参考にしたかった
400:デフォルトの名無しさん
07/06/10 21:04:14
>>393
常にTestClassBを示す
401:デフォルトの名無しさん
07/06/10 21:17:10
>>399 == >>391
それを言うなら
アナログ
じゃなくて
アナクロ
402:デフォルトの名無しさん
07/06/10 21:48:39
超初心者失礼します
enumを使おうと思って調べたんですが、よくわかりません
とりあえずJ2SE5.0なので言語レベルで実装されてるとは思うのですが
enum hoge{
oerjao, idos;
};
てな感じじゃだめなんでしょうか、Eclipseだと無理っぽいんですが…
403:デフォルトの名無しさん
07/06/10 22:03:54
>>402
普通に使えるはず。
使えないなら以下をチェック
・eclipseのバージョン
・プロジェクトのプロパティ
-> Javaコンパイラ
-> Javaのビルドパス
-> ライブラリ
404:デフォルトの名無しさん
07/06/10 22:29:46
>>398
System#setSecurityManager()でセキュリティを設定するとスクリプトは安全だけど、
アプリケーション全体に制限が加わってしまってそれ以外のファイルアクセスなんかが
出来なくなっちゃうよね?やっぱりわからん…
405:デフォルトの名無しさん
07/06/10 22:36:18
>>403
よくわからんのですが、コンパイラの準拠レベルとやらを5.0に上げたら通るようになりました
ありがとうございました
406:デフォルトの名無しさん
07/06/11 00:12:16
>>398
その手のスクリプトってパッケージとか持ってないと思うし、
コードベースで動作制限もできないようなきがするから、
SecurityManager でやるにしても、あんまし便利には出来んと思うけど。
407:デフォルトの名無しさん
07/06/11 01:11:43
>>375とかセキュリティマネージャとか言ってる奴は馬鹿だろ。
言語レベルのセキュリティとスクリプトエンジンの実装のセキュリティは別問題。
組み込みエンジンのセキュリティ確保は組み込む人間が全部自分で必要なものを1から実装する。
これは>>375の仕事。
何を何処までどうするか、それをどうやって実現するか全て自分でやる。用意されてるものを使うんじゃなくて自分で用意する。
具体例でいえば"ブラウザは外部の入力は汚染されたものと仮定してセキュリティ制限下で処理してる"
""でくくった部分を>>375が全部やる部分。
実装例だせば、ecma-262ではトップレベルコンテキストは常に一つで一切操作出来ないのが仕様だが、
ブラウザでそれやると文書間でトップレベルコンテキストが共有されてしまうから動作変更して文書毎にトップレベル生成してる。
javaの実装であるrhinoはセキュアであることは実装対象外だから一切配慮されてなくて、
セキュアな実行環境がほしい場合は組み込む者が適切に実装しろとrhinoのドキュメントにご丁寧に書いてある。
これだけ言ってわからんならノウハウ本か他のソース読め。
408:デフォルトの名無しさん
07/06/11 02:09:41
バカ避けのために作られた言語なのに
どうしてバカばっかり集まってくるのはなぜ?
409:デフォルトの名無しさん
07/06/11 03:06:49
それはおまいが一番よく知ってるんだぜ?
410:デフォルトの名無しさん
07/06/11 09:25:56
>>407
sun.org.mozilla.javascript.internal.Context#setClassShutter() で
Javaのクラスを遮断することができることがわかった。
さすがにRhinoがセキュリティについて一切配慮されてないなんてことはなさそう。
sun.org.mozilla.javascript.internal.SecurityController もセキュリティ関連だからもっと調べてみる
411:デフォルトの名無しさん
07/06/11 12:05:20
JDBCドライバを実装するのにオススメのサイトや書籍(できれば日本語)
を教えていただけませんか?
412:デフォルトの名無しさん
07/06/11 12:46:39
>>411
JDBCドライバを実装するの?
JDBCドライバを使用してDBアクセスを試すんじゃなくて。
後者ならば、「JDBCによるJavaデータベースプログラミング」あたり。
やさしいのがいいってならば、どれでもいい気がする。
ドライバの実装は・・・少なくとも初心者質問スレじゃスレ違い
413:デフォルトの名無しさん
07/06/11 13:13:02
>>412
ドライバの使用じゃなくて実装です。
使用法の情報は多くあるのですが実装についてはあまりみないもので。
スレ違いですか…
どこが適切なんだろうか
414:デフォルトの名無しさん
07/06/11 13:34:49
>>410
そこら辺は最近追加された新しいAPIだよ。
sunのrhinoは元とは別モンの劣化品だからただ実行する以上の用途はmozilaのパッケージ使った方が良いぞ。
ドキュメントもすべて揃ってるから組み込みチュートリアルとかもあるし。
(javadocはサンプルjsコードの一部をコピペしただけ。)
悪いことは言ってないぞ?
415:デフォルトの名無しさん
07/06/11 14:29:36
>>413
情報無いよな、そもそも必要に迫られるもんじゃないし。
公開されていソースが一番の情報源では?
スレは作成したいドライバのDBベンダのスレのがいいかも。
416:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/11 16:13:50
>>417
ありがとうございます。しかし、コンパイルは通ったのですが、
System.out.print(a.num[i][j]);
のところでエラーが出てしまいます。どうしてなのでしょうか?
419:デフォルトの名無しさん
07/06/11 16:15:17
というよりも、今気付いたのですが、コンストラクタの中の"test"って文字が表示されてないってことは、
まず、コンストラクタの中に入ってないってことですね。それはエラーも出るはず・・・;;
420:デフォルトの名無しさん
07/06/11 16:18:29
public void Info()はコンストラクタではない。
ただのメソッド。
ヒント:void
421:デフォルトの名無しさん
07/06/11 16:24:11
もし>>417のままにしたいなら Info a = new Info(); a.Info(); でnumを初期化
422:デフォルトの名無しさん
07/06/11 18:05:00
>>420-421
ありがとうございます。voidを除いたら正常に動作しました。
調べてみると、コンストラクタは返り値を持たないので型の宣言は指定したらダメっぽいんですね・・。
勉強になりました。
423:デフォルトの名無しさん
07/06/11 19:35:30
一昨日くらいにJAVAを始めたのですが、いまいちクラスとかメソッドとかの良さが分かりません。
まだあまりプログラミング量が少ないからなのかもしれませんが、オブジェクト指向の利点というものを
活かしきれていないような気がします。どうやってもC言語のような感じでプログラムを書いてしまいます。
そこで相談なのですが、何かこういうプログラムを作ってみるといいよって感じのはないでしょうか?
こういうプログラム作ったら、クラスの凄さがよくわかるとか・・・。
424:デフォルトの名無しさん
07/06/11 19:50:17
>>423
システム設計するようになると良くわかるよ
425:デフォルトの名無しさん
07/06/11 20:02:01
>>424
具体的にはどのようなプログラムを作ればいいのでしょうか?
良く分かるために貪欲に何でも作ろうかと思うのですが。
426:デフォルトの名無しさん
07/06/11 20:12:46
>>425
俺はTECHSCOREのデザインパターンのページ読んだら結構納得できた
427:デフォルトの名無しさん
07/06/11 20:45:57
>>425
ステップ数で300くらいの処理を3-4程度のクラスに分割してみる。
自分の経験からだと、CSVの読み書きクラスとかほど良いボリューム
428:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/11 21:06:22
>>428
それは実行されて、プログラムも終了しただけかと。
CUIならコマンドプロンプトから実行したら?
430:デフォルトの名無しさん
07/06/11 21:10:30
>>429
やはりコマンドプロンプトから実行するしかありませんか。
実はIRC用のBOTを作っていて友人に配布することになりダブルクリックだけで実行できたほうが便利かなと思ったのです。
がんばってGUIをつけることにします。
質問に答えていただきありがとうございました。
431:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/11 23:18:29
1.4でThreadを安全に停止するメソッドってありますか?
stopは推奨されないみたいなので。
433:デフォルトの名無しさん
07/06/11 23:22:33
>>432
強制?
無限ループのThreadを終了?
434:デフォルトの名無しさん
07/06/11 23:24:28
>>433
強制です。
ロック最中でもロック開放してThreadを停止したいんです。
435:デフォルトの名無しさん
07/06/11 23:31:17
>>434
どうしてstopが非推奨になっているかを考えれば代替手段もないことに気づくと思うんだが・・・
436:デフォルトの名無しさん
07/06/11 23:47:34
Java アプレットの話です。どうして表示結果があんなにキタナイの。
図形の座標の計算が変だと思う、円周をどうやって表現するの?
そこで間違っているから、Java は隙区内。
こんなにキレイな円と多角形の重なりも簡単、とかいうなら、
ひとつ アプレット の例を作って見せてね。
437:デフォルトの名無しさん
07/06/11 23:49:58
URLConnection時のクッキー書き込みについて教えて頂きたいです。
Webページにクッキーを固定で書くだけのテスト用ページを作成しました。
※URLリンク(*****)
<?php setcookie("test","123",time()+60*60*24); ?>
このテスト用ページに
URLConnectionまたはHttpURLConnectionで
アクセスするとクッキーが書き込まれないのですが
java(URLConnection)では、クッキーは書かれないのでしょうか?
それとも何かクッキーを許可するような設定値があるのでしょうか?
ブラウザのURL欄に上記テスト用ページを直打ちすると
正常に書かれるのでテスト用ページの処理は問題無いと思うのですが。。
アドバイス頂きたいです。よろしくお願いします。
438:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/12 00:23:19
あっ、438は436向けね。
440:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/12 00:32:46
ていうかjava2dの描画精度のことなら6ですでに改善されてるだろうが。
わざわざ釣られる必要はないよ。
442:デフォルトの名無しさん
07/06/12 00:40:13
所詮、ドット絵なんだからアンチエイリアスしないとキレイな曲線にはならないでしょ
443:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/12 03:10:23
java.ioやNIOつかってストリーム指向で。
MP3やoggのデコーダのソースは参考にならないかい?
445:デフォルトの名無しさん
07/06/12 09:06:45
ど忘れした。
読み込み中等で表示されるGUI部品で青い部分が伸びていくやつ何て名前だっけ?
シーケンスじゃなくて・・・あぁ・・・思い出せない。
446:デフォルトの名無しさん
07/06/12 09:07:38
>>445
プログレス
447:デフォルトの名無しさん
07/06/12 09:10:12
>>446
早っ!ありがとう。
448:デフォルトの名無しさん
07/06/12 16:09:05
よい解決方法があれば、教えて下さい。
FTPClientで日本語ファイルを転送しようとしたところ、
ファイル名が文字化けしてしまいました。
日本語ファイルは対応していないのでしょうか?
ちなみに転送元、転送先ともにSJISです。
449:デフォルトの名無しさん
07/06/12 16:17:43
GUIでプログラムを作ろうと思ったら何を勉強したらいいのでしょうか…
450:デフォルトの名無しさん
07/06/12 16:25:32
>>448
FTPClient?それはどこのパッケージ?
>>449
awt、swing、(swt)
451:デフォルトの名無しさん
07/06/12 16:42:02
>>450
素早い解答ありがとうございますw
これから勉強してみます。
452:デフォルトの名無しさん
07/06/12 17:13:43
>>448
sunのjdk6にはそんなもん存在せんからエスパーだがリーダー見直せ。
それかnio使って自分で縁コード汁!
453:デフォルトの名無しさん
07/06/12 18:24:09
>>450,452
org.apache.commons.net です。
commons-net-1.4.1.jarを使ってます。
なるべく労力を少なくしたかったのですが、
ダメっぽいですね。
ありがとうございました。
454:デフォルトの名無しさん
07/06/12 19:14:24
失礼します
Labelの仕様について質問なんですが、setforegroundで文字の色は変わるんですが
setbackgroundで背景の色が変わりません
ボタンの場合foreback両方問題なく色を変えられます
Labelっていうのは四角い領域だと理解してたんですが、間違ってますか?
なぜsetbackgroundで色が変わらないんでしょうか?
455:デフォルトの名無しさん
07/06/12 19:52:33
変わるよー
ラベルのサイズが小さいんじゃない?
456:デフォルトの名無しさん
07/06/12 20:04:17
opaque
457:デフォルトの名無しさん
07/06/12 20:07:35
>>455
変わりますか…
サイズはsetboundsで40*40確保してるので問題ないと思うんですが…
458:デフォルトの名無しさん
07/06/12 20:08:16
間違えた、60*40でした。関係ありませんが一応
459:デフォルトの名無しさん
07/06/12 20:16:42
>>454
バリデートツリーは?
460:デフォルトの名無しさん
07/06/12 20:37:54
>>459
やってみましたがダメでした
もちろんForegroundでは色が変わります
461:デフォルトの名無しさん
07/06/12 20:40:52
>>460
>>456
462:デフォルトの名無しさん
07/06/12 21:04:58
JDKダウンロードしましたが、どうしていいやら・・・。
URLリンク(www.ssl-on.net)
このサンプルオーダーフォームを改造してCDを売りたいんですが
なにからはじめれば良いでしょうか??
タグ内にJAVAって書いてあったのでJAVA使ってるんですよね?
よろしくお願いします。
463:デフォルトの名無しさん
07/06/12 21:07:01
>>462
本の1冊でも読んでこい
464:デフォルトの名無しさん
07/06/12 21:09:49
>>463
そこをなんとか・・・・
友達から頼まれて・・・俺もまったくわからないのに・・。
今日中に仕上げてしまいたいんですー><
465:デフォルトの名無しさん
07/06/12 21:10:15
>>462
ゆとり教育キタ━━━(゚∀゚)━━━ !!
466:デフォルトの名無しさん
07/06/12 21:10:48
>>464
わからんものを引き受けるな。
467:デフォルトの名無しさん
07/06/12 21:21:41
まぁ、2ちゃんで聞けば出来るだろうと思って引き受けちゃいました。。。
お願いしますー!
468:デフォルトの名無しさん
07/06/12 21:24:05
CGIっすかね?^^;
469:デフォルトの名無しさん
07/06/12 21:29:50
>>461
色指定するとき透明度の設定ちゃんとしろってことでしょうか?
今透明度0でやってみましたが無理でした
470:デフォルトの名無しさん
07/06/12 21:31:32
>>467
2ちゃんで宣伝した方がCD売れるかもよ
471:デフォルトの名無しさん
07/06/12 21:42:57
>>469
>>456
472:デフォルトの名無しさん
07/06/12 21:45:16
>>471
透明度のところopaqueにしても無理でした
473:デフォルトの名無しさん
07/06/12 21:56:34
>>462
Adobe PageMillか・・・
懐かしいな
474:デフォルトの名無しさん
07/06/12 22:21:55
今度学校でjavaやるんだけどリナックスでしなきゃいけないんだけど窓
となんか違うとこあるの?めんどくさい?一応Cなら少しやってて窓使ってます
475:デフォルトの名無しさん
07/06/12 22:32:20
>>472
ヒント:メソッド
476:デフォルトの名無しさん
07/06/12 22:56:20
>>475
すみません、よくわかりません…
477:デフォルトの名無しさん
07/06/12 23:00:21
>>474
日本語とは違うようだね
478:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/06/12 23:41:58
>>476
俺どんだけ親切なんだか・・・
つ setOpaque(boolean)
480:デフォルトの名無しさん
07/06/12 23:59:24
>>479
できました…
懇切丁寧にありがとうございました
481:デフォルトの名無しさん
07/06/13 00:03:32
ProcessBuilderでlhacaの起動でフリーズすると質問したものです。
やはりlhacaの問題でした。
lhasaに入れ替えてプログラムを実行したところ、正常に終了しました!
wgetの動きも怪しかったのですが、バックグラウンドで動作するオプションを入れたところ
問題なく動作するようになりました。
これで漏れの壮大なアプリ作成の一歩が始まった感じです。
いろいろ答えてくれた皆様、ありがとうございました!
482:デフォルトの名無しさん
07/06/13 09:27:11
log4j とかを使って syslogd に出力すると
ログの方に <139> とか <142> という数字が出てくるのですが
ERR とか INFO とかに対応しているようなのですが
番号との関係一覧見たいなものを探しても見つかりません
どこかにありますか?
483:デフォルトの名無しさん
07/06/13 10:40:34
すみません、基礎的なことでわからないことがあります
swingを使うときmainのあるクラス?をJFrameのサブクラスにするみたいなんですが
理由はなんでしょうか?
初心者は黙ってJFrame継承しとけっていうならそうします。
484:デフォルトの名無しさん
07/06/13 10:43:48
俺はそうしない。
485:デフォルトの名無しさん
07/06/13 11:04:03
>>483
mainのあるクラスはプログラムの実行開始場所。
そのクラスがJFrameのサブクラスである必要は無いし、しない方がいいと思う。
JFrameのサブクラスでアプリケーション作成したならば、それを実行するだけのクラスを作る方がいいと思う。
JFrameを継承するのか、継承しないでnewしてシコシコとコンポーネントを追加していくのもあり。
ただし、その初期化処理は誰がやるんだね?
JFrameにコンポーネント追加したり、基本設定を行わせるクラスを作成するのも手だけど、無理に切り離す必要はないと思う。
だから、よくあるコーディング方法としては、コンストラクタまたはコンストラクタから初期化メソッドを呼び出して設定を行う。
486:デフォルトの名無しさん
07/06/13 12:13:13
>>485
ありがとうございます
別に継承が必須ってわけではないんですね
487:デフォルトの名無しさん
07/06/13 14:25:05
JFrameのインスタンス.show();このメソッド推奨されてませんが、
代わりになるメソッドとか有るんですか?
488:デフォルトの名無しさん
07/06/13 15:05:03
setVisible
489:デフォルトの名無しさん
07/06/13 15:10:37
setVisible
490:デフォルトの名無しさん
07/06/13 15:15:35
>>487
APIのリファレンスを読む習慣をつけておいた方がいいと思う。
非推奨メソッドについて替わりになるものがあれば大抵書かれてある。
491:デフォルトの名無しさん
07/06/13 16:33:41
>488-500 情報thx
492:デフォルトの名無しさん
07/06/13 17:30:12
>>491
(ノ´∀`*)どういたしまして
だけじゃ感謝されただけなので・・・
URLリンク(java.sun.com)
プログラム中は、ブラウザのタブにこのページは必ず開いている
これ必須
493:デフォルトの名無しさん
07/06/13 17:32:44
ダウンロードして使えよ
494:デフォルトの名無しさん
07/06/13 17:40:57
>>492
いつも思うんだけど
なんでサンプルプログラムも一緒に載ってないのかなぁ
================================
メソッドの詳細
actionPerformed
void actionPerformed(ActionEvent e)
アクションが発生すると呼び出されます。
================================
これじゃ何も分からんよ。
確かにその通りだし、知ってれば使えるんだけどさ。