ネタ心者歓迎!今更ながらにJava相談室 その2
■ このスレッドは過去ログ倉庫に格納されています
00011
NGNG| 先輩!Javaの質問はこのスレでしましょう。
\
 ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( ・∀・) ∧ ∧ < カキコする前に>>2-10をチェックしとけやゴルァ!!
( ⊃ ) (゚Д゚ ) \_________________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
 ̄ ======= \
>>2 過去スレ
>>3 Javaの基礎がわかるリンク
>>4 サーブレットとかJSPとかサーバサイドとか携帯電話
>>5 Javaを撲滅させたい方、死滅を心配してる方用
*諸般の事情によりリンクがずれる事もあります。
0153148
NGNG初期化出来ませんです。
0154デフォルトの名無しさん
NGNG噛み砕いて教えてもらえますか?
0155デフォルトの名無しさん
NGNGX1 x1;
X2 x2; <-ここで初期化されてない
x1 = new X1( x2,1 ); <-でもここでx2を使っている
x2 = new X2( x1,2 );
が問題じゃないんですか?
0156デフォルトの名無しさん
NGNG0157デフォルトの名無しさん
NGNGどう書き換えても初期化できないソースなのでした。
0158デフォルトの名無しさん
NGNG「コンパイルできない」とかいったほうがはるかに話がわかりやすい。
0159デフォルトの名無しさん
NGNGクラスはテンプレートであってそれから複製されるインスタンスは複数ある.
インスタンス変数は個々のインスタンスに属している為,一つしかないクラス
から
呼び出せる訳はない.
と言った感じでしょうか.
0160デフォルトの名無しさん
NGNGカーソルの絵を変えるにはどうするんですか?
単にmouseEnteredじゃ、そのコンポーネントに入った時だし、
mosueMovedじゃ、マウスが動いてる時しか変化しませんよね?
mouseEnteredメソッド内で範囲指定して・・というのは意味無いですよね?
0161デフォルトの名無しさん
NGNG0162がばろん@Mたんちゅきちゅき
NGNGmosueMoved()とsetCursor()を用います。
「あるコンポーネント」にmouseMoved()を実装。
このメソッドを用いてマウスカーソルの座標位置が変化するごとに、
その座標位置が「ある範囲内」か、どうかチェック。
もしマウスカーソルの座標が「ある範囲内」に入っていたら、
マウス「カーソルの絵を変える」。
もしマウスカーソルの絵がデフォルトのものではなく、
なおかつ「ある範囲外」ならデフォルトの画像にもどす。
// たぶん、こんな感じだとおもう。
// もっとエレガントな方法が、あるのかも知れないけど。
0163バイク並みの自転車
NGNG携帯I-MODE用のJAVAで、簡単な問答プログラムを作ったのですが、
最初に出た問題が後でまた出ます。かぶらせない方法は「ソート」
させて頭から解かせれば良し」と言ってますが、仕様書のSORTの
使い方も解らず。たっけて下さいな。
あとこれがソースです。ソース名jyukugo.java
(page1/7)
import com.nttdocomo.ui.*;
import java.util.*;
public final class jyukugo extends IApplication {
public void start() {
Random R = new Random();
int a = Math.abs(R.nextInt() % 16);
int b = Math.abs(R.nextInt() % 16);
int c = Math.abs(R.nextInt() % 16);
int d = Math.abs(R.nextInt() % 16);
int e = Math.abs(R.nextInt() % 16);
int f = Math.abs(R.nextInt() % 16);
int g = Math.abs(R.nextInt() % 16);
int h = Math.abs(R.nextInt() % 16);
int i = Math.abs(R.nextInt() % 16);
int j = Math.abs(R.nextInt() % 16);//問題をランダムに表示
0164バイク並みの自転車
NGNGint end = 0;
int tokuten = 0;
int n = 1; //何問目か確認
int answer = 0;
//問題データー
String[] mondai = {
"順風満帆の読みは「じゅんぷうまんぽう」?",
"一石三丁は存在する?",
"そもそも四字熟語自体が四字熟語?",
"苦心惨憺とは困りながら工夫を凝す事?",
"矮子看戯の読みは「かんしかんぎ」?",
"跳梁跋扈の読みは「ちょうりょうばっこ」?",
"日常坐〇。〇には俄が入る?",
"肉食妻帯の反対は菜食独身である",
"放歌高吟とは叫び歌う事?",
"内柔外剛とは虎の衣を〜と同じ?",
"臥薪嘗胆とはひたすら耐え忍ぶこと?",
"邂逅相遇とはめったに出会わないこと?",
"紅毛碧眼とは外見がおかしい事を指す?",
"国士無双は「こくしむそう」と読む?",
"孤軍奮闘と孤立無援。意味は同じ?",
"威風凛凛の読みは「いふうていてい」?"};
short[] kaitou = {0,0,0,1,0,1,0,1,1,0,1,0,0,1,0,0};
0165バイク並みの自転車
NGNG= {"解説:順風満帆はじゅんぷうまんぱんと読みます",
"解説:一石三丁はただの造語です",
"解説:四字熟語は四文字熟語の略語です",
"解説:合っています。くしんさんたんと読みます",
"解説:わいしかんぎです。適当に合せる事です",
"解説:読みは合っています。悪者がのさばる事です",
"解説:入るのは臥です。",
"解説:あっています。仏法用語です。",
"解説:あっています。無法という意味でもあります",
"解説:同じです。柔道の言葉です",
"解説:あっています。昔の中国は越の国の言葉です",
"解説:偶然の一致の事です。",
"解説:外人のことを指します",
"解説:満貫払いです。",
"解説:少し違います。一人かそうでないかです",
"解説:いふうりんりんと読みます"};
Dialog dg1 = new Dialog(Dialog.BUTTON_OK,"四字熟語");
Dialog dg2 = new Dialog(Dialog.DIALOG_YESNO,"四字熟語");
dg1.setText("四字熟語テストを始めます。全10問です。");
dg1.show();
dg1.setText("〇×はYES_NOで答えてください");
dg1.show();
0166バイク並みの自転車
NGNGdg2.setText("第" + n + "問 " + mondai[a]);
if(dg2.show() == dg2.BUTTON_YES){answer = 1;}
else{answer = 0;}
if(answer == kaitou[a]){tokuten++;dg1.setText("正解!");dg1.show();}
else{dg1.setText(kaisetu[a]);
dg1.show();}
n++;
dg2.setText("第" + n + "問 " + mondai[b]);
if(dg2.show() == dg2.BUTTON_YES){answer = 1;}
else{answer = 0;}
if(answer == kaitou[b]){tokuten++;dg1.setText("正解!");dg1.show();}
else{dg1.setText(kaisetu[b]);
dg1.show();}
n++;
で、変数がjまで続きます。
dg1.setText("あなたの得点は" + tokuten*10 +"点です。");
dg1.show();
tokuten = 0;
n = 1;
dg2.setText("もう一度同じ問題をやりますか?");
if(dg2.show() == dg2.BUTTON_YES){end = 0;}
else{end = 1;}
} while(end == 0);
terminate();}
}
0167デフォルトの名無しさん
NGNGトランプか、カードゲームまたはランダムに問題を出すものでもなんでもいい。言語もなんでも
いいので、とにかくアルゴリズムを調べてみれば?
0168
NGNG間違ってる。
0170バイク並みの自転車
NGNGれすありがとうございます。ランダムに問題を出すのは
結構確認しております。残念ながら使える言語がJAVAの
みなのでアルゴリズムはフリーウェアのみ確認しています。
それでランダムに出す方法は解ったのですが、出題した
問題がかぶります。オープンソースの所もあんまりないし、
Iアプリは携帯でしかダウソできないのよ・・・どうしよう・・・
0172バイク並みの自転車
NGNGすみません。そう言うつもりではありませんでした。
題材に1から16の文字をあてて、Math.abs(R.nextInt() % 16);
これを使って適当に問題を引っ張ってくる事を10問繰り返す
プログラムです。当然かぶります(T_T)。
一からリファレンスなどを見ながら作って、流用、盗用
はしていないので作っていると思っていますが・・違うのですか?
0173バイク並みの自転車
NGNG一度出した問題かどうか覚えておく
なるほど。たとえば一度6番目の問題が出題されて、
次の問題とかで乱数を出して6が出たらもう一度乱数を出す。
これを繰り返す。これでOK?
0174デフォルトの名無しさん
NGNG取り出すことってできるのでしょうか?
例えば、1行目を取り出して配列aに入れて、
2行目は,別の配列に入れる、など。
0175エッチマン
NGNGアバウトにそんな感じ。
いちいちやってるとめんどうだから
1からxまで偏り無く乱数を返すクラス
を作って、その中でやるようにしたい
RandHoge ero = new RandHoge(x);
int a = ero.toridasi();
みたいな使いっぷりのクラスを
作ってみたら?
中身の実装は1案2案どっちでもいいし
使う側は気にしなくていいし ←すげー重要
0176バイク並みの自転車
NGNGさんくす。
早速組んでみます。
0177デフォルトの名無しさん
NGNG> れすありがとうございます。ランダムに問題を出すのは
> 結構確認しております。残念ながら使える言語がJAVAの
> みなのでアルゴリズムはフリーウェアのみ確認しています。
言語はなんでもいいって言ってるじゃん。
ソースぱくるなら JAVA からしかないけど、アルゴリズム読むなら、JAVAじゃなくたって
perl だって、 shellscript だって、 VB だって、 C だって、日本語だって、英語だっていい
じゃん?
結局、JAVAじゃなきゃ駄目だってんなら、みなさんから回答うけたところで「どうやって組
むんでしょうか?」ってオチになっていくような気がするんだけど。
0178デフォルトの名無しさん
NGNGpublic void trap( Throwable e )
{
StringWriter out = new StringWriter() ;
e.printStackTrace( out ) ;
}
スタックトレースを文字列にしたいの、
とりあえず、StringWriterってのを、与えみたんだけど、
だめだった。
オスエテェ〜
0179デフォルトの名無しさん
NGNGで、何がどう駄目なのか言ってみ
http://java.sun.com/j2se/1.3/ja/docs.html
0180デフォルトの名無しさん
NGNGfor(i=0;i<n;i++){
hogehoge
}
}
他人のソースを見て勉強しているのですが
for(;;)はどういう意味でしょうか?
0182178
NGNGえらそぉ〜な、知ったかバカだなぁ〜、すっこんでろな。
でも、めっかた。
public void trap( Throwable e )
{
StringWriter sw = new StringWriter() ;
PrintWriter out = new PrintWriter( sw ) ;
e.printStackTrace( out ) ;
}
こうだったよ。
0183いまさらパソコン親父
NGNG0184エッチマン
NGNGG型トラクター売ります ってーとゴルゴ呼べるんだっけ?
0186デフォルトの名無しさん
NGNGC++の本にご丁寧に載っていたな。私はwhile(1)の方が好きだけど。
0188だめ板住人
NGNGstatement;
}
無条件にstatementを繰り返すループ.
0189デフォルトの名無しさん
NGNGガベージコレクタがオブジェクトを破棄するタイミングが不定なため。
いつ実行されるかわからない上に、もしかすると実行されないまま
終わるかもしれないけど、それでも良ければ、
代わりにファイナライザ使ってください。
0190デフォルトの名無しさん
NGNGchar aaa = 'あ';
とやると
Invalid character constant.
とエラーがでます。
なぜなのでしょうか?どなたかお教えいただけますでしょうか?
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNG少なくともCではchar型の場合、「あ」みたいな2バイト文字は文字列だぞ。
きっとJavaも同じ理由でしょう。
0193191
NGNG0194デフォルトの名無しさん
NGNGJava は Unicode だから。
0195デフォルトの名無しさん
NGNGJDKのバージョンは1.2で。
ソースの文字コードはEUCです。
ちなみに、
System.out.println( "はろー" );
はコンパイルもと通るし、実行も出来るんですが・・・・
0196デフォルトの名無しさん
NGNGコマンドラインオプションで指定できたはず。
0197190
NGNG-D オプションでしょうか・・・・?
そのあとなんて書いていいか分からない・・・・
0198デフォルトの名無しさん
NGNG0199デフォルトの名無しさん
NGNG↓参照
http://java.sun.com/products/jdk/1.2/ja/docs/ja/guide/internat/encoding.doc.html
0200190
NGNGおおおお!できました!大感謝です。
これってどっかで初期設定出来るのでしょうか・・・?
solarisではなんでOKだったのか(インストールは私じゃないので・・・)
0201デフォルトの名無しさん
NGNGプラットホームごとにJREがデフォルトで
エンコーディング決めうちしてんだよ。
何も指定しないとデフォになる。
Solarisなら当然デフォがEUCだろうな。
0202デフォルトの名無しさん
NGNG> -D オプションでしょうか・・・・?
って思った理由を聞きたいです。いや、あおりでも冷やかしでもないです。
参考に・・・
0203sagfe
NGNG0205デフォルトの名無しさん
NGNGで、大多数のメソッドがabstractなんだけど、例えば、
Graphics#drawOval()とかを呼んだ時に実際に楕円を描いたりするの
はどこでやってるんでしょうか?
0206デフォルトの名無しさん
NGNG一時的な閉鎖?
0207デフォルトの名無しさん
NGNGAPIライブラリ内部のどっかの実装クラス。
Graphicsクラスインスタンス(正確には、Graphicsクラスの
サブクラスのインスタンス)は、Image.getGraphics()
とかで、APIライブラリの中で実装クラスのインスタンスを
取得して使う。
そういえばImage.getGraphics()もabstractだな。
ユーザがGraphicsを造ろうと思ったら、例えば
BufferedImageをnewしてgetGraphics()すれば、
Graphicsインスタンスが得られるぞ。
0208204
NGNG0209205
NGNG情報サンクス。
で、なんだか気になったから
JFrame f = new JFrame();
Graphics g = f.getGraphics()
System.out.println(g.getClass().getName())
ってやったら(動作確認Windows)
sun.awt.windows.WGraphics
って出た。
これって…どゆこと?
JavaのAPIでは見たことないパッケージなんだけど…。
VMに定義されてるパッケージとそのクラス…?
なんか頭悪そうだな。俺。
誰か教えて…。
0210デフォルトの名無しさん
NGNGあ、ほんとだ。しばらく見ない間に。
Night for Javaの準備で忙しいのだろうか。
明日行くけどねん。
0211デフォルトの名無しさん
NGNGプログラマからは java.awt.Graphics としか見えないけど、
実際にはそこから派生したクラスが使われているってこと。
new Graphics って作った覚えは、ないでしょ?
いつもどこからか Graphics が提供される。
interface みたいなもんだと思いねえ。
OSや、JREを実装したベンダーによって、実際のクラスは異なる。
0212デフォルトの名無しさん
NGNG普通OOPのライブラリ内部には、外部に公開しない
無数のクラスがあるものだ。
俺様ライブラリにも、publicでないクラスがいっぱい
あるぞ。
0213デフォルトの名無しさん
NGNGint変数に保存するのってどうやるの?
ちなみにそのファイルの中身はパターンがなにも無い
0214デフォルトの名無しさん
NGNG整数だけ抜き出すプログラムを書け
0215160
NGNGありがとうございました。うまくいきました。
0216デフォルトの名無しさん
NGNG正規表現を扱えるクラスがどこぞにあったからそれ使って抜き出せば?
0217デフォルトの名無しさん
NGNG0218デフォルトの名無しさん
NGNGjava.exe を探して起動するような小さい exe を用意しとけば良い
0219デフォルトの名無しさん
NGNGその exe ってなに? java.exeを探すってなに?
0220デフォルトの名無しさん
NGNGそもそも Java プログラムって
Java がインストールされてない環境で動くのか?
0221デフォルトの名無しさん
NGNGJ++ で exe にコンパイルしておけばいい
0222デフォルトの名無しさん
NGNG見た目がexeなだけなので、JVMが入っていないXPでは動かないっす。
0223デフォルトの名無しさん
NGNG試してみた?
どういうエラーがでるか
誰かレポートキボン
0224デフォルトの名無しさん
NGNG「動かない」だけじゃわかんないです。どう動かないのか書かないとね。
0225デフォルトの名無しさん
NGNGなくなったもの、追加されたものなどを知りたいのですが。
0226デフォルトの名無しさん
NGNGことごとく非推奨になっただけで
追加されたものは、Javaの各バージョンのドキュメントを見るよろし。
http://java.sun.com/docs/
0227デフォルトの名無しさん
NGNG{
Hoge = "hoge value";
}
はダメなのか?
ストリングクラスはオブジェクトだから参照渡しになると思ったのだが…
いまさらながらストリング型の内容を更新する関数が必要になったのだが、
これって超基本?
Java参照渡しでは無いよ。参照のコピーを渡している。
無論基本中の基本。
Hogeへの参照 → Hogeの実態
このHogeへの参照を、そのFuncとやらのメソッドに渡すと
(ちなみにJavaではメソッドの頭文字は小文字にするのが標準的だけど)
Hogeへの参照のコピーが新たに作られて渡される。
だからHogeへの参照のコピーが"hoge value"を指し示そうと、
オリジナルのHogeへの参照には無関係となる。
ついでに言えば、Stringクラスは一度newしたらその内容を変更する事は
できません。
変更したい文字列をリターンすれば?
0229227
NGNG情報thanks! 大変役に立ちました。
C++ から流れてきたので、てっきり"="演算子が文字列内容書き換えの
メソドを呼ぶようにコンパイルして貰えてるものと思ってました。
値がコピーされたように見えたのは実は新たに別に作成されたインスタンス
への参照に書き換えられただけでしたか。いやー大勘違いでした。
基本は、個別の処理群が参照先を勝手に書き換えるってCみたいな手法で
コードを書くな(書けない)ってことですな。(…なんか違いそうだな)
227のコードは"Hoge"参照先の書き換えメソドを呼んでくれているイメージで
組んだところ(この考え自体Cっぽくて良くないのか?)値が返らなかったので、
もしかして呼出側が新たにインスタンスを作成して文字列をコピーしてから呼び出すという、
文字列の値渡しみたいなことしてるのかな?とか勘ぐって質問に至った次第です。
(VBでString型の値渡し指定すると本当にそうなる。解説しよう。VBでも"="演算子は参照先の挿げ替えではなく代入なのだ)
実際は仮引数の参照先を一生懸命書き換えてただけなのですな(笑
ちなみに、本当は返却したい値がもっとあるので文字列戻り値じゃやり難いです。
0230229
NGNG×基本は、個別の処理群が参照先を勝手に書き換えるってCみたいな手法で
○基本は、個別の処理群が参照先の内容を勝手に書き換えるってCみたいな手法で
0231デフォルトの名無しさん
NGNG>void Func(String Hoge)
>{
> Hoge = "hoge value";
>}
C++で書くと、こんなイメージ
void Func(String* Hoge)
{
Hoge = new String("Hoge value");
}
呼び出し元のは、変わらんでしょう。
0232デフォルトの名無しさん
NGNG引数を使って値を呼出し元に返すことは通常Javaではやりません。
#配列を使えばやって出来ないことはないですが。
複数の値を呼出元に渡したい場合は
Cでいう構造体のようなイメージのクラスを作ってそこに値を設定して
リターン値として返すか、
値の数だけ
Hoge getHoge()
Moge getMoge()
Fuga getFuga() ,,,等の
取得関数を
呼ばれる側のクラスに用意して適宜取り出してもらいます。
0233デフォルトの名無しさん
NGNG>実行されるから、resultがtrueになるかと思うけど、その前にcatchの中で
>すでにresultは評価されてしまっているっちゅーことみたいね。
最後の行のreturnが実行されないから当然じゃないの?
>>44 に同意だが。
0234デフォルトの名無しさん
NGNGあ、移転のお知らせがでてたのにブックマークしてなかった。
誰か知らない?
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNGcom.sun.j3d.utils.timer.J3DTimer
0237デフォルトの名無しさん
NGNGおおう、それは良かった。
で、ホントに高精度?
下でなに呼んでるのかな?
タイマの精度が上がっても、スレッドのスケジューラ
が変化なけりゃ、普段のプログラムには意味無い気も
するけど。
0239デフォルトの名無しさん
NGNG正確なところをどーか。
0240デフォルトの名無しさん
NGNGhttp://www.gimlay.org/~javafaq/javafaq.html
http://www.google.com/
0241デフォルトの名無しさん
NGNG0242239
NGNG024366
NGNG>>実行されるから、resultがtrueになるかと思うけど、その前にcatchの中で
>>すでにresultは評価されてしまっているっちゅーことみたいね。
>最後の行のreturnが実行されないから当然じゃないの?
確かに66では、「当然のこと」を言っているんですけど、何か?
0244223
NGNG0245デフォルトの名無しさん
NGNGpath と classpath のちがいもわかんないのか?
0246241
NGNG239はclasspathの事が言いたいのでは無かろうかとおもって書いただけだが。
0247デフォルトの名無しさん
NGNG0248213
NGNG>ファイルを開いて1文字ずつ読み込んで
>整数だけ抜き出すプログラムを書け
それがわかんないんだけど。
どーやって整数って判断するの?どーやってそれをintに変換するの?
0249デフォルトの名無しさん
NGNG\\/ (・∀・)< >>248 芯でもいいよ!
( 。 /U U \_____________
U⌒U
0250だめ板住人
NGNGvoid hello() {
System.out.println("hello");
}
static void hello2() {
System.out.println("hello2");
}
String toString() { /* メソッドの修飾子が問題 
;*/
return "class A with hello,hello2\n";
}
}
public class GetInfo {
public static void main(String args[]) {
A obj = new A();
System.out.println(obj.toString());
}
}
上記のコードをコンパイルすると`スーパークラスでの定義より弱いアクセス特権(public)を割り当てようとしました'なるエラーが出ます.
メソッドの修飾子を変えて試してみた所
public->ok
public static->NG
static->NG
と言う結果になりました.
ここで疑問が湧いてきた事は,
1.publicより修飾子無しの方がアクセス特権は弱いがなぜ弱い特権でオーバーライドできないのか(なんらかの不都合があるのか)
2.なぜstaticでオーバーライドできないのか.(これも不都合がある?)
です.
仕様って言ったらそれまでなんでしょうが..
0251デフォルトの名無しさん
NGNGその、わからない事柄を、最初の質問で書かんか。
>どーやって整数って判断するの?
Character.isDigit
>どーやってそれをintに変換するの?
Character.digit または Integer.parseInt
0252デフォルトの名無しさん
NGNG疑問の1も2も、同じ理由だと思うよ。つまり、スーパークラスのインターフェイスを
サブクラスで変更してはダメということ。アクセス特権が弱くなるということは例え
ば、スーパークラスAでpublicだったメソッドmが、サブクラスBでprotectedになる
場合、それらを使用するクラスでは、
A a = new B();
a.m();
ができないということになる。これは、Aクラスのインターフェイスが勝手に変更され
るということで、ポリモーフィズムが成り立たない。漏れはそう理解しているけどね。
それまでスーパークラスとして可能だった
■ このスレッドは過去ログ倉庫に格納されています