トップページ⇒tech
954コメント342KB

ネタ心者歓迎!今更ながらにJava相談室  その2

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
| 先輩!Javaの質問はこのスレでしましょう。
\
   ̄ ̄ ̄|/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ∧_∧       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( ・∀・)  ∧ ∧ < カキコする前に>>2-10をチェックしとけやゴルァ!!
 (  ⊃ )  (゚Д゚  )  \_________________
 ̄ ̄ ̄ ̄ ̄ (つ_つ__
 ̄ ̄ ̄日∇ ̄\| BIBLO |\
        ̄   =======  \

>>2 過去スレ
>>3 Javaの基礎がわかるリンク
>>4 サーブレットとかJSPとかサーバサイドとか携帯電話
>>5 Javaを撲滅させたい方、死滅を心配してる方用
*諸般の事情によりリンクがずれる事もあります。
0232デフォルトの名無しさんNGNG
>>229
引数を使って値を呼出し元に返すことは通常Javaではやりません。
#配列を使えばやって出来ないことはないですが。

複数の値を呼出元に渡したい場合は
Cでいう構造体のようなイメージのクラスを作ってそこに値を設定して
リターン値として返すか、
値の数だけ
Hoge getHoge()
Moge getMoge()
Fuga getFuga() ,,,等の
取得関数を
呼ばれる側のクラスに用意して適宜取り出してもらいます。
0233デフォルトの名無しさんNGNG
>>43 >>66
>実行されるから、resultがtrueになるかと思うけど、その前にcatchの中で
>すでにresultは評価されてしまっているっちゅーことみたいね。

最後の行のreturnが実行されないから当然じゃないの?
>>44 に同意だが。
0234デフォルトの名無しさんNGNG
>What's new about javaってどこいったの?

あ、移転のお知らせがでてたのにブックマークしてなかった。
誰か知らない?
0235デフォルトの名無しさんNGNG
ttp://www.gimlay.org/~andoh/java/javanew.html
0236デフォルトの名無しさんNGNG
Java3D 1.3に高精度タイマーが・・・
com.sun.j3d.utils.timer.J3DTimer
0237デフォルトの名無しさんNGNG
>>236
おおう、それは良かった。

で、ホントに高精度?
下でなに呼んでるのかな?

タイマの精度が上がっても、スレッドのスケジューラ
が変化なけりゃ、普段のプログラムには意味無い気も
するけど。
0238234NGNG
移転age
( Thanx > >>235 )
0239デフォルトの名無しさんNGNG
path通らないんで、だれかおせーて。(マジほんき涙
正確なところをどーか。
0240デフォルトの名無しさんNGNG
>>239
http://www.gimlay.org/~javafaq/javafaq.html
http://www.google.com/
0241デフォルトの名無しさんNGNG
pathってなんのパスだ?classpath?
0242239NGNG
感謝感謝!!!チュ!
024366NGNG
>>233

>>実行されるから、resultがtrueになるかと思うけど、その前にcatchの中で
>>すでにresultは評価されてしまっているっちゅーことみたいね。

>最後の行のreturnが実行されないから当然じゃないの?

確かに66では、「当然のこと」を言っているんですけど、何か?
0244223NGNG
ならいい
0245デフォルトの名無しさん NGNG
>>241
path と classpath のちがいもわかんないのか?
0246241NGNG
もちろんわかるぞ。
239はclasspathの事が言いたいのでは無かろうかとおもって書いただけだが。
0247デフォルトの名無しさんNGNG
画面上のマウスカーソルの位置を取得する方法ってありますか?
0248213NGNG
>>214
>ファイルを開いて1文字ずつ読み込んで
>整数だけ抜き出すプログラムを書け

それがわかんないんだけど。
どーやって整数って判断するの?どーやってそれをintに変換するの?
0249デフォルトの名無しさんNGNG
 (\     ∧ ∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  \\/ (・∀・)<  >>248 芯でもいいよ!
   ( 。 /U U  \_____________
   U⌒U
0250だめ板住人NGNG
class A {
  void 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
>>248
その、わからない事柄を、最初の質問で書かんか。

>どーやって整数って判断するの?

Character.isDigit

>どーやってそれをintに変換するの?

Character.digit または Integer.parseInt
0252デフォルトの名無しさんNGNG
>>250
疑問の1も2も、同じ理由だと思うよ。つまり、スーパークラスのインターフェイスを
サブクラスで変更してはダメということ。アクセス特権が弱くなるということは例え
ば、スーパークラスAでpublicだったメソッドmが、サブクラスBでprotectedになる
場合、それらを使用するクラスでは、
A a = new B();
a.m();
ができないということになる。これは、Aクラスのインターフェイスが勝手に変更され
るということで、ポリモーフィズムが成り立たない。漏れはそう理解しているけどね。



それまでスーパークラスとして可能だった
0253252NGNG
252の最後の行はミス。削除。スマソ。
0254デフォルトの名無しさんNGNG
自宅マシンで、jdk1.3で作業していて、ある程度できたんで、
会社の別のマシンで、jdk1.3.1でコンパイルしたら、
cannot resolve symbol
が大量に発生してコンパイルできなくて、まいってるんだけど、
誰か情報もってない?
あぁ〜こまった。
0255236NGNG
com.sun.j3d.utils.timer.J3DTimer

public static long getValue()
Get the timer value, in nanoseconds. The initial value of the timer is OS dependent.

public static long getResolution()
Get the nanosecond resolution of the timer

メソッドこれだけ。
精度が取得できるんだね。

でもcom.sunパッケージ・・・うーん
J2SE 1.5までのつなぎかな

JMFのタイマーはサウンドカード上の機能を利用する、
というような話を読んだ気がするけど誰か知らん?
0256229NGNG
みなさんありがとう。予想通りJAVAで参照渡し書き換えってのは邪道なのですな。

>>231
>void Func(String* Hoge)
>{
>Hoge = new String("Hoge value");
>}
>呼び出し元のは、変わらんでしょう。

ちゃうちゃう!こんなイメージ

void HogeFunc(CString* Hoge)
{
*Hoge = "Hoge value";
}

仕事ではもっと別の文字列型クラス(会社独自)使ってたので、CString 使うのは初めてだが、
とりあえず動作確認した。やっぱ "=" 演算子で文字列代入になったよ。
(ところでMFCってちょっと動作確認しようと新規プロジェクトから動かそうとすると手間かかるんだな)
0257 NGNG
>>254
変数名の打ち間違いとかがやたらとあるんじゃない?
0258デフォルトの名無しさんNGNG
JMSってなに?FTPの親戚?ポートは??
ぜんぜんわかんないYO
0259デフォルトの名無しさんNGNG
XPでjava導入したいんですが、インストール後に、フルパスを通す通し方がわかりません。syseditでautoexe.batに書き足すんですが何もおきません。どうしたらいいか途方にくれてます。だれかたすけて!
0260デフォルトの名無しさんNGNG
環境変数 PATH の話?
これってコマンドプロンプトからの子プロセスの話なのでは?
(Winアプリの場合どうなるのか実はよく知らん)
0261256 キリガヨイ!NGNG
>>231
は、よく読みなおしたらJAVAの動作をC++にコンバートして貰えてたのですか?
ご親切にありがとうございました!
私がやろうとしてることをC++で記述して貰ったのかと勘違いしました。
大変失礼!
0262254NGNG
>>257
自宅で、動いているのを、そのまま持っていったから、
それは無いと思う
0263エッチマンNGNG
>>262
ライブラリが足りないとか
0264デフォルトの名無しさん NGNG
>>259
コントロールパネル> (パフォーマンスとメンテナンス>) システム > 詳細設定 > 環境変数
0265デフォルトの名無しさんNGNG
IO erro occured while sending to the backend -java.io.UnsupportedEncodingException:EUC_JP[Could not load class: sun.io.Char ToByteEUC_JP]
これ何?
0266デフォルトの名無しさんNGNG
読んで字のごとくでねーの?
0267デフォルトの名無しさんNGNG
EUC-JP をサポートしてないっつぅエラー。
0268デフォルトの名無しさんNGNG
>>256
IO erro (アイオー エロ?)・・・つまらない、スマソ。
何やってこのメッセージ出たの?何かがEUC_JPはサポート外って事。
0269デフォルトの名無しさんNGNG
erro・・・・中途半端な略だな。
0270256NGNG
>>268
私に何か?(笑
はは、プログラマらしい打ち間違いとみた。
さてはアセムブラ||C遣いですな
0271amoNGNG
javaで π(パイ)の計算方法を教えてください。
注意;↓の方法

π=4− 4/3 + 4/5 + 4/7 +・・・・4/9999
和の方法がわかりません。わかる方をしえてください。
0272デフォルトの名無しさんNGNG
そのまま
pi = 4 - 4.0/3.0 + 4.0/5.0 - 4.0/7.0 +
って書いてみるのはどうだろう。
0273amoNGNG
javaで π(パイ)の計算方法を教えてください。
注意;↓の方法

π=4− 4/3 + 4/5 + 4/7 +・・・・4/9999
和の方法がわかりません。わかる方をしえてください
0274amoNGNG
正解のコードを教えてくれるまでage続けるので、
そのつもりでお願いします。
0275amoNGNG
↑は私ではありません。結構むずかしいですね
0276デフォルトの名無しさんNGNG
>>274
消えろ。ゴミクズ。
0277デフォルトの名無しさんNGNG
>>275
いや、お前だと思うが。(w
0278amoNGNG
↑も私ではありません。難しくてわからないのね
0279デフォルトの名無しさんNGNG
>>272 で答えは出てるだろう
去ね>>amo
0280デフォルトの名無しさんNGNG
>>272
private String calcpaipai()
{
String a = "4";
int b=3;
int c=-1;
while(b<10000)
{
a+= " " + ((c>0)?"+":"-") + " 4.0/" + String.valueOf(b) + ".0";
b+=2;
c*=-1;
}
return a;
}
どうだ?正解のコードだろ
0281amoNGNG
↑天才
0282ahoNGNG
多くは書かない。たった一行。
0283仕様書無しさんNGNG
>>281
からかわれてることに気づけYO!
0284デフォルトの名無しさんNGNG
identifierって何ですか
0285デフォルトの名無しさんNGNG
識別子?
0286デフォルトの名無しさんNGNG
名前
0287デフォルトの名無しさんNGNG
ID子
0288amoNGNG
きずいてるよ。あんまり人をなめないほうがいいよ・・・(けけけっけえ
0289テストNGNG
テストです。
0290デフォルトの名無しさんNGNG
>>284
無限力。
0291amoNGNG
javaで π(パイ)の計算方法を教えてください。
注意;↓の方法

π=4− 4/3 + 4/5 + 4/7 +・・・・4/9999
和の方法がわかりません。わかる方をしえてください
0292デフォルトの名無しさんNGNG
amo 氏んでくれ。
0293Kusakabe YouichiNGNG
>>288 amo wrote:
> きずいてるよ。あんまり人をなめないほうがいいよ・・・(けけけっけえ

ず
0294デフォルトの名無しさんNGNG
>>291
実行してちゃんと答えが出るのを確認済み
public class calcpaipai{
  public static void main( String[] args ){
    java.io.PrintStream ps = System.out;
    int b=3;
    int c=-1;
    ps.println("public class PI{\npublic static void main(String[]a){");
    ps.println("double pi = 4.0;");
    while(b<10000)
    {
      ps.print( "pi=pi" );
      for( int i=0;i<10;i++){
        ps.print( ((c>0)?"+":"-") + "4.0/" + String.valueOf(b) + ".0" );
        b+=2;
        c*=-1;
      }
      ps.println(";");
    }
    ps.println("System.out.println(pi);");
    ps.println("}\n}");
  }
}
0295デフォルトの名無しさんNGNG
笑介ちゃんか?>>293
0296いう0じょ@NGNG
javaで
VBのsendKeyみたいな
メソッドありますか?
あったら教えてください。
0297デフォルトの名無しさんNGNG
javaのデザパタ本読んでますが、一個目から理解できません。。

Iteratorパターンですが、ループはConcreteAggregateクラスの実装に
依存しないとかかれてますが、Iteratorをかまさなくてforでまわしても
依存しないですよね。。

for(int i=0; i<books.getLength(); i++){
Book book = books.getBookAt(i);
System.out.println(book.getName());
}

あさはか?
0298javaむぎ茶NGNG
逆順に欲しいときはどうする?
またはツリーになったデータをなめたいときは?
さらに幅優先、深さ優先で探索を切り替えたいときは?
0299279NGNG
なるほど。
 ・同じスキャン操作ならひとつのIteratorで複数のConcreteAggregateの
  実装を吸収できる
ということですか?

一個のConcreteクラスだとあんまりメリット感がないって感じなのかな。
0300デフォルトの名無しさんNGNG
>>297
そのbooksが何のクラスを示すか分からんが、booksの型に依存するでしょう。
だからbooksのクラスを変更してしまったら、そのコードは使えなくなる。

しかし、配列を扱うクラスが皆iteratorを返してくれるのであれば、
iteratorに対して設計する事により、そのiteratorが元々何のクラスから生成されたかに
関係無く、コードを再利用する事が出来る。
0301デフォルトの名無しさんNGNG
>>297
インデックスアクセスできないデータ構造だと、
不可能とはいわないまでも効率が悪いです。

Java にも Iterator インタフェイスがあります。
こいつは、Vector でも LinkedList でも HashSet でも TreeSet でも
どんなコレクションクラスからも生成できて、
実際にそれがどんな実装かに関わらず、
すべての要素を列挙できます。
参考になれば。
0302301NGNG
> インデックスアクセスできないデータ構造だと、
> 不可能とはいわないまでも効率が悪いです。

この2行はミス。読み飛ばして。お願い。
0303279NGNG
あれ?>>299で書いたこともおかしい気がしてきた。。

>>300
ええとですね、Iteratorのスキャン操作を行う#hasNext()にしても#next()にしても
結局ConcreteAggregateの#getLength()と#getBookAt()を呼び出してるのをみて
じゃあforでまわしたっておなじじゃん。。って思ったんですが。
配列をVectorに変更しても、#getLength()と#getBookAt()の実装は変更せざる
を得ないわけですし。。
0304エッチマンNGNG
>>301
えっと質問です。
IteratorとかEnumなんとかで列挙して取り出せるようにしたとき、
マルチスレッドな環境とかで
その取り出し元に変化があった場合はどういう挙動になるですか?
0305デフォルトの名無しさんNGNG
>>303
TreeSet や LinkedList だと、getLength や getAt などの
インデックスアクセス操作は非常に効率が悪くて、
そういうやり方は良くないです。原理的に不可能とは言わないけど。

>>304
Java の Iterator だと、例外が飛びます。
0306デフォルトの名無しさんNGNG
>>303
iteratorを使う側からすれば、iteratorの実装がどうなっていようが(゚ε゚)キニシナイ!!でしょ?
iteratorのインターフェースさえ実装されてるならね。そこが重要。

>>297のコードだと、booksの型を知らなければ使えない。
でもiteratorを使えば、booksのクラスを知る必要は無い。
そんなクラスが地上に存在する事すら知らなくてもOKな訳だよ。

難しいかな?
0307エッチマンNGNG
>>305 どうも。

ところで標準のAPIにスタックはあってもキューは無いですよね。
Queueクラスは自分で作れってことですか?
(難しいもんじゃないから作ったけど)
これって変ですよね。ついでにセマフォもミューテックスもないし
自分で考え自分で生きろって感じで加持さんモードっぽいし
確かに作れるけど用意してくれてたっていいと思いません?
0308279NGNG
>>306
目からウロコ!
ちゃんとIteratorを実装しておけば、hasNext()とnext()だけで
生きていけるってことですね?
ああ、そうかあ。ありがとうございます。やっと次のパターンに行けそうです。
0309デフォルトの名無しさんNGNG
>>307
それを言い出すとキリがない。
世の中にあるアルゴリズムなりデータ構造なりを全部作れってのは無茶です。
いや、全部じゃないとキミは言いたいのかもしれないけど、

僕はコレが欲しい、
私はあれが欲しい、
俺の使いたいのがなぜないんだ、

とか言い出すとキリがない。
どっかできっぱりさっぱり諦めるしかないんだよ。
Java には既に要らんクラスがいっぱいあるけど、
自分は要らんと思っても、他の誰かが要求したのかもしれないし。
0310エッチマンNGNG
>>309
了解です。
まあ実現する手段は提供されてるからこれ以上の不満はないです。
多少足りないくらいの方がコード書いてて楽しいし。
0311javaむぎ茶?NGNG
>>307 セマフォとかミューテックスとかThredがらみで便利なやつは
util.concurrent をどぞ
0312デフォルトの名無しさんNGNG
class A3 {
  int i = 1;
  void hello() {
    System.out.println("Hello A3");
  }
}

class B3 extends A3 {
  String i = "test";  /* 同じiを使用 */
}

class C3 extends B3 {
  double i = 333;    /* 同じiを使用 */
  void hello() {
    System.out.println("Hello C3");
  }
}

class MethodOverriding3 {
  public static void main(String args[]) {
    B3 obj = new C3();

    obj.hello();  /* C3のメソッド適用,objが参照するオブジェクトの型依存 */
    System.out.println(obj.i); /* B3の変数適用,変数objの型依存 */
  }
}

変数とメソッドで依存場所が違っててちょっと違和感があります.
なんでこんな実装に??
0313デフォルトの名無しさんNGNG
Cのprintfみたいな書式指定のできる
SDK標準のライブラリーってありませんか?
0314313NGNG
あげ忘れました。
0315デフォルトの名無しさんNGNG
sprintfじゃダメなんデスか?
0316デフォルトの名無しさんNGNG
>>312
その方が便利だからです。
0317デフォルトの名無しさんNGNG
>>312
ただ単に、フィールドはオーバーライドできないだけでしょう。
0318313NGNG
>>315
SDKじゃなくってJDKの間違いです。。。
どのクラスにprintfのようなオペレーション
があるのやら。。。
0319デフォルトの名無しさんNGNG
>>318
ありません。
もう一度車輪を作ってください。
0320デフォルトの名無しさんNGNG
>>319

reinvent the wheelってやつ?
0321デフォルトの名無しさんNGNG
>>319
printfど同じような目的に使えるものがあれば
いいわけであって、まったく同じである必要は
ありません。

そーいったもの用意されてませんかね<ALL
0322デフォルトの名無しさんNGNG
>>318
http://java.sun.com/products/jdk/1.2/ja/docs/ja/api/java/text/MessageFormat.html
0323デフォルトの名無しさんNGNG
(;´Д`)アア...
Cに戻りたいよお・・・。
0324デフォルトの名無しさんNGNG
>>322
サンクス!!
お礼にいい店つれってってあげます。
0325デフォルトの名無しさんNGNG
あきらめて
System.out.print("x= "+x+"y= "+y);
とか使ってなさい。
0326デフォルトの名無しさんNGNG
>>325
サブクラスを増やすことなく、かつ実行時に動作が
変化するようなアプリケーションを書いたことが無いだろ?
学生君
0327デフォルトの名無しさんNGNG
>>326
全部switch-case分岐とか?腐ってるね。
そんな古生代の遺物みたいなものを作る人
は逝って良しだなあ。
0328デフォルトの名無しさんNGNG
>>327
>全部switch-case分岐とか?腐ってるね。

ジャーちみは、こんなことしとんのか?ただのアホだぞ。。。はぁ

class Class0 {String methodA(){return null;}}
class Class1 extend Class0 {String methodA(){return "x= "+x+"y= "+y;}}
class Class2 extend Class0 {String methodA(){return "x== "+x+"y== "+y;}}
class Class3 extend Class0 {String methodA(){return "x equal "+x+"y equal "+y;}}
Class0 inst = new Class2();
0329エッチマンNGNG
>>328
327じゃないけどマジでそんなコード書いてるんだけど・・
いい方法が思いつかなかったよ。
ヒントください。
0330デフォルトの名無しさんNGNG
まあ、JAVAなんかやってると>>326みたいな厨房になるってことだ。
0331デフォルトの名無しさんNGNG
>>329
>>326はただ、訳の判らん事言って煽ってる厨房なので無視するように。
■ このスレッドは過去ログ倉庫に格納されています