【初心者】Java質問・相談スレッド111【大歓迎】
1 :
デフォルトの名無しさん :
2008/01/13(日) 00:25:22 プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。
http://pc10.2ch.net/hp/ 過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/ これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
よくある質問
・「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath ・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド110【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1197710566/ /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝のう存じます。
次スレは
>>980 あたりで。
2 :
デフォルトの名無しさん :2008/01/13(日) 00:34:43
ニダ。
∧ b /●ヽ/ (∧_∧) / ̄ ̄ ̄ ̄ ̄ ( ´∀`)< しねよおめーら ( ) \_____ | | | (__)_)
>2つめの質問について。
>(5)です。
>
http://www.javainthebox.net/laboratory/J2SE1.5/LangSpec/Varargs/Varargs.html >とか、"Java 可変長引数"あたりのキーワードで調べれば?
>
>1つめの質問について。
>ちゃんと調べてないけど、コンパイル段階で
> それ1つだけ
>になってるんじゃ?つまり検索は発生しない。
「それぞれ1つだけ書いたら」というのは、その時は
method("str2");で、(1)(3)(4)のどれもが呼ばれますよね、
シグナチャとしてはマッチしてますよね、
ということの単なる確認(思考実験)です。
実際には(1)(3)(4)をオーバーロードメソッドとして書いて、
(1) public void method(String... s) {}
(3) public void method(String s) {}
(4) public void method(String s,int... i) {}
それからmethod("str2");します。
その時(1)が呼ばれるらしい事は分かっているのですが、
じゃ、(1)を削ったら(3)(4)どっち?と。
で、そもそもどういう検索順なの?と。
という事なんです(^^;
--
リンクは、見てみました(どうもありがとうございます)が、
第一引数から可変長をアーリーアクセス扱いの時期の
記事のようで・・・
可変長引数のあるオーバーロードメソッドの検索順の定義
までは追求なさってないようでした。
それと書き忘れましたがsuperからの継承かどうかも関係あるのかも・・・ というのもわかってません(^^;
7 :
デフォルトの名無しさん :2008/01/13(日) 03:14:35
質問です 文字列から数字だけを取り出そうとすると at java.long.Integer(Integer.java …) ってエラーがでます。 ボタンが押されたらサイトにアクセスしてhttpの文字列から数字だけを取り出すプログラムです
質問です、で始めるなら何を聞きたいか明確に述べなさい。
質問です。 いつになったらsunは符号なし整数を使えるようにしてくれますか? バイナリデータ扱うとすごく大変です。
NodeList を for でまわしてノード参照しながら、そのうちの特定のノードを削除とかすると NodeList の長さが変ったりするバカ仕様は何なの?
>>11 1999 年頃だったかな。IBM の何とかという日本人 (後に AlphaWorks に逝った) が Java の
お勉強に作った xml4j と言う XML パーサがデファクトスタンダードとして世に広まってしまって、
その頃からそういう動きだったよ。その後 Apache に引き継がれ Xerces と名を変え、今の
JDK の標準 XML 実装として使われている。だから XML 関連 API の C 臭さ、使いにくさ、
挙動の不自然さ全てこの日本人のせい。
13 :
デフォルト :2008/01/13(日) 09:35:55
javaのプログラマになったらどんな仕事がありますか?
バイナリデータと整数の符号の有り無しの相関関係がわからない
一番上のビットが+/-に使われるか使われないかの違い。 情報工学の本見れば必ず書いてある。
それは知っているけど、なんで大変なの?
byte の負値が暗黙変換で int に格上げされると上位 3 バイトのビットが全て立ってしまう (例: 0x80 → 0xFFFFFF80)。そのままビット論理和やビット論理積取ると想定外の結果に なるから、byte → int 格上げ時には必ず 0xFF でマスクしてやる必要がある。 だがこれを忘れてもコンパイルは通るし、負にならない限りは正しく動いてしまうからちょっと厄介。
実行時バグの追跡はしんどいからな
20 :
デフォルトの名無しさん :2008/01/13(日) 13:59:14
学校のjavaの課題むずい…
>18 普通はbyteのままでやるもんじゃないのか?
>10 ありがとうございます! 確かに・きっちり一致・autoboxing・可変長引数の順に拡張して 探していくとありますね。langspec-3.0.pdfの本ネタの方にも phase1,2,3で上記検索をしていくことが 15.12.2 Compile-Time Step 2: Determine Method Signatureに 書いてありました。助かりました!
そもそも私がおかしいと思って質問したのは、actualtests(笑)に QUESTION: 118 class Alpha { public void foo(String... args) {System.out.print("Alpha:foo ");} public void bar(String a) {System.out.print("Alpha:bar ");} } class Beta extends Alpha { public void foo(String a) {System.out.print("Beta:foo ");} public void bar(String a) {System.out.print("Beta:bar ");} public static void main(String[] argv) { Alpha a = new Beta(); Beta b = (Beta)a; a.foo("test");b.foo("test"); a.bar("test");b.bar("test"); } } answer: Alpha.foo Beta.foo Beta.bar Beta.bar とあったからです。 Alphaのfooはstaticじゃないです。煙が出るほどみましたから(笑)。
おかしいおかしいと考えていて、langspec-3.0.pdfも見ましたが 今回みたいにここの個所しか定義の記述がある分けないというところまで たどり着けないでいました。 ありがとうございます。 これは、一般化すると仕様の読みが足りないだけなので、 wikiはいいですよね。actualtests警告という事はあるかもですが。 ほんとうにありがとうございます。
>>21 byte 対 byte のビット論理演算は int。まぁ大抵はシフト演算 + ビット論理演算で併せて使うから、
想定外のところのビットが立ってるとおかしな結果になる。
一般的なのだと 4 バイト整数のバイトオーダー変換とか、8 ビットバイトバイナリを 6 ビットずつ
整数化するような処理考えてみ。
引用した035-055のQ118のactualtestsバージョンは070507でした。
>>21 バイナリ演算のつもりでやってても、式中で暗黙に int へ変換されてたりしてハマる事は結構多い。
バイナリをいじるコードを書くときは、しつこく ( b & 0xff ) と書いておいた方が無難。
というか、普通にこれはJavaの言語仕様が腐ってると思うんだけど、こういう仕様である必然性って何かあるのかね。
何でこんな仕様なの? と疑問に思ったら BugParade で検索するとすっきりする。 余計にモヤっとすることの方が多いかも知れんが。
30 :
デフォルトの名無しさん :2008/01/13(日) 19:10:00
int a=Integer.valueOf(str).intValue() が使えないんですけどどうすればいいですか?
>>30 1. 文末にセミコロンが入っているかチェック。
2. str に正しい値が入っているかをチェック。
3. a を正しく使用しているかチェック。
つーか valueOf(String).intValue() とかやるくらいなら parseInt() 使え。
>>29 それって、Cでバッドノウハウが使えちゃうことを説明しているだけで、
Javaで警告すら出ない理由にはなってないような・・・。
>>32 何に対してどういう警告を出せと言ってるの?
それを言われると確かに困るが・・・
Cから初めて、今Javaやってるのですが クラスやら継承やらが、複雑で…というか スパゲッティプログラムになりやすい?じゃヴぁって なんか、.がつくたびに、クラス見て戻って先に進めない。疲れる
そりゃCでも構造体とか関数使いまくれば一緒じゃ?
>>35 一般的にはJavaのほうがスパゲッティになりにくい。
>>35 が書きづらく思ってるのは単に慣れてないだけ。
下の方は、EclipseなりNetBeansなりでコードアシスト使えばいい。
あと、文面からしてクラスや継承を使いすぎてる感じがする。
必要のないところにまでそういう機能を使う必要はない。
Cからの人なら、最初はC的に書いて、徐々にOOPに置き換えていけば一番楽だと思う。
38 :
デフォルトの名無しさん :2008/01/13(日) 21:48:03
jarの中からjarが置かれているディレクトリを取得するにはどうすれば良いでしょうか new File(".").getAbsoluteFile(); で取得出来ると思っていたのですが cd /hoge /usr/java/jrexxx/bin/java -jar /usr/local/XXX.jar で取得出来たのはカレントディレクトリの/hogeでした・・・。
39 :
デフォルトの名無しさん :2008/01/13(日) 22:09:34
できないので諦めろ
>>39 ありがとうございます
System.getProperty("java.class.path")から無理やり取るか思案中です。
それとも.shとか.batとか用意してjarと同階層から起動すれば良いのか・・・鬱だ。
41 :
デフォルトの名無しさん :2008/01/13(日) 22:18:28
すみません。2回目の質問です。 現在googleカレンダーのjava用apiを勉強しているのですが、ライブラリのimport ができなくて困ってます。 コンパイルの際、必要なjarファイル(gdata-client-1.0.jarとgdata-calendar-1.0.jar) はちゃんと指定してるつもりですがimportしたパッケージが存在しませんというエラー が出てコンパイルが出来ません。 (コンパイルのコマンド) javac -classpath /home/〜/gdata-client-1.0.jar:/home/〜/gdata-calendar-1.0.jar GCAccessor.java (エラーメッセージ例) パッケージcom.google.gdata.dataは存在しません ・・・ 開発環境はOSはVineLinux4.1、jdkは1.6.0_03です。 ちなみに同じコードをwindowsでやった場合はコンパイル・実行できましたが linuxではコンパイルすらできません・・・。 ネットでいろいろ調べたのですが、原因が分かりませんでした・・・。 ここなら詳しい方がいそうなので、どなたか原因の分かる方教えていただけないでしょうか?
>>37-38 ありがとー
今、入門書系を片手に、チマチマサンプル弄くってる。
どうも、Cで慣れすぎてて。
privateやらそこらは理解できたけど、継承やらのところでウワー、うぜーとおもて
>>38 System.out.println(MyClass.class.getResource(MyClass.class.getName().replace('.', '/')));
44 :
ぽっぽ :2008/01/14(月) 01:25:11
入力ストリームですが、 BufferedReader rd = new BufferedReader(new InputStreamReader(System.in,1)); //第二引数のバッファサイズを1で指定 String str = rd.readLine(); System.out.println(str); //strの内容を表示 ↑の文で入力した内容を表示させたとします。 で、一行目でバッファのサイズを1で指定してるので、 1文字しか読込めないプログラムになったと思うのですが、 最後のprintで確認すると入力した分がそのまま表示されます。 バッファサイズが1なので abcdefg と入力すると a だけが表示されると思ったのですが、何か理解が間違ってますか?
間違ってます。 バッファサイズを何だと思ってるの?
>>44 バッファサイズというのは一度に読み込める量を決めるもので、それを超えて読み込めない
という制限をつけるものではない。
100 バイトのデータ読むのに 5 バイトのバッファを用意すれば 20 回も I/O が発生して
効率が悪いが、100 バイトのバッファなら 1 回で読み込める。逆に 1000 バイトのバッファは
使わないメモリ 900 バイト分の無駄。
>>44 str を洗濯機、入力した文字列を風呂の残り湯、
バッファサイズをバケツの容量と考える。
洗濯に必要な水が30リットルだったとする。
これに対してバケツの容量は5リットルだとしよう。
さて、君はあきら君にバケツを使って
洗濯機に風呂の残り湯を汲み移すように言いつけた。
バケツで5リットルしか汲めないので、
あきら君は洗濯機には5リットルを移して作業を完了した。
あきら君の仕事に満足できないと思えるなら
1文字だけ読み込むという動作が正しくないと理解できるはず。
いや、あきら君はポンプを使うべきだ。
>>48 それを言うなら、
仕事はあきら君ではなくポンプに行わせるべきだ
じゃね?
50 :
ぽっぽ :2008/01/14(月) 01:50:35
なるほど・・・。 strに格納できる文字数の上限かと誤解してました。 先輩方ありがとうございます。
>>47 質問者の期待する結果から違ってるんだからそんな例は意味がない。
>>11 NodeListってDOMの?
それならDOMのNodeListはライブオブジェクトだから。
変更はすぐさま反映される。そういう仕様。
>>53 XPath で取得した NodeList では反映さないので、仕様として甘いといわざるをえんがな。
それ実装の問題
DOM の状態が変る or ノード取り出すたびに XPath 評価しなおして反映させるのが 現実的なわけないんだから、NodeList を live とした時点で仕様が破綻してるのも分からんのか。
DOMだったら反映させても非現実的にはならんと思うけど。
ん、ひょっとして XPath がどれだけ遅いかご存知でない?
W3Cに文句言えよ。バカじゃないの?
XPath使ってない場合の話
暴れるだけだからバカの相手はしなさんな
>>59 仕様の問題か実装の問題かで何でいきなり W3C までエスカレーションすんだよw アホ?
W3C って API やらスキーマだけ規定して オナヌー してるところでしょ。 「俺たちは崇高な活動家。ありがたい API 作ってやったから勝手に 実装して使っとけ。実装側から提案なんてありえないw」 臭がとても強いところ。
あそこは今は大手 IT 企業のアーキテクト連中の肩書きアップの場になってる。 キャリア官僚が省庁や特殊法人渡ってるのとよく似てる。
うろ覚えの記憶なので恐縮ですが メソッドだか関数だかに変数を引数として渡した時、 呼び出し先でその引数に変更を加えることで、元の変数も同様に変化させるには どうすれば出来たんでしたっけ。戻り値を使ったわけではなかったと思います。
>>65 可変オブジェクトを、複製せず、そのままメソッドに渡せば良い。
リターンバッファという奴です。
68 :
デフォルトの名無しさん :2008/01/14(月) 12:51:57
>>67 それってもしかして、CやC++のポインタに相当する?
Jtableにて1列のみクリック不可(選択編集不可)にしたいんですが、 どうすればいいでしょう?
70 :
デフォルトの名無しさん :2008/01/14(月) 13:11:47
>69 JTableModel#isCellEditable
>>66-67 ありがとうございます。
一般的に参照渡しって言われるようなものですね。
>>70 様
早速のレスありがとうございます。
JTableModel#isCellEditable
とは、TableModeインターフェイスのisCellEditableを使えということでしょうか?
isCellEditableメソッドを調べますと
rowIndex、columnIndex に位置するセルが編集可能な場合に true を返します。
と出てきました。
import java.awt.*;
import javax.swing.*;
class JTableTest extends JFrame {
JTableTest() {
getContentPane().setLayout(new FlowLayout());
JTable tb = new JTable(3, 3);
tb.setValueAt("あああ", 0, 0);
tb.setValueAt("いいい", 1, 1);
tb.setValueAt("ううう", 2, 2);
JScrollPane sp = new JScrollPane(tb);
sp.setPreferredSize(new Dimension(230, 80));
getContentPane().add(sp);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("JTableTest");
setSize(250, 120);
setVisible(true);
}
public static void main(String[] args) {
new JTableTest();
}
}
とした場合 A列を、選択編集クリックすべて不可にしたいのですが、どうすればいいでしょうか?
73 :
てきとう :2008/01/14(月) 13:44:09
JTable tb = new JTable(3, 3){ public boolean isCellEditable(int r, int c){ return (r != 0); } };
74 :
デフォルトの名無しさん :2008/01/14(月) 13:59:30
>>73 様 レスありがとうございます。
JTable tb = new JTable(3, 3);
を
JTable tb = new JTable(3, 3){
public boolean isCellEditable(1,1){
return (1 != 0);
}
};
と変えてみましたがコンパイルエラーになってしまいました。
以下エラーメッセージ
JTableTest.java:9: 型の開始が不正です。
public boolean isCellEditable(1,1){
^
JTableTest.java:11: <identifier> がありません。
}
^
エラー 2 個
しつこくて申し訳ありませんが、よろしくお願いします。
75 :
てきとう :2008/01/14(月) 14:03:59
まちがえたw JTable のメソッドじゃねーやハズカピー JTable tb = new JTable(new DefaultTableModel(3, 3){ boolean isCellEditable(int row, int column){ return (column != 0); } });
77 :
デフォルトの名無しさん :2008/01/14(月) 14:25:38
javaのとっかかりで GUIを作りながら勉強できるサイトとかありますか?
出来れば日本語で ほんとの初心者向けのが助かります
81 :
デフォルトの名無しさん :2008/01/14(月) 19:15:31
創るJavaじゃね?
GUIなら最近java6対応の本が出てたな。
84 :
デフォルトの名無しさん :2008/01/14(月) 19:58:44
NetBeansでつくって学ぶ Java GUI & Webアプリケーションと書いてあるが?
85 :
デフォルトの名無しさん :2008/01/14(月) 20:24:46
教えて下さい コマンドプロンプトでjava -version 入れたら Error: could not open `C:\Program Files\Java\j2re1.4.2_16\lib\i386\jvm.cfg' こんなエラーが表示されます。 J2SDKを1.4.2.16→1.4.2.10と変えたらこんな事に・・・ どうすればよいのやら・・・
>>85 たぶん環境変数の問題だと思うけど、
取り敢えずコントロールパネルの中の"Java"を起動してみて
期待する設定になってるか見てみたら?
というか1.4.2の最新って1.4.2.14くらいじゃなかったけ?
ああ、バージョンダウンしたのか。
89 :
デフォルトの名無しさん :2008/01/14(月) 20:57:15
>>86 コントロールパネルにJava Plug-in があって
それ起動しようとしたらエラー・・・
>>88 バージョンダウンです
90 :
sage :2008/01/14(月) 21:11:26
うぅぅぅ the time zone update file がダウンロードできない(T_T) Welcome xxx | Logout [continue] 先に進まない
前のバージョンをアンインストールして再インストールする方をクリーンインストール。 たぶん、ごみが残るからごみは手動で消す。
93 :
デフォルトの名無しさん :2008/01/14(月) 21:57:17
>>91 85です。解決しました。
1_4_2_10や1_4_2_16はうまくいかなかったです。
なぜうまくいかないのか今はわかりません。今後調べてみます。
ひとまずアンインストールを行った後、1.5.0_14をインストールし、
ユーザ環境変数のみ
PATH
C:\Program Files\Java\jdk1.5.0_14\bin
に設定して、
javac
java -version
の確認がとれました。
ありがとうございました。
java_home設定しといた方が良いよ。
Stringで受け取った文字列に対しての色変更はどのようにしたら良いのでしょうか?
>>95 ・Stringには色はありません。
・標準入出力には色を付けられません。
・Graphics.setColorを使えばいいと思うよ。
・何十回も質問を読み直してから来ればいいと思うよ。
なんというおもしろ質問
javaはコンソール制御できないからなぁ。
そういや一応、Cursesはあるよね。
エスケープシーケンスでできんじゃね? NT 系のコマンドプロンプトでできなくなったんだっけ?
できない
103 :
デフォルトの名無しさん :2008/01/15(火) 09:50:35
double/doubleを小数点以下第一位まで表示するにはどのようにすればいいのでしょうか??
formatでいんじゃね
105 :
デフォルトの名無しさん :2008/01/15(火) 10:35:26
106 :
デフォルトの名無しさん :2008/01/15(火) 12:13:48
作った人に聞く
107 :
デフォルトの名無しさん :2008/01/15(火) 12:53:22
MozillaParserを使い始めたんですが クイックスタートに載ってる File parserLibraryFile = new File("./native/bin/MozillaParser" + EnviromentController.getSharedLibraryExtension()); String parseLibrary = parserLibraryFile.getAbsolutePath(); MozillaParser.init(parseLibrary, "C:\\dapper\\mozilla\\dist\\bin"); Document domDocument = MozillaParser.getInstance().parse("<html>Hello world!</html>"); MozillaParser.getInstance().stopRunning(); がうまく動きません Pathなどは通してありMozillaParserそのものは呼び出せますが メソッドが呼び出せません ひょっとして仕様変ってますか
エラーメッセージは?
SE 6 で JavaScript 使えるようになったことだし、そろそろ PDA のフルブラウザ程度の 標準 GUI コンポーネント作れよというチラ裏。
110 :
デフォルトの名無しさん :2008/01/15(火) 13:37:25
つJavaFX Mobile
>>12 NodeListの動作はW3C DOMが決めているものだから、xml4j云々は関係な
いでしょ。W3C DOMの仕様だって、IEとMozillaのJavaScript DOMの挙動
を明確化するところから始まったものだし。
java初めて1ヶ月の初心者です。 エクリプスで普通に実行できるプロジェクトが、DOSからjreで起動しようとするとシンボルが見つかりませんエラーを頻発するのは何が原因と考えられますか? ちなみにjavacをやっても、同じ数だけ、クラスが見つからないよエラーが出ます。
クラスパス関連
115 :
デフォルトの名無しさん :2008/01/15(火) 16:10:00
>114 jframe.setDefaultCloseOperation(jframe.DO_NOTHING_ON_CLOSE); JavaDoc、JFrameのsetDefaultCloseOperationの項目を嫁
actionPerformed の中でイベント e.getSource() が終了ボタンかどうかを判定して 終了ボタンなら終了動作をすれ
>>actionPerformed の中でイベント e.getSource() が終了ボタンかどうかを判定して すんません、どうやって判定するんですか
==
ネットで既にあるアプリケーションのサンプル、ソースを見ると Main.java A.java B.java のようにクラスごとにファイルを分割しているもの 見るのですが、どのように分割したファイルを関連付けすればいいのでしょうか 例えばMenuItem等の基本的機能を実装したMain.javaに、 JTreeを実装したA.java、TextAreaを実装したB.javaを追加するような形です
同じパッケージ (同じディレクトリに保存してある) なら何もしなくても使えるだろ。
すみません、表現がおかしかったですね ・MainでMainメソッド等を作った ・A,BでMainメソッド込みで必要な機能をそれぞれ作った ↑ これをMainに関連付けるにはどうしたらいいのでしょうか
↓エスパー求む
すみませんが、質問です。 intの配列を、リストに変換するライブラリはないでしょうか? commons にありそうな気がするのですが。 Arrays.asList() を使ったのですが、 intの配列だと、配列全体を一要素とするリストができてしまいます。 java.util.Arrays.asList(new int[]{1,2,3}) => (java.util.Arrays$ArrayList<E>) [[I@18f6235] Integerの配列なら、そのままリストに変換されるのですが。 java.util.Arrays.asList(new Integer[]{1,2,3}) => (java.util.Arrays$ArrayList<E>) [1, 2, 3]
なんか最近質問も回答もひどいな。
>>123 一発変換じゃないけど、commons lang の
Integer[] org.apache.commons.lang.ArrayUtils#toObject(int[])
とかで、いったんInteger[]に変換してからArrays#asList()で変換するとか。
>>121 「関連付ける」っていう表現がJava歴12年の私によくわからない。
何を心配しているのだ?
List<Integer> list = new ArrayList<Integer>(); for(int i: array){ list.add(i); } なぜこの程度のコードのために非標準ライブラリを使おうとするんだ?
128 :
123 :2008/01/15(火) 17:27:31
129 :
123 :2008/01/15(火) 17:39:13
趣味じゃなくて実用の話をすると、これは配列の中身をログに書き出すために、 リストに変換したかったのです。配列#.toString()と違い、List#toString()は 各要素を出力してくれますので。 ロギングのためにわざわざループを書いたり、その後使うあてのない諸々の変 数を宣言したりするのは煩雑ですが、これなら一行ですみます。 log.debug("x = " + Arrays.asList(ArrayUtils.toObject(xarray)));
それは十分趣味だと思うが。
>>129 そーゆー用途なら java.util.Arrays#toString(int[]) でも良いのでは?
もっとも、1.5以上じゃないと使えないけど。
final static final static の使い分けがわかりません。 final float TEST = 1.0f; static final float TEST = 1.0f; static TEST = 1.0f; どういう状況・どういう時に使い分けるのですか?
>>132 メンバ変数の話だとすると、
final
変更できないメンバに付ける。コンストラクタで初期化することはで
きるので、あるインスタンス内でのみ有効な実行時定数として使う
static final
そのクラスの全インスタンスに共通の定数として使う
static
そのクラスの全インスタンスに共通の変数として使う
>>133 ありがとうございます。
static final は Cでいうと #define みたいなものと捕らえて大丈夫ということでしょうか?
>>134 そんな感じですね。
例を思いついたので書いてみる
class 人間 {
static final int 足の数 = 2; // 足の数は全人類共通
static int 人口;
final String 名前; // 名前は一度決めれば変わらない
人間(String n) {
名前 = n;
}
void 出生() {
人口++;
}
void 死去() {
人口--;
}
}
定数の特徴がstaticでfinalなんだよ って昔言われたな
>>135 わかりやすい例で納得できました
ありがとうございます
138 :
123 :2008/01/15(火) 18:36:34
>>131 > そーゆー用途なら java.util.Arrays#toString(int[]) でも良いのでは?
> もっとも、1.5以上じゃないと使えないけど。
おおお!全然知りませんでした!ありがとうございます。
早速これに乗り換えます。
140 :
デフォルトの名無しさん :2008/01/15(火) 19:23:05
>>139 カタワは基本構造から差し引かれているわけだから2本って定義は間違ってないよ。
java.nio.channelsのSelector#wakeupについて教えて下さい。 このメソッドはSelector#selectの待ち合わせを解除するものですが、 動かしてみたところ、 Selector#selectで待ち合わせていないときに(複数回)Selector#wakeup を呼び出すと呼ばれた回数だけ次のSelector#selectで待ち合わせをしなくなるように見えますが そういうものですかね?
>>129 >List#toString()は
>各要素を出力してくれますので。
そうとは限らない。おまいは何か勘違いしている。
Listの実装に何を使うかによって違う。
143 :
デフォルトの名無しさん :2008/01/15(火) 21:16:48
import java.util.*; class Super {} class Sub extends Super {} public class Main { static void test1() { List<? extends Super>s = new ArrayList<Sub>(); s.add(new Super()); //あ s.add(new Sub()); //い } static void test2() { List<? super Sub>s = new ArrayList<Super>(); s.add(new Super()); //う s.add(new Sub()); //え } public static void main(String args[]) { test1(); test2(); } } 上記コードの あ・い・う・え すべて「シンボルを見つけられません。」というエラーになるんですが 本には あ・い はエラー、う・え はOKって書いてあるんです。 これて、本が間違ってるんでしょうか?それとも何かコンパイラーの設定とかあるんでしょうか? 本はソフトバンククリエイティブの 「 Java2 Exam 310-055 」で、336ページです。 ここだけがどうしても理解できないので、スッキリしたいです。
ひどいコードだな。
漠然とした質問で申し訳ありませんがお聞きします。 eclipseなどだと、ソーエディタの変数名にマウスカーソルを合わせたりすると「型名 変数名 -クラス.メソッド」 という感じで表示されますよね? この文字列ってどうにかして取得できませんか?イメージとしては 元のJavaのソースコードを食わせて、すべての変数に対して「型名 変数名 -クラス.メソッド」 が取得できればいいです。 eclipseはJavaで書かれていると聞いたので、こういったことを処理するクラスがあるのでしょうか?
Eclipseはすべて自前でやっている Eclipseのプラグインを作ってEclipse(というかJDT)の機能を使うって手もあるけど・・・ そのJavaのソースコードを普通にコンパイルして、実行時にリフレクションで取得する方が簡単と思う たとえばAっていう名前のクラスなら A.class.getDeclaredMethods() とか
>>146 できねーよ。自分でパーサー組んでコンテキスト分析すれ。
>>147 早速のご回答ありがとうございます
大変恐縮なのですが、そのAPIはどのパッケージにあるか教えていただけますか?
おまいら別クラスの任意の位置のローカル変数にどうやってリフレクション使わせる気だ。
変数名が要るのか、失敬 それなら、classファイルのデバッグ情報を読む・・・ちょっと手間だな
>>143 本の通りで、コンパイルエラーになるなら本が間違ってる。
もしくは、本の説明が足りない。もしくは、本にとってあなたは想定外の人物。
私の環境だと「え」以外はエラー。
>>121 Main.java
……
static int hogehoge = 1;
static A a = new A();
static B b = new B();
……
a.starting();
A.java
class A {
public void starting() {
int i = Main.hogehoge;
Main.b.ending(i);
……
}
}
試せ。適当に書いてみてエラーが出なければ多分正しい
157 :
デフォルトの名無しさん :2008/01/16(水) 15:01:17
Iteratorを使ったループでの同期化について質問させてください。 動画の描画のような、毎秒数十回呼び出されるループ内で、ArrayListをIteratorで回してます。その一方で、別スレッドからこのArrayListに追加するためのメソッドがあります。 (例)-------------- ArrayList<Hoge>() hoge = new ArrayList<Hoge>(); loop(){ // 毎秒数十回呼び出すループ Iterator<Hoge> it = process.iterator(); while(it.hasNext()){ Hoge h = it.next(); if(!h.loop()){ // Hoge内のループがfalseを返したら削除 it.remove(); } } } public void addHoge(Hoge h){ hoge.add(h) } ------------------ こういう場合にIteratorループでConcurrentModificationExceptionが起こらないようにするには、どうすれば良いのでしょうか? synchronized修飾子で囲ってみたり、Collections.synchronizedList使ってみたりと色々試したのですが、どうしてもConcurrentModificationExceptionが起こってしまいます。 大人しくVector + Enumerationを使ったり、for(int i = 0; i < hoge.size(); i++) で回せば解決するのですが、Iteratorでの解決策が無いはずは無いと思うのです・・・。
CopyOnWriteArrayListを使ってIterator#removeの代わりにList#removeにする・・・とか。
JAVAを使う職業に転職したいのですがいい本はないでしょうか? 今は会社員ですが、辞める予定ですので、早く覚えたいのです。
161 :
157 :2008/01/16(水) 16:47:54
さっそくのご回答有難うございます。
そしてすいません、4行目の
Iterator<Hoge> it = process.iterator(); は、
↓
Iterator<Hoge> it = hoge.iterator();
の間違いでした。
>> 158さん
ありがとうございます。
どちらのメソッドもsynchronizedブロックで括るということですね。
むむむ、しかし試してみたところ、やはりadd後に即、loop内でConcurrentModificationExceptionが起こってしまいました。
ArrayListをiteratorで回してる最中は、追加・削除等の処理は一切行っちゃダメってことなんですかね。何か凄く不便に感じます。
多分、僕が無知なだけなんだろうとは思いますが・・・。
>>159 さん
やや!並行処理用のコレクションがあったとは知りませんでした。
パフォーマンスも満足行くものみたいですね。
ありがとうございます、活用してみます。
やはり、並行処理するならば、ArrayListにこだわるのは良くないということなんでしょうかね。
MapにはConcurrentHashMapがあるようですね。以下のサイトを参考にしました。
ttp://www.itarchitect.jp/technology_and_programming/-/24161.html 返答ありがとうございます。
163 :
デフォルトの名無しさん :2008/01/16(水) 16:57:34
>157 List list = new ArrayList() { @Override public Iterator iterator() { ArrayList list = new ArrayList(this); return list.iterator(); } }
<fmt:bundle> と <fmt:setBundle> って機能まとめて一つで良いよなぁという独り言。
166 :
デフォルトの名無しさん :2008/01/17(木) 09:41:33
すいません、Javaを勉強しようと思っているのですが 色々種類がありすぎてどれから始めるのが良いのか分かりません。 おすすめとかありますか? ちなみに、僕のスペックです。 ・経験言語 Perl(4年)/PHP(3年) Ruby(半年)/C(半年) JavaScript(1年)
Java の色々種類って何だよ 開発環境なら Java SE 6.0 + Eclipse 3 使っとけ。 GUI なら Swing (Java SE 標準) 使っとけ。 Web 系なら Tomcat 使っとけ。 データベースなら PostgreSQL 使っとけ。 i-Appli, ゲームは知らん。
168 :
デフォルトの名無しさん :2008/01/17(木) 10:40:08
>166 得意分野から入るってならばSeasar2あたりでJ2EEをやる Ruby(Rails)やったことあるならば大雑把には感覚つかめる筈 まったく知らない分野に手を伸ばしたいならばSocket通信とSwingあたりがいいかと思われ。 簡単なチャットプログラムあたりを作成するのがちょうどいい
JDK6に含まれている JDBC 4.0 APIには、DataSet<T>やBaseQueryなどが 含まれていないようなのですが、これらは、他のライブラリに入っているのでしょうか? それとも、JDBC 4.0仕様から削除されたのでしょうか?
リファレンス実装が十分固まらないうちにリリースに間に合わなくなって 1.6 から除外された。 その後は知らん。
Sun に買われた Cobalt がどうなったか知らんのか。
Stream の close() の仕方について質問です。 以下のようなみたいなコードがあったとき、 FileInputStream fis = new FileInputStream("hoge.txt"); InputStreamReader isr = new InputStreamReader(fis); BufferedReader br = new BufferedReader(isr); 今まで以下のように書いていました。 br.close(); isr.close(); fis.close(); ところでピアソンの「プログラミング言語Java 第4版」p.450(20.4 InputStreamReader と OutputStreamReader という節) をみると、以下の記述があります。 >どちらの場合も、変換ストリームをクローズすると、関連付けされているバイトストリームもクローズされます。 >標準ストリームを変換するような場合には、クローズされるのは常に好ましくはないかもしれません。 >したがって、変換ストリームをいつクローズするかは慎重に検討してください。 これをよむと、以下のように isr.close() するだけで fis も close() されるという理解でよいですか? br.close(); isr.close(); 以下のように br.close() だけだと、isr と fis は close() されないですよね。 br.close();
創るJava って第2版がでるんだな。(2008/1/23)
>>173 br.close()だけでぜんぶクローズされるはず。
手元にソースがなくて確認はしてないけど、ストリームにかぶせるタイ
プのストリームはぜんぶclose()で中のストリームのclose()を呼んでい
たと思う。
176 :
デフォルトの名無しさん :2008/01/17(木) 17:08:09
>173 その文章書く時間あるならば、先にJavaDoc嫁 void close() throws IOException このストリームを閉じ、関連付けられているすべてのシステムリソースを解放します。ストリームがすでに閉じている場合、このメソッドを呼び出しても何も行われません。
177 :
173 :2008/01/17(木) 17:15:07
>>175 どうもありがとうございます。BufferedReader のソースを見たところ、
close() の内部で、BufferedReader のコンストラクタで受け取った Reader の close() を呼んでいました。
今後プログラムを書くときは、br.close(); だけを書くようにしよう。
>>176 すみません、聞く前に javadoc 読むようにします。
ちなみに PrintWriter#close() は、Javadoc では「関連づけられているすべてのリソースを開放する」とは
書かれていませんでしたが、ソースを見ると、やはりコンストラクタで受け取った Writer をclose() していました。
>>177 1.6 のドキュメントだと、PrintWriter#close() には
「関連するすべてのシステムリソースを解放します」って書いてあるけど。
「ストリームを閉じます」だけで終わってるのは 1.4以前かな。
179 :
173 :2008/01/17(木) 17:47:19
>>178 手元にある DL 済みの javadoc は 1.5 です。(はじめのカキコ時に java のバージョンを書いておくべきでした)
「ストリームを閉じます」だけで終わっています。
やはり DL ずみの1.6 では、
>>178 さんのようになっていますね。
180 :
デフォルトの名無しさん :2008/01/17(木) 19:31:49
JavaServletについてわからない事があるので教えていただけますか。 /*環境*/ OS:Windows xp Professional SP2 開発アプリケーション:Eclipse Version 3.3(Tomcatの起動はxampp内のTomcatを利用) サーブレットコンテナ:Apache Tomcat 6.0(XAMPPのTomcatプラグインより利用) Eclipseから出たメッセージ 「インポートされた javax.servlet は見つかりません。」 //Servlet.java import java.io.*; import javax.servlet.*; //”javax.servlet”の所で赤の波線が出る import javax.servlet.http.*; //”javax.servlet”の所で赤の波線が出る public class Servlet extends HttpServlet { public void doGet (HttpServletRepuest req,HttpServletPesponse res)throws ServletException, IOException { } } 多分、servlet.jarか、servlet-api.jarが必要になるのだと思いますが。 これを、どのようにすれば、正常に動作させる事が出来るのか解らないです。 どうぞよろしくお願いします。
初心者です、何を始めたらいいですか?
Javaでぐぐるとこから始めたらいいです
最近自分で調べた方が早い事ばかり聞いてくるな。
184 :
デフォルトの名無しさん :2008/01/17(木) 20:26:40
POIでVBAを含んだExcelを読み込み、保存するとVBAが消えてしまいます。 消えないようにする方法は無いでしょうか。 POIでVBAを書き込む方法ってありますか??
Exception#printStackTraceで出力される例外情報を文字列化してログファイル におちしたいんですが、良い方法ありますか?
つ ロギング
>>185 ちなみにNetBeansだとロギングAPIでコード補完されます。
>>185 Throwableクラスに、文字列を取得するのにぴったりのメソッドがあるだろ?
189 :
デフォルトの名無しさん :2008/01/17(木) 23:10:36
サーブレットとJSP簡単に言うと如何使い分けてるのが一般的?
MVCのCとVで分ける
191 :
デフォルトの名無しさん :2008/01/17(木) 23:55:22
servletでフィルターをかける場合にfilterインターフェイス使うみたいだけど、 インターフェイスって、implementしたクラスで実装するんじゃないのですか?
192 :
デフォルトの名無しさん :2008/01/17(木) 23:58:04
途中で書き込んでしまった。 色々な本なんかを見てると実装している部分が見当たらないんです。 俺の認識が間違ってるだけですか?
その実装クラスを作るときに ServletFilter インターフェイス使ってんじゃん。
なぜ継承やオーバーライドをするのでしょう? 似通っているクラスであれ、継承せずに新しいクラスを作り、 新しいメソッドを作ればいいとか思っちゃうのですが。 効率性の問題ですか?
>>194 君みたいな開発者のおかげで、僕の仕事があります。ありがとう。
>>194 新しいクラスも既存のクラスも同じインタフェイスで扱いたいから
198 :
191 :2008/01/18(金) 12:32:05
>>193 例えばinit()なんですけど、
実行される内容は自分で書きますが、
「最初に実行される」という決まりはどこに定義されていて、
自分の作ったクラスにどのように継承?されているのでしょうか?
199 :
デフォルトの名無しさん :2008/01/18(金) 13:35:03
そんな決まりはない ただの慣習 されども慣習を守らないとみんなが迷惑する
>>199 おい!
>>198 最初にinit()を実行するという決まりは、Servlet Specificationで規定されている。
だから、Servlet仕様にきちんと準拠して実装されたServletコンテナなら
Filterとして作成され、web.xmlにFilterとして登録されたクラスの
init()メソッドを呼び出すように実装されている。
すみませんが、質問です。
Luceneというオープンソースの検索エンジンを使ってみたのですが、思ったよ
りパフォーマンスが出なかったので、プロファイラ hprof で分析してみました。
http://itpro.nikkeibp.co.jp/article/COLUMN/20061102/252525/ 結果
CPU SAMPLES BEGIN (total = 50358) Thu Jan 17 17:43:10 2008
rank self accum count trace method
1 33.34% 33.34% 16787 300001 java.lang.Thread.run
2 33.33% 66.67% 16786 300005 java.lang.ref.Reference.getPending
3 17.58% 84.25% 8853 300364 java.io.RandomAccessFile.readBytes
4 11.94% 96.19% 6013 300777 java.io.RandomAccessFile.readBytes
5 0.33% 96.52% 167 300473 jrockit.net.SocketNativeIO.readBytesPinned
6 0.29% 96.81% 146 300537 java.lang.String.<init>
7 0.19% 97.00% 96 300536 org.apache.lucene.store.BufferedIndexInput.readByte
8 0.15% 97.15% 77 300587 org.apache.lucene.store.IndexInput.readString
9 0.14% 97.29% 69 300561 org.apache.lucene.store.IndexInput.readString
10 0.12% 97.41% 58 300578 org.apache.lucene.store.IndexInput.readString
...(略)...
てっきり java.io.RandomAccessFile.readBytes がCUP時間のほとんどを占める
かと思ったら、それは30%に満たず、java.lang.Thread.run と
java.lang.ref.Reference.getPending が全体の2/3を占めていました。
これは一体、何を意味するのでしょう?パフォーマンス改善には何をしたらい
いと思われますか?
>>198 サーブレットコンテナを作る側と、サーブレットを作る側で
「お互いこういう決まりで作りましょうね」という規格(Servlet API)
の上で決まっているだけで、
唯一固有の実装により定義されるわけではない。
例えばTomcatなら、そのコードの中で、
Filterクラスをインスタンス化して、最初にinit()を実行し、
該当リクエストがある度にdoFilter()を実行する、
というように実装されている。
Tomcatのソース読めば見つかるはず。
これはあくまでTomcatの実装であって、
他のサーブレットコンテナ(ResinやJetty、商用ならWebSphereやWebLogicなど)なら
また別の書き方で、フィルタの扱い方が実装されているけど、
やはりServlet APIの規則に従って実装されている。
それをはずすとServlet API準拠って名乗れないからね。
繰り返すけど、この辺は、APIの仕様に定義されている。
これは文書読まないとわからない。
どのAPI使うにしろ、そういった約束事の塊に出くわすので、
慣れろと言うしかない。
明快Javaってどうなの?
自分で読んで決めろ。それか該当スレ やさしいシリーズじゃなけりゃなんでもいい。
創るJavaのほうがいいよ。
>>205 もうすぐ新版もでるしね
はじめて工作員活動しちゃった
207 :
デフォルトの名無しさん :2008/01/18(金) 17:13:59
パネルの背景を画像にして、その上に各コンポーネントを貼り付けていこうと 考えているのですが、うまく表示されません。 1.最初は画像を背景にしたJLabelをJPanelに貼り付けて、 さらにその上に貼り付けていこうと考えていたのですが、 うまく作成することができませんでした。 (上に貼り付けたコンポーネントが正しく表示されない) 2.そこで、JPanelのpaintComponet部分でdrawImage してみましたが、画像は描写されませんでした。 1の場合LayoutはSpringLayoutやNullで行へば回避できるのか? そもそも2で行おうとしていることは可能なのか? また、このような場合に行う良くある方法についてのアドバイスをお願いします。
208 :
デフォルトの名無しさん :2008/01/18(金) 17:43:12
javaの勉強中なんですが、 VectorやHashtebleなどでコンパイルすると、 注:Hashtable_sample.java の操作は、未チェックまたは安全ではありません。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。 とでるんですが、どうすれば解決できますか?
209 :
デフォルトの名無しさん :2008/01/18(金) 17:48:45
DOS窓って一体何のことですか?
>-Xlint:unchecked オプションを指定して再コンパイルしてください。
211 :
デフォルトの名無しさん :2008/01/18(金) 17:49:56
>>207 自己レス
2のほうでImageIcon経由Imageを作成したらうまく動きました。
もしかしたら、ロードが終わってない状態で
画像を表示しようとしていたのかもしれません。
>>207 1の方法でもちゃんと動いたぞ
import略
public class Test {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {
JLabel label = new JLabel(new ImageIcon(getClass().getResource("image.png")));
label.setLayout(new FlowLayout());
label.add(new JButton("button"));
JPanel panel = new JPanel(new BorderLayout());
panel.add(label);
JFrame frame = new JFrame();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}});}}
214 :
デフォルトの名無しさん :2008/01/18(金) 18:01:38
>>213 もしかしてWindowsのことですか!
215 :
デフォルトの名無しさん :2008/01/18(金) 18:03:22
-Xlint:unchecked オプションを指定ってどうすればいいんですか??
>>208 Generics でぐぐるといいかもしんない
217 :
デフォルトの名無しさん :2008/01/18(金) 18:16:53
>>212 ありがとうございます。
さっそくJwindowに変えてやっていみたのですが、動きますね。
ラベルでなくパネルのほうにコンポーネントを貼り付けようとしたせいで
背景の画像が表示されなくなっていたのかもしれません。
>>215 javadocの開発ツールjavacの部分嫁
>>208 javac -Xlint:unchecked Hashtable_sample.java
ジェネリックメソッドで <T> T getT(){ return //T型のオブジェクト生成 } ってやりたいんだけど、どうすんの?つうかコンストラクタは引数無しじゃなきゃダメ?
221 :
デフォルトの名無しさん :2008/01/18(金) 20:27:09
Tに引数なしのコンストラクタがある保証ないじゃん
222 :
デフォルトの名無しさん :2008/01/18(金) 20:30:37
<T> T getT(Class<T> clazz){ return clazz.newInstance(); } とやるしかない もしくはクラス名を渡すなど。
>>222 即レスあざす。・・・マジすか
まぁ、妥協できないとこじゃないんで別の実装考えますね。
設計の問題でどうにかなる
225 :
デフォルトの名無しさん :2008/01/18(金) 21:02:46
>223 自分も同じようなこと考えたんだけど、コンパイルされた後には型情報ってなくなるんだよね。 あくまでコンパイル時にキャストがうまくいくってだけで、そこまで。 ただ、使い方を制限するなど、使い道は多いぜ。 <T extends HogeHoge> T getT(Class<T> clazz){ return clazz.newInstance(); }
ファイルから数値を読み込んでそれの合計とか平均とかだしたいんですけど どうすればいいですか
227 :
デフォルトの名無しさん :2008/01/18(金) 21:23:15
勉強するといいよ
javadoc読めば良いと思うよ
229 :
デフォルトの名無しさん :2008/01/18(金) 21:51:14
あんまりWebアプリ作る技術者系の人はここにはいないのかな
>>225 ,230
確かにTが実行時にコンスタントプール内のクラスを指し示してる保証もできないですしね。
バイトコード弄くりじゃ結局ジェネリックス使わないし・・・結局
<T> T createT(T t){
//tが不正でないか調べる
return t;//正しいtを返す
}
って感じにしました。まぁ、超個人的なことなんで何したいのか分からないと思いますが・・・
ありがとうございました。
antのbuild.xmlってなんであんなフリーダムになっちゃったの?
swingのJLayeredPanelに ImageIcon icon = new ImageIcon(img); jlabel.setIcon(icon); jPanel.add(jlabel); jlayeredPane.add(jPanel, 2); おおざっぱですがというような方法で層状にして画像を表示しているのですが、上の6ピクセル行くらいが空白になってしまい表示できません。これを解決する方法ってありますか? iconを使うと無理?
234 :
デフォルトの名無しさん :2008/01/20(日) 22:51:55
JLabelのBorderとかを設定 JLabelの機能を使わないならば、画像表示用のコンポーネントをJComponentを継承して作るほうが楽かも
Borderですか。 そっちでやってみます。 ありがとうございます。できるかな。。
236 :
デフォルトの名無しさん :2008/01/21(月) 01:18:13
237 :
233 :2008/01/21(月) 10:26:56
>>234 結局borderではできませんでした。。
継承とかうまく扱えないので、他になにかいい解決方法があるといいのですが。
>>237 setBorder(null)してみた?
239 :
デフォルトの名無しさん :2008/01/21(月) 12:25:38
それを言うなら、BorderFactory.createEmptyBorder(だっけ?)じゃね?
240 :
デフォルトの名無しさん :2008/01/21(月) 15:07:50
javaでCPUや、メモリ量などのシステム情報を取得するにはどうしたらいいですか?
241 :
デフォルトの名無しさん :2008/01/21(月) 15:10:19
format c:
質問です。 無制限強度の管轄ポリシーファイルを%JAVA_HOME%\jre\lib\securityに置いて鍵長制限解除をしようとおもったのですが・・・、 CPadからGUIを起動して暗号・複合を行うと442bitsの鍵を扱えるのですが、 それらをまとめたjarをクリックして起動したGUIではどうしても暗号・複合ができませんorz #無制限強度の管轄ポリシーファイルの必要ない64bitsの鍵はできます。 例外処理の内容は制限を超えた長さの鍵を使った時にでるものが投げられるので、 jarで起動するとどうも無制限強度の管轄ポリシーファイルを見てない感じなのですが・・・。 教えてくださいせんせー。
243 :
デフォルトの名無しさん :2008/01/21(月) 16:49:40
CPadってのは何者か解らんけど、開発環境か? エスパーしてみると、jarをダブルクリックした時に使われるJREと、開発環境で使われるJREが異なるのが理由かと思われ
CPad for Java2 SDK
尿Pad
>>243 まさにその通りでしたorz
開発環境ではjdk下のjreを参照してるのですね。勉強になりましたorz
てんてーありがとうー
//チラ裏
jdk
%JAVA_HOME%jdkx.x.x\jre\lib\security\US_export_policy.jarとlocal_policy.jar
jre(jrex.x.xは最新のjreフォルダ)
?\jrex.x.x\jre\lib\security\US_export_policy.jarとlocal_policy.jar
ホットスポットがネイティブコードにコンパイルされるのって単純に実行回数? それともバイトコード分析して?
HotSpot実装ならホットスポット解析
ホットスポット探すのに実行回数を一切使わないって事はないと思うが。
250 :
デフォルトの名無しさん :2008/01/21(月) 22:20:59
失礼します。
現在JAVAでRS232Cを使って通信を行なう事を行なっております。
まず現在行なっている仕様は
OS :Vine Linux 2.6.16 - 0vl160
J2SE :1.4.2_16
RXTX :2.07 i686 linux
Java Communications API :3.0 Linux
:参考サイト:
JAVA開発メモ - CommunicationsAPI
(
http://www.moriwaki.net/wiki/index.php?%5B%5BCommunicationsAPI%5D%5D )
:現状:
JAVAにおいてはコンパイル・実行ともに問題無く使用できますが
RS232Cに関係するプログラムをコンパイルするとエラーが
起こります。
(
http://www.ais-com.co.jp/jikken/java232c.html )でお借りしました。
雛形プログラムをコンパイルしたところ。
以下のような場所にシンボルが不明と出ました。
CommPortIdentifier
^
SerialPort.DATAITS_8....
^
実験は大学の実験室にて行なっているので
現在はエラー文をお見せできないので本当に申し上げません。
恐らくですが、rxtxかCommunicationsに問題があると思いますが
現在の所その解決策は見つかっておりません。
どなたか解かる限りでかまいませんので教えてください
よろしくお願いします。
classpath通ってないんだけちゃうん??
だろうね。説明サイトでは javacomm20-x86.tar を JAVA_HOME/jre/lib/ext に 入れろと書いてあるがちゃんと入ってるか? また入れたディレクトリの JDK が 本当に使われてるか? 下のコマンドでも叩いて確認しる ls `dirname \`which javac\``/../lib/ext/javacomm20-x86.tar どうしてもダメならクラスパス設定しる export CLASSPATH=$CLASSPATH:/path/for/javacomm20-x86.tar ↓と、ここで満を持して lib/ext アレルギー患者が一言
└→HDDが一杯で入りません。
254 :
>>250 :2008/01/21(月) 23:52:19
>>251 >>252 ご返答ありがとうございます。
classpathですね。明日早速試してみたいと思います。
また
>>252 さんのJDKが本当に使われているかを
試してみたいと思います。
>>246 JREのパスを先に持ってくればいいんじゃね?
匿名クラスを使わずにスレッドの生成できるんでしょうか?
できる
おまいらネットで役に立つと思った情報見つけたら広告くらいクリックしてやれよ。 という独り言。
JAVAの練習に簡単なイメージビューアを作っています。 JFrameを継承したメインクラスにJMenubarをaddしてメニューを作っているのですが ウィンドウを閉じるとメニューも一緒に消えてしまいます。 最後のウィンドウを閉じてもメニューは残るようにするにはどうすればいいのでしょうか?
JMenuBar を static 宣言したりしないで、フレームごとに JMenuBar を new して add する。 とエスパー気味に答えてみる。
261 :
デフォルトの名無しさん :2008/01/22(火) 03:09:15
IDEで作ってみて解析してみれば? 最近この手の質問多すぎね?
初心者無視スレや死滅スレ以前のはるか昔からですが何か。
263 :
デフォルトの名無しさん :2008/01/22(火) 03:17:17
まあでも、こう思うんだけど如何なの程度の推測持ってからの方が伸びるだろうね
Logging API で Log4J で言うところの PatternLayout みたいなのって無いの? tuka ひょっとしてわざわざ Formatter 作らなきゃダメなのかよ。
265 :
デフォルトの名無しさん :2008/01/22(火) 10:29:03
JDK5.0でのオートボクシングに関する質問です。 byte b = 1; Integer i = new Byte(b) + new Integer(2); この処理は問題なく実行されますが、処理の内容と順序は 1.Byte型とInteger型の足し算がアンボクシングでbyte型とint型の足し算になる 2.byte型とint型の足し算の結果はint型になる 3.int型がオートボクシングでInteger型となり代入される これで合ってますか? 3はいいと思いますが、1-2は不安です。
はい
>>265 byte 型と int 型の足し算の際に byte 型が int 型に暗黙に型変換される。
268 :
265 :2008/01/22(火) 13:43:15
java5で配列から部分集合を全て列挙したいのですが,どのようにすればよいでしょうか?
if文
べき集合ってこと?
272 :
デフォルトの名無しさん :2008/01/22(火) 15:51:30
部分集合の条件を書けよw
273 :
269 :2008/01/22(火) 16:20:56
>>270 すみません.もう少し詳しくお願いします.
>>271 はい,べき集合の列挙です.分かり辛くてすみません
>>272 集合の条件はn個の自然数です.
まともな質問もできねーのかよw 具体的にやりたいことをきちんと書く
宿題スレ向きの内容じゃないの?べき集合の列挙ならアルゴリズムの問題。
276 :
デフォルトの名無しさん :2008/01/22(火) 16:57:12
文字コード変換で悩んでいます。 JIS 8単位符号:JIS X0201を使用して、変換を行いたいですが 実装がわかりません。 例)引数はString 戻り値もString 引数に0が入力された場合、JIS X0201を使用すると30に変換されるのですが どのように実装を行ったらよろしいでしょうか??
277 :
269 :2008/01/22(火) 16:57:47
ごり押しですがべき集合を再帰的に呼び出すことで解決しました. ありがとうございました.
>>276 > 例)引数はString 戻り値もString
そのインターフェイスは激しく変だぞ。何から何に変換したいの?
たとえば、Javaの1文字をJIX X 0201のコードにしたいのなら、
☆入力は char、戻り値は byte か int
もし、入力が複数の文字なら、
☆入力は String、戻り値は byte[]
じゃない?
JIS X 0201のコードはStringに成り得ないです。
280 :
デフォルトの名無しさん :2008/01/22(火) 17:32:06
"JIS X 0201のコードはStringに成り得ないです。 " しらなかったです。 戻り値byte[]でも良いです。 結果的にはファイルに書き込めればよいので。 "☆入力は String、戻り値は byte[] じゃない?" で実装を教えてください。
>>280 inputString.getBytes("JIS_X0201");
これだけ。
ファイルに書きたいだけだったら、
OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream(fileName), "JIS_X0201");
writer.write(inputString);
という感じにOutputStreamWriterを使ってもいいね。
282 :
デフォルトの名無しさん :2008/01/22(火) 19:06:11
283 :
デフォルトの名無しさん :2008/01/22(火) 19:23:15
byte[] b = new byte[10]; byte[] temp_hoge = new byte[10]; これらふたつを比較して等しければtemp_Ahogeを返すようにしたいのですがどうすればいいのでしょうか? if(ここに等しい条件を入れる){ return temp_Ahoge; } だと思うのですがアドバイスをお願いします。
284 :
デフォルトの名無しさん :2008/01/22(火) 19:24:29
>> 281 試してみましたが、 ファイルに何も書き出されませんでしたが、どうしてでしょうか?? 実装は String fileName = "C:\\tmp2\\sample.txt"; String inputString = "0"; OutputStreamWriter writer; try { writer = new OutputStreamWriter(new FileOutputStream(fileName), "JIS_X0201"); writer.write(inputString); System.out.println(inputString); です。
>>280 JavaのStringで保持してるbyteの文字セットはUnicode。
他の文字セットで保持する場合は、変換してbyte配列まま。
>>283 static boolean java.util.Arrays.equals(byte[], byte[])
但し、引数がnull同士の場合もtrueを返す。
286 :
デフォルトの名無しさん :2008/01/22(火) 19:45:19
>>285 レスありがとうございます。
早速使用させていただきます。
>>284 さいごにwriter.close()してる?
288 :
デフォルトの名無しさん :2008/01/22(火) 20:44:24
289 :
デフォルトの名無しさん :2008/01/22(火) 21:48:10
A.javaというファイルとB.javaというファイルがあるとします。 このとき A.javaからあるものをB.java に渡したあとB.javaで処理をしてA.javaに返すプログラムを構築したいのですが どのようなコードを書けばいいですか?
290 :
デフォルトの名無しさん :2008/01/22(火) 21:51:40
質問です。 JavaプログラムでCygwinに対して「javap -c 任意の.class」を行い、その結果を取り込みたいのですがどう行えばいいでしょうか。 ProcessBuilderを使えばいいようなのですが、そこから先が分かりません。 申し訳ありませんがよろしくお願いします。
表現があいまい。 プロセス間通信みたいな事したいのならTCP/IPなり叩いてシリアライズされたオブジェクト渡すとか。 クラス間で単に見えれば良いだけならアクセス修飾子つけるとか
>>290 ProcessBuilder から Process → InputStream の順に取得すればそこから javap コマンドの出力内容が取れる。
cygwin は関係あるんだろーか?
そんな質問者トラップに惑わされているうちはまだまだひよっこ。
>>289 ファイルを処理するプログラムが希望なのか?
落ち着いて、用語を正しく使って質問しよう
296 :
291 :2008/01/22(火) 22:03:46
>>289 public class A{
public static void main(String[] args){
B b = new B();
Object nanika = /* 何か */;
Object kekka = b.shori(nanika)
}
}
public class B{
public Object shori(Object nanika){
/* 処理 */
return kekka;
}
}
298 :
デフォルトの名無しさん :2008/01/22(火) 22:05:49
早速のご解答ありがとうございます。 やりたいことは、.classファイルの情報をjavap -cコマンドで取得し、それらの情報を プログラムで使用したいのです。 本当に初歩的ですいません。。。
299 :
デフォルトの名無しさん :2008/01/22(火) 22:19:00
大変失礼いたしました。
>>295 を
>>290 に対する返答と勘違いしました、申し訳ありません。
試しに書いたプログラムです。
ProcessBuilder pb = new ProcessBuilder("C://cygwin/Cygwin.bat","ls");
try {
Process p = pb.start();
InputStream stdIn = p.getInputStream();
InputStream errIn = p.getErrorStream();
int c;
while ((c = stdIn.read()) != -1) {
System.out.print((char)c);
}
stdIn.close();
while ((c = errIn.read()) != -1) {
System.out.print((char)c);
}
errIn.close();
int ret = p.waitFor();
System.out.println("process exited with value : " + ret);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
出力は一切ありませんでした。
>>299 new ProcessBuilder("bash", "--login", "-c", "\"ls -laF\"")
301 :
デフォルトの名無しさん :2008/01/22(火) 22:42:03
>>296 あいまいすぎてすみません。
A(
ttp://www.uploda.org/uporg1213982.zip.html )
というファイルがあってAのなかには
public static void main(String[] args) {
HelloWorldJNI hello = new HelloWorldJNI();
byte[] card_idm = new byte[16];
String temp;
String sid = "0404040404040404";
というコードがあるのですが、0404〜という特定のものではなく
Bが受け取る値をそのままAの上の部分に返したいんです。
302 :
デフォルトの名無しさん :2008/01/22(火) 22:42:27
>>300 回答ありがとうございます。
早速試したのですがエラーが、
java.io.IOException: CreateProcess: bash --login -c "ls -laF" error=2
試しに"bash"のみでやったところ同じエラーが返ってきました。
java.io.IOException: CreateProcess: bash error=2
パスか何かの影響なのでしょうか。。
また、Cygwinを無視して "cmd","cd ../"とやったところ
Microsoft Windows XP [Version x.x.xxxx]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\workspace\test>
という結果になり、cd ../については反映されていないようなのですが。。
303 :
デフォルトの名無しさん :2008/01/22(火) 22:43:47
>>302 続き
という結果になり、cd ../については反映されていないようなのですが。。
Eclipse3.3でtomcat6.0+JSPによるウェブアプリケーションを開発しています。 あるクラス(hoge)の作成には成功するのですが、そのクラスをJSPファイルから参照しようとすると 「NoClassDefFoundError: foo/bar」という例外が投げられてしまいます。 見つからないクラス(bar)というのはEclipseの機能である「ユーザー・ライブラリーの追加」で追加したJARファイルの中のクラスです。 ・JSPファイルからこのクラスファイルを呼ばないようにする ・JSPやtocatなどを使用せず、かわりにmainメソッドを持つクラスを新たに作成し同様の処理を行う などとすると、上記例外は生じません。 「ユーザー・ライブラリーの追加」によって追加されたクラスを含むクラスをJSPファイルで利用することはできないのでしょうか? 少々ややこしいですが、よろしくお願いします。
>>302 フルパスで書け。"C:\\cygwin\\bin\\bash.exe"
306 :
デフォルトの名無しさん :2008/01/22(火) 23:02:48
>>305 解決いたしました、本当にありがとうございます。
>>304 ユーザライブラリで追加した JAR ファイルを WEB-INF/lib の下に置け。
>>301 java bean使うとかプロパティファイルに追い出すとか単にpublic void setSID()なメソッドをAに定義するとか。
設計の問題なんだけどjavaの仕様自体は理解してるの?
してないならお勉強。
>>308 レスありがとうございます。
卒業研究でJavaを使っているのですが全然わからなくて・・・。
>>308 public void setSID()なメソッドをAに定義するというのは
A.javaのプログラム中に
public void setSID(){
というのを作って中で呼び出せばいいのでしょうか?
初めっから勉強し直せ
314 :
login:Penguin :2008/01/23(水) 00:46:36
String fileName = "C:\\tmp2\\sample.txt"; String inputString = "0"; OutputStreamWriter writer; try { writer = new OutputStreamWriter(new FileOutputStream(fileName), "JIS_X0201"); writer.write(inputString); と実装してみましたが、ファイルにはinputStringの値"0"が書き出された だけでした。 やりたいこととしては、"0"を入力したときにJIS_X0201の値の"30"を 出力したいのですが、どうすればよろしいでしょうか??
>>314 もしかして, '3' と '0' という文字を書き出したいの?
316 :
login:Penguin :2008/01/23(水) 01:04:10
"0"をJIS_X0201で読み込むと"30"という値になると思います。 自分の認識が間違っているかもしれませんので、"3","0"と分割して 書き出すやりかたがあれば教えてください。
>>314 ,316
ある文字をJIS X 0201にエンコードしたときのバイト列を16進数の文字
列にしたい、ということなのね。
であれば、OutputStreamWriterは忘れて、
inputString.getBytes("JIS_X0201") で得たバイト列を1バイトずつ
String.format("%02x", ... で加工していくので良さそう。
318 :
login:Penguin :2008/01/23(水) 01:31:48
>>317 ご理解ありがとうございます。
実際の実装方法を聞いてもよいですか??
ファイルに書き込む処理まで行いたいです。
319 :
デフォルトの名無しさん :2008/01/23(水) 01:37:47
さすがに自分でやれよw
>>318 317でここまで具体的にヒントが書いてあるんだから、あとは自分で書き
なさいな。
321 :
login:Penguin :2008/01/23(水) 01:42:42
ありがとうございます。 やってみるです。
BigDecimalクラスで平方根の計算をしたいんですが、 これって用意されてないんでしょうか? ググって見つかって喜んだらRubyでした orz
用意されてないから自分で書くしかない。
>>322 やはりそうですか。ありがとうございました。
325 :
304 :2008/01/23(水) 08:31:13
>>307 レスが遅くなってしまいすみません。
先ほど試してみたところ、上手くいきました。
ありがとうございました。
326 :
デフォルトの名無しさん :2008/01/23(水) 11:22:00
すみません。初心者の質問です。 System.out.printf("税金: $%.2f x 5.0% = $%.2f. \n", calcp, calctax); で 5.0% と % を表示したいのですが、どうすればよろしいでしょうか? よろしくお願いします。
>>327 ありがとうございます!
やっとできた・・・(´∀`)
オブジェクトをシリアライズ化してセーブしたファイルをロードし、 再びセーブしようとすると、こんなエラーが発生します Exception in thread "AWT-EventQueue-0" java.lang.InternalError: Unable to bind [ファイル名] to parent at sun.awt.shell.Win32ShellFolder2$4.call(Unknown Source) at sun.awt.shell.Win32ShellFolder2$4.call(Unknown Source) at sun.awt.shell.Win32ShellFolderManager2$ComInvoker.invoke(Unknown Source) at sun.awt.shell.Win32ShellFolder2.getIShellFolder(Unknown Source) at sun.awt.shell.Win32ShellFolder2$18.call(Unknown Source) at sun.awt.shell.Win32ShellFolder2$18.call(Unknown Source) at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source) at java.lang.Thread.run(Unknown Source) 対処方法は無いでしょうか
330 :
デフォルトの名無しさん :2008/01/23(水) 18:38:57
現在htmlから受け取ったデータをサーブレットで処理し、JSPで表示させるということをしています。 受け取ったデータをサーブレット内でDBの中にあるデータと照合し、 照合結果を出すということをしたいのですが、 サーブレット内の処理がうまくいきません。 ソースは public class Servlet extends HttpServlet{ public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ req.setCharacterEncoding("Shift_JIS"); res.setContentType("text/html;carset = Shift_JIS"); //パラメータを取得 String id = req.getParameter("id"); String pas = req.getParameter("pas"); String result = ""; try{ // ドライバクラスをロード Class.forName("org.gjt.mm.mysql.Driver"); // DBへ接続 String url = "jdbc:mysql:///testdb?user=root&password=admin&useUnicode=true&characterEncoding=sjis"; Connection con = DriverManager.getConnection(url); // プレペアードステートメントオブジェクトを生成 PreparedStatement stmt = con.prepareStatement("SELECT * FROM Login WHERE ID = ? AND PASS = ? ");
331 :
330 :2008/01/23(水) 18:40:21
>>330 の続き
//IN パラメータ値を設定する
stmt.setString(1,id);
stmt.setString(2,pas);
// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery();
//指定した条件と一致しているかどうか。
if(rs.next() == true){
result = "ログインに成功しました。";
}else{
result = "ログインに失敗しました。";
}
332 :
330 :2008/01/23(水) 18:40:52
>>331 の続き
// データベースから切断
stmt.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
//セッションスコープで値を渡す
HttpSession session = req.getSession();
session.setAttribute("result", result);
RequestDispatcher rd = req.getRequestDispatcher("./loginResult.jsp");
rd.forward(req, res);
}
}
です。
コンパイルはできるのですが、処理を行っているときにtry{}の中を通らないみたいです。
resultの値をJSPで表示させたときnullと出てしまいます。
どのような処理をしたらresultに値を渡せるのかが分かりません。
よろしければ、ご教授お願いします。
333 :
デフォルトの名無しさん :2008/01/23(水) 19:46:18
例外は? HTMLの方のソースは? そもそもdoPostにたどり着いてんの? System.outなりデバッカなりで処理をおった?
334 :
RoundTrip :2008/01/23(水) 20:49:01
質問: 同じinterfaceを持つクラスのインスタンスが、配列になっています。 これらのインスタンスにおいて、変数やインスタンスを共有したい場合 どのような方法があるでしょうか。 よろしくお願いします。
配列を所有している側のオブジェクトに所有させて、 そこに問い合わせたら?
337 :
デフォルトの名無しさん :2008/01/23(水) 21:42:31
338 :
デフォルトの名無しさん :2008/01/23(水) 21:43:13
:プログラム: //rs232c.java import java.io.*; import java.util.*; import java.text.*; import javax.comm.*; import gnu.io.UnsupportedCommOperationException; import gnu.io.CommPortIdentifier; import gnu.io.SerialPort; class rs232c1{ public static void main(String args[]){ byte rs232c[]; rs232c = new byte[10]; try{ CommPortIdentifier ports = CommPortIdentifier.getPortIdentifier( "COM1" ); SerialPort port = ( SerialPort )ports.open( "RS232C", 1000 ); port.setSerialPortParams( 9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE ); port.setFlowControlMode( SerialPort.FLOWCONTROL_NONE ); InputStream in232c = port.getInputStream(); //読み込み in232c.read(rs232c); System.out.println("read="+rs232c); in232c.close(); port.close(); } catch( Exception e ) { System.out.println( "Error:" + e.getMessage() ); } } }
339 :
デフォルトの名無しさん :2008/01/23(水) 21:47:43
:実行後のエラーログ: {\rtf1\ansi\ansicpg932\deff0\deflang1033\deflangfe1041{\fonttbl{\f0\froman\fprq1\fcharset128 \'82\'6c\'82\'72 \'82\'6f\'83\'53\'83\'56\'83\'62\'83\'4e;}} {\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\lang1041\f0\fs20 #\par # An unexpected error has been detected by HotSpot Virtual Machine:\par #\par # SIGSEGV (0xb) at pc=0xb7f6bedf, pid=2701, tid=16384\par #\par # Java VM: Java HotSpot(TM) Client VM (1.4.2_16-b05 mixed mode)\par # Problematic frame:\par # C [ld-linux.so.2+0x8edf]\par ::: 中略 ::: PATH=/usr/java/j2sdk1.4.2_16/bin:/usr/java/j2sdk1.4.2_16/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/mysql/bin:/usr/local/jdk1.2.2/bin:/usr/local/mysql/bin:/usr/local/jdk1.2.2/bin\par USERNAME=root\par LD_LIBRARY_PATH=/usr/java/j2sdk1.4.2_16/jre/lib/i386/client:/usr/java/j2sdk1.4.2_16/jre/lib/i386:/usr/java/j2sdk1.4.2_16/jre/../lib/i386\par SHELL=/bin/bash\par --------------- S Y S T E M ---------------\par \par OS:Linux\par rlimit: STACK 8192k, CORE 0k, NPROC 4031, NOFILE 1024, AS infinity\par load average:-0.01 0.00 -0.01\par \par CPU:total 1 family 15, cmov, cx8, fxsr, mmx, sse, sse2\par
340 :
デフォルトの名無しさん :2008/01/23(水) 21:48:38
分割して書きこむ暇があったら適当なうpろだに上げろ。
ネイティブライブラリがクラッシュしてる。それ以上は知らん。
344 :
デフォルトの名無しさん :2008/01/23(水) 22:41:12
345 :
RoundTrip :2008/01/24(木) 00:40:07
>>335 クラス変数って、どのクラスのでしょうか。
良ければご指導お願いします。
>>336 配列を所有している側のインスタンスに問い合わせる方法って
どんなものがありますか?
被せたinterfaceの関係で、あんまり引数使いたくないのです。
やっぱり、引数で渡すしか無いでしょうか…。
346 :
デフォルトの名無しさん :2008/01/24(木) 11:13:10
誤爆してしまいましたので、何卒、こちらでご指導お願い申し上げます。 次の選択肢より正しい記述をすべて選びなさい。 1:java.io.FileReaderはテキストファイルから文字を行単位で読み込むクラスである。 2:new File("bbs.txt")と記述すると、新しいファイルが作成される。 3:ファイルの操作を行う前には、Fileクラスのopenメソッドを必ず使用する。 4:BufferedReaderクラスのreadLineメソッドは、ファイルの終端までを読み込む。 5:FileクラスのisFileメソッドの戻り値がfalseだった場合は、そのファイルが無いか、またはその名がディレクトリである事を示している。
>>346 javadocみれば一発!正解が全部書いてあるよ!
はい、次の人どうぞ
349 :
デフォルトの名無しさん :2008/01/24(木) 11:27:14
5.は正解じゃないかと思ってjavadocを読み返したが、 確かにファイルでもディレクトリでもない場合がありうるみたいだね。 しかし、ファイルでもディレクトリでもないものってなんだろう?
conとかnulかなと思って試してみたら、isFileがtrue返した。 調べてみたら、java6からfalse返すように変ったみたい。
>>350 NamedPipe とか デバイスファイル とか。
Javaが動作するプラットフォームはWindowsだけじゃないし。
HIDDEN ファイル (存在するが見えない) シンボリックリンク (リンク先がないのとシンボリックリンク自体が存在しないのとは違う) デバイスファイル (扱いはファイルシステムに依存) だいたいファイルとかディレクトリとか、問題が階層型ファイルシステムに限定だし。 AS/400 なんかメモリと二次記憶の区別がなくてファイルっつーか全部テーブルだし。
356 :
デフォルトの名無しさん :2008/01/24(木) 14:03:25
すいません、質問です。 MouseListenerインターフェイスを実装しようとしたんですが、 Test は abstract でなく、java.awt.event.MouseListener 内の abstract メソッド mouseReleased(java.awt.event.MouseEvent) をオーバーライドしません。 という風にコンパイルエラーが出て、困ってます。 全てのメソッドを実装しているはずなのですが…何故なんでしょうか? import java.awt.event.MouseListener; public class Test implements MouseListener { public static void main (String args[]) { } public void mouseReleased(MouseEvent e) {} public void mouseClicked(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) {} }
358 :
デフォルトの名無しさん :2008/01/24(木) 14:45:20
>>357 その可能性考えて何度もAPIとにらめっこしたんだけど、
どこにも誤字は見当たらないんですよね…
KeyとMouseMotionもエラーになるが、その他のリスナーはちゃんと実装できるから余計わからない。
>>356 MouseEvent が import されていない。
360 :
デフォルトの名無しさん :2008/01/24(木) 14:56:12
>>359 ごめん、他のリスナーで試そうとして今気づいた。orz
でも、import java.awt.event.*;にしても相変らずコンパイルエラー起こすようです。
スレ無駄に消費して申し訳ない。
>>360 直した新しいソースと新しいエラーメッセージを
362 :
デフォルトの名無しさん :2008/01/24(木) 15:21:47
>>361 import java.awt.event.*;
public class Test implements MouseListener {
public static void main (String args[]) {
}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
}
エラーメッセージ:
Test.java:3: Test は abstract でなく、java.awt.event.MouseListener 内の abstract メソッド mouseReleased(java.awt.event.MouseEvent) をオーバーライドしません。
直す前とエラー内容は変わってないみたいです。
>>362 なんで MouseListenerをインポートしてないのに
implements MouseListenerでエラーが出てないんだ?
>>363 import java.awt.event.*;
>>362 んー。Testと同じ階層に同名のMouseEventやらが存在する、とか…
367 :
デフォルトの名無しさん :2008/01/24(木) 15:46:50
>>366 Testを別の場所に移動したら動きました!
最初に実験した奴の名前がMouseEventだったのが原因だったみたいです。
盲点でした。本当にありがとうございます!
Exception in thread "Thread-6" java.lang.ArrayIndexOutOfBoundsException: 8 at ipmsg.HelloWorldJNI.btoS(HelloWorldJNI.java:35) at ipmsg.IDManager.getPID(IDManager.java:71) at MainWindow.makeSortKey(MainWindow.java:270) at MainWindow$RefreshList.run(MainWindow.java:304) このエラーの意味がわからなくて困っています。 もしよろしければ教えていただけないでしょうか。
java.lang.ArrayIndexOutOfBoundsException
>>369 意味:バーカ、添字が8になってんぞ(藁
372 :
デフォルトの名無しさん :2008/01/24(木) 19:27:31
Javaでデータベース(MySQL)を操作して予定などを管理するプログラムをEclipseで作っています。 Eclipse上では動くのですが、jarファイル化してjarファイルから実行しようとするとソフト自体は動くのですが、 データベースに接続できません。 どうしたらよいのでしょうか?
373 :
デフォルトの名無しさん :2008/01/24(木) 19:42:04
エスパー募集中
>>372 エスパーします。
mysqlのjdbcドライバがjarを実行するときのパスに入っていません。
-cp オプションで指定しましょう。
375 :
デフォルトの名無しさん :2008/01/24(木) 19:54:41
ありがとうございます。 今からやってみます。
>>371 無事解決しました。
ありがとうございました。
Ant の質問ここで良いかな? <property> って一度設定したら再設定できないんだけど <antcall> にパラメータのような 可変値を渡したい場合ってどうするの?
あらかじめ複数のタブがあり、あるタブが選択された瞬間に そのタブのウィンドウサイズを変更したいのですが、どのようにすればできるのでしょうか?
JTabbedPaneにaddChangeListenerしといて、stateChangedが来たらサイズを変えればいいんじゃないかな
>>380 ちょっと調べてみますね。
ありがとうございました。
382 :
デフォルトの名無しさん :2008/01/25(金) 16:29:04
クラスにどんなメソッドがあるのかを見て勉強しているのですが docs/ja/api/index.html java.util.Scannerを見るとテキストスキャナということが分かるのですが 例えばファイルの中に特定の文字列を見つけ出すメソッドはあるのかな? と思ったときどのように探していいのか分からないでいます 探し方をお教えていただけないでしょうか
ググレカス
ググレというかjavadocよく嫁の方じゃないか?
>>382 基本は「ググれ」だけど、javadocから探せないこともない。
パッケージの一覧を見ると、ある程度は絞れるよ。
例えば、ファイル入出力ならjava.ioパッケージ。
文字列の検索なら、文字列のクラスjava.lang.String自身を調べるか、
またはjava.util.regexパッケージ。
両方見ると、「ファイルの中に特定の文字列を見つけ出す」処理をいっぺんに行う
メソッドが見つからないことが分かるので、
ファイルを読みとるクラスと文字列を検索するクラスを
組み合わせて自分で実装する必要があると理解できる。
とまあ、こんな感じで。
386 :
デフォルトの名無しさん :2008/01/25(金) 17:12:38
387 :
デフォルトの名無しさん :2008/01/25(金) 18:15:58
>>385 さすがにそれは無理がある。現実的じゃ無い。
書いてあることを探し出すのは容易だが
書いてないことを探し出すのは相当根性がいるぞ。
ググったほうが早いと思うな。
いくらパッケージからある程度想像付くとはいえ、API リファレンスってのは 目的から引くためのリファレンスではない。API リファレンスなんてのは所詮 部品の説明であって、やりたいことを実現するためにどの部品をどう組み 合わせれば良いかの説明は薄いと言わざるを得ない。
>ファイルの中に特定の文字列を見つけ出すメソッドはあるのかな の場合はストリームから文字列取り出せば良いだけだからjavadoc読んでたら分かると思うんだが。 ググってもjavadoc読んでもそれそのものは無いしさ。 APIリファレンス読んでみるしかないんじゃないか?
390 :
デフォルトの名無しさん :2008/01/25(金) 18:43:55
まずはリファレンスで検索しようよw
391 :
デフォルトの名無しさん :2008/01/25(金) 21:11:41
無いものをどうやって検索しろと?あんた脳に蛆が沸いてない?
無いということがわかるだろw
まあ落ち着け
最初はindexOfでいじゃないか
>>382 startsWith("String")とendsWith("String")使えば簡単な文字列解析できるよ。
java歴1年になるけど今日偶々javadoc見てたらみっけたw
くは〜 節穴俺orz
javadocの見方がわからないポスケテ
正八面体は何とか作製することが出来たのですが、どうしても正六面体が出来ません。 正六面体の座標値はどういう風に求めれば良いのでしょうか?
数学板かと思ったw
399 :
デフォルトの名無しさん :2008/01/26(土) 08:38:01
グーグル先生に聞けよ
400 :
デフォルトの名無しさん :2008/01/26(土) 08:39:21
ちょっとまて、正六面体って立法体じゃねーかw
>>397 正八面体と正六面体は双対の関係にありますので、
正八面体が書ければ正六面体も書けると思います。
403 :
デフォルトの名無しさん :2008/01/26(土) 11:31:49
JDK6.0日本語ドキュメントの始めのページをIEで開いても ましっろな空白のホームページになってしまって見ることが出来ません。 ワードで開くとちゃんと表示されます。 環境はwindows vista です。 本当に困っています。 よろしくお願いいたします。
いえいえ、こちらこそよろしくお願いいたします。
お構いもしませんで。
406 :
デフォルトの名無しさん :2008/01/26(土) 12:03:22
ありがとうございます。 親切にしていただいたおかげで背が3cmも伸びました! 本当にオススメです。
ではお言葉に甘えさせていただきます
座標値を指定してもならないのです… もうちょっとグーグル先生に相談してきます
指定したURLのソースコードを読み込みたいのですが、HttpURLConnection.getInputStream()が重たいようであまり速度がでません
以下のプログラムより高速にソースコードを取得できる方法があったら教えてください
よろしくお願いします
HttpURLConnection huc = (HttpURLConnection)new URL("
http://www.google.com/ ").openConnection();
InputStream is = huc.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String s;
while((s = br.readLine()) != null){
source += s;
}
ネット回線が遅いんじゃないのか
412 :
デフォルトの名無しさん :2008/01/26(土) 18:56:25
javacにパスが通っていれば、コンソールでjavacを実行するとヘルプみたいなのが 表示されるんですか?
そう
ありがとうございます。 それでしたら、僕はパスが通っていません。 XPでPathを更新したら、XPの再起動が必要なんでしょうか?
415 :
デフォルトの名無しさん :2008/01/26(土) 19:35:25
コマンドプロンプトの再起動は必要
>>18 書籍Java Puzzlerにそんなクイズがあった気がするぞ
>>415 そのとおりでした。ありがとうございました。
appletviewerでアプレットを実行する時、実行するアプレットを引数で指定しますが その拡張子がjavaであるのはなぜですか?
Java Media APIsのスレ立てたんでこのスレの範疇を超える以下のAPIは
【JMF】Java Media APIs【JOGL】
ttp://pc11.2ch.net/test/read.cgi/tech/1201346803/l50 に誘導してください。
・Java Media Framework (JMF)
・Java Sound API
・Java 3D
・Java Binding for OpenGL(JOGL)
・Java Advanced Imaging(JAI)
・Java Image I/O
・Java 2D
・Java Speech API
・Java Telephony API(JTAPI)
なんでわざわざ糞スレ立てんの?
おまいみたいな奴のため
おまいみたいな奴のため と書こうとしたがすでにry
424 :
デフォルトの名無しさん :2008/01/27(日) 00:50:40
コンソールへの文字列出力について教えてください。 7-zipでファイルを圧縮、展開すると下記のようなメッセージが表示されます。 7-Zip 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06 Scanning Updating archive test.zip Compressing fveupdate.exe Compressing HelpPane.exe Compressing hh.exe Compressing iis7.log Compressing MEMORY.DMP 4% このCompressing <ファイル名>ってのがゾロゾロ表示されて進捗を示すのですが 一番下ってか最新の行にだけ進捗のパーセンテージが表示されるんです。 これをパクりたいのですが、どうすれば良いのか分かりません System.outを調べたのですが、一度表示した行を修正するなんて方法は書いてないですし javaで同じ事をするにはどうすれば良いでしょうか。
\r
\b
linux系だとエスケープでできるけどwinは無理
>>427 ANSI.SYSだっけ、組み込んだらできないかな?
やってもないけど、昔コマンドラインでエスケープシーケンス動かそうと思ったら
そういう解決方法があったとおもうなぁ。
以上、まぬけな二人組でした
Windows95,98は標準で組み込まれてるけど2000,XPでは外されたってやつ? それMS-DOSの方じゃなかったかな。
431 :
デフォルトの名無しさん :2008/01/27(日) 06:34:40
\r だろ、フツー。
432 :
デフォルトの名無しさん :2008/01/27(日) 09:26:23
Collection.sortでStringの並びをDBからORDER BYしたものと一致するようにしたいのですが Comparatorでどう実装するでしょうか?
433 :
デフォルトの名無しさん :2008/01/27(日) 10:47:08
DBからORDER BYするときに使うカラムで比較すればいい
各カラムを別々のコレクションに入れてるならちんぽ
>>432 Stringは java.lang.Comparable を実装してるから Collections.sort(List) が使える。
また、TreeSet 等の実装でもそのまま使うことが出来る。
但し、StringではUnicodeで比較するので、他の文字セットの並び順にする場合は、
そのバイト配列を取得し、比較すること。
Stringを保持するRow を並び替えるときは、ComparatorでString.compareTo等を流用。
取ってきたときの順序を何らかの方法で覚えておく(Listや順序付きMapに入れるなど)のが一番カタい。(と言うか、俺ならそうする) そもそも order by してないとかだと、DBの比較アルゴリズムを調べてそれと同等なComparatorを自力で実装するしかない。
クラスのprivateに関して質問があるのですが教えていただけないでしょうか? 内容は変数を外部からいじられたくないときにprivateをつけると書いているのですが概要がよくわからないでいます 例えば car.javaに class Car { private int weight; } // コンストラクタ// Car(int weight) { this.weight = weight; } void setWeight(int weight) this.weight = weight; } setcar.javaに Car vitz = new Car(100); vitz.setWeight(200); 外部ファイルからのvitz.setWeightを実行しているのに値が変更できてしまう理由が分からないでいます vitz.setWeight();はvitz内のメソッドとなっているので内部になっているのでしょうか?
private メンバは外部クラスから vitz.weight = 100; とか直接やられないようにするもの。 setWeight() で間接的に変更するのは問題ない。メソッドにしておくことで後で内部構造や 動作に変更があっても Car クラス内で対処できる (ことが多い) から。 public void setWeight(int weight){ this.weight = weight; recalculateWeightBarance(); }
あれ、書き込みショートカット押してしまった orz recalculateWeightBalance(); // 最適なウェイトバランスを再計算 private void recalculateWeightBalance(){ // ... }
Carクラス生成後にweight変数をいじられたくない場合は、セッターメソッドをCarクラスに作らなければよい。 それはクラスを作る人間の自由。
j2sdk1_3_1_21で動作するプログラムを j2sdk1_4_2_16でプログラムを動作させるにはどうすれば良いですか?
コンパイル
コンパイルするとエラーがいっぱい出るんですけど…
先生:エラーが出たらどうしますか? ゆとり:2ちゃんにエラーがいっぱい出たとカキコします
445 :
デフォルトの名無しさん :2008/01/27(日) 18:22:17
2ちゃんに書いても解決しない
せめてどんなエラーが出たとか書けよ。学生なんだろうけど。
java使ってるプロジェクトって開発環境がぐちゃぐちゃなの多くてヤダな、なんでだろう。 開発環境さえキチンと整っていれば結構良い言語なのに いままで何回もJAVA案件の仕事したことあるけど、たいていどこのチームもデバッグはSystem.outPrintで変数の中身みてたりする。 時代を逆行してどうすんだと毎回思う。 ぶっちゃけ.netの方が楽だわ。
>>824 あ,この場合「棒」を弄っても「おいなりさん」を弄っても1としてカウントしてね^^
449 :
448 :2008/01/27(日) 19:33:58
すみません誤爆です><
これは良い誤爆
>451 使わないよ
個人的には.NET、というかMSが出すものの方が 時代に逆行しているように思えることが多いな なんか、かれらは自動化とか全く考慮してくれないし
ビルドの自動化とかやってるじゃないか ExpressEditionばっかり使ってるからそんなこと言うんだよ Team Systemを使いなさい Javaはオープンだけど、その分、いろんなものが出てきて分かりづらくなる .NETならMSのやり方に従うだけでいい 基本的なものは全部スイートに用意されている 逆に言えばMSのやり方に拘束される まぁどっちがいいかは対象とするシステムと要員で決まってくるから、個人がどうこういってもね
>>438 >>440 ありがとうございます
外部内部で考えるのではなく
直接的か間接的かで考えると分かりました
Reporting Servicesとか、どうやってテストの自動化すりゃいいんだよ 教えてくれ
いまどきタダでIDEとデバッガが使えるのに何言ってんだこいつは?
Reporting Services知らない?
まぁJavaスレだしね
Team System使えばReSharper、NUnit、NUnitAspあたりは不必要になるんか? なら検討したいけど、そうじゃないだろ? 結局MSオンリーじゃまともなIDEじゃないんだよ。 そこらへん含めて考えたら、Javaも.NETも大して変わらん。 >456が言うように、Reporting Serviceとかノンコーディングを謳ってるものは 確かにテストの自動化のやりようがないけどな。
Team SystemはテストツールがIDEに組み込まれてるだろ ここで意見が出るか出ないかで判断するより、製品を調査したほうが確実
いや、テストツールが含まれてることは知ってるけど、 ReSharperとかの代わりになるようなものじゃないだろ。 ReSharperはテストだけじゃないし。 そういうのもひっくるめて考えると、 Team Systemだけあっても実際の開発には使えない、って話。
あぁ、そういうことね ReSharperが何者かしらないけど
って、Javaスレでなにやってんだオレ・・・
すいません、質問です。 JRE1.6ってJISX213:2004に対応している?ような事があったと思うんですが WindowsJavaアプリ環境で環境依存文字をUnicodeで取得して それをgetBytes()でSJIS?MS932?どちらかはわかりませんが 環境によって自動取得するときちんと文字が取れずに「?」という風になってしまいます。 JISX213の規格内にSJIS2004ってのもあるんですが、JRE1.6では、こちらには対応していないのでしょうか?
誰か通訳を
>>466 まずは冷静になってもう一度説明してごらん
というかフォントのエンコードと文字セットのサポートは実装依存だろ。
スレ違いな感じがするのですが…誘導でもどんなヒントでもいいのでお願いします HPのプルダウンが変更されたらJAVASCRIPTを動かしたいのですが、可能でしょうか?
<select onchange="alert('氏ね');"> <option value="1">1回</option> <option value="2">2回</option> <option value="3">3回</option> </select>
473 :
471 :2008/01/28(月) 04:46:08
>>472 即レスありがとうございます、本当に助かりました!
お手数をおかけして済みませんでした
1回、2回、3回は笑ってしまった…w
スレ汚し、失礼しました
Javaが提供してる基本クラス数って合計するとどんくらいあるんですか?
基本クラス?何それ?
失礼します。初心者です。 ユーザーの入力する数値を年月日で区切って取得したいのですが、どのようにすればよろしいでしょうか? 宜しくお願いします。 public static int readBirdate(Scanner kb) { System.out.print("誕生日を入力してください(年 月 日: "); int ubir = kb.nextInt(); return ubir; }
DateFormat df = new SimpleDateFormat("yy'年'MM'月'dd'日'"); Date date = df.parse(ubir);
480 :
477 :2008/01/28(月) 13:32:15
すみません。良いヒントもらったので頑張ってみたけど、やっぱり無理でしたorz
実は宿題でして、ユーザーに今日の日付と誕生日を入力してもらって、年齢を割り出すというプログラムです。
>>477 の式で、
今年: 2008(←入力)
誕生年: 1980(←入力)
(計算)
年齢: 28
といった感じで年だけの計算はできるのですが
今日(mmddyyyy): 1 28 2008
誕生日(mmddyyyy): 2 17 1980
といった一度に年月日全ての値を得るやりかたが、どうしても分かりません。
すみません、ご教授お願い致します。
>>480 指示された入力形式は mmddyyyy、入力例が 1 28 2008、
一貫してないのでなんとも。全角半角もごっちゃだし。
スペース区切りならば mmddyyyy は [m]m [d]d yyyy とかすべきじゃね?
もしスペース区切りでないのなら、入力例は 01282008 みたいに
最初は0つけないとダメだし、スペースが間に入っちゃメでしょ。
482 :
477 :2008/01/28(月) 13:54:09
>>481 すみません。スペース区切りです。
//出力例
今日の日付を入力してください(mm dd yyyy): 1 28 2008 (←入力)
あなたの誕生日を入力してください(mm dd yyyy): 2 17 1980 (←入力)
貴方の年齢は 28才です。
//
支持されている出力例はこんな感じです。
1980年生まれって誕生日くるまでは 27歳じゃね? 28表示していいのか?
数え年なんじゃね?
ちなみに、数え年だと29才のはず。
486 :
477 :2008/01/28(月) 14:13:15
無視してくださいorz
>>477 文字列の取得自体はできるみたいなので、続きだけやるとこんな感じか?
//文字列をCalendarに変換
String now, birth; //"1 28 2008" と "2 17 1980" を入力させる。
DateFormat df = new SimpleDateFormat("M d yyyy");
Calendar today = Calendar.getInstance(); today.setTime(df.parse(now));
Calendar birthday = Calendar.getInstance(); birthday.setTime(df.parse(birth));
//Calendarから年齢計算
int age = today.get(Calendar.YEAR) - birthday.get(Calendar.YEAR);
birthday.set(Calendar.YEAR, today.get(Calendar.YEAR));
if (today.before(birthday)) age--;
488 :
477 :2008/01/28(月) 14:35:29
JSPを読んでswing系の画面に出すような事は出来るのでしょうか? とりあえずHTMLならJTextPane.setContentType()で表示できるようになるのですが、JSPのスクリプトレットは対応しておらず見る事が出来ません。 何か方法があったら教えてください。 よろしくお願いします。
SWT 使え
JSPってサーバ側で処理するもんでは? それをクライアントで処理したいってこと? 自分で実装するのは大変そうだから、なんか適当なwebサーバ内蔵してループバックでhttpするのが楽かも
そういう意味か。 Tomcat でもビルトインしないとできねぇから、JSP の代わりに 動的な XML + XSL で HTML 作って JTextPane にでも食わせろ。
public static<T, A> void a(String s) { T data = A.suru(s); } ということをやりたいのですが、エラーが出て実行できません こういうことは出来ないのでしょうか?
できません
>>494 出来ませんか…
ありがとうございました
496 :
デフォルトの名無しさん :2008/01/29(火) 01:10:43
なにをやりたいんだ? public static T <T> a(String s) { return A.suru(s); } ならまだ意味が解るが・・・
>>496 昨日ファンクタというものを知りまして…
それをやってみたかったのです
それならジェネリクスじゃなくて手抜かずにインターフェース使ってヤレ。 ちなみに次のバージョンからクロージャーが入る。
499 :
489 :2008/01/29(火) 09:04:22
500 :
デフォルトの名無しさん :2008/01/29(火) 09:47:26
java言語の書き方(例:if やfor文の書き方)が全部書いてある 日本語のダウンロードできるドキュメントを教えてください
java 言語仕様 でググレカス
任意のTaskを前回のTaskが終了した時点から一定時間経過後に実行してくれる、 SingleThreadなExecutorServiceって存在しますか?
>>502 Executors#newSingleThreadScheduledExecutor
JTreeとJTextAreaを2カラム形式で配置し、 JTreeで異なるノードを選択した時に、JTextAreaの内容を切り替える プログラムを作ろうとしているのですが、上手くいきません。 JTextAreaやJFrameを設定しているクラスと、JTreeを設定しているクラスを 別々に分けているせいか、mouseListenerが上手く動かなかったり、 変数のやり取りが上手くいかなかったりしています。 どういった手順で切り替えるよう組めばいいでしょうか。
本にうっかりヨダレたらしてしまって 後日そのページがごわごわになってて萎えんfg9あぷ9j;:
Excelを出力するのにjakarta poiを使おうと思うんですが サーブレットから使っても大丈夫でしょうか? スレッドセーフというかなんというか、同時に複数動いても 大丈夫なものでしょうか?
>>503 それだとscheduleWithFixedDelayとかで、決まったTaskしか定期実行しかできませんが、
まとめてexecuteしたTaskを必ず一定間隔を空けて実行するような奴とかないでしょうか。
とりあえず自分で実装してしまったのですが、既存実装があったら悲しいなぁと思いまして。
>>504 まず問題点を分けてみないと。
>mouseListenerが巧く動かない
実装が悪いんだろう。
classを分けてるってソース(なんとか.java)を分けてるって意味だよね?
>変数のやりとりが巧くいかない
>クラスを別々に分けているせいか
ひとつのソースで動くプログラムならソースを分けても動く道理。
classから違うソースのclassの呼び出し方が判らないとか変数が読めないとかなのか。
単純化したひとつのソースで試してみる。
質問です。 「演算子+は引数の型double,Graphicsで未定義です。」 というエラーがでます。これを解決するにはどうすればよいでしょうか?
510 :
デフォルトの名無しさん :2008/01/29(火) 14:30:54
>509 double a = ???; Graphics b = ???; a + b; こんなことは出来ないってことを言ってるんだよ。 とりあえず、プログラム見直せ。 >510 import java.util.Date; でOK
512 :
509 :2008/01/29(火) 14:39:11
>>511 コンパイルしたいです。
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class a {
public static void main (String args[]) {
Date d = calendar.getTime();
SimpleDateFormat f = new SimpleDateFormat("EEE", Locale.JAPANESE);
String s = f.format(d);
System.out.println(s);
}
}
514 :
デフォルトの名無しさん :2008/01/29(火) 14:53:52
>513 calendarってのが定義されてないからコンパイル出来ない。
CSVを解析するプログラムを作っていて「java CSV」で検索したのですがあまりよいものがなく 「CSV 正規表現」で検索したらPerlのサイトが出てきて自分なりに作ってみたんですけど疑問がいくつかあるので質問させてください。 ========================================== import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.regex.Pattern; import java.util.regex.Matcher; public class CsvSplit { private static final String CSV_SPLIT_REGEX = "(\"(?:[^\"]|\"\")*\"|[^,]*)"; private Pattern _pattern; /** * 実行用のメイン */ public static void main(String[] args) { CsvSplit aaa = new CsvSplit(); ArrayList csvArray = aaa.readCsvFile("C:\\zzzzzzzzzz.csv", "JISAutoDetect"); Iterator ite = csvArray.iterator(); while(ite.hasNext()) { String[] csvData = (String[])ite.next(); for (int i = 0; i < csvData.length; i++) { System.out.println("-------------"); System.out.println(csvData[i]); System.out.println("-------------"); } } }
/** * コンストラクタ */ public CsvSplit() { this._pattern = Pattern.compile(CSV_SPLIT_REGEX); } private ArrayList readCsvFile(String fileName, String charsetName) { try { // ファイルの取得 BufferedReader br = new BufferedReader( new InputStreamReader( new FileInputStream(fileName), charsetName)); ArrayList csvArray = new ArrayList(); String columnValue = ""; try { // ファイルから1行ずつ読み込む while (br.ready()) { String lineData = br.readLine(); // ダブルコーテーション以外の文字をすべて削除しダブルコーテーションの数を数える。 // ダブルコーテーションの数が奇数の場合は次の行も読み、再び奇数になるまで読み込む if (lineData.replaceAll("[^\"]", "").length() % 2 == 0 && columnValue.equals("") || lineData.replaceAll("[^\"]", "").length() % 2 == 1 && !columnValue.equals("")) { columnValue += lineData; String[] splitData = splitCsvData(columnValue); columnValue = ""; csvArray.add(splitData);
} else { columnValue += lineData + "\r\n"; } } return csvArray; } finally { br.close(); } } catch (Exception ex) { ex.printStackTrace(); return null; } } /** * CSVデータの1行を分割して配列にして返却する。 * 改行が含まれるデータの場合は必ず奇数となるので、奇数である限り取得処理を繰り返す。 * ただし、CSVデータは以下の条件で保存されている場合に限る。 * 1.基本的にコンマで区切った部分がスペースを含めて値である。 * 2.値にコンマ、ダブルクウォート、改行が含まれる場合は、値全体をダブルクウォートで囲む * (コンマやダブルクウォートがない場合に値全体がダブルクウォートで囲まれていても問題ない) * 3.値に含まれるダブルクウォートは "" となる。 * @param csvLine * @return */ private String[] splitCsvData(String csvLine) { ArrayList csvDataArray = new ArrayList(30); Matcher matcher = this._pattern.matcher(csvLine); boolean isDataSkip = false; String columnValue = "";
このまま俺らにデバッグしろと言う気か
// 正規表現に従い取得する。 while(matcher.find()) { // なぜか値が取得できた場合の次の値が空文字として取得できるのでスキップする if( isDataSkip ) { isDataSkip = false; continue; } String result = matcher.group(); // 値が取得できたかどうか if( !result.equals("") ) { isDataSkip = true; } // データの前後がダブルクウォートで囲まれている場合は省く if(result.startsWith("\"") && result.endsWith("\"") ) { result = result.substring(1, result.length() - 1); // データにダブルクウォートがあれば1つに置換する result = result.replaceAll("\"\"", "\""); } // セット csvDataArray.add(result); } String[] splitData = new String[csvDataArray.size()]; csvDataArray.toArray(splitData); return splitData; } } ==========================================
>>518 長くてすいません。。。
質問なんですけど、
1.readLineで1行ずつ取得していると改行データを含む行が分割されてしまうので本当はCRLFが
正しいデータかわからずreadLine以外に効率よく確実に読み取る方法ってありますでしょうか?
2.perlのサイトだと正規表現でダブルコーテーションの数を直接数えてるんですけどjavaの正規表現だと
どうやるのでしょうか?
3.正規表現で値を取得した場合次の値が空文字として取得できてしまうのですが
正規表現がいまいちよくわからず・・・。パターンの悪いところや正しいパターンを教えていただけないでしょうか。
4.@ITでC#で「^(?:(?<1>"[^"]*"),?|(?<1>[^,]+),?|,)*」というの見つけたのですが動かず。。。C#とjavaってそこまで違うのですか?
長文駄文ですいません。お手数おかけしますが宜しくお願い致します。
よくググレCSVライブラリあるぞ。 ところでThe Java Virtual Machine Specificationの和訳って本しかないかな? 本買おうか悩んでるんだけど。
ネットにあってもどうせ広告すらクリックしないだろ乞食
>>520 これをコピペしてコンパイルして自分で色々実験してみるがよろし。
あと、JavaのとPerlの正規表現はほぼ別物と考えた方がいい。
public class RegExp {
public static void main(String args[]){
String patStr = null;
String text = null;
if(args.length <= 0) {
try {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Pattern: ");
patStr = br.readLine();
System.out.print("Text : ");
text = br.readLine();
} catch(IOException e) {
e.printStackTrace();
}
} else {
patStr = args[0];
text = args[1];
}
Pattern pattern = Pattern.compile( patStr );
Matcher matcher = pattern.matcher( text );
if(matcher.matches()==true)
System.out.println("match");
else
System.out.println("not match");
}
}
ある文章から指定した正規表現に一致するもののみを抽出したいのですが、そのものずばりな方法ってありませんかね? 一致するものをひとつずつ探して、それらを結合する、といった方法しか思いつかないのですが、もっとスマートな方法があったら教えてください。
>>522 広告クリックしてもらえなかったのか。よしよし。
>>524 それぐらいならスマートな方じゃないかなと。(というかスマートって何さ
貴方の理想が魔法のステッキなら話は別ですが…
便利な魔法のステッキも最終的にはどこかで地道な作業をやってるわけで。
ありがとうございます、ひとつずつで実装することにします。 Lispから入った捻くれなので、リストは一括操作でないとどうにも落ち着かないのです。
「Lispから入った捻くれなので、リストは一括操作でないとどうにも落ち着かないのです。」 今年に入って一番説得力のある発言を見た
やっぱりLisp使いはJava厨とはわけが違うな
以上、自作自演でした
531 :
515 :2008/01/29(火) 22:35:42
>>521 CSVTokenizerだと正規表現を使っておらず参考になりませんでした。
ほかにもそういったもので参考になるものがあれば教えていただけないでしょうか。
>>523 だいたい同じようなものを作ってようやく形になったのが上記のソースです。。。orz
>>507 まとめてexecuteするときに間にsleepタスクを挟めばいいんじゃない
16進数の文字列表現をintまたはIntegerに変換したいのですけど、 まさにこういった機能をもったAPIがあったら教えてください。 結構探し回ったんですけど見つかりませんでした。
535 :
デフォルトの名無しさん :2008/01/29(火) 23:55:52
すいません、メモリ(ヒープ)サイズについて質問です。 java実行時に-XX:+PrintGCDetailsオプションを指定してgcのログを出しています。 そのログに記録される結果のヒープサイズと psコマンド(ps alxなど)の結果(RSS)が一致しないんですが、 プロセスサイズ=ヒープサイズ+JVM自身が利用するメモリサイズ ってことであってますか?
536 :
533 :2008/01/29(火) 23:57:21
>>534 parseIntは散々試してみましたけどだめでした。
なむふぉでまくりです。
decodeがまだだったので試してみます。
537 :
533 :2008/01/30(水) 00:04:07
うまくいきまんた
>>524 あらかじめずばり抽出できる構造で文章を保持しておけばスマートじゃね?
>>531 なんでそこまで正規表現を使いたがるのかな?
正規表現って便利だけど実行速度はすごく遅いよ。
>>521 和訳は本しかない
VMの対応バージョンは1.3か1.4あたりだったかな
5.0でバイトコードのフォーマットが変わったから、買おうか悩む
541 :
デフォルトの名無しさん :2008/01/30(水) 00:33:30
伝わりにくいと思うんですが、文字列を相手に入力してもらう方法と、その入力してもらったいくつかの文字列をランダムに組み合わせるってできますかね?
542 :
デフォルトの名無しさん :2008/01/30(水) 00:35:36
伝わりにくいね。 〜してもらう方法と、〜をランダムに組み合わせるってできますかね? ・・・日本語がおかしいから伝わりにくいんだろうね。
List に突っ込んで Collection#suffle() して連結。
×伝わりにくいと思うのですが ○伝わらないと思うのですが
入力:いくつかの文字列 出力:入力をランダムに並べ替えたもの もしくは 入力:いくつかの文字列 出力:入力のいくつかをランダムに並べ替えたもの 他にもいろいろ考えられるけど?
入力:文字列 出力:入力の部分文字列をいくつか作り、それを並び替える とかか。
方法ってできますかね??? なんだかできないきがするんですががが
549 :
507 :2008/01/30(水) 00:55:31
>>532 なるほど、その手が・・・勉強になりました。
時期的に学校の課題なんだろうけど、少しは自分の頭で考えないと勉強にならない、 とか言うのは野暮なのかねやっぱり。
ここは将来の脅威の摘むためにバカを増やすスレですが。
>>540 SE 7でもバイトコードのフォーマット変わるんだよね。
本の内容がどんどん古くなるから買おうか悩むんだよ。
553 :
デフォルトの名無しさん :2008/01/30(水) 02:49:09
(当方、本職プログラマーでなく初心者です) すみません、アプリケーションスコープの使い方で迷ってます。 具体的に書くと、 ショップサイトにて商品ジャンルごとにアクセス数の集積を取りたい と考えたのですが、データベースへのアクセス頻度を減らすためにも、 商品ジャンルのデータベースをそのままアプリケーションスコープに 入れてしまおうかと思っています。ただその場合には10000個数近くの インスタンスを入れることになってしまうのですが、初心者なために これが大丈夫なことなのかよくわかりません。 オブジェクトにはintとStringとが半々ずつ、合わせて10個のメンバ 変数があり、Stringには全部でだいたい64文字程度入ります。中身だけ で計算するとサイズは160kbyte程度かと思うのですが、この程度ならば 全然気にしなくても大丈夫な感じでしょうか? その何万倍いっとけ、 とかそういったレベルならいいのですが、よくわからなくて……。 指針となるドキュメントを見つけられなかったのでこちらで質問させて もらいましたが、皆さん、アプリケーションスコープに入れるデータ サイズはどれくらいまでにしてますか? サーバーのスペック如何なところではあると思うのですが、アドバイス あればどうぞお願い致します。
それは実際に商品ジャンルのアクセスがネックになってることが明らかで、これを メモリ上にキャッシュすればどれくらいの改善が見込めるという見積もりができている 上で言ってるのか? 普通に考えればその程度のアクセスがネックになるようなら他の処理もウンコチンチンで マシン選定間違えてるだろ。商品ジャンルにメンテ入っても反映されないし、整合性が 保障できないなら下手に SQL で結合もできやしない。
555 :
デフォルトの名無しさん :2008/01/30(水) 03:14:09
なるほど、それもそうですね。 ありがとうございました。
Logging API の設定ファイルって、出力先のファイル分けるためにわざわざ Handler クラス作らなきゃいかんのか? 何で出力先の指定が「クラス名」に 紐づいてるんだ? インスタンスだろjk
慣例としてクラス名を使っているだけで、名前には何でも使用できたと思うが?
>>535 >プロセスサイズ=ヒープサイズ+JVM自身が利用するメモリサイズ
>ってことであってますか?
ヒープもJVMが利用するメモリなわけだが・・・
ヒープは、Javaから見えるメモリ空間だけど
JVMは、実行用のスタックメモリを持っていてこれは
ヒープメモリに入ってこない。(ヒープじゃないし)
あと、Hotspot用とかあるし。
ヒープサイズを越えてどれくらいメモリを使うかは決まっていない。
(スタックとかはある程度判るが・・・)
unicodeのソースでreplaceAllで"\\t"(TAB)が置換できない。どうやってやるの?
>>559 ふつーにできるよ?
System.out.println("aaa\tbbb\tccc".replaceAll("\t", "[TAB]"));
結果: aaa[TAB]bbb[TAB]ccc
>>559 分からないので、ひとつえsp
replace を始め、String系の変換で良くある間違い。(てか、今やって見て久々に…
Stringは不変オブジェクトです…
要は、インスタンスメソッドで値が変わってるかのように見えても、
単に新たなStringを生成して返してるだけ、という…
563 :
559 :2008/01/30(水) 14:10:08
わかりました。 正 s = s.replaceAll("\t", ""); 誤 s.replaceAll("\t", ""); ありがとうございました。
オブジェクトを直列化して受け渡しする際のImageIconの仕組みについて質問です。 java.awt.ImageクラスはSerializableインターフェースを実装していないため、swingのImageIconでラップして直列化しているのですが、なぜImageIconが画像を正しく直列化出来るのかが理解出来ません。 ソースをざっと見たのですが、画像を保持しているフィールドには、transient修飾子がついている上、他の部分でも特にこれという箇所は見つけられませんでした。 ImageIconがどのように画像を直列化しているのか、解説かヒントをいただけるとありがたいのです。 よろしくお願いします。
>>565 private void writeObject(ObjectOutputStream) メソッドがあるだろう
そのメソッドがあると、直列化するときに呼ばれる
beanshell classpathを使いたいのですが、一昨日からサイトが落ちたまま(ドメイン更新忘れ??)です。 beanshell classpathを持っている方、アップしていただけませんか。 www.beanshell.org/
bugparade にバグ投稿すると確認メールか何か返ってくるもんかえ? 何日たってもまったく検索にヒットせんのう。
>>568 俺のときは投稿直後(数分後とか)に自動確認メールが来たけど。
BugDatabaseに登録されたら、その時にもメールが来るはず。
登録されない時は自動確認メールの後、音沙汰がなくなったような。
>>569 そーなのか、じゃどっかでロストしたな。
センキューベイベー
ExecutorServiceって、一度shutdownすると再利用はできない?
>>558 プロセスサイズ=ヒープサイズ+スタック+Hotspotってことすね。
thx
ってか今、遊びで作ってるプログラムなんだけど、
プロセスサイズが右肩上がりで肥えていく・・・
ヒープは正常(増減を繰り返す)っぽく見えるのよね・
もうよく分からん。javaは難しいな・・・
573 :
デフォルトの名無しさん :2008/01/31(木) 02:36:01
rt.jar変えずにString.toString()の挙動を return this; ↓ return "hoge" + this; に変更したいんだけど、これって可能? Javassistとかバイトコードいじる以外で。
>>573 私は出来る方法を知らない。
が、何に使うのか。そこには興味がある。
実行時のAOPで出来ないの?
>>575 AOP…
私の知ってるAOPはバイトコードをいじるのですが、何か別の方法があるのでしょうか
577 :
デフォルトの名無しさん :2008/01/31(木) 09:36:44
ちょいと質問です。
TBNって個人のニュースサイトなんですが、
ttp://tbn2.blog50.fc2.com/ タブブラウザのJavaScript実行を切ってても
ページが表示されると勝手に実行に切り替わってしまいます。
というかoffにすることが出来ません。
これってどいゆう仕掛けなんでしょう?
ここはJavaの質問・相談スレッドだと思う。
579 :
デフォルトの名無しさん :2008/01/31(木) 09:55:17
>>578 スマソ
どこの板に質問していいか分かんなかったんでココに書き込ませてもらった。
どーしてそうなっちゃうのが知りたいんだが、分かりますか?
web板へ池
ここにいる人は知ってるかもしてないけど、文字列解析の良いロジック思いついたから 晒しとくわ。 String word //解析したい文字列 for(int i=0; i<word.length(); i++){ if(word.startsWith("NGワード",i){ //処理したいロジック } else{ } } //else ifでNGワード追加していけばいくらでも設定できる こんなんどうでしょ? もしかしたら文字列の長さ1からカウントするかもしれないけど例外は出ないし NGワードが最後にあるってことは少ないと思うのでモウマンタイで。
!目から鱗w天才なんじゃね
NGワードにJavaScriptを追加しろということですか?
584 :
581 :2008/01/31(木) 10:19:07
すまそjavadoc見たらlength()の長さは文字列内の16ビットUnicode文字の数に等しくなります。 だと for(i=1; i<=word.length(); i++){ } に修正
>else ifでNGワード追加していけば この時点ですごく残念な感じが漂っているような気が。
・・・。 ヘボすぎてため息出ちゃうね。
>NGワードが最後にあるってことは少ないと思うのでモウマンタイで。 大問題w
588 :
森園くるみ :2008/01/31(木) 11:55:10
森園くるみと申します。 ★実装方法についてご教授いただきたくぞんじます。 内容:s2Maiでhtml形式のメールを送信したい (Content-Typeにtext/htmlを設定したい)
589 :
581 :2008/01/31(木) 12:01:05
失礼、私もまだまだでしたね。 ロジックを思いついた勢いでへボソース晒してスマソ
>>588 Seasarのスレに行った方が早いんじゃない。
あと、本物か知らないけど名前は書かないほうがいいよ。
オープンアプリで、レコードストアとかデータフォルダの容量を 0にするまで一時ファイルを作るようなアプリって 作成可能ですか? 文字をレコードストアに保存するまでは分かったんですが、 でかい容量のファイルの作り方が見つからないので。 初心者なので、参考になりそうなサイトがあったら教えてください
まず、自分のやりたいことと課題点を整理しなさい。話はそれからだ。
コンストラクタでのthis漏洩ってどれぐらい気をつける/気にするもんでしょうか? 内部クラス経由の暗黙漏洩、thisキーワードでの明示的漏洩を問わず。 class Foo { Bar bar; public Foo() { bar = new Bar(this); } } みたいな時、new Bar(this)はthis参照を保存するだけで、それを使うことは無い、とわかってれば 安全なんでしょうが、Barのコンストラクタの実装が変わるとFooも危険になる。 Fooの安全性が、Barの実装に依存することになるのが、なんとなく気持ち悪いけど、割り切ればいいものなのかもしれない。 ってのがモヤモヤするところです。 潔癖にするなら、 class Foo { Bar bar null; public Foo() { } public void initialize() } bar = new Bar(this); } } みたいな2段階初期化なんでしょうけど。 Swingのソースとか見ると、this漏洩しまくりなんですけどね。
594 :
591 :2008/01/31(木) 14:56:18
>>592 簡単に言うと、データフォルダの容量を0byteに出来るようなアプリを作りたいんです。
ただ探してもなかなか見つからないので、
似たようなアプリ、または参考になりそうなサイトがあったら
教えて頂きたいのです
今Jasminでバイトコードのアセンブルやろうと思ってるんだけど、 これって既存のclassファイルをJasminのコードに逆汗(?)してくれたりする? いかんせん情報が少ないような
>>593 何心配してるかさっぱり分かんねーんですけど、相手への依存性高めたくないなら
(相手が信頼置けないなら) アクセス修飾子きちんと付けたりインターフェース化したり
さらにアダプタや Wrapper で包んで渡せば良いじゃん。
>>593 this漏洩が問題になるのは、主にマルチスレッド下だと思う
swingはEDTにバインドされているので、まあ、いいか、みたいな感じなのかも?
検索したら IBM 様のサイトが見つかったけど、this 漏洩なんて御大層な名前 付けるほどでもない単なる非同期設計ミスじゃん。漏洩の使い方間違ってる。
599 :
581 :2008/01/31(木) 15:51:10
文字列の長さも0からカウントするのね・・・ 嘘ブッコいてサーセン
文字のマッチングは古典なのでアルゴリズムは腐るほどあるよ。
というか、未だに、
>>581 のループの意味が分からない・・・・・
何かの謎かけか・・・・
何がしたいか全く不明だ・・・・・
マジレスする生真面目バカがどんだけ居るか調査してんじゃね。
>>581 まぁ、アルゴリズムを考えるのは悪くないが…
この程度なら、String.indexOf(String) 使おう
1.5 からは、String.contains(CharSequence) もあるし、
状況に応じて使い分ければなんとかなるもの。
もちろんソースでそのアルゴリズムを確認するのも勉強になることでしょう。
>>594 なんかのウィルス作成以外の用途があるとは思えないんだが。
そうでないとしても、何したいのか知らないが、そんな力技で
しか実現できない時点で何か間違ってる気がする。
604 :
591 :2008/01/31(木) 17:54:51
わからないなら黙ってろよ
605 :
デフォルトの名無しさん :2008/01/31(木) 17:58:57
たいした事いえないなら黙ってろよ
606 :
デフォルトの名無しさん :2008/01/31(木) 17:59:20
とにかくだまってろよ
RandomAccessFile#setLength()
CLDCってRandomAccessFile使えたっけか?
J2ME の話か。道理で聞きなれない用語使ってると思った。
クラスあたりから理解できねぇ・・ 本が悪いんだろうな本が悪いんだきっと
611 :
581 :2008/01/31(木) 18:25:32
>602 便利なメソッドがありますね。見落としてました。ありがとうございます。
612 :
591 :2008/01/31(木) 18:42:45
なんか僕の偽物が出てますがスルーで。 まぁここの方でも分からないようなので諦めます。失礼しました
613 :
デフォルトの名無しさん :2008/01/31(木) 18:46:18
マルチスレッドでアニメーションを作成しています。 ある図形を平行移動させて(四角形を描く感じで)最終的に元の位置に戻すにはどうすればいいですか? 毎回ランダムな場所を通したいんです。 switch文とRandomクラスでできそうですが、美しくない… 図形の座標計算は別クラスです。 説明下手ですみません。よろしくおねがいします
次スレからDoJaやCLDCはスレ違いと書いておいた方がいいんでないか
616 :
581 :2008/01/31(木) 18:53:49
てか俺質問しに来たわけでは無いんですが・・・ 俺のレス読んで;;;;
617 :
デフォルトの名無しさん :2008/01/31(木) 19:02:02
質問よろしくお願いします。 親子関係にあるAとBのクラスを作っています。 Aにはhoge()というメソッドがあります。 Bには複数のメソッドがあります。 Bのメソッドが呼び出される時、 必ず最初にAのhoge()を呼び出してから各処理をさせたいのですが メソッドそれぞれでhoge()を呼ぶように記述する以外の方法で hoge()を呼び出すことはできますか?
1. B をインターフェース B1 とコンクリートクラス B2 に分ける。 2. ファクトリを作成しダイナミックプロキシをかました B1 インターフェースで返す。 3. ダイナミックプロキシのハンドラで B2 の任意のメソッドを呼ぶ前に必ず hoge() を呼び出す。
Proxy
AspectJとか、Javassistもあるね。
>>618-620 レスありがとうございます。
教えていただいた用語を基に調べて行くことにします。
ありがとうございました!
>911-912 が本物と偽物思ってしまった・・・
625 :
デフォルトの名無しさん :2008/01/31(木) 20:16:31
axisをtomcat以外で使用するにはどうすればいいですか??
>>597 マルチスレッドじゃなくても、コンストラクタ内でthisが漏れると、
コンストラクタが完了する前に、private finalなのに初期化前のフィールド値を
参照することになったり、
それを継承すると、super()の中から自分のメソッドを呼ばれて、
そのクラスのコードを1行も実行する前にフィールド参照が起こったりと、
しっちゃかめっちゃかになると思うんですが。
単にそれ設計が糞なだけだろ。呼び出しと依存関係がスパゲティになってるような。 this とか関係ねーし。
今実験しててjavaのバイトコード中に 12 : goto 42 : 42 : iadd みたいなジャンプ後にいきなりスタックのオペランド使うようなコードが 入ってるともしかしてローダに怒られるようになってんの?なんかベリファイエラーでて "Unable to pop operand off an empty stack" とかって言われんだけど・・・
スタックが空じゃん 取り出すオペランドが無いじゃん
>>629 実質スタックには実行時必ず何かしら乗るようにしたんだけど(動かせば問題ないはず)
VMがロードする時点で(実行しなくても)エラー吐いちゃうからさ・・・インタプリタ作ってんだけど
>"Unable to pop operand off an empty stack" javaにしては意味が分かりやすいエラーメッセージだな。
Java VM Specificationのベリファイアの項を読めばいいんでないか
今はソースコードもあるしな
>>627 そのスパゲッティ化を起こさないための設計指針の一つがコンストラクタでthisを
外部に晒さない、なんだが理解できんのか。javaプログラマの質が知れるな。
糞コードが量産されるわけだ。
>>632 英語よくわかんないんだけど
For example, it checks that every instruction has a valid operation code;
が今の状況に当てはまってる・・・?
いや、ごめん違うか・・・でも多分ダメなコードなんだろうな
外部から最大ヒープサイズを知るような方法はあるでしょうか?
>>635 そこはInstruction Setにのってないopcode使うなって話だと思うから、
スタックが空ってのとは違うと思うぞ。
>>635 スタック云々だと、データフローアナライザ絡みじゃね?
4.9.2 The Bytecode Verifierの
Next, a data-flow analyzer is initialized. 〜 4.9.2の終わりまで全部。
>>640 でしょうな。まさかJVMがそこまでチェックしてるなんて知らなかった・・・
勉強になりますた。バイバイ
ブラウザのリロードボタンや、アプレットビュアーの再読込クリックしなくても エラーなどのイベントで全く最初からやり直す方法はありませんか?
エラーって例外かね? アプレット相手だと、未だにJDK1.1互換で考えなきゃいかんのか? だとすると、Thread.UncaughtExceptionHandler とか使えないし、 EDT相手だとuncahughtExceptionをオーバーライドしたThreadGroup使って、 ってわけにもいかんだろうし。
>>643 すみまません。書き方が悪かったですね。
具体的にはアプレットのウインドウのリサイズを感知したときに再読込から始めたいのです。
アプレットのウインドウサイズは変わらない前提で作ってあったので、
外部から動的に変更されてそのまま実行するとエラーになるのです。
もちろん全てのスレッドを止めてメモリも解放して、最初からやり直すように書けばいいだけなのですが
もっと簡単に再開できる方法が有ればと…(昔のBASICのRUNみたいに(^^;)
>>644 現実行環境の破棄->再読み込み->再実行 とかを
一発でできる便利メソッドがあるか、って話?
ないはず。
>>645 ありがとうございました。
手抜きは諦めます。
>>639 ありがとうございます。-Dcom.sun.management.jmxremote 設定 + jconsole で
取得できる情報でまさに構わないのですが、起動引数が自由に弄らせて貰えない
状態でして…再起動は許されるかもしれません。
あるいは、上記のようなシステムプロパティを設定しなくてもできるもの
なのでしょうか?
648 :
デフォルトの名無しさん :2008/02/01(金) 15:27:18
って作ればいいじゃんメソッド
>>634 this に関係なくそんなレース問題みたいなのは発生しうる、と言ってるのが
理解できんのかこのバカ。ゆとり読解力だと社会生活も支障あるだろ、マジ同情。
>>646 LiveConnect で JavaScript 呼び出してページリロードでもさせれば?
LiveConnect使うとIEじゃ動かないだろ。 ページリロードくらいjavascriptの範囲で出来ると思うが。
IE だと何が動かないと?
IEってLiveConnect使えなかったっけか?
>>645 AppletContext#showDoculent(URL, String) で、
ターゲットに "_self" 使えば再読み込みできんじゃね?
≫ doculent
IEはActiveXScripting。NNはLiveConnect。
ActiveXScripting て単なるスクリプティング環境で接続仕様じゃないんだけど。 Sun の Java Plug-in ドキュメントでも使い分けてないし、ベースが Netscape の LiveConnectにあわせたインターフェースなんだから LiveConnect で良いじゃん。
AWT で言うところの Canvas って Swing で JPanel 使えば良いんですかね? コンポーネント配置するんじゃなくて自分で描画する奴。
JPanelでもいいがJComponentでもいい paintじゃなくてpaintComponentをオーバーライドすること
>>657 一人でそう思っとけばいいだろ、いちいち騒ぐことでもない
(´,_ゝ`)プッ
言語仕様3版から導入されたコンストラクタ終了時のfinalフィールドの可視性の保証は、 this が漏洩されると保証されなくなるって聞いたけど、 コンストラクタがオーバライド可能なメソッドを呼び出すことについては、どう扱われているん? おしえてエロイ人
普通に未初期化の null とか 0 とかの値で参照してしまうだけじゃね。
664 :
デフォルトの名無しさん :2008/02/02(土) 02:12:51
JNDIについてわかりやすいサイトがあればおしえてくれませんか。 EJBの勉強で別サーバで動くEJBを動かしたいんですが、JNDIの設定 がわからなくてエラーがでます。
665 :
デフォルトの名無しさん :2008/02/02(土) 02:47:54
>>664 もうちょっとエラーの内容を細かく書いてみるべし。
昔の Java からどう変わってきたかざっくり書いてある HP ないですか?
質問なんですけど・・・アメーバビジョンとかの GOOD やら BAD を選ぶフォームあるじゃないですか? あれで押しても動画の視聴が遮られないで反映するのって何で実装してるのですか?
web板池
そうします。失礼スマスタm (_ _) m
iアプリスレから誘導されました iアプリでTextBoxに入力する時には一度決定キーで文字入力状態にしますが、 KeyPressedでキーの数字を順次読み込ませてTextBoxに入力させたいのですが、 方法がいまいち分かりません。 public void KeyPressed(int key) { text.setText(text.getText() + (key)); } で良いのでしょうか?ご教示願います。
固有のAPIはここに誘導してもどうしようもないと思うんだが。
>>671 int key が数字ボタンに表示されてる数字(1とか2とか)ならそれで大丈夫。
iアプリのAPIについては良くわからないので別の問題なら私は無理。
というか、〇〇で大丈夫ですか? と聞くぐらいなら、試せばいいじゃないか、と。
「△△になるはずだったんだけど、□□と表示されてしまう」というなら、
解決法なり誘導なり、色々手伝えることがあるとは思うのだが…
674 :
671 :2008/02/02(土) 16:16:25
>>673 質問の仕方が悪く、大変申し訳ありませんでした。
上記のソースを使って編集不可に設定したTextBoxに
入力できるようにしているつもりなのですが、
TextBoxには数字が入力されません。
どうすればよいのでしょうか。
675 :
デフォルトの名無しさん :2008/02/02(土) 16:34:08
Javaアプリケーションを実行形式で配布する方法ってありますか? どこかのスレで話し合われていたら、誘導お願いします。 なんか、過去ログにはあったんですが、 現行スレなさそうで・・・。
>>675 ダブルクリッカブルでいいのかそれともネイティブな実行可能ファイルを吐きたいのかによる。
ダブルクリッカブルでいいならjar生成するときにマニフェストでMain-Class指定。
ネイティブならjava, exeなどで検索。
677 :
デフォルトの名無しさん :2008/02/02(土) 17:22:24
最近、ここ一年くらいJava使ってないんだが、 最近のJavaの近況ってどうよ? SpringとかAjax周りとかO/Rマッピングとか、StrutsとかRoRのJava版とか 昔聞いた記憶があるんだが そのほか新しいトピックがあるとしたら今は何よ?
WicketいいよWicket
679 :
デフォルトの名無しさん :2008/02/02(土) 17:31:28
劇団四季のあの芝居か?
ちょいとパッケージについて質問したいのだがコンパイラ時に classファイルが1つしか出てこないのだが(5つのファイルで構成されている) これは何故なのだろうか・・・。ちなみにコンパイルは通った。 packageの名前が違うというジョークは無い。 ちなみに参考書についていたパッケージのプログラム(4つのファイルで構成) は普通に通って4つ分のclassファイルが出来たのだが。
>>680 javac だと、コンパイルしたクラスが直接使用してない
無関係なクラスは自動的にはコンパイルされないけど、
そーゆー話じゃなくて?
>>681 あ、もしかしたらそれかもしれない。回答thx。
683 :
デフォルトの名無しさん :2008/02/02(土) 21:08:36
例えば計算アルゴリズムを作ってランチャー形式で計算させるようなアプリケーションを作る場合 追加のアルゴリズムをモジュールのように取り込んで別々の計算をさせるようにするには全体をどんな構造にすれば いいのか 何かコツみたいなものあります?
どうでもいいことで恐縮なんですが、java.util.CalendarのMonthって、なぜ0からなんでしょう? 年はおろか、日すら1から始まるのに、月だけ0-11にしたのかわかりません。 一通り調べたのですが、なかなか出てこなかったので、知っている方いらっしゃれば教えてください。
>>685 月は数字じゃなくて、名前がついてるからじゃね?
曜日も0からだし。
687 :
685 :2008/02/02(土) 23:49:24
>>686 すいません、回答ありがとうございます。
その通りでした。
689 :
デフォルトの名無しさん :2008/02/03(日) 01:40:07
わかりにくいボケにわざわざ突っ込んであげる
>>689 に全俺が感動。
691 :
デフォルトの名無しさん :2008/02/03(日) 16:03:37
664です。質問内容がが不明瞭でした。 EJBを使用する際に、 ObjHome objHome = (ObjHome)context.lookup("java:comp/env/ejb/test.ObjHome"); でhomeを取得してくるのですが、 これってリモートでEJBをCALLするときにEJBが存在するサーバIPや ポートの指定などしていないのですが、何故callできるんでしょうか。
>>691 ・InitialContext.lookup()の引数に環境情報を渡す
・jndi.propertiesにホスト情報を記述する
・APサーバのJNDIサービスにエイリアスを設定する
上記のどれか。
何もなければ同一ホストから検索される。
質問させて下さい。
Object obj = new Object() { ... }
こういう文法が理解できません。
中括弧の中では、何をしているのでしょうか。
コンストラクタを定義するのと同時に、
インスタンスを作成している感じでしょうか?
メソッドに与えられるのは引数だけだと思っていたので、
それ以外の何かを同時にしているというのがよくわかりません。
この書き方の概念を教えてください。
出来れば言語仕様上で、こういう記法がどこに書いてあるかの
ポインタも合わせて教えていただけると嬉しいです。
(さらに言えば、日本語で)
こういう書き方をなんと呼ぶのかも知らないので、検索もできず……。
この書き方は、例えば ThreadLocal クラスの
API の 1.4 以降で、使い方の説明に出てきます。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/java/lang/ThreadLocal.html
695 :
693 :2008/02/03(日) 17:33:48
>>694 ありがとうございます!
ぐぐって無事に正体がわかりました!
>>676 ありがとうございます。
ダブルクリックで起動できればいいかなと思っていますので、
ちょっと試してみます。
.batファイルを作ったり、
ショートカットで作ったりしていましたが、
それって、環境変わったらだめくさいきがしまして・・・。
697 :
868 :2008/02/03(日) 19:50:23
>>869 回答ありがとうございます。
ProjectはBuild automatically clean にチェックが入っています。
しかし新しく作成したディレクトリがTomcatで表示されません。
webapp直下にjsp-xxxというフォルダを作ったのですが。
698 :
868 :2008/02/03(日) 20:00:04
誤爆しましたorz
699 :
697 :2008/02/03(日) 20:16:20
697の質問ってどこですればいいのでしょうか?orz 質問先でスレ違いといわれてしまいました。
それだけで状況が解るエスパーを探しているのかい?
701 :
697 :2008/02/03(日) 20:52:24
>>700 回答ありがとうございます。
あと何を書いたらよいでしょうか?
702 :
697 :2008/02/03(日) 21:38:08
くだスレで聞いてみます。
エスパー頼りならどこで聞いても同じだろ
>>703 あとは何を書いたらいいのかわかりません。
何を書いたらよろしいでしょうか?
705 :
デフォルトの名無しさん :2008/02/03(日) 23:52:19
java.lang.Process#waitFor()で永久ブロックになってしまうことがあるので タイムアウトを設定して回避したいのですが、 タイムアウト付のwaitFor代替の方法ってあるのでしょうか? いちいちTimer設定して破棄するしかないのだろうか・・・
706 :
デフォルトの名無しさん :2008/02/04(月) 00:22:23
>>687 Java FAQも古いな。
Java5以降になってから解決した問題が未だに載っている。
Java5以降の開発では有用性が弱冠下がっている。
Java6以降の対応版Java FAQを作るべき時期に来ているのだろうか?
それとも、すでにそれに相当するサイトによって置き換えられてしまったか?
final Process proc = Runtime.getRuntime().exec("/bin/shine"); Thread t = new Thread(){ public void run(){ try{ proc.waitFor(); } catch(InterruptedException ex){/* */}} }; t.start(); t.join(5 * 1000); if(t.isAlive()){ proc.destroy();}
>>702 誤爆してるっていうから、レス番が
>>898 と未来へ飛んでるわけな?
今のところ、
>>898 のレスが無いから、
元の質問も今の君の質問からも、君が何をしたいのか
わからないんだ。情報を出してもらわないことには、質問には
答えられない。エスパーする以外では
>>707 ありがとうございます。
結局waitForのタイムアウト指定版っていうのはないみたいですね…
>>706 こういうまとめ系って Wiki とかじゃないと管理人がヘタったら終わりなんだよね。
他人が勝手にコピペして引き継ぐわけに行かないし。Wiki 立てるのって簡単なのかな?
サーバリソース余ってるからやっても良いんだけど。
すみません。
>>709 アドバイスありがとうございます。そのとおりですね。
apache-tomcatとEclipseを使っています。
EclipseにSeaser2プラグインを入れました。
Churaプロジェクトを新規作成、
デフォルトのindex.jspがtomcatで表示されることを確認(localhost)
で、webapp直下にディレクトリを作成してファイルを置きました。
でコンテクスト定義の更新をかけたのですが、
作成したディレクトリが見えません。
ProjectはBuild automatically clean にチェックが入っています。
おそらくweb.xmlを直さないといけないのでしょうが
どこを直したらいいか見当がつきません。
ネットも探してみましたが分かりませんでした。
よろしくお願いいたします。
Eclipseの外でディレクトリ作って、Eclipse側で更新かけてないというオチは俺は良くやる。
このスレのWikiの更新具合も微妙
>>713 回答ありがとうございます。
Eclipseの中でディレクトリを作っています。
質問ですノ リファレンスの本ってあったほうがいいでしょうか? ワザあり!逆引き速引きリファレンスJavaってのがいいって聞いたのですが どうなんでしょうか?
717 :
デフォルトの名無しさん :2008/02/04(月) 10:11:33
それくらい自分で考えろ。人に聞くことじゃない
>>716 まず本屋でパラパラその本を捲ってみろ。
720 :
デフォルトの名無しさん :2008/02/04(月) 19:44:11
パラパラの本か 見た事無いなあ
721 :
デフォルトの名無しさん :2008/02/04(月) 19:50:11
>>692 サンクスです。
リモート呼び出しでも何の設定もしていなければ同一サーバ上のEJBを探しにいく
ということですね。
同一サーバ上で動かしていますが、
Context initial = new InitialContext();
Object objref = initial.lookup("NewSessionRemote");
で、lookupのところで
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial
が出ます。何か設定しろということらしいのですが・・・
722 :
デフォルトの名無しさん :2008/02/04(月) 21:05:25
初めまして。Javaを最近になって勉強し始めた者です。
サンプルプログラムを探していて、このようなサイトにたどり着きました。
http://www.catch.jp/program/java/ ページ上部の「021: 10個の点が3-Dで移動する」のソースコードをコンパイルすると
classファイルが3つ出現しました。
使い方がわからなかったので、検索してみると「jar」コマンドで複数のclassファイルを結合できると知り、
試してみたのですがなかなかうまくいかないので、皆様のお力をお借りしたいです。
jarファイル作成についてはこのサイトを参考にさせていただきました。
http://www.tohoho-web.com/java/other.htm このような場合にブラウザでアプレットとして動かすにはどうすればよいのでしょうか。
よろしくお願い致します。
失礼します。
for(int i=0;i<numChips;i++){
mapChipImages[i]=createImage(chipSize,chipSize);
int x=i%numChipsInRow;
int y=i/numChipsInRow;
Graphics g=mapChipImages[i].getGraphics();
g.drawImage(mapChipImage,0,0,chipSize,chipSize,x*chipSize,y*chipSize,x*chipSize+chipSize,y*chipSize+chipSize,null);
}
numChips=64,chipSize=32,numChipsInRow=8です。
と、このようなものがあるのですがこちらの5行目(Graphics g=...)にて
Exception in thread "main" java.lang.NullPointerException
というエラーが発生してしまい困っております。
ttp://javagame.main.jp/index.php?FrontPage#rd9af24b こちらのマップエディタの描画処理をrepaint();ではなく基礎-アクティブレンダリングで紹介されているものに
置き換えようとしたのですが上手く行かず困っています。
よろしくお願いします。
マップエディタをアクティブレンダリングにして何の意味があるんだ?
>>725 表示させるだけならアクティブレンダリングの意味ない
>>726 まだ、私は日が浅いため理解するのに時間はかかりそうですが
頑張って理解してみようと思います。
>>727 そうなのですか。しかし、そうだとしても一枚のグラフィックを複数に分けて
使用するというのは今後も使いそうなのでできれば習得しておきたいと考えたのです。
実際、使う画像を一枚一枚分けて保存していては管理も大変だと思ったので。
729 :
デフォルトの名無しさん :2008/02/05(火) 00:31:24
>>729 > JAVAでは一般的に、*.close()すると、*はnullになるように
ならないよ。
>>729 * がnullになる、という状態が上手く理解できていないので、Javaの方だけ説明します。
closeの内部で何をしているかについては実装しだいですが、
API の説明を見る限りでは、「JDBCリソース」を直ちに解放するようです。
try文の外、宣言部分で null 代入してます。
nullチェックをしているのは、値が入る前に例外が発生した時を想定しています。
ヒープからの解放は、GCにお任せなので、制御できません。
732 :
デフォルトの名無しさん :2008/02/05(火) 01:13:45
>>730 >>731 それならfinallyで
if(rs != null) rs.close();
こんなことが書いてあるということは、処理がうまくいった場合は
rs.close();が実行されて、その後にtryを抜けるところで
finallyによってもう一度rs.close();が実行されようとする悪いソースなのでしょうか?
close() は 2 回以上呼んでも問題ないという Connection の仕様だから問題ない。 ただそのサイトのソースの書き方 }finally{ try{ if(rs != null) rs.close(); if(stmt != null) stmt.close(); if(con != null) con.close(); }catch(SQLException se){ se.printStackTrace(); } } とか文字列連結で SQL パラメータ追加したりとかウンコすぎ。
>>733 >}finally{
>try{
>if(rs != null) rs.close();
>if(stmt != null) stmt.close();
>if(con != null) con.close();
>}catch(SQLException se){
>se.printStackTrace();
>}
>}
なにがいけないの?
一個目で例外が出ると全部コケる所?
735 :
デフォルトの名無しさん :2008/02/05(火) 02:04:48
>>733 Cでよくあるclose()のように、そのclose()も2回呼んでもエラーにならないと
想像してはいましたが、Cやってる人なら普通はclose()したらその直後にNULL入れるから
そういうソース見るとウンコかと。
でもJAVA知らないのでclose()の内部でnullする処理があるのか気になりました。
> Cやってる人なら普通はclose()したらその直後にNULL入れる そんなことしたことない。
文字列を返すというクラスbを作りました。 bは引数が1つあって、引数に与えられた文字の手前に"f"を挿入した文字を返します。 結果は"fh"となることを期待しました。 期待通りになるように修正していただけませんか? public class a { public static void main (String args[]) { String g = b("h"); System.out.println("Hello World!!"); } } public class b { b(String c){ d(c); } private String d(String c) { String e = new String("f" + c); return e; } }
738 :
デフォルトの名無しさん :2008/02/05(火) 02:25:07
>>735 それぞれの変数に値入れる前に例外発生してfinallyブロックに行く可能性があるからそういうコードになる。
Javaの人でも close 直後に null を入れて大丈夫です。 但し、最終的な解放は GC 任せですので、あしからず。 Javaの場合は、裏でOSネイティブなリソースを使ってる場合があって、 明示的に解放してあげないと、何時までも占有する可能性がある。 特に、close はそういうことに関係してるかと。
740 :
デフォルトの名無しさん :2008/02/05(火) 02:27:28
>>737 まずコンパイル通せよ。
まぁそのままだと実行しても"Hello World!"としか表示されないだろうが。
ローカル変数なら、nullを入れてもあまり意味がない。 フィールドや、外部に晒した変数なら、nullを入れるのもいいかもしれない。
>>734 その通り。トランザクションの不整合などで rs.close() が例外になるとステートメントや
コネクションがクローズされない。
>>735 大きな try-finally 節の中で何度もオープン/クローズを繰り返すような時はクローズ後に
null を代入して、finally 節の close() は例外発生時の大域的な保障と位置づけることも
あるが、そのソースのように最後に 1 度だけやれば良いようなときは最後の finally に
任せてわざわざ try 節内ではクローズしない。一回目の close() で失敗したときの予備
としてもう一度試行する意図かもしれないが、DB の問題はもう一度やってうまく行くという
ものでもないし。つーかそのページの趣旨は JDBC コーディングどうあるべきかじゃない
んだからそんなお作法的なところは適当に読め。
743 :
デフォルトの名無しさん :2008/02/05(火) 02:36:15
>>738 それはエラーが発生した場合ですよね。
正常な場合にclose()を2回実行しようとするのはウンコだと思います。
>>739 JAVAは解放をGCがやってくれるらしいですが、Cと違って
やってくれるのはnewに対する解放のみなんでしょうか?
>>740 コンパイルしましたがまだ分かりません。
↓a.java
public class a {
public static void main (String args[]) {
String g = new String("");
// g = b("h"); コメントアウトしたらコンパイルできました。
System.out.println(g);
}
}
↓b.java
public class b {
b(String c){
d(c);
}
private String d(String c) {
String e = new String("f" + c);
return e;
}
}
そのソース、シャットダウンシーケンス入ると最悪だなw
748 :
デフォルトの名無しさん :2008/02/05(火) 02:45:47
>>744 文章が簡素で短い。頭に思い浮かべている内容に自信がないみたいだね。
とりあえず744はアホのままでいいから744がスタックについて理解を
深めるのを阻止するためにスタックの話題はスルー。
>>748 ハァ?
ヒント: C はクラスのインスタンスをスタックに置ける
750 :
デフォルトの名無しさん :2008/02/05(火) 02:59:14
>>743 java からJNIなどを使ってネイティブなコードから確保したメモリはGCの対象にはならない。
ネイティブじゃなくても、オブジェクト作成時にJavaやアプリケーションサーバなどで内部的に管理されるようなリソースもGCの対象にならない
(トランザクションとか。アプリ側から参照を外してもJavaVMやAPServerが参照を持っちゃってるからGCの対象にならない)。
こういうのは明示的にcloseを実行することによって管理側から参照が外されてようやくGCの対象になる。
それ以外はアプリ側から参照を無くすだけでGCの対象になる。
close() が必要なのは大抵ファイナライザで呼び出すよう実装されてるけどな (しなくて良いという意味ではなくて)。
↓a.java public class a { public static void main (String args[]) { if(true){//できる。 b b_ = new b("h"); String g = b_.d("h"); }else{//本当はこっっちでやりたい。 String g = new b("h"); } System.out.println(g); } } ↓b.java public class b { b(String c){ d(c); } public String d(String c) { String e = new String("f" + c); return e; } }
public class a{ public static void main(String[] args){ System.out.println(b.d("h"); } } public class b{ public static String d(String c){ return "f" + c; } }
754 :
デフォルトの名無しさん :2008/02/05(火) 03:26:40
>>752 > //本当はこっっちでやりたい。
> String g = new b("h");
これはbをどう変更してもできない。仕様的に。
>>752 String型を返すコンストラクタはString以外には存在しない。
文字列の結合が目的ではないと思うが、
あまりにも簡単なことをこなす為に、拘る内容があまりにも初歩的。
・クラスの継承、型と代入について
・コンストラクタの仕組み、メソッドとの違いについて
>>754 コンストラクタは自分のクラス型しか返せないということですね。
>>753 できました。ありがとうございます。メソッドをstaticにしないとうまくいきませんね。
public String d(String c){
static String s = new String("f" + c);
return s;
}
これだとコンパイルエラーでした。
コンストラクタは何も返さない newオペレータが指定されたクラスのインスタンスを構築してその参照を返す その構築の際にコンストラクタが使用される
>>757 Javaではnewは演算子扱いではなくてクラスインスタンス生成式や配列生成式を示すだけのキーワード扱いじゃなかったかな。
あ、いや、すまん。演算子扱いだったのかもしれない。気にしたことないのであやふやだ。 JLS見てみる。
760 :
デフォルトの名無しさん :2008/02/05(火) 04:53:50
Stringの質問です。前者は後者の記述の略として解釈され、 前者と後者の振る舞いは等しいものでしょうか? String s = "1"; String s = new String("1");
ちがいます
763 :
デフォルトの名無しさん :2008/02/05(火) 05:26:33
>>762 ありがとうございます。
普通は
String s = new String("1");
s = "6";
だと思いますが、
String s = new String("1");
s = new String("6");
こうしてもよいのでしょうか?
すみません jarファイルをダブルクリックするとラプラスが起動して解凍してしまいます 拡張子を何に関連づけすれば解決するでしょうか
javaw
通常は new String("")は使用しない。
new String(".....") は使わないように。 Stringは不変オブジェクトだから、無駄なインスタンスができるだけ。 "...." だけでよい。
768 :
デフォルトの名無しさん :2008/02/05(火) 12:08:00
SimpleDateFormat のスレッドセーフ化されたものとして FastDateFormat(format() のみ) がありますが、 parse() に関しては jakarta の DateUtils.parseDate() を 使用すればスレッドセーフになるんでしょうか?
Stringは参照先で弄っても元が破壊されないけど、StringBufferは壊れるからちょっとややこしい。
>768 メソッド内でSimpleDateFormatのインスタンスを生成してparseすれば済む話だろ
>>769 それは設計の問題で StringBuffer の問題ではないと思う。
一応、StringBuffer は同期化されてるので、「壊れる」ことはない。
意図しない結果をもたらす事はあるとしても。
>>770 SimpleDateFormatって複数インスタンス作っても
内部で同一オブジェクトを使いまわすのでスレッドセーフじゃないって話だったような。
new String()は文字コード変換ぐらいしか利用価値が無いと思え
774 :
デフォルトの名無しさん :2008/02/05(火) 13:02:10
SimpleDateFormatってスレッドセーフじゃないの? Servletで使いまくってるけどやばい?
>>775 参照を他のスレッドに晒さなければ大丈夫。
staticで持ってたりしたら危ない。
777 :
デフォルトの名無しさん :2008/02/05(火) 13:40:50
>> 776 つまり、 >> 774 にある >SunのBug Paradeを、"+SimpleDateFormat +thread"で検索してもらうと >すぐわかるように、SimpleDateFormatクラスは、 >複数のインスタンスで同じオブジェクトを共有して持っており、 >スレッドセーフではありません。 という記述が間違いなんでしょうか? 複数インスタンスと言ってる時点で static では無いと思うんですが。
SimpleDateFormatが内部でstaticなデータを保持してんだろ? それくらいわかれカス
779 :
775 :2008/02/05(火) 13:52:22
ということはやばいということですね。 どうしよう
780 :
775 :2008/02/05(火) 13:55:30
どなたかスレッドセーフな SimpleDateFormat を作ってくれませんか?
synchronized使えカス
synchronized (SimpleDateFormat.class) { // SimpleDateFormatを使うコード } こうすれば中でstaticなデータ持ってようと、 同時に読み書きされることはない・・・はず。 マルチスレッドよぅわからん。
783 :
775 :2008/02/05(火) 14:09:24
FastDateFormatに置き換えようかと思いますが FastDateFormat hms = FastDateFormat.getInstance("HH:mm:ss"); FastDateFormat ymd = FastDateFormat.getInstance("yyyy/MM/dd"); hms.format(.... ymd.format(.... こういうコードだとどっちみちダメなのでしょうか
なにがどうダメなんだ?
つうかローカル変数で使うのに何か具体的な不具合でも出てるわけ? マルチスレッドで使わなきゃ良いだけじゃん。
786 :
775 :2008/02/05(火) 14:16:35
getInstanceでもnewのようにまったく別のインスタンスを作って くれるのでしょうか?
>>785 ローカル変数かどうかは問題じゃない。
インスタンスへのアクセスが閉じているかどうかだ。
>>783 おまえはスレッドセーフの意味が分かってなさそうだから。
まずはシングルスレッドで頑張れ。
つうかちょっとまて。ソース見たが SimpleDateFormat に関してはスレッドセーフでないことと
内部で static なオブジェクト使ってることとは関係ない。複数インスタンスで共有してるのは
ロケールごとの静的なリソースだ。だから
>>777 で引用部分の表現は明らかにおかしい。
>>788 ローカル変数ってのは表現間違えたがマルチスレッドで意味ぐらい汲めよ。
791 :
775 :2008/02/05(火) 14:26:55
ではサーブレットでSimpleDateFormatをローカル変数で 都度newしているなら問題ないってことですね?
>>791 そのローカル変数が他スレッドに漏れてなければ、ね
793 :
775 :2008/02/05(火) 14:31:44
>>791 そういうこと。スレッドごとに別インスタンスで使っていれば問題ない。
でなければ JSTL の日付フォーマットも使えない。
「処理中で不整合」 の内部状態を持つのは DocumentBuilder、Transformer、XPath、Matcher なんかも同じ。
>>794 そこで ThreadLocal の出番だな
また来ますた。お世話になっておりますw 数字を入力してください: 120←入力 と入力された数字を "1" "2" "0" と分けて取り出す方法を教えてください。 宜しくお願いしますm(_ _)m
toCharArrayでもcharAtでも好きなほうをどうぞ。
メソッド呼び出しについて勉強しているのですが 行き詰ってしまってしましました。 メソッド名:getProfile 引数: String name , int age 処理:「○○さんは△歳です」という文字列を返す 戻り値:String このソースの書き方を教えてください。 よろしくお願い致します。
宿題スレに池
return String.format("%sさんは%d歳です", name, age);
>>797 ありがとうございますw
もう一つすみません。
入力された数字intで取り出したいのですが、charAtでもintを取り出せるのでしょうか?
変換くらい自分でやれ。 Characterクラスのjavadocをみるよろし。
そういえば String#format() のフォーマットに対する、解析済みで再利用可能な クラスがないようなのが気になってたんだけど、これって毎度 String.format() しなきゃいけないのかな?
>>802 あ、そうか変換すれば良いんですね。
ありがとうございます。
>>803 ちょっと何言ってるかわからない。
解析済みで再利用可能って・・・戻り値のStringを保持しとけばいいじゃん、
とかそういうことじゃなくて?
>>803 String.format の内部は、return new Formatter().format(String, Object...).toString()
Formatter 内部でキャッシュできそうな部分もあるが、private クラスの配列になってるし。
まぁ強いてキャッシュにするなら、Formatter のインスタンス辺りかな
>>803 java.util.regex.Pattern みたいなものを期待してるなら、ないね。
java.util.Formatter は出力先を持ってるだけで、
書式文字列を固定で持ってるわけじゃないし。
808 :
806 :2008/02/05(火) 15:41:29
自己レス。自分で書いておいてなんだが、 Formatterの生成時には出力先を用意するだけなので、キャッシュの意味なし。 しかも、toString時に出力先をクリアするわけでもないので、再利用自体も不可に近い。
やっぱりそうか、俺の勘違いとかでないならまぁいいや。 Logging API の Formatter とか膨大な呼び出しされそうなところで使われそうなものだから なんかもったいないなぁと思っただけで。
Jakarta Lucene って Perl が必要っぽいけど、これって Pure Java じゃないの? それとも日本語用分かち書きの sen とか言うのが使ってるの?
811 :
デフォルトの名無しさん :2008/02/05(火) 15:57:19
3日前から初めてプログラミング、JAVAの勉強を始めた者です。 今読んでいる「やさしいJava 第3版」って本の練習問題なのですが 16進数を使って、6、20、13を画面に出力しろという問題があります。 答えを見ると public static void main (String args[]) { System.out.println(0x6); System.out.println(0x14); ← System.out.println(0xD); } と書いてありました。 ←をつけた行の、(0x14)を(0xE)として間違ったのですが、 なぜ16進数でA〜Fで表される数の14がEでは 間違い・エラーになってしまうのかわからないです。 試しにFなどを入れて出力などしましたが、Eだけエラーになってしまいます。 わかる方教えてください。。
セミコロンがないとか、そういうオチ? とりあえず、どんなエラーが出るんだ?
>>811 0x14は0xが頭についてるので、10進数じゃなくて16進数として解釈される。
16進数の0x14を10進数になおすと20になる。
10進数の14が必要なら0xを頭につけちゃだめ。
>>811 0x14 を 0xE と間違えた後、14 にして、さらに E としたところでエラーが出たに1票。
14は16進数でE、20は16進数で14・・・ なるほど、814が正解かもしれない。 なんか16進数自体わかってなさそうだ。
816 :
811 :2008/02/05(火) 16:12:27
ありがとうございます。
(0xE)ではじめに書いたら
Exception in thread "main" java lang.NoClassDefFoundError
といった表示が出てしまいました
>>811 に書いたようなテキストの答えを見て
0x14にしたらちゃんと表示されます。
まだ頭がごっちゃでわかってません。。すみません。
817 :
811 :2008/02/05(火) 16:14:24
あ、わかりましたorz ありがとうございますorz
で、理由はなんだったんだ? エラーを見るに、何か他のクラスを実行しようとしたみたいだけど。
NoClassDefFoundErrorなら typoかなんかでしょ。たぶん。
また、やさしいjavaか
821 :
デフォルトの名無しさん :2008/02/05(火) 19:04:58
最初に読む本でずいぶん変ってくるよね 実践的な本で勉強した方が後々いいと思うんだけど
仕事で使うのか趣味なのかでも違ってくるしね 趣味なら 自分だけのメーラー作成を通して学ぶ EclipseによるJava とかを打ち込みながら実行してWebで分からない所を調べる とかだと面白く学べる。 仕事だとフレームワークが絡んでくるから個々のフレームワーク・言語の入門本がいいかと思う。
1.4.2のjavaにJDK6のAPIを追加してみた。 動かないんだけどそれだけじゃ意味ない?
初級本ならHeadFirstがおすすめ。 超初心者ならわかりずらいかもしれんがまともなこと書いてある。 SJC-Pとかうけるのにもこの本読んどくとかなり試験勉強の助けになる。
でも本の厚さと値段で尻込みしちゃうのが初心者
あの厚さは普通だと思うが、分厚いのはオライリーのSwing本あたりだろ。
分厚いのは割れてかなわん
また宣伝厨かよ
>>823 何がしたいんだ?
target が 1.6 のクラスファイルは、どう頑張っても1.4のJVMじゃ動かんよ。
かわいいこ多いな
>>829 じゃあ無理みたいだorz
無視でよろしこ
833 :
デフォルトの名無しさん :2008/02/06(水) 01:52:01
デスクトップにあるフォルダaをカレンとにしてMS-DOSプロンプトを起動しました。 aの中に*.classがあります。 jarを作りたいです。 >jar cv エラーでした。 jar.exeの使い方を教えてください。 普通のアーカイバでzip圧縮して拡張子変更したものではだめですか?
>>833 JDKのドキュメントに「ツールとユーティリティ」の項目があり、
そこにjarのマニュアルもある。
というか、jar cvでヘルプが出て使用例も表示されるだろ?
835 :
デフォルトの名無しさん :2008/02/06(水) 02:16:08
>>834 jar でヘルプが出るけどヘルプが糞だ。
例文が2つほど出るけど例文は少なとも30ぐらいは出してくれないと理解不能。
たぶん834もjar使えないんじゃねーの?ヘルプが糞だから。
くそくそうるさいなw ドキュメントの場所を教えてるんだから分からなければそっちを読め ってか普通はオプションの意味さえとれれば使用例は要らない
>>836 無理しないでえらい人の回答を待てよ。
少なくとも漏れよりえらい人以外にはレスしてほしくない。
あえて書くなら漏れも知らないのでえらい人教えてください、だろ。
アニョハセヨ
スーゴハセヨ
グッテンターク
漏れとか…何時振りだろう、見たの
http://journal.mycom.co.jp/series/webtool/007/index.html >かつての電化製品がそうだったように、日本人の作るサービスはデザインやユーザビリティの面で優れていると感じている。
Nationalのオーブンレンジを触ったことがないんだろうか。
最低3つの操作手順を踏まないと、食パン1枚焼けない。余計な機能詰め込みすぎ。
「(多くの)日本人(のみ)にとって使いやすい」だけであり、それを「優れている」とは言わない。
Vista使いにくいだろ? 要は日本の家電メーカーはアレをやってる。
ご当地の人には使いやすいんだろうけどな。
それをJEITAの連中は「日本の消費者は先進的」といまだに勘違いしてる。だから国際競争で負ける。
異なるだけであって感性に「先進」とか「後進」はない。家が小さい日本は「後進的」か? 違うだろ。
日本の家電(PC含む)は既に世界からそっぽを向かれている。
車やカメラは熱いけどな(ただし、カメラも同じようにそっぽを向かれるのは時間の問題)。
日本発のWebアプリが普及しないのは二番煎じばかりだからだろ。
むしろそういうデザインとか下らないところに注力しているから、いつまでたっても独創性が開けない。
ふぅーなんか朝から熱くなっちまったぜ。
日本人にとっての使いやすさと アメリカはじめ他国の人間にとっての使いやすさが違うだけ。 国内で高い評価を得ても世界ではそれほどでもない。 逆に使いやすさの面で国際競争力を付けようと思ったら 日本ではあまり高く評価されないかもね。
今のオーブンレンジって一発で閉まらないんだよな でもあれ日本製なのかよくわからん
845 :
たらちゃん :2008/02/06(水) 12:52:02
System.err.println("エラー")を変数に代入する事って出来ますか?もし出来るのであればやり方教えてください。 宜しくお願いします。
846 :
デフォルトの名無しさん :2008/02/06(水) 12:53:16
javacのコンパイルが遅いと思うんですが 常駐するタイプありませんかね? メモリ食うけど何回もコンパイルするなら速いよ!みたいな
>>845 意味がよくわからんが、代入してどうしたいんだ?
何をしたいのか書くといいかもしんない
>>846 eclipseみたいなIDEは嫌かね?
>847 使ってみましたけど、ちょい重かったです。 コンパイルするたびにjavac.exeを読み込むのが 無駄だよなぁって思ってたんですが。 新しいマシン買えよ、ってことなんでしょうけど キャッシュが沢山載ってるやつ買えばいいのかな。
phpからjavaへの乗り換えを検討しているのですが javaでphpのsymfonyに一番近めなフレームワークってどれでしょう?
Method println = System.err.getClass().getMethod(...);
>>848 …javac.exe を読み込むのが遅いならRAMディスクは如何でしょう。
可能性のある要因は幾つも挙げられますが、何れにしろ、
ハードウェアかOSの問題で、Javaだから、という問題では無いように思えます。
10万も出せばDualCoreでメモリ2Gのマシン、ディスプレイ付で買えるだろうよ Eclipseが重いってのは何時の話だ
ちょっと自作PC板に来てもらおうか・・・
854 :
846 :2008/02/06(水) 21:21:44
自己解決しました。 空きメモリを仮想ドライブにするソフトなんかあるのね、今は。 いや、ほんとに 「RAMディスクなんて言葉聞いたの98note以来だぜ、 確かに滅茶っ速だったけどなァァァァ」 とか思いましたけど、皆さんありがとうございました。
それ、自己解決か・・・?
JDKの環境変数設定などの後はOSの再起動をすると本で読んだのですが、 どうも環境変数の設定をした時は そのままで反映されている時とOS再起動しないと反映されない時があるみたいです。 OSの再起動以外に何か関係するものがあるんでしょうか
>>856 そんな糞本捨ててしまえ。環境変数は基本的に親プロセスから引き継がれるので、環境変数を設定したプロセスから起動すれば即座に反映されるが、読み直しはしないので既に動いている他のプロセスには影響しない。
Windowsの場合なら、
・コマンドプロンプト/バッチファイルで環境変数を設定してそこからプログラムを起動した場合→即時反映
・システムのプロパティから環境変数を設定→設定後に起動したプロセスにのみ変更が反映。例えば設定前から動いているコマンドプロンプトからJavaプログラムを起動しても変更は反映されない。
858 :
856 :2008/02/06(水) 23:50:23
>>857 なるほど〜すごく分かりやすい説明ありがとうございます!
こういうズバリな説明聞くとwindowsに浸ってないでUNIXの勉強するべきなのかなぁって思いますね…
PC のピの字も分からん人間相手の本なら再起動は基本。 本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。
Windows9x時代のautoexec.bat編集して再起動 みたいな記述がそのまま残ってるだけじゃないかと。
PCに"ピ"の字はどこにも無いと思うんだが
サイトに snoop アプレット仕込んでクライアントの JVM バージョン統計取ってみたんだが見る?
ピーシーのピの字も分からん人間相手の本なら再起動は基本。 本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。
やるおかよ
java.util.regex.Pattern の lookingAt() って find(0) と同じという理解で良いのかな?
866 :
デフォルトの名無しさん :2008/02/07(木) 03:51:41
PCのパの字も分からん人間相手の本なら再起動は基本。 本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。
PCに"パ"の字はどこにも無いと思うんだが
パトカーのパの字も分からん人間相手の本なら再起動は基本。 本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。
パトカーに"パ"の字はあると思うんだが
先週、就職合同説明会でjavaプログラマのプチ面接を受けたんだが フローチャートできないということで落ちた 大学の授業では不要といわれていたんだけどなぁ 企業の求む新入社員のスペックはどれほど必要か誰か教えてください
不要なのとできないのは違うよ
不要とかいう前に、出来て当たり前だろw
むしろフローチャートをサ変動詞で使ってるあたりで落とされたと予想。
面接官:フローチャートしてください 870:できません
Javaを最近やり始めた初心者です。 質問なのですが、メソッドというのはわかりました。 例えば一番初めに数値を入力してその数値によって条件が変わる場合どのようにかけばいいのでしょうか? C言語で言う int main(){ int i=0; int j=0; printf("数値を入力してください"); scanf("%d",&i); if(i==1){ //処理A } if(i==2){ printf("数値を入力してください"); scanf("%d",j); if(j==3){ //処理B } if(i==4){ //処理C } } } という処理をJavaで書く場合どのようにかけばいいのでしょうか? クラス宣言{ 初期値宣言と数値入力処理 if(i==1){ メソッドA{ } } といった感じで入力してもOKなのでしょうか?
質問なのですが、メソッドというのはわかりました。 質問なのですが、メソッドというのはわかりました。 質問なのですが、メソッドというのはわかりました。 質問なのですが、メソッドというのはわかりました。 質問なのですが、メソッドというのはわかりました。 ・・・質問?
というか、メソッドのことすら全然わかって無いし、 C言語でもそれならswitch使うだろ、とかいいたいことはたくさんあるけど、 まずはあれだな、なんか本買ってまじめに勉強しろ。
JavaでHelloWorldが書けるかもあやしい
C言語で関数が使えるのかすらもあやしい
コンパイル出来るかも怪しいw
もしかしてmain関数しか書いたこと無いのかな・・・?
日本語が話せるのかもあやすぃ
Javaではこうするのさ import java.util.*; import java.io.*; interface Proc { void proc(); } public class Main { private static Map<Integer, Proc> lookup = new HashMap<Integer, Proc>() {{ put(1, new Proc() { public void proc() { System.out.println("処理A"); } }); put(2, new Proc() { public void proc() { System.out.println("処理B"); } }); put(3, new Proc() { public void proc() { System.out.println("処理C"); } }); }}; public static void proc(int i) { if (lookup.containsKey(i)) lookup.get(i).proc(); } public static void main(String...args) throws IOException { int input = System.in.read() - '0'; proc(input); } }
885 :
デフォルトの名無しさん :2008/02/07(木) 11:43:58
Windows Meをターゲットマシンとしたプログラミングを考えています。 (開発はMac OSX10.3上) Javaでやってみようかと思っているのですが、どういう環境(開発、 実行、フレームワークやライブラリ)が利用できるのかよくわかっていません。 NetBeansやらEclipseやらPureJavaやらJSFやらSWTやら初心者には 迷路のようです。 そこで、Javaの全体像、あるいは(上記のさまざな側面における)環境 が俯瞰できるような参考書はないでしょうか? ちなみに、 Javaプログラミングの経験はありませんが、その他の言語( C、Smalltalk, Objective-C)の経験は多少あります。Windows上でのプログラミングは まったく経験がありません。実行マシンであるMeはメモリが最低限しか積んで いないので、あまり大規模場な環境は構築できないはずです。開発は Mac OSX10.3上となります。
MeでJava? ・・・やめたほうがいい。
Meなんてあり得ない選択
なんでそこをターゲットしちゃうかな〜
889 :
デフォルトの名無しさん :2008/02/07(木) 12:10:39
激しくスレ違いかもしれませんが、質問です。 PCゲームを多重起動しようと試みたのですがダメでした。 大抵のゲームはWindowsのアカウントを2つ作成し、別々のアカウントで起動すれば問題ありません。 現在、Vistaを使っているのでXPではどうなるかはわかりませんが(XPは右クリックから別ユーザーで起動が可能)、 Vistaでその手法をとる場合、runasコマンドを使用することになります。 しかしこのコマンドで別々に起動しても、後から起動したほうが無効になってしまいました。 で、ここからがわけわかめなのですが、同一のデスクトップからの起動はダメでも、 Windowメニュー→ユーザー切り替えをし、別々に起動すればうまくいきました。 この違いはいったいなんなのでしょうか?
激しくスレ違いです
ばっちりスレ違いだね! そんなのは多重起動防止のロジックによって違うとしか。 あと、Vistaでもrunas使わなくてもShift+右クリックとかででなかったっけ?
VMWare 使え
Virtual PC or Virtual Server使え
>>886 CUIベースで、viやemacsでコードを書いてコマンドラインツールができればいい、
みたいなものでも、Macだと選択外ですか。
GUIは必要ならあとで考えることにして。
>>887-888 事務所のマシンがMeだから仕方ないんですよ。。
GUI開発が無理ならキャラクタベースでもいいですけど。
勉強する時間 < 外注するコスト なんかい? Javaの講習会(NECとかでやっている5万程度のやつ)に参加させてもらえ、もしくは1ヶ月でも経験者を派遣で雇った方がいい
javaでCUIは無理
>>894 Macは全く問題ないよ。問題はMe
Webアプリにはできないの?
うんこ
学坊ばかり湧いてるな 氏ねよゆとり
>>894 ニートだけどもしよかったら雇ってくれ。
CUIでもGUIでも作れるよ。
>>895 プログラミングは趣味に近いから、「勉強コスト」は問題にならないんですよ。
それと、
>>885 で書き忘れってしまったのですが、
Meをターゲットしたプログラミングといっても、プロを雇うような
規模のものではないです。
ある種のDB(実はフラットファイル)から条件を読み取り、
それに応じて数種類の Latexソースを出力、platexを起動して
最終的にはPDFを(Disk上に)出力する、というごく小規模なものです。
それに職場で必須の案件ではまったくなくて、個人的にあったら少しは仕事
ラクになるな、ぐらいのレベルなので、人を雇うとか講習会に参加するとか
(仕事はパソコンとは直接関係ないし)は、選択肢にないです。
>>897 Webアプリですか。。
実はUSBメモリにデータと実行モジュールを入れて、家と職場で環境まるごと
共有できればいいな、と考えていたのですが、Web系の知識皆無なので
どこまでできるのだか見当がつかないです。。。
ただのプログラミング言語であれば初めての言語でもなんとかなると思うので
Javaがいいかな、と思ったわけです。(lispなどは除く)
質問です。文字列を全角、半角区別せずにスペースで文字列を分離するプログラムを 作りたいのですが上手く動きません。ソース晒すので何かアドバイスあったら下さい。 public class StringSeparate { private String word; private String[] words; public StringSeparate() { word = "ヌル ポインター エクセプション"; } public int getWordSegment() { int count = 0; for(int i=0; i<word.length(); i++) { if(word.startsWith(" ",i)||word.startsWith(" ",i)) { count++; } } return count+1; } public void Separateword() { words = new String[getWordSegment()]; int start = 0; for(int i=0; i<words.length; i++) { for(int end=0; end<word.length(); end++) { if(word.startsWith(" ",end)||word.startsWith(" ",end)) { words[i] = word.substring(start,end); start = end; } } } } }wordsのgetter略
public class StringSeparate { private String word; private String[] words; public void Separateword() { words = word.split(" | "); } }
\\sじゃだめだっけ?
javadocでsplit()を調べたら良いメソッドが在るではありませんか! >903殿 thx
>>901 それぐらいならちょっと勉強すれば簡単にいけるだろ
素養はあるみたいだし、とりあえず本屋に行って独習Javaでも買ってきたら?
>>902 words[i] = ほげほげの部分で i をfor文でまわしてる部分がおかしい。
解決法は 903 で楽々。
>901 秀丸マクロで十分じゃん
909 :
903 :2008/02/07(木) 14:22:19
でもコレだと区切り文字が半角スペースに限定されるんですよね。 自分の力ではできそうもないのでコレで妥協することにします。ありがとうございました。
910 :
903 :2008/02/07(木) 14:31:12
失礼。解決させました。
半角スペースに限定される? 何言ってんだ。つか、902じゃないの?
912 :
902 :2008/02/07(木) 14:47:45
>911 その通り。903さん失礼した。朝からずっと考えてて、猫に邪魔されたりしたから ファビョってた。場合分けして解決させたんだけど、全角、半角の区別無いんだっけ?
splitに半角スペースと全角スペース渡してるから場合分けも何も無いだろう。
914 :
902 :2008/02/07(木) 15:13:20
いや for(int end=0; end<word.length(); end++) { if(word.startsWith(" ",end)||word.startsWith(" ",end)) { } コレを利用すればできる。
915 :
902 :2008/02/07(木) 15:15:20
>>913 いやいやjavaでは半角と全角のスペース区別するよ。
903のコードのままで全角スペースにも半角スペースにも対応してるんだけど? 何が言いたいのか全く分からない。
普通に見たまま半角空白を | で結んだんだろ。
なんか902がかなり恥ずかしいことになってるなw 902の書いたコードもかなり無理やりというかなんというか。 とりあえず、そんなものをクラスにするなよ、ってのと、 クラス名変だぞ、ってことと、メソッド名変だぞ、ってことと、 素直にコピペしろよ、ってことか。
919 :
902 :2008/02/07(木) 15:23:18
そうなのかー。無駄にスレ伸してすみませんでした。
>>918 いやいや、一番大事なことを忘れてる
「API仕様読め」
921 :
デフォルトの名無しさん :2008/02/07(木) 15:30:44
すみません、
>>884 の意味が分かりません。
どなたか教えてくださいませんか?
922 :
デフォルトの名無しさん :2008/02/07(木) 15:51:21
何で、この板は平日の昼間なのにレスが多いの?
923 :
902 :2008/02/07(木) 15:53:38
申し訳ないStringの"k|k"の意味を教えてはくれないだろうか? kもしくはkという意味は分かるんだけど、文字列の中にある|が初見で分けわからんです。 APIの説明でも良いので御願いします。
>922 世話焼き好きのSEが職場で見てるんでしょう。
正規表現だよ。 |ってのはJavaでも演算子あるでしょ。アレと同じ。
>>921 意味、というのは全く何が行われてるか理解できないということか。
以下、私の解釈を垂れ流し。
主クラス名は Main (よって、ファイル名は Main.java)
同じファイルに proc メソッドを持った Interface Proc を定義。
Map<Integer, Proc> lookup で、数字(1-4)と手続きを対応付けし格納。
そのインスタンスは HashMap で生成し、その無名初期化ブロックを用いて、
無名クラスによって生成した Procインスタンスと数字とを対応付けして格納する。
対応付けの数字の部分で、autoboxing を利用。
Main クラスの static proc メソッドは、数字を引数にとる。
その引数が lookup内にある数字なら、対応する Procインスタンスを取り出して、
その procメソッドを実行する。
main メソッド。
System.in.read で入力待ち。戻り値は、最初の1byteの数値。
それから char '0' の数値を引くことで、 char '1'-'4' から 1-4 を取り出す。
// この変換部分は Character.digit(int, 10) でも可かな。
で、その取り出した値で proc を呼び出す。
928 :
902 :2008/02/07(木) 16:12:26
ありがとう。
929 :
デフォルトの名無しさん :2008/02/07(木) 16:36:39
>>926 やっぱり何言っているのか分かりません。
JavaもCも、同じようなものだと思っていたのですが、全然違うようですね。
もっとまじめにJavaってみます。
930 :
902 :2008/02/07(木) 16:46:28
いやいや、その文字列を正規表現として扱わなければ、 普通に"|"も使えるよ。 正規表現として扱うようなメソッド、 例えばsplitに渡すときに、"|"が使いたければ、 "\\|"とエスケープするか、Pattern.quote("|")とエスケープすればOK
というか、
>>927 は実行してみたのか?
これはぐぐれといっているわけでは無いだろ。
935 :
902 :2008/02/07(木) 18:10:47
なるほど、正規表現が普通の文字列とは違うということは分かりました。 javadoc見るときはこの言葉に注意します。一つ知識が増えました。 アリガトウございます。
936 :
902 :2008/02/07(木) 18:34:17
連投失礼、正規表現とは物を検索するのに特化した記号。
質問させてください。 プログラムから、あるホームページの情報を取得することは可能ですか? ブラウザからのリクエストなどであればHttpServletRequestオブジェクトにアクセスすればいいのですが、 ただネット上に転がってるサイトに対してはどのようにアクセスすればいいのでしょうか?
URLクラスのopenConnectionだかなんだかのメソッド使えばOK
>>938 即レスありがとうございます!こんなクラスがあったんですね
こんなクラスっていうか探さずとも見つかるだろ標準APIでよく使われてるんだから
教えてください。 Serializable化したクラスが保持している文字列が、 元オブジェクトとファイルに保存後読みだしたオブジェクトで異なることがあります。 具体的には、'−'(全角ハイフン、文字コード0xFF0D)の文字が'?'になってしまいます。(例:"GT-R" → "GT?R") 再現性100%です。 なんで?他にもこんな文字あるのですか?
MS932の0x2212だったとか
>>941 文字列自体は変わってないはず。
エンコーディングの設定(System.getProperty("file.encoding")とか)が変わって、
バイト列に変換する際に '?' に置き換えられたり、
フォントが対応してないとかで表示できなくなってるだけ。
書き忘れた。xmlでよく起こる事なんだけどMS932の0x2212を自力でUTF-8の0xFF0Dに変換してみたら?
>>942 全角ハイフンがMS変換表、
マイナス記号がJIS変換表じゃなかったか?
全角の波線「〜」も「?」になるっけ。
>>943 元String出力→ファイルに保存→読み出し→読み出し後String出力
以外になにも処理してないのですが、この処理の間のどこかで勝手にエンコーディングをいじられるのですか?
ファイルに保存するときってエンコ-ディングが決まっていて、それがプログラム実行時とは違うのですか?
JAVA内部のことだし、明示的にエンコーディングをいじってもないのでなので、両方Unicodeと思ってました。
file.encodingプロパティはOSネイティブなエンコードに設定されてるから シリアライズしたバイナリもそのエンコーディングに従ってるんじゃない?
ありがとうございます。 シリアライズのときはそのエンコーディング、複号化のときはUnicodeってことでしょうか。 なんか道が見えてきた気がします。 そろそろ寝ないといけないので明日またチャレンジしてみます。どうもでした。
>>949 シリアライズの時は、普通は似非UTF-8使うはずだが。
まぁ、readObject()やwriteObject()で明示的に
デフォルトエンコーディング使ってるのかも知らんけど。
いやjava内部ではunicodeというかUTF-8で外部に出たらfile.encodingかプログラマが明示的に指定したエンコード。 シリアライズしたら外部に出るでしょ。 String型で持たずにbyte配列でやってみたら?
readObject()とwriteObject()って対応してなかったのか
>>952 Java内部はUTF-8じゃなくて、UTF-16(charの配列)だって。
>UTF-8 ああ、素で間違えた。スルーしてくれ
956 :
デフォルトの名無しさん :2008/02/08(金) 04:56:56
sがnullなのかの判定はif(s === null)にした方がよいですか? String s = null; if(s.equals(""))System.out.println("a"); if(s.equals(null))System.out.println("b");
>>956 equals使ったらsがnullのとき実行時にぬるぽになるべ
958 :
デフォルトの名無しさん :2008/02/08(金) 05:28:22
JavaCCの質問はここでよいですか? 2つのパーサプログラムで共通の字句規則を利用したいのですが、 字句規則と構文規則とでファイルを分けたふたつのjjファイルをコンパイルする方法はありますか?
>>956 String s = null;
if("".equals(s))System.out.println("a");
if(s == null)System.out.println("b");
>>957 なった。if(s.equals(null))は使えませんね。
>>959 イコールの3連はJAVAには無いんですね。
XSL のテンプレートを集めたファイルがあるんですが、この中の任意のテンプレートを 任意のパラメータで Java から call-template するうまい方法ないですかね。結果は ストリームに流す方法で。 今は include, call-template するだけの DOM を Java 内で動的に作成して Transformer 作成、これにダミーの文書 DOM を渡して結果を得ているのですが、これでは呼び出しの たびに XSL ファイルの解析処理が必要になってしまいますよね。ファイルが大きく静的な ため、できれば Templates 作って共有したいところなんですが。
Ant でログの切り替えを行おうと思ったが、特定ディレクトリ以下の全てのファイル名に文字列 付けるのってどうやるんだ? for f in $files; do mv ... みたいなのが書けないようだが。
>>964 おおっこれで何とかできそうなふいんき。mv と同じかと思って属性だけ見て読み飛ばしておったわ。
966 :
仕様書無しさん :2008/02/08(金) 13:28:55
つっこみどころをさがせwww パブlic class Pab { public static void masin(String args[]){ String ITO = "意図"; System.out.println("String型の" + ITO + ""); } }
痛い 966 が居ると聞いて(ry
つっこむどころか引くわ
V2Cを初めて使ってみたのですが、 最初のうちは使えるものの時間が経つと chdir to launcher failed というerrorが出て起動出来なくなります。 アンインストールして再びインストールしても再現します。 これは何が原因なんでしょうか?
972 :
デフォルトの名無しさん :2008/02/08(金) 17:37:03
trueやfalse以外にnullをreturnしてもよいでしょうか? public static Boolean chkstruser(String s){
おまいが作っておまいが使うものなら好きにしろ。
java言語のif文の規定みたいなのが載ってる ダウンロードできるオンラインドキュメントみたいなファイルみたいなのありませんか?
975 :
デフォルトの名無しさん :2008/02/08(金) 18:04:56
public static Integer chkstruser(String s){ なんでreturn 0;がコンパイルエラー?
976 :
デフォルトの名無しさん :2008/02/08(金) 18:06:45
Integerって型じゃなくてクラスですか?
型は型だろ
>>978 977を見たら
java.lang
クラス Integer
って書いてあったから、Integerはクラスなんですね。
>>975 コンパイラのバージョンは? autoboxing/unboxingが導入されたのは5.0以降なんだが。
981 :
デフォルトの名無しさん :2008/02/08(金) 18:41:40
アスキーコードを調べようとしています。 System.out.println(s.charAt(0).hashCode()); char は間接参照できません。というコンパイルエラーでした。
System.out.println((int)s.charAt(0));
javaってオブジェクトとオブジェクトとの二項演算子を作るって事はできますか?
無理
>>982 バージョンはいくつか知らんがString#codePointAt(int)の方がよくないか
>>986 ASCIIコードなら s.getBytes("ASCII") した方が
サロゲートのコード使う局面なんてあんのか?
とらいとぅすれたて
もう次スレか
javaSEだけインストールしていてjavaEEはインストールしてないのに サーブレット作って実行したら普通に実行出来てしまうんですが javaEEが無くてもサーバサイドの開発も出来るんですか? javaEEの中身って何なんでしょうか
サーブレットを実行できる環境入れたなら Java EE がどっかに入るに決まっているだろ。
サーブレット実行環境はtomcatですが、 tomcatの中にjavaEEのライブラリが最初から入ってるということですか?
しかもパス通ってんじゃね? パスの通ったフォルダ探してみれば?
Tomcat使ってんならJavaEE実装の一部が入っているってことじゃんw JavaEEって仕様のことだぞ? JavaEEってソフトウェアなんて無いんだぞ? わかってんのか?w
ハンドルだけ買ってエンジンは買ってないのに 車動かしたら普通に運転できてしまうんですが エンジンがなくてもドライブできるんですか? エンジンの中身って何なんでしょうか
うめ
1000 ならゴスリンと結婚
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。