【初心者】Java質問・相談スレッド112【大歓迎】 at TECH
[2ch|▼Menu]
[前50を表示]
600:デフォルトの名無しさん
08/02/21 22:47:40
強いってのはやりやすいって意味か?
それともやられにくいって意味か?

基本的にJavaはネイティブにしない限りソースへ復元は簡単な方
C#はどんだけネイティブ系使っているか次第

601:デフォルトの名無しさん
08/02/21 22:53:41
逆コンパイルはどっちも超簡単でほぼ完璧だよ

602:582
08/02/21 23:00:01
>>593
ありがとうございます。
色んなベンダから別々に色んな技術が生まれてカオスな状態という感じでしょうか
デフォになってるものも無いようなので自分で色々試してみます。

603:594
08/02/21 23:02:25
>>596
ああ、なるほどー。と思って実装してみたら、逆に少し遅くなりました。(データは正しく読めてました)
以下のようなコードを書いてベンチマークしても、やっぱり遅くなってましたorz
public class ReadTest {
public static final int length = 3800 * 2600;
public static int[] data = new int[length];
public static ByteBuffer buffer;
public static void main(String[] args){
try{
buffer = ByteBuffer.allocateDirect(length * 16);
buffer.order(ByteOrder.LITTLE_ENDIAN);
for(int i = 0; i < 20; i++){ read1(); read2(); read2(); read1(); System.out.print(".");}
long t = System.currentTimeMillis();
for(int i = 0; i < 10; i++){ read1(); }
System.out.println("\r\n" + (System.currentTimeMillis() - t) + " ms");
t = System.currentTimeMillis();
for(int i = 0; i < 10; i++){ read2(); }
System.out.println((System.currentTimeMillis() - t) + " ms");
} catch (Exception e){}
}
public static void read1() throws Exception{
FileInputStream fis = new FileInputStream(new File("hoge"));
FileChannel srcChannel = fis.getChannel();
for(int i = 0; i < 4; i++) fis.read(); // ヘッダ
buffer.rewind();
srcChannel.read(buffer); srcChannel.close(); fis.close(); // 読み込み
buffer.clear();
for(int i = 0; i < length; i++){ data[i++] = buffer.getShort() & 0xffff;}
}
/* read2 は読み込み部分が古いほう(省略) */
うーん、不思議ですねえ。 getShort() は遅いんでしょうか。。。
でかい画像を大量に処理していて、読み込みが25%くらい閉めているので、短くしたい・・

604:594
08/02/21 23:04:31
最終行の data[i++] は data[i] のミスです

605:デフォルトの名無しさん
08/02/21 23:05:21
>>600
やられにくいって意味でとらえてください

>>601
そうですか、使いやすくて良い言語だけど自分が作ったソフトが逆コンパイル
されるのは困るな

企業で開発するときは何か対策しているのでしょうか?

606:デフォルトの名無しさん
08/02/21 23:17:50
なんで困るんだ?

607:デフォルトの名無しさん
08/02/21 23:28:14
>>597
ありがとうございます
UTF-8で読み込んでいます

System.out.println("แอมเพอร์แซนด์");
これでエラーになるのはなんででしょうか

608:デフォルトの名無しさん
08/02/21 23:29:10
แอมเพอร์แซนด に一致する情報は見つかりませんでした。

609:デフォルトの名無しさん
08/02/21 23:57:00
こんばんは。
CDを管理するプログラムを作っているのですが、mainクラスとCDクラスがあります。
管理する数は、5つでその分のCDインスタンスをつくり、価格と名前のを入力しコレクションで管理すると言うプログラムです。(重複可で名前でソートさせます)
このプログラムを作ってみたのですが、Collections.sort(list);としたのですが、下線のびっくりマークのエラーが出てしまいます。
内容は、『型の安全性:型Collectionの総称メソッドsort(List<T>の未検査の呼び出しsort(List)がありました』と表示されてしまいます。
このようなエラー表示にはどのような対処をしたら良いのでしょうか?
アドバイスお願いします。

610:デフォルトの名無しさん
08/02/21 23:59:26
>>609
-source 1.4
をコンパイルオプションに付ける

611:デフォルトの名無しさん
08/02/22 00:01:32
ああ、IDE使ってるのか
JDKレベルを1.4にする

612:デフォルトの名無しさん
08/02/22 00:06:39
>>609です。
Eclipse 3.1を使ってます。5.0から1.4にするという感じでよいのでしょうか?
コンパイルオプションの変え方がわからないので調べてみます。


613:デフォルトの名無しさん
08/02/22 00:42:51
>>612
JDK5以降で言語仕様に入れられたジェネリクスというものに関わるエラー。
「java ジェネリクス」で調べてみて。
eclipseならリファクタリング機能の中に、
ジェネリクスを使用していないソースを使用するように変更してくれる機能もあるけど、
とりあえず、ジェネリクスを理解してからにしたほうがいい。

614:デフォルトの名無しさん
08/02/22 00:45:18
>>612です。
アドバイス、ありがとうございます。
ひとまず、1.4に変更したところちゃんと動作しました。ジェネリクスの勉強もしてみます。

615:デフォルトの名無しさん
08/02/22 01:30:47
java覚えて女性関係のメリットになったことってありますか?
真剣な質問です
また、女性関係に強い言語は何でしょうか?

616:デフォルトの名無しさん
08/02/22 02:04:39
つまんね
他でやれ

617:デフォルトの名無しさん
08/02/22 03:18:36
Javaの勉強をしている初心者なのですが
今コードを書くためのエディタを探しています。
よいエディタを紹介していただけませんか?

618:デフォルトの名無しさん
08/02/22 05:53:51
vivi

619:デフォルトの名無しさん
08/02/22 09:05:49
>>605
Javaと.NETどちらとも、逆コンパイラはある。
どっちも中間言語を使うタイプなので、逆コンパイラを作りやすいらしい。
そしてその対策として、obfuscator(難読化ツール)がどちらにもある。
単に、シンボル名(クラス名、メソッド名、変数名)をランダムな文字列に
置き換えて、逆コンパイラが出力したソースを読みにくくする、
ってだけだけど。

620:デフォルトの名無しさん
08/02/22 10:00:34
ジェネリクスについての質問が多いのは
初心者には難しいので入門書の段階では取り扱わないからか
それとも基本1.4で5.0要素は申し訳程度にしか書いてない本が
未だに主流だからか

621:デフォルトの名無しさん
08/02/22 10:21:52
直観的でなくて罠が多いからな

622:デフォルトの名無しさん
08/02/22 11:27:58
URLリンク(www.xlsoft.com)
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが

623:デフォルトの名無しさん
08/02/22 11:38:09
>>620
俺のとこでは依頼される仕事も未だに1.4全盛なんだよなー。他の会社の人に聞いてもそうだという。5.0に移行するのはいつになることやら。。

624:デフォルトの名無しさん
08/02/22 11:43:56
>>622
Javaをネイティブ化したいだけならGCJもあるよ
速くなるとは限らないが
Javaが見た感じ重いのはSwingとかライブラリのせいもあるから…

625:デフォルトの名無しさん
08/02/22 11:48:02
165 名前: 以下、名無しにかわりましてVIPがお送りします。 [sage] 投稿日: 2008/02/22(金) 11:45:46.56 ID:Q0PQrlKw0
お前らに朗報
URLリンク(pc11.2ch.net)
この板の適当なスレに

URLリンク(www.xlsoft.com)
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが

と書き込んだらデブスがデブゲバうpするってよお


626:デフォルトの名無しさん
08/02/22 11:50:08
170 名前:以下、名無しにかわりましてVIPがお送りします。[sage] 投稿日:2008/02/22(金) 11:47:31.63 ID:Q0PQrlKw0
お前らに朗報
URLリンク(pc11.2ch.net)
この板の適当なスレに

URLリンク(www.xlsoft.com)
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが

こう書き込まないとお前らがキーボード打ってる指があさって腐るそうだ
腐って死ぬぞ??

627:デフォルトの名無しさん
08/02/22 12:37:40
ジェネリクスを使うだけなら難しいか?
Foo[] と ArrayList<Foo> が初心者的には理解しやすくなると思うんだけど
単なる入門書の怠慢だと思う

628:デフォルトの名無しさん
08/02/22 14:03:27
始めるんだけど、どの本がオススメですか?

629:デフォルトの名無しさん
08/02/22 15:01:06
初心者で失礼します。どう修正していいかわかりません。宜しくお願いします。

import java.util.Scanner;

public class tes
{
public static void main(String[] args)
{
char stuname;
Scanner kb = new Scanner(System.in);
stuname = getStuN("Please enter the student name: ", kb);
}
//get studnt name
public static char getStuN(String str, Scanner kb)
{
System.out.print(str);
char sname = kb.nextLine();
System.out.print(sname);
return sname;
}

}
---------
tes.java:15: 互換性のない型
検出値 : java.lang.String
期待値 : char
char sname = kb.nextLine();
^


630:デフォルトの名無しさん
08/02/22 15:08:50
>>629
URLリンク(java.sun.com)
nextLine の戻り値型は String です。
よって sname の型宣言を String にして、それ以降の記述を適切に修正してください。

631:デフォルトの名無しさん
08/02/22 15:26:12
>>630
できました! ありがとうございましたm(_ _)m

632:デフォルトの名無しさん
08/02/22 15:42:51
625 名前:デフォルトの名無しさん[sage] 投稿日:2008/02/22(金) 11:48:02
165 名前: 以下、名無しにかわりましてVIPがお送りします。 [sage] 投稿日: 2008/02/22(金) 11:45:46.56 ID:Q0PQrlKw0
お前らに朗報
URLリンク(pc11.2ch.net)
この板の適当なスレに

URLリンク(www.xlsoft.com)
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが

と書き込んだらデブスがデブゲバうpするってよお


626 名前:デフォルトの名無しさん[] 投稿日:2008/02/22(金) 11:50:08
170 名前:以下、名無しにかわりましてVIPがお送りします。[sage] 投稿日:2008/02/22(金) 11:47:31.63 ID:Q0PQrlKw0
お前らに朗報
URLリンク(pc11.2ch.net)
この板の適当なスレに

URLリンク(www.xlsoft.com)
このソフトを使えばJavaでもネイティブアプリケーションが作れると書いてあるのですが、そんなうまい話があるんですか?
もし本当ならJavaのパフォーマンス面での不利がだいぶ改善されると思うのですが

こう書き込まないとお前らがキーボード打ってる指があさって腐るそうだ
腐って死ぬぞ??

633:デフォルトの名無しさん
08/02/22 18:03:04
JAVAからpostgresSQLを操作するプログラムを作成しております。
JAVAからpostgresのでーたをバックアップする方法を知りたいのですが、
JDBCを利用して、postgreSQLのpg_dumpを操作する方法はあるのでしょうか。

また、pg_dump以外にも、JDBCにてデータのバックアップを出来る方法があれば、
ご教授お願いいたします。

634:デフォルトの名無しさん
08/02/22 18:19:27
>>633
DatabaseMetaData#getTablesで全テーブルを取得して全行クエリしてファイルに書き出すとか・・・
それですべて復元できるかわからないけど

Runtime#execでpg_dump呼び出す方が簡単な気がする

635:デフォルトの名無しさん
08/02/22 18:33:59
>>634
>DatabaseMetaData#getTablesで全テーブルを取得して全行クエリしてファイルに書き出すとか・・・
それは遅そうだw

>Runtime#execでpg_dump呼び出す方が簡単な気がする
わしもそう思う。
何かの操作が必要だったら、シェルかバッチの中でJavaプログラムで操作したのちに
バックアップを走らせた方が効率が良さそうだが。

636:633
08/02/22 18:44:15
634,635
どうもありがとうございます。
早速、試してみます。

637:デフォルトの名無しさん
08/02/22 19:07:30
今どきJDBCなんて使う必要あるの?

638:デフォルトの名無しさん
08/02/22 21:32:33
教えてください。

環境:Oracle JDBC

PreparedStatementとResultSetを使用し、
SELECTを実行しています。

通常問題ないのですが、バインド変数(?)が11個以上あるSQLを実行した場合、
かつ、レコードのヒット件数が11件以上を超えている場合、
11件目のデータ取得時に「配列の範囲」を超えた、という例外が発生します。
バインド変数はsetStringで1から順に設定し、
設定内容についても問題ないです。
※デバッガで確認済み

SQL自身は問題なく、SQLExceptionが発生しているわけでもありません。

何か回避策はあるのでしょうか?


639:デフォルトの名無しさん
08/02/22 22:03:15
まずスタックトレースを貼れ。その話し振りだと単なるバグの可能性が素敵連

640:デフォルトの名無しさん
08/02/22 22:09:44
Cで言うところの構造体の代わりにクラスを使っています。
内部変数はInt型が2つ、Boolean型が1つの小さなクラスです。
クラスの2次元配列として2000x2000のインスタンスを生成するコードを書いたら
インスタンスを生成する箇所(以下)で
for(int j=0;j<2000;j++){
 for(int i=0;i<2000;i++){
  box[i][j] = new Box();
 }
}

java.lang.OutOfMemoryError: Java heap space
というエラーが出てしまいました。
メモリの使い方が下手なんだと思うのですが、
よい対処法が思いつきません。
何か手はあるでしょうか?

641:デフォルトの名無しさん
08/02/22 22:32:58
>>640
簡単に計算。integer型として。
4byte * 2 * 2000 * 2000 => 32byte * k * k => 32Mbyte
boolean型はどれだけ食うのか分からないが、さらに4-16Mbyte

ということで、先の値を目安にし、ヒープを明示的に確保します。
以下ページから java のページ、-Xmx や -Xms オプションを参照のこと。
URLリンク(java.sun.com)

他の方法もあるとは思いますが、安易な解決法として。

642:デフォルトの名無しさん
08/02/22 23:23:53
>>641
ありがとうございます。
そういうやり方もありそうですが、
もう少しコードの書き方について考えてみます。

643:デフォルトの名無しさん
08/02/22 23:24:12
tomcatは内部でjspをコンパイルするためにjdkを使っていると聞いたのですが
tomcatをインストールする場面ではjdkではなくjreのパスを指定しますよね
その後もtomcatの設定でjdkの場所を教えたつもりは無いのですが
jspをちゃんとコンパイルしてくれてるみたいです。
tomcatはどうやってjdkを認識してるんでしょうか?

644:デフォルトの名無しさん
08/02/23 00:47:22
>>644
JSPのコンパイル用にIBMのJDK積むようになった。

昔はJDKの指定が必須だった。4までだったっけ?

645:643
08/02/23 00:52:46
>>644
なるほど〜そういうことだったんですね。
モヤモヤしてたのがスッキリしました。
ありがとうございました。

646:デフォルトの名無しさん
08/02/23 02:17:56
>>640
Int型というのは存在しない
Booleanの代わりにbooleanを使ったらどうか?

647:デフォルトの名無しさん
08/02/23 03:40:02
>>640
試してみた
Sun JRE 1.6.0_04
Box[2000][2000] の場合 107MB
int[2000][2000][2] + boolean[2000][2000] の場合 110 MB

648:デフォルトの名無しさん
08/02/23 03:59:50
new って複数のスレッドから同時に実行できるんですか?

649:デフォルトの名無しさん
08/02/23 04:06:06
>>648
意味が分からん
どういう状況を想定しているのか擬似コードでもいいからシンプルな例で示せ

650:デフォルトの名無しさん
08/02/23 04:06:21
>>647
まあなんですか、[2000][2000][2] ではなく、[2][2000][2000] をお勧めします。
ついでに用途が合えば boolean[][] ではなく、java.util.BitSet を。

651:デフォルトの名無しさん
08/02/23 04:10:57
>>648
コンストラクタはスレッドセーフかって意味なら答えは一般的にはノー

652:648
08/02/23 04:16:48
作ったプログラムのどうも動作が遅くて、スレッドダンプをみてみたらほとんどのスレッドが
コンストラクタ
java.lang.AbstractStringBuilder.AbstractStringBuilder(int capacity)内の
value = new char[capacity];
↑のところでブロックしてたので、非同期でnewは呼べないのかなと思ったんですが
ひょっとするとcapacityが大きいときだけ同期呼び出しだったりします?

653:648
08/02/23 04:18:31
>>651
つまり非同期には呼ばれないってことですね。

654:デフォルトの名無しさん
08/02/23 04:40:17
hou


655:デフォルトの名無しさん
08/02/23 04:46:29
>>652
ヒープに配列を生成する過程でロックされてそうだ。
仮に非同期に実行できたとしても体感時間は変わらないと思う。

仮にヒープの拡張に時間が掛かってるなら、
最初からヒープを必要な分大きくしておけば少しは早くなる。

あとは初期にやたら時間が掛かるなら、確保するサイズを小さくして、
最大確保を遅延させるのはどうか。
確保するたびに前のゴミが出るのと時間が掛かるけど。

656:デフォルトの名無しさん
08/02/23 09:57:09
>>652
確保するサイズが大きいとスレッドごとのプールから取れなくなるから同期が必要になる
というかそんな大きなStringBuilderをそんな頻繁に確保するってことがまずい気がする
GC起きまくってないか?一度 -verbose:gc で見てみ
確保したのを使いまわすと改善するんじゃないかな

657:お
08/02/23 11:14:43
j2dk1.4.2を使っているのですが、
javacが使えず、環境変数の設定をすると、一度できたんですが、
2回目からできなくなりました。
しかも変数の設定を変えていたので元のがどんなのだったかがわかりません…。
環境変数の、Pathを教えて下さい。

658:デフォルトの名無しさん
08/02/23 11:16:24
>>657
>>1

659:お
08/02/23 11:29:59
読んでもよくわかりません。どなたかー

660:デフォルトの名無しさん
08/02/23 11:51:13
>>659
本当に読んだか?具体的にどの手順がわからないんだ
URLリンク(java.sun.com)

661:デフォルトの名無しさん
08/02/23 14:00:48
>>655
>>656
なるほど!スレッドごとのプールから取れなくなるからってことですか。
このStringBuffer自体はデバッグのための文字列だったのでここの部分を取り払ったら
ロック争奪がなくなってスムーズに動きました。
ありがとうございました!

662:デフォルトの名無しさん
08/02/23 14:05:43
>>647
>>650
いろいろありがとうございます
Intのうち一つはflagで3種類の値しかとらないのでboolean2つで頑張って
もう一つのIntをshort型にするとだいぶ減りそうな気がしました。
後で実装してみようと思います
boolean2つのところはBitSet?を使えばいいのですかね。。
後でjavadoc読んでみます。

663:デフォルトの名無しさん
08/02/23 16:05:39
下記の構造でメインクラスtestから、VelocityのgetTemplateをコールしたところ、エラーが出ました。
test.jar
+-dir1
 +-test.class
 +-templ.properties

これで、
> java -jar test.jar
と実行すると
ResourceManager : unable to find resource 'templ.properties' in any resource loader.
というエラーが出ています。

test.jarのおかれているディレクトリにtempl.propertiesがあるか?を探しているようで、
test.jarの中を探していないみたいです。
Main-Class:はdir1.testと指定してあるのでmainはコールできてます。

なにか指定し忘れてることあるんでしょうか。。。お願いします。

664:デフォルトの名無しさん
08/02/23 16:25:09
BufferedImageのディープコピーの仕方を教えてください

665:デフォルトの名無しさん
08/02/23 16:30:43
もう1回BufferedImageを作れ

666:デフォルトの名無しさん
08/02/23 17:04:50
Javaの初心者にExceptionのことを教えたいのですが、
J2SEのクラスの、Exceptionをthrowするメソッドで、
一番基本的で分かりやすいものって何だと思いますか?
コンストラクタじゃない普通のメソッドでお願いします。

667:デフォルトの名無しさん
08/02/23 17:11:09
ぬるぽ

668:デフォルトの名無しさん
08/02/23 17:11:27
NumberFormatException

669:デフォルトの名無しさん
08/02/23 17:19:51
いや、Exception自体じゃなく、
Exceptionをスローするメソッドです。
例えば、FileOutputStream#write(byte[] b)とか。

670:デフォルトの名無しさん
08/02/23 17:24:40
>>666
// Exception 自体は throw も catch もするな。を教える
実行時例外なら、Integer.parseInt(String) で NumberFormat
普通のヤツは意図的に起こすだけなら ClassNotFound とか IO とか

NumberFormat は良い例ではないのよね。
実行時例外の割りに、catchされるように組み込まれてるし。

まあ、別に無理に教える必要は無いんじゃないかな
それよりも知らないメソッドは API doc で調べるように仕込むべし。

671:デフォルトの名無しさん
08/02/23 17:38:36
ありがとうございます。
実行時例外じゃなくて、
IOExceptionとか、メソッド呼び出すと絶対try catchしないといけないヤツです。

672:デフォルトの名無しさん
08/02/23 17:42:38
new FileInputStream
ファイルがなければFileNotFoundExceptionを投げる

673:デフォルトの名無しさん
08/02/23 17:45:47
って、コンストラクタはだめなのか
じゃあ Socket#connect
接続できなければ IOException

674:デフォルトの名無しさん
08/02/23 17:55:35
コンストラクタでないわかりやすいもの・・・
ImageIO#read(File) とか?

675:デフォルトの名無しさん
08/02/23 18:50:51
Stream系のIOExceptionじゃね?
try-catch-finally と合わせて覚えるのがセオリーかと

676:デフォルトの名無しさん
08/02/23 19:40:42
みなさんありがとうございます。
finnalyも合わせて、Stream系で説明してみようと思います。

677:デフォルトの名無しさん
08/02/23 20:55:38
IOException もいいが ParserConfigurationException も捨てがたい

678:デフォルトの名無しさん
08/02/23 23:54:30
学校でちょっとプログラムに興味あって色々自分で勉強してみたんですがJavaって簡単過ぎてつまらないんですがこんなので仕事になるんでうか?
HTMLも簡単だったし仕事では何やってるんですか?

679:デフォルトの名無しさん
08/02/23 23:58:40
オナヌー

680:デフォルトの名無しさん
08/02/24 00:00:51
>>678
ひとつだけいえることはつまらないと思う人は
これを仕事にしてはいけませんよ。

681:デフォルトの名無しさん
08/02/24 00:01:05
簡単か難しいかと、仕事になるかならないかは、関係ないからな
なにせ「単純労働」っていう言葉もあるくらいだ

682:デフォルトの名無しさん
08/02/24 00:01:06
言語は簡単でいいんだよ

683:デフォルトの名無しさん
08/02/24 00:40:01
27歳になってJAVAで開発チームに入る事になりました。
今までの業務開発経験は、COBOL3年あとはVBAぐらいですかね・・。
4年程前にSUNJAVA1.4の資格は取得したんで基礎的な事は大丈夫と思います。
実際に業務で役に立つ為に、他にどんな勉強しておけばいいですかね?
とりあえずTOMCATとMYSQL入れて、なんか作ってみようかなと思ってますが、
業務レベルでは全く無意味なんでしょうね・・

684:デフォルトの名無しさん
08/02/24 00:52:48
tomcatとmysqlが何で無意味なの?普通に業務レベルで使うのに。
とりあえずeclipseで簡単なwebアプリでも作ってみたら?

685:683
08/02/24 01:06:18
やっぱ業務でも使うんですね。
いや、簡単な事やっても業務レベルでは通じないかなぁと。
でも基本的な事分かってると大分入りやすいですよね。
適当にDB構築してWEBアプリ作ってみます。


686:デフォルトの名無しさん
08/02/24 01:32:01
適当にDB構築できちゃうレベルなら心配無用だと思うけど…

687:デフォルトの名無しさん
08/02/24 08:34:52
class calcException extends Exception {
}

public class sample53 {
public static void main(String[] args) {
try {
calc(2,2);
}catch (calcException e) {
System.out.println("calcExceptionが"+"throwされました");
}
}

static void calc (int i,int j) throws calcException {
if(i == j) {
calcException ce = new
calcException();
throw ce;
}
System.out.println(i*j);
}
}
これなんですけど、
if(i == j) {
calcException ce = new
calcException();
throw ce;
この部分でどういう処理を行っているのですか?

688:デフォルトの名無しさん
08/02/24 08:50:07
普通に例外なげてるんじゃね

689:デフォルトの名無しさん
08/02/24 09:23:16
throw ceってなんですか?
もしiとJの値が同じなら、オブジェクトを作成して、その後はなんですか?

690:デフォルトの名無しさん
08/02/24 09:30:37
だから例外投げてるんだよ

691:デフォルトの名無しさん
08/02/24 10:10:44
たびたび申し訳ないが、
static void calc (int i,int j) throws calcException
この部分はこの式は例外を投げる式ですよってこと?

692:デフォルトの名無しさん
08/02/24 10:14:30
このメソッドはcalcExceptionを投げ得ますよってこと。

693:お
08/02/24 10:27:48
>>660
[追加します]とありますが全部変えてしまいました。全部どう記述するのか聞きたいです。

694:デフォルトの名無しさん
08/02/24 10:33:26
>>693
URLリンク(okwave.jp)

695:デフォルトの名無しさん
08/02/24 11:13:00
>>692ありがとうございました><

696:お
08/02/24 11:30:48
wbemの場所ってわからないことないですか?

697:お
08/02/24 11:36:33
設定方法わかりませーん

698:デフォルトの名無しさん
08/02/24 11:57:29
@F8押す→3秒待機→F8押す
Bこの処理を500回ループした後
AF7押す→1秒待機→F8押す→1秒待機
C処理Aを30回繰り返し@に戻る

こういうプログラムはjavaだったら可能でしょうか?
ゲームに使うのでVBみたいにF8押したことにしますってのではなくて
実際に押すことが重要なんです

699:デフォルトの名無しさん
08/02/24 12:09:13
>>698
>>96
VB が何をやってるのか知らんが、
人がキーを押したときと同じような結果をシミュレートすることは可能。
// 自動演奏みたいにキーボードが動く……誰かそういうヤツを作ってください。

700:デフォルトの名無しさん
08/02/24 12:16:39
VBではSENDKEYなるメソッドがあり
それを使うとたとえば

F8押した時、1+1の処理をするというプロシージャがあった場合

SENDKEYによって1+1を呼び出すことはできますが
実際にF8を押すという動作がウィンドウズ内で行われている
というわけではないようです
(押した時のようにキーをへこませるといわけではありません。念のため)

ようするに、キーを押した後の処理ではなく、キーそのものを押したことを
キーを押さずにウィンドウズに認識させたい

701:お
08/02/24 12:22:46
設定方法わかりませーん

702:デフォルトの名無しさん
08/02/24 12:25:25
>>700
なるほど。イベントのトリガーとして登録させてるようなものですかね。
ということで、96 を実行することで少しは感動してもらえそうな予感。

703:デフォルトの名無しさん
08/02/24 12:31:18
どうやらjavaなら可能なようですね

勉強します

704:11
08/02/24 12:31:27
画面A,B,Cとあり画面CのB画面終了ボタンを押すとB画面のみ終了させたいと考えてますが
さっぱりわかりません。どなたかご教授願います。
/*ソースここから*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Gamen extends JFrame implements ActionListener{
private JButton b1 = new JButton("B画面表示");
private JButton b2 = new JButton("終了");
private JButton b3 = new JButton("C画面表示");
private JButton b4 = new JButton("B画面終了");
public void GamenA() {
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b1);
getContentPane().add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("A画面");
setSize(200, 100);
setVisible(true);
b1.addActionListener(this);
b2.addActionListener(this);}
public void GamenB() {
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b3);
getContentPane().add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("B画面");
setSize(200, 100);
setVisible(true);
b3.addActionListener(this);
b2.addActionListener(this);} //続きます

705:704
08/02/24 12:33:21
すみません>>704は11さんとは無関係です。 続き
public void GamenC() {
getContentPane().setLayout(new FlowLayout());
getContentPane().add(b4);
getContentPane().add(b2);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("C画面");
setSize(200, 100);
setVisible(true);
b4.addActionListener(this);
b2.addActionListener(this);}
public void actionPerformed(ActionEvent e){
if(e.getSource() == b1){
Gamen bb = new Gamen();
bb.GamenB();
}else if(e.getSource() == b2){
System.exit(0);
}else if(e.getSource() == b3){
Gamen cc = new Gamen();
cc.GamenC();
}else if(e.getSource() == b4){
//B画面終了ボタンを押してBのみ画面を終了させたい。
}
}
public static void main(String[] args) {
Gamen aa = new Gamen();
aa.GamenA();
}
}
/*ソースここまで*/
よろしくお願いします。

706:デフォルトの名無しさん
08/02/24 12:34:45
>>698
Javaはある程度のことしかできないし、そういうものであれば既存のソフトで腐るほどありますよ。
自分でやりたいなら何らかのスクリプトを使うことをおすすめしておきます。

707:デフォルトの名無しさん
08/02/24 12:43:52
一つ一つのフレームは、その他のフレームのインスタンスを持ってないから現状では無理。
閉じさせるフレームのインスタンスを持たせて、それでactionPerformedでdisposeしてやれば実現できるけど・・・継承とかそこらへんの意味を見直した方がいいと思うよ。

708:705
08/02/24 12:53:30
>>707
ありがとうございました。
勉強しなおしてきます。

709:638
08/02/24 13:30:03
>>639
業務なのでスタックとレースはちょっと貼れません・・・


実際に発生している問題は

パターン1
setStringでパラメータを19個設定
検索ヒット件数が10件以下
→問題なし

パターン2
setStringでパラメータを19個設定
検索ヒット件数が11件以上
→ResultSetでlastや、11件目のnextで例外発生
 スタックとレースに配列の範囲外を指定(詳細19)というエラーが出力される。
 ※パラメータを15や11にした場合も同様に(詳細15)のように出力される。

パターン1と2で使用しているSQLは全く同一。
パターン1と2の違いはパラメータの1つの日付の範囲を数ヶ月広げているだけ。

パラメータを全て直接SQLに埋め込んだ場合、データが件数分正しく取得できます。

パラメータに上限とかあるのでしょうか?
SQLはそれなりに大きいです。100行程度。


710:お
08/02/24 14:16:01
設定方法わかりませーん

711:デフォルトの名無しさん
08/02/24 14:16:23
>>709
Oracle なら、詳細19とか詳細15とかマニュアル嫁
それの何処に配列が出てくるのか謎

712:デフォルトの名無しさん
08/02/24 14:18:34
問題ない部分だけの抜粋でもいいからスタックトレース貼ったらどうか。
例外は本当にOJDBCで出てるのか?

713:638
08/02/24 14:29:54
ResultSetやPreparedStatementをデバッガで除くと、
設定したパラメータが正しい内容で格納されているのは確認しています。

出力される例外はArrayIndexOutOfBoundsExceptionです。
ここでパラメータの数が「詳細 パラメータ数」と表示されます。


>>711
まず、SQLExceptionじゃないです。
上記通り、19とか15はパラメータの総数が出力されます。
謎ですが。


>>712
そもそも業務で外部接続できないので貼れません・・・
例外は、ResultSetのnextが11回目に呼び出されたタイミングで発生します。
ResultSetの処理の中でArrayIndexOutOfBoundsExceptionで死亡します・・・

714:デフォルトの名無しさん
08/02/24 17:02:57
test

715:ちんこ ◆GbXlaaQNk.
08/02/24 17:05:15
固定長*可変長の配列を作りたいです。
(i方向が固定でj方向が可変、初期は空)
import java.util.*;

public class Test2{
public static void main(String[] args){
ArrayList<Integer>[] a = new ArrayList<Integer>[10];
for(int i=0; i<a.length; i++){
a[i] = new ArrayList<Integer>();
}
a[0].add(3);
System.out.println(a[0]);
}

}

こう書きましたがエラーが出ます。
どこがおかしいのでしょうか?

716:ちんこ ◆GbXlaaQNk.
08/02/24 17:05:45
age

717:デフォルトの名無しさん
08/02/24 17:07:30
固定長のちんこなんて要りません

718:デフォルトの名無しさん
08/02/24 17:09:04
1〜nの整数の順列をすべて表示するプログラムを書いてみたのですが
もっと簡単にやる方法とかここはこうしたらいいとかあったらアドバイスお願いします

import java.util.*;
class PermutationTest {
public static void main(String[] args) {
Permutation perm1 = new Permutation(4);
perm1.PrintPermutation();
return;
}
}

class Permutation {
private int N;
private int[] ans;
Permutation(int N){
this.N = N;
this.ans = new int[N];
}
void PrintPermutation() {
int[] a = new int[N];
for (int i = 0; i < N; i++) {
a[i] = i+1;
}
this.subPrintPerm(a,0);
}

続く

719:ちんこ ◆GbXlaaQNk.
08/02/24 17:09:27
まぁまぁそういわず。
なんでエラーが出るのかさっぱり分からなくてね。

720:デフォルトの名無しさん
08/02/24 17:09:46
>>718の続き

private void subPrintPerm(int[] a, int idx) { // 配列a[]から1つ取り出して残りで再帰呼び出し
if (a.length == 1) {
ans[idx] = a[0];
ansを表示;
return;
}
for (int i = 0; i < a.length; i++) {
int[] b = new int[a.length-1];
ans[idx] = a[i];
int j=0;
while (j < b.length) {
if (j < i) {
b[j] = a[j];
} else {
b[j] = a[j+1];
}
j++;
}
this.subPrintPerm(b,idx+1);
}
}
}

721:デフォルトの名無しさん
08/02/24 17:10:15
>>715
>>574-576

722:ちんこ ◆GbXlaaQNk.
08/02/24 17:16:06
>>721
既出でしたね。
でもそのレスを読んでも分かったよな分からんようなです。
具体的にどうすればいいか示してもらえませんか?

723:デフォルトの名無しさん
08/02/24 17:46:20
今まで書いたソースを消してクソして寝ろ
そして二度とブラウザを開かない

724:ちんこ ◆GbXlaaQNk.
08/02/24 17:47:03
>>723
分からないんだろ?そういえばいいのにw

725:ちんこ ◆GbXlaaQNk.
08/02/24 17:58:50
どう考えてもおれのコードと>>574のコードは問題点が違います。
おれが書いた>>715のコードはどこがミスがあるのか
指摘出来る人はいませんか?


726:デフォルトの名無しさん
08/02/24 18:17:40
>715
ジェネリックスを使用したList<E>の配列は作れない、言語仕様的に。
したがって、int[][]のように2次元配列にするか、List<List<Integer>>のようにListにListを入れるべし

727:デフォルトの名無しさん
08/02/24 18:21:32
ArrayList入れたいのかInteger入れたいのかはっきりしろ。

728:デフォルトの名無しさん
08/02/24 18:23:55
可変長のちんこ入れたいです。

729:デフォルトの名無しさん
08/02/24 18:49:14
ArrayList<Integer>[] a = new ArrayList[10];
でいいんじゃね?

730:ちんこ ◆GbXlaaQNk.
08/02/24 18:54:02
現在作成中の
ダイクストラ法による最短経路探索プログラムです。
URLリンク(www.uploda.org)
うpしました。
これでListを使えると便利なので使いたいと思ったのですが、
具体的に今findShortestPath @ MainPanel
というのを実装しています。
ここで、toArray周辺でエラーが出て、どういう事だかさっぱり分かりません。

エラーの原因が分かる人は教えてください。

731:デフォルトの名無しさん
08/02/24 19:06:16
730 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

732:ちんこ ◆GbXlaaQNk.
08/02/24 19:08:57
さっぱり分からない。

733:デフォルトの名無しさん
08/02/24 19:34:33
カレントディレクトリを移動してからEXEを実行したいのですが、下のように書いてもhoge.exeが実行されません。
どう書けばよろしいでしょうか?

Runtime.getRuntime().exce(new String[]{"cmd.exe","/C","cd C:\hoge","hoge.exe"})

hoge.exeが自分のルートにファイルを出力する為、カレントディレクトリを移動しなければならず
この処理を含む実行ファイルをhoge.exeのフォルダに置くのは避けたいです。


734:デフォルトの名無しさん
08/02/24 19:37:52
ProcssBuilder にカレントディレクトリ指定できるものがあったとオモ

735:デフォルトの名無しさん
08/02/24 20:04:50
JMenuBarの中にメニューを2つ追加し、それぞれのメニューの中に
同じ名前のJMenuItem、同じActionListenerをセットした場合、
それぞれのMenuItemが選択された際の処理を変えることは可能でしょうか

ネットや書籍を調べてみたところ、JMenuItemが選択されたイベントが発生した場合、
そのイベントの名前をgetActionCommandで取得し、条件分岐を行っていましたが
同じ名前のItemが存在する場合の条件分岐方法を見付けることができませんでした

諦めてそれぞれのItemに別々のActionListenerクラスをセットするしかないのでしょうか

736:デフォルトの名無しさん
08/02/24 20:07:51
getSourceとJMenuItemを==で比較するという手もある

737:デフォルトの名無しさん
08/02/24 20:21:18
同じ名前のJMenuItemってのが設計おかしくねえか?
見た目が同じだとしても場所とか違う識別子にはなるだろ

738:デフォルトの名無しさん
08/02/24 20:22:28
マルチキャストソケットを利用した、簡易チャットルームの
ようなものを作成しているのですが、現在接続中のユーザーを
表示させる部分がうまくいきません。

IPで表示させるのですが、取得の方法が悪いのでしょうか?
ユーザー表示部分だけなので、宿題スレでなくこちらで質問させて
いただきました。よろしくおねがいします。

URLリンク(rg550.hp.infoseek.co.jp)

739:デフォルトの名無しさん
08/02/24 20:30:45
うまくいかないでは解らん。
例外が発生するのか、処理がそこを通らないのか、ちゃんと情報を出せ。

あと、直リンできねーぞ

740:デフォルトの名無しさん
08/02/24 20:50:37
>>734
レスありがとうございます。
できればRuntime.getRuntime().execでやりたいと思うのですが、無理でしょうか?
やはりjdk1.5ならProcssBuilderを使った方が良いのかな・・・。


741:デフォルトの名無しさん
08/02/24 21:02:36
>>739
失礼しました。

特にエラーが出て処理が停止するというこはなく、
表示ボタンを押してもnullが返ってくるため
ユーザーのIPが上手く取得できていないのでは
ないかと思っています。

URLリンク(rg550.hp.infoseek.co.jp)
の217番にUPしてあります。

742:デフォルトの名無しさん
08/02/24 21:09:58
>741
System.out.println( "ユーザー表示ボタンが押されました" );
って行は通っているのでOK?
あとメッセージの表示は問題ない?
System.out.println( "アドレスを新規登録しました" );
って行は通ってないのか?

743:デフォルトの名無しさん
08/02/24 21:24:27
tomcat5.5
eclipse
を使用してwebアプリを作ろうと思っています。

一つのプロジェクトで複数のTomcatを動かそうと思っています。
この場合、ルートディレクトリが複数で
ソースの出力先フォルダ一つしか設定できません。

ということは片方のルートディレクトリにしか
サーブレットのクラスは置けないため、
片方のtomcatからしかソースを参照できません。

こういった場合どうすればよいでしょうか。

744:デフォルトの名無しさん
08/02/24 21:38:05
早速見ていただきありがとうございます。

>>742
>System.out.println( "ユーザー表示ボタンが押されました" );
の部分はシステムコンソールに表示されているため
通っているものと思われます。また、メッセージも
""で囲まれている部分はきちんと表示されています。

>System.out.println( "アドレスを新規登録しました" );
この行もシステムコンソールでは表示されているので
通っていると思うのですが・・。

745:デフォルトの名無しさん
08/02/24 21:39:48
すまんがだれか、>>743をエスパーしてくれ。
何となく解る気もするが、
なんで、エクスポートしたwarファイルをもう一つのTomcatに置くのではダメなのかが解らない。


746:デフォルトの名無しさん
08/02/24 21:43:33
>>743
何のためにそれをするのか知らないがeclispeはtomcatのラウンチャーじゃない
tomcatは別途立てて、そこにDeployするべき
あとeclipseの1プロジェクトで複数のWebアプリケーションを動作させようというのも間違い
プロジェクトを分けなさない


747:デフォルトの名無しさん
08/02/24 21:50:47
>744
"現在の接続ユーザーは " + userlist + "\n"
の部分だが、JTextAreaにまったく反映されないのか?
中身だけが空なのか、どっちだ?

748:デフォルトの名無しさん
08/02/24 21:53:00
JDK 6 Update 4が落とせないんですが何が問題なんでしょうか。

エラーは承認することができないという内容で、いくつかの環境で試しましたが同様です。

749:デフォルトの名無しさん
08/02/24 21:53:30
>747
userlistの中身がからで
現在の接続ユーザーはnullです という表示になっています。

750:デフォルトの名無しさん
08/02/24 21:56:26
>>749
Chatroom#userlistに何も代入していない

751:デフォルトの名無しさん
08/02/24 22:02:11
>750
回答ありがとうございます。

userlist.add(clientAddr);

上記の文でアドレスが代入されるものと思っていたのですが、
この文の書き方では代入されていないということでしょうか?

752:デフォルトの名無しさん
08/02/24 22:03:12
それはローカル変数のuserlistであってChatroom#userlistではない

753:デフォルトの名無しさん
08/02/24 22:28:32
>752

ありがとうございます。入ってると思ってたものが
別のものだったのですね。

助かりました、ありがとうございました。

754:デフォルトの名無しさん
08/02/24 23:29:39
Class Parent {
 private int val;
 public getVal() { return val; }
 public setVal(int val) { this.val = val; }
 public Parent clone() {...}
}

みたいに、clone() を実装したクラスParentがあったとして、
これを継承した子クラス Child を作ります。
で、この Child でも clone() を実装したいのですが、
その Child#clone() はどうやって実装するのが普通ですか?

public Child clone() {
 Child c = new Child();
 c.setVal ( this.getVal() );
 ...
 return c;
}

と、親クラスの Parent#clone() の存在を完全に無視してもいいもんですか?
これだとどうもスマートじゃないような気がして、protected なコンストラクタを
親クラスに追加する、なんて方法も考えたんですけど、
典型的な手法があるのならばご教示ください。

755:デフォルトの名無しさん
08/02/24 23:35:47
>>754
class Parent implements Cloneable { 
 private int val; 
 public getVal() { return val; } 
 public setVal(int val) { this.val = val; } 
 public Parent clone() {
  try{
   return (Parent)super.clone();
  } catch(CloneNotSupportedException e){
   throw new RuntimeException(e);
  }
 }
}
class Child extends Parent {
 public Child clone() {
  return (Child)super.clone();
 }
}

756:デフォルトの名無しさん
08/02/24 23:40:36
Javaの勉強始めました。

アクセス就職子protectedについて理解が足りないので教えてください。
protectedつけることで、
『自分のクラス内のメソッド 又は 継承されたサブクラス内のメソッドからしかアクセスできない』
そのように直感的に感じたのですが、
間違っているようで。
public class Purotekuto {
public static void main(String[] args) {
Test21 hogehoge = new Test21();
System.out.println( "値を出力:" + hogehoge.protectedInteger );
}}
public class Test21 {
protected int protectedInteger;
Test21() {
this.protectedInteger = 0;
}
public void setValue( int value ) {
this.protectedInteger = value;
}
public int getValue( int value ) {
return this.protectedInteger;
}}
このコードでは、main()から、クラスTest21のメンバ、protectedIntegerにアクセスできずに、
エラーか何かになると思ったのですが、普通に動きました。
自分の考えの何がまずいのでしょうか。。。

757:デフォルトの名無しさん
08/02/24 23:45:28
>754
super.clone() を使うかどうかは状況次第じゃね?
というか、普通はsuper.clone()は使えない方が多いと思う。
帰ってくるのはParentクラスのインスタンスだから、結局は値をコピーしなければならなくなるから。

758:デフォルトの名無しさん
08/02/24 23:46:09
>>754
何のための継承、何のためのオーバーライド。
何がスマートじゃないんだ。感覚的に言われてもな。

ちなみに、cloneを使うなら、Cloneable を implements すること。
// 詳しくは Clonable, Object.clone 参照。

>>756
同じパッケージからもアクセスできるから。以上。

759:デフォルトの名無しさん
08/02/24 23:47:23
>756
もう1つ条件があって、「同一パッケージ内からのアクセス」もOK

760:756
08/02/25 00:01:54
758,759 ありがとうございます。

指摘を受けて調べました。
パッケージ化しないことには、ソースはばらばらのパッケージ的な扱いと、勝手に勘違いしていました。
デフォルトのパッケージ、という扱いになるのですね。
勉強になりました。

761:デフォルトの名無しさん
08/02/25 00:09:47
と言うかデフォルトパッケージの使用は避けてくれ。

762:デフォルトの名無しさん
08/02/25 00:11:27
>>757-758
ありがとうございます。
ちょっと理解できてきました。

763:756,760
08/02/25 00:18:14
>761
というと、必ず特定のパッケージに入れることを明示することが望ましいということでしょうか。
自分今回痛い目にあったので、761の指示に従って付いてまいりますが。

764:デフォルトの名無しさん
08/02/25 00:48:09
>>763
デフォルトパッケージ以外のパッケージに属するクラスから
一切呼び出しが出来ない。(JDK 1.4 以降)

プログラミングの一般論としても
何らかの名前空間に所属させるのは
良い習慣だと思う。

765:デフォルトの名無しさん
08/02/25 01:00:16
>>754
普通はコピーコンストラクタを作る
Cloneable は Java の失敗作とジョシュアっちが言ってました


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4256日前に更新/275 KB
担当:undef