【初心者】Java質問・相談スレッド111【大歓迎】at TECH
【初心者】Java質問・相談スレッド111【大歓迎】 - 暇つぶし2ch700:デフォルトの名無しさん
08/02/03 20:32:45
それだけで状況が解るエスパーを探しているのかい?

701:697
08/02/03 20:52:24
>>700
回答ありがとうございます。
あと何を書いたらよいでしょうか?

702:697
08/02/03 21:38:08
くだスレで聞いてみます。

703:デフォルトの名無しさん
08/02/03 21:56:30
エスパー頼りならどこで聞いても同じだろ

704:デフォルトの名無しさん
08/02/03 22:25:39
>>703

あとは何を書いたらいいのかわかりません。
何を書いたらよろしいでしょうか?

705:デフォルトの名無しさん
08/02/03 23:52:19
java.lang.Process#waitFor()で永久ブロックになってしまうことがあるので
タイムアウトを設定して回避したいのですが、
タイムアウト付のwaitFor代替の方法ってあるのでしょうか?
いちいちTimer設定して破棄するしかないのだろうか・・・


706:デフォルトの名無しさん
08/02/04 00:22:23
>>687
Java FAQも古いな。

Java5以降になってから解決した問題が未だに載っている。
Java5以降の開発では有用性が弱冠下がっている。
Java6以降の対応版Java FAQを作るべき時期に来ているのだろうか?
それとも、すでにそれに相当するサイトによって置き換えられてしまったか?

707:デフォルトの名無しさん
08/02/04 00:22:26
final Process proc = Runtime.getRuntime().exec("/bin/shine");
Thread t = new Thread(){
public void run(){ try{ proc.waitFor(); } catch(InterruptedException ex){/* */}}
};
t.start();
t.join(5 * 1000);
if(t.isAlive()){ proc.destroy();}

708:デフォルトの名無しさん
08/02/04 00:24:31
>>690
URLリンク(www.shiki.gr.jp)

こいつよ

>>678はWicket
劇団四季でやってるのはWicked

スペルが一つ違い。


これは面白いミュージカルなんだろーか


>>678のおかげで見たくなってきた

709:デフォルトの名無しさん
08/02/04 00:27:08
>>702
誤爆してるっていうから、レス番が>>898と未来へ飛んでるわけな?
今のところ、>>898のレスが無いから、
元の質問も今の君の質問からも、君が何をしたいのか
わからないんだ。情報を出してもらわないことには、質問には
答えられない。エスパーする以外では

710:デフォルトの名無しさん
08/02/04 00:29:17
>>707
ありがとうございます。
結局waitForのタイムアウト指定版っていうのはないみたいですね…

711:デフォルトの名無しさん
08/02/04 00:36:30
>>706
こういうまとめ系って Wiki とかじゃないと管理人がヘタったら終わりなんだよね。
他人が勝手にコピペして引き継ぐわけに行かないし。Wiki 立てるのって簡単なのかな?
サーバリソース余ってるからやっても良いんだけど。

712:デフォルトの名無しさん
08/02/04 00:52:55
すみません。
>>709
アドバイスありがとうございます。そのとおりですね。

apache-tomcatとEclipseを使っています。
EclipseにSeaser2プラグインを入れました。
Churaプロジェクトを新規作成、
デフォルトのindex.jspがtomcatで表示されることを確認(localhost)

で、webapp直下にディレクトリを作成してファイルを置きました。
でコンテクスト定義の更新をかけたのですが、
作成したディレクトリが見えません。
ProjectはBuild automatically clean にチェックが入っています。

おそらくweb.xmlを直さないといけないのでしょうが
どこを直したらいいか見当がつきません。
ネットも探してみましたが分かりませんでした。
よろしくお願いいたします。

713:デフォルトの名無しさん
08/02/04 00:57:20
Eclipseの外でディレクトリ作って、Eclipse側で更新かけてないというオチは俺は良くやる。

714:デフォルトの名無しさん
08/02/04 01:03:09
このスレのWikiの更新具合も微妙

715:デフォルトの名無しさん
08/02/04 01:20:40
>>713
回答ありがとうございます。
Eclipseの中でディレクトリを作っています。

716:デフォルトの名無しさん
08/02/04 03:36:48
質問ですノ
リファレンスの本ってあったほうがいいでしょうか?
ワザあり!逆引き速引きリファレンスJavaってのがいいって聞いたのですが
どうなんでしょうか?

717:デフォルトの名無しさん
08/02/04 10:11:33
それくらい自分で考えろ。人に聞くことじゃない

718:デフォルトの名無しさん
08/02/04 14:30:47
>>711
Wikihouseに立てるのは簡単だよ。

これ使う手もあり
URLリンク(ja.wikibooks.org)

719:デフォルトの名無しさん
08/02/04 17:32:20
>>716
まず本屋でパラパラその本を捲ってみろ。

720:デフォルトの名無しさん
08/02/04 19:44:11
パラパラの本か
見た事無いなあ

721:デフォルトの名無しさん
08/02/04 19:50:11
>>692
サンクスです。
リモート呼び出しでも何の設定もしていなければ同一サーバ上のEJBを探しにいく
ということですね。

同一サーバ上で動かしていますが、
Context initial = new InitialContext();
Object objref = initial.lookup("NewSessionRemote");
で、lookupのところで
javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial

が出ます。何か設定しろということらしいのですが・・・

722:デフォルトの名無しさん
08/02/04 21:05:25
初めまして。Javaを最近になって勉強し始めた者です。
サンプルプログラムを探していて、このようなサイトにたどり着きました。
URLリンク(www.catch.jp)

ページ上部の「021: 10個の点が3-Dで移動する」のソースコードをコンパイルすると
classファイルが3つ出現しました。
使い方がわからなかったので、検索してみると「jar」コマンドで複数のclassファイルを結合できると知り、
試してみたのですがなかなかうまくいかないので、皆様のお力をお借りしたいです。
jarファイル作成についてはこのサイトを参考にさせていただきました。
URLリンク(www.tohoho-web.com)

このような場合にブラウザでアプレットとして動かすにはどうすればよいのでしょうか。
よろしくお願い致します。

723:デフォルトの名無しさん
08/02/04 21:05:25
失礼します。

for(int i=0;i<numChips;i++){
mapChipImages[i]=createImage(chipSize,chipSize);
int x=i%numChipsInRow;
int y=i/numChipsInRow;
Graphics g=mapChipImages[i].getGraphics();
g.drawImage(mapChipImage,0,0,chipSize,chipSize,x*chipSize,y*chipSize,x*chipSize+chipSize,y*chipSize+chipSize,null);
}

numChips=64,chipSize=32,numChipsInRow=8です。
と、このようなものがあるのですがこちらの5行目(Graphics g=...)にて
Exception in thread "main" java.lang.NullPointerException
というエラーが発生してしまい困っております。
URLリンク(javagame.main.jp)
こちらのマップエディタの描画処理をrepaint();ではなく基礎-アクティブレンダリングで紹介されているものに
置き換えようとしたのですが上手く行かず困っています。
よろしくお願いします。

724:デフォルトの名無しさん
08/02/04 21:18:51
マップエディタをアクティブレンダリングにして何の意味があるんだ?

725:デフォルトの名無しさん
08/02/04 21:25:43
>>724
ごめんなさい。しっかりと書くべきでした。
URLリンク(javagame.main.jp)
で紹介されているマリオ風アクションゲームにてマップエディタを使い記録したものを
読み込ませるために使いたいのです。なので本来はマップエディタのマップを読み込み
描画するというところだけを抜き出せばよいハズなのですがどうも上手く動かなかったので
質問した次第です。ご迷惑をお掛け申し訳ありません。

726:デフォルトの名無しさん
08/02/04 21:27:21
ついでに答えるか。
javaはパッシブレンダリングだからアクティブレンダリングするときは自分でバッファ管理しないとNPE出るけどそれじゃない?

URLリンク(homepage1.nifty.com)

727:デフォルトの名無しさん
08/02/04 21:30:29
>>725
表示させるだけならアクティブレンダリングの意味ない

728:デフォルトの名無しさん
08/02/04 21:43:42
>>726
まだ、私は日が浅いため理解するのに時間はかかりそうですが
頑張って理解してみようと思います。
>>727
そうなのですか。しかし、そうだとしても一枚のグラフィックを複数に分けて
使用するというのは今後も使いそうなのでできれば習得しておきたいと考えたのです。
実際、使う画像を一枚一枚分けて保存していては管理も大変だと思ったので。

729:デフォルトの名無しさん
08/02/05 00:31:24
解放したら自動的にnullになりますか?
これまでずっとCだったので、JAVAはよく分かりません。
URLリンク(www.asahi-net.or.jp)

  }finally{
    try{
      if(rs != null) rs.close();
の部分です。
rsにnullを代入している記述は見つかりませんでした。
JAVAでは一般的に、*.close()すると、*はnullになるように
クラスが設計されているのでしょうか?

730:デフォルトの名無しさん
08/02/05 00:43:22
>>729
> JAVAでは一般的に、*.close()すると、*はnullになるように
ならないよ。

731:デフォルトの名無しさん
08/02/05 00:47:27
>>729
* がnullになる、という状態が上手く理解できていないので、Javaの方だけ説明します。

closeの内部で何をしているかについては実装しだいですが、
API の説明を見る限りでは、「JDBCリソース」を直ちに解放するようです。

try文の外、宣言部分で null 代入してます。
nullチェックをしているのは、値が入る前に例外が発生した時を想定しています。
ヒープからの解放は、GCにお任せなので、制御できません。

732:デフォルトの名無しさん
08/02/05 01:13:45
>>730>>731
それならfinallyで
      if(rs != null) rs.close();
こんなことが書いてあるということは、処理がうまくいった場合は
rs.close();が実行されて、その後にtryを抜けるところで
finallyによってもう一度rs.close();が実行されようとする悪いソースなのでしょうか?

733:デフォルトの名無しさん
08/02/05 01:26:31
close() は 2 回以上呼んでも問題ないという Connection の仕様だから問題ない。
ただそのサイトのソースの書き方

}finally{
try{
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(con != null) con.close();
}catch(SQLException se){
se.printStackTrace();
}
}

とか文字列連結で SQL パラメータ追加したりとかウンコすぎ。

734:デフォルトの名無しさん
08/02/05 01:29:19
>>733
>}finally{
>try{
>if(rs != null) rs.close();
>if(stmt != null) stmt.close();
>if(con != null) con.close();
>}catch(SQLException se){
>se.printStackTrace();
>}
>}

なにがいけないの?
一個目で例外が出ると全部コケる所?

735:デフォルトの名無しさん
08/02/05 02:04:48
>>733
Cでよくあるclose()のように、そのclose()も2回呼んでもエラーにならないと
想像してはいましたが、Cやってる人なら普通はclose()したらその直後にNULL入れるから
そういうソース見るとウンコかと。
でもJAVA知らないのでclose()の内部でnullする処理があるのか気になりました。

736:デフォルトの名無しさん
08/02/05 02:15:09
> Cやってる人なら普通はclose()したらその直後にNULL入れる
そんなことしたことない。

737:デフォルトの名無しさん
08/02/05 02:22:06
文字列を返すというクラスbを作りました。
bは引数が1つあって、引数に与えられた文字の手前に"f"を挿入した文字を返します。
結果は"fh"となることを期待しました。
期待通りになるように修正していただけませんか?

public class a {
 public static void main (String args[]) {
  String g = b("h");
  System.out.println("Hello World!!");
 }
}
public class b {
 b(String c){
  d(c);
 }
 private String d(String c) {
  String e = new String("f" + c);
  return e;
 }
}

738:デフォルトの名無しさん
08/02/05 02:25:07
>>735
それぞれの変数に値入れる前に例外発生してfinallyブロックに行く可能性があるからそういうコードになる。


739:デフォルトの名無しさん
08/02/05 02:25:30
Javaの人でも close 直後に null を入れて大丈夫です。
但し、最終的な解放は GC 任せですので、あしからず。

Javaの場合は、裏でOSネイティブなリソースを使ってる場合があって、
明示的に解放してあげないと、何時までも占有する可能性がある。
特に、close はそういうことに関係してるかと。

740:デフォルトの名無しさん
08/02/05 02:27:28
>>737
まずコンパイル通せよ。
まぁそのままだと実行しても"Hello World!"としか表示されないだろうが。

741:デフォルトの名無しさん
08/02/05 02:30:15
ローカル変数なら、nullを入れてもあまり意味がない。
フィールドや、外部に晒した変数なら、nullを入れるのもいいかもしれない。

742:デフォルトの名無しさん
08/02/05 02:32:36
>>734
その通り。トランザクションの不整合などで rs.close() が例外になるとステートメントや
コネクションがクローズされない。

>>735
大きな try-finally 節の中で何度もオープン/クローズを繰り返すような時はクローズ後に
null を代入して、finally 節の close() は例外発生時の大域的な保障と位置づけることも
あるが、そのソースのように最後に 1 度だけやれば良いようなときは最後の finally に
任せてわざわざ try 節内ではクローズしない。一回目の close() で失敗したときの予備
としてもう一度試行する意図かもしれないが、DB の問題はもう一度やってうまく行くという
ものでもないし。つーかそのページの趣旨は JDBC コーディングどうあるべきかじゃない
んだからそんなお作法的なところは適当に読め。

743:デフォルトの名無しさん
08/02/05 02:36:15
>>738
それはエラーが発生した場合ですよね。
正常な場合にclose()を2回実行しようとするのはウンコだと思います。

>>739
JAVAは解放をGCがやってくれるらしいですが、Cと違って
やってくれるのはnewに対する解放のみなんでしょうか?

744:デフォルトの名無しさん
08/02/05 02:39:57
>>743
スタックには参照しか置けねーよ アホ

745:デフォルトの名無しさん
08/02/05 02:42:28
>>740
コンパイルしましたがまだ分かりません。
↓a.java
public class a {
 public static void main (String args[]) {
 String g = new String("");
// g = b("h"); コメントアウトしたらコンパイルできました。
  System.out.println(g);
 }
}
↓b.java
public class b {
 b(String c){
  d(c);
 }
 private String d(String c) {
  String e = new String("f" + c);
  return e;
 }
}

746:デフォルトの名無しさん
08/02/05 02:43:43
そのソース、シャットダウンシーケンス入ると最悪だなw

747:デフォルトの名無しさん
08/02/05 02:45:03
>>734

748:デフォルトの名無しさん
08/02/05 02:45:47
>>744
文章が簡素で短い。頭に思い浮かべている内容に自信がないみたいだね。
とりあえず744はアホのままでいいから744がスタックについて理解を
深めるのを阻止するためにスタックの話題はスルー。

749:デフォルトの名無しさん
08/02/05 02:50:58
>>748
ハァ?

ヒント: C はクラスのインスタンスをスタックに置ける

750:デフォルトの名無しさん
08/02/05 02:59:14
>>743
java からJNIなどを使ってネイティブなコードから確保したメモリはGCの対象にはならない。
ネイティブじゃなくても、オブジェクト作成時にJavaやアプリケーションサーバなどで内部的に管理されるようなリソースもGCの対象にならない
(トランザクションとか。アプリ側から参照を外してもJavaVMやAPServerが参照を持っちゃってるからGCの対象にならない)。
こういうのは明示的にcloseを実行することによって管理側から参照が外されてようやくGCの対象になる。
それ以外はアプリ側から参照を無くすだけでGCの対象になる。

751:デフォルトの名無しさん
08/02/05 03:07:05
close() が必要なのは大抵ファイナライザで呼び出すよう実装されてるけどな
(しなくて良いという意味ではなくて)。

752:デフォルトの名無しさん
08/02/05 03:16:11
↓a.java
public class a {
 public static void main (String args[]) {
  if(true){//できる。
   b b_ = new b("h");
   String g = b_.d("h");
  }else{//本当はこっっちでやりたい。
   String g = new b("h");
  }
  System.out.println(g);
 }
}
↓b.java
public class b {
 b(String c){
  d(c);
 }
 public String d(String c) {
  String e = new String("f" + c);
  return e;
 }
}

753:デフォルトの名無しさん
08/02/05 03:19:34
public class a{
  public static void main(String[] args){
    System.out.println(b.d("h");
  }
}
public class b{
  public static String d(String c){
    return "f" + c;
  }
}

754:デフォルトの名無しさん
08/02/05 03:26:40
>>752
> //本当はこっっちでやりたい。
> String g = new b("h");

これはbをどう変更してもできない。仕様的に。


755:デフォルトの名無しさん
08/02/05 03:27:55
>>752
String型を返すコンストラクタはString以外には存在しない。

文字列の結合が目的ではないと思うが、
あまりにも簡単なことをこなす為に、拘る内容があまりにも初歩的。

・クラスの継承、型と代入について
・コンストラクタの仕組み、メソッドとの違いについて

756:デフォルトの名無しさん
08/02/05 03:32:32
>>754
コンストラクタは自分のクラス型しか返せないということですね。
>>753
できました。ありがとうございます。メソッドをstaticにしないとうまくいきませんね。
 public String d(String c){
  static String s = new String("f" + c);
  return s;
 }
これだとコンパイルエラーでした。

757:デフォルトの名無しさん
08/02/05 03:43:05
コンストラクタは何も返さない
newオペレータが指定されたクラスのインスタンスを構築してその参照を返す
その構築の際にコンストラクタが使用される

758:デフォルトの名無しさん
08/02/05 03:54:53
>>757
Javaではnewは演算子扱いではなくてクラスインスタンス生成式や配列生成式を示すだけのキーワード扱いじゃなかったかな。

759:デフォルトの名無しさん
08/02/05 04:01:42
あ、いや、すまん。演算子扱いだったのかもしれない。気にしたことないのであやふやだ。
JLS見てみる。

760:デフォルトの名無しさん
08/02/05 04:53:50
Stringの質問です。前者は後者の記述の略として解釈され、
前者と後者の振る舞いは等しいものでしょうか?
String s = "1";
String s = new String("1");

761:デフォルトの名無しさん
08/02/05 04:55:06
ちがいます

762:デフォルトの名無しさん
08/02/05 05:12:42
カノニカライゼーション
URLリンク(www.nextindex.net)

763:デフォルトの名無しさん
08/02/05 05:26:33
>>762
ありがとうございます。
普通は
String s = new String("1");
s = "6";
だと思いますが、
String s = new String("1");
s = new String("6");
こうしてもよいのでしょうか?

764:デフォルトの名無しさん
08/02/05 05:28:52
すみません
jarファイルをダブルクリックするとラプラスが起動して解凍してしまいます
拡張子を何に関連づけすれば解決するでしょうか

765:デフォルトの名無しさん
08/02/05 05:53:29
javaw

766:デフォルトの名無しさん
08/02/05 08:12:02
通常は new String("")は使用しない。

767:デフォルトの名無しさん
08/02/05 12:04:47
new String(".....") は使わないように。
Stringは不変オブジェクトだから、無駄なインスタンスができるだけ。
"...." だけでよい。

768:デフォルトの名無しさん
08/02/05 12:08:00
SimpleDateFormat のスレッドセーフ化されたものとして
FastDateFormat(format() のみ) がありますが、
parse() に関しては jakarta の DateUtils.parseDate() を
使用すればスレッドセーフになるんでしょうか?


769:デフォルトの名無しさん
08/02/05 12:39:48
Stringは参照先で弄っても元が破壊されないけど、StringBufferは壊れるからちょっとややこしい。

770:デフォルトの名無しさん
08/02/05 12:43:51
>768
メソッド内でSimpleDateFormatのインスタンスを生成してparseすれば済む話だろ

771:デフォルトの名無しさん
08/02/05 12:54:08
>>769
それは設計の問題で StringBuffer の問題ではないと思う。
一応、StringBuffer は同期化されてるので、「壊れる」ことはない。
意図しない結果をもたらす事はあるとしても。

772:デフォルトの名無しさん
08/02/05 12:58:37
>>770
SimpleDateFormatって複数インスタンス作っても
内部で同一オブジェクトを使いまわすのでスレッドセーフじゃないって話だったような。

773:デフォルトの名無しさん
08/02/05 12:59:09
new String()は文字コード変換ぐらいしか利用価値が無いと思え

774:デフォルトの名無しさん
08/02/05 13:02:10
>> 770
URLリンク(www.geocities.co.jp)
この辺みてるんですけど、それで解決する問題なのかどうかが
イマイチよくわからないんですよ、、、


775:デフォルトの名無しさん
08/02/05 13:07:49
SimpleDateFormatってスレッドセーフじゃないの?
Servletで使いまくってるけどやばい?

776:デフォルトの名無しさん
08/02/05 13:31:40
>>775
参照を他のスレッドに晒さなければ大丈夫。
staticで持ってたりしたら危ない。

777:デフォルトの名無しさん
08/02/05 13:40:50
>> 776

つまり、
>> 774 にある
>SunのBug Paradeを、"+SimpleDateFormat +thread"で検索してもらうと
>すぐわかるように、SimpleDateFormatクラスは、
>複数のインスタンスで同じオブジェクトを共有して持っており、
>スレッドセーフではありません。

という記述が間違いなんでしょうか?
複数インスタンスと言ってる時点で static では無いと思うんですが。


778:デフォルトの名無しさん
08/02/05 13:45:10
SimpleDateFormatが内部でstaticなデータを保持してんだろ?
それくらいわかれカス

779:775
08/02/05 13:52:22
ということはやばいということですね。
どうしよう

780:775
08/02/05 13:55:30
どなたかスレッドセーフな
SimpleDateFormat
を作ってくれませんか?

781:デフォルトの名無しさん
08/02/05 13:57:01
synchronized使えカス

782:デフォルトの名無しさん
08/02/05 13:59:43
synchronized (SimpleDateFormat.class) {
  // SimpleDateFormatを使うコード
}

こうすれば中でstaticなデータ持ってようと、
同時に読み書きされることはない・・・はず。

マルチスレッドよぅわからん。

783:775
08/02/05 14:09:24
FastDateFormatに置き換えようかと思いますが

FastDateFormat hms = FastDateFormat.getInstance("HH:mm:ss");
FastDateFormat ymd = FastDateFormat.getInstance("yyyy/MM/dd");

hms.format(....
ymd.format(....

こういうコードだとどっちみちダメなのでしょうか



784:デフォルトの名無しさん
08/02/05 14:14:16
なにがどうダメなんだ?

785:デフォルトの名無しさん
08/02/05 14:16:05
つうかローカル変数で使うのに何か具体的な不具合でも出てるわけ?
マルチスレッドで使わなきゃ良いだけじゃん。

786:775
08/02/05 14:16:35
getInstanceでもnewのようにまったく別のインスタンスを作って
くれるのでしょうか?


787:デフォルトの名無しさん
08/02/05 14:18:03
とりあえず、マルチスレッドの勉強を一からやり直せ。
URLリンク(www.amazon.co.jp)

788:デフォルトの名無しさん
08/02/05 14:21:42
>>785
ローカル変数かどうかは問題じゃない。
インスタンスへのアクセスが閉じているかどうかだ。
>>783
おまえはスレッドセーフの意味が分かってなさそうだから。
まずはシングルスレッドで頑張れ。

789:デフォルトの名無しさん
08/02/05 14:23:38
つうかちょっとまて。ソース見たが SimpleDateFormat に関してはスレッドセーフでないことと
内部で static なオブジェクト使ってることとは関係ない。複数インスタンスで共有してるのは
ロケールごとの静的なリソースだ。だから >>777 で引用部分の表現は明らかにおかしい。

790:デフォルトの名無しさん
08/02/05 14:25:11
>>788
ローカル変数ってのは表現間違えたがマルチスレッドで意味ぐらい汲めよ。

791:775
08/02/05 14:26:55
ではサーブレットでSimpleDateFormatをローカル変数で
都度newしているなら問題ないってことですね?

792:デフォルトの名無しさん
08/02/05 14:29:51
>>791
そのローカル変数が他スレッドに漏れてなければ、ね

793:775
08/02/05 14:31:44
>>792
それは大丈夫です。漏れていません。

794:デフォルトの名無しさん
08/02/05 14:32:53
>>791
そういうこと。スレッドごとに別インスタンスで使っていれば問題ない。
でなければ JSTL の日付フォーマットも使えない。
「処理中で不整合」 の内部状態を持つのは DocumentBuilder、Transformer、XPath、Matcher なんかも同じ。

795:デフォルトの名無しさん
08/02/05 14:44:42
>>794
そこで ThreadLocal の出番だな

796:デフォルトの名無しさん
08/02/05 14:57:04
また来ますた。お世話になっておりますw

数字を入力してください: 120←入力

と入力された数字を "1" "2" "0" と分けて取り出す方法を教えてください。
宜しくお願いしますm(_ _)m

797:デフォルトの名無しさん
08/02/05 15:05:38
toCharArrayでもcharAtでも好きなほうをどうぞ。

798:デフォルトの名無しさん
08/02/05 15:08:17
メソッド呼び出しについて勉強しているのですが
行き詰ってしまってしましました。

メソッド名:getProfile
引数: String name , int age
処理:「○○さんは△歳です」という文字列を返す
戻り値:String

このソースの書き方を教えてください。
よろしくお願い致します。

799:デフォルトの名無しさん
08/02/05 15:08:55
宿題スレに池

800:デフォルトの名無しさん
08/02/05 15:10:24
return String.format("%sさんは%d歳です", name, age);

801:デフォルトの名無しさん
08/02/05 15:10:29
>>797
ありがとうございますw
もう一つすみません。
入力された数字intで取り出したいのですが、charAtでもintを取り出せるのでしょうか?

802:デフォルトの名無しさん
08/02/05 15:12:18
変換くらい自分でやれ。
Characterクラスのjavadocをみるよろし。

803:デフォルトの名無しさん
08/02/05 15:19:10
そういえば String#format() のフォーマットに対する、解析済みで再利用可能な
クラスがないようなのが気になってたんだけど、これって毎度 String.format()
しなきゃいけないのかな?

804:デフォルトの名無しさん
08/02/05 15:27:31
>>802
あ、そうか変換すれば良いんですね。
ありがとうございます。

805:デフォルトの名無しさん
08/02/05 15:27:56
>>803
ちょっと何言ってるかわからない。
解析済みで再利用可能って・・・戻り値のStringを保持しとけばいいじゃん、
とかそういうことじゃなくて?

806:デフォルトの名無しさん
08/02/05 15:32:03
>>803
String.format の内部は、return new Formatter().format(String, Object...).toString()
Formatter 内部でキャッシュできそうな部分もあるが、private クラスの配列になってるし。
まぁ強いてキャッシュにするなら、Formatter のインスタンス辺りかな

807:デフォルトの名無しさん
08/02/05 15:34:25
>>803
java.util.regex.Pattern みたいなものを期待してるなら、ないね。

java.util.Formatter は出力先を持ってるだけで、
書式文字列を固定で持ってるわけじゃないし。

808:806
08/02/05 15:41:29
自己レス。自分で書いておいてなんだが、
Formatterの生成時には出力先を用意するだけなので、キャッシュの意味なし。
しかも、toString時に出力先をクリアするわけでもないので、再利用自体も不可に近い。

809:デフォルトの名無しさん
08/02/05 15:51:38
やっぱりそうか、俺の勘違いとかでないならまぁいいや。
Logging API の Formatter とか膨大な呼び出しされそうなところで使われそうなものだから
なんかもったいないなぁと思っただけで。

810:デフォルトの名無しさん
08/02/05 15:54:55
Jakarta Lucene って Perl が必要っぽいけど、これって Pure Java じゃないの?
それとも日本語用分かち書きの sen とか言うのが使ってるの?

811:デフォルトの名無しさん
08/02/05 15:57:19
3日前から初めてプログラミング、JAVAの勉強を始めた者です。
今読んでいる「やさしいJava 第3版」って本の練習問題なのですが
16進数を使って、6、20、13を画面に出力しろという問題があります。

答えを見ると

public static void main (String args[])
{
System.out.println(0x6);
System.out.println(0x14); ←
System.out.println(0xD);
}

と書いてありました。

←をつけた行の、(0x14)を(0xE)として間違ったのですが、
なぜ16進数でA~Fで表される数の14がEでは
間違い・エラーになってしまうのかわからないです。

試しにFなどを入れて出力などしましたが、Eだけエラーになってしまいます。

わかる方教えてください。。

812:デフォルトの名無しさん
08/02/05 15:59:35
セミコロンがないとか、そういうオチ?
とりあえず、どんなエラーが出るんだ?

813:デフォルトの名無しさん
08/02/05 16:01:30
>>811
0x14は0xが頭についてるので、10進数じゃなくて16進数として解釈される。
16進数の0x14を10進数になおすと20になる。

10進数の14が必要なら0xを頭につけちゃだめ。

814:デフォルトの名無しさん
08/02/05 16:05:20
>>811
0x14 を 0xE と間違えた後、14 にして、さらに E としたところでエラーが出たに1票。

815:デフォルトの名無しさん
08/02/05 16:10:40
14は16進数でE、20は16進数で14・・・
なるほど、814が正解かもしれない。
なんか16進数自体わかってなさそうだ。

816:811
08/02/05 16:12:27
ありがとうございます。
(0xE)ではじめに書いたら

Exception in thread "main" java lang.NoClassDefFoundError

といった表示が出てしまいました
>>811に書いたようなテキストの答えを見て
0x14にしたらちゃんと表示されます。

まだ頭がごっちゃでわかってません。。すみません。


817:811
08/02/05 16:14:24
あ、わかりましたorz

ありがとうございますorz

818:デフォルトの名無しさん
08/02/05 16:18:20
で、理由はなんだったんだ?
エラーを見るに、何か他のクラスを実行しようとしたみたいだけど。

819:デフォルトの名無しさん
08/02/05 16:26:26
NoClassDefFoundErrorなら typoかなんかでしょ。たぶん。

820:デフォルトの名無しさん
08/02/05 17:40:13
また、やさしいjavaか

821:デフォルトの名無しさん
08/02/05 19:04:58
最初に読む本でずいぶん変ってくるよね
実践的な本で勉強した方が後々いいと思うんだけど

822:デフォルトの名無しさん
08/02/05 21:32:02
仕事で使うのか趣味なのかでも違ってくるしね
趣味なら
自分だけのメーラー作成を通して学ぶ
EclipseによるJava

とかを打ち込みながら実行してWebで分からない所を調べる
とかだと面白く学べる。

仕事だとフレームワークが絡んでくるから個々のフレームワーク・言語の入門本がいいかと思う。

823:デフォルトの名無しさん
08/02/05 21:41:03
1.4.2のjavaにJDK6のAPIを追加してみた。
動かないんだけどそれだけじゃ意味ない?

824:デフォルトの名無しさん
08/02/05 21:58:34
初級本ならHeadFirstがおすすめ。
超初心者ならわかりずらいかもしれんがまともなこと書いてある。
SJC-Pとかうけるのにもこの本読んどくとかなり試験勉強の助けになる。

825:デフォルトの名無しさん
08/02/05 22:12:06
でも本の厚さと値段で尻込みしちゃうのが初心者

826:デフォルトの名無しさん
08/02/05 22:30:42
あの厚さは普通だと思うが、分厚いのはオライリーのSwing本あたりだろ。

827:デフォルトの名無しさん
08/02/05 22:37:11
分厚いのは割れてかなわん

828:デフォルトの名無しさん
08/02/05 22:46:30
また宣伝厨かよ

829:デフォルトの名無しさん
08/02/05 22:48:40
>>823
何がしたいんだ?
target が 1.6 のクラスファイルは、どう頑張っても1.4のJVMじゃ動かんよ。

830:デフォルトの名無しさん
08/02/05 23:26:01
URLリンク(up2.viploader.net)

831:デフォルトの名無しさん
08/02/05 23:28:57
かわいいこ多いな

832:デフォルトの名無しさん
08/02/05 23:32:12
>>829
じゃあ無理みたいだorz
無視でよろしこ

833:デフォルトの名無しさん
08/02/06 01:52:01
デスクトップにあるフォルダaをカレンとにしてMS-DOSプロンプトを起動しました。
aの中に*.classがあります。
jarを作りたいです。
>jar cv
エラーでした。
jar.exeの使い方を教えてください。
普通のアーカイバでzip圧縮して拡張子変更したものではだめですか?

834:デフォルトの名無しさん
08/02/06 02:04:32
>>833
JDKのドキュメントに「ツールとユーティリティ」の項目があり、
そこにjarのマニュアルもある。
というか、jar cvでヘルプが出て使用例も表示されるだろ?

835:デフォルトの名無しさん
08/02/06 02:16:08
>>834
jar でヘルプが出るけどヘルプが糞だ。
例文が2つほど出るけど例文は少なとも30ぐらいは出してくれないと理解不能。
たぶん834もjar使えないんじゃねーの?ヘルプが糞だから。

836:デフォルトの名無しさん
08/02/06 02:20:50
くそくそうるさいなw
ドキュメントの場所を教えてるんだから分からなければそっちを読め
ってか普通はオプションの意味さえとれれば使用例は要らない

837:デフォルトの名無しさん
08/02/06 02:38:15
>>836
無理しないでえらい人の回答を待てよ。
少なくとも漏れよりえらい人以外にはレスしてほしくない。
あえて書くなら漏れも知らないのでえらい人教えてください、だろ。

838:デフォルトの名無しさん
08/02/06 02:39:06
アニョハセヨ

839:デフォルトの名無しさん
08/02/06 02:44:05
スーゴハセヨ

840:デフォルトの名無しさん
08/02/06 02:54:43
グッテンターク

841:デフォルトの名無しさん
08/02/06 03:21:13
漏れとか…何時振りだろう、見たの

842:デフォルトの名無しさん
08/02/06 08:58:49
URLリンク(journal.mycom.co.jp)
>かつての電化製品がそうだったように、日本人の作るサービスはデザインやユーザビリティの面で優れていると感じている。

Nationalのオーブンレンジを触ったことがないんだろうか。
最低3つの操作手順を踏まないと、食パン1枚焼けない。余計な機能詰め込みすぎ。

「(多くの)日本人(のみ)にとって使いやすい」だけであり、それを「優れている」とは言わない。
Vista使いにくいだろ? 要は日本の家電メーカーはアレをやってる。
ご当地の人には使いやすいんだろうけどな。
それをJEITAの連中は「日本の消費者は先進的」といまだに勘違いしてる。だから国際競争で負ける。
異なるだけであって感性に「先進」とか「後進」はない。家が小さい日本は「後進的」か? 違うだろ。

日本の家電(PC含む)は既に世界からそっぽを向かれている。
車やカメラは熱いけどな(ただし、カメラも同じようにそっぽを向かれるのは時間の問題)。
日本発のWebアプリが普及しないのは二番煎じばかりだからだろ。

むしろそういうデザインとか下らないところに注力しているから、いつまでたっても独創性が開けない。
ふぅーなんか朝から熱くなっちまったぜ。

843:デフォルトの名無しさん
08/02/06 09:47:47
日本人にとっての使いやすさと
アメリカはじめ他国の人間にとっての使いやすさが違うだけ。

国内で高い評価を得ても世界ではそれほどでもない。

逆に使いやすさの面で国際競争力を付けようと思ったら
日本ではあまり高く評価されないかもね。



844:デフォルトの名無しさん
08/02/06 10:18:54
今のオーブンレンジって一発で閉まらないんだよな
でもあれ日本製なのかよくわからん

845:たらちゃん
08/02/06 12:52:02
System.err.println("エラー")を変数に代入する事って出来ますか?もし出来るのであればやり方教えてください。
宜しくお願いします。


846:デフォルトの名無しさん
08/02/06 12:53:16
javacのコンパイルが遅いと思うんですが
常駐するタイプありませんかね?
メモリ食うけど何回もコンパイルするなら速いよ!みたいな

847:デフォルトの名無しさん
08/02/06 12:55:03
>>845
意味がよくわからんが、代入してどうしたいんだ?
何をしたいのか書くといいかもしんない

>>846
eclipseみたいなIDEは嫌かね?

848:デフォルトの名無しさん
08/02/06 13:01:59
>847
使ってみましたけど、ちょい重かったです。
コンパイルするたびにjavac.exeを読み込むのが
無駄だよなぁって思ってたんですが。

新しいマシン買えよ、ってことなんでしょうけど
キャッシュが沢山載ってるやつ買えばいいのかな。


849:デフォルトの名無しさん
08/02/06 13:09:34
phpからjavaへの乗り換えを検討しているのですが
javaでphpのsymfonyに一番近めなフレームワークってどれでしょう?


850:デフォルトの名無しさん
08/02/06 13:31:46
Method println = System.err.getClass().getMethod(...);

851:デフォルトの名無しさん
08/02/06 19:12:16
>>848
…javac.exe を読み込むのが遅いならRAMディスクは如何でしょう。
可能性のある要因は幾つも挙げられますが、何れにしろ、
ハードウェアかOSの問題で、Javaだから、という問題では無いように思えます。

852:デフォルトの名無しさん
08/02/06 19:51:33
10万も出せばDualCoreでメモリ2Gのマシン、ディスプレイ付で買えるだろうよ
Eclipseが重いってのは何時の話だ

853:デフォルトの名無しさん
08/02/06 20:29:37
ちょっと自作PC板に来てもらおうか・・・

854:846
08/02/06 21:21:44
自己解決しました。
空きメモリを仮想ドライブにするソフトなんかあるのね、今は。
いや、ほんとに
「RAMディスクなんて言葉聞いたの98note以来だぜ、
確かに滅茶っ速だったけどなァァァァ」
とか思いましたけど、皆さんありがとうございました。

855:デフォルトの名無しさん
08/02/06 23:04:34
それ、自己解決か・・・?

856:デフォルトの名無しさん
08/02/06 23:24:16
JDKの環境変数設定などの後はOSの再起動をすると本で読んだのですが、
どうも環境変数の設定をした時は
そのままで反映されている時とOS再起動しないと反映されない時があるみたいです。
OSの再起動以外に何か関係するものがあるんでしょうか

857:デフォルトの名無しさん
08/02/06 23:36:18
>>856
そんな糞本捨ててしまえ。環境変数は基本的に親プロセスから引き継がれるので、環境変数を設定したプロセスから起動すれば即座に反映されるが、読み直しはしないので既に動いている他のプロセスには影響しない。
Windowsの場合なら、
・コマンドプロンプト/バッチファイルで環境変数を設定してそこからプログラムを起動した場合→即時反映
・システムのプロパティから環境変数を設定→設定後に起動したプロセスにのみ変更が反映。例えば設定前から動いているコマンドプロンプトからJavaプログラムを起動しても変更は反映されない。


858:856
08/02/06 23:50:23
>>857
なるほど~すごく分かりやすい説明ありがとうございます!
こういうズバリな説明聞くとwindowsに浸ってないでUNIXの勉強するべきなのかなぁって思いますね…


859:デフォルトの名無しさん
08/02/07 00:01:42
PC のピの字も分からん人間相手の本なら再起動は基本。
本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。

860:デフォルトの名無しさん
08/02/07 00:04:13
Windows9x時代のautoexec.bat編集して再起動
みたいな記述がそのまま残ってるだけじゃないかと。

861:デフォルトの名無しさん
08/02/07 00:13:27
PCに"ピ"の字はどこにも無いと思うんだが

862:デフォルトの名無しさん
08/02/07 00:17:43
サイトに snoop アプレット仕込んでクライアントの JVM バージョン統計取ってみたんだが見る?

863:デフォルトの名無しさん
08/02/07 00:29:25
ピーシーのピの字も分からん人間相手の本なら再起動は基本。
本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。

864:デフォルトの名無しさん
08/02/07 00:35:14
やるおかよ

865:デフォルトの名無しさん
08/02/07 03:41:13
java.util.regex.Pattern の lookingAt() って find(0) と同じという理解で良いのかな?

866:デフォルトの名無しさん
08/02/07 03:51:41
PCのパの字も分からん人間相手の本なら再起動は基本。
本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。

867:デフォルトの名無しさん
08/02/07 03:57:20
PCに"パ"の字はどこにも無いと思うんだが

868:デフォルトの名無しさん
08/02/07 04:01:54
パトカーのパの字も分からん人間相手の本なら再起動は基本。
本売る人間から見たらおまいらみたいな目の肥えた奴相手にするより商売になるからな。

869:デフォルトの名無しさん
08/02/07 04:04:43
パトカーに"パ"の字はあると思うんだが


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch