[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 04/11 16:27 / Filesize : 251 KB / Number-of Response : 860
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

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



1 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:35:28 ]
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
www.wikiroom.com/java/

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

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
【初心者】Java質問・相談スレッド98【大歓迎】
pc11.2ch.net/test/read.cgi/tech/1171787388/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。pc10.2ch.net/hp/

次スレは>>980あたりで。

381 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 17:26:30 ]
Javaでは多重継承できないから属性を表すような実装はInterface
一方、デフォルト実装を与えたい場合などはabstract class

382 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 17:47:50 ]
このクラスは○○というメソッドを持っているよ→interface
このクラスをベースに○○というメソッドを使って機能拡張してね→abstract class

383 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 22:58:08 ]
型の継承 → interface
実装の継承 → abstract

384 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:05:27 ]
>>380
・ある性質に特有の処理が存在する。部分的に実装を共有できる。
 もしくはどうしてもある種の実装が必要だ。
(interface は実装をもてない。abstract class はもてる。)
・その性質の出現する場面が予想できる。もしくは限定した局面でしか使用しない。
(あとから再利用を試みる場合、interface の方が制約が少ない。
 abstract class だと、別のクラスの継承が必要な時にはもう使えない。)

上記を満たすなら abstract class。
制限をかけることによって(考えることを減らすことで)実装を容易にしたい場合も。

それ以外は interface。
interface の方がより純粋。制限が少なくて柔軟性が高い。
反面、実装の手間が多くなる。

最近は「とりあえずinterfaceにしとけ」な気がする。
実装に関してはヘルパークラスやテンプレートクラスを内包して、
そっちに処理を転送する方法で、継承と大差ない手間で済む。
その上で拡張性を保てる。

GUIフレームワークの基本部品なんかは abstract class ベースのものが多い。
画面表示に関する基本実装がどうしても必要とかそんなんだろうか。

385 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:08:57 ]
非オブジェクト指向言語だからといって
オブジェクト指向的にプログラムがかけないことはないように、
abstract class を interface代わりに使ってプログラムは書けるだろうけど、
そんな悲しいことは普通はしない。

386 名前:デフォルトの名無しさん [2007/03/13(火) 23:27:22 ]
x64で動作するeclipseってあったっけ?
もしくはjava用のIDE


387 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 23:34:38 ]
>>380
interfaceを作って、abstract で骨格実装(デフォルトの実装)を作って、
多くの実装クラスを骨格実装を継承するようにすると
柔軟な構造になるよ。ひと手間掛かるけど

388 名前:380 mailto:sage [2007/03/14(水) 00:14:01 ]
なるほど…
デフォルト実装の必要性と、プログラムの柔軟性との兼ね合いってことでつね。
みんなありがd

389 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:38:02 ]
>>333
不変クラスつくればいいだけだろう。
あれでconstなクラスは作れる。
無理って事は無い。



390 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:39:26 ]
>>324
配列の中身が書き換えられないように、
Collections.unmodifiableList()を使うとか、

clone()を使うとか、考えようぜ。
IBMのdwで、不変クラスで検索してみ。
constに相当するものを作る方法がのってる。
Wikipediaの「イミュータブル」でも検索してみると良い。

391 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:39:54 ]
>>327
しばらくスレを見ていなかったので>>322のことにまだ気づかなかっただけだ。

392 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:41:03 ]
>>332
それは、Effective Javaでは禁じ手とされているものだぞ。

攻めて、enum型にせよ。enumが駄目ならfinalでコンストラクタがprivateなクラスを。

393 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:41:49 ]
>>337
定数インタフェースは、勝手に実装されることがあるからやめとけ。

394 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:41:58 ]
public class Hello
{
public static void main(String args[])
{
System.out.println("Hello!");
}
}

395 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:43:43 ]
>>343
代替手段があるからいらないんだよ。
constは余計なゴミなんだよ。ゴミ。
全てを不変にしたくないときはfinalのほうが柔軟性が効くんだよ柔軟性が。
部分的に可変にしたほうがよいこともあろう。


>>345みたいな浅はかでお馬鹿なC言語厨には理解できないが。

396 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:44:43 ]
>>351
FindBugsを使え。そういう問題が起きても
困惑することは無くなるだろう

397 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:47:22 ]
>>375
switchは総ナメ野郎の糞だから


398 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 00:53:34 ]
>>395
防御的コピーって知ってる?
代替手段がないからこんなことしないといけないんだけど。

399 名前:デフォルトの名無しさん [2007/03/14(水) 01:06:51 ]
質問なんですが、下記のようにジェネリクスを使ったインタフェースを使って
実装クラスを書くと意図したように実行まで行えるのですが、
アノテーションを入れるとメソッドのオーバライドをしていないと怒られてしまいます。
これはアノテーションが間違っているのでしょうか?
それともアノテーションを使っていない方はたまたま実行まで出来てしまっただけで、
本来ならコンパイルが出来ないはずなのでしょうか。

public interface Base<T>{
    public void print(T data) ;
}

public Derived implements Base<Integer> {
    public void print(Integer data ) {
        System.out.println(data.toString() ) ;
    }
}



400 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:23:52 ]
>>399
Derived のメソッド定義に @override をつけたものとして話を進めるけど
それはオーバライドじゃないから怒られる。ジェネリクス関係ない。

401 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:42:18 ]
>>398
不変じゃなかったら、constつけてても防御コピーしなきゃだめだろ

402 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 01:56:36 ]
>>401
残念ながらC++のconstは防御的コピーする必要はない。

403 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 02:20:34 ]
勝手にコピーされるから?
不変でないオブジェクトは、明示的にせよ暗黙的にせよコピーしないと、
中にしまいこんだはずのオブジェクトを勝手に編集される可能性がある。

404 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 02:42:49 ]
不変バージョンと可変バージョンが1つのクラスで定義でき、
const つけると不変クラスとして使えるってことか?

たしかに、両方のバージョンをそれぞれ作るのは面倒

405 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 02:43:16 ]
超初心者です。。midiを内部で生成して再生するプログラムを作ろうと、ググっていて
java-house.jp/ml/archive/j-h-b/039552.html
の話を見つけました。確かに
  static byte test [] = new byte [] {0x7f, 0x80};
とやってみると、0x80以上を代入しようとすると「精度が落ちている可能性 期待値int」
とか言われてしまいます。

リンクにあるようにjpgBuff[j] = (byte)jpgBuff_i[j];で変換すると正しく扱えるようなのが不思議です。

>しかし int に入れておいて byte にするというのは、意味がないように
>思います。というか、int でできるなら byte でソースに埋めこんでも
>できなきゃおかしいですよね。ただ代入しているだけなんだし。何か
>その辺もおかしいのでは?
とあるように0xffまではbyteで扱えるはずですよね?

0x80以上をbyteな配列に代入するにはどうすればいいんですか?

何か勘違いをしているようでしたらご指摘をお願いします。。

406 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 02:58:05 ]
byte は 0 〜 255 じゃない



-128 〜 127 なんだよ……

407 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 03:04:54 ]
>>405
> とあるように0xffまではbyteで扱えるはずですよね?
違う。byteは -128〜127まで。
キャストを使って符号を無視するように明示しないかぎり byte では 255(0xFF) は扱えない。

> 0x80以上をbyteな配列に代入するにはどうすればいいんですか?
直接的にはキャストを使う。

間接的には String から byte配列に変換するようなユーティリティメソッド作るとか
"\u007F\u0080".getBytes("ISO8859-1"); みたいに文字列リテラル使ってみるとか。

408 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 03:21:44 ]
>>406-407
ありがとうございます。

>直接的にはキャストを使う。
java-house.jp/ml/archive/j-h-b/026824.html
を参考に  byte b = (byte)0xff;
でエラーが出ないことは確認できました。

配列の場合は
 static byte test [] = (byte []) new int [] {0x7f, 0x80};
とかやってみたんですが、どうもうまく行きません(変換できない型)
これは後出しで変換するしかないんでしょうか?

409 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 03:24:00 ]
static byte[] test = new byte [] { (byte)0x7f, (byte)0x80 };



410 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 03:33:54 ]
なるほど、確かにうまく代入されています。

ただ毎度面倒くさいし、見掛けも悪いのであらかじめ
-128 〜 127 の数値で扱うようにしておいたほうが
良いかも、と思いました。。。

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

411 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 04:26:00 ]
UByte 型作っちゃいなYO

412 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 05:30:50 ]
ejbってもう誰も使ってないの?
みんなjspで力つきたのか? phpレベルの底辺が好きなんだね。

413 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 08:25:06 ]
>>412
ばかめ!EJB2は死んだわ!

414 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 09:01:03 ]
誰かこれを解説してください。
>3個の数字の並び替えの場合、その並び替えは 3! = 3 * 2 * 1 = 6通り、
>ですが、1回だけ shuffleを行う際に使っている j、k の選び方は 36 通りです。
>つまり、これが6通りの並び替えのどれかに対応します。
>しかしながら、 (36 ) ÷ ( 3 ! )は割り切れないのでどれかの並び方に偏ってしまうということがわかります。
blogs.sun.com/javaev/

415 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 09:31:16 ]
>>414
実際に並べかえてみりゃわかるよ。小学生並の解き方だけど。

例えば、
> for (int i = 0; i < a.length; i++)
を削った場合、j,k は 9通り(3^2)で、実際に並べ替えてみると
j=1::k=1:A、B、C, k=2:B、A、C, k=3:C、B、A
j=2::k=1:B、A、C, k=2:A、B、C, k=3:A、C、B
j=3::k=1:C、B、A, k=2:A、C、B, k=3:A、B、C

出現確率はこんな感じに偏る。
A、B、C::3/9,
A、C、B::2/9,
B、A、C::2/9,
B、C、A::0/9,
C、A、B::0/9,
C、B、A::2/9

続きは自力で。

416 名前:414 mailto:sage [2007/03/14(水) 09:37:37 ]
>>415
ありがとうございます。助かりました。

417 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:24:34 ]
作成したjarファイルを、JREが必要無い状態で、exe形式で実行したいと考えています。
検索してみたところ「JET」なるコンパイラが見つかり、
「パーソナルエディション」なら個人に限り無料で使用できると聞いたのですが、
公式サイト内を探してみてもパーソナルエディションが見つかりません。
ひょっとして配布終了してしまったのでしょうか?

418 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:36:12 ]
>>398
知っとるわい馬鹿

419 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:37:18 ]
>>402
constするとその内部にあるものまですべてfinalになるなら
部分的にconstにできるfinalのほうが柔軟性が良いんだけどね。





420 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:38:42 ]
>>417
ないっぽいね。exe化はあきらめて、JSmoothかexewrapあたりにしておくのが吉。

421 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 16:52:00 ]
double型からint型に変えるやり方はあるのですが
逆にint型らdouble型にかえるやり方があるのでしょうか?
一応double型からint型に変えるやり方を参考にして
やってみたのですがどうもエラーがでるようで・・・」

422 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:00:15 ]
何をやった。
意図していた結果 / 実際の結果

を具体的に書くといいぞ。

double doubleValue = (double)100; と書いたらコンパイル時に〜という
メッセージが出ました、とか。


423 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:16:08 ]
public class Henkan{
public static void main(String[] args) {
double s = 5.0;
int i = (int)s;
System.out.println(i);
}
}

これを参考にしてdoubleをint、intをdoubleにすれば変換できると
思いやってみたのですが結果
Henkan.java:3: 精度が落ちている可能性
検出値 : double
期待値 : int
int s = 5.0;
^
エラー 1 個

になってしまいまして、どうすればいいのがわからないです。


424 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:26:26 ]
>>423
ttp://www.google.com/search?rls=ja&q=java+int+double+%E5%A4%89%E6%8F%9B&ie=utf-8&oe=utf-8

425 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:27:15 ]

intとdoubleを入れ替えたということは
int s = 5.0; // A
double i = (double)s;
としたわけだな?

今回の目的はintをdoubleに変換することなんだよな?
Aの行で確かに精度が落ちている。
intなんだからただの5でないといけない。


426 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:27:40 ]
>>423
> int s = 5.0;
5.0 は浮動小数点リテラルで、型は double だから、
int に代入するにはキャストしないとダメ。
int s = (double)5.0;

もしくは、整数リテラルを使って
int s = 5;

427 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:28:32 ]
× int s = (double)5.0;
○ int s = (int)5.0;

428 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:39:05 ]
解決できました!みなさま即レスで返していただきありがとうございました!

429 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:43:22 ]
doubleにintを代入するときはそのまま入っちゃうのは、
情報欠落がないから。

プリミティブの
ワイドニング変換(widening primitive conversion)
ナローイング変換(narrowing primitive conversion)
というのを調べるといいかも。




430 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 17:53:17 ]
初心者はこのJava入門(Wikibooks)を読むべし

ja.wikibooks.org/wiki/Java/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AE%E6%BA%96%E5%82%99


431 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:19:30 ]
>>417
gcjとかはどうよ?

432 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 18:40:46 ]
> doubleにintを代入するときはそのまま入っちゃうのは、
逆?

433 名前:417 mailto:sage [2007/03/14(水) 19:24:05 ]
>>420
>>431
ありがとうございます。>>431さんがおっしゃっているgcjを試してみたいと思います。
プログラム自体はSwingなんですが、gcjはSwingはダメなんですね。
この機会にSWTも勉強してみようかと思います。
ご親切にありがとうございました。

434 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 21:46:31 ]
>>433
JRE無しでないと駄目な理由は?
たぶん他の代替手段も、各種DLLが必要になってくると思うけど・・・

435 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:13:15 ]
>>429
doubleにlongを代入するとき、そのまま入っちゃうのは何故?
情報欠落があるのに。

436 名前:デフォルトの名無しさん mailto:sage [2007/03/14(水) 23:23:36 ]
>>435
int→floatでも情報損失があるけど言語規定上問題なく拡大変換される。
プリミティブ型の拡大変換は情報損失の有無に関わりなくコンパイル時も実行時もエラーを発生させない。
だから、変換の可否は情報損失とは関係なく、言語仕様でそうなっていると言うべき。

437 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 00:59:22 ]
double d = Double.valueOf(args[i]);とdouble d = Double.valueOf(args[i]);の違いって何かあるんですか?

438 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:08:10 ]
>>437
その2つ、全く同じに見えるけど。

439 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 01:08:24 ]
なにもない



440 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 03:31:34 ]
他スレで質問したのですが、
スレの進行が滞っているのでこちらに書きます。

class C1{
}

class C2 extends C1{
  void f(){
    System.out.println("f() is executed.");
  }
}

class Example{
  public static void main(String args[]){
    C1 obj = new C2();
    obj.f();
  }
}

上記のプログラムをコンパイルすると、
「メソッド f() はclass C1 で見つかりません。」
というメッセージが出てコンパイルエラーとなりました。

あるクラスの変数によってサブクラスのオブジェクトを参照する場合、
そのオブジェクトが呼び出すメソッドは、スーパークラスでも宣言されている
オーバーライドメソッドでなければならないということですか?

441 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 03:51:11 ]
>>440
>    C1 obj = ほげほげ
>    obj.f(); 

2行目は、C1 の f() を探す。

442 名前:440 mailto:sage [2007/03/15(木) 04:33:07 ]
>>441
なるほど、あくまでその変数のデータ型に基づいてメソッドを選択するってことですね。
どうもありがとうございました!

443 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 09:46:06 ]
見つかって呼ばれるメソッドは変数のほうではなく、
オブジェクトに定義されているもの。


444 名前:デフォルトの名無しさん [2007/03/15(木) 12:12:22 ]
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(name)));
try {
...
} finally { reader.close(); }

とかって、素直で読みやすいコードだと思うんですが、
InputStreamReader や BufferedReader のコンストラクタで例外が発生したら
name のファイルが開きっぱなしになってしまいますよね?
(実際はもっと複雑なフィルタがかぶさってます。)

↓みたいに FileInputStream だけ別の変数にしとかないといけないんでしょうか?

FileInputStream file = new FileInputStream(name);
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(file));
try {
...
} finally { reader.close(); }
} finally { file.close(); }

close() がダブってるんでキモイのと、これだともしかしてさらに
InputStreamReader でもう一段 try しないといけないのかも・・・と、
なんだか釈然としないです。

445 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:27:25 ]
以下のようなソースがあった場合、
readerでIOExceptionを発生させるには読み取り権限がないファイルを渡すことでテスト
FileNotFoundExceptionを発生させるには存在しないファイルを渡すことでテストしようと思いますが
writerでIOExceptionやclose()メソッドでIOExceptionが発生した場合、
JUnitでどんなコードを書いたらよいのかがわかりません
よろしくお願いします
public String read(String name) {
  Reader reader = null; StringWriter writer = null;
  File file = new File(name);
  try {
    reader = new InputStreamReader((new FileInputStream(file)));
    writer = new StringWriter();
    int c;
    while ((c = reader.read()) != -1)
      writer.write(c);
    return new String(writer.toString());
  } catch (FileNotFoundException e) { System.out.println(e.getMessage());
  } catch (IOException e) { System.out.println(e.getMessage());
  } finally {
    try {
      if (writer != null)
        writer.close();
    } catch (IOException e) { System.out.println(e.getMessage()); }
    try {
      if (reader != null)
        reader.close();
    } catch (IOException e) { System.out.println(e.getMessage()); }
  }
  return null;
}

446 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:29:56 ]
>>444
tryブロックの外で、closeすべき変数を null を初期値とし、まとめて宣言する。
finally で、null チェックして逆順に close を呼び出す。というのはどうでしょう

ラップしてる変数の close 処理がうまくいくことを前提にするなら、
if文をネストして、null ではない一番外側の変数だけでcloseを呼び出す。
と言うのもありかも?

447 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:33:56 ]
>>444
1.5 以降なら、
www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36027&forum=12&start=15
の、かつのり氏の StreamUtils#close みたいなユーティリティメソッド作って、

FileInputStream file = null;
BufferedReader reader = null;
IOException e = null;
try {
 file = new FileInputStream(name);
 reader = new BufferedReader(new InputStreamReader(file));
 //....
}catch(IOException ex){
 e = ex;
}finally{
 StreamUtils.close(e, reader, file);
}
みたいにするとか。

1.4までだと java.io.Closeable がないから この方法は使えないんだけどね。

448 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 12:45:55 ]
>>445
InputStream を渡すメソッドだったら簡単だけど。
djUnit の Virtual Mock Objects 使ってみるとか?

449 名前:デフォルトの名無しさん [2007/03/15(木) 14:13:34 ]
質問です

画面に文字列を出力させるときに、その表示を一文字ずつ
順番に表示させるのって可能ですか?

例:ありがとう
と出力させるとしたら、「あ」が表示されて、少し待って「い」
みたいな感じです



450 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 14:21:45 ]
可能不可能でいえば可能。

画面てのがコマンドプロンプトなどのキャラクタ表示装置なのか
ウィンドウなのか、ウィンドウの中のテキストフィールドなのか
などによってやり方は違う。


451 名前:デフォルトの名無しさん [2007/03/15(木) 14:43:08 ]
アプレット上にパネルを置いて、そのパネルでmouseWheelMovedイベントを拾うプログラムを作っているのですが
アプレットの外の部分(HTMLで文字などを表示してるところ)をマウスクリックすると
パネル上でマウスホイールを回してもmouseWheelMovedイベントが来ません。
何が問題なのでしょうか?


452 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:20:00 ]
Java 1.6.0のソースのStringの部分を眺めていたら、public String toUpperCase(Locale locale)の部分(2556行)に

/* Now check if there are any characters that need to be changed. */
scan: {
for (firstLower = 0 ; firstLower < count; ) {
(ry
}

という部分があったのですが、このscan: {}はどういう意味ですか?

453 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:38:36 ]
>>451
自分のウインドウの外の出来事を、しかもアプレットが知ることが出来たらやばくね?

>>452
ラベル:
ループの中でbreakやcontinueしてたりしない?



454 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 17:53:03 ]
>>453
そうでなくて
パネル上にカーソル移動→マウスホイール動かす→イベント上がる
のに
パネルの外をクリック→パネル上にカーソル移動→マウスホイール動かす→イベント上がらず
ってことです。


455 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 18:14:23 ]
マウスホイールって入力フォーカスのあるコントロールに通知されるんじゃなかったっけ?
なんかそれを変更するツールがあったよーな。

456 名前:デフォルトの名無しさん [2007/03/15(木) 19:29:56 ]
すみません、質問なのですが。自分、去年末あたりからプログラミング(java)
を学び始めたのですが、DBをjavaのプログラミングで弄る技術は必須でしょうか?


457 名前:デフォルトの名無しさん [2007/03/15(木) 19:37:35 ]
>>456 使わないなら不要、使うなら必要。

458 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 19:50:43 ]
何故こんな質問が出るか想像してみた。
 1.誰かからできないといけないと言われた
 2.その手の本を読んで、「javaでDBを使ってみよう」という所で詰まっている
 3.ネットでDBを使う例をよく見かけるので必要かと思った
 4.面接で「javaはひととおりできます」と言ってしまったので入社前に「ひととおり」というのはどの程度か知りたい

で、>>456が聞きたいのは「javaでDBを弄る技術がないと役立たずなのか」って事ではないだろうか。

459 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 19:58:17 ]
>>456
ヒント:いまどきRDB使わない業務アプリはほとんどない。



460 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:02:45 ]
>>456
その質問はこんな感じ。
「すみません、質問なのですが。自分、駅前商店街のあたりで料理屋を探していて、さて
これから適当な店に入ろうというところなのですが、食前にワインを注文すべきでしょうか」

吉野家でワインを注文するひとは少ないと思われ。

461 名前:デフォルトの名無しさん [2007/03/15(木) 20:04:50 ]
>>458ええ、最近とうとうeclipseを導入したのですがHSQLDBを起動するためのソースが
eclipse上で上手く動かないのです。んで考えた末に出た結論がHSQLDBplugin
テキストエディタの時は上手く動いたのに何でだろorz クラスパス等の考慮は
完璧なんですが・・・

462 名前:デフォルトの名無しさん [2007/03/15(木) 20:12:45 ]
やっぱり、eclipse破棄してテキストエディタでソース組むようにします。
eclipse使ってると技術が退化する。

463 名前:デフォルトの名無しさん [2007/03/15(木) 20:18:42 ]
>>462
作業効率が落ちると消化できる量も当然減るわけで一概に技術が退化するとは思えない。
要するに
「コアな部分を解釈するか」
「作業効率を上げて色々な技術に触れるか」
方向性の違いじゃない?

464 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:23:53 ]
eclipseもプログラム言語もプログラマーにとっては道具
どのような道具を使えば望んだ結果が得られやすいのかが一番重要

465 名前:デフォルトの名無しさん [2007/03/15(木) 20:30:16 ]
そうですね。eclipseは構文エラーなどをした時、その場で教えてくれるので
とても便利ですよね。じゃあ、どういった種類のソースを組むのかによって
使い分けることにします。

466 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:51:53 ]
経験の浅いプログラマは、たまにはテキストエディタで書いて
いろいろ振り返ってみるのも良いと思う。
「退化する」ってのは、本当は退化じゃなくて基礎があやふやになるということ。
ある程度の経験があって基礎がしっかり固まっている人はIDEを使ったところで
「退化」なんてしないし作業効率が上がるので、どんどん使えばいい。
そういう人は仮にIDEが使えない環境下で作業しなければいけない場面でも
問題なく普通に対応できる。


467 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:54:21 ]
要するに何が言いたいかっていうと
>>462は半年ROMってろってことですね

468 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 20:56:02 ]
IDE使うと楽にコーディングできるからテキストエディタには戻れなくなる。
覚えていなくてもいいことは人は忘れるものだ。

469 名前:461 [2007/03/15(木) 21:06:35 ]
すみません、続報ですが、テキストエディタで組んだ奴は上手くDBに接続できたので、
そのソースをeclipseにコピーして実行したら上手く接続できました。
どうやら原因は私がeclipseに甘えていたことのようです。orz



470 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 21:07:47 ]
>>466
文法をしっかり覚えている=プログラマとしての経験が豊富
みたいな口ぶりだな。

471 名前:461 [2007/03/15(木) 21:16:25 ]
下らない審問ばかりで申し訳ないのですが、私まだjavaしか使えないので
これからc,c++学ぶ予定なのですが、もしそれらの言語でGUIプログラムを組むとき
流れは( ContentPaneを拾得したり、JButtonなどを宣言する流れは同じなのでしょうか?

472 名前:461 [2007/03/15(木) 21:33:22 ]
c,c++学ぶときのお楽しみって事で。Σ(´∀`;)

さっきの原因が分かりました。hsqldb/libにあるjarファイルを2つとも
importしてたのが原因だったようです。盲点でした・・・

473 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 21:36:28 ]
>>470

いや、>>466の言いたいことは文法だけじゃなく開発全般にわたっての事ではないかと。
IDEでやっていることをIDEなしでもちゃんとできるようになろうよ、と。
それができれば自ずとプログラマとしての力もつくんでないの?
IDEなしで開発していると思いがけずいろんなものが見えてくることもあるし…

474 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:30:44 ]
C++でGUIプログラム組む時は基本的にMFCまたはWTL/ATLを使う。
詳細はググるように。
.NETの場合はFormsとWPFがあります。
FormsはVBの流れをくんだ開発手法でWPFはJSPやASPの流れを組んだ開発手法と思えば良いと思う。

475 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:34:04 ]
俺C++がメインでJavaは素人だからトンチンカンなこと言ってるかもしれないけど……
例えばある変数がintだったかlongだったかで手が止まるとか、
20文字の変数名を手入力して間違えてコンパイルエラーとか、
ある関数の内容を確認するときにいちいち検索が必要になるとか、
もうナンセンス極まりない話だと思う。
それじゃ自分が常に全体を把握できる程度の規模のプログラムしか書けないよ。
断言できる、統合環境と技術力とは一切関係がない。

476 名前:461 [2007/03/15(木) 22:38:01 ]
さっきのHSQLDBのことですが、pc再起動してもう一度実行してみたら
IllegalStateExceptionと出てまた失敗しました。
成功してたのに・・・バグ?(´・ω・`)

477 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:44:00 ]
>>476
APIでは、
public class IllegalStateException
extends RuntimeException
不正または不適切なときにメソッドが呼び出されたことを示します。
すなわち、Java 環境または Java アプリケーションは、要求されたオペレーションに適した状態ではありません。

設定ファイルやOSセキュリティなどで
サーバ・データベースの連携がうまくいってないのでは?


478 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 22:56:05 ]
全自動洗濯機があるんだから洗濯板の使い方なんてどうでもいいよ

479 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 23:02:05 ]
そういう奴は全自動洗濯機の性能評価・製品評価もできず、
自分が何をやっているのかも理解できない
いわれるがままに作業する全自動ロボットでしかないわけだが。



480 名前:475 mailto:sage [2007/03/15(木) 23:11:34 ]
>>479
比喩を比喩で返すのは別にいいんだけどさ、
それは一体何を言わんとした比喩なの?
ある変数にカーソルを合わせたら「int」と出た、
じゃあこれはintなんだなと理解し、それに応じたコードを書き進めることが、
あるいはある関数で右クリックしてメニュー出して左クリックして
その関数の宣言されている場所に一気にジャンプして編集することが、
果たして「言われるまま作業する全自動ロボット」とまで
蔑まれるほど程度の低い行為だとはどうしても思えないんだけど。
君の言う「本当の」プログラミングって何よ?

481 名前:デフォルトの名無しさん mailto:sage [2007/03/15(木) 23:18:55 ]
>>444
>InputStreamReader や BufferedReader のコンストラクタで例外が発生したら
ドキュメントには何も書いてないけど、
チェックされない例外やエラーが発生するかもしれないん?

closeは一番外側を閉じると、元まで伝播するんじゃなかったけ。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<251KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef