【初心者】Java質問・相談スレッド101【大歓迎】
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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質問・相談スレッド100【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1175317038 /* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。
http://pc10.2ch.net/hp/ 次スレは
>>980 あたりで。
2 :
デフォルトの名無しさん :2007/04/30(月) 22:28:50
>1乙カレン様
javaを始めたばかりなのですが if文の中で宣言の指定をすると「シンボルを見つけられません」といわれて コンパイルできません。 最初の段階で宣言すればいいのですが、なぜif中に宣言したらいけないのでしょうか? 誰か教えてもらえると助かります。
>>3 いけなくない。
if () { A }
B
Aでする宣言は有効。ただし、Bではその変数は見えない。
>>4 あー
なんとなくわかりました。
ありがとうございます。
6 :
デフォルトの名無しさん :2007/05/01(火) 03:09:15
ActionScriptというFlashで使われている制御プログラムの言語をプログラミングが あまり出来ない人でも使えるようにActionScrip和訳辞書のようなイメージでシステム を作りたいと思っています。ユーザーがイベントやそのイベントが起きたときの処理などを 日本語であらかじめ設定されたライブラリから選択すればそのままソースがデータベースから 読み出されアウトプットされるようなものを作りたいのです。 どのように作ればよいのでしょうか? 何か開発に使えそうなソフトなどないでしょうか? 本当に困っています。誰か助けてください
Thread、synchronizedについて質問があります。 public class Test extends Thread{ private int i, j; public synchronized void run(){ for( int count = 0; count < 2; count++ ){ i++; j++; System.out.println(" i=" + i + ":j=" + j ); } } public static void main(String[] args){ new Test().start(); new Test().start(); } } このコードの実行結果を答えよっていうような問題があって、 選択肢の中に、 B i=1:j=1 i=2:j=2 i=1:j=1 i=2:j=2 C iとjの値は出力されるが、表示順は一意ではない この2つがあって、Bが正解になってて、 解説には、run()メソッドをsynchronized指定しているため、run()メソッド実行中は他に制御が移ることなく処理される。 とあるんですが、これ違いますよね? うまく説明できないんですが、このときって別々のオブジェクトのrunにロックがかかってるんですよね? forループの回数増やして試しても、Cの結果になりました
>>8 ありがとうございます
ちょうど今日SJC-P受けるのでその前にすっきりできました\(^o^)/
10 :
デフォルトの名無しさん :2007/05/01(火) 06:36:43
雨の中、5963
11 :
デフォルトの名無しさん :2007/05/01(火) 08:59:25
2週間の黄金ウィークなんですが、Javaで何をしたらいいですか?
12 :
デフォルトの名無しさん :2007/05/01(火) 09:04:31
13 :
デフォルトの名無しさん :2007/05/01(火) 09:22:49
>12ナイス。でも、おわた… 次は?
14 :
デフォルトの名無しさん :2007/05/01(火) 09:30:08
15 :
デフォルトの名無しさん :2007/05/01(火) 10:00:30
>14 成人の日と体育の日は第2月曜。春分の日と秋分の日は年度によって違う。振替休日。 成人の日は Cal date=インスタンス〜 date.set(1月1日) int col=1月1日の曜日ゲット int count=0 for(int c;c<=30;C++){ if(col==2){ count++ if(count==2){ Holiday=1*100+c break } } col++ if(col>7){ col=1 } 体育の日も同様に! 春分の日 Syunbun=3*100+(int)(20.8431+0.242194*(Year-1980)-(int)((Year-1980)/4)) 春分の日 Syuubun=9*100+(int)(23.2488+0.242194*(Year-1980)-(int)((Year-1980)/4)) 振替休日 まんどくせ( ̄σ‥ ̄)
以上を踏まえて万年カレンダーを作る。 ・指定された年月に対する一ヶ月分のカレンダーをGUI上に表示する ・土日祝祭日は色分けすること。 ・年月の指定範囲は1970年1月〜2099年12月とする ・祝祭日は過去にさかのぼると平日だったりするので(海の日とか天皇誕生日とか…)その辺も考慮する。 ・将来的に祝祭日の追加に対応できるようにする。 ・余力があればこれを元にスケジュール帳を作ってみる。 これだけやればGWの暇つぶしになるじゃろ
17 :
デフォルトの名無しさん :2007/05/01(火) 10:47:05
>>15 いつ天皇が逝っても対応できるように和暦の即時追加とか
はぁ〜、和暦とかハッピーマンデーをどっかのサーバーで一元管理してくれればいいのにな
18 :
デフォルトの名無しさん :2007/05/01(火) 10:49:54
>17コピペでいい? ( ̄σ‥ ̄)
19 :
デフォルトの名無しさん :2007/05/01(火) 11:04:40
東風荘って麻雀ゲーム(ネット対戦)があるんだけどさ このクライアントアプリでJava版があるんだよ これを自分の考えたアルゴリズムで打つように組んで遊んでるよ。 このアルゴリズムがすげー弱い・・・。
20 :
デフォルトの名無しさん :2007/05/01(火) 11:36:43
Javascriptなんですけど テキストエリアにjの回数分、ランダムに出力したいのですが、 どうも一番最後の処理だけが出力されてしまいます。 どこがおかしいか教えて頂けないでしょうか? for(j = 1; j <= cnt; j++){ m = "role" + j + " = " + Math.round(Math.random()*10) + ","; document.form1.result.value = m; }
21 :
デフォルトの名無しさん :2007/05/01(火) 11:41:39
22 :
デフォルトの名無しさん :2007/05/01(火) 11:45:15
ですよね、探してもなかったから・・ すいません。
23 :
デフォルトの名無しさん :2007/05/01(火) 11:53:15
jの回数分って…
24 :
21 :2007/05/01(火) 11:54:00
>>22 本当だ、JavaScriptってないんだな。
Web制作板に結構あるからそっちでどうだろう?
Date型からString型への変換ってどぉしたらいいですか? SimpleDateFormat使うんだろうけどわかりませn
26 :
デフォルトの名無しさん :2007/05/01(火) 12:24:07
>>25 どういう文字列にしたい?
2000年10月10日 10時10分
2000/10/10 10:10
などなど具体的に
っていうかAPIは読んだ?
27 :
デフォルトの名無しさん :2007/05/01(火) 12:30:32
1.日付のフォーマット 1.時刻のフォーマット 1.日付と時刻の両方のフォーマット 1.パターン文字によるフォーマット があるお
>>26 API読みました!が、わかりません;;
2000/10/10(Dateクラス)をテキストフィールドに表示させたいんですが、
その場合Stringにしなきゃですよね?しかし方法がわかりません;;
29 :
デフォルトの名無しさん :2007/05/01(火) 12:41:18
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); sdf.format(new Date(time));
30 :
デフォルトの名無しさん :2007/05/01(火) 12:43:45
APIが読めるぐらいの基礎知識はつけろよ!
31 :
デフォルトの名無しさん :2007/05/01(火) 13:56:18
JAVAの開発環境はどれがオススメですか? できればfreeがよいです。 windows、macで変わりますか?
32 :
デフォルトの名無しさん :2007/05/01(火) 15:02:07
開発環境の質問が出ているので便乗で失礼します。 Javaをはじめたばかりなんですが Eclipseなどの開発環境をいきなり入れるべきか まずはエディタ+JDKの王道でやっておくべきか どちらの方がおすすめでしょうか?
>>32 どっちでも自分がいいと思った方を選べばいいよ
自分の感性を信じるんだ
この手の話は100万回繰り返されてて、一歩間違えば荒れる元だが それでも敢えて言うなら、IDEから始めた方が良いと思う。この方が馴染みやすい。 ただ、ある程度Javaに慣れてきたら、エディタ+JDKでの開発にもふれておくべき。 IDEの後ろで何が起きているかは知ってて損はない。
まずはコンパイラの使い方覚えてからIDE触った方が良いよ
36 :
32 :2007/05/01(火) 15:55:09
>>33-35 「どちらが良いかは人それぞれ」なんですね。
かなり乱暴なイメージとしては、初心者がウェブサイトを作るのに
メモ帳で手打ちしていくかホームページビルダーを使うか、
といった感じなんでしょうか。
ものの本を何冊か読んでみたところ、
エディタ+JDKが大前提で書かれてるものばかりだったので、
初めから統合開発環境に手を出すのはご法度なのかと思っていましたが、
そうとも限らないんですね。
簡単なコーディングをいくつかエディタで書いてみてから
統合開発環境も触ってみようと思います。
レスありがとうございました。
37 :
デフォルトの名無しさん :2007/05/01(火) 16:36:21
すごく抽象的な話ですみません。、 関数を使うとき微妙に違う処理なんだけど引数に渡すものもない場合 どう呼び出すんでしょうか? 例えばtextshow1関数とtextshow2関数って分けずに textshow関数で引数を渡すと思うんですが、 textfield1と2で違うだけって場合とか。 文字列を渡してやればいいのでしょうか?スマートでない気もします。
39 :
デフォルトの名無しさん :2007/05/01(火) 17:22:20
DataInputStreamとBufferedReaderの共存についての質問です。 HTTPのクライアントを書いていて、 以下のようにテキスト入力用のBufferedReaderと、 画像等のデータを入力するためのDataInputStreamを同時に使いたいと考えています。 InputStream is = sock.getInputStream(); DataInputStream DataIn = new DataInputStream(is); BufferedReader TextIn = new BufferedReader(new InputStreamReader(is,1); ヘッダをBuffuredReader#readLine()で""(ヘッダ終わり)が出るまで読み込んだ 後に、DataInputStreamでデータを読んでも、0バイトしか読み込めませんでした。 (バッファに先読みされた?) BufferedReaderをまったく使わずにDataInputStream#readLine()を使えば一応 問題ないのですが、こちらのメソッドは非推奨らしいので出来れば使いたくありません。 この二つをうまく共生させる方法はありませんか?よろしくお願いします。
> 微妙に違う処理なんだけど 何が違うのか具体的、かつ詳細に。 っつか、何が問題なのかもよくわからんし、 面倒だから自分の気が済むようにすればいいんじゃね? とか思わなくもない。
>>39 > この二つをうまく共生させる方法はありませんか?
\r\n\r\n を検知したら -1 返すような InputStream 作って、
Reader にはそれを渡すとかして、先読みさせないようにするとか。
BufferedReader textIn = new BufferedReader(new InputStreamReader(
new InputStream(){
private boolean eof = false;
private int data = 0;
public int read(){
if(eof) return -1;
int b = is.read();
data = data << 8 | b;
eof = (b == -1 || data == 0x0d0a0d0a);
return b;
}
}));
とか。
素直に java.net.HttpURLConnection とか使った方が良いような気もする。
>>38 ↓みたいなことがしたいってこと?
import java.awt.TextField;
private TextField textfield1 = new TextField();
private TextField textfield2 = new TextField();
public void textshow(java.awt.TextField field){
field.setText("テスト");
}
呼び出すときは textshow(this.textfield1); textshow(this.textfield2);
sjc-pうかた\(^o^)/
44 :
デフォルトの名無しさん :2007/05/01(火) 20:32:16
>43 貴様、朝4時頃にカキコしてたやつだろ。 朝っぱらから受けるんだなぁと思ってたら、こんな時間まで…
試験は昼過ぎに終わったよ 帰りにショッピングしてたよ\(^o^)/
46 :
デフォルトの名無しさん :2007/05/01(火) 20:59:53
\^o^/
47 :
デフォルトの名無しさん :2007/05/01(火) 21:30:32
ランダムバナーを作りたいんだけども、どうしてもIE6で警告文が表示される。 こんな感じです。 <SCRIPT language="JavaScript"> <!-- jmp = new Array(); img = new Array(); jmp[0] = "リンク先"; jmp[1] = "リンク先"; jmp[2] = "リンク先"; img[0] = "画像"; img[1] = "画像"; img[2] = "画像"; n = Math.floor(Math.random()*jmp.length); document.write("<a href='"+jmp[n]+"'>"); document.write("<img src='"+img[n]+"' border='0'>"); document.write("</a>"); //--> </SCRIPT> 画像は事情があって同じディレクトリに置けないので、htmlから始まるアドレスを入れて表示させています。 警告文を表示させないで実行したいのですがどうすればいいか教えてください。
48 :
デフォルトの名無しさん :2007/05/01(火) 21:35:25
49 :
デフォルトの名無しさん :2007/05/01(火) 21:39:21
50 :
デフォルトの名無しさん :2007/05/01(火) 21:43:22
アプレットでメソッドを参照することはできますか? どういうことかというと、↓みたいなことをアプレットでもできるか?という意味です。 class A{ public static void main(String[] args){ B(); } public static void B(){ C; } }
>>50 メソッド呼び出してるようにしか見えないんだけど。
参照ってどこにあんの?
メソッドを参照という言葉を意味が通るように解釈すると、 「Methodオブジェクトを取得して何かする」という意味になりそうだが たぶん違うな。
53 :
デフォルトの名無しさん :2007/05/01(火) 21:53:58
じゃあ参照じゃなくて呼び出しです。
>>53 なんでメソッド呼び出しが できなくなるって思うんだ?
55 :
デフォルトの名無しさん :2007/05/01(火) 22:03:10
やってみてもできないからです。 drawlineを含んでるからかな。
呼ばれてるけど期待する結果になっていないのか、 呼ばれておらずなにも起こらないのか、 コンパイル自体ができないのか、 いろいろ可能性があって回答不能。
>>55 とりあえず、ソース全部晒せ。
コンパイルエラーか実行時エラー出てるなら、それも全部。
58 :
デフォルトの名無しさん :2007/05/01(火) 22:14:57
晒すのは嫌なので自分で何とかすることにします。ありがとうございました。
>>39 なるほど!
うまくいきました。
>java.net.HttpURLConnection
こんなクラスあったんですね・・・検討したいと思います。
ありがとうございました。
60 :
デフォルトの名無しさん :2007/05/01(火) 23:29:07
SwingとかSWTでプログラミングするって聞きますが、これらはIDEなんですか?
61 :
デフォルトの名無しさん :2007/05/01(火) 23:30:08
違います。
最近はじめたばかりの初心者です 入力した誕生日に対して現在の日付を基準に年を求めるメソッドを 作りたいのですが、どのメソッドをどのように使ったらいいかわかりません・・・(´・ω・`) どなたか教えてください(´・ω・`)
63 :
デフォルトの名無しさん :2007/05/02(水) 00:18:03
>>62 現在日付は取れるのか?
四則演算は出来るのか?
誕生日入力ってのはmainのパラメータで渡すのか?
何が出来ないんだ?
出来る事と出来ない事を分けて書いてくれ
回答が得られないので、違うスレから移動してきました。 java初心者なのですが、 int a,b に数字を入れて割り算を行い、余りも含めてdouble型で出力しようとして public static void main(String[] args) { int a = 5; int b = 3; double d; d = a/b; System.out.println("5/3="+d); } と記述してみたのですが、実行結果は1.0となってしまいます。 どうすれば余りも含めて表示することができるのでしょうか?
算数初心者?
初心者なのですが≒頭が悪いのですが
int / int = int (double)int / (double)int = double
69 :
デフォルトの名無しさん :2007/05/02(水) 08:33:03
%←あまり
>>65 商と剰余を同時に計算することはできないので、それぞれやる計算する
がある。ところで、doubleでの余りってどういうものを期待している?
71 :
デフォルトの名無しさん :2007/05/02(水) 10:14:40
Java(ジャバ) の読み方というかイントネーションについて。 1.↑↓(吉幾三の『よし』に近いイントネーション) 2.↓→(和田アキ子の『わだ』に近いイントネーション) どっちなんでしょうか?
中国語の四声に合わせて読んでみよう ジャヴァ、ジャヴァ、ジャヴァ、ジャヴァ
73 :
デフォルトの名無しさん :2007/05/02(水) 10:19:06
たすけてくれぇぇ xlsファイルをCSVファイルに変換するJAVAプログラムなんて あるのぉ?? (σ´Д`)JExcelApi使ったけどリファレンスが全部英語でわかんねぇ
74 :
71 :2007/05/02(水) 10:22:18
>>72 読んでみましたが、第2声なのか第4声なのかというところですかね。
どっちが主流なんでしょうか?
75 :
65 :2007/05/02(水) 10:27:00
わかりました。 わざわざありがとうございます。
76 :
72 :2007/05/02(水) 10:43:05
>74 いや、あの…ネタだったのに、ごめんorz 個人的には『わだ』式。 元々英語なんだから日本語にした時の発音なんてそれぞれじゃね?
77 :
デフォルトの名無しさん :2007/05/02(水) 10:47:33
>73 つーか、ExelでCSV保存しなおすことができるよね
78 :
71 :2007/05/02(水) 11:20:43
>>76 あ、ネタだったんですか・・・。
でも、分かる人には四声で表現した方が伝わりやすいですね。
>元々英語なんだから日本語にした時の発音なんてそれぞれじゃね?
それもそうなんですが、例えばWordとかExcelとかだと第1声に近い感じのが主流ですよね。
Javaにもそういう主流の発音があるのかなぁ、と思ったので。
どうでも良いと言えば、どうでも良いんですけど
以前、Word、Excelの発音が第4声に近い感じの人が
「WordとExcelぐらいできますよ〜」と自身満々に言ってた割りに全然使えなくて
「使い慣れてる人はあんな発音しないよな・・・」みたいな印象をみんな持ってたので
ソフトの発音と言えどもバカにはならないな、と思ってたんですよね。
もし主流の発音があるのなら今のうちにそっちにしとこうと思って質問したんですが、
って、ものすごく長くなってすみません。
発音気にする前にワニの本読みます。
仕事をしていると ( c == 'A' ) がアザラシに見えてきます。どうすれば良いんでしょうか?
>>79 定数を定義する。これで'A'がメソッドの中に現れることはない。例えばこう。
public static char ^ω^ = 'A';
81 :
デフォルトの名無しさん :2007/05/02(水) 12:52:35
俺なんてjavaのキャラクターが奥歯に見えるぜ。
String型のデータをDate型にいれるのってどうすればいいですか?
え くせる くせる え どっちとも読むと思われ。
>>80 ( c == ^ω^ )
どう見ても、アザラシです。ありがとうございました。
87 :
82 :2007/05/02(水) 14:27:47
やってみたんですが
>>29 だと現在の日付になっちゃいますよね?
StringにYYYY/MM/ddの形で文字列が入ってることが前提だとどうすればいいでしょう?
88 :
デフォルトの名無しさん :2007/05/02(水) 16:41:51
>>87 あのなぁ
>>29 が回答だなんて誰も言ってないだろ?
ある程度ヒントが出てるんだからクラス名使って自分で調べろよ。
その上で何が分からないのかを聞けよ。
もしも自分なりに調べた上で質問してるなら
何を何処まで調べて、何が分からないんだ?
90 :
デフォルトの名無しさん :2007/05/02(水) 21:05:17
JAVAでxlsファイル(計3シート)を csvファイルに変換したいのだが・・・。 どうしてもcsv変換後は前と(セルの中身)配置が違う。 どうしたらいいんだ〜!誰か・・エレガントなロジックをおしえてくれぇぇ!! 読み込みにはPOIを使用してます。
マルチかよ・・・
swing使ってwindowsプログラミング?してるんですが、 何か手軽にデバッグできるようなのありませんか? C(win32api)ではダイアログボックスがすごく便利でしたが、 それに相当するようなものないかなーと
>>92 javax.swing.JOptionPane#showMessageDialog とか?
素直にNetBeansとかEclipseみたいなIDEの
付属のデバッガ使った方が良いような気もするけど。
>>93 なぜか付属のデバッガのことを忘れてましたw
ありがとうございました。
95 :
デフォルトの名無しさん :2007/05/02(水) 22:58:21
JAVAでプロセス間通信ってどうやってやるの?
ソケットを使うのは普通に出来る。 共有メモリとかは標準にはないけど、NIO方面になんかあったよーな気も……
97 :
デフォルトの名無しさん :2007/05/02(水) 23:10:08
textfieldの一番左端に文字をsetするには どうすればいいでしょうか?
すみません。右端でした。
しかもtextareaでした。
101 :
デフォルトの名無しさん :2007/05/02(水) 23:47:47
テキストの文字を取得して、最後に文字をくっつけて、またテキストにセットすればいいやん。
いえ、そういうことではなくて、 setTextを使うとtextareaの左端に表示されてしまうので。 それをtextareaの右端に表示したいんです。
AWTだとプラットフォームのpeer次第だろうな。 SwingのJTextAreaは textArea.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT); だろうか。 正確には、中に子供部品を配置するときの左右に関係するパラメータだと思ったが。
ありがとうございます。 swingなので、よくわかりませんがやってみます。
jakarta POIで、あるExcelファイルを読み込むと org.apache.poi.hssf.record.RecordFormatExceptionが出る。 元のExcelファイルをExcelで開いて上書き保存するとちゃんと読み込めるんだけど、 元ファイルを吐くプログラム作った人に言わなきゃいけないんだろうか。 というかマスタぐらいcsvで吐いてくれよヽ(`Д´)ノウワァァン 一応poi-3.0-alpha3-20061212.jarとpoi-2.5.1-final-20040804.jarで試してみたけどだめぽ。
JTextFieldなら import static javax.swing.SwingConstants.TRAILING; textField.setHorizontalAligment(TRAILING); で、現在の行方向の行末に向かって揃えられる。 TRAILINGの代わりにRIGHTなら行方向にかかわらず右揃えになる。 JTextAreaにはsetHorizontalAlignmentなかったな。
107 :
デフォルトの名無しさん :2007/05/03(木) 02:04:34
質問ですただいま私のプログラムに3つのjavaがはいっているのですが 5・0の9、10、11と入っています?これは上書きされないのでしょうか・・ 容量ばかり食ってしまうので、9と10を捨てて最新と思われる 11だけを残しておけば後はアンスコしても大丈夫でしょうか? それとも9も10も11もそれぞれ違う役割をしているからどれか1つでも アンスコしたら何かが起動しなくなる・使えなくなるなどということがある。 などということでも何でも良いので教えてください。お願いします。
108 :
デフォルトの名無しさん :2007/05/03(木) 02:23:17
>>107 JDK自体に問題はない
クラスパスどこで管理してるかは君次第
109 :
デフォルトの名無しさん :2007/05/03(木) 12:54:49
>>108 レスありがとうございます。すいません、初心者なもんで
ちょっと説明が難しいのですが。とにかく、9,10,11は
それぞれ別物ということでしょうか?そしてその9でも10でも11でも
何かのプログラムが例えば9のjavaで使用していればアンスコしたら
使えなくなるから×で最新と思われる11のjavaでも何も使用して
いなければアンスコしてもおkということでしょうか。。。
>>109 自分で何も設定した覚えがなければ、とっくに動いていない9・10をさっさと消すべし
抽象クラス(というか継承)の使い方がよくわかりません。 クラスA,B,Cを含むパッケージがあります。 Aは抽象クラスです。 Aを継承したクラスB,C,Dを作成します。 B,C,Dは異なる実装ですが、同じ機能を提供します。 この場合、B,C,Dのインスタンスは外部からは何型として参照すれば良いのでしょうか。
×クラスA,B,Cを含むパッケージがあります。 ○クラスA,B,C,Dを含むパッケージがあります。 でした。すみません。
普通は A 型の参照に入れると思うけど。 大雑把に言って、 A a; if(hoge) { a = new B(foo); } else if(hage) { a = new C(bar); } else { a = new D(baz); } a.hige(); みたいなことがしたいんじゃないの? まあ、B, C, D に拡張機能がある場合は 直接 B, C, D を使う場合もあるだろうけど。
>>114 さん
やりたいことはその通りです。
B,C,Dには拡張機能はありません。
B,C,Dは実行環境(プラットフォームでも良い)に依存したクラスです。
・クラスA,B,Cを含むパッケージがあります。
・Aは抽象クラスです。
・Aを継承したクラスB,C,Dを作成します。
・B,C,DはAの異なる実装ですが、同じ機能を提供し、それぞれに拡張機能はありません
ここに、インスタンスの生成に関して2つ条件を加えようとしています。
・B,C,Dのインスタンスは排他的にどれか一つしか生成できません。
・B,C,Dのインスタンスはいずれも、同時に一つしか生成できません。
これが上手く実現できません。。。
>>112 >B,C,Dは異なる実装ですが、同じ機能を提供します。
ここまで分かってるなら理解してるような気がするけど、
機能が同じでも実装が違えば返ってくる値が違うってのは理解してる?
117 :
112 :2007/05/03(木) 14:54:11
>>116 さん ご返答有難うございます。
>機能が同じでも実装が違えば返ってくる値が違う
Aから継承したメソッドをA型参照から呼び出しても、
それがBのインスタンスであるかCのインスタンスであるかによって、
実行される処理が変わるということでしょうか?
118 :
112 :2007/05/03(木) 14:55:19
115について、自分が考えたのは、 1.AにstaticなA型ポインタをメンバとして加える。 2.Aにstaticなインスタンス生成用のメソッドを追加する。 3.2のメソッドは1のポインタにB,C,D何れかのインスタンスを生成して参照(代入)させ、 1のポインタを返す。 4.B,C,Dのクラスまたはコンストラクタのスコープをパッケージで閉じてしまう。 5.↑によって、B,C,DのインスタンスはAのメソッドを通してA型としてしか取得できないようにする。 これってなんかおかしいでしょうか・・・。
>>115 排他的でシングルトンなファクトリクラスを作れば良いかな。
シングルトンの管理は色々出来そうだけど
A,B,C,D,ファクトリを同じパッケージにしてB,C,Dのコンストラクタはパッケージープライベートにする。
んで、ファクトリはAのサブクラスのインスタンスを一度でも生成したか
どうかのフラグを持つ。B,C,Dのインスタンスを返すメソッド(ファクトリメソッド)内でフラグ立てる。
フラグが立ってれば以降はインスタンスを返さないか、
または生成済みインスタンスを返す。
大雑把だけどかんな感じか。
121 :
112 :2007/05/03(木) 16:11:50
>>119 さん,120さん
有難うございます。
デザインパターンについて少し調べてみることにします。
APIのメソッドのソースをEclipse上での見方を教えてください。 「ソースが見つかりませんでした。」 となるのですが・・。 どこからかDLすれば見れるようになるとかいうことでしょうか? 宜しくお願いします。
APIソースはJDKに入ってる。 仮想マシンの設定あたりにソースzipを指定する箇所があるよ。
構造体の2次元配列ってどうやって定義すればよいの? こんな感じで使いたいのです。 myName[0][0].sei = "性" myName[0][0].mei = "名" ちなみにこんなふうにしてみましたがダメでした。 class StructName { String sei; String mei; } StructName myName[][] = new StructName[5][5]; myName[0][0].sei = "性" ← 代入しようとするとエラーになる。
まずそれは構造体じゃない で、最初に初期化しなきゃだめ for〜〜 for〜〜 myName[i][j] = new StructName(); あとお前はコンストラクタでググるべきだ
コンストラクタでググる前にjavaの教科書を頭から読み直すべきだな
オブジェクトが存在するかどうか調べるにはどうすればいいでしょうか。
もすこし詳しく
int[] vec = new int[2]; このような1次元配列vecを2次元配列としてメソッドに渡したいのですが、どうしたらいいのでしょうか? 今は下のように書いているのですが、キャスト専用の変数を作るのとコードが冗長になってしまうのとが気になってしまって もっとシンプルに書く方法ってありませんかね? int[][] temp = new int[1][2]; temp[0] = vec; method(temp);
>>129 new int[][]{ vec };
>>130 即レスありがとうございます
期待した通りに動かすことができました
java入門したばかりで言語より考える方について質問ですが割合を出す方法を式で書くとどうなのかお尋ねします。 例えば、製品数a(1000個)の内、不良品b(200個)あると良品数c(80%)ですよね。 *a,bは決まった数字じゃありません
それ算数の問題だからjavaとか関係ない
134 :
デフォルトの名無しさん :2007/05/04(金) 20:03:54
C系では、メソッドやクラスの左かぎ括弧は改行するけどJavaではしないよね。慣例なの? 【C系】 public class SampClass { } 【Java】 public class SampClass{ }
>>134 Sun のコーディング規約だと後者に近いってだけじゃね?
C言語でも改行しない人は一杯いるしね。
プログラミング言語C++ とかでも switch { やら struct hoge_tag { では改行してないし。
GNUコーディング規約だと if とか while とかでは改行+インデントして括弧つけたりするし。
137 :
デフォルトの名無しさん :2007/05/04(金) 21:08:13
これ、コピペ多用する言語なのか? なんだかその悪寒がしてきたんだが
139 :
デフォルトの名無しさん :2007/05/04(金) 22:31:55
javaでExcelを作れるが、そのExcelにVBAコードを挿入できる??
>>136 各言語でそういう規約があるのね。
eclipseの自動生成や、書籍を見てて改行してなかったから、慣例だと思ってたよ。
まぁ俺はクラス・メソッドは改行、制御文は改行なし、でいつもやってるんだがなぁ。
ま、javaは規約に従うとするか・・・。約1行、節約になるしw
141 :
140 :2007/05/04(金) 23:00:27
コンストラクタの実行に時間がかかるクラスを作ったんで、カウンタ設置してその値に応じてJProgressBarで経過を表示しようとしたんだが、コンストラクタの実行中はバーが全然更新されなくて、実行終了後に更新されてバーがMAXになる。 どうすれば・・・
>>143 まじでサンクス!
明日早速なおしてみます。
マルチにも回答がやってくる恋の季節
146 :
デフォルトの名無しさん :2007/05/05(土) 14:27:24
このエラー何ですが、どうしたらなおるでしょう? シンボルを解釈処理できません。 シンボル: メソッド equals (char) 位置 : java.lang.String の クラス if("\t".equals(tmpStr.charAt(i))){
>>146 > if("\t".equals(tmpStr.charAt(i))){
if("\t".equals(tmpStr.substring(i, i+1))){
148 :
デフォルトの名無しさん :2007/05/05(土) 14:36:12
>>147 ありがとうござます。iが原因みたいですた。
>>147 if('\t' == tmpStr.charAt(i)){
でも良かったのでは?
別のプロセスにオブジェクトを渡したいのですが、どんな方法がありますか?
コピペ
>>150 java越えて共有メモリにしたいとか、そういう事?
153 :
デフォルトの名無しさん :2007/05/05(土) 17:36:07
オブジェクトを構成する全てのパラメータを エクスポート、インポート出来るようにして・・・ってそういう事でいいのか?
154 :
デフォルトの名無しさん :2007/05/05(土) 18:07:51
Javaのクラスでつまずいている者です。
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29366 このようなソースの場合、
class Employeeの、
public Employee(String n, double s)
{
name = n;
salary = s;
id = 0;
}
や
public String getName()
{
return name;
}
はどういった役割をしているのでしょうか?
また、
public void setId()
{
id = nextId; // set id to next available id
nextId++;
}
もどういった役割なのでしょうか?
なぜ、getとsetを設定するのかが分からず、混乱しています。
新しく犬を飼おう 名前はポチにしよう(setName) このわんちゃんの名前なんていうの? ポチだよ(getName)
何でポチって名前なの? ポチって首輪に書いてあるから ポチって犬小屋に書いてあるから ポチって焼き印wが押してあるから ポチって俺が名付けたから 何でポチかは自由。知りたいのは何故かではなく名前だけ。
>>154 ただの変数だと、制限がかけられない。(現実的にありえない数値が入ったりする)
そこで、セッターを作り、引数をチェックし、ありえない数字が来たら例外を発生させる。
void setHoge(int foo) {
if () {
}
↑途中で送信してしまった。 if で引数チェックして、例外発生させるの。 そしたら、変数が適切な値だと保障することができる。 クラスや例外ない言語の場合、 関数呼んだあと、戻り値でエラーチェックしたりするのが めんどくせえぞ。
オブジェクトってのは変数が賢くなったみたいなもん。 箱にボタンがついたみたいなもん。 自販機を考えてみれば、箱の中身の仕組みを知る必要はなく、 お金を入れて、ボタンさえ押せばジュースが返ってくる。 クラス(設計図)に中の仕組み書いて、 new クラス名でインスタンス(実体/オブジェクト)を作るってだけ。 クラスの外からは、中のメソッド(ボタン)の仕組みを知る必要はなく、 何が必要で、何が返ってくるかだけ知っていれば良い。
jarファイルというのを作って実行してみたのですが、 プログラムは正しく動作するのに、画像が表示されません。 classファイルと同じディレクトリにgif画像はあるのですが、 どういった原因が考えられますか?
>>161 正しく動作してんなら何の問題もないよね。
次の質問どーぞー
164 :
161 :2007/05/06(日) 01:19:20
ああ、そうですね。矛盾してますね。 パッケージに纏める前は正しく動作して画像もきちんと表示されていました。 しかしjarファイルを作った後にプログラムを実行したところ、画像は表示されないけど、 それ以外は前と同じ動作をしているように見えます。
>>164 ClassやClassLoaderのgetResourceで画像ファイルのURLを求めてそのURLから読み込むようにしていないか
大文字と小文字の区別をつけられないファイルシステムを使っていて上手く動くような気になって
その区別をつけるjarの中の画像ファイル名を正しく指定していないか
166 :
デフォルトの名無しさん :2007/05/06(日) 02:33:56
Javaのawtってボタンとかの配置を座標で指定できないの? それっていくらなんでも不便じゃない
167 :
デフォルトの名無しさん :2007/05/06(日) 02:40:42
>166おれにもおせーて
つ ILikeTroublesomenessLayout implements LayoutManager2
JNIを使ったクラスライブラリを書いているのですが、 ネイティブなファイルをjarに含めて動作させるにはどうしたら良いのでしょうか。 ぐぐるとBundle-NativeCodeなるものが見つかったものの 書いても何も変わらず、loadLibraryがネイティブなファイルを見つけてくれないのです。
携帯電話向けJavaでは、 使いまわされないデータ型だけのクラス(構造体)なんかは、 メインのクラスで内部メンバとして書いたり、 ステップ数が多い処理を、メソッドを使わずインラインでガリガリ書いたりと、 独特の流儀があるようです。 以前の携帯は実行ファイルサイズ制限があって、 このような方法が主流みたいですが、 今は実行ファイルサイズの制限は緩和されたようです。 とすると、上のような携帯Java独特の、 およそJavaらしからぬコーディングスタイルには意味はあるのでしょうか? 例えば、単一のデータ構造を参照するのにインナークラスを使わずに、 呼び出し元のメンバとして参照する事で、速度的なメリットがあったりするのでしょうか?
>>170 それはもう過去の話。心配しないで関数にしておk
単一クラスでがんばる、とかは?
173 :
デフォルトの名無しさん :2007/05/06(日) 07:25:37
ライブカメラ全般たとえば「東京ストリート チャンネル」などが見れなくなってしまった のですが、何が原因なんでしょうか。 javaを再インストールしたがダメです。
>>166 一応、java.awt.Component#setLocation()
>>170 食らうヒープ量が全然違うので関係大あり。
177 :
デフォルトの名無しさん :2007/05/06(日) 11:17:24
JAVAでロボット動かせるって本当ですか
ウインドウアプリケーションを作ろうと思っています。 Appletクラスの継承を用いてアプレットを起動する場合には、 htmlファイルの中に <applet code="XXX.class" width=256 height=256> を記入すればいいと思いますが、Frameクラスの継承を用いた場合、 同様にインターネットエクスプローラーから起動させるにはどうすればいいのでしょうか?
>>174 これ使ってもうまくいかなかった。
ていうかJavaは用意されたレイアウトを組み合わせることでGUI部品を配置していく
仕組みを奨励してるのかな。面倒だよな。配置の仕方に限界がありそう。
なんで他言語のようなリソースエディタがないのだろう。
GUI部品のレイアウトをいちいち回りくどく記述するなんて古いよ
同一環境でしか動かさないつもりなら別にいいが そうでないなら絶対座標指定のほうがよっぽど限界があるわ。
183 :
179 :2007/05/06(日) 13:08:21
>>180 ありがとうございます。ちょっくらやってみます。
184 :
170 :2007/05/06(日) 13:09:16
187 :
161 :2007/05/06(日) 16:08:50
知識が乏しくて恐縮ですが 自分が使っているファイルシステム?ってのはどうやって調べられるのでしょうか。
現在専門学校生なのですが、学校と同じ環境を作りたく設定で悩んでいます コマンド プロンプトで、terapad ----.javaと打てばterapadが立ち上がるようにしたいのですがどうすればいいのでしょうか?
189 :
デフォルトの名無しさん :2007/05/06(日) 17:40:16
JFrameで質問があります。 Core Javaのボールオブジェクトが跳ね返るプログラムの応用で、 JFrame内に存在するオブジェクト(この場合、四角です)をD&DでJFrame内なら 自由に移動出来るJavaプログラムを作成しているのですが、 JFrameの外(見えない部分)にも移動でき、そうした場合、オブジェクトが見えなくなるので、 強制終了する以外終了する方法がないという意味のないプログラムになってます。 どうすれば、オブジェクトをJFrame内のみ移動可能なプログラムにする事ができるのでしょうか?
>189 どうしてボールが跳ね返る(ようにみえる)か考えてみたら?
191 :
デフォルトの名無しさん :2007/05/06(日) 18:23:56
遠坂凛に質問です。 宝石製のバイブでオナニーすると、魔力を溜めることはできるんでしょうか?
>>189 ズバリ解答を言うと、端に来たらD&Dでき無くすればおk
>>188 exploreのオプション->ファイルタイプ
で.javaにそのterapadとやらを割り付ける
だけど、なんでterapadなんだ?
terapadとかcpadとか、わけわからん
>>188 java関係ないがterapadをパスの通った場所に置けば良いじゃん。
てか、start XXX.javaじゃだめなん?
195 :
189 :2007/05/06(日) 19:25:24
>195 全然無関係のところをまねしてどうする? やるべきことはShapeに渡す値を描画エリアのサイズ内に調整すること
197 :
189 :2007/05/06(日) 20:54:32
>>196 shapeBeingDragged.moveBy(x - prevDragX, y - prevDragY);
の部分を調整すればよいのでしょうか?
198 :
デフォルトの名無しさん :2007/05/06(日) 20:58:22
199 :
デフォルトの名無しさん :2007/05/06(日) 21:07:42
eclipse使ってたらなんか上書きモードになっちゃった。 どうやったら治るの
>>199 デフォルトのキーバインドなら insertキー
201 :
デフォルトの名無しさん :2007/05/06(日) 21:17:39
>>200 インサートキーってどうやってonにしたりoffにしたりできるの?教えて
これはひどい
203 :
デフォルトの名無しさん :2007/05/06(日) 21:25:38
eclipseでお勧めの本おしえて
>197 そう 元のCore Javaのソースはしらないけど ボールが描画エリアの端にあたってはねかえるのは 端の座標を越えたら増分を反転させているから そしてこの場合はDnDだから(つまり人間が操作しているから) 増分を反転させるのではなくそこの座標に制限する 言葉で説明するの面倒になってきたので コードで書くとこんな感じかな if (shapeBeingDragged == null) return; int x = evt.getX(); int y = evt.getY(); Dimension cs = this.getSize(); int maxw = shapeBeingDragged.width - cs.width; int maxh = shapeBeingDragged.height - cs.height; if (x < 0) x = 0; else if (x > maxw) x = maxw; if (y < 0) y = 0; else if (y > maxh) y = maxh; shapeBeingDragged.moveBy(x, y); repaint();
>197 わるい逆だ なれない変数名だったので混乱した int maxw = cs.width - shapeBeingDragged.width; int maxh = cs.height - shapeBeingDragged.height;
206 :
189 :2007/05/06(日) 21:50:16
>>205 ありがとうございます。
ソースに組み込んでみたのですが、クリックをするとはぐれメタルが逃げるかのごとく、
画面上からオブジェクトが右下に消えてしまいます。
>206 mouseReleased()の方の実装もかえてね mouseDragged()と1行違いだから共通部分を切り出して 別メソッド呼び出しにすればいいかな if (shapeBeingDragged == null) return; int x = evt.getX(); int y = evt.getY(); Dimension cs = this.getSize(); int maxw = cs.width - shapeBeingDragged.width; int maxh = cs.height - shapeBeingDragged.height; if (x < 0) x = 0; else if (x > maxw) x = maxw; if (y < 0) y = 0; else if (y > maxh) y = maxh; shapeBeingDragged.moveBy(x, y); shapeBeingDragged = null; repaint();
208 :
189 :2007/05/06(日) 22:07:18
>>207 こうでしょうか?
synchronized public void mouseDragged(MouseEvent evt) {
if (shapeBeingDragged == null) return;
int x = evt.getX();
int y = evt.getY();
Dimension cs = this.getSize();
int maxw = cs.width - shapeBeingDragged.width;
int maxh = cs.height - shapeBeingDragged.height;
if (x < 0) x = 0; else if (x > maxw) x = maxw;
if (y < 0) y = 0; else if (y > maxh) y = maxh;
shapeBeingDragged.moveBy(x, y);
repaint();
}
synchronized public void mouseReleased(MouseEvent evt) {
if (shapeBeingDragged == null) return;
int x = evt.getX();
int y = evt.getY();
Dimension cs = this.getSize();
int maxw = cs.width - shapeBeingDragged.width;
int maxh = cs.height - shapeBeingDragged.height;
if (x < 0) x = 0; else if (x > maxw) x = maxw;
if (y < 0) y = 0; else if (y > maxh) y = maxh;
shapeBeingDragged.moveBy(x, y);
shapeBeingDragged = null;
repaint();
}
ttp://a-draw.com/uploader/src/up22134.txt
>208 いいんじゃないかな 逃げ去るってことはその他にタイマー処理が行われているって 可能性が考えられるけど元のソースのボールの処理が残ってない?
210 :
189 :2007/05/06(日) 22:39:11
>210 moveBy()で加算しているようだから以下のように書き換えてみて left = dx; top = dy;
二つのクラスがあったとして Class1のテキストフィールドにClass2のメソッドの処理結果を表示させたいんですがどのような方法が ありますか??メソッドは引数をもたないものとして
213 :
デフォルトの名無しさん :2007/05/07(月) 12:45:05
SocketChannelでreadで-1が帰ってくる以外に正常切断を判断する方法はありますか。 FINで終わったのかどうかが知りたいです。
214 :
213 :2007/05/07(月) 12:47:44
Class1のインスタンスをClass2に事前に持たさせておいて Class2のメソッドの処理結果がでたタイミングで Class2で保持しているClass1のインスタンスのテキストフィールドに表示させる
>>214 ありがとうです
class2{
class1 cls=new class1
処理
cls.text.setText(処理結果);}
このようにやってみたんですが表示してくれません・・・
エラーはないんですがどこが間違ってますか><?
>>215 class1でのテキストフィールドのsetTextはちゃんと働いてるの?
>>213 > readで-1が帰ってくる以外に正常切断を判断する方法
むしろ、こっちから close() してみる。
たぶん、相手はFINフラグを受け取るはず。
マジレスすると、仕様に書いてないなら無理だと判断すべき。
218 :
213 :2007/05/07(月) 15:08:55
>>217 >>マジレスすると、仕様に書いてないなら無理だと判断すべき。
レスありがとう。Javadocにはかいてないんですよ。
FINフラグを受け取ってのread=-1なのか、その他の問題でのread=-1なのかを判断したいだけなのですが、
方法がさっぱしです。
219 :
213 :2007/05/07(月) 15:14:18
>>215 class Class2 {
private Class1 target;
public void setNotifyTarget(Class1 target) {
this.target = target;
}
public void Kekkadasu() {
nankaNoSyori();
target.text.setText("処理終わり");
}
}
public static void main(String[] args) {
Class1 cls1 = new Class1();
Class2 cls2 = new Class2();
cls1.text.setText("処理前");
cls2.setNotifyTarget(cls1);
cls2.Kekkadasu();
}
みたいなかんじではどうでしょうか。
質問なのですが
interfaceを利用してclassを作成しています
作成したclassを利用する際、設定ファイルやDBから読み込んだ文字列を利用して
動的にnewする対象を指定したいのですがやり方がわからないので教えてください
http://www.wikiroom.com/java/index.php?FAQ#content_1_4 のclassを例にすると、
Performableインターフェイスを利用したEntertainerクラスとAthleteクラスが存在するときに
設定ファイルに
Entertainer
と書かれていたら
Performable test = new Entertainer();
が実行され、
Athlete
と書かれていたら
Performable test = new Athlete();
が実行されるようにしたいです
例だとclassが2つのためifで判断したらよいのですが
実際には不定な1個以上の複数classが同一のインターフェイスで定義され
それらのどれを利用するかをDBのマスタテーブルからclass名を読み込んで、その読み込んだ文字列にてnewを行いたいのです
また、classは不定期に追加され、利用される可能性があります
こういった実装は出来ないのでしょうか
もしくは、実装できる場合、どのように文字列のclass名を指定したらよいのでしょうか
よろしくおねがいします
>>220 Classクラスを使えばいいんじゃね?
forName() と newInstance() あたり。
String str;
Performable perf;
/* このへんに設定ファイルから
クラス名を読み出して str に
代入する処理があるとする。
*/
try {
Class c = Class.forName(str);
perf = c.newInstance()
} catch (Exception e) {
// 例外処理
}
だいたいの流れはこんな感じで。
>>220 java.lang.Class.forName(String className)#newInstance()
>>213 できました!!
どうやら単純なミスをしていたようです^^;
いろいろ参考になりました
ありがとうございますm(__)m
質問でs! a,b,cというlistと配列に入ってる"a","b","c"の文字列を比較したいのですが どうしたらいいでしょうか??
> a,b,cというlistと配列に入ってる"a","b","c"の文字列を比較したいのですが 解釈の仕方が複数あって、 具体的に何がどーなってるのか良く分からん。
226 :
224 :2007/05/07(月) 17:30:16
たしかにわかりにくいです!すいません a,b,cという項目があって最初は選ばれていない状態ですよね。 で配列にはこのようにはいっていて 配列1 配列2 Aサン a Bサン b Cサン a Dサン c 配列Bを指定したらlist項目のbを選択させるといった感じです
227 :
224 :2007/05/07(月) 17:32:46
間違えました 配列1のBを指定したらですね
で、お前は何がわからんのだ
229 :
224 :2007/05/07(月) 17:42:22
項目を選択させるにはselectしかないかどうかってことです selectだとintしか指定できないから分岐させるしかないのかと・・・
>>229 java.awt.List の話でしょ?
なら、項目選択するにはユーザが操作するか select(int) するしかない。
231 :
224 :2007/05/07(月) 17:48:53
わかりました ありがとうございます!
232 :
デフォルトの名無しさん :2007/05/07(月) 17:54:40
国際化対応の場合に、UTF-8が多く採用されるのはなぜですか? JavaがUTF-8を採用しているからか、ASCII文字との親和性が高いからかな。 →どのようなメリットがあるかわかっていないですが… Java=ユニコード=ALL2バイトと思ってたけど、違うんですね… UTF-8は、レスポンス悪いとかあります?
>>232 > 国際化対応の場合に、UTF-8が多く採用されるのはなぜですか?
国際化対応で Shift_JIS とか EUC-JP は使えないでしょ。
ISO-2022でも ある程度国際化できるけど、実装面倒くさいし。
> Java=ユニコード=ALL2バイトと思ってたけど、違うんですね…
= をどーゆー関係のつもりで書いてるのか分からんので、なんとも言えない。
> UTF-8は、レスポンス悪いとかあります?
場合による。1ギガバイトとかの馬鹿でかいテキスト読んだらレスポンス悪くなるだろうし。
>UTF-8が多く採用されるのはなぜですか? 1バイトで足りる連中がUnicode実装するとき楽だから。 PL関係なく実装者の都合でしかない。
エンディアンが存在しないとか、 ASCIIと互換性があるとか、 バイト指向だとか、 CCSがUCS4だとか、 結構便利なエンコーディングじゃん。
Java初めて20日です。 応用問題を解いているのですが、 各サイト、APIみても、 これを使うとか構造とかがでてこないもの がでてきました。 こういう場合はどうしたら 良いのでしょうか。 また 何を使うとかの ひらめきはどうしたら みにつくのでしょうか?
> ひらめきはどうしたら ロマサガで特訓してこい。
239 :
デフォルトの名無しさん :2007/05/07(月) 21:21:53
String strに何か文字が入っているとします。 この中に入っている文字が整数かどうか調べるにはどういう風にすればいいでしょうか?
>>239 一文字だけ調べるなら Character.isDigit(str.charAt(0))
241 :
デフォルトの名無しさん :2007/05/07(月) 21:30:50
一文字ではなく文字列を調べる場合は他に方法ありますか? このCharacter.isDigit(str.charAt(0))をforとかで文字数文まわすとかしかないでしょうか?
parseIntでうまくいくかどうか調べる
正規表現 -?[0-9]+ とか
244 :
デフォルトの名無しさん :2007/05/07(月) 21:48:53
JAVAの入門書に載ってる最初のコードを実行したら、 X11のライブラリがねえとか言って怒られたよ。 本を見たらwin用の本だった。 JAVAってそういうのは吸収してくれないのな。 なんでもいいからウィンドウ出せやボケと思いました
>>230 > java.awt.List の話でしょ?
エスパーすげー
Linuxか? Javaの、そういう差を吸収する部分(AWT)がX11を必要としているのよ。
>>236 エンディアンはないがBOM忘れてる奴が多いがな。
エンディアン無関係だからこそBOMは本来不要だし
サイトに埋め込まれてるjavaアプレットのソースを知りたくそのページのソースを調べて、 「ファイル名」.classのファイルをDLしたのですが、eclipseやテキストで開くと(拡張子を.javaにしたりして) 、文字化けしていて読むことができません。 このような.classファイルは読むことができますか?
>>236 日本語は大抵3バイトになるのが鬱陶しいけどな。
>>251 バイナリエディタ。
つーかなんでバイトコードにソースが含まれてんだと小一時間・・・。
素直にお帰りください。
バイナリエディタがアンリエッタに見えた俺はアニオタ
256 :
251 :2007/05/08(火) 00:31:40
>>253 理解し損ねてました
.classファイルを.javaに変換できる方法はありますか?
>>255 だから?
UTF-8のBOMはエンコーディングの認識精度を上げるくらいしか役にたたないし、
在ることで困ることの方が無くて困ることより多いと思うが。
UTF-8 must contain a BOM.じゃなくてUTF-8 can contain a BOM.て書いてあるじゃないか。
だから、BOM付きを邪険にはしないけど、自分からわざわざ付けたりはしたくないな。
>>256 javap
ディスアセンブラとかデコンパイラでググれ
空気読めるようになろうね。
GridBagLayoutがまんどくさすぎる このくらい自由が利いてもっと楽なのあれば教えて☆
SpringLayoutとかは? それか自由が利いてもっと楽なのを自作する
262 :
260 :2007/05/08(火) 05:14:33
GroupLayoutってのもよさげ いろいろあんだね もうGridBagLayout使うのやめよう
NeXTStepもOSXも同じAPIですぜ
Javaに限ったことではありませんが、配列番号ってどうして0から始まるんでしょう。 1からのほうが色々すんなり行くと思うのです。
一長一短だが、大体において 0 の方が便利。 なにかと計算量を減らせる。
>>267 一つ目の要素: array[0] より
一つ目の要素: array[1] のほうが分かりやすく自然だと思うんです。
もしあなたがそう思わないなら、それはプログラマーとしての観点を既に持っているからでしょう。
x番目の要素の添え字はx-1ですが、これがx-372だったとしたら
三番目の要素の添え字は、え〜っといくつだ?ってことになりますよね。
>>268 なるほど、確かにそうです。
納得しました。
>>269 量的にではなく指標だから0からは当然だとおもうよ。
定規が1から始まるのが自然だとは思わない。
初心者です textfieldに"java"と入ってたとして、それに対して指定した数だけ"*"を追加したいんですが どうしたよいでしょう? 指定した数が3なら"java***"といった感じです。 値は変数にはいってます。
+
>>273 何文字か指定するにはどうしたらいいですか?
>>274 一昨日Java始めたばかりのオレが答えてみよう。
public static void main(String[] args) {
String hoge = "java";
String fuga = "*";
int piyo = 3;
for(int i = 1; i <= piyo; i++){
hoge += fuga;
}
System.out.println(hoge);
}
サンクス! やっぱ繰り返すしかないのかな・・・
>>276 >指定した数だけ"*"を追加
って時点で繰り返しは必須だと思うんだけど。
繰り返しで何か都合悪いことでもあるのか?
>>266 数学の話だが中学校のころ数学教師が教えてくれた。
人間てのは非数を見つけてしまったから数字の0は無を表す
数字ではなく、負数を除いて起点となる数字らしい。
何もないわけではなく「0」という数字が存在している。
だから数学的に数字は0から始まる0起算らしい。
279 :
278 :2007/05/08(火) 15:06:44
そういえば、数字ってのは+か-方向に無限に伸びていくけど0はそのどちらでもない±0という状態で・・・と続き 最終的にメタ数学の話になったから気にしない方が良いよ。 特に0と配列と演算記号の関係なんて。
>>266 >>269 Javaに限ったことではありませんってFORTRANプログラマの観点の立場は…
>>276 どうしてもというのなら繰り返し追加するものが文字列でなく文字限定だが、
public static void main(String[] args) {
String s = "java";
char c = '*';
int n = 300;
char[] cs = new char[n];
java.util.Arrays.fill(cs, c);
System.out.println(s + String.valueOf(cs));
}
みたいに繰り返し文を自分では書かない方法があることにはある。
あと、繰り返しでStringに追加する場合は、
StringBufferかStringBuilderを明示的に使った方がいいかもしれない。
追加するものが3個程度なら大して違いはないと思うけど、大量に追加するなら。
>>280 FORTRAN はウンコだから。
まあ、0 オリジンにしようと思えばできるけど。
>>266 配列を配列の配列のように扱いたい場合、
0 から始まった方が便利。
インデックス i, j が与えられた場合、
0 から始まる場合は i * SIZE + j だけでいいけど、
1 から始まる場合は (i - 1) * SIZE + j と、-1 が必要になる。
とか何とか、色々と 0 から始まった方が計算量が少ない事が多い。
一部逆もあるんだけどね。
0 から始まるというイメージは、C をやった方が分かりやすいと思う。
C だと「始点 + インデックス」の位置にある値を参照するという処理になってるから、
1 から始まると始点がムダになる。
始点をズラすと、始点の値を使いたい時にまたズラさないといけない。
他の言語も、このあたりのイメージを受け継いでるんじゃないかな。
>>269 1番目から始まる自然な序数を選択するよりも、
計算量の減少等の効率を重視して選択した結果なんで、
そういうものだと思って慣れるしかない。
0から始まる場合のインデックスは序数と考えずに、
>>283 が言うように始点からのオフセットと考えればいい。
リスナーって1つのクラスに1つまで??
でへ^−^ どんな風にかけばよろしいのかと
>>285 質問がインスタンスにリスナーをadd〜Listenerで登録するって意味ならたいてい複数のリスナーを追加できる。
もしset〜Listenerとかのメソッドなら一つしか設定できないかもしれない。
そのクラスのドキュメントを見れ。
289 :
287 :2007/05/08(火) 17:13:24
わかりました!! で、itemlistenerってクリックされたときのみですか、、、? selectでindex指定しても動いてくれないんですが、、、
>>289 だからドキュメントを見ろと言ってるだろ。
java.awt.ListとかChoiceの話か?
ちゃんとselectのところを読め。
> ItemEvent をトリガする唯一の方法はユーザの操作です。
addItemListenerの説明にも書いてるね
292 :
デフォルトの名無しさん :2007/05/08(火) 18:57:16
スレッドに関してですが、テスト環境がないので質問させてください。 スレッドプールというものは実行のたびに空いてるCPUコアを探してくれたりするんでしょうか? それともスレッドが生成された時点でどのコアに所属するか決定してしまうのでしょうか?
最近javaを勉強し始めました。 www.stackasterisk.jp/tech/java/javaPractice06_06.jsp#2_4 上記のサイトの通りにjspでカレンダーを作成する、というプログラムを書いていたのですが、 このサイトにあるDayTypeConstクラスの意味がよくわかりません。 この定数を変えると土曜日曜の色が変になってしまうのですが、どうしてそうなるのかがよくわかりません。 ご教授お願いします。
294 :
デフォルトの名無しさん :2007/05/08(火) 21:19:16
pattern = Pattern.compile("ほげほげ"); 文字列が入ったString変数をmatcher.matches()で判定したいのです。 そこで数値(1〜9)以外の文字が入っていた場合trueとなるようにするには("ほげほげ")の部分に何と入れればいいでしょう? ためしに String str = "あ457" を pattern = Pattern.compile("[^0-9]"); でやったらfalseでした。 しかしString str = "あ" を pattern = Pattern.compile("[^0-9]"); でやったらtrueでした。
295 :
デフォルトの名無しさん :2007/05/08(火) 21:26:02
↑事故解決しました。
296 :
デフォルトの名無しさん :2007/05/08(火) 21:45:18
FOX★公認!!!
俺たちのクリックで日本を一位にしようぜ!!
“30年は日本に手は出せないな”という勝ち方をしたい
http://wwwww.2ch.net/test/read.cgi/news4vip/1178602852/ 1. ポーランド 139,797,680
2. チリ 137,040,439
3. ★日本 86,475,213★
4. イスラエル 80,930,530
5. スロベニア 57,137,042
6. フィンランド 40,857,499
石を投げる戦争から人は進化・進歩を遂げ、剣や槍などの武器をもって戦うようになった
人間はさらに発展し兵器を使う戦争を始めた
そして今、指先一つを武器とした電脳戦争が勃発したのであった・・・
皇国を勝利へと導くには貴様らの参戦が不可欠である
・戦場
http://www.clickclickclick.com/default.asp ・まとめサイト
http://www33.atwiki.jp/clickvip/
コピペ君って馬鹿だな、まで読んだ。
これからJavaを学ぶ人にアプレットを勧めるのは無駄? Javaで動くのがやりたいそうなんだけど・・・
>>298 俺はやったが無駄ではなかった。
つっても本のサンプル見る程度じゃ無駄だと思うがな。
言語に限らず、自分で色々やりたいことやっていじりまくらないと身につかんと思うよ。
C言語のWIN32APIも少しやってるけどドット・座標の考え方とか関数とか似てるから
何も知らずにC言語始めるよりは確実に楽に覚えられてる。
>>272 亀レス ↓のような方法もあるよ。
String[] tbl = {"*******","******","*****","****","***","**","*",""};
String word = "java";
System.out.println(word + tbl[word.length()]);
.xlsって段階で見る気がしない
あれ?2回も。。すんません。。
いい忘れましたが問題は英語で書いてあります。。
うっさいだまれ
先週って連休じゃん
>>307 いえ、海外にいるんで連休ではなかったです。
お二方、コメントいただいてありがとうございました。 >247 なるほど・・・ FreeBSDを使っています。 そこで「文系のためのjava入門」というwin向けに書かれた コードを実行しようとしています。 helloって書かれたウィンドウを出して終わるプログラムです。 今日、本屋に行ってみたのですが、 X11環境かつjava入門みたいな本が無かったので 前向きにX11でも動くようにいろいろ調べてみようと思います。 >248 FreeBSDでJDKやX11環境は整っていますので、 たぶん、win用のコードをX11でも動かせるように変更しなきゃいけない と思っています。 いろいろ調べつつやっていこうと思います。
質問です。 class A{ int x; } で A a = new A(); A b = new A(); とせずに、a,bを配列とかでまとめられないでしょうか。
A[] a = new A[2]; a[0] = new
>>298 日本に限って言えば無駄ではないと思う。
けど、今時アプレットなんて国内でもエロブラウザゲーしか見ない。
入門本はコマンドラインすら使えない人を考慮してる。
JWSおすすめ。
>>303 せめてテキストエディタで見れるようにしてから宿題スレ行こうね。
>>311 ありがとうございました。
2行目が思いつきませんでした。
ボタンの配置にご助言お願い出来ますか?
http://up.spawn.jp/file/up19856.txt ※EUC-JPで保存されてます
下の方を左右分割してパネルでボタンを配置しようかなと思ってます。
しかしながらGridLayoutとかだとパネル全体をボタンが埋め尽くしてしまいます。
で、それはやめといてsetBoundsで座標指定しようかなと思うのですが上手くいきませぬ。
パネルとレイアウトをコメント化して
upBtn.setBounds(10,10,100,50);
downBtn.setBounds(20,20,100,50);
・・・
だけでコンパイルしたのですがボタンが表示されませんでした。
JSplitPaneは消すしか無いのでしょうか?
>>299 312
なるほどなー。
JWSも考えたんだけど、選択肢としてもう1度検討してみるわ、thx
>>314 中身を検討せずにぱっと見ただけなので見当外れかもしれんが、
setBoundsで直接指定したいのならFlowLayoutなんて使っちゃダメじゃないか?
setLayout(null)しないと。
317 :
314 :2007/05/09(水) 00:28:02
なんと!レイアウトにnullが設定出来るとは思っても見ませんでした。 レイアウトをコメント化しても上手く行かなかったのですが、こういうことだったのですね。 大変役に立ちました。ありがとうございました!
>>315 JWSってJavaWebStartか?
ならAWT/Swingなんだからアプレットと部品一緒。
どっちか覚えたらどっちもできるよ。
検索してもよくわからなかったのでここで聞いてみます 関数をつくるときにPascalで云う参照渡しCで云うポインタってどうするのでしょう? Cでは int hoge(int *a, int *b){ *a = 123; *b = 456; return 789; } int x, y; int result = hoge(&x, &y); みたいなことを Javaでは int hoge(int[] a, int[] b){ a[0] = 123; b[0] = 456; return 789; } int x[1],y[1]; int result = hoge(x, y); みたいに書くしかないのでしょうか?
>>319 基本形=値渡し
参照型=参照渡し
基本形をラップするクラスが用意されてる(Integerなど)
しかしそんな意味不明な関数やめなさい。
その程度だったら参照渡しよりも戻り値のほうが可読性高い。
Cじゃないから int x[1],y[1]; はコンパイルを通らない。 int[] x = new int[1], y = new int[1];
値を2つ返すから戻り値じゃ・・・ってことじゃないのか?
class result{ int a,b; } int hoge(result r){ r.a = 123; r.b = 456; return 789; } result r; int result = hoge(r); かなぁ
>>323 はいはい ぬるぽぬるぽ
フィールドpublicにするな
それ呼び出し側で r.a r.b 書き換わるの?
Integerはimmutableだからこの場合役に立たない
Integerかintをラップするmutableなクラスを作ってその参照を渡さないと
>>319 が具体例なのかどうか分からないので何ともいえないけど
それならint[] hoge() {return new int[]{789, 123, 456};}とかの方が(どっちもどっち)
呼び出し側で書き換えてもらうって考えはオブジェクト指向的じゃない。 自分(インスタンス)の値は自分(インスタンス)が管理する。 外部に公開するのはメソッド。
class Result { final int a; final int b; final int result; Result(int a, int b, int result) { (略) } } Result hoge() { return new Result(123, 456, 789) }
>>320 回答ありがとうございます
すみません最初の例が良くなかったかもしれません
オブジェクトを複数作ってもらう関数で作業結果をintで返すみたいな仕様です
class A{
}
class B{
}
int hoge(A a, B b){
a = new A();
b = new B();
return 0;
}
呼び出し側
A a;
B b;
int result = hoge(&a, &b);
みたいなことがしたいのです
別にjavaでプログラミング=オブジェクト指向的プログラミングじゃないし敢えて茨の道を そして死亡
A a = new A(); B b = new B(); じゃ、いけないのか? 失敗したら例外出すか、結果を知らせるメソッド持たせば。
インスタンスを作るメソッドなら作られたインスタンスこそ返すべきもののような気がする。 作業結果は返されたインスタンス自身が知っているだろうし、 結果によってはnullを返されたり例外を投げられたりしてもいいかもしれない。 そして関連性の無い二つのインスタンスを同時に返したりするのは設計そのものの再検討の余地あり。
>>331 ご指摘ありがとうございます
確かにそのおかしさを感じてたんです
むしろJava(というかオブジェクト指向)的に
望ましい書き方とかあるならそれでも結構です
やっぱり
class Wrapper{
A a;
B b;
}
Wrapper hoge(){
Wrapper r = new Wrapper();
r.a = new A();
r.b = new B();
return r;
}
(失敗は例外)
みたいにしたほうが良いのでしょうか?
他にも回答くださったかたありがとうございます
もう少し考えて見ます
Wrapper hoge()はWrapperのコンストラクタじゃいかんの?
オブジェクト指向は処理中心に考えるものじゃないから 目的がわからなければアドバイスしようがない
class Hoge { final A a; final B b; Hoge() throws CannotCreateException { a = new A(); b = new B(); }
>>320 > 参照型=参照渡し
ウソを書くな、ウソを。
>>336 おかげさまで自分が間違った方向に行こうとしてたのを食い止めることは出来たみたいです
目的はあるのですがこのまま鸚鵡返しで質問繰り返すのもどうかと思いますので
まず設計を見直してもう少し煮詰まってまた分からなくなったら聞きに来たいと思います
色々ありがとうございました
>>318 APIレベルの話をしているわけではなくてだな・・・
class Hoge { final A a; final B b; Hoge() { a = new A(); b = new B(); } } AとBに関連性がなかったら相当気持ち悪いクラスだが。
このコードを実行すると下のように計算にずれが出てくるんですがどうしてですか。 解決法を教えてください。 class DoubleTest { public static void main(String[] args) { double hoge; for(hoge = 0; hoge < 1; hoge += 0.1) { System.out.println(String.valueOf(hoge)); } } } 0.0 0.1 0.2 0.30000000000000004 0.4 0.5 0.6 0.7 0.7999999999999999 0.8999999999999999 0.9999999999999999
343 :
342 :2007/05/09(水) 04:03:40
環境を載せ忘れました。 java version "1.6.0_01" Java(TM) SE Runtime Environment (build 1.6.0_01-b06) Java HotSpot(TM) Client VM (build 1.6.0_01-b06, mixed mode, sharing)
>>342-343 _,,,,._ 、-r
,.','" ̄`,ゝ _,,,_ _,,,_ _,,,,__,. | | _,,,,,_
{ { ,___ ,'r⌒!゙! ,'r⌒!゙! ,.'r⌒!.!"| l ,.'r_,,.>〉
ゝヽ、 ~]| ゞ_,.'ノ ゞ_,.'ノ ゞ__,.'ノ | l {,ヽ、__,.
`ー-‐'" ~ ~ 〃 `゙,ヽ ̄` `゙'''"
゙=、_,.〃
_____________
|2進数 小数 丸め誤差 |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
[Google検索] [I'm Feeling Lucky!]
http://javafaq.jp/S029.html
なんというやさしさ
346 :
342 :2007/05/09(水) 04:34:21
アクションイベントによってパネルの色を変えたいんだけどどうしたらいい?? フレームの色は変えられるけどパネルができましぇん
348 :
デフォルトの名無しさん :2007/05/09(水) 12:48:40
public void setForeground(Color c)
Frameを継承したクラスで、ウインドウアプリケーションを作っています。 コマンドプロンプトから、hogehoge.javaをjavacコマンドでコンパイル → javaコマンドで実行する際、 適用されるランタイムのバージョンはどこで設定されているのでしょうか? よろしくお願いいたします。
>>349 プロンプトで
java -version
351 :
349 :2007/05/09(水) 17:02:05
こんにちは。 北朝鮮から出稼ぎに来ている28歳の無職です。 先日、梅田のハロワのトイレに入って ウンコをした際、 「トイレットペーパー以外の物は流さないで下さい」 と壁に張り紙がしてありました。 仕方がないので、ウンコを新聞紙に入れて持って来ましたが 非常に不便さを感じました。 皆さんはどのようにしているのでしょうか 参考までに聞かせていただけませんか?
353 :
349 :2007/05/09(水) 18:20:15
>>350 ご回答ありがとうございます。
JAVA_HOMEはC:\Program Files\Java\jdk1.6.0_01 とし、
Pathは%JAVA_HOME%\bin としています。
コマンドプロンプトのカレントディレクトリにclassファイルを常に置いているので、クラスパスは設定していません。
レジストリエディタでレジストリの値を見たところ、Java Runtime Environment\CurrentVersionは1.6となっています。
JDKのバージョン=ランタイムのバージョンという認識でよいのでしょうか?
>>353 > JDKのバージョン=ランタイムのバージョンという認識
違う。
JDKのインストーラのデフォルトの設定(全部OKした場合)では、JDKとは別に、JREが入る。
JAVA_HOMEが指してるのは、普通は JDK内のランタイム。
で、JREにはjavacはないけど、C:\Windows\SYSTEM32 とかに java.exe を突っ込むから、
どっちを使うかは、環境変数 PATH の設定による。
レジストリの値は関係ない。
Microsoft VMを使ったhttp上のシステムにログインする際に、 IEアンダーバーに「アプレット ClientManager notinited」の表示が出て停止してしまいます。 システムは他PCからだと正常に運用されているようです。 JAVAコンソールを見ると、以下の内容のエラーが出ています。 F&Qなどで該当例を探したのですが見つからず、助言いただければ幸いです。 ============================================================ load: クラス MGBC940_01BJ.ClientManager.class が見つかりません。 java.lang.ClassNotFoundException: MGBC940_01BJ.ClientManager.class (中略) Caused by: java.io.IOException: open HTTP connection failed. (中略) load: クラス browserClient.MsgText.class が見つかりません。 java.lang.ClassNotFoundException: browserClient.MsgText.class (中略) Caused by: java.io.IOException: open HTTP connection failed. (後略)
356 :
349 :2007/05/09(水) 19:36:21
>>354 なるほど。最初から入っているのとは別にもう一つランタイムが入るわけですね。
>C:\Windows\SYSTEM32 とかに java.exe を突っ込むから、
↑すいません。ここの表現がよくわかりません。
コマンドプロンプトからjavaコマンドを実行したときには、SYSTEM32内のjava.exeを探しにいくということでしょうか?
ちなみにPATHは以下のとおりです。
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QuickTime\QTSystem\;%JAVA_HOME%\bin;C:\Program Files\Common Files\GTK\2.0\bin
>>356 PATH に書かれたディレクトリを順番に検索するから、PATHの設定が
> %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\QuickTime\QTSystem\;%JAVA_HOME%\bin;C:\Program Files\Common Files\GTK\2.0\bin
ならば、最初に書かれた %SystemRoot%\system32 は %JAVA_HOME%\bin より優先順位が高い。
358 :
349 :2007/05/09(水) 20:13:53
>>357 わかりました。そういう意味があったんですね。ありがとうございます。
アプリケーションをjarファイルにして他PCでも動かしたいのですが、
適応するランタイムのバージョンというのは、どうやって見極めればいいのでしょうか?
>>358 新たに追加されたクラス、メソッドは API仕様見れば since タグふってあるから、
それを調べれば、どのAPIがどのバージョンで動くかは大体分かる。
あとは javac -target とかで、出力したクラスファイルの互換性を気をつける事とか。
360 :
349 :2007/05/09(水) 22:03:25
ありがとうございました。API仕様を確認してみます。 またここで質問させてもらうことがあるかと思いますが、よろしくお願いします。
プログラム中で、trueのラジオボタンを setSelected(false); でfalseにしたはずなのに、isSelected()で調べてみたらtrueでfalseになっていません。 どうしたらいいでしょうか?
>>361 setSelected(false) しても、実際に反映されるのは
次にイベントディスパッチスレッドに処理が移った時なのよ。
>>143 のリンク先とか見てくれ。
>>362 早速ありがとうございます。
見てみることにします。
配列に要素を挿入するコードを書いてみましたが、 もっとスマートにかけませか? String[] str = {"hoge", "huga", "foo", "bar"}; String sonyu = "挿入"; String[] buff = new String[5]; // 三つ目に挿入 int j = 0; for (int i = 0; i < str.length; i++) { if (j == 2) { buff[j] = sonyu; j++; } buff[j] = str[i]; j++; }
Listでも使えば?
>>364 String[] buff = (String[])str.clone();
buff[2] = sonyu;
遅レスだけど、
>>309 win用のコードをX11でも動かせるように変更する必要は”ない”。
物理フォントを指定してたら依存する可能性があるが、そういうのはとりあえずコメントアウトしてよし。
問題は単なる環境設定。JDKやX11環境が整っているという認識が間違っている。
とりあえずFreeBSDのスレでも行って聞いてみたら?
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/org/w3c/dom/Text.html このクラスで改行文字を表すにはどうすればいいでしょうか。
もしそれよりも一般的な方法があれば教えてください。
Element date = document.createElement("date");
document.appendChild(date);
Text lf = document.createTextNode("改行文字");
date.appendChild(lf);
Element name = document.createElement("name");
date.appendChild(name);
Text textnode= document.createTextNode("ひろゆき");
name.appendChild(textnode);
<date> ここで改行したい
<name>ひろゆき</name>
</date>
数値a,bを読み込み格納している数値を交換する方法で分らない部分があります。 変数は a,b,w でa,bは読み込んだ所まで大丈夫です。 a = w; b = a; w = b; 上記の式だとa=wは初期化されてないとエラーがでます。 たぶんwに何も数値がないからでしょうか? フロートチャートだと上のような順番なんですけど
>>369 "\n" でいいかと。
XMLならそもそも改行しなくていいじゃんとは思うが。
>>370 > たぶんwに何も数値がないからでしょうか?
そのとおり。
> フロートチャートだと上のような順番なんですけど
フローチャートが間違っている。自分の頭で考えれば、間違っているこ
とは明白でしょでしょ?
>>372 やっぱりそうですか、wに何かしろの数字をいれないと駄目なんですね。
退避用の変数を設ける以外何の説明も無かったけど助かりました。
先ず、2つのコップを用意しよう。 それを机に置いてみよう。 そして、その2つのコップの位置を、 コップを1つずつ動かして、交換してみよう。 さて、どういう風に動かしたかな?
初心者に例出して理解させようとするのはいいが、最後までやれよ? いつも中途半端に終わってるぞ。
a と b を交換したいんだろ? a = w; b = a; w = b; 訳分からんよw a => w; b => a; w => b; っていう意味じゃないのか? w = a; a = b; b = w; おもいっきり釣られてみるテスト
377 :
370 :2007/05/10(木) 10:15:23
>>376 ほんっとご親切にありがとうございます。
逆さになってましたね(汗)それと出力の部分も逆になってたようで成功してたのに変わってないようなってました。
アルゴリズムの観点で考える力が未熟ですよね、もっと勉強します
Cしか知らない初心者です。 Javaで継承されたメソッドのバイトコードはコンパイル時、 親classファイルに吐き出されるのでしょうか? 子classの継承したメソッドは親クラスのメソッドへのリンクになるんでしょうか?
379 :
378 :2007/05/10(木) 14:35:03
すみませんわけ分からん質問をしてしまいました。 流してください。
380 :
378 :2007/05/10(木) 14:53:01
JVMドキュメントなんかを軽くでも読んでから出直します;;
JVMドキュメント? VM仕様? API仕様?
ソースコードからクラスのインスタンスのサイズを知ることは可能でしょうか?
Char ってどう読むのが一般的なんでしょうか? 人前で発声しなくても自分の心の中だけでの読み方でも良いので教えて下さい。
>>382 > クラスのインスタンスのサイズ
なにそれ。
練習用のプログラムを書いて保存しようとすると、 メモリが足りないとかでるんですけど、 これはどうすれば解消できますか? 今までコンパイルされたものをリセットとかできますか?
>>384 キャラ もしくは チャー と呼んでいる人が多い
>>386 > これはどうすれば解消できますか?
条件が抽象的すぎて答えられまセン
> 今までコンパイルされたものをリセットとかできますか?
質問の意図が不明デス
390 :
384 :2007/05/10(木) 18:21:48
>>387 チャー と読む人もそこそこ居るんですね。
実は自分も チャー 派なんですが、人前で読む場合は
何となく負けた感じがするので キャラ にしています。
>>389 アルテイシア乙
391 :
デフォルトの名無しさん :2007/05/10(木) 18:29:14
>>388 本に載ってるサンプルのコードをメモ帳に入力して、
保存しようとするときにメモリに関する警告が出るときがあります。
なのでマイドキュメントに溜まった、
メモ帳に書いたサンプルのコードをかなり消したんですが、
未だに新しいコードを保存しようとすると同じ警告が出るときがあります。
(出ないときもあります。)
なので他の原因を考えたんですが、
今までコンパイルしたものは、
改めてコンパイル(javac)しなくてもjava 〜.javaだけで実行できますよね。
なので今までパソコンに記憶されたコードを消せば警告もでなくなるかなと思いました。
なのでどうやってそれを消せばいいかなと思いました。
>>391 java 〜.java×
java 〜○
.classのことを言ってるのか てかPCのスペックは?
XP Home Edition intel(R) Celeron(R)M processor 1500MHz 1.50Ghz, 248MB RAM と書いてます。
>>393 そうです。.classやソースコードです。
396 :
デフォルトの名無しさん :2007/05/10(木) 18:44:29
かなりの初心者です。 円の内側に色を塗りつぶしたいのですがどのような方法が一番手軽ですか? あとJava Runtime Environmentはどうやって起動するのですか?
397 :
391 :2007/05/10(木) 18:56:06
パソコンのメモリは電源を消せばリセットされるんですよね。 つまりクラスファイルが消去しなくても電源を消せばいい。 でも電源を消しても警告がでたのでクラスファイルを消しました。 まあ一応まだソースコードは保存できるので様子を見てみます。 ありがとう御座いました。m(_ _)m
>>397 ちょwイミフwwwて言われたいのか?
自作板の人間としてはそんなイミフなサポ来たら
間違いなく死ねるからその前に答えておくと
メモリ増設するかPC買い替えろ。
俺も
>>397 と同じスペックでEclipse+EclipseME+VE動かしてた時期があるがOSの使用メモリを73Mまで削って物理256-32M+スワップ384Mで運用してたが動くだけだったぞ。
>>399 ソースコードのを中のintとかdoubleをコンパイルする度に
メモリがどんどん消費されていくのかなと思ったり・・。
まあ今のところは作業が継続可能なので、
作業が継続出来なくなるようなら買い換えます。
レス有難う御座いますm(_ _)m
何度読んでも397の意味がわからん
リスナについての質問です。 Swingでアプリを作っているのですが、 JFrameの上に配置したSwingコンポーネント上でも、 JFrameに登録したリスナのイベントを拾うことは可能ですか? 具体的にはJFrameにMouseMotionListenerをaddしてMouseMoved処理を書いているのですが、 JFrame上に配置しているJTabbedPane等を透過できず、イベントが拾えません。 もちろんJTabbedPaneにMouseMotionListenerを登録することもできますが、 結局その上に配置したボタンやらテーブルに邪魔されて同様の問題が発生します。 力技で全てのコンポーネントにリスナを登録するのは、 コンポーネント数が多すぎて現実的ではないと思います。 要は下部のコンポーネントに登録したリスナのイベントを、 上部のコンポーネントに関係なく拾いたいということなのですが、 このようなことは可能でしょうか? もし可能であれば、ヒントを頂けるとありがたいです。 長文で申し訳ありませんが、よろしくお願いします。
早速のアドバイスありがとうございました。 Swing用のスレがあったんですね。。 スレ違いになってしまいますが、話の続きなのでここで書かせていただきます。 以下のようにリスナのadd先をGlassPaneにして、setVisible(true)を追記しました。 getGlassPane().addMouseMotionListener(new MyMouseMotionListener()); getGlassPane().setVisible(true); ....... //内部クラス class MyMouseMotionListener implements MouseMotionListener{ public void mouseMoved(MouseEvent e){ System.out.println(e.getX() + "," + e.getY()); } ..... } 結果、マウス移動のイベントを拾ってはくれるのですが、 配置したコンポーネント(ボタン等)を全く押せなくなりました。 まさにアプリの上にガラスを被せたような状態ですw マウス移動のイベントだけガラスに拾ってもらいつつ、 マウス押下のイベントはガラスを突き抜けて、下のコンポーネントに到達させる様な挙動はさすがに無理なのでしょうか。 ちょっと都合が良すぎる考えのような気がしてきました。。
>>397 電源を消すとクラスファイル等いろいろ消えるパソコンに買い替えなさい
おそろしいパソコンだw
410 :
デフォルトの名無しさん :2007/05/11(金) 11:37:27
Javaとは関係ないんですが、JavaVMのアプレットが起動したとき Window下部に 警告 アプレット ウインドウ と表示されますが この表示バーを消すことはできませんか?
>>371 レスありがとうございます。
うまくいきましたが、一つ疑問が起きました。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
の直後で改行しようとした所HIERARCHY_REQUEST_ERRが出ました。
調べた所このノードは子ノードにテキストノードを持てないということがわかりました。
ということはつまり、XMLでは一般的に改行しないんでしょうか?
テキストエディタで一見したときにわかりやすいと思のですが。
414 :
デフォルトの名無しさん :2007/05/11(金) 21:51:41
すいません!java初心者です!テキスト見てもどう手をつけていいか わかりません。どなたか詳しい方ご教授願います。 とりあえず、2,10,16進数だけ勉強しました^^;) 本日から入社しましたのですが、なかなか教えてもらう機会がなかった ので・・。やはり皆さんは23時帰りですか? 素人で申し訳ないです。
何か作ってみれば、何が必要なのかが分かってくるはず。
416 :
デフォルトの名無しさん :2007/05/11(金) 22:00:57
>>415 何を作るんですか??
それがプログラムが作れない未経験の状態なんで、基本的なことが
わからないんですよ。お奨めのサイトや本てありますか?
図々しくてごめんなさい。
418 :
デフォルトの名無しさん :2007/05/11(金) 22:04:33
cygwinで実行して出た結果をコピペしたいのですが、 どうすればいいでしょうか?
javaで書いたプログラムということでだめですか
自己解決しましたスマソ
これが噂のDQNか…
423 :
デフォルトの名無しさん :2007/05/11(金) 22:27:01
進数はJavaに限った事じゃないから。 まだココで聞くには早いと思うぞ
>>416 何でもいいじゃん。
簡単なゲームでもいいし、何か計算させてもいいし。
>>418 stdout(場合によってはstderrも)をファイルに送ればいいだけじゃないの?
scriptコマンドとか cygwinにあったっけ
>>412 > テキストエディタで一見したときにわかりやすいと思のですが。
XMLはプログラムで扱いやすいようにしたもので、
人間が直接見たり編集したりするためのものじゃない。
人間が扱うならテキストエディタでなくXMLエディタなんかを使った方がいい。
というか根本的にDOMは総称符号化における
文書インスタンスを動的に変更するものであって
テキストデータをフォーマットするものではない。
まあ、元々はNetscapeのdynamic web architectureであるLiveDocumentの後継技術だからHTML用だが。
>>429 の言う通り
意味が分からんなら諦めろ。
ミスった。
>>429 の言う通り総称符号化とはコンピュータ内での文章を保守・管理・閲覧を容易にするための研究分野だ。
人間が見づらいなんて論外、端から眼中にない。お門違い。
フューマンライクにフォーマットしたいならそういう
フォーマッタライブラリがあるからそれ使え。それか自分で書け。
432 :
412 :2007/05/12(土) 16:35:13
直接いじらないので改行しないんですか。 それならバイナリデータの方が良いと思いますが、 これは以前のなごりなんですかね。 皆さんレスありがとうございました。
普通に出来ることがなんでこうなるのかわからんなw
バイナリデータというのが人間が簡単に読めないデータという意味だとすれば なぜそっちの方がいいと思ったん?
435 :
412 :2007/05/12(土) 16:51:20
スレ違いなので、XMLの特徴、長所と短所を理解してから出なおしてください
437 :
412 :2007/05/12(土) 17:54:57
わかりました スレ汚しスマソ
BigDecimalでの加減算の方法を教えてください。 なんで普通に足せないの??
BigDecimal a = new BigDecimal("10000000000000000"); BigDecimal b = new BigDecimal("10000000000000000"); BigDecimal c = a+b; こうやろうとしてエラーになっている。 演算子オーバロードができたらねぇ。
BigDecimal c = a.add(b);
演算子なんて只の飾りですよ エロいひとにはそれが分からんのですよ
IterableのGenerics型とIteratorのGenerics型が一致しないのはどう解決しますか? ぜんぶ<T>で呼び出してるから一致しないわけないと思うんだけど、コンパイルが出来ません。
> IterableのGenerics型とIteratorのGenerics型が一致しないのはどう解決しますか? どゆ事?
TとTが一致しませんといってエラーが出てるのです。
JSliderはスライダ部分をクリックしただけだとイベントを発生しないけど、発生するようには出来ないでしょうか? ChangeEventでスライダを動かした時だけしか、イベントを発生できないようです。 スライダをクリックして 「握った」状態を感知したいのですが・・・ もしくは、そうできるようなものはないでしょうか? swingでの使用を考えています。
447 :
443 :2007/05/12(土) 21:25:35
IterableのT型変数をIteratorのnextで戻していたのが原因でした。 型推論できそうな気もするけど、Iterator内に移したらコンパイルが通りました。
JAVAってインラインアセンブラできないの?
そんなんでRun Anywhereできると思ってんのかコラァ!
JVM 用アセンブラを書くライブラリはあるだろ。 BCEL とか使えばいい。
451 :
443 :2007/05/12(土) 22:38:09
自己解決の方法が間違ってたので、フィードバック。 Iterableの型をIteratorに引き継ぐ場合は private class MyIterator implements Iterator<T>とするだけ。 MyIterator<T>としてしまうと型を上書きするみたい。 こんな間違い私だけかも知れないけど。
> private class MyIterator implements Iterator<T>とするだけ。 これ、外側に MyIterable<T> の宣言とかが無いと、 何を書いてるか分からんぞ。
インラインアセンブラも、ヴァーチョウマスゥィーンヌのほうで吸収して呉れりゃいいのに。
javaの考える力を身につけるにはどう学習すればいいですか? 何かお勧めのテキスト教えてください、情報技術者試験対策の勉強だと知らないようなことを 考えさせられて自分の力の無さを感じてしまうお
>>455 おK、これで考える力をつけようと思います。
しかし値段すごいですね(((( ;゚Д゚))) とりあえず大きな本屋に行って立ち読みしますわ
高いか??? 普段、赤本とか物理学などの本買ってると2万3万当たり前なので安く感じる。 最も高かったのが、医学の術式を記した本で5万。
高いよ
本に2000円以上出すのは抵抗あるお 資格取得の参考本以外は手をつけた覚えないな
同じ場所に end の解説があってワロス
>単文・複文問題の回避 { } 強制の Perl では問題が生じない。 >ぶらさがりelse問題の回避 { } 強制と elsif の導入で解決する問題。 >可読性の向上 趣味の問題なので何ともいえない。 >begin, caseの構文上の問題 これはある程度納得できる。
開始時刻の(時h1、分m1)と終了時刻(時h2,分m2)を読み込み開始から終了までの時間(時h,分m)を求める式が考えつきません。 hd = h2 - h1; md = m2 - m1; 単純に時分をそのまま足す引くしか考えが浮かばないんですが終了時刻の方が小さいとマイナスと出ます。 逆にしても同じで開始終了どちらの大小関係なくマイナスにならないようにするヒントを教えていただけませんか?
Calendarつかえばいんでね
もし開始時刻より終了時刻のほうが早ければ開始-終了、それ以外なら終了-開始
467 :
デフォルトの名無しさん :2007/05/13(日) 10:51:09
>464 Date start = new Date(); Date end = new Date(); long diff = start.getTime() - end.getTime(); int diffMinitue = diff / (1000 * 60); int diffHour = diff / (1000 * 60 * 60);
>467 絶対値使うなwww たぶん、12時25分(開始) 13時10分(終了)のような状況と思われ。
h=h2-h1; m=m2-m1; if(m<0) { h=h-1; m=m+60; } 引き算のときに下の桁で足りなかったら上の桁から借りてくるって算数で習っただろ?
>>470 それでやると日付またいだりしたときに面倒くさそうだね。
もともと問題がhとmしかないからね。 日付をまたいだり月をまたいだり年をまたいだりするなら、 さらに上の桁から借りればいい。 月が変わる時の処理がちょっと面倒だけど。 まあ、そこまでの問題なら日時関連の標準APIを使うのが楽だろうが。
DateとCalendarを使えって話題じゃないのかね? どういうながれで問題が出されたのか解らんけど。
超初心者です。 今アプリゲットの開発講座を見ながらJ2MEのtoolkitでイメージの描写を やってるのですが、解説にのってあるpngではなく自分で用意したpngを 使用すると、パッケージのところで 「アプリケーション記述子のJARサイズが実際のJARファイルサイズと一致しません」 と出るんですが。どこをいぢればいいか教えてください。
黄色いアプリゲットだぜ!
javaのsliderで動画のシークに使える派生モノはないですか? JSliderだとスライダーを握っただけ だとイベントを発生しないので・・・ スライダーを動かして初めてイベントを発生する・・・
動画のシークに使うのならサムを握っただけでイベントを発生させる必要はないのでは? 値が変わった時にシークさせればいいと思うのだが。 MouseEventを捕まえればいちおうイベントは発生してくれる。 サムでない部分をクリックしてもMouseEventが発生するけど、 そのときはChangeEventも発生するはずなので区別を付けられないわけではない。 もしくは実装の詳細に入ってしまうのであまり良い方法ではないが、 MouseEventの発生位置がサムの領域かどうかで判断するか。
>>477 そのサムを握った時に動画やアニメーションを停止させたいので、イベントが発生してくれるとうれしいのです。
もう少し、調べてみます。
>>479 プロパティって言うのは、jadにjarファイルの容量を入れるってことですよね?
今はjavaファイルからclassファイルにコンパイルする段階でできないのですが。
携帯はスレ違い MIDPスレ行け
プログラミング経験もほぼ無いに等しいのですが お勧めの参考書でもあれば教えてください。
JRE6をインストールしたら今まで使っていたJRE5は削除してもいいんでしょうか?
487 :
デフォルトの名無しさん :2007/05/13(日) 21:45:27
JavaじゃないけどJavaで考える力はつくよ
いや、特につかないだろ Java問題集とかパズルとか読んだ方がずっといい
いや、考える力はつくだろ
492 :
デフォルトの名無しさん :2007/05/14(月) 01:23:17
ファイルがまだ残っているディレクトリツリーをまとめて削除したいのですが どうすればいいでしょうか?
残っているファイルを全部消してから親ディレクトリに移り子ディレクトリを消す という操作を再帰的に行う 下手すると全部消えるから再帰の止めどころを間違えないように
494 :
492 :2007/05/14(月) 01:30:17
>>493 その処理をしてくれるメソッドはないでしょうか?
標準のAPIにはたぶんない apache commonsのorg.apache.commons.io.FileUtilsには deleteDirectoryやcleanDirectoryがある
496 :
492 :2007/05/14(月) 01:45:04
質問質問! JavaのJFrameにFlashPlayerを乗せるにはどうすればいいですか! 教えてちょんまげ!! ちなみにFlash側はActionScriot3.0で書くつもりです
499 :
デフォルトの名無しさん :2007/05/14(月) 04:03:15
for(;;){} の初期化の部分で複数の型を初期化するにはどうすればいいですか? int と String の異なる型をfor内部で宣言させたいのですが… エラーになりますが、イメージとしてはこんな感じです。 for(int i=0, String s=""; i<foo.length; i++){}
できないのでforの前でやってください
502 :
デフォルトの名無しさん :2007/05/14(月) 09:12:10
質問させていただきます。 Excelファイルを参照して、指定したセルに書かれいている文字列を、 配列に格納するという方法はあるのでしょうか?
あります
504 :
デフォルトの名無しさん :2007/05/14(月) 09:24:40
>>503 調べてみてはいるのですが検討が付きません。
教えていただけませんか?
ありがとうございます。
JAVAを独学ではじめようと思っているのですが。 参考書籍、それとも初心者用の解説サイトで学ぶのがよいのでしょうか? またそれについてお勧めの書籍等ありましたら、教えていただけると有難いです。
否定するなら対案示すとかどこが悪いか示すとか、そういうのすべきじゃね?
房乙
512 :
デフォルトの名無しさん :2007/05/14(月) 23:16:26
ファイルをアップロードするサーブレットを作っています。 fileuploadライブラリを使用してアップロードは出来るように なりました。 しかし、フォームのデータが取得出来ません。 ファイルをアップロードするために、「enctype="multipart/form-data"」を 入れているのですが、これを入れるとHttpRequest#getParameter()で 取得できないことは分かりました。 では、どうすれば取得できるのでしょうか? FileItem#getFieldName()でフォームの名前(name)は取得できるように なりましたが、値(value)は取得することが出来ません。 どうすればよいのでしょうか?
てst
515 :
デフォルトの名無しさん :2007/05/15(火) 00:19:42
>>514 GWTというものが存在することは先ほど検索して分かりましたが、
それが今回のものとどういう関係があるのか全く分かりません。
もう少し詳しくお願いします。
>>512 最近使ってないので覚えてないが
ドキュメントに書いてなかったか?
サンプルにもあったような気がするが
517 :
512 :2007/05/15(火) 00:40:04
>>516 FileItemのリファレンスを見ても分からなかったのですが、
サンプルを見るとgetString()で簡単にいけそうです。
今は環境が無いので、明日試してみます。
// Process a regular form field
if (item.isFormField()) {
String name = item.getFieldName();
String value = item.getString();
...
}
とりあえず、ありがとうございます。
518 :
デフォルトの名無しさん :2007/05/15(火) 02:50:44
n以下の素数をはじきだすプログラミングをくんだのですが上手く動きません。 添削していただけないでしょうか? import java.io.*; import java.io.*; public class enshu34 { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("integer> "); int n = (new Integer(in.readLine())).intValue(); int i = 2; while(n % i != 0) { i = i + 1; } if(i == n) { System.out.println("This is a prime factor"); } else { System.out.println("This is not a prime factor"); } } }
>>518 キミが期待する具体的な動作(…を入力したら…が表示されて欲しい)と
そのプログラムがどう期待通りでないか、
を書きましょう。
ぬるぽ
521 :
デフォルトの名無しさん :2007/05/15(火) 04:10:44
ガッ… Java 始めたのですが質問です。 Java には標準で make 相当のコマンド/仕組みは無いですか? 皆IDE? ググったら Jakarta の Ant なるものが引っかかったんだけど、 使い慣れたmakeにしがみつくより覚えて損はなさそうですか? 意見plz
使い慣れたmakeを使い続けるもよし、antをかじってみるもよし。 他人とすり合わせる必要がないのなら自分の一番使いやすい方法をとればいい。 javaのプログラミングで使うのならantは覚えても損はないとは思う。
とりあえずmakeで済ませつつ、覚えても損はなさそうな代物ということで 折を見て少しかじってみることにします。 すこし Ant の使い方を眺めていたんだけど、 xml で記述っていうのが慣れていないせいか何となく('A`) ツールとかで機械的に吐くには便利そうだけど レスありがとうございました。
最近mavenが増えて困る
>>523 大量にビルドする時とか、JVM起動のフットプリントが結構響くので
makeだと2時間掛かるけどantに切り替えたら10分だった、という過去の経験がある。
最近のスペックのマシンとJVMだとそんなに気にならない可能性もあるけど
526 :
sage :2007/05/15(火) 15:06:31
Java Web Start のスプラッシュ画像を変更する正しい方法を教えてください。 単に画像を入れ替えるだけだと更新されないばかりか 何度起動しても新しいスプラッシュ画像を毎回ダウンロードしてしまいます。
slickeditを使っているが、コンパイルエラーが文字化けして使い物にならない。 そこでjavacの出力を英語かslickeditで日本語を表示できるようにするかのいずれかを 考えているのですが、どうすれば良いでしょうか? slickeditはver11、 javaは最新版です。
528 :
デフォルトの名無しさん :2007/05/15(火) 21:16:50
"1,2,3,4,5,6,"123,23,45",12,55" のようのCSVデータで"123,23,45"のような""でかこまれた 箇所だけを除いて、カンマ区切りでデータを抽出するにはどうすれば いいでしょうか。 StringTokenizerを使用しようとしてなかなかうまく行きません。 ご教授よろしくお願いいたします。
何が言いたいのかよくわからんがsplitでも使えばいいんじゃないか
いや、 1,2,3,4,5,6,"123,23,45",12,55 を 1 2 3 4 5 6 "123,23,45" 12 55 で分けたいのです。 "123,23,45"この部分をどうすればいいのかと・・・
>>530 引用符外れるけど。
List<String> list = new ArrayList<String>();
StringTokenizer st = new StringTokenizer(str, "\"", true);
boolean inQoute = false;
while(st.hasMoreTokens()){
String token = st.nextToken();
if(token.equals("\"")) inQuote = !inQuote;
else if(inQuote) list.add(token);
else list.addAll(Arrays.asList(token.split(",")));
}
532 :
530 :2007/05/15(火) 21:45:32
>>531 サンクス!!
できました。
ありがとうございます!!
>>531 123,23,45 の後に余分な空要素が入るような。
ま、
>>530 の用が足りてるならかまわんけど。
>>533 while(st.hasMoreTokens()){
String token = st.nextToken(inQuote ? "\"" : "\",");
if(token.equals("\"")) inQuote = !inQuote;
else if(!token.equals(",")) list.add(token);
}
プログラム未経験で入社して、研修を行っています。 変数とかif文までは理解できたのですが、for文がどうしても理解できず悩んでます。 特に二重ループ(?)になると混乱して・・・ なにかアドバイス貰えませんか?
違う参考書を読んでみる
>>535 その場で腕立て10回、腹筋10回を 10セットやってみよう。
それが二重ループだ。
> 536 やさしいJavaって本で勉強はしたんですけど、研修で出た課題を解こうとしてもサッパリでして。 書き方乗っているから真似して書いて、と言われてます。 どこをどう真似すればいいのか聞いても、for文はループとしか答えてくれないんです。
それ以上どういう説明すりゃいいんだよ
forの前にwhileを学べ。whileの基本系に特化したのがforと言っても過言ではない。
今からでも遅くなから転職を考えたらどうか それがダメなら その本でも違う本でも良いから何度も読んで例題をやってみるとか 誇張じゃなくて、本当に100回ぐらい繰り返して読むと突然理解できる時があるから
>>537 腕立て1回やったら腹筋10回を10セットじゃね?
for(int 腕立て回数=0;腕立て回数<10; 腕立て回数++){
腕立てやる();
for(int 腹筋回数=0;腹筋回数<10;腹筋回数++){
腹筋やる();
}
}
System.out.println("もう無理ぽ");
>>542 腕立て10回したら1分休憩を 10セットでも何でもいーけど。
いやビリーにGJ!っていってもらったほうがいいな。
ブートキャンプか
>>538 じゃあ、forをどう理解してるか教えて
>>542 それってさ、実行すると
腕立て→腹筋*10→腕立て→腹筋*10→・・・
ってことにならね?
はいはい、ワロス、ワロス
>> 546 理解しているというか教えられた内容はこんな感じです。 プログラムで繰返し処理を行う場合にfor文を使う for文ではカウンターと呼ばれる変数をまわして処理が繰り返される 書き方はfor(初期化の式; 繰り返す数の式; 変化の式)と書く。 10回表示するとかは書けるんですけど、素数を表示しろってのが解らなくて・・・
>>546 あと、変化の式とか初期化の式とかがよく解りません
やっぱり転職でしょうか
549を読んで535の会話能力に不安を覚えた。
552 :
デフォルトの名無しさん :2007/05/15(火) 22:58:11
まだ手に馴染んでないだけだろ。もう少し使って見てから質問したらどうだ。
553 :
デフォルトの名無しさん :2007/05/15(火) 22:59:53
どーまん せーまん どーまん せーまん
>>549 ,550
そこからかぁ
ここで一から懇切丁寧説明すると長くなるからとりあえずJavaの入門サイトをググって自分
なりにある程度理解した上で質問した方がいいかも。
教育担当にしつこく食い下がる、でもいいけど(論点まとめた上でやらないと嫌がられると思うが)
まぁ最初は誰でも初心者だし理解するのは大変だろうけどこういうのってある日突然視界が
拓けるように見えてくるものだから諦めずにがんがれ。
いるんだよ。こういうなんでも手取り足取り教えて君がさ・・ とくにJavaに多い 迷惑極まりない もういいから、しんでくれ
>>549 >プログラムで繰返し処理を行う場合にfor文を使う
間違い。
プログラム(アルゴリズム)で同じ処理を何度も行いたい場合、それを繰返し処理と呼ぶ。
for構文ってのは繰返し処理を実現するただの文法。
何を繰り返したいのか、考えてみること。
文字を出力するのか?数値を足すのか?数値で割れるのかを判定するのか?など。
>>555 いるんだよ。こういう文法だけ覚えろって先輩気取クンがさ・・・
とくにJavaに多い
迷惑極まりない
もういいから、しんでくれ
JavaでMBRを書き換えるツールは作れますか?
558 :
デフォルトの名無しさん :2007/05/16(水) 01:54:19
通常時はA.jpgの画像が表示され、ENTERを押すとB.jpgに変わる。 B.jpgにENTERを押すとまたA.jpgに戻り、終了時にはC.jpgがうつる。 というプログラムを組んだつもりなのですが、常にC.jpgだけがうつり、ENTERを押してもなんの反応も示しません。 どうすればいいのでしょうか?
>>558 きみのプログラムが間違っているんだと思うぞ。
ソースも晒さずにどう間違いを指摘しろと言うのだ
>>558 > どうすればいいのでしょうか?
デバッグすれば?
JFrameの上にFlashPlayer載せるにはどうすりゃいいですか?
>>527 slickeditってのがどんなものなのか知らないけれど、
javacの実行環境のlocaleを英語にしたければ、
-J-Duser.language=en
をjavacのオプションにすればいい。-Jの後に空白を置かないように。
FlashPlayer JFrame
質問です。 a.xlsというエクセルファイルにC:\\b.xlsという記述があるとします。 まずa.xlsをプログラム内で POIFSFileSystem filein = new POIFSFileSystem(new FileInputStream( "C:\\a.xls")); の記述で開きます。 まずa.xlsは上記の様に直接プログラム内で指定しているので開けるのですが、 その後、a.xls内に記述されているC:\\b.xlsという文字列を読み込み、 例えばdataという変数に格納します。 それのdataという変数に格納されているC:\\b.xlsを参照して、 POIFSFileSystem filein = new POIFSFileSystem(new FileInputStream( "C:\\b.xls")); という様な形でb.xlsを開けるようにしたいのですがどうすればいいのでしょうか? わかりにくくてすいません。要するに 直接プログラム内でパスを記述するのでなく、変数に格納されている文字列を読み込み それをパスとして読み込んでファイルを開くという方法を教えていただきたいのです。
変数に格納されているのならその変数をそのまま使えばいいのでは? パスの形への整形は必要かもしれんが。
ありがとうございます。 その整形方法がわからないのですが。。
dataにC:\\b.xlsって文字列が格納されてるなら POIFSFileSystem filein = new POIFSFileSystem(new FileInputStream(data)); でええんとちゃうのん? 整形も何も必要ないような って必要あるね dataがStringだとして data=data.replaceAll("\\\\","\\"); とでもすれば?
>>569 しなくていい
POIFSFileSystem filein = new POIFSFileSystem(new FileInputStream(data));
でええはず
あるいは data が Array や ArrayList みたいなのだったらループ汁
571 :
558 :2007/05/16(水) 14:20:48
572 :
558 :2007/05/16(水) 14:27:22
>>571 のやつは、ちょっとC.jpgの部分辺りが消えてしまってるんですが・・・
試さずにコメントするけど switchの中でgetKeyCode()を何度も呼び出してるからじゃないかな
paint の中 bkgrp 毎回 null
なんだ釣りか
>>571 KeyEvent の届き方ってのは仕様が無い。プラットフォーム毎(キーボードの種類毎)に挙動が違う。
keyPressed は押し始めに 1回だけ呼ばれるという前提で書いてるみたいだけど、
キー押し始めてからキー離すまで nミリ秒ごとに keyPressed を呼び出すプラットフォームもあるので要注意。
>>570 ほんとだ。"C:\\\\\\\\\\hoge.txt"とかでも大丈夫だった。
先頭にドライブ文字が付いているからUNCパスと区別できるってことか。
RMIサーバを作成しています。
リモートオブジェクトがGCのタイミングで無くなってしまう可能性
ttp://d.hatena.ne.jp/nowokay/20060817 を潰しておきたいのですが、
static変数に持っておく、参照が切れない事が分かっている
インスタンスの変数とする、等の方法しか無いのでしょうか。
コード的に、もうちょっと体裁の良い形にしておきたいのですが。
また、リモートオブジェクトのエクスポートの瞬間にオブジェクトが
取得される可能性があるからコンストラクタでの処理が云々、
と言った話をトラブル話として過去に聞いたのですが、当時良く理解出来ませんでした。
この情報から推測できそうな有名な落とし穴等ありますでしょうか?
プログラミング自体が完全に初心者なんですが、そういう初心者向けのJavaの参考書はなにがいいでしょうか? いまのところ、一冊は候補があってもう何冊か目星をつけて見比べたいので。
>>579 なぜプログラミングができないのかって本。
中身はJava入門本、目から何か出る。
目からビーーーーム!! ・・・は既にでじこも卒業
583 :
デフォルトの名無しさん :2007/05/17(木) 04:38:42
beanにinit()の初期化処理が入っています。 そのbeanをJSPからusebeanした場合、beanのinit()の部分の処理は次回のjspへのリクエスト時は処理されないですみますか? それともjspへのリクエストの度にusebean⇒beanのinit()処理となってしまいますか?
584 :
デフォルトの名無しさん :2007/05/17(木) 07:48:09
>> 582 恒例の流れなんだが、Head First Javaは良書だが初心者にはどうかと。 どんな本でも良いんだが、打ち込んだソースが動かないとか、論外。 自分的にはGoogleが一番良い参考書だと思うぞw
585 :
デフォルトの名無しさん :2007/05/17(木) 07:51:27
>> 583 beanのコンストラクタから init() を呼び出しているって事でOK? useBeanした時にどうなるかは、beanのスコープに依存する。 スコープがrequestならば毎回初期化される(インスタンスが生成される)。 sessionであるならば、同一sessionで使いまわされると理解して良い。 (細かい所は省略しているからあとは自分で調べろ) initにSystem.outとかブレイクポイントとか仕掛けて、両方の挙動を確認するのがいいよ。
586 :
デフォルトの名無しさん :2007/05/17(木) 11:36:37
諸先輩方、アドバイスお願いします。 オライリーのJAVAクイックリファレンスで勉強中なんですが 初期の段階(クラスのメンバー等)のところでつまづいてなかなか先に進めないでいます。 とりあえずと読み進めていますが、理解できないところが多くなってきました。 こういうときは、理解できるまで繰り返し読むしかないのか 分からないなりに一通り読み進めていく方が良いのか、どちらの方が良いでしょうか? そもそも、この程度の箇所でつまづいてる時点ではJAVAはまだ早いでしょうか? 厳しい意見でも構いませんのでアドバイスお願いします。
>>586 プログラムを実際に組んで動かしたことありますか?
588 :
586 :2007/05/17(木) 11:44:56
>>587 クイックリファレンスに掲載されているものは打ち込んで動かしていますが、
自分で何かを組んだりしたことはありません。
589 :
558 :2007/05/17(木) 12:18:27
遅くなりましたが返答ありがとうございます。 しかし未だにプログラムは完成してません。 もう少し自分で頑張るつもりです。
591 :
586 :2007/05/17(木) 12:46:52
>>590 現在掲載されているのは計算が主体のようですね。
でも、勉強になります。連載中のようなのでこれからが楽しみです。
ありがとうございました。
592 :
586 :2007/05/17(木) 12:49:16
>>590 各回は1ページではなかったんですね・・・。
最後のページに演習があったのに今気付きました。
やってみようと思います。
String expr = "2 * 3 + 7"; Calculator calc = new Calculator(); String value = calc.eval(expr); value = 13 になる みたいなクラスってありますか?
そのものというわけにはいかないが 6以降ならスクリプトAPI使ってRhinoに評価させるって手はあるな
ちっこいコンパイラ作るつもりでやってみw
与えられた正の整数の因数を全て表示するプログラムを作成しなさい。たとえば12の場合、2,3,4,6を表示する。 というような問題はループを使うのですか?どなたか答えを、、
再帰を使えと?
>>597 何を使っても良いのでは
void printInnsuu(int n){
for(int i = 2; i <= n / 2; i++)if(n % i == 0 )System.out.print(i + ",");
}
>599さん ありがとうございました(^3^)/
>>593 jay+JFlexならこんな感じで
--Calculator.jay
%{
public class Calculator {
private Integer result;
%}%token <Integer> NUMBER
%type <Integer> expr
%left '+'
%left '*'
%%
string: | string expr { result = $2; }
expr: NUMBER { $$ = $1; }
| expr '+' expr { $$ = Integer.valueOf($1.intValue() + $3.intValue()); }
| expr '*' expr { $$ = Integer.valueOf($1.intValue() * $3.intValue()); };
%%
public String eval(String expr) throws Calculator.yyException, java.io.IOException {
yyparse(new Lexer(new java.io.StringReader(expr)));
return String.valueOf(result);
}
}
--Lexer.flex %% %public %class Lexer %implements Calculator.yyInput %type int %eofval{ return YYEOF; %eofval} %{ private int token; private Object value; public boolean advance() throws java.io.IOException { return (token = yylex()) != YYEOF; } public int token() { return token; } public Object value() { return value; } %} %% " " { } [1-9][0-9]* { value = Integer.valueOf(yytext()); return(Calculator.NUMBER); } . { return yytext().charAt(0); } --Test.java public class Test { public static void main(String[] args) throws Exception { String expr = "12 + 3 * 7"; Calculator calc = new Calculator(); String value = calc.eval(expr); System.out.println(expr + " = " + value); } }
603 :
デフォルトの名無しさん :2007/05/17(木) 18:36:39
jarを作って、プログラムの中からjarを実行させたいのですが、 可能でしょうか?
605 :
デフォルトの名無しさん :2007/05/17(木) 22:24:04
>>604 たとえばSWTで1画面作って、jarにして
別のシステムからボタンクリックイベントとかで、
このjarにした画面を呼ぶ事ができるのかなって、、、
>>605 できると思うけど。
具体的な状況がサッパリわからんので、
具体的にどうやるかは自分で考えれ。
607 :
デフォルトの名無しさん :2007/05/17(木) 22:57:49
>>606 SWTで画面を作って、jarにするところまでできたのですが、
それを今度は、JFrameで作った画面のボタンクリックイベントで
jarにした画面を表示させたいのですが、具体的にどう記述すれば良いか
色々しらべてもわからなかったので、もしよろしければ教えてください。
608 :
デフォルトの名無しさん :2007/05/17(木) 23:10:43
>>607 Runtime.exec(String command)
609 :
デフォルトの名無しさん :2007/05/17(木) 23:30:38
class Sample{ static boolean b; public static void main(String[] args){ int x = 0; if (b) { x = 1; } else if(b = false) { x = 2; } else if(b) { x = 3; } else { x = 4; } System.out.println("x = " + x); } } 「if(b = false)」のところでbの初期値であるfalseと一致し、 「x = 2」と出ると思っていたのですが、 実行すると「x = 4」と表示されます。 何故そうなるかご教授願いたいのです。
>>609 >} else if(b = false) {
bにfalseを代入してるから?
> 「if(b = false)」のところでbの初期値であるfalseと一致し、 それ、比較じゃなくて代入だから。 比較したいなら if(b == false)
booleanとtrue,falseを比較なんて身の毛もよだつ バグが入るので絶対お薦めしません if( b ) if( !b ) これでいいだろ?
613 :
609 :2007/05/18(金) 00:01:22
比較の"=="じゃなく、"="なので代入になってしまっていたわけですね。 なるほど、わかりました。 どうもありがとうございました。
>>612 if(b){} else {} でいいじゃん。
Sunのコーディングスタイルはif(b==ture) else
>>608 そういう意味じゃなくてOOoみたいに別々に固めた別コンポーネント(ウィジェット)を連携したいって意味じゃない?
boolean b = false; 【不恰好なコード】 if (b == true) { // 処理 } else if (b == false) { // 処理 } 【美しいコード】 if (b) { // 処理 } else if (!b) { // 処理 }
> } else if (!b) { 釣りか?
酔ってるんだ みなかったことにしてくれ
>>609 ちなみに == true を書く派だが、これは盲点。
if( b = false) ってバグは怖いな
ためしにint あたりで同じバグを書いてみよう
if(i = 10)
とかね。
こっちはコンパイルエラーとなる。
実はJavaの場合、代入式の実行結果として代入値が返されるんだわ。
だからint の場合は、代入値(10)が ifの論理式の所に渡されるからNG。
これに対して、boolean の場合は、falseが渡されるから、結果としてOK。
そう考えると、612の主張もアリと感じる。
比較演算の結果は boolean なので、 boolean を true, false と 比較するというのなら比較演算の結果も当然比較するべきだろう。 その結果も boolean なので(以下略
(...(((b == true) == true) == true) ... == true)
無限再帰ってこわくね?
624 :
デフォルトの名無しさん :2007/05/18(金) 10:24:01
javaって肥大化していくCで書かれたソフトウェア開発コスト下げれるの? 速度速いしC++の方がいいと思うんだけど。
どの言語も使いどころが違うからなあ マルチリンガル必須だよ
boolean は、真偽値しか入ってこない型なんだから 判定では、比較させないのがバグを回避するのに有効だと思うが・・・・ Cや、Perlなど boolean以外の値も真偽判定に使えるような言語だと、 比較を書くのは真偽判定に使っていると明示すことこになって嬉しいんだけど Javaはbooleanでしか判定しないので比較を書かない方がいいと思う
>>628 ふむふむ。
それならば、メソッドの戻り値がbooleanの場合はどうする?
if(isHogeHoge()) {}
と
if(isHogeHoge() == true) {}
だと後者のほうが解りやすいと俺は思う。
変数だと書かないのもありと思うけど、でも!は嫌いだなぁ。
見落とすんだよね・・・
>>629 俺は
>>628 じゃないけど、前者の方が良い。
if (!isHoge()) と if (isHoge() == false) でも前者かな。
== true を入れられると、何か頭を使わないと理解できない。 慣れの問題だろうが、俺はない方がはるかに分かりやすい。 というか、C/C++ 使ってると true と比較するのはものすごく抵抗がある。 ctype.h の is 系関数とか 1 以外の値も返すようになってる実装だったりすることも多いし。
C/C++ だと == NULL とか != NULL は良くやる。 ってか、文法似てるけど別の言語だからスレ違いだね。ごめん。
ポインタは真偽値じゃないから書くのが普通だろう。
>>629 個人的主観で言うならば日本語に直してスムーズに読める方を採用する
if(isHogeHoge()){} →もしHogeHogeならば(比較的素直に読める)
if(isHogeHoge() == true){} →もしHogeHogeが真ならば(いかいもプラグラム的)
>>618 こう考えるんだelse if(!b)else assert false;
それは契約だと・・・・なんだって?到達不能だって?
>>635 b が別スレッドから変更される可能性があるんだよ。たぶん。
何という危険なプログラム!
いや、それ何の解決にもなりませんから。
public class VolatileSolvesEverything { private boolean 解決 = false; /* 中略 */ if (解決) { /* 嘘やん(心の声) */} else { /* 到達不能ということにしたい */ } }
>>629 !を見落とすより間違った代入を見落とした方がバグとして痛いだろう
if(true - true == 0)
>>642 booleanは引き算できないってこと分かってる?
644 :
デフォルトの名無しさん :2007/05/18(金) 18:02:16
初心者の質問じゃないかもしれないけど、
どなたか教えてください。
ドメインaaaaa.comから
http://bbbbb.com/へ 、
リンクが貼られているかをチェックするプログラムを作りたいと思っています。
現在サイト運営していて、
相互リンク先から本当に自分のサイトにリンクされているのかを、
確認したいと思っているのですが、
リンク件数が1000件を超えているため、
プログラムでチェックしたいとおもっています。
Javaでなくてもいいのですが、
JSpiderというものがあるのを知り、
こちらにかきこませていただきました。
べつに言語はJavaに固執しているわけではありません。
参考になるサイトなどありましたら教えていただけないでしょうか。
どなたかお願いします。
>>644 パッシブな調査方法でいいのなら、
ログのリファラをチェックするのが一番確実だと思います。
それだと、相互リンク自体が有効かどうかチェックできるし
ネットワークトラフィックを発生させる事もありません。
1.相互リンクをお願いする
2.相手にリンク作ったら1回踏んで動いていることをチェックしてもらう
3.毎月(自分の納得する頻度で)ログをチェックする
4.相互リンクを結んでいる相手のリファラを持つアクセスが無い相手のみ目でチェック
これでOK.
1000件以上も単なるリンクチェックだけに回るのは
極めて非常にとても無駄です。
俺は ! の後には必ず空白入れるようにしてる。 if(! b) みたいに、目立つように。
>>647 俺らは ! は必ず三つ並べるようにしてる。
if(!!!b) みたいに、目立つように。
>>651 なにー!
くそー、じゃあオレは4つ並べちゃうぞ
>>653 ってか、3つや5つならオッケーなんだよな。
4つや6つ並べると負けってのは何か理不尽じゃね?
納得いかない奴の数→(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!ry
>>653 wを2つ並べるのも避けてるみたいですが、意図的ですか!!!ww1w!w!!ww
というか
_, ._ 金曜の夜なのに
(´・ω・) くそレスが次から次へと…
○={=}〇,
|:::::::::\, ', ´
、、、、し 、、、(((.@)ww意図的ですか!!!ww1w!w!!wwwbw!!ww
!!! って流石に ! に最適化されるよね?
(´・ω・) く あまり糞レス増やすなよー ○={=}〇, |:::::::::\, ', ´ 、、、、し 、、、(((.@)!!! って流石に ! に最適化されるよね?
!って1個じゃなくてもいいの!?
!!?!
1++++---+--+++++-+-++-+2
ああそうか2個あったらfalseの逆になるのか
665 :
デフォルトの名無しさん :2007/05/19(土) 00:08:50
1+ + + +- - -+- -+ + + + +-+-+ +-+2
>>667 マジレスすると、Java では 1 ++ ++ -- + -- ++ ++ + - + - ++ - + 2 と区切られなければならない。
1++2 も同じ理由でコンパイルエラーになる。
マイナスが一個足りないな
ネットワーク対戦のゲームを作りたいのですが、 クライアントサイドにSwingをサーバサイドにサーブレットを使おうと考えています。 通信部分はどうしたらいいのでしょう。
ServletならJakarta Commons HTTP Clientを使っとくのが楽かもね。
672 :
670 :2007/05/19(土) 03:02:16
>>671 ありがとうございます。
ググってみたのですがよくわかりません…
詳しく教えていただけないでしょうか?
わからんのなら素直にSocketでも使っとけ。
ttp://www.ipa.go.jp/security/awareness/vendor/programming/a03_04.html このページにある、リスト2 InfoMenuクラスのソースなのですが、
10 public void dispMenu(Passwd pwd) {
11 if(pwd.checkPasswd() == true) {
12 dispSystem();
10行目の部分でPasswdクラスのオブジェクトを取ってくると記述されていますが、
PasswdクラスとinfoMenuクラスが親子関係という訳でもなく、
infoMenuクラスからPasswdオブジェクトを作っている記述もありません。
なぜ、dispMenu(Passwd pwd)だけで任意のPasswdオブジェクトが取得できるのでしょうか?
>>676 > 10行目の部分でPasswdクラスのオブジェクトを取ってくると記述されていますが、
そんなこと書いてない。テキストを誤解している。
>>676 「Passwdを取得する」ではなく「Passwaを引数とする」ではないの?
679 :
676 :2007/05/19(土) 08:11:34
そのとおりです、オブジェクトを引数として渡してるだけでしたorz 何故か初歩的なこと忘れてました。 「dispMenu(Passwd pwd)」って記述したら自動的に 「dispMenuに渡された引数がそのままPasswdに渡されて、尚且つpwdオブジェクトが生成される」とか 変なことばかり考えてまして。 ありがとうございました。
注:str.java の操作は、未チェックまたは安全ではありません。 注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください というエラーがコンパイルすると出るんですがなぜですか? 同じものを学校のPCでやってもでなかったのに
>>680 javac -source 1.4 str.java
ってやってみ?
学校のコンパイラのバージョンは古いからエラーが出なかったんだ。
683 :
デフォルトの名無しさん :2007/05/19(土) 19:24:25
ha= buf.readLine(); switch (ha.charAt(0)){ case'+': kg=1; case'-': kg=2; case'*': kg=3; case'/': kg=4; } の部分に Exception in thread "main" java.lang.NumberFormatException: For input string: "+" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at RinkouPractice4.main(RinkouPractice4.java:22) ってエラーが出てコンパイルできるが実行できないんですが原因を教えてください
>>683 とりあえずエラーが発生してる場所が違うな。
>at java.lang.Integer.parseInt(Unknown Source)
>at RinkouPractice4.main(RinkouPractice4.java:22)
まぁこれ見る限りreadLine()してきたデータそのままparseInt()に渡してるんだろうな
685 :
デフォルトの名無しさん :2007/05/19(土) 20:41:46
public static void main(String[] args)throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(System.in)); //標準入力の準備 String ha,s1,s2,b1,b2; int kg; int si1,si2,bo1,bo2; System.out.println("数値を入力"); //ユーザに入力を促す s1=buf.readLine(); b1=buf.readLine(); si1 = Integer.parseInt(s1); bo1 = Integer.parseInt(b1); ha= buf.readLine(); s2=buf.readLine(); b2=buf.readLine(); si2 = Integer.parseInt(s2); bo2 = Integer.parseInt(b2); Kazu v1 = new Kazu(si1,bo1); Kazu v2 = new Kazu(si2,bo2); // Hantei h = new Hantei(); // kg = h.opr(ha.charAt(0)); kg=0; switch (ha.charAt(0)){ case'+': kg=1; case'-': kg=2; case'*': kg=3; case'/': kg=4; } なぜエラーが出るんですか?
RinkouPractice4.javaの22行目どうなってる? mainメソッドから数えて22行目じゃなくてファイルの頭から数えて22行目。 >si1 = Integer.parseInt(s1); >bo1 = Integer.parseInt(b1); >si2 = Integer.parseInt(s2); >bo2 = Integer.parseInt(b2); どれかのはずだけど… んで、なんでエラーになるかというと、parseIntメソッドの仕様だから >文字列の引数を符号付き 10 進数の整数型として構文解析します。 >文字列にある文字はすべて、10 進数でなければなりません。ただし、 > 1 番目の文字だけは、負の値を表すためにマイナス記号の ASCII 文字 >「-」(「\u002d」) であってもかまいません。 これに”+”付の数字渡せば >Exception in thread "main" java.lang.NumberFormatException: For input string: "+" となる、と。 入力データのチェック入れれば回避できるんでない?
687 :
デフォルトの名無しさん :2007/05/19(土) 21:41:49
20 s1=buf.readLine(); 21 b1=buf.readLine(); 22 si1 = Integer.parseInt(s1); 23 bo1 = Integer.parseInt(b1); 24 ha= buf.readLine(); 25 s2=buf.readLine(); 26 b2=buf.readLine(); 27 si2 = Integer.parseInt(s2); 28 bo2 = Integer.parseInt(b2); 29 30 Kazu v1 = new Kazu(si1,bo1); 31 Kazu v2 = new Kazu(si2,bo2); こうなってますが具体的にはどうすればよいのでしょうか?
689 :
デフォルトの名無しさん :2007/05/19(土) 23:53:00
入力データのチェックって何ですか? まだ出来ないんですが誰か助けてください
J2EEのライブラリを書くときにServlet APIのインタフェースライブラリだけが欲しいんですが これってTomcatとかから借りてきてそのまま配布してもいいんですか?
>>689 readLineメソッドで読み込んだ文字列(変数ha以外)が数字又は一文字目が"-"以外だったら
エラー処理を行う(再入力させるもよし、Exception投げるもよし、問答無用でプログラム終了でも…)
要するにInteger#parseIntがちゃんと処理できる値が入力されていることを保証してやる
ユーザが作り手の意図した通りの入力してくれるとは限らないから入力チェックは必須。
int readInt() throws EOFException { while(true) { String str = buf.readLine(); if(str == null) { throw new EOFException(); } try { return Integer.parseInt(str); } catch(NumberFormatException e) { System.out.println("残念、もう一度"); } } }
>>688 残念ながら1.4が本当のターゲットらしいんでgenericsを使っちゃコンパイルできなくなる。
別の所でそれより新しいバージョンでコンパイルして警告を出されて焦ったようだ。
>>693 つ -source 1.5 -target jsr14
WindowsでもLinuxでも動作する USBポートに対する入出力を行うライブラリでオススメ教えてください
696 :
デフォルトの名無しさん :2007/05/20(日) 04:23:35
整数を任意に入力していき、0を入力したら最大値は何番目にでてきたか出力する プログラムですが、たとえば 0>10 1>11 2>0 と入力すると、本来 1 と出力されてほしいのに、 1 1 と出力されてしまいます。 どこがおかしいのかご教授くださいmm
697 :
697 :2007/05/20(日) 04:26:12
import java.io.*; public class enshu41b { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int[] a = new int[100]; int count = 0; while(count < a.length) { System.out.print(count + "> "); int v = (new Integer(in.readLine())).intValue(); if(v == 0) { break; } a[count] = v; ++count; } int max = a[0]; int[] mn = new int[100]; mn[0] = 0; int count2 = 0; for(int i = 1; i < count; ++i) { if( a[i] > max ) { max = a[i]; count2 = 0; mn[count2] = i; } if( a[i] == max ) { ++count2; mn[count2] = i; } } for(int i = 0; i <= count2; ++i) { System.out.println(mn[i]); } } }
>>695 jUSBを自分でwindowsに対応させる。
>>696 境界条件を頭の中でシミュレート。わかんねーならトレース実行でもしろ。
>>694 1.4でコンパイルするのが目的で1.5以上のコンパイラの機能は使えない
1.4の実行環境をターゲットにして1.5以上でコンパイルするんじゃないから
1.4のコンパイラしかない環境でコンパイルするにはそのオプションは空しい
ObjectInputStreamのreadObject()でファイルを最後まで読みたいんですがどうもうまくいきません。 whileのところが今のままではjava.lang.Object と int は比較できません。というエラーがでます。 どなたか教えてください。 /**************** ファイルから入力 *****************/ List messages = new ArrayList(); try{ ObjectInputStream ois = new ObjectInputStream( new FileInputStream( file ) ); Object obj; // ファイルの終端に達するまで読み込む while( ( obj = ois.readObject() ) != -1 ){ Map map = (Map) obj; messages.add( map ); } if( ois != null ) ois.close(); } catch( Exception ex ){ ex.printStackTrace(); } finally{ System.out.println( "end input" ); }
whileの中の-1ってなんだ? 説明できるか?
とりあえずclose()する前にflush()しとけ
教える側も素人かよ^^;
>>702 とりあえずJavaDoc嫁。EOFを返すなどと何処に書いてある?
2chを辞書代わりに使うな、むしろ時間の無駄と分かるぞ。
ObjectInputStreamのAPIドキュメントに >>バイト単位の読み込みでは、バイトが読み込まれたときに -1 が返されます。プリミティブ読み込みでは、EOFException がスローされます。 こういうこと書いてたので-1が返るのかなと思ってました。 それじゃもっとよんでみます
ああreadObjectはバイト単位でもプリミティブ単位でもないのかごめん
>>708 逆ギレかよ、わかんねーならそれなりの態度があるだろうに
2ch向いてねえな
無職乙
年数を入力して、うるう年と一般の年を判別後、月を入力して、 その月が何日あるかについてのプログラムを組んでみたのですが、 コンパイル問題が未解決です。 構文エラーがあります。"}" を挿入して MethodBody を完了してください。 構文エラーがあります。"}" を挿入して ClassBody を完了してください。 と出て実行できません。 最後の『 } 』の数は合っていると思うのですが、何故エラーが出ているのでしょうか?
713 :
712 :2007/05/20(日) 17:23:51
public static void main(String[] args) { BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); try { System.out.println("今は何年ですか?"); String line=reader.readLine(); int year=Integer.parseInt(line); if(year%4==0) { System.out.println(year +"年ですね。"); System.out.println("今月は何月ですか?"); line=reader.readLine(); int month=Integer.parseInt(line); if(month==2){ System.out.println("2月の日数は28日です"); }else if(month==4 || month==6 || month==9 || month==11){ System.out.println(month +"月の日数は30日です"); }else if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12){ System.out.println(month +"月の日数は31日です"); }else{ System.out.println("月数の範囲を超えています");} }
714 :
712 :2007/05/20(日) 17:24:33
else if(year%4!=0) { System.out.println(year +"年ですね。うるう年です。"); System.out.println("今月は何月ですか?"); line=reader.readLine(); int month2=Integer.parseInt(line); if(month2==2){ System.out.println("2月の日数は29日です"); }else if(month2==4 || month2==6 || month2==9 || month2==11){ System.out.println(month2 +"月の日数は30日です"); }else if(month2==1 || month2==3 || month2==5 || month2==7 || month2==8 || month2==10 || month2==12){ System.out.println(month2 +"月の日数は31日です"); }else{ System.out.println("月数の範囲を超えています");} } }catch(IOException e){ System.out.println(e); }catch(NumberFormatException e){ System.out.println("月に入力できる数は1〜12の実数です");} } } }
715 :
712 :2007/05/20(日) 17:26:50
開発環境はEclipsです
716 :
712 :2007/05/20(日) 17:58:54
あれ?なんだかよく分からないうちに自己解決しました。 何が問題だったんだろう……
つ保存していない つ余計な括弧がある つ右クリック ⇒ ソース ⇒ フォーマット
718 :
デフォルトの名無しさん :2007/05/20(日) 19:32:20
宿題があるんですけど教えてください。
720 :
デフォルトの名無しさん :2007/05/20(日) 22:51:05
スタンドアロンプログラムをWindows上で動かし、 フォルダを指定しエクスプローラを開く、 といった処理をしたいんですが、なかなか情報が見つかりません。 なにか良い方法があれば教えてください。 ちなみにGUIはSWTを使用し作成しています。
721 :
デフォルトの名無しさん :2007/05/20(日) 23:25:16
>>720 質問が良くわからないんだけどSWTでエクスプローラーを作ったって事?
他にGUIが見当たらないんだが・・・。
javaやってる人ってオブジェクトとインスタンスって混ざって言ってるような きがする、なんか違いあるの?
クラス + インスタンス = オブジェクト
オブジェクトという名前の基底クラスがあるから紛らわしい
テキストファイルの内容の一部だけ削除したいんですけど 一回全部よみこむ→該当部分削除→書込み直す っていう方法は思いついたんですけど、 効率悪い気がするんですが、ほかにいい方法ってないですか?
727 :
デフォルトの名無しさん :2007/05/21(月) 12:08:54
ResultSet型のオブジェクトに代入されている結果セットのレコード数を知りたいんですが、何かいいメソッドって用意されていますか?
いまこのページ(↓)を読んでパッケージについて勉強してました。
ttp://www.ytp.ne.jp/tech/java/sineruka/classpathhowto.html このページで言うところの C:\Source\Java\test\HelloWorld2.class に対して
C:\Source\Java\test>java HelloWorld2
と実行するのと
C:\Source\Java\test>java test.HelloWorld2
と実行するので結果に差がある(前者はエラーになる)ことは確認しましたが、
いまいち納得ができません。
ディレクトリ直下のHelloWorld2.classを直接指定するのと
CLASSPATHの下の\test\HelloWorld2.javaを指定するのとで
何が変わってくるのでしょうか?
>>728 javaコマンドの引数に指定するのは、ファイル名ではなく
パッケージ名を含むクラス名(FQCN:完全修飾クラス名)であることに注意。
”java HelloWorld2”のコマンドは、
HelloWorld2.classを参照するよう指定しているのではなく、
クラスパスからHelloWorld2というFQCNのクラスを見つけて、
それを実行するよう指定している。
この場合、HelloWorld2のFQCNはtest.HelloWorld2なので、
該当するクラスがクラスパスにないためNoClassDefFoundErrorになる。
>>728 補足。パッケージ名はclassファイル自体に埋め込まれるので、
HelloWorld2.classをC:\Source\javaに移動しても、
HelloWorld2のパッケージを移動したことにはならない。
まず訂正を。自分の書き込みを見てびっくりしたのですが、
>ディレクトリ直下のHelloWorld2.classを直接指定するのと
>CLASSPATHの下の\test\HelloWorld2.javaを指定するのとで
の2行目は\test\HelloWorld2.classのミスタイプです。
>>729 回答ありがとうございます。
.classファイルを探すのではなく、FQCNでクラスを探しに行くから
test.HelloWorld2は存在するけれどHelloWorld2なんていう物は
存在しないという事ですね。
>パッケージ名はclassファイル自体に埋め込まれるので、
>HelloWorld2.classをC:\Source\javaに移動しても、
>HelloWorld2のパッケージを移動したことにはならない。
これについてですが、試しにソースはいじらずに.javaファイルを
C:\Source\Javaへ移動し、Message→HelloWorld2の順にコンパイルしたところ、
Messageはコンパイルできたものの、HelloWorld2はパッケージotamesiが
見つけられずにコンパイルできませんでした。
また、普通にコンパイルしたHelloWorld2.classをC:\Source\Javaに移動して
java test.HelloWorld2 してみたら
Exception in thread "main" java.lang.NoClassDefFoundError: test/HelloWorld2
が出てしまいました。
「パッケージを移動したことにはならない」というのは
「単純にフォルダ移動してもパッケージ情報(?)は変わらないから
パッケージと同名のフォルダに入れておかなければならない」
という意味でしょうか?
733 :
728 :2007/05/21(月) 14:28:00
735 :
デフォルトの名無しさん :2007/05/21(月) 15:33:15
>>731 結局API読みまくった結果、ResultSetを直でいじくりまわすのはやめて、
内部クラス作ってそれのpublic変数に結果セットの最終行までResultSet.getStringしてって
ArrayListのオブジェクトにつっこんでArrayListのオブジェクト.size()しました。
配列のサイズきめたくて結果セットの行数しりたかったんですけど、配列作るよりArrayListつかったほうが何かすっきりしました
>>732 合ってるがもっと単純明解な前提条件があるぞ。
フォルダの移動はOSのオペレーション、パッケージの指定はjavaの仕様。
根本的、本質的にもこの二つはまったくの別物。
くっつけて考えてしまうならそこが"間違えて分からなくなってる"部分だ。
まずは問題の切り離しからだな。
ネットワーク越し(現在使用しているのはRMI)にIterator的なオブジェクトを 渡して受け取り側が辿れるようにするには、各メソッド内で通信するよう自前で作るしかないのでしょうか。
738 :
デフォルトの名無しさん :2007/05/21(月) 22:04:02
Byte a[]={0,0,0,1}; をa[0]〜a[3]のバイト列をもつint型に変換する方法教えてください。
a[0]<<24|a[1]<<16|a[2]<<8|a[3]
すまんすまん a[0]<<24|a[1]<<16&0xff0000|a[2]<<8&0xff00|a[3]&0xff こうだ
>>738 new DataInputStream(new java.io.ByteArrayInputStream(a)).readInt();
java.nio.ByteBuffer.wrap(a).getInt();
>>727 適当なトランザクションレベルで select count(適当なカラム) from テーブル
という SQL を発行すればいいよ。リソースを消費を気にしないなら count(*) でも可。
>>737 質問の意図が良く分からんけど
org.JSON とか使うと解決するかもね
745 :
デフォルトの名無しさん :2007/05/22(火) 00:55:41
サーブレットでsubmitやセッションしたりしないでその画面のままテキストフォームから入力された値を取る方法ってありますか?
セッション関係無くね?
747 :
720 :2007/05/22(火) 01:24:15
ご回答してくれた方ありがとうございました。
>>721 自分で作ったGUIからWindowsのエクスプローラを呼ぶには?
という質問でした。
結局JNI経由でWINAPIのShellExecuteを呼び出す形式で解決しました。
Webしかやったことない自分としては
GUIは妙に難しく感じます^^
JavaScriptを使えばいい フォームの入力チェックにも使われている あー仕事がほしいー
749 :
720 :2007/05/22(火) 01:29:44
>>745 Submitしないという時点でクライアント側の処理になります。
サーブレットでの処理は無理です。
Javascriptが一番手っ取り早いのでは?
>>745 言葉が意味わからんがsubmitなしではservletに渡すことは普通は無理
XMLHttpRequestを使えばできる(ブラウザー依存)
いわゆるAJAXだな
752 :
デフォルトの名無しさん :2007/05/22(火) 05:56:30
>>727 実は最初はそうしてたんですが、レコード数が膨大でcount(*)のリソースがどうしても気になって気になって、今の方法にしました。
>>743 もうステップ数を気にする時代ではないような気がしたので、リソースとのバランスを見ても、この方法がやはりベストなのかなと。
贅沢を言わせてもらうと
>>727 を読んだ時点で教えてもらいたかったです・・・
>>752 ごめん
ほぼ同じペースで同じことやってるみたいなのでw
当初は ArrayList へ移し替えやってたんだけど
いろいろ事情があって
結局いまは ArrayList はやめて JSONArray に変更したんだけど
標準のコンテナ(Hash Map など)よりも意外と便利で病みつきになりそう
>>744 ありがとうございます。
質問の意図が分かりづらかったようですみません。
ネットワーク越しにリストとなるデータを転送する際、コレクションや配列をそのまま渡すと
データが大量だった時にメモリを圧迫する可能性があるため、一気に渡すのではなく
少しずつ渡す必要があります。
そうするとIteratorのようなインタフェースから少しずつ取得できると理想ですから、
現在の私の状況であれば RMI 通信を隠蔽した Iterator 実装があると理想だったのですが、
見つけられなかったため質問しておりました。
JSONライブラリがこの背景と合っていたか不明ですが、少々調べてみます。
>>754 その渡そうとしているデータは、まさかDBからのクエリ結果だったりはしないよね?
なんでSunの命名規約はパッケージ名を全て小文字にすることになっているんですか? longpackagenameのように長いと読みにくいです。 LongPackageNameの方がいいと思うのですが。 …とうちのリーダー(Java未経験)が仰ります。 どうすればいいでしょうか?
>>756 long_package_name にするとか……
大文字と小文字を区別する環境にも、そうでない環境にも同じように対応するためじゃね? ディレクトリ名がHogeとhoge両方作れてしまうOSとか。
>>756 どうぞご自由に。
それは厳密に規定された規約というよりガイドラインのはずです。
名前の衝突回避と読みやすさのために用意されています。
外部に公開するライブラリとかには止めた方がいいと思いますが
閉じたアプリケーションで、利用する分には害がないと思います。
が、自分の経験だけに基づいてプロジェクトに他の言語の流儀を持ち込むと
利用しているライブラリ等とずれるので、かえって汚くなってしまう可能性もあります。
In Rome, do as the Romans' do.
>>755 いえ、Iteratorの開放がリソースを制御していることはありません。
外部ライブラリですが、外部ライブラリがそのまま持ってしまっていると言う
事もないようです。
>>759 いまは仕様じゃなかったか?
ファイルシステムの都合で利用できない文字を含む場合はUnicodeエスケープしろって書いてなかった?
昔はクラス名もパッケージ名も単語の頭は大文字を推奨してたけどすぐ変わったよ。
http://www.itmedia.co.jp/enterprise/articles/0608/25/news010_3.html {"ResultSet":
{"type":"web",
"totalResultsAvailable":242000000,
"totalResultsReturned":3,
"firstResultPosition":1,
…略…,
"Result":[
{"Title":"Apple",
"Summary":"Macintosh hardware, software, and Internet tools. Offering Quicktime info, developer resources, and other items related to Apple computers.",
"Url":"
http:\/\/www.apple.com\/ ",
…略…
},
{"Title"、"Summary"、など次の結果…},
…略…
}
}
Eclipse使っている方いますか?
むしろEclipseでないと無理。
swingで一番上のJFrameでKeyEventを取ろうとしてもうまく取れません。 簡単なtoy programだとうまくいくのですが、panelをいくつか入れ子にしたものだと上手くいかない。 なにか理由が考えられるでしょうか? できればそこら辺を判り易く詳しく解説してあるサイトでも 教えていただければ幸いです。 あと、panelの上手な入れ子の仕方などの解説もあればうれしいです。 (ちゃんと表示されないこともあるので・・・)
>>765 その入れ子にしてるコンポーネント階層とどういう実装してるか言わないと分かる訳ないだろう。
描画に関しては重量と軽量を混ぜてて軽量が正しく描画されないって話じゃなければ描画を破壊してるだけ。
JTextPaneの幅や行数を指定するにはどうすればいいですか。 JTextAreaでは一部の文字色変更などができなかった為に乗り換えました。
>>768 JTextPane では文字の大きさが変えられたりするから
列数とか行数ってのは意味無いんじゃないかと。
なるほど、気がつきませんでした。 文字数で指定しても意味がありませんね。 私のプログラムは文字サイズが一意なので、JTextPane#setSize(int width, int height) メソッドを使えばよさそうですが、うまくいきませんでした。 サイズを指定しても反映されません。 GridBagLayoutを使っているのでこれが原因かと思い、他のレイアウト ―FlowLayoutを試してみましたが、同じくダメでした。 JTextPaneの大きさを指定するにはどうすればよいでしょうか。
771 :
770 :2007/05/23(水) 12:19:07
解決しました。 JComponent.setPreferredSize(Dimension preferredSize)メソッドが期待通りの動作をしました。
772 :
デフォルトの名無しさん :2007/05/23(水) 12:29:39
インスタンスメソッドとクラス(静的)メソッドの使い分けがよくわかりません>< 一言でいうと、どういうケースで使い分ければいいのでしょう? インスタンス化の手間を考えなければ、 全部インスタンスメソッドでいいのでは?とか思ってる状態です。
Eclipseのインストール時に書込みエラーと警告が出てしまうのですが、 どなたか解決方法を教えていただけないでしょうか?
>>772 使い分けというか、具体的にどういう場面(ソース)でそう思ったとかを書いておくれ
>>773 PC初心者板へどうぞ
RMIサーバを立ち上げ、普通にリモートメソッド呼び出しが可能な状態となるのですが、 RMIサーバをそのまま放っておくと数分後に以下のようなエラーが出てサーバが終了します。 java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: java.net.ConnectException: Connection refused 数分後という原因がよく分かりません。何かのデフォルトのパラメータか何かに依存しているのでしょうか? なお、RMIサーバを起動するのが Linux, Windows ともに発生していますので、 Windows独自のファイアウォールなどとも違うように思います。
776 :
775 :2007/05/23(水) 16:22:21
777 :
775 :2007/05/23(水) 16:30:22
自己解決しました。恐らくGCで削除されてしまっていたようです。 参照を持たせていたつもりが実は出来ていませんでした。
配列に10種類の文字を入れておいてランダムに3つ取り出したいです ダブらないようにそういう制御させるにはどうしたらいいですか エロい人教えてくださいorz
色んなやりかたがあるけど ランダムにシャッフルして 先頭の3つ取り出すとかどう?
780 :
778 :2007/05/23(水) 19:16:20
あぁ!!そういうやり方もあるんですね でもどうランダムにシャッフルするのかわからないです・・・'A`
782 :
デフォルトの名無しさん :2007/05/23(水) 20:23:40
Runtime.exec()を使って他マシンのプロセスを生成する方法を教えてください。
>>772 全部クラスメソッドにしようとしているなら考え直せとアドバイスするところだが、
全部インスタンスメソッドになるのは、クラスメソッドの必要性が出てくるまでは
放っておいてもいいんじゃないか。
>>772 783の言うとおりだな。
全部インスタンスメソッドで、ほとんどの場合は問題ない。
インスタンス生成のコストがって言うアホがいたら、何回作れば0.1秒?と聞いてやれ。
クラスメソッドにする必要性があるケース。
そうだなぁ、基本ライブラリで言えばインスタンス生成系かね。
Integer.parseInt()とかCalendar.getInstance()とか。
後はユーティリティ系、Math.max() とか
>>772 思いがけない仕様変更があったとき、
インスタンス生成の手間を惜しまずインスタンスメソッドにしておけば良かった、
と悔やむことはある。
逆は無い。
漢字のJISコードをとるにはどうすればいいのでしょう?
getBytes("JIS")とかして取得すると
半角英数などは
ttp://ash.jp/code/ にあるようなコードがとれるんだけど
漢字だとマイナスの数値が取れたりしてうまくいかないんだけど・・・
どなたかご教授を
>>786 「JISコード」とは何? 区点コードのこと?
ISO-2022-JP や Shift_JIS や EUC-JP での値?
質問です。 class hogelist { hogelist(int data) { this.data = data; } public hogelist prev; public hogelist next; public final int data; } listのクラスなのですが、 hogelist(int data) { this.data = data; } の部分はコンストラクタなのでしょうか? 修飾子はいらないのでしょうか?
>>788 コンストラクタですね。
「class」のところと同じで、パッケージスコープなら
public/protected/privateはいらない。
790 :
デフォルトの名無しさん :2007/05/24(木) 10:00:24
package-privateと言って同一パッケージ内からのみ見えるアクセス修飾です。
>788 クラス名は大文字からはじめておけ。 class Hogelist { Hogelist(int data) { this.data = data; } んで、メソッド名は小文字ではじめる。 こうすれば、コンストラクタとメソッドとを混同しなくて済む。 って昔の人が考えたんですよ。名前の付け方のルール
>>791 byte[] raw = "試".getBytes("ISO-2022-JP");
してから、raw の先頭に 0x1b があれば先頭3バイト除去、
raw の後ろから3バイト目が 0x1b だったら末尾3バイト除去、
とすれば2バイトだけ残って 0x3b と 0x6e になると思う。
Shift_JIS や EUC-JP の場合は、そのまま raw が2要素の配列になるは
ず。
>漢字だとマイナスの数値が取れたりして >漢字だとマイナスの数値が取れたりして >漢字だとマイナスの数値が取れたりして >漢字だとマイナスの数値が取れたりして
795 :
デフォルトの名無しさん :2007/05/24(木) 12:02:37
ど素人質問ですみません JAVAって機械の制御に使えるんでしょうか
javaチップって携帯電話に乗ってたっけ?
797 :
デフォルトの名無しさん :2007/05/24(木) 13:30:39
JAVAを使えるマイコンってありますか
おまえらJavaOne行ってこい
>>798 今年のJavaOneは もう終わりましたが
800 :
デフォルトの名無しさん :2007/05/24(木) 18:17:51
質問ッス ResultSet rs=stmt.executeQuery(sql) でResultSetの変数rsにsqlの結果を入れたわけですが、 中の列要素に大きなデータが入ってまして、あふれた分を切られてたわけです。 これは、どうやって解決すればいいんでしょうか?
具体的にどの型のデータなの?
802 :
800 :2007/05/24(木) 18:54:37
String型です。最高で500文字はあるみたいで・・・
>>802 いや、DBの種類とカラムの方の型が問題なんだと思われ。
arraylistについて初心者でも分かりやすく 学べる解説サイトや本はないでしょうか? 知識としてはやさしいjavaを終わらせたレベルです。
806 :
800 :2007/05/24(木) 21:34:16
>>804 今はJDBC-ODBCブリッジ使って、TextDriverに接続してます。
データはCSVに格納している状態です。
で、解決策がひとつ見つかりました。
StatementのsetMaxFieldSize()メソッドを使えば・・・となってたんですが、
エラーが出て使えません。
もう、どうしたらいいんでしょうか。
>>805 どこも一緒。
てか、やさしいJava読み終えるレベルってArrayListの解説すら読めないレベルなの?
そうだとしたら、別の入門書やった方がいいんじゃね?
>>807 言い方が悪かったっす。
ArrayListというのが問題で急に出てきたんですが、
勉強するためによい参考書はないでしょうか?という意味です。
コンピュータ言語知識はJavaが初です。
Introspectorについて詳しく書かれてるサイトか本はありますかね?
814 :
デフォルトの名無しさん :2007/05/24(木) 23:22:59
JDBCについて質問です。 ResultSet rs = stmt.executeQuery(sql); としてデータベースのでーたをrsに格納した後で、 while(rs.next()){ で上から1行ずつデータを読んでいきます。 これって同じ行をもう一度読み込んだり、 途中でもう一回最初から読んだりってできるんですか? 一回 rs.close(); してからもう一度 rs.next(); を書いてみたのですがうまくいかなくて。
>>812 基本なのですか・・・。
でも、全然そういったことを詳しく書いてるサイトや本がないのです。
あっても英語の本ばかりで。
>>814 rs.relative(-1);
とか試してみたら?
closeはrsを使わなくなってからするもの。
>>814 Statement を作る際、引数を持つ Connection#createStatement() の第1引数に
ResultSet.TYPE_SCROLL_SENSITIVE とかを与えれていれば、
ResultSet#next() だけでなく ResultSet#previous() や
ResultSet#first() や ResultSet#relative() が使えるようになる可能性がある。
でも、JDBC ドライバが対応していないこともある。
>>807 やさしいjavaは確かに読めんな。三版持ってるが、C++との共通項くらいしか書かれてない。
>>814 DBのカーソル作成モードを変えると
レスポンスが急激に悪くなることがあるし
>>818 さんが言うように互換性も無くなる
一旦自前のArrayListを構築しなおすなどしてから
操作してもいいと思う
でも一回最後まで読むから無駄が増えて
やっぱりレスポンスは落ちるかも
読みながらArrayListにも入れていって
戻るときはそっちを見るとか工夫してくれ
821 :
デフォルトの名無しさん :2007/05/25(金) 09:49:50
Java の GUI プログラムで、アイドル状態になったときの イベントを受け取ることはできないかな。 MFC でいう CWinApp::OnIdle みたいなの。
Idle状態ってなに?Focusを失ったとき?それならあるよ
823 :
デフォルトの名無しさん :2007/05/25(金) 11:05:23
そうじゃなくて、他に処理すべきイベントがなくなったとき。
面倒くさいから処理させたいものをプライオリティ最低のスレッドで動かしちゃえ
>>821 使ってるEventQueueでpeekEvent()がnullの時にアイドル時処理をするスレッドを使う。
826 :
デフォルトの名無しさん :2007/05/25(金) 17:14:14
文字列を指定した桁数ごとの文字列にして配列で返すみたいなことがやりたいです。 "aaabbbccc"を3桁って指定して["aaa","bbb","ccc"]みたいな。 forでがんばるしかない?
whileとsubstrでがんばるのはどうかな?
String s = "aaabbbccc"; String[] l = s.split("...");
>>828 思いつきは悪くないけどそれは正しく動かない。
>>826 for (String s : "aaabbbcccd".split("(?<=\\G...)")) System.out.println(s);
でも、正規表現でアクロバティックなコードを書くのはお遊びとしては楽しいけれど、
>>827 のいうようにsubstringで分けたほうが分かりやすいし正道だと思う。
>>826 ほい。
余剰文字列は切り捨てられるので、それが嫌なら改造してね。
public String[] splitter( String in, int len ) {
String[] al = new String[ in.length()/len ];
int index = 0;
while ( in.length()>0 ) {
al[index] = in.substring(0,len);
in = in.substring(len);
++index;
}
return al;
}
もし切り分ける長さを整数変数lenに入れてるなら、 "aaabbbcccd".split("(?<=\\G" + ".{" + len + "})") みたく。
>>829 ,
>>831 だと改行文字でマッチングが途切れるので、
改行文字も一文字とするなら、
"aaabbbc\nccd".split("(?s)(?<=\\G" + ".{" + len + "})")
こんな感じで。
>>830 元文字列のインスタンスを順次新規に作成するくらいなら、
int m = (in.length() - 1) / len;
String[] al = new String[m + 1];
int i = 0;
while (i < m) {
al[i] = in.substring(i * len, (i + 1) * len);
i++;
}
al[i] = in.substring(i * len);
return al;
とか。
833 :
デフォルトの名無しさん :2007/05/25(金) 20:43:54
任意の2つの座標を結ぶ線の太さを変えたいのですが、どのようにすればよいのですか?
plot 1 lw 1, 2 lw 2, 3 lw 3, 4 lw 4, 5 lw 5, 6 lw 6
>>833 ((Graphics2D)g).setStroke(new BasicStroke(10));
g.drawLine(0, 0, 100, 100);
836 :
デフォルトの名無しさん :2007/05/25(金) 23:58:27
Javaでウィンドウズのペイントソフトのようなアプリを作りたいと考えています。 (マウスのドラッグ&ドロップでフリーハンドに線を引いたりできるソフト) 参考になるお勧めのサイトまたは本を知っている方がいたら教えてください。 あと、Javaは一つのアプリで複数のウィンドウを開くことはできますか?
SWTとかのVisualEditorってもう開発してないの? 最後のリリースが1年くらい前… CUIでJavaペコペコするのもマンネリしてきたからGUIもいじってみたい今日この頃 ちなみにJava暦1月位
838 :
デフォルトの名無しさん :2007/05/26(土) 00:25:20
質問です。 classファイルを元のソースファイルに戻すことはできるのですか?
>>838 できるけど自分でできないなら諦めましょう。
定期的にコピペしたかのように来るなコレ。
840 :
デフォルトの名無しさん :2007/05/26(土) 00:47:13
>>835 すみません、Graphic2DクラスではなくてGraphicクラスで太さを変えることはできないのでしょうか?
>>839 ほんと、定期的にコピペしたかのように来るなコレ。
>>838 ぐぐればよかろう。
過去ログ。
http://pc11.2ch.net/test/read.cgi/tech/1171787388/310 dat落ちしてるだろうからコピペしといたるわ。
−−−−
public class Quine {
public static void main(String[] args) {
char c=34;
System.out.println(s+c+s+c+';'+'}');
}
static String s
="public class Quine { public static void main(String[] args) { char c=34;System.out.println(s+c+s+c+';'+'}');}static String s=";
}
まず上記をQuine.javaという名前のjavaファイルにする。
そしてjavaファイルをコンパイルしてできたクラスファイルを java Quine.java で実行。
そうすると元のjavaファイルとほぼ同じものが得られる。
もっと完全に元のjavaファイルに戻したければQuine.javaを1行で書く。
(2ちゃんの書き込み制限があるから上では適宜改行した)
−−−−
だぜ?
まあ、マジレスすると、できる。だけど、自分でできないなら諦めましょう。
843 :
学生 :2007/05/26(土) 10:32:23
今、プログラミングの勉強をしてるんですが、 この問題が分かりません。 教えてくださいm(__)m フィボナッチ数列の初項から第50項までを表示するプログラムを作成せよ。 0,1,1,2,3,5,8,13,…… 初項 F(1)=0 第2項 F(2)=1 第n項 F(n)=F(n-1)+F(n-2) ただし、n>2
テンプレ埋めとけ
つーかフィボナッチ数列がわかってないだけだろ。ググれ。
>>843 学生なら図書館に行って
『JAVAプログラムクイックリファレンス(オライリー・ジャパン)』
って本を借りてきな。まんま解答載ってるよ。
classの中にもう1つclassを作るのと、
classの外にもう1つclassを作る違いがわかんね
ややこしさからして後者の方が良い気がするが、どなたか軽く教えてくだされ
>>847 翻訳するまでもないと思うけど、もう1度文章全部読んでみて下さい
849 :
848 :2007/05/26(土) 12:36:46
あー俺アホだ、自己解決しました
>>843 ほい。
public class fibo {
public static void main(String[] args) {
fibo t = new fibo();
}
private static int MAX_COUNT = 50;
public fibo() {
long i=0, j=1, k=0;
int count=0;
System.out.print(i+","+j+",");
for ( ; count<MAX_COUNT; ++count ) {
k = i + j;
System.out.print(k+",");
i = j;
j = k;
}
}
}
ソース渡すってのは宿題スレじゃないのか
>>848 なるほど、そういう事なんですね。
解消されるまで待つしかないと・・・
853 :
842 :2007/05/26(土) 14:41:59
>>851 自分のことですかね。すみません。宿題スレで聞いてみます。
855 :
デフォルトの名無しさん :2007/05/26(土) 14:57:41
猛烈に初心者ですが、よろしくお願いします。 ページが読み込まれたら行かせたい場所に飛ばすのは、 ↓で良いそうなんですが、 こんな感じで読み込まれて10秒後に飛ばすようにするのはどうすればいいですか? <script language="javascript"> <!-- var doit=true; function exit(){ if (doit) open("行かせたい場所アドレス") } // --> </script> <body onload="exit()">
板ちがい Javaですらない
857 :
855 :2007/05/26(土) 15:10:49
javascriptってあるからjavaすれでいいのかと思って書き込んじゃいました ごめんなさい。
ServletRequestの属性値はSerializableである必要はありますか? セッションでないのでレプリケーションは関係ないですよね?
わざとだろ 釣りだろ?
>>848 >classの中にもう1つclassを作るのと、
>classの外にもう1つclassを作る違いがわかんね
(1) static でないインナークラスの場合
class A {
class B {
A のインスタンス a の中でのみ
B のインスタンス b を作れるが、
内側の b から外側の a を参照することが可能。
class A {
void doA() { B b = new B(); } // OK
static void doA() { B b = new B(); } // NG
int field;
class B {
int doB() { return A.this.field; } // OK, 名前の衝突がない限り、"A.this" は不要
(2) static なインナークラスの場合
class A {
static class B {
はっきり言って別々のクラスとかわんね
861 :
842 :2007/05/26(土) 18:05:52
Javaで作られたアプリケーションは、JREなしで実行することはできませんか?
gcj まあ、libgcj.dllがJREだとでもいえるけど
>>862 基本的に無理。応用的には標準JDK 使わずに gcj とか Excelsior JET みたいな
AOTコンパイラを使えばできるけど、実行ファイルのサイズはでかくなる。
>>863 ,864
そうですか。まぁそのためにはCや何かで書くしかありませんよね。ありがとうございました。
866 :
デフォルトの名無しさん :2007/05/26(土) 22:33:44
うちのコピーしてく?
JREを埋め込んでexeつくるソフトって知ってますか?
>>868 JETとかgcjとかじゃなくてSunのJREをうんぬんするやつは知らない。
でも環境をWindows固定にするならEXEにこだわるより、Windowsの流儀でJREを
インストールしたりスタートメニューやデスクトップに起動用のアイコン登録
したりするインストーラーを作った方がユーザにやさしいんじゃないかと思う。
おれはこの手のパッケージャとしてNSISを使ってる。
そうじゃなくてAOTに幻想を抱いているならあきらめたほうがいい。以前
gcj以外のIBMやJETといった商用AOTのベンチマークとったけど速度的なメリットはない。
JDKがダウンロード出来ないのですが、これは最近ずっとなのでしょうか?
明らかにトラブってるな ubuntuとかならパッケージであるが、他はわからん
俺は今朝JDK 6u1をダウンロードしたところ。 俺の「最近ずっと」の定義(一日以上)からすると最近ずっとではない。 けど、今見たら確かに FATAL ERRORとか出てるね。 1.4.2u14/1.5.0u11/6u1のwindows-i586-pなら持ってるけど、 再配布っていいんだっけ?
6なら大丈夫だと思うが、確認方法がわからん
あまりこの状況が続くとJREにウィルス組み込まれて再配布されそうだな
ダウンロード出来ねぇ・・・orz
開発環境だけってならEclipseでも落とせば?
>>877 特定環境でトラブるからってOSから入れ直したのでJREすらないorz
>>878 Windows でJava5.0 でいいか?
884 :
デフォルトの名無しさん :2007/05/27(日) 14:50:09
現在のシステム日付を取得して画面表示するにはどういったソースを書けばいい? 誰か教えてください。
現在のシステム日時を取得して画面に表示し続けるソース final java.util.Date date = new Date(); while (true) { date.setTime(System.currentTimeMillis()); System.out.println(date); }
import java.util.Date; import java.text.DateFormat; public class DiplayDate{ public static void main(String[] a){ Date dt = new Date(); DateFormat dfm = DateFormat.getDateTimeInstance(); System.out.println(dfm.format(dt)); } }
素数判定プログラムを組んだのですが、エラーが出て動きません。でも、デバッグしてみるとfor文が回っていないようです。どう改善すればよいでしょうか? public static void main(String[] args) { BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); try { System.out.println("数を入力してください"); String line=reader.readLine(); int meth=Integer.parseInt(line); if(meth<=1){ System.out.println("入力された数字"+meth+"は素数ではありません"); }else{ int cnt=0; for (int i=0; i<=meth; i++) { if(meth%i==0) { cnt++; } }
892 :
891 :2007/05/27(日) 17:45:46
if(cnt==2){ System.out.println("入力された数字"+meth+"は素数です"); }else{ System.out.println("入力された数字"+meth+"は素数ではありません"); } } } catch(IOException e){ System.out.println(e); }catch(NumberFormatException e){ System.out.println("数字に入力できるのは実数です"); }
893 :
デフォルトの名無しさん :2007/05/27(日) 17:48:02
JAVAで困っているんですけど… 平均点以下の人の人数ってどうやって出すんですか? public static void main(String[] args) { int Wt[] ={45,59,98,60,78,54,90,30,50,67}; int sum = 0; for (int k=0; k<=9;k++) { sum = sum+Wt[k] ; } int average_Wt = sum/10; System.out.println("平均="+average_Wt); ここまでできたのですが…
基準が得られたんだから、もう一回回せばいいじゃない。 あとここは宿題スレじゃないよ。
>>891 for (int i=0; i<=meth; i++)
↓
for (int i=1; i<=meth; i++)
>>891 for (int i=1; i<=meth; i++)
デバッグする余地も無い
>>893 念を押しとくがそんなもんで宿題スレになんか行くなよw
>>894 出来れば1回のループで判断してしまいたいのです
コンパイル時の「シンボルが見つけられません」っていうエラーはどういう意味ですか?
>>900 プログラムに書かれているシンボルをコンパイラが理解できなかった時に出るエラー
パッケージ名とかクラス名とかメソッド名とか変数名とかがたぶん間違っている
importしていないとか完全名でないとかでクラス名が解決してないんじゃないの?
もしくは定義していないクラスや変数を使った
>>やくざさん 平均を得た後に、得られた平均と各データを比較して "以下"の数をカウントするしかない。一回では無理。 俺が未知の何かを使って実現できたとしても、逆に複雑になる予感。 あとは、配列の中身はともかく1, 0以外の定数は(ry int Wt[] ={45,59,98,60,78,54,90,30,50,67}; int sum = 0; for (int k=Wt.length -1; k>=0; k--) { sum += Wt[k]; } int average_Wt = sum / Wt.length; System.out.println("平均="+average_Wt);
Bツリーとか構築して 格納しながら平均出してけば ループは1回で済むかもね
>>890 ありがとう
import java.util.Date;
import java.text.DateFormat;
public class DiplayDate{
public static void main(String[] a){
Date dt = new Date();
DateFormat dfm = DateFormat.getDateTimeInstance();
System.out.println(dfm.format(dt));
}
}
import java.text.DateFormat; をimport java.text.SimpleDateFormat;にしたい場合、ソースは変えればいい?
906 :
905 :2007/05/27(日) 19:04:37
ソースは変えればいい? 訂正 ソースはどう変えればいい?
>>906 せめて、
SimpleDateFormat dfm = new SimpleDateFormat();
とでも打つってくらいはしろよ。
この手の連中が自分の給料とほとんど大差ない金貰ってると思うと反吐が出る。
>>906 バカは手と頭を動かさない
>>907 厨学生の小遣い程度しかもらってないのか?
それはもう転職する!
909 :
デフォルトの名無しさん :2007/05/27(日) 20:22:46
初心者です。 分岐条件のwhile文あたりまで進んだ者です。 「繰り返し実行する」の条件で i++; を i+2; とかにできないもんでしょうか? 課題で 2 4 6 と表示せよ といった問題がでて困ってます。 どなたか教えてくれないでしょうか?
2 足せばいいじゃん。
下記の作業で例えば10を入力すれば1〜0までが表示されますよね? この表示結果が縦に1〜0が表示されるのですが、改行せずに横に1〜0までを表示させるためにはどう改善すればいいのでしょうか? try { System.out.println("数を入力してください"); String line=reader.readLine(); int x=Integer.parseInt(line); for(int i=1; i<=x; i++){ System.out.println(i%10);}}
あえていうならi+=2とかか?
913 :
909 :2007/05/27(日) 20:37:39
>>910 こんな、感じのコード書いてみたんですけど
class Kadai01{
public static void main(String[]args){
int i;
i=2;
while (i<7);
System.out.println(i+"回目繰り返す");
i+2;
}
}
i++;
を
i+2;
にしたらコンパイルエラーがでるんですけど。
println の ln は line の略。 ということは・・・。
916 :
909 :2007/05/27(日) 20:47:50
>>913 頼むから開発会社に就職はしないでくれよ。
あと1冊くらい簡単な本読んでくれ。
i = i + 2;
>>913 代入とか演算子とかわかってるか?
int a = 1 ;
System.out.println(a) ;
System.out.println(a+1) ;
System.out.println(a) ;
System.out.println(a++) ;
System.out.println(a) ;
ってやってみ
スレとは関係ないけど素数判定はルートNまででOK
ルートNまででOKな理由は数学的センスないと解らないから、N/2まででいいと思う。 NがN/2より大きい数で割れないことくらいは解るからw
Nを合成数と仮定すると、Nは少なくとも約数を2つ以上持つ。 Nの約数を2つ選び、pとqとすると、明らかにp*q <= Nである。 これより、p、qの少なくとも一方はルートNより小さい(大きいと上の不等式が成り立たない)
一般人の平均レベルからすると
>>923 が言えるのは数学的センスがある方だと思うぜ
>>923 いや、手放しで素晴らしいと思う。
でも、そう答えられるのは数学センスだと思われw
数学的センスのない人は、「〜と仮定すると、」から出てこないから。
927 :
デフォルトの名無しさん :2007/05/27(日) 23:18:38
Javaの発音はJava(↓)なんですか?Java(↑)なんですか?
>>923 の前提って教科書かなんかで見た事あるぞ。
929 :
デフォルトの名無しさん :2007/05/27(日) 23:23:11
>>928 そりゃどこの教科書にも呪文のように載っているし、証明方法なんて一緒だもの。
>>923 合成数24の約数である6と8を考える
6*8 = 42 > 24 となるため、明らかに p*q <= N でない
932 :
931 :2007/05/27(日) 23:30:17
すま、途中送信 つまり、pとqの条件はNの任意の約数じゃなくてp*q = Nとなるような数、ってこと
ちょっと待てよ。 するってえと約数てのは何なんだ? わからなくなってきた。
934 :
デフォルトの名無しさん :2007/05/27(日) 23:41:27
>>932 いんや、この場合はpとqを約数と限定して問題ない。
何故ならば、合成数と仮定した場合にpとqのどちらもルートN以下の約数であることが証明できればいいから。
不備があった N=p*q*r (p,q >= 2, r >= 1) と読み替えてくれ
つーかスレ違いなのでここまで JDK6u1ほしーよーOTZ
>>934 本質を読め
約数に限定することが問題なんじゃなくて、任意の約数であることが問題なんだよ
それを許すと931のような反例が出る
合成数ならば自身の約数の積として表せる
このことをN = p*q (p <= q)とおくと、pが取りうる最大の値はp = qであるようなp
このとき N = p*p ⇔ √N = p となり、√Nまで調べれば合成数かどうか判断できる
スレ違いなんでここまでに
938 :
937 :2007/05/27(日) 23:59:45
同じものを掛けてNになる正数aよりも大きい自然数pでNが割り切れるなら、 q=N/pでもNを割り切ることができ、qはaよりも小さい自然数になる。 つまりNを割り切る自然数は、a以下の自然数の範囲を全て探せば、 aより大きいものはNを探し出したもので割ることで全て得ることができ、 全てを網羅することができる。
おまいら、やっぱセンスあるって
それより野球しようぜ
扇子と野球でリロード大会スレ。
>>939 その「同じものを掛けてNになる正数a」こそNの正の平方根 √Nってことか。
944 :
デフォルトの名無しさん :2007/05/28(月) 00:07:51
誰かセッター/ゲッターを分かりやすく解説して。本読んだけど今一分からん
投手の放ったボールを打つのがバッター(打者)。 放たれた飛球を捕ったのは偶々センター(中堅)。
ボコ ☆
( o・-・)っ―[] /
[ ̄ ̄ ̄] (´・ω・`)
>>945
public byte n; というクラスメンバがあるとする。 これは -128 〜 127 までの値をとるよね? でもそのクラスは実はテストの点数クラスで、 byte を 0 〜 100 の間でしか取れないようにしなくてはいけない。 よって、private byte score; と、アクセスレベルを絞って、 setScoreというセッターで 0 〜 100 までしか、その値をとらないようにする。 ゲッターってのは、一般には単に隠蔽された変数をダイレクトに返すだけ。 getScore() { return score; } こういうのをカプセル化という。ごめん、これが限界w
ゲッターは隠蔽された変数をそのまま返すとせっかくのカプセル化が破壊される場合があるので注意。
>>947 の場合のような基本型とかイミュータブルな参照型はたぶん大丈夫だが、
そうでない場合は変数そのものではなく、そのコピーを返すようにした方がよい。
でないと、セッターを介しないで隠蔽されたデータを変更できる抜け道を作ることになる。
たとえプログラムが異常終了しようと、一貫性を守ったまま死ぬぜ! という武士の志のがカプセル化の一面 void setScore(int score) { if(score < 0 || 100 < score) { thorw IllegalArgumentException(); 暴走して一見正しそうな間違った計算結果を出したり データを壊されるよりは、 プログラムが異常終了する方が1000万倍まし
nullを持ったらおかしいようなクラスで 参照型の変数のセッターではnullだったらnull例外を出す それをしないと全然違うところ(その変数使おうとしたところ)で ぬるぽ起こして死ぬ そしてどこでnullであったかを調べるのが大変
>>944 JavaBeansにはプロパティという概念がある
たとえば、PersonというクラスにStringのnameというプロパティがそのクラスにあるとする
ここでJavaBeansの約束事として、
nameというプロパティを読み出すのはgetName()
書き込むのはsetName(String value)
ということが決まっている
だから、setName(String value)がなければ、
リードオンリーのプロパティになる
場合によっては書き込み禁止でエラー出ることもある
で、
ゲッターとは値を取得するメソッド(getName)を指し
セッターとは値を設定するメソッド(setName(String))を指す
それはbeanプロパティのアクセッサの話だろ。 そんな後付け仕様の事を聞いてるんじゃなくてプログラミング言語一般に通じる ゲッタとセッタの意義がわからないって話じゃね? カプセル化という概念があって自分が持つ情報には外から自由に触らせないためにryって感じに答えた方が良いかと。
>>952 ならお前が(ry
…というのは置いておこう。
メソッドにしとけば処理を挟める。するとどうなるか?
って視点で考えるといいよ。
…と俺からはこの程度のアドバイスにしておくわ
954 :
デフォルトの名無しさん :2007/05/28(月) 09:40:24
よろしくお願い致します。
アプリケーションサーバーのGlassFishをリモートのLinuxで起動して、
管理画面、Webアプリなどは動作が確認できたのですが、
スタートアップ時に表示される中の
Standard JMX Clients (like JConsole) can connect to JMXServiceURL:
[service:jmx.rmi://jndi/rmi://www.xxx.com:8686/jmxrmi]
として出るURL(service:jmx.....jmxrmi)を指定して、JConsoleでの接続を試
みましたが、
--接続に失敗しました:再試行しますか?--
と出て、これがどうしてもつながりません。
IDとパスワードは、4848ポートの管理画面と同じものを入力しています。
ブラウザから、
http://www.xxx.com:8686/にアクセスすると白い画面が 出るので、ポートへの接続自体は問題ないと思われます。また、念のため、
こちら側のファイアウォールも切っています。
サーバー:
Linux
Sun Java System Application Server Platform Edition 9.0
JDK1.6
クライアント:
WindowsXP
JDK1.6
です。何か、思い当たられることがありましたらご教授頂ければ幸いに思います。
955 :
954 :2007/05/28(月) 09:59:23
956 :
デフォルトの名無しさん :2007/05/28(月) 15:40:36
957 :
デフォルトの名無しさん :2007/05/28(月) 15:45:16
す・・・すいません。キーボードがおかしくなってしまって、書きかけが投稿されてしまいました。
<html>
途中省略
<a href="
http://xxxx1 ">AB1</a>
<a href="
http://xxxx2 ">AB2</a>
<a href="
http://xxxx1 ">AB3</a>
</html>
というhtmlからAB1の<aタグのリンク("
http://xxxx1 ")を取得するにはどうしたらよいでしょうか。
getElementsByTagName("a")で<aタグの列挙はできたのですが、AB1であることを調べる方法がわかりません。
958 :
デフォルトの名無しさん :2007/05/28(月) 15:52:02
例えば if(time==20){//2秒の時 face._rotation -= 30;//faceの角度を-30 righthand._rotation -= 20;//righthandの角度を-20 lefthand._rotation -= 10;//lefthandの角度を-10 rightfoot._rotation +=5;//rightfootの角度を+5 leftfoot._rotation -=4;//leftfootの角度を-4 というような物をテキストファイルからStringで読み込んだとして rocationの部分だけをrotと書き変えてif(time==20){//2秒の時 face._rot -= 30;//faceの角度を-30 righthand._rot -= 20;//righthandの角度を-20 lefthand._rot -= 10;//lefthandの角度を-10 rightfoot._rot +=5;//rightfootの角度を+5 leftfoot._rot -=4;//leftfootの角度を-4 と出力するようにするにはどうすればよいのでしょうか?
>>958 単純に全てのrotationをrotに置き換えたいのなら
置き換え後文字列 = 置き換え前文字列.replaceAll("rotation", "rot");
>>957 質問がメソッド名だけで情報が少ないから当てずっぽう
aエレメントが取れたら、その最初の子ノードがAB1とかAB2とかのテキストノード
aElement.getFirstChild()でたぶん取れる
そのノードの文字列そのものはNode#getNodeValue()でいけるはず
コマンドプロンプトを開いたらC:\Documents and Settings\〜になっているのですが このデフォルトのパスを変更するにはどうやったらいいんでしょう? javaファイルをCドライブのjavaフォルダに入れていて開くたびにcd C:\javaと打って 毎回変更しているのですが面倒なので開いたらC:\javaの状態になっているようにしたいです。
>>961 コマンドプロンプトのショートカットでC:\javaを作業フォルダに設定して
おけばよい。(プロパティのショートカットタブに「作業フォルダ」の欄がある)。
スレちがい、いたちがいだから。これ以上の質問は受け付けません。
>>1 を読め
963 :
デフォルトの名無しさん :2007/05/28(月) 21:03:55
簡単な質問です。java初心者なのでお許しを。 javaを開発するためには何を入手すればいいのでしょうか。 sunのページには何度かいったのですが、どこからダウンロードすればいいかわかりません。 どなたかご教授お願いします。
javaで開発する、ってことだよな? いきなりsunに行かずに、「基礎」「入門」あたりのキーワードで検索 よさそうなページをみつけて、そこの手順に沿ってダウンロードすればいい
967 :
デフォルトの名無しさん :2007/05/28(月) 21:20:06
public class H { public static String func(String arg) { return arg; } } と public T { public static String func(String arg) { String dest = arg; return dest; } } って違いがあるのでしょうか。スレッドセーフかの視点でみて。
,-,,,,、 ,-,,,,_ ,,,,,,,、 ,,,,,,_゙'-,. "'i、 .,,,,,,,、 ,,,,,,,゙'-、^'i、 .i,¬ー-、 ゙''i、`\ \.`''-\,,l゙ `'i、 `''i、 ‘'-,`''-\,,l゙ ^'i、 ,) 丿 ,l,_,,,,,,,― |i、 } 丿 Z_,,,,,,-ヘヽ、゙l | .| __ ,/ ,,-----=@,,,7゙"` ,/ ,,-----=@,,,)゙″ | | .,,-'",,,,,,、`'i、 ,/`./ / 丿 / .,/` ,l゙ 丿 |゙ヽ,,,―" `゙'ュ‐゙_,/゛ | | .,/.,,/` /` 丿 ,/ ,/ ,/ 丿 \,,,,-‐,! '`,/ .| l゙ ,,-",,/ 丿 ,i´ ,/_,/ 丿 ,i´ 丿 ,,,i´ ,! | i彡‐" ,/` ,/` ィ,ン'" / ./ ,/ .| | | ,,i´ ./ ,,‐`./ ,/`.,┤ | | | ./゙| .,/ .,/ ,/ .,/ / 丿 | .| { { .,/ ,l゙ ,,/ ,/` ,,/ ,/` / ,、゙'-,| l゙ | }, ._/.ノ _,/゙,,/゛ _,/゙,,/゛ l゙ .,/`\ | ヽ,_ ゙"゛,,/ (ン'"゛ (ン'"゛ `″ ゙l 丿 `゙゙゙゙゛
969 :
963 :2007/05/28(月) 21:33:15
有り難うございました。 皆さんのおかげで解決できました。
>>968 ぐぐる用語でも教えてください。
スタックフレームクラス遣えばなんとか実験できそうなんですが、試行錯誤中
>>968 {???}
ζ
!(+Φ_Φ)つ√ζ
+⊂. + 〆∂ {Ж}
"〆∂∂
〆〆
.:"
973 :
デフォルトの名無しさん :2007/05/28(月) 22:12:51
javaで共有メモリの使い方ってどうやってやるのでしょうか。
無いからメモリマップドファイルで代用して。
Javaの発音はJava(↓)なんですか?Java(↑)なんですか?
Javaだね、Java (=ω=.)
977 :
デフォルトの名無しさん :2007/05/28(月) 23:19:00
/*<APPLET CODE="GUI.class" WIDTH=500 HEIGHT=500> </APPLET> */ の数値を変えてもアプレットビューアの大きさが変わらないのはなぜですか?
スレとは関係ないけど素数判定はルートNまででOK
>>967 後半は、クラス定義がないから動かんな。
は、さておき。
String dest は、最適化で削られる可能性ないか?
Java始めた初心者ですが、質問です Java について言及しているサイト等で クラスSomeClass のメソッドsomeMethod を表すのに SomeClass#someMethod という書き方をしているのを何回か見かけました これはJavaで標準に用いられている表現なのでしょうか それとも(オブジェクト指向の)言語一般に用いられているもの あるいは他言語でよく使われる表現を、そのサイトの執筆者がたまたま用いたものなのでしょうか? メンバ変数someField、メソッドsomeMethod があるとして それらを示すのにJavaで標準的に用いられている表現がありましたら教えてください
981 :
デフォルトの名無しさん :2007/05/29(火) 00:10:58
>>982 レスありがとうございます
「#」が用いられるのは、単にURLの #フラグメント の部分をそのまま
受け継いだ影響ということでしょうか
説明する変数/メソッドの種類や特性によって、何かしらの表記のルールが
あるのかと思っていました
ありがとうございました
984 :
967 :2007/05/29(火) 00:52:57
985 :
967 :2007/05/29(火) 00:56:33
>>981 >最適化で削られるも考えないでください><
無意味。コンパイラやVMによってガンガン削られる
>staticメソッドはクラスで一つって言葉の解釈の仕方がよく分からないのです。
インスタンスを幾つ作っても共有されるってこと
>関数はヒープ上にあり
わけわかめ
>引数はスタックに詰まれる
OK
>func内のdest変数は"B"となって処理される?
わけわかめ
>>983 インスタンスメソッドでは#を使ってクラスメソッドでは.を使うもんらしい。
>>982 Rubyも#を使っている。
>>987 javadocの慣習で言えば、どっちも#だけど。
#の右側にインスタンスメソッドorフィールドでも関係なしにクラス名がくるぐらいで。
989 :
デフォルトの名無しさん :2007/05/29(火) 05:17:10
現在、大学で情報系の学部に在籍している者です。 夏休みにソフトウェアを作っている会社でインターンシップをしようと思い、使われている言語がJavaという事で、 プログラミングのクラス、自分でやさしいJavaという本を読んでで基本は学んだのですが、会社の方から見せてもらった サンプルコード(実際に作られているソフトのサンプルコード)と自分で勉強した範囲を 遥かに凌駕している内容で、正直あせっています。 入門書のレベルから実際にプロの方々が書いているコードのレベルに到達するには、 どのように勉強をしていけば良いのでしょうか?
990 :
デフォルトの名無しさん :2007/05/29(火) 05:18:13
現在、大学で情報系の学部に在籍している者です。 夏休みにソフトウェアを作っている会社でインターンシップをしようと思い、使われている言語がJavaという事で、 プログラミングのクラス、自分でやさしいJavaという本を読んでで基本は学んだのですが、会社の方から見せてもらった サンプルコード(実際に作られているソフトのサンプルコード)と自分で勉強した範囲を 遥かに凌駕している内容で、正直あせっています。 入門書のレベルから実際にプロの方々が書いているコードのレベルに到達するには、 どのように勉強をしていけば良いのでしょうか?
散々既出だけどやさしいJavaは役に立たない。 あれはプログラムを全く知らない素人がちょっと触れるようになる為の本。 入門書以前と考えるべき。 まずは入門書をやる。 Core Java、Head First Java、独習Javaあたりがよく勧められる。 分量的にも内容的にもヌルい本じゃないけど、このあたりを1冊終わらせたならば、入門レベルを卒業と言えるんじゃないかね。 やさしいJava氏ねよ
>>990 つか、情報系の学部に行く前にいくつかの言語に精通してるのが
普通なんだが。
>>992 それを言ったらもう手遅れってことじゃないですかw
>>989-990 そんなことはどうでもよくて
入門書を読んでる間はいつまでも入門者
他人が書いたソースを読んでデバッグできれば一人前
君はいち早くそれに気付いたのだからむしろ幸運だよ
とにかく色んなソースを読み・書きまくる
まだ若いんだから焦る必要はない
>>987 > インスタンスメソッドでは#を使ってクラスメソッドでは.を使うもんらしい。
これは初耳。へー。
情報源を是非教えて頂きたい。
>>990 勉強してるうちは文法、言語仕様と、Javaならオブジェクト指向をしっかり
頭に叩き込んでおけば大丈夫。
それには自信があるなら、あとの違いは知ってるクラスの量かな。
言語学っぽくいうなら語彙量ってやつ。
こればっかりは経験がモノをいうので、色々作りまくってください。
ちなみに俺が最初に買ったJavaの本はEffective Javaでした…
>>990 Jakarta Commons の本とかひととおり見るといいよ
>>983 javadocに関してはURLやURIのフラグメントから来ている。
一般的なアクセス演算子としては上に上がった通り。
>>992 最近の情報系は
>>990 みたいな奴ばっかでPL使えるのは少ないよ。
情報系なのにPC系雑誌読むか、PCの話したらヲタ扱いされたって伝奇もある。
中にはマイコン制御とか、組み込みとか、ドライバ自作とか、生粋のギークも居るが絶滅危惧種だね。
そういう連中は実力にあった場所に、それぞれ散っていくので存在自体が霞だよ。
今の情報系とか専門生はギークとのコネはないしね。
まあ、手遅れってのは笑い事じゃないんだが。
> PCの話したらヲタ扱い 笑い話にならんな、マジで。 とは言え、会社でも休日に勉強とかしている方が少数派だし、雑談で技術の話を振るとヲタ扱いされるわけだもんな。
999 :
デフォルトの名無しさん :2007/05/29(火) 14:11:54
コンパイルして実行すると、 Exception in thread "main" java.lang.ArrayIndexOutOfBounds:0 というエラーが出るんですが、これはどういうことでしょうか?
すみません。自己解決しました・・。
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。