07/08/07 10:17:14
URLリンク(www.vipper.net)
この中で削除して良い物は在りますか?
361:デフォルトの名無しさん
07/08/07 10:25:39
>>360
JRE が一つでもあればいいのなら、赤線の枠内は全部削除して良い。
J2RE5 が一つはあった方が良いなら、赤線の枠内は
J2SE Runtime Environment 5.0 update11 残して全部削除。
362:デフォルトの名無しさん
07/08/07 10:37:28
>>359
限りなくバグに近いだろう、例外の握りつぶしとかと同じレベル
極端な話、引数は自然にfinalでもいいだろうと思う
363:デフォルトの名無しさん
07/08/07 10:39:32
ついでに、6 の Update 2 があるんだから、
6 の Update 1 も削除していいんじゃない?
364:デフォルトの名無しさん
07/08/07 10:40:02
理由も無しに「バグに近い」とか言われても。夏だなぁ、としか。
365:デフォルトの名無しさん
07/08/07 10:50:36
理由も解らないなんて夏だな
366:デフォルトの名無しさん
07/08/07 10:50:39
>>362にとってはバグなんだろ
そっとしといてやれ
367:デフォルトの名無しさん
07/08/07 10:59:07
どっちでもいいんだけど、そもそもバグの定義ってなんだ?
368:デフォルトの名無しさん
07/08/07 12:25:51
質問よろしいでしょうか。
ある文字列をキーに検索を行うプログラムを作っています。
その文字列のキーをワイルドカード(一文字マッチは"?"で行います)でも使用できるようにしたいと思い、文字列を末尾から"?"に置換するメソッドを作りました。
String value = "AAAAA";
int len = value.length();
for (int i = 0; i < len; i++) {
String s = exec(value, len, i);
// 検索処理
}
public String exec(String _s, int _len, int _i) throws Exception {
StringBuffer sb = null;
try {
sb = new StringBuffer(_s.substring(0, _len - _i));
while (sb.length() < _len) {
sb.append("?");
}
return sb.toString();
} catch(Exception e) {
throw e;
}
}
369:デフォルトの名無しさん
07/08/07 12:26:05
自分の思った通りにならなくて駄々をこねる状態にさせるもの
370:デフォルトの名無しさん
07/08/07 12:27:55
これでAAAAA, AAAA?, AAA??, AA???, A????という文字列から検索を行えますが、
このメソッドを以下のような文字列を返すメソッドにしたいと思います。
パラメータが"ABC"なら、(2 ** 文字列長)回のループで以下の文字列を順番に返す。
1回目:ABC
2回目:AB?
3回目:A?C
4回目:A??
5回目:?BC
6回目:?B?
7回目:??C
8回目:???
どなたかご教示頂けないでしょうか。
371:デフォルトの名無しさん
07/08/07 12:35:51
>>370
32文字以下に限るけど、
2^n 回ループで、iが媒介変数だとして、
「iのmビット目が立っていたらm文字目を?に置き換える」という処理を
n回やればいいんでは。
372:デフォルトの名無しさん
07/08/07 13:12:42
buildSearchKey とかが良いと思うんだ
373:デフォルトの名無しさん
07/08/07 13:23:56
>>370
import java.math.BigInteger;
import java.util.*;
public class A implements Iterable<String> {
private String s;
public A(String s) { this.s = s; }
public Iterator<String> iterator() { return new B(); }
private class B implements Iterator<String> {
private BigInteger i = BigInteger.ZERO;
private final BigInteger m = BigInteger.valueOf(2).pow(s.length());
private final int len = s.length();
public boolean hasNext() { return i.compareTo(m) < 0; }
public String next() {
if (i.compareTo(m) >= 0) throw new NoSuchElementException();
StringBuilder sb = new StringBuilder(s);
for (int j = 0; j < len; j++) if (i.testBit(j)) sb.setCharAt(len - j - 1, '?');
i = i.add(BigInteger.ONE);
return sb.toString();
}
public void remove() { throw new UnsupportedOperationException(); }
}
}
374:デフォルトの名無しさん
07/08/07 13:24:37
使い方はこんな感じで
import java.util.*;
public class C {
public static void main(String[] args) {
Iterator<String> iterator = new A("ABCD").iterator();
while (iterator.hasNext()) {
String s = iterator.next();
System.out.println(s);//本当はsを使って検索処理
}
}
}
375:デフォルトの名無しさん
07/08/07 13:28:05
簡単に書くならこうでもいい
for (String s : new A("ABCD")) System.out.println(s);
376:デフォルトの名無しさん
07/08/07 14:18:24
引数への再代入は否定せんが仮引数名から
(変数の役割が)意味が変わる再代入は反対だな。アレは書いた奴にしか読めん。
friend欲しいのは設計が悪い。
constはjavaでは無意味。
377:デフォルトの名無しさん
07/08/07 14:34:18
constっぽいものはJSR-308のサンプルにある
@Readonlyが追加されたら近い事が出来るようになるかも?
378:デフォルトの名無しさん
07/08/07 14:44:21
>@Readonlyが追加されたら近い事が出来るようになるかも?
generics組み合わせたりすると型名がやたら長くなるのはいただけないけど、
コーディングミスを考えるとやむを得ないか……
379:368, 370
07/08/07 18:02:05
>ご回答下さった各位様
ありがとうございます。
少々違った形での実装となりそうですが、無事に進められそうです。
// 検索キーの桁数を考慮しないと酷い性能に……orz
380:デフォルトの名無しさん
07/08/07 18:09:40
なんかよくわからんが、元の検索キーから正規表現を構築してそれで検索した方が簡単じゃない?
381:デフォルトの名無しさん
07/08/07 19:42:29
集計やイテレータを担う変数など、変化することが前提であるもの以外は、
引数を含むローカル変数は基本的に再代入禁止にした方がよいし、そうすることが可能。
外科手術に例えると、高度な手術は可能な限り無菌状態を保つことで初めて可能になる
と、どこかのお偉いさんが言ってたヨ
また、このリファクタリングは、他のリファクタリングを行う際の前処理にもなる場合もある。
例えば、ローカル変数の内容をメソッドから取り出すようにリファクタリングする際、
内容がメソッドの場所によって変わってたら困る。
382:デフォルトの名無しさん
07/08/07 20:34:27
明示的にコンストラクターを起動している間、インスタンス・フィールド name は参照できません
このエラーはどういうことでしょうか?
調べてもわからなかったです。すみません。
383:デフォルトの名無しさん
07/08/07 20:49:06
スーパークラスのコンストラクタが終わるまでのあいだ this は使えない。
例えば
class A {
A(int x){}
}
class B extends A {
int x = 10;
B() {
super( this.x ); // ← これ
}
}
384:デフォルトの名無しさん
07/08/07 21:34:25
「世界でいちばん簡単」なe本なのに…
50ページ目のコンパイルで躓いてます。
javacがなんかおかしいみたい。何故だろう?
385:デフォルトの名無しさん
07/08/07 21:35:20
そんな本もってないからわからない。
くわしく
386:デフォルトの名無しさん
07/08/07 21:40:22
最初の「プログラミングしてみる」
という項目で
//MyJava
class MyJava{
public static void main(String args[]) {
System.out.println("My Java Program");
}
}
と、テキストで打ちました。
で、コンパイルするんですが
387:デフォルトの名無しさん
07/08/07 21:45:49
コマンドプロンプトで
「cd c:\MyJava」
「dir」
「javac MyJava.java」
と打つと
「'javac'は、内部コマンドまたは外部コマンド、操作可能な
プログラムまたはバッチファイルとして認識されていません」
と出てしまうのです。
388:デフォルトの名無しさん
07/08/07 21:52:13
JDK をインストールしているかどうか、
インストールしているならそのインストール先を確認して、
そのインストール先の bin フォルダを環境変数 PATH に追加する。
・・・その手の設定方法って本に載ってない?
389:デフォルトの名無しさん
07/08/07 21:54:41
>>388様、ありがとうございます。
最初に、JDKのインストールと、PATHの設定が載ってました。
それは本の通りに進んでいたのですが…
390:デフォルトの名無しさん
07/08/07 21:56:13
質問させて下さい。
int型のデータ「0xC01A」からString型のデータ"\uC01A"に
変換したいのですが、どのようなやり方がありますでしょうか?
391:デフォルトの名無しさん
07/08/07 21:59:19
>>389
コマンドプロンプトで PATH って打って、
JDK の bin フォルダがちゃんと追加されているかどうか確認する。
エクスプローラーでマイコンピュータから C: → Program Files → ... ってたどっていって、
本当にそのフォルダが存在していて中に javac があるかどうか確認する。
392:デフォルトの名無しさん
07/08/07 22:00:02
>>391様、ありがとうございます。
早速やってみます。
393:デフォルトの名無しさん
07/08/07 22:03:02
>>390
int x = 0xc01a;
String s = "" + (char)x;
""+ ってのがなんかイヤだったら、面倒いけど
String s = new String(new char[]{ (char)x });
394:デフォルトの名無しさん
07/08/07 22:04:27
>>389
URLリンク(www.shuwasystem.co.jp)
正誤表出ているが、パスの設定を1.4のデフォルトでやったんだろう
395:デフォルトの名無しさん
07/08/07 22:21:49
>>390
String str = Integer.toString(0xC01A);
396:デフォルトの名無しさん
07/08/07 22:24:52
すまん、間違えた
String str = Character.toString((char)0xC01A);
だな
397:デフォルトの名無しさん
07/08/07 22:27:56
>>391様
C:\MyJava>path
PATH=C:WINDOWS\system32;C:WINDOWS;C:\WINDOWS\system32\Wbem;C:
\Program Files\pcbNavi\bin;C:\Program Files\Fujitsu\sa\dll;
c:\j2sdk_1.4.1_01\bin
と表示されました。
C: → Program Files →Java→の中にはjavacは無く、
C: → j2sdk1.4.1 01 →bin→javacとありました。
何か間違ったのでしょうか?
>>394様、ありがとうございます。
1.4.1 01を選んでダウンロードしたのですが…自信ないです。
398:デフォルトの名無しさん
07/08/07 22:31:06
アンダーバーの有無をよく確認してみて。
PATH の中の j2sdk_1.4.1_01 実は j2sdk1.4.1_01 が正しいんじゃない?
399:デフォルトの名無しさん
07/08/07 22:32:41
>>397
c:\j2sdk_1.4.1_01\bin\javac -version
ってコマンドプロンプトで打ち込んでみて
400:デフォルトの名無しさん
07/08/07 22:35:39
どうでもいいが、pathに設定してもろくな事ないと思うが・・・
401:デフォルトの名無しさん
07/08/07 22:39:51
>>390
new String(new int[] { 0xC01A }, 0, 1)
402:デフォルトの名無しさん
07/08/07 22:40:39
>>390
String s = "\\u"+ String.format("%x", 0xC01A).toUpperCase();
403:デフォルトの名無しさん
07/08/07 22:43:43
それなんか違うような・・・
ところで toUpperCase するなら %X でいいんじゃない?
404:デフォルトの名無しさん
07/08/07 22:52:02
>>398様、ありがとうございます。
j2sdk1.4.1_01 では通りませんでした。
>>399様、やってみます。
405:デフォルトの名無しさん
07/08/07 22:53:54
>>399様、「指定されたパスが見つかりません」となりました。
406:デフォルトの名無しさん
07/08/07 22:57:53
>>397 には javac のあるフォルダ名が j2sdk1.4.1 01 って書いてあるけど、1.4.1 と 01 の間は空白?
そうだったら PATH もそのように
一字一句同じ名前を入れてください
407:デフォルトの名無しさん
07/08/07 23:01:41
>>406様、すみません。_ありました。ここでの打ち間違いでした。
408:デフォルトの名無しさん
07/08/07 23:07:13
じゃあ、 >>397 の PATH には ...fujitsu\sa\dll; と c:\j2sdk... の間に改行が入ってるように見えるけど、
本当に改行やら無駄な空白が入っているのなら、取り除いてみてください。
409:デフォルトの名無しさん
07/08/07 23:18:09
>>408様、ありがとうございます。
もう一度やってみます。
410:デフォルトの名無しさん
07/08/07 23:25:49
>>405
エスパーしてみる
DドライブにJDK入っているとかじゃない?
エクスプローラーからjavac.exeを選んで、コマンドプロンプトにドラック&ドロップしてみてくれ
そこで表示されたパスをここにココにコピる
411:デフォルトの名無しさん
07/08/07 23:27:34
>>397
c:\j2sdk_1.4.1_01\bin
志村、sdkの後ろに_入ってるぞ
キーボードで入力するんじゃなくて、パスはコピー&ペースト汁
412:デフォルトの名無しさん
07/08/07 23:53:39
>>409
エクスプローラでアドレスバーを表示するようにしてないの?
413:デフォルトの名無しさん
07/08/08 01:05:36
皆様、ありがとうございました。
アンインストールしてもう一回始めからやり直してました。
そのおかげか、ソースコードを書き直したお陰か(本の文書の方では
『//MyJava』となってましたが、実際の画面を写した写真では『//MyJava.java』と)
PATHの方も、本を見るのではなく、>>411様の通りにコピペをしました。
何とか前進できました。
414:デフォルトの名無しさん
07/08/08 01:09:45
まずはWindowsの使い方から始めるべきだな
415:デフォルトの名無しさん
07/08/08 01:16:57
>>413
そんな違いよく見つけたね
でもコメントの違いはプログラムの動作に影響しない
416:デフォルトの名無しさん
07/08/08 01:17:41
>>414様、ありがとうございます。
頑張ります。
PC自体初心者なのに、訓練学校に入ってしまい今、毎日が勉強です。
今年中にブロンズとSJC-Aを取得するように言われていて…
努力しかないですね。
417:デフォルトの名無しさん
07/08/08 01:17:42
最近はコマンドプロンプトもbatもいらないからな
418:デフォルトの名無しさん
07/08/08 01:54:40
>>384
かわいそうだが、その本は地雷だから。
きみはもうしばらくしたら
本の通りにやったのですがエラーが出てしまいます。
精度が落ちている可能性
検出値: double
期待値: float
a = 2.0;
エラー 1個
という質問をするであろう。
スレリンク(tech板:354-364番)
419:デフォルトの名無しさん
07/08/08 07:12:47
独習が良いと聞き買ったが分厚いので持ち運びに不便であまり読まないwwwwwww