【初心者】Java質問・相談スレッド111【大歓迎】at TECH
【初心者】Java質問・相談スレッド111【大歓迎】 - 暇つぶし2ch175:デフォルトの名無しさん
08/01/17 17:00:26
>>173
br.close()だけでぜんぶクローズされるはず。
手元にソースがなくて確認はしてないけど、ストリームにかぶせるタイ
プのストリームはぜんぶclose()で中のストリームのclose()を呼んでい
たと思う。


176:デフォルトの名無しさん
08/01/17 17:08:09
>173
その文章書く時間あるならば、先にJavaDoc嫁
void close() throws IOException
    このストリームを閉じ、関連付けられているすべてのシステムリソースを解放します。ストリームがすでに閉じている場合、このメソッドを呼び出しても何も行われません。

177:173
08/01/17 17:15:07
>>175
どうもありがとうございます。BufferedReader のソースを見たところ、
close() の内部で、BufferedReader のコンストラクタで受け取った Reader の close() を呼んでいました。

今後プログラムを書くときは、br.close(); だけを書くようにしよう。

>>176
すみません、聞く前に javadoc 読むようにします。
ちなみに PrintWriter#close() は、Javadoc では「関連づけられているすべてのリソースを開放する」とは
書かれていませんでしたが、ソースを見ると、やはりコンストラクタで受け取った Writer をclose() していました。

178:デフォルトの名無しさん
08/01/17 17:41:49
>>177
1.6 のドキュメントだと、PrintWriter#close() には
「関連するすべてのシステムリソースを解放します」って書いてあるけど。

「ストリームを閉じます」だけで終わってるのは 1.4以前かな。

179:173
08/01/17 17:47:19
>>178
手元にある DL 済みの javadoc は 1.5 です。(はじめのカキコ時に java のバージョンを書いておくべきでした)
「ストリームを閉じます」だけで終わっています。

やはり DL ずみの1.6 では、>>178 さんのようになっていますね。

180:デフォルトの名無しさん
08/01/17 19:31:49
JavaServletについてわからない事があるので教えていただけますか。

/*環境*/
OS:Windows xp Professional SP2
開発アプリケーション:Eclipse Version 3.3(Tomcatの起動はxampp内のTomcatを利用)
サーブレットコンテナ:Apache Tomcat 6.0(XAMPPのTomcatプラグインより利用)

Eclipseから出たメッセージ
「インポートされた javax.servlet は見つかりません。」

//Servlet.java
import java.io.*;
import javax.servlet.*; //”javax.servlet”の所で赤の波線が出る
import javax.servlet.http.*; //”javax.servlet”の所で赤の波線が出る
public class Servlet extends HttpServlet {
public void doGet (HttpServletRepuest req,HttpServletPesponse res)throws ServletException, IOException {
}
}

多分、servlet.jarか、servlet-api.jarが必要になるのだと思いますが。
これを、どのようにすれば、正常に動作させる事が出来るのか解らないです。

どうぞよろしくお願いします。


181:デフォルトの名無しさん
08/01/17 19:44:24
初心者です、何を始めたらいいですか?

182:デフォルトの名無しさん
08/01/17 19:54:56
Javaでぐぐるとこから始めたらいいです

183:デフォルトの名無しさん
08/01/17 20:08:06
最近自分で調べた方が早い事ばかり聞いてくるな。

184:デフォルトの名無しさん
08/01/17 20:26:40
POIでVBAを含んだExcelを読み込み、保存するとVBAが消えてしまいます。
消えないようにする方法は無いでしょうか。
POIでVBAを書き込む方法ってありますか??


185:デフォルトの名無しさん
08/01/17 20:36:22
Exception#printStackTraceで出力される例外情報を文字列化してログファイル
におちしたいんですが、良い方法ありますか?

186:デフォルトの名無しさん
08/01/17 20:47:06
つ ロギング

187:デフォルトの名無しさん
08/01/17 22:49:01
>>185
ちなみにNetBeansだとロギングAPIでコード補完されます。

188:デフォルトの名無しさん
08/01/17 23:08:31
>>185
Throwableクラスに、文字列を取得するのにぴったりのメソッドがあるだろ?

189:デフォルトの名無しさん
08/01/17 23:10:36
サーブレットとJSP簡単に言うと如何使い分けてるのが一般的?

190:デフォルトの名無しさん
08/01/17 23:26:54
MVCのCとVで分ける

191:デフォルトの名無しさん
08/01/17 23:55:22
servletでフィルターをかける場合にfilterインターフェイス使うみたいだけど、
インターフェイスって、implementしたクラスで実装するんじゃないのですか?


192:デフォルトの名無しさん
08/01/17 23:58:04
途中で書き込んでしまった。
色々な本なんかを見てると実装している部分が見当たらないんです。
俺の認識が間違ってるだけですか?


193:デフォルトの名無しさん
08/01/17 23:58:16
その実装クラスを作るときに ServletFilter インターフェイス使ってんじゃん。

194:デフォルトの名無しさん
08/01/18 12:11:19
なぜ継承やオーバーライドをするのでしょう?
似通っているクラスであれ、継承せずに新しいクラスを作り、
新しいメソッドを作ればいいとか思っちゃうのですが。
効率性の問題ですか?

195:デフォルトの名無しさん
08/01/18 12:17:43
>>194
君みたいな開発者のおかげで、僕の仕事があります。ありがとう。

196:デフォルトの名無しさん
08/01/18 12:18:05
>>194
ヒント:ポリモーフィズム

197:デフォルトの名無しさん
08/01/18 12:19:55
>>194
新しいクラスも既存のクラスも同じインタフェイスで扱いたいから

198:191
08/01/18 12:32:05
>>193
例えばinit()なんですけど、
実行される内容は自分で書きますが、
「最初に実行される」という決まりはどこに定義されていて、
自分の作ったクラスにどのように継承?されているのでしょうか?

199:デフォルトの名無しさん
08/01/18 13:35:03
そんな決まりはない
ただの慣習
されども慣習を守らないとみんなが迷惑する

200:デフォルトの名無しさん
08/01/18 14:01:12
>>199
おい!

>>198
最初にinit()を実行するという決まりは、Servlet Specificationで規定されている。
だから、Servlet仕様にきちんと準拠して実装されたServletコンテナなら
Filterとして作成され、web.xmlにFilterとして登録されたクラスの
init()メソッドを呼び出すように実装されている。

201:デフォルトの名無しさん
08/01/18 14:10:15
すみませんが、質問です。

Luceneというオープンソースの検索エンジンを使ってみたのですが、思ったよ
りパフォーマンスが出なかったので、プロファイラ hprof で分析してみました。

URLリンク(itpro.nikkeibp.co.jp)

結果
CPU SAMPLES BEGIN (total = 50358) Thu Jan 17 17:43:10 2008
rank self accum count trace method
1 33.34% 33.34% 16787 300001 java.lang.Thread.run
2 33.33% 66.67% 16786 300005 java.lang.ref.Reference.getPending
3 17.58% 84.25% 8853 300364 java.io.RandomAccessFile.readBytes
4 11.94% 96.19% 6013 300777 java.io.RandomAccessFile.readBytes
5 0.33% 96.52% 167 300473 jrockit.net.SocketNativeIO.readBytesPinned
6 0.29% 96.81% 146 300537 java.lang.String.<init>
7 0.19% 97.00% 96 300536 org.apache.lucene.store.BufferedIndexInput.readByte
8 0.15% 97.15% 77 300587 org.apache.lucene.store.IndexInput.readString
9 0.14% 97.29% 69 300561 org.apache.lucene.store.IndexInput.readString
10 0.12% 97.41% 58 300578 org.apache.lucene.store.IndexInput.readString
...(略)...

てっきり java.io.RandomAccessFile.readBytes がCUP時間のほとんどを占める
かと思ったら、それは30%に満たず、java.lang.Thread.run と
java.lang.ref.Reference.getPending が全体の2/3を占めていました。

これは一体、何を意味するのでしょう?パフォーマンス改善には何をしたらい
いと思われますか?


202:デフォルトの名無しさん
08/01/18 14:11:14
>>198
サーブレットコンテナを作る側と、サーブレットを作る側で
「お互いこういう決まりで作りましょうね」という規格(Servlet API)
の上で決まっているだけで、
唯一固有の実装により定義されるわけではない。

例えばTomcatなら、そのコードの中で、
Filterクラスをインスタンス化して、最初にinit()を実行し、
該当リクエストがある度にdoFilter()を実行する、
というように実装されている。
Tomcatのソース読めば見つかるはず。

これはあくまでTomcatの実装であって、
他のサーブレットコンテナ(ResinやJetty、商用ならWebSphereやWebLogicなど)なら
また別の書き方で、フィルタの扱い方が実装されているけど、
やはりServlet APIの規則に従って実装されている。
それをはずすとServlet API準拠って名乗れないからね。

繰り返すけど、この辺は、APIの仕様に定義されている。
これは文書読まないとわからない。
どのAPI使うにしろ、そういった約束事の塊に出くわすので、
慣れろと言うしかない。

203:デフォルトの名無しさん
08/01/18 15:19:23
明快Javaってどうなの?

204:デフォルトの名無しさん
08/01/18 16:08:31
自分で読んで決めろ。それか該当スレ
やさしいシリーズじゃなけりゃなんでもいい。

205:デフォルトの名無しさん
08/01/18 16:10:38
創るJavaのほうがいいよ。

206:デフォルトの名無しさん
08/01/18 16:13:14
>>205
もうすぐ新版もでるしね




はじめて工作員活動しちゃった

207:デフォルトの名無しさん
08/01/18 17:13:59
パネルの背景を画像にして、その上に各コンポーネントを貼り付けていこうと
考えているのですが、うまく表示されません。
1.最初は画像を背景にしたJLabelをJPanelに貼り付けて、
さらにその上に貼り付けていこうと考えていたのですが、
うまく作成することができませんでした。
(上に貼り付けたコンポーネントが正しく表示されない)
2.そこで、JPanelのpaintComponet部分でdrawImage
してみましたが、画像は描写されませんでした。

1の場合LayoutはSpringLayoutやNullで行へば回避できるのか?
そもそも2で行おうとしていることは可能なのか?
また、このような場合に行う良くある方法についてのアドバイスをお願いします。



208:デフォルトの名無しさん
08/01/18 17:43:12
javaの勉強中なんですが、
VectorやHashtebleなどでコンパイルすると、

注:Hashtable_sample.java の操作は、未チェックまたは安全ではありません。
注:詳細については、-Xlint:unchecked オプションを指定して再コンパイルしてください。

とでるんですが、どうすれば解決できますか?

209:デフォルトの名無しさん
08/01/18 17:48:45
DOS窓って一体何のことですか?

210:デフォルトの名無しさん
08/01/18 17:49:30
>-Xlint:unchecked オプションを指定して再コンパイルしてください。

211:デフォルトの名無しさん
08/01/18 17:49:56
>>207
自己レス
2のほうでImageIcon経由Imageを作成したらうまく動きました。
もしかしたら、ロードが終わってない状態で
画像を表示しようとしていたのかもしれません。

212:デフォルトの名無しさん
08/01/18 17:55:01
>>207
1の方法でもちゃんと動いたぞ
import略
public class Test {public static void main(String[] args) {SwingUtilities.invokeLater(new Runnable() {public void run() {
JLabel label = new JLabel(new ImageIcon(getClass().getResource("image.png")));
label.setLayout(new FlowLayout());
label.add(new JButton("button"));
JPanel panel = new JPanel(new BorderLayout());
panel.add(label);
JFrame frame = new JFrame();
frame.add(panel);
frame.pack();
frame.setVisible(true);
}});}}

213:デフォルトの名無しさん
08/01/18 17:55:36
>>209
コマンドプロンプトのことです

214:デフォルトの名無しさん
08/01/18 18:01:38
>>213
もしかしてWindowsのことですか!

215:デフォルトの名無しさん
08/01/18 18:03:22
-Xlint:unchecked オプションを指定ってどうすればいいんですか??

216:デフォルトの名無しさん
08/01/18 18:10:07
>>208
Generics でぐぐるといいかもしんない

217:デフォルトの名無しさん
08/01/18 18:16:53
>>212
ありがとうございます。
さっそくJwindowに変えてやっていみたのですが、動きますね。
ラベルでなくパネルのほうにコンポーネントを貼り付けようとしたせいで
背景の画像が表示されなくなっていたのかもしれません。


218:デフォルトの名無しさん
08/01/18 18:17:23
>>215
javadocの開発ツールjavacの部分嫁

219:デフォルトの名無しさん
08/01/18 18:55:48
>>208
javac -Xlint:unchecked Hashtable_sample.java

220:デフォルトの名無しさん
08/01/18 19:52:24
ジェネリックメソッドで
<T> T getT(){
    return //T型のオブジェクト生成
}
ってやりたいんだけど、どうすんの?つうかコンストラクタは引数無しじゃなきゃダメ?


221:デフォルトの名無しさん
08/01/18 20:27:09
Tに引数なしのコンストラクタがある保証ないじゃん

222:デフォルトの名無しさん
08/01/18 20:30:37
<T> T getT(Class<T> clazz){
    return clazz.newInstance();
}
とやるしかない
もしくはクラス名を渡すなど。

223:デフォルトの名無しさん
08/01/18 20:38:03
>>222即レスあざす。・・・マジすか
まぁ、妥協できないとこじゃないんで別の実装考えますね。

224:デフォルトの名無しさん
08/01/18 20:53:21
設計の問題でどうにかなる

225:デフォルトの名無しさん
08/01/18 21:02:46
>223
自分も同じようなこと考えたんだけど、コンパイルされた後には型情報ってなくなるんだよね。
あくまでコンパイル時にキャストがうまくいくってだけで、そこまで。
ただ、使い方を制限するなど、使い道は多いぜ。
<T extends HogeHoge> T getT(Class<T> clazz){
    return clazz.newInstance();
}

226:デフォルトの名無しさん
08/01/18 21:03:11
ファイルから数値を読み込んでそれの合計とか平均とかだしたいんですけど
どうすればいいですか

227:デフォルトの名無しさん
08/01/18 21:23:15
勉強するといいよ

228:デフォルトの名無しさん
08/01/18 21:39:00
javadoc読めば良いと思うよ

229:デフォルトの名無しさん
08/01/18 21:51:14
あんまりWebアプリ作る技術者系の人はここにはいないのかな

230:デフォルトの名無しさん
08/01/18 22:14:29
>>220
>>155 おすすめ

231:デフォルトの名無しさん
08/01/19 01:20:57
>>225,230
確かにTが実行時にコンスタントプール内のクラスを指し示してる保証もできないですしね。
バイトコード弄くりじゃ結局ジェネリックス使わないし・・・結局
<T> T createT(T t){
  //tが不正でないか調べる
  return t;//正しいtを返す
}
って感じにしました。まぁ、超個人的なことなんで何したいのか分からないと思いますが・・・
ありがとうございました。

232:デフォルトの名無しさん
08/01/19 13:15:50
antのbuild.xmlってなんであんなフリーダムになっちゃったの?

233:デフォルトの名無しさん
08/01/20 22:14:35
swingのJLayeredPanelに

ImageIcon icon = new ImageIcon(img);
jlabel.setIcon(icon);
jPanel.add(jlabel);
jlayeredPane.add(jPanel, 2);
おおざっぱですがというような方法で層状にして画像を表示しているのですが、上の6ピクセル行くらいが空白になってしまい表示できません。これを解決する方法ってありますか?
iconを使うと無理?

234:デフォルトの名無しさん
08/01/20 22:51:55
JLabelのBorderとかを設定
JLabelの機能を使わないならば、画像表示用のコンポーネントをJComponentを継承して作るほうが楽かも

235:デフォルトの名無しさん
08/01/20 22:54:53
Borderですか。
そっちでやってみます。
ありがとうございます。できるかな。。

236:デフォルトの名無しさん
08/01/21 01:18:13
Cプログラマ必須テキストです!

URLリンク(mori.eco.to)

237:233
08/01/21 10:26:56
>>234
結局borderではできませんでした。。
継承とかうまく扱えないので、他になにかいい解決方法があるといいのですが。

238:デフォルトの名無しさん
08/01/21 11:45:41
>>237
setBorder(null)してみた?

239:デフォルトの名無しさん
08/01/21 12:25:38
それを言うなら、BorderFactory.createEmptyBorder(だっけ?)じゃね?


240:デフォルトの名無しさん
08/01/21 15:07:50
javaでCPUや、メモリ量などのシステム情報を取得するにはどうしたらいいですか?

241:デフォルトの名無しさん
08/01/21 15:10:19
format c:

242:デフォルトの名無しさん
08/01/21 15:30:11
質問です。
無制限強度の管轄ポリシーファイルを%JAVA_HOME%\jre\lib\securityに置いて鍵長制限解除をしようとおもったのですが・・・、

CPadからGUIを起動して暗号・複合を行うと442bitsの鍵を扱えるのですが、
それらをまとめたjarをクリックして起動したGUIではどうしても暗号・複合ができませんorz
#無制限強度の管轄ポリシーファイルの必要ない64bitsの鍵はできます。
例外処理の内容は制限を超えた長さの鍵を使った時にでるものが投げられるので、
jarで起動するとどうも無制限強度の管轄ポリシーファイルを見てない感じなのですが・・・。


教えてくださいせんせー。

243:デフォルトの名無しさん
08/01/21 16:49:40
CPadってのは何者か解らんけど、開発環境か?
エスパーしてみると、jarをダブルクリックした時に使われるJREと、開発環境で使われるJREが異なるのが理由かと思われ

244:デフォルトの名無しさん
08/01/21 17:38:56
CPad for Java2 SDK

245:デフォルトの名無しさん
08/01/21 17:40:12
尿Pad

246:デフォルトの名無しさん
08/01/21 18:15:50
>>243
まさにその通りでしたorz
開発環境ではjdk下のjreを参照してるのですね。勉強になりましたorz
てんてーありがとうー


//チラ裏
jdk
%JAVA_HOME%jdkx.x.x\jre\lib\security\US_export_policy.jarとlocal_policy.jar

jre(jrex.x.xは最新のjreフォルダ)
?\jrex.x.x\jre\lib\security\US_export_policy.jarとlocal_policy.jar

247:デフォルトの名無しさん
08/01/21 18:48:30
ホットスポットがネイティブコードにコンパイルされるのって単純に実行回数?
それともバイトコード分析して?

248:デフォルトの名無しさん
08/01/21 20:05:21
HotSpot実装ならホットスポット解析

249:デフォルトの名無しさん
08/01/21 20:30:39
ホットスポット探すのに実行回数を一切使わないって事はないと思うが。

250:デフォルトの名無しさん
08/01/21 22:20:59
失礼します。
現在JAVAでRS232Cを使って通信を行なう事を行なっております。
まず現在行なっている仕様は
OS :Vine Linux 2.6.16 - 0vl160
J2SE :1.4.2_16
RXTX :2.07 i686 linux
Java Communications API :3.0 Linux

:参考サイト:
JAVA開発メモ - CommunicationsAPI
URLリンク(www.moriwaki.net)

:現状:
JAVAにおいてはコンパイル・実行ともに問題無く使用できますが
RS232Cに関係するプログラムをコンパイルするとエラーが
起こります。
(URLリンク(www.ais-com.co.jp))でお借りしました。
雛形プログラムをコンパイルしたところ。
以下のような場所にシンボルが不明と出ました。
CommPortIdentifier
^
SerialPort.DATAITS_8....
^

実験は大学の実験室にて行なっているので
現在はエラー文をお見せできないので本当に申し上げません。
恐らくですが、rxtxかCommunicationsに問題があると思いますが
現在の所その解決策は見つかっておりません。

どなたか解かる限りでかまいませんので教えてください
よろしくお願いします。

251:デフォルトの名無しさん
08/01/21 22:31:45
classpath通ってないんだけちゃうん??

252:デフォルトの名無しさん
08/01/21 23:01:17
だろうね。説明サイトでは javacomm20-x86.tar を JAVA_HOME/jre/lib/ext に
入れろと書いてあるがちゃんと入ってるか? また入れたディレクトリの JDK が
本当に使われてるか? 下のコマンドでも叩いて確認しる

ls `dirname \`which javac\``/../lib/ext/javacomm20-x86.tar

どうしてもダメならクラスパス設定しる

export CLASSPATH=$CLASSPATH:/path/for/javacomm20-x86.tar

↓と、ここで満を持して lib/ext アレルギー患者が一言

253:デフォルトの名無しさん
08/01/21 23:43:10
└→HDDが一杯で入りません。

254:>>250
08/01/21 23:52:19
>>251
>>252
ご返答ありがとうございます。
classpathですね。明日早速試してみたいと思います。
また>>252さんのJDKが本当に使われているかを
試してみたいと思います。

255:デフォルトの名無しさん
08/01/21 23:58:31
>>246
JREのパスを先に持ってくればいいんじゃね?

256:デフォルトの名無しさん
08/01/22 00:46:07
匿名クラスを使わずにスレッドの生成できるんでしょうか?

257:デフォルトの名無しさん
08/01/22 00:59:39
できる

258:デフォルトの名無しさん
08/01/22 02:07:14
おまいらネットで役に立つと思った情報見つけたら広告くらいクリックしてやれよ。
という独り言。

259:デフォルトの名無しさん
08/01/22 02:45:00
JAVAの練習に簡単なイメージビューアを作っています。

JFrameを継承したメインクラスにJMenubarをaddしてメニューを作っているのですが
ウィンドウを閉じるとメニューも一緒に消えてしまいます。

最後のウィンドウを閉じてもメニューは残るようにするにはどうすればいいのでしょうか?

260:デフォルトの名無しさん
08/01/22 02:59:55
JMenuBar を static 宣言したりしないで、フレームごとに JMenuBar を new して add する。
とエスパー気味に答えてみる。

261:デフォルトの名無しさん
08/01/22 03:09:15
IDEで作ってみて解析してみれば?
最近この手の質問多すぎね?

262:デフォルトの名無しさん
08/01/22 03:14:02
初心者無視スレや死滅スレ以前のはるか昔からですが何か。

263:デフォルトの名無しさん
08/01/22 03:17:17
まあでも、こう思うんだけど如何なの程度の推測持ってからの方が伸びるだろうね

264:デフォルトの名無しさん
08/01/22 04:24:20
Logging API で Log4J で言うところの PatternLayout みたいなのって無いの?
tuka ひょっとしてわざわざ Formatter 作らなきゃダメなのかよ。

265:デフォルトの名無しさん
08/01/22 10:29:03
JDK5.0でのオートボクシングに関する質問です。

byte b = 1;
Integer i = new Byte(b) + new Integer(2);

この処理は問題なく実行されますが、処理の内容と順序は

1.Byte型とInteger型の足し算がアンボクシングでbyte型とint型の足し算になる
2.byte型とint型の足し算の結果はint型になる
3.int型がオートボクシングでInteger型となり代入される

これで合ってますか?
3はいいと思いますが、1-2は不安です。

266:デフォルトの名無しさん
08/01/22 10:36:43
はい

267:デフォルトの名無しさん
08/01/22 11:54:45
>>265
byte 型と int 型の足し算の際に byte 型が int 型に暗黙に型変換される。

268:265
08/01/22 13:43:15
>>266-267
ありがとうございます。

269:デフォルトの名無しさん
08/01/22 15:18:27
java5で配列から部分集合を全て列挙したいのですが,どのようにすればよいでしょうか?

270:デフォルトの名無しさん
08/01/22 15:44:15
if文

271:デフォルトの名無しさん
08/01/22 15:44:17
べき集合ってこと?

272:デフォルトの名無しさん
08/01/22 15:51:30
部分集合の条件を書けよw

273:269
08/01/22 16:20:56
>>270
すみません.もう少し詳しくお願いします.

>>271
はい,べき集合の列挙です.分かり辛くてすみません

>>272
集合の条件はn個の自然数です.

274:デフォルトの名無しさん
08/01/22 16:37:40
まともな質問もできねーのかよw
具体的にやりたいことをきちんと書く

275:デフォルトの名無しさん
08/01/22 16:47:03
宿題スレ向きの内容じゃないの?べき集合の列挙ならアルゴリズムの問題。

276:デフォルトの名無しさん
08/01/22 16:57:12
文字コード変換で悩んでいます。

JIS 8単位符号:JIS X0201を使用して、変換を行いたいですが
実装がわかりません。

例)引数はString 戻り値もString
引数に0が入力された場合、JIS X0201を使用すると30に変換されるのですが
どのように実装を行ったらよろしいでしょうか??


277:269
08/01/22 16:57:47
ごり押しですがべき集合を再帰的に呼び出すことで解決しました.
ありがとうございました.

278:デフォルトの名無しさん
08/01/22 17:15:12
>>277
すぐ解決すんなら書くなよw

279:デフォルトの名無しさん
08/01/22 17:24:04
>>276
> 例)引数はString 戻り値もString

そのインターフェイスは激しく変だぞ。何から何に変換したいの?
たとえば、Javaの1文字をJIX X 0201のコードにしたいのなら、
☆入力は char、戻り値は byte か int

もし、入力が複数の文字なら、
☆入力は String、戻り値は byte[]
じゃない?

JIS X 0201のコードはStringに成り得ないです。




280:デフォルトの名無しさん
08/01/22 17:32:06
"JIS X 0201のコードはStringに成り得ないです。 "
しらなかったです。

戻り値byte[]でも良いです。
結果的にはファイルに書き込めればよいので。

"☆入力は String、戻り値は byte[]
じゃない?"
で実装を教えてください。



281:デフォルトの名無しさん
08/01/22 17:41:22
>>280

inputString.getBytes("JIS_X0201");
これだけ。

ファイルに書きたいだけだったら、
OutputStreamWriter writer = new OutputStreamWriter(
new FileOutputStream(fileName), "JIS_X0201");
writer.write(inputString);
という感じにOutputStreamWriterを使ってもいいね。


282:デフォルトの名無しさん
08/01/22 19:06:11
>>279
こいつアホ?

283:デフォルトの名無しさん
08/01/22 19:23:15
byte[] b = new byte[10];
byte[] temp_hoge = new byte[10];

これらふたつを比較して等しければtemp_Ahogeを返すようにしたいのですがどうすればいいのでしょうか?

if(ここに等しい条件を入れる){
return temp_Ahoge;
}

だと思うのですがアドバイスをお願いします。

284:デフォルトの名無しさん
08/01/22 19:24:29
>> 281
試してみましたが、
ファイルに何も書き出されませんでしたが、どうしてでしょうか??

実装は
String fileName = "C:\\tmp2\\sample.txt";
String inputString = "0";
OutputStreamWriter writer;
try {
writer = new OutputStreamWriter(new FileOutputStream(fileName),
"JIS_X0201");
writer.write(inputString);
System.out.println(inputString);

です。

285:デフォルトの名無しさん
08/01/22 19:34:43
>>280
JavaのStringで保持してるbyteの文字セットはUnicode。
他の文字セットで保持する場合は、変換してbyte配列まま。

>>283
static boolean java.util.Arrays.equals(byte[], byte[])
但し、引数がnull同士の場合もtrueを返す。

286:デフォルトの名無しさん
08/01/22 19:45:19
>>285
レスありがとうございます。
早速使用させていただきます。

287:デフォルトの名無しさん
08/01/22 19:51:28
>>284
さいごにwriter.close()してる?


288:デフォルトの名無しさん
08/01/22 20:44:24
>>287
書き忘れてました。

>>285
すいません。その変換することがよくわからんです。

289:デフォルトの名無しさん
08/01/22 21:48:10
A.javaというファイルとB.javaというファイルがあるとします。
このとき
A.javaからあるものをB.java
に渡したあとB.javaで処理をしてA.javaに返すプログラムを構築したいのですが
どのようなコードを書けばいいですか?

290:デフォルトの名無しさん
08/01/22 21:51:40
質問です。

JavaプログラムでCygwinに対して「javap -c 任意の.class」を行い、その結果を取り込みたいのですがどう行えばいいでしょうか。
ProcessBuilderを使えばいいようなのですが、そこから先が分かりません。
申し訳ありませんがよろしくお願いします。

291:デフォルトの名無しさん
08/01/22 21:52:11
表現があいまい。
プロセス間通信みたいな事したいのならTCP/IPなり叩いてシリアライズされたオブジェクト渡すとか。

クラス間で単に見えれば良いだけならアクセス修飾子つけるとか

292:デフォルトの名無しさん
08/01/22 21:54:50
>>290
ProcessBuilder から Process → InputStream の順に取得すればそこから javap コマンドの出力内容が取れる。

293:デフォルトの名無しさん
08/01/22 21:57:30
cygwin は関係あるんだろーか?

294:デフォルトの名無しさん
08/01/22 21:59:48
そんな質問者トラップに惑わされているうちはまだまだひよっこ。

295:デフォルトの名無しさん
08/01/22 22:01:33
>>289
ファイルを処理するプログラムが希望なのか?

落ち着いて、用語を正しく使って質問しよう

296:291
08/01/22 22:03:46
ややこしいな>>289

297:デフォルトの名無しさん
08/01/22 22:05:02
>>289
public class A{
public static void main(String[] args){
  B b = new B();
  Object nanika = /* 何か */;
  Object kekka = b.shori(nanika)
}
}

public class B{
public Object shori(Object nanika){
  /* 処理 */
  return kekka;
}
}

298:デフォルトの名無しさん
08/01/22 22:05:49
早速のご解答ありがとうございます。

やりたいことは、.classファイルの情報をjavap -cコマンドで取得し、それらの情報を
プログラムで使用したいのです。

本当に初歩的ですいません。。。

299:デフォルトの名無しさん
08/01/22 22:19:00
大変失礼いたしました。
>>295を >>290に対する返答と勘違いしました、申し訳ありません。

試しに書いたプログラムです。

       ProcessBuilder pb = new ProcessBuilder("C://cygwin/Cygwin.bat","ls");
try {
Process p = pb.start();
InputStream stdIn = p.getInputStream();
InputStream errIn = p.getErrorStream();
int c;
while ((c = stdIn.read()) != -1) {
System.out.print((char)c);
}
stdIn.close();
while ((c = errIn.read()) != -1) {
System.out.print((char)c);
}
errIn.close();
int ret = p.waitFor();
System.out.println("process exited with value : " + ret);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
出力は一切ありませんでした。

300:デフォルトの名無しさん
08/01/22 22:24:05
>>299
new ProcessBuilder("bash", "--login", "-c", "\"ls -laF\"")

301:デフォルトの名無しさん
08/01/22 22:42:03
>>296
あいまいすぎてすみません。
A( URLリンク(www.uploda.org) )
というファイルがあってAのなかには

public static void main(String[] args) {
HelloWorldJNI hello = new HelloWorldJNI();
byte[] card_idm = new byte[16];
String temp;
String sid = "0404040404040404";

というコードがあるのですが、0404~という特定のものではなく
Bが受け取る値をそのままAの上の部分に返したいんです。

302:デフォルトの名無しさん
08/01/22 22:42:27
>>300
回答ありがとうございます。

早速試したのですがエラーが、
java.io.IOException: CreateProcess: bash --login -c "ls -laF" error=2

試しに"bash"のみでやったところ同じエラーが返ってきました。
java.io.IOException: CreateProcess: bash error=2

パスか何かの影響なのでしょうか。。
また、Cygwinを無視して "cmd","cd ../"とやったところ

Microsoft Windows XP [Version x.x.xxxx]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Documents and Settings\workspace\test>

という結果になり、cd ../については反映されていないようなのですが。。

303:デフォルトの名無しさん
08/01/22 22:43:47
>>302続き

という結果になり、cd ../については反映されていないようなのですが。。

304:デフォルトの名無しさん
08/01/22 22:45:50
Eclipse3.3でtomcat6.0+JSPによるウェブアプリケーションを開発しています。
あるクラス(hoge)の作成には成功するのですが、そのクラスをJSPファイルから参照しようとすると
「NoClassDefFoundError: foo/bar」という例外が投げられてしまいます。
見つからないクラス(bar)というのはEclipseの機能である「ユーザー・ライブラリーの追加」で追加したJARファイルの中のクラスです。
・JSPファイルからこのクラスファイルを呼ばないようにする
・JSPやtocatなどを使用せず、かわりにmainメソッドを持つクラスを新たに作成し同様の処理を行う
などとすると、上記例外は生じません。
「ユーザー・ライブラリーの追加」によって追加されたクラスを含むクラスをJSPファイルで利用することはできないのでしょうか?
少々ややこしいですが、よろしくお願いします。

305:デフォルトの名無しさん
08/01/22 22:52:27
>>302
フルパスで書け。"C:\\cygwin\\bin\\bash.exe"

306:デフォルトの名無しさん
08/01/22 23:02:48
>>305

解決いたしました、本当にありがとうございます。

307:デフォルトの名無しさん
08/01/22 23:06:23
>>304
ユーザライブラリで追加した JAR ファイルを WEB-INF/lib の下に置け。

308:デフォルトの名無しさん
08/01/22 23:13:42
>>301java bean使うとかプロパティファイルに追い出すとか単にpublic void setSID()なメソッドをAに定義するとか。

設計の問題なんだけどjavaの仕様自体は理解してるの?

してないならお勉強。

309:デフォルトの名無しさん
08/01/22 23:28:41
>>308
レスありがとうございます。
卒業研究でJavaを使っているのですが全然わからなくて・・・。

310:デフォルトの名無しさん
08/01/22 23:29:39
>>308
public void setSID()なメソッドをAに定義するというのは
A.javaのプログラム中に
public void setSID(){
というのを作って中で呼び出せばいいのでしょうか?

311:デフォルトの名無しさん
08/01/22 23:34:40
初めっから勉強し直せ

312:デフォルトの名無しさん
08/01/22 23:51:35
>>309
朝まで一夜漬けだ

浅煎り珈琲 - Java アプリケーション入門
URLリンク(www.nextindex.net)

313:デフォルトの名無しさん
08/01/23 00:26:07
>>312
またそれかよ
宣伝乙

314:login:Penguin
08/01/23 00:46:36
String fileName = "C:\\tmp2\\sample.txt";
String inputString = "0";
OutputStreamWriter writer;
try {
writer = new OutputStreamWriter(new FileOutputStream(fileName),
"JIS_X0201");
writer.write(inputString);

と実装してみましたが、ファイルにはinputStringの値"0"が書き出された
だけでした。

やりたいこととしては、"0"を入力したときにJIS_X0201の値の"30"を
出力したいのですが、どうすればよろしいでしょうか??

315:デフォルトの名無しさん
08/01/23 00:54:27
>>314
もしかして, '3' と '0' という文字を書き出したいの?

316:login:Penguin
08/01/23 01:04:10
"0"をJIS_X0201で読み込むと"30"という値になると思います。
自分の認識が間違っているかもしれませんので、"3","0"と分割して
書き出すやりかたがあれば教えてください。


317:デフォルトの名無しさん
08/01/23 01:23:58
>>314,316
ある文字をJIS X 0201にエンコードしたときのバイト列を16進数の文字
列にしたい、ということなのね。

であれば、OutputStreamWriterは忘れて、
inputString.getBytes("JIS_X0201") で得たバイト列を1バイトずつ
String.format("%02x", ... で加工していくので良さそう。


318:login:Penguin
08/01/23 01:31:48
>>317
ご理解ありがとうございます。

実際の実装方法を聞いてもよいですか??
ファイルに書き込む処理まで行いたいです。

319:デフォルトの名無しさん
08/01/23 01:37:47
さすがに自分でやれよw

320:デフォルトの名無しさん
08/01/23 01:40:15
>>318
317でここまで具体的にヒントが書いてあるんだから、あとは自分で書き
なさいな。


321:login:Penguin
08/01/23 01:42:42
ありがとうございます。
やってみるです。

322:デフォルトの名無しさん
08/01/23 04:12:01
BigDecimalクラスで平方根の計算をしたいんですが、
これって用意されてないんでしょうか?
ググって見つかって喜んだらRubyでした orz


323:デフォルトの名無しさん
08/01/23 08:05:16
用意されてないから自分で書くしかない。

324:デフォルトの名無しさん
08/01/23 08:18:10
>>322
やはりそうですか。ありがとうございました。

325:304
08/01/23 08:31:13
>>307
レスが遅くなってしまいすみません。
先ほど試してみたところ、上手くいきました。
ありがとうございました。

326:デフォルトの名無しさん
08/01/23 11:22:00
すみません。初心者の質問です。

System.out.printf("税金: $%.2f x 5.0% = $%.2f. \n", calcp, calctax);

で 5.0% と % を表示したいのですが、どうすればよろしいでしょうか?
よろしくお願いします。

327:デフォルトの名無しさん
08/01/23 11:24:38
>>326
%%

328:デフォルトの名無しさん
08/01/23 11:30:06
>>327
ありがとうございます!
やっとできた・・・(´∀`)

329:デフォルトの名無しさん
08/01/23 13:32:38
オブジェクトをシリアライズ化してセーブしたファイルをロードし、
再びセーブしようとすると、こんなエラーが発生します
Exception in thread "AWT-EventQueue-0" java.lang.InternalError: Unable to bind [ファイル名] to parent
at sun.awt.shell.Win32ShellFolder2$4.call(Unknown Source)
at sun.awt.shell.Win32ShellFolder2$4.call(Unknown Source)
at sun.awt.shell.Win32ShellFolderManager2$ComInvoker.invoke(Unknown Source)
at sun.awt.shell.Win32ShellFolder2.getIShellFolder(Unknown Source)
at sun.awt.shell.Win32ShellFolder2$18.call(Unknown Source)
at sun.awt.shell.Win32ShellFolder2$18.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at sun.awt.shell.Win32ShellFolderManager2$ComInvoker$3.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
対処方法は無いでしょうか

330:デフォルトの名無しさん
08/01/23 18:38:57
現在htmlから受け取ったデータをサーブレットで処理し、JSPで表示させるということをしています。
受け取ったデータをサーブレット内でDBの中にあるデータと照合し、
照合結果を出すということをしたいのですが、
サーブレット内の処理がうまくいきません。

ソースは

public class Servlet extends HttpServlet{
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException{
req.setCharacterEncoding("Shift_JIS");
res.setContentType("text/html;carset = Shift_JIS");

//パラメータを取得
String id = req.getParameter("id");
String pas = req.getParameter("pas");
String result = "";

try{
// ドライバクラスをロード
Class.forName("org.gjt.mm.mysql.Driver");

// DBへ接続
String url = "jdbc:mysql:///testdb?user=root&password=admin&useUnicode=true&characterEncoding=sjis";
Connection con = DriverManager.getConnection(url);

// プレペアードステートメントオブジェクトを生成
PreparedStatement stmt = con.prepareStatement("SELECT * FROM Login WHERE ID = ? AND PASS = ? ");


331:330
08/01/23 18:40:21
>>330の続き

//IN パラメータ値を設定する
stmt.setString(1,id);
stmt.setString(2,pas);

// クエリーを実行して結果セットを取得
ResultSet rs = stmt.executeQuery();

//指定した条件と一致しているかどうか。
if(rs.next() == true){
result = "ログインに成功しました。";

}else{
result = "ログインに失敗しました。";
}



332:330
08/01/23 18:40:52
>>331の続き
// データベースから切断
stmt.close();
con.close();

}catch(Exception e){
e.printStackTrace();
}

//セッションスコープで値を渡す
HttpSession session = req.getSession();
session.setAttribute("result", result);
RequestDispatcher rd = req.getRequestDispatcher("./loginResult.jsp");
rd.forward(req, res);
}
}

です。
コンパイルはできるのですが、処理を行っているときにtry{}の中を通らないみたいです。
resultの値をJSPで表示させたときnullと出てしまいます。
どのような処理をしたらresultに値を渡せるのかが分かりません。
よろしければ、ご教授お願いします。

333:デフォルトの名無しさん
08/01/23 19:46:18
例外は?
HTMLの方のソースは?
そもそもdoPostにたどり着いてんの?
System.outなりデバッカなりで処理をおった?

334:RoundTrip
08/01/23 20:49:01
質問:
同じinterfaceを持つクラスのインスタンスが、配列になっています。
これらのインスタンスにおいて、変数やインスタンスを共有したい場合
どのような方法があるでしょうか。

よろしくお願いします。

335:デフォルトの名無しさん
08/01/23 20:58:30
>>334
クラス変数

336:デフォルトの名無しさん
08/01/23 20:59:13
配列を所有している側のオブジェクトに所有させて、
そこに問い合わせたら?

337:デフォルトの名無しさん
08/01/23 21:42:31
前回はご回答ありがとうございました。
無事RS232Cのプログラムを作る事ができましたが
エラーが起こって困っています。
どうか、知恵を貸してください。
:作りたいもの:
Rs232Cを用いたシリアル通信を行なうプログラム
:参考サイト:
URLリンク(www.ais-com.co.jp)
URLリンク(www.02.246.ne.jp)


338:デフォルトの名無しさん
08/01/23 21:43:13
:プログラム:
//rs232c.java

import java.io.*;
import java.util.*;
import java.text.*;
import javax.comm.*;
import gnu.io.UnsupportedCommOperationException;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;

class rs232c1{
public static void main(String args[]){
byte rs232c[];
rs232c = new byte[10];
try{
CommPortIdentifier ports = CommPortIdentifier.getPortIdentifier( "COM1" );
SerialPort port = ( SerialPort )ports.open( "RS232C", 1000 );
port.setSerialPortParams( 9600,SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE );
port.setFlowControlMode( SerialPort.FLOWCONTROL_NONE );
InputStream in232c = port.getInputStream();
//読み込み
in232c.read(rs232c);
System.out.println("read="+rs232c);
in232c.close();
port.close();
}
catch( Exception e ) {
System.out.println( "Error:" + e.getMessage() );
}
}
}

339:デフォルトの名無しさん
08/01/23 21:47:43
:実行後のエラーログ:
{\rtf1\ansi\ansicpg932\deff0\deflang1033\deflangfe1041{\fonttbl{\f0\froman\fprq1\fcharset128 \'82\'6c\'82\'72 \'82\'6f\'83\'53\'83\'56\'83\'62\'83\'4e;}}
{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\lang1041\f0\fs20 #\par
# An unexpected error has been detected by HotSpot Virtual Machine:\par
#\par
# SIGSEGV (0xb) at pc=0xb7f6bedf, pid=2701, tid=16384\par
#\par
# Java VM: Java HotSpot(TM) Client VM (1.4.2_16-b05 mixed mode)\par
# Problematic frame:\par
# C [ld-linux.so.2+0x8edf]\par
::: 中略 :::
PATH=/usr/java/j2sdk1.4.2_16/bin:/usr/java/j2sdk1.4.2_16/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/mysql/bin:/usr/local/jdk1.2.2/bin:/usr/local/mysql/bin:/usr/local/jdk1.2.2/bin\par
USERNAME=root\par
LD_LIBRARY_PATH=/usr/java/j2sdk1.4.2_16/jre/lib/i386/client:/usr/java/j2sdk1.4.2_16/jre/lib/i386:/usr/java/j2sdk1.4.2_16/jre/../lib/i386\par
SHELL=/bin/bash\par
--------------- S Y S T E M ---------------\par
\par
OS:Linux\par
rlimit: STACK 8192k, CORE 0k, NPROC 4031, NOFILE 1024, AS infinity\par
load average:-0.01 0.00 -0.01\par
\par
CPU:total 1 family 15, cmov, cx8, fxsr, mmx, sse, sse2\par


340:デフォルトの名無しさん
08/01/23 21:48:38
>>337
>>338
>>339
長文失礼しました。

341:デフォルトの名無しさん
08/01/23 21:58:34
分割して書きこむ暇があったら適当なうpろだに上げろ。

342:デフォルトの名無しさん
08/01/23 22:06:26
>>341
別に分割はしてないんじゃね?

343:デフォルトの名無しさん
08/01/23 22:15:08
ネイティブライブラリがクラッシュしてる。それ以上は知らん。

344:デフォルトの名無しさん
08/01/23 22:41:12
>>341
データをアップしました。
URLリンク(age3.tubo.80.kg)


345:RoundTrip
08/01/24 00:40:07
>>335
クラス変数って、どのクラスのでしょうか。
良ければご指導お願いします。

>>336
配列を所有している側のインスタンスに問い合わせる方法って
どんなものがありますか?
被せたinterfaceの関係で、あんまり引数使いたくないのです。
やっぱり、引数で渡すしか無いでしょうか…。

346:デフォルトの名無しさん
08/01/24 11:13:10
誤爆してしまいましたので、何卒、こちらでご指導お願い申し上げます。

次の選択肢より正しい記述をすべて選びなさい。

1:java.io.FileReaderはテキストファイルから文字を行単位で読み込むクラスである。
2:new File("bbs.txt")と記述すると、新しいファイルが作成される。
3:ファイルの操作を行う前には、Fileクラスのopenメソッドを必ず使用する。
4:BufferedReaderクラスのreadLineメソッドは、ファイルの終端までを読み込む。
5:FileクラスのisFileメソッドの戻り値がfalseだった場合は、そのファイルが無いか、またはその名がディレクトリである事を示している。


347:デフォルトの名無しさん
08/01/24 11:16:48
>>346
javadocみれば一発!正解が全部書いてあるよ!

はい、次の人どうぞ

348:デフォルトの名無しさん
08/01/24 11:18:28
>>346
全部間違い。

349:デフォルトの名無しさん
08/01/24 11:27:14
>>347さん、>>348さん、
激しくありがとうございました。


350:デフォルトの名無しさん
08/01/24 11:31:23
5.は正解じゃないかと思ってjavadocを読み返したが、
確かにファイルでもディレクトリでもない場合がありうるみたいだね。

しかし、ファイルでもディレクトリでもないものってなんだろう?

351:デフォルトの名無しさん
08/01/24 11:39:27
conとかnulかなと思って試してみたら、isFileがtrue返した。
調べてみたら、java6からfalse返すように変ったみたい。

352:デフォルトの名無しさん
08/01/24 11:42:40
>>350
NamedPipe とか デバイスファイル とか。
Javaが動作するプラットフォームはWindowsだけじゃないし。

353:デフォルトの名無しさん
08/01/24 11:47:37
>>351

次のメソッドの動作が変更されました。

  * CON、NUL、AUX、LPT などの予約されたデバイス名には必ず false を返すように、
     File.isFile() Windows 実装が変更されました。以前の戻り値は true で、それが
     Unix で使用するデバイスの動作と整合していないことから、対象ユーザーはこれを
     バグとみなしていました。
URLリンク(java.sun.com)

354:デフォルトの名無しさん
08/01/24 11:58:36
HIDDEN ファイル (存在するが見えない)
シンボリックリンク (リンク先がないのとシンボリックリンク自体が存在しないのとは違う)
デバイスファイル (扱いはファイルシステムに依存)

だいたいファイルとかディレクトリとか、問題が階層型ファイルシステムに限定だし。
AS/400 なんかメモリと二次記憶の区別がなくてファイルっつーか全部テーブルだし。

355:デフォルトの名無しさん
08/01/24 14:02:38
大学の研究でJava3Dを勉強していて、彩画3Dというフリーのクラスライブラリを使って
参考文献を頼りにプログラムを試作しているのですが
URLリンク(www11.axfc.net) PASS:java

回転する球体をストップさせた時、2つの球体が初期位置に戻らないようにして停止させた位置で
止まるようにするにはどうしたらいいのでしょうか

356:デフォルトの名無しさん
08/01/24 14:03:25
すいません、質問です。
MouseListenerインターフェイスを実装しようとしたんですが、
Test は abstract でなく、java.awt.event.MouseListener 内の abstract メソッド mouseReleased(java.awt.event.MouseEvent) をオーバーライドしません。
という風にコンパイルエラーが出て、困ってます。
全てのメソッドを実装しているはずなのですが…何故なんでしょうか?

import java.awt.event.MouseListener;

public class Test implements MouseListener {
public static void main (String args[]) {
}

public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
}

357:デフォルトの名無しさん
08/01/24 14:26:21
>>356
スペルミスの可能性70%

358:デフォルトの名無しさん
08/01/24 14:45:20
>>357
その可能性考えて何度もAPIとにらめっこしたんだけど、
どこにも誤字は見当たらないんですよね…
KeyとMouseMotionもエラーになるが、その他のリスナーはちゃんと実装できるから余計わからない。

359:デフォルトの名無しさん
08/01/24 14:47:09
>>356
MouseEvent が import されていない。

360:デフォルトの名無しさん
08/01/24 14:56:12
>>359
ごめん、他のリスナーで試そうとして今気づいた。orz
でも、import java.awt.event.*;にしても相変らずコンパイルエラー起こすようです。
スレ無駄に消費して申し訳ない。

361:デフォルトの名無しさん
08/01/24 15:12:23
>>360
直した新しいソースと新しいエラーメッセージを

362:デフォルトの名無しさん
08/01/24 15:21:47
>>361
import java.awt.event.*;

public class Test implements MouseListener {
public static void main (String args[]) {
}
public void mouseReleased(MouseEvent e) {}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
}
エラーメッセージ:
Test.java:3: Test は abstract でなく、java.awt.event.MouseListener 内の abstract メソッド mouseReleased(java.awt.event.MouseEvent) をオーバーライドしません。

直す前とエラー内容は変わってないみたいです。

363:デフォルトの名無しさん
08/01/24 15:26:56
>>362
なんで MouseListenerをインポートしてないのに
implements MouseListenerでエラーが出てないんだ?

364:デフォルトの名無しさん
08/01/24 15:28:21
>>363
import java.awt.event.*;

365:デフォルトの名無しさん
08/01/24 15:31:40
>>362
手元でやってもエラーでないけど。

366:デフォルトの名無しさん
08/01/24 15:35:46
>>362
んー。Testと同じ階層に同名のMouseEventやらが存在する、とか…

367:デフォルトの名無しさん
08/01/24 15:46:50
>>366
Testを別の場所に移動したら動きました!
最初に実験した奴の名前がMouseEventだったのが原因だったみたいです。
盲点でした。本当にありがとうございます!

368:デフォルトの名無しさん
08/01/24 15:54:55
今回の例では、import 完全修飾クラス名、で宣言すれば問題ない。
import java.awt.event.MouseEvent;

同一クラス内に同名のクラスが混ざったときも似たような方法で回避可能。
java.util と java.sql の Date は良く有る話。
URLリンク(www.atmarkit.co.jp)

369:デフォルトの名無しさん
08/01/24 17:22:22
Exception in thread "Thread-6" java.lang.ArrayIndexOutOfBoundsException: 8
at ipmsg.HelloWorldJNI.btoS(HelloWorldJNI.java:35)
at ipmsg.IDManager.getPID(IDManager.java:71)
at MainWindow.makeSortKey(MainWindow.java:270)
at MainWindow$RefreshList.run(MainWindow.java:304)
このエラーの意味がわからなくて困っています。
もしよろしければ教えていただけないでしょうか。

370:デフォルトの名無しさん
08/01/24 17:28:55
java.lang.ArrayIndexOutOfBoundsException

371:デフォルトの名無しさん
08/01/24 17:53:08
>>369
意味:バーカ、添字が8になってんぞ(藁

372:デフォルトの名無しさん
08/01/24 19:27:31
Javaでデータベース(MySQL)を操作して予定などを管理するプログラムをEclipseで作っています。
Eclipse上では動くのですが、jarファイル化してjarファイルから実行しようとするとソフト自体は動くのですが、
データベースに接続できません。
どうしたらよいのでしょうか?

373:デフォルトの名無しさん
08/01/24 19:42:04
エスパー募集中

374:デフォルトの名無しさん
08/01/24 19:51:27
>>372
エスパーします。
mysqlのjdbcドライバがjarを実行するときのパスに入っていません。
-cp オプションで指定しましょう。

375:デフォルトの名無しさん
08/01/24 19:54:41
ありがとうございます。
今からやってみます。

376:デフォルトの名無しさん
08/01/24 22:19:08
>>371
無事解決しました。
ありがとうございました。

377:デフォルトの名無しさん
08/01/25 09:49:45
Ant の質問ここで良いかな?
<property> って一度設定したら再設定できないんだけど <antcall> にパラメータのような
可変値を渡したい場合ってどうするの?

378:デフォルトの名無しさん
08/01/25 10:53:37
>>377
param
URLリンク(www.jajakarta.org)

379:デフォルトの名無しさん
08/01/25 12:39:01
あらかじめ複数のタブがあり、あるタブが選択された瞬間に
そのタブのウィンドウサイズを変更したいのですが、どのようにすればできるのでしょうか?

380:デフォルトの名無しさん
08/01/25 14:07:16
JTabbedPaneにaddChangeListenerしといて、stateChangedが来たらサイズを変えればいいんじゃないかな

381:デフォルトの名無しさん
08/01/25 15:34:42
>>380
ちょっと調べてみますね。
ありがとうございました。

382:デフォルトの名無しさん
08/01/25 16:29:04
クラスにどんなメソッドがあるのかを見て勉強しているのですが

docs/ja/api/index.html
java.util.Scannerを見るとテキストスキャナということが分かるのですが

例えばファイルの中に特定の文字列を見つけ出すメソッドはあるのかな?
と思ったときどのように探していいのか分からないでいます
探し方をお教えていただけないでしょうか

383:デフォルトの名無しさん
08/01/25 16:30:46
ググレカス

384:デフォルトの名無しさん
08/01/25 16:46:01
ググレというかjavadocよく嫁の方じゃないか?

385:デフォルトの名無しさん
08/01/25 16:51:32
>>382
基本は「ググれ」だけど、javadocから探せないこともない。
パッケージの一覧を見ると、ある程度は絞れるよ。
例えば、ファイル入出力ならjava.ioパッケージ。
文字列の検索なら、文字列のクラスjava.lang.String自身を調べるか、
またはjava.util.regexパッケージ。
両方見ると、「ファイルの中に特定の文字列を見つけ出す」処理をいっぺんに行う
メソッドが見つからないことが分かるので、
ファイルを読みとるクラスと文字列を検索するクラスを
組み合わせて自分で実装する必要があると理解できる。

とまあ、こんな感じで。

386:デフォルトの名無しさん
08/01/25 17:12:38
>>383 >>384 >>385
ありがとうございます
勉強になりました

387:デフォルトの名無しさん
08/01/25 18:15:58
>>385
さすがにそれは無理がある。現実的じゃ無い。
書いてあることを探し出すのは容易だが
書いてないことを探し出すのは相当根性がいるぞ。
ググったほうが早いと思うな。

388:デフォルトの名無しさん
08/01/25 18:27:15
いくらパッケージからある程度想像付くとはいえ、API リファレンスってのは
目的から引くためのリファレンスではない。API リファレンスなんてのは所詮
部品の説明であって、やりたいことを実現するためにどの部品をどう組み
合わせれば良いかの説明は薄いと言わざるを得ない。

389:デフォルトの名無しさん
08/01/25 18:36:56
>ファイルの中に特定の文字列を見つけ出すメソッドはあるのかな
の場合はストリームから文字列取り出せば良いだけだからjavadoc読んでたら分かると思うんだが。

ググってもjavadoc読んでもそれそのものは無いしさ。
APIリファレンス読んでみるしかないんじゃないか?

390:デフォルトの名無しさん
08/01/25 18:43:55
まずはリファレンスで検索しようよw


391:デフォルトの名無しさん
08/01/25 21:11:41
無いものをどうやって検索しろと?あんた脳に蛆が沸いてない?

392:デフォルトの名無しさん
08/01/25 21:16:55
無いということがわかるだろw

393:デフォルトの名無しさん
08/01/25 21:18:54
まあ落ち着け

394:デフォルトの名無しさん
08/01/25 21:52:50
最初はindexOfでいじゃないか

395:デフォルトの名無しさん
08/01/25 21:58:46
>>382 startsWith("String")とendsWith("String")使えば簡単な文字列解析できるよ。
java歴1年になるけど今日偶々javadoc見てたらみっけたw
くは~ 節穴俺orz

396:デフォルトの名無しさん
08/01/25 22:05:32
javadocの見方がわからないポスケテ

397:デフォルトの名無しさん
08/01/26 02:21:41
正八面体は何とか作製することが出来たのですが、どうしても正六面体が出来ません。
正六面体の座標値はどういう風に求めれば良いのでしょうか?

398:デフォルトの名無しさん
08/01/26 02:28:24
数学板かと思ったw

399:デフォルトの名無しさん
08/01/26 08:38:01
グーグル先生に聞けよ

400:デフォルトの名無しさん
08/01/26 08:39:21
ちょっとまて、正六面体って立法体じゃねーかw

401:デフォルトの名無しさん
08/01/26 08:48:17
>>397
正八面体と正六面体は双対の関係にありますので、
正八面体が書ければ正六面体も書けると思います。

402:デフォルトの名無しさん
08/01/26 09:30:30
>>378
すまん、ぜんぜん気づかなかった

403:デフォルトの名無しさん
08/01/26 11:31:49
JDK6.0日本語ドキュメントの始めのページをIEで開いても
ましっろな空白のホームページになってしまって見ることが出来ません。
ワードで開くとちゃんと表示されます。
環境はwindows vista です。
本当に困っています。
よろしくお願いいたします。

404:デフォルトの名無しさん
08/01/26 11:35:24
いえいえ、こちらこそよろしくお願いいたします。

405:デフォルトの名無しさん
08/01/26 11:41:33
お構いもしませんで。

406:デフォルトの名無しさん
08/01/26 12:03:22
ありがとうございます。
親切にしていただいたおかげで背が3cmも伸びました!
本当にオススメです。

407:デフォルトの名無しさん
08/01/26 12:28:37
ではお言葉に甘えさせていただきます

408:デフォルトの名無しさん
08/01/26 12:37:52
>>403
WindowsUpdateする

409:デフォルトの名無しさん
08/01/26 17:21:39
座標値を指定してもならないのです…
もうちょっとグーグル先生に相談してきます

410:デフォルトの名無しさん
08/01/26 18:02:14
指定したURLのソースコードを読み込みたいのですが、HttpURLConnection.getInputStream()が重たいようであまり速度がでません
以下のプログラムより高速にソースコードを取得できる方法があったら教えてください
よろしくお願いします

HttpURLConnection huc = (HttpURLConnection)new URL("URLリンク(www.google.com)").openConnection();
InputStream is = huc.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
String s;
while((s = br.readLine()) != null){
  source += s;
}


411:デフォルトの名無しさん
08/01/26 18:52:48
ネット回線が遅いんじゃないのか

412:デフォルトの名無しさん
08/01/26 18:56:25
javacにパスが通っていれば、コンソールでjavacを実行するとヘルプみたいなのが
表示されるんですか?

413:デフォルトの名無しさん
08/01/26 18:57:44
そう

414:デフォルトの名無しさん
08/01/26 19:20:10
ありがとうございます。
それでしたら、僕はパスが通っていません。
XPでPathを更新したら、XPの再起動が必要なんでしょうか?

415:デフォルトの名無しさん
08/01/26 19:35:25
コマンドプロンプトの再起動は必要

416:デフォルトの名無しさん
08/01/26 19:53:23
>>18
書籍Java Puzzlerにそんなクイズがあった気がするぞ

417:デフォルトの名無しさん
08/01/26 20:31:03
>>415
そのとおりでした。ありがとうございました。

418:デフォルトの名無しさん
08/01/26 21:46:09
appletviewerでアプレットを実行する時、実行するアプレットを引数で指定しますが
その拡張子がjavaであるのはなぜですか?

419:デフォルトの名無しさん
08/01/26 21:52:01
>>410
getInputStream だと確定してるなら、何も言うことは無い。

・Stringの接合はメモリと時間が余分にかかる。Stringは可変バッファではない。
・データ取得を高速にするだけならStreamのまま。Readerにしない。

>>418
別にそんな決まりはない。
URLリンク(java.sun.com)

420:デフォルトの名無しさん
08/01/26 22:17:07
Java Media APIsのスレ立てたんでこのスレの範疇を超える以下のAPIは

【JMF】Java Media APIs【JOGL】
スレリンク(tech板)l50

に誘導してください。

・Java Media Framework (JMF)
・Java Sound API
・Java 3D
・Java Binding for OpenGL(JOGL)
・Java Advanced Imaging(JAI)
・Java Image I/O
・Java 2D
・Java Speech API
・Java Telephony API(JTAPI)

421:デフォルトの名無しさん
08/01/26 22:21:58
なんでわざわざ糞スレ立てんの?

422:デフォルトの名無しさん
08/01/26 22:37:39
おまいみたいな奴のため

423:デフォルトの名無しさん
08/01/26 22:50:47
おまいみたいな奴のため

と書こうとしたがすでにry

424:デフォルトの名無しさん
08/01/27 00:50:40
コンソールへの文字列出力について教えてください。
7-zipでファイルを圧縮、展開すると下記のようなメッセージが表示されます。

7-Zip 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06
Scanning
Updating archive test.zip
Compressing fveupdate.exe
Compressing HelpPane.exe
Compressing hh.exe
Compressing iis7.log
Compressing MEMORY.DMP 4%

このCompressing <ファイル名>ってのがゾロゾロ表示されて進捗を示すのですが
一番下ってか最新の行にだけ進捗のパーセンテージが表示されるんです。

これをパクりたいのですが、どうすれば良いのか分かりません
System.outを調べたのですが、一度表示した行を修正するなんて方法は書いてないですし
javaで同じ事をするにはどうすれば良いでしょうか。

425:デフォルトの名無しさん
08/01/27 01:06:43
\r

426:デフォルトの名無しさん
08/01/27 01:11:34
\b

427:デフォルトの名無しさん
08/01/27 01:16:26
linux系だとエスケープでできるけどwinは無理

428:デフォルトの名無しさん
08/01/27 01:35:34
>>427
ANSI.SYSだっけ、組み込んだらできないかな?
やってもないけど、昔コマンドラインでエスケープシーケンス動かそうと思ったら
そういう解決方法があったとおもうなぁ。

429:デフォルトの名無しさん
08/01/27 01:53:30
以上、まぬけな二人組でした

430:デフォルトの名無しさん
08/01/27 04:00:20
Windows95,98は標準で組み込まれてるけど2000,XPでは外されたってやつ?
それMS-DOSの方じゃなかったかな。

431:デフォルトの名無しさん
08/01/27 06:34:40
\r だろ、フツー。

432:デフォルトの名無しさん
08/01/27 09:26:23
Collection.sortでStringの並びをDBからORDER BYしたものと一致するようにしたいのですが
Comparatorでどう実装するでしょうか?

433:デフォルトの名無しさん
08/01/27 10:47:08
DBからORDER BYするときに使うカラムで比較すればいい

434:デフォルトの名無しさん
08/01/27 10:59:46
各カラムを別々のコレクションに入れてるならちんぽ

435:デフォルトの名無しさん
08/01/27 11:00:47
>>432
Stringは java.lang.Comparable を実装してるから Collections.sort(List) が使える。
また、TreeSet 等の実装でもそのまま使うことが出来る。

但し、StringではUnicodeで比較するので、他の文字セットの並び順にする場合は、
そのバイト配列を取得し、比較すること。

Stringを保持するRow を並び替えるときは、ComparatorでString.compareTo等を流用。

436:デフォルトの名無しさん
08/01/27 11:05:14
取ってきたときの順序を何らかの方法で覚えておく(Listや順序付きMapに入れるなど)のが一番カタい。(と言うか、俺ならそうする)
そもそも order by してないとかだと、DBの比較アルゴリズムを調べてそれと同等なComparatorを自力で実装するしかない。

437:デフォルトの名無しさん
08/01/27 16:11:28
クラスのprivateに関して質問があるのですが教えていただけないでしょうか?
内容は変数を外部からいじられたくないときにprivateをつけると書いているのですが概要がよくわからないでいます

例えば car.javaに
class Car {
private int weight;
}

// コンストラクタ//
Car(int weight) {
this.weight = weight;
}

void setWeight(int weight)
this.weight = weight;
}

setcar.javaに
Car vitz = new Car(100);
vitz.setWeight(200);

外部ファイルからのvitz.setWeightを実行しているのに値が変更できてしまう理由が分からないでいます
vitz.setWeight();はvitz内のメソッドとなっているので内部になっているのでしょうか?

438:デフォルトの名無しさん
08/01/27 16:15:38
private メンバは外部クラスから vitz.weight = 100; とか直接やられないようにするもの。
setWeight() で間接的に変更するのは問題ない。メソッドにしておくことで後で内部構造や
動作に変更があっても Car クラス内で対処できる (ことが多い) から。

public void setWeight(int weight){
  this.weight = weight;
  recalculateWeightBarance();
}

439:デフォルトの名無しさん
08/01/27 16:18:15
あれ、書き込みショートカット押してしまった orz

recalculateWeightBalance();

// 最適なウェイトバランスを再計算
private void recalculateWeightBalance(){
  // ...
}

440:デフォルトの名無しさん
08/01/27 16:32:32
Carクラス生成後にweight変数をいじられたくない場合は、セッターメソッドをCarクラスに作らなければよい。
それはクラスを作る人間の自由。

441:デフォルトの名無しさん
08/01/27 17:49:39
j2sdk1_3_1_21で動作するプログラムを
j2sdk1_4_2_16でプログラムを動作させるにはどうすれば良いですか?


442:デフォルトの名無しさん
08/01/27 17:51:56
コンパイル

443:デフォルトの名無しさん
08/01/27 18:09:25
コンパイルするとエラーがいっぱい出るんですけど…

444:デフォルトの名無しさん
08/01/27 18:13:25
先生:エラーが出たらどうしますか?
ゆとり:2ちゃんにエラーがいっぱい出たとカキコします

445:デフォルトの名無しさん
08/01/27 18:22:17
2ちゃんに書いても解決しない

446:デフォルトの名無しさん
08/01/27 19:21:43
せめてどんなエラーが出たとか書けよ。学生なんだろうけど。

447:デフォルトの名無しさん
08/01/27 19:32:27
java使ってるプロジェクトって開発環境がぐちゃぐちゃなの多くてヤダな、なんでだろう。
開発環境さえキチンと整っていれば結構良い言語なのに
いままで何回もJAVA案件の仕事したことあるけど、たいていどこのチームもデバッグはSystem.outPrintで変数の中身みてたりする。
時代を逆行してどうすんだと毎回思う。
ぶっちゃけ.netの方が楽だわ。

448:デフォルトの名無しさん
08/01/27 19:33:30
>>824
あ,この場合「棒」を弄っても「おいなりさん」を弄っても1としてカウントしてね^^


449:448
08/01/27 19:33:58
すみません誤爆です><

450:デフォルトの名無しさん
08/01/27 19:42:46
これは良い誤爆

451:デフォルトの名無しさん
08/01/27 19:48:02
>>447
junit使わないの?

452:デフォルトの名無しさん
08/01/27 19:54:11
>451
使わないよ


453:デフォルトの名無しさん
08/01/27 20:01:37
個人的には.NET、というかMSが出すものの方が
時代に逆行しているように思えることが多いな
なんか、かれらは自動化とか全く考慮してくれないし

454:デフォルトの名無しさん
08/01/27 20:12:26
ビルドの自動化とかやってるじゃないか
ExpressEditionばっかり使ってるからそんなこと言うんだよ
Team Systemを使いなさい

Javaはオープンだけど、その分、いろんなものが出てきて分かりづらくなる
.NETならMSのやり方に従うだけでいい
基本的なものは全部スイートに用意されている
逆に言えばMSのやり方に拘束される

まぁどっちがいいかは対象とするシステムと要員で決まってくるから、個人がどうこういってもね

455:デフォルトの名無しさん
08/01/27 20:25:42
>>438 >>440
ありがとうございます
外部内部で考えるのではなく
直接的か間接的かで考えると分かりました

456:デフォルトの名無しさん
08/01/27 20:25:46
Reporting Servicesとか、どうやってテストの自動化すりゃいいんだよ
教えてくれ

457:デフォルトの名無しさん
08/01/27 20:58:06
いまどきタダでIDEとデバッガが使えるのに何言ってんだこいつは?

458:デフォルトの名無しさん
08/01/27 21:14:40
Reporting Services知らない?

459:デフォルトの名無しさん
08/01/27 21:20:22
まぁJavaスレだしね

460:デフォルトの名無しさん
08/01/27 21:34:11
Team System使えばReSharper、NUnit、NUnitAspあたりは不必要になるんか?
なら検討したいけど、そうじゃないだろ?
結局MSオンリーじゃまともなIDEじゃないんだよ。
そこらへん含めて考えたら、Javaも.NETも大して変わらん。
>456が言うように、Reporting Serviceとかノンコーディングを謳ってるものは
確かにテストの自動化のやりようがないけどな。

461:デフォルトの名無しさん
08/01/27 21:45:22
Team SystemはテストツールがIDEに組み込まれてるだろ
ここで意見が出るか出ないかで判断するより、製品を調査したほうが確実

462:デフォルトの名無しさん
08/01/27 21:47:53
いや、テストツールが含まれてることは知ってるけど、
ReSharperとかの代わりになるようなものじゃないだろ。
ReSharperはテストだけじゃないし。
そういうのもひっくるめて考えると、
Team Systemだけあっても実際の開発には使えない、って話。

463:デフォルトの名無しさん
08/01/27 21:56:42
あぁ、そういうことね
ReSharperが何者かしらないけど

464:デフォルトの名無しさん
08/01/27 22:08:05
ReSharperは知っといたほうがいいよ。
URLリンク(blog.inomata.lolipop.jp)
とりあえず、Day 1とDay 5あたりが導入のきっかけになった。

465:デフォルトの名無しさん
08/01/27 22:08:52
って、Javaスレでなにやってんだオレ・・・

466:デフォルトの名無しさん
08/01/28 02:30:30
すいません、質問です。

JRE1.6ってJISX213:2004に対応している?ような事があったと思うんですが
WindowsJavaアプリ環境で環境依存文字をUnicodeで取得して
それをgetBytes()でSJIS?MS932?どちらかはわかりませんが
環境によって自動取得するときちんと文字が取れずに「?」という風になってしまいます。

JISX213の規格内にSJIS2004ってのもあるんですが、JRE1.6では、こちらには対応していないのでしょうか?

467:デフォルトの名無しさん
08/01/28 02:31:57
誰か通訳を

468:デフォルトの名無しさん
08/01/28 02:50:31
>>466
まずは冷静になってもう一度説明してごらん

469:デフォルトの名無しさん
08/01/28 03:19:29
というかフォントのエンコードと文字セットのサポートは実装依存だろ。

470:デフォルトの名無しさん
08/01/28 03:19:55
>>466
疑問自体は非常に興味深いのだが、内容を理解できないところが残念です。
とりあえず、疑問その1に参考資料を用意。

URLリンク(java.sun.com)
機能リファレンスガイド > 基本ライブラリ > その他のパッケージ > 国際化 より。
サポートされているエンコーディング
URLリンク(java.sun.com)

471:デフォルトの名無しさん
08/01/28 04:36:09
スレ違いな感じがするのですが…誘導でもどんなヒントでもいいのでお願いします
HPのプルダウンが変更されたらJAVASCRIPTを動かしたいのですが、可能でしょうか?

472:デフォルトの名無しさん
08/01/28 04:41:10
<select onchange="alert('氏ね');">
  <option value="1">1回</option>
  <option value="2">2回</option>
  <option value="3">3回</option>
</select>

473:471
08/01/28 04:46:08
>>472
即レスありがとうございます、本当に助かりました!
お手数をおかけして済みませんでした
1回、2回、3回は笑ってしまった…w

スレ汚し、失礼しました

474:デフォルトの名無しさん
08/01/28 08:00:45
Javaが提供してる基本クラス数って合計するとどんくらいあるんですか?

475:デフォルトの名無しさん
08/01/28 08:53:21
基本クラス?何それ?

476:デフォルトの名無しさん
08/01/28 12:20:43
>>474
たぶんこれのことか?自分で数えてくれ
URLリンク(java.sun.com)

477:デフォルトの名無しさん
08/01/28 12:51:29
失礼します。初心者です。
ユーザーの入力する数値を年月日で区切って取得したいのですが、どのようにすればよろしいでしょうか?
宜しくお願いします。

public static int readBirdate(Scanner kb)
{
System.out.print("誕生日を入力してください(年 月 日:  ");
int ubir = kb.nextInt();
return ubir;
}

478:デフォルトの名無しさん
08/01/28 12:53:40
DateFormat df = new SimpleDateFormat("yy'年'MM'月'dd'日'");
Date date = df.parse(ubir);

479:デフォルトの名無しさん
08/01/28 13:07:08
>>478
ありがとう、ございます!

480:477
08/01/28 13:32:15
すみません。良いヒントもらったので頑張ってみたけど、やっぱり無理でしたorz
実は宿題でして、ユーザーに今日の日付と誕生日を入力してもらって、年齢を割り出すというプログラムです。

>>477の式で、
今年: 2008(←入力)
誕生年: 1980(←入力)
(計算)
年齢: 28
といった感じで年だけの計算はできるのですが

今日(mmddyyyy): 1 28 2008
誕生日(mmddyyyy): 2 17 1980
といった一度に年月日全ての値を得るやりかたが、どうしても分かりません。

すみません、ご教授お願い致します。

481:デフォルトの名無しさん
08/01/28 13:38:12
>>480
指示された入力形式は mmddyyyy、入力例が 1 28 2008、
一貫してないのでなんとも。全角半角もごっちゃだし。

スペース区切りならば mmddyyyy は [m]m [d]d yyyy とかすべきじゃね?
もしスペース区切りでないのなら、入力例は 01282008 みたいに
最初は0つけないとダメだし、スペースが間に入っちゃメでしょ。

482:477
08/01/28 13:54:09
>>481
すみません。スペース区切りです。

//出力例

今日の日付を入力してください(mm dd yyyy): 1 28 2008 (←入力)
あなたの誕生日を入力してください(mm dd yyyy): 2 17 1980 (←入力)

貴方の年齢は 28才です。

//
支持されている出力例はこんな感じです。


483:デフォルトの名無しさん
08/01/28 14:09:50
1980年生まれって誕生日くるまでは 27歳じゃね? 28表示していいのか?

484:デフォルトの名無しさん
08/01/28 14:11:20
数え年なんじゃね?

485:デフォルトの名無しさん
08/01/28 14:12:55
ちなみに、数え年だと29才のはず。

486:477
08/01/28 14:13:15
無視してくださいorz

487:デフォルトの名無しさん
08/01/28 14:32:24
>>477
文字列の取得自体はできるみたいなので、続きだけやるとこんな感じか?

//文字列をCalendarに変換
String now, birth; //"1 28 2008" と "2 17 1980" を入力させる。
DateFormat df = new SimpleDateFormat("M d yyyy");
Calendar today = Calendar.getInstance(); today.setTime(df.parse(now));
Calendar birthday = Calendar.getInstance(); birthday.setTime(df.parse(birth));

//Calendarから年齢計算
int age = today.get(Calendar.YEAR) - birthday.get(Calendar.YEAR);
birthday.set(Calendar.YEAR, today.get(Calendar.YEAR));
if (today.before(birthday)) age--;

488:477
08/01/28 14:35:29
>>487
ありがとうございます!やってみますw

489:デフォルトの名無しさん
08/01/28 16:13:22
JSPを読んでswing系の画面に出すような事は出来るのでしょうか?
とりあえずHTMLならJTextPane.setContentType()で表示できるようになるのですが、JSPのスクリプトレットは対応しておらず見る事が出来ません。
何か方法があったら教えてください。
よろしくお願いします。

490:デフォルトの名無しさん
08/01/28 16:19:09
SWT 使え

491:デフォルトの名無しさん
08/01/28 16:44:36
JSPってサーバ側で処理するもんでは?
それをクライアントで処理したいってこと?
自分で実装するのは大変そうだから、なんか適当なwebサーバ内蔵してループバックでhttpするのが楽かも

492:デフォルトの名無しさん
08/01/28 17:06:53
そういう意味か。
Tomcat でもビルトインしないとできねぇから、JSP の代わりに
動的な XML + XSL で HTML 作って JTextPane にでも食わせろ。

493:デフォルトの名無しさん
08/01/29 00:49:44
public static<T, A> void a(String s)
{
T data = A.suru(s);
}
ということをやりたいのですが、エラーが出て実行できません
こういうことは出来ないのでしょうか?

494:デフォルトの名無しさん
08/01/29 00:50:50
できません

495:デフォルトの名無しさん
08/01/29 00:52:36
>>494
出来ませんか…
ありがとうございました

496:デフォルトの名無しさん
08/01/29 01:10:43
なにをやりたいんだ?
public static T <T> a(String s) {
  return A.suru(s);
}
ならまだ意味が解るが・・・

497:デフォルトの名無しさん
08/01/29 02:04:02
>>496
昨日ファンクタというものを知りまして…
それをやってみたかったのです

498:デフォルトの名無しさん
08/01/29 02:13:32
それならジェネリクスじゃなくて手抜かずにインターフェース使ってヤレ。
ちなみに次のバージョンからクロージャーが入る。

499:489
08/01/29 09:04:22
>>490-492
そちらの方向で色々試してみます。
ありがとうございました。

500:デフォルトの名無しさん
08/01/29 09:47:26
java言語の書き方(例:if やfor文の書き方)が全部書いてある
日本語のダウンロードできるドキュメントを教えてください

501:デフォルトの名無しさん
08/01/29 10:47:50
java 言語仕様 でググレカス

502:デフォルトの名無しさん
08/01/29 11:04:04
任意のTaskを前回のTaskが終了した時点から一定時間経過後に実行してくれる、
SingleThreadなExecutorServiceって存在しますか?

503:デフォルトの名無しさん
08/01/29 11:47:20
>>502
Executors#newSingleThreadScheduledExecutor

504:デフォルトの名無しさん
08/01/29 12:56:54
JTreeとJTextAreaを2カラム形式で配置し、
JTreeで異なるノードを選択した時に、JTextAreaの内容を切り替える
プログラムを作ろうとしているのですが、上手くいきません。

JTextAreaやJFrameを設定しているクラスと、JTreeを設定しているクラスを
別々に分けているせいか、mouseListenerが上手く動かなかったり、
変数のやり取りが上手くいかなかったりしています。

どういった手順で切り替えるよう組めばいいでしょうか。

505:デフォルトの名無しさん
08/01/29 13:03:25
本にうっかりヨダレたらしてしまって
後日そのページがごわごわになってて萎えんfg9あぷ9j;:

506:デフォルトの名無しさん
08/01/29 13:17:28
Excelを出力するのにjakarta poiを使おうと思うんですが
サーブレットから使っても大丈夫でしょうか?
スレッドセーフというかなんというか、同時に複数動いても
大丈夫なものでしょうか?

507:デフォルトの名無しさん
08/01/29 13:26:26
>>503
それだとscheduleWithFixedDelayとかで、決まったTaskしか定期実行しかできませんが、
まとめてexecuteしたTaskを必ず一定間隔を空けて実行するような奴とかないでしょうか。

とりあえず自分で実装してしまったのですが、既存実装があったら悲しいなぁと思いまして。

508:デフォルトの名無しさん
08/01/29 13:55:49
>>504
まず問題点を分けてみないと。

>mouseListenerが巧く動かない
実装が悪いんだろう。

classを分けてるってソース(なんとか.java)を分けてるって意味だよね?

>変数のやりとりが巧くいかない
>クラスを別々に分けているせいか
ひとつのソースで動くプログラムならソースを分けても動く道理。
classから違うソースのclassの呼び出し方が判らないとか変数が読めないとかなのか。
単純化したひとつのソースで試してみる。

509:デフォルトの名無しさん
08/01/29 14:24:09
質問です。
「演算子+は引数の型double,Graphicsで未定義です。」
というエラーがでます。これを解決するにはどうすればよいでしょうか?

510:デフォルトの名無しさん
08/01/29 14:30:54
Date currentTime = calendar.getTime();
↑コンパイルエラーでした。シンボルを解釈処理できません。
何をimportしたらよいですか?
URLリンク(sdc.sun.co.jp)
を見てimport java.util.Date.*;を書きましたがだめでした。
どうやって必要なimportを調べたらよいのですか?

511:デフォルトの名無しさん
08/01/29 14:32:56
>509
double a = ???;
Graphics b = ???;
a + b;

こんなことは出来ないってことを言ってるんだよ。
とりあえず、プログラム見直せ。

>510
import java.util.Date;
でOK

512:509
08/01/29 14:39:11
>>511
ありがとうございます。見直してみます

513:デフォルトの名無しさん
08/01/29 14:47:09
>>511
コンパイルしたいです。
import java.util.Date;
import java.text.SimpleDateFormat;
import java.util.Locale;
public class a {
 public static void main (String args[]) {
  Date d = calendar.getTime();
  SimpleDateFormat f = new SimpleDateFormat("EEE", Locale.JAPANESE);
  String s = f.format(d);
  System.out.println(s);
 }
}

514:デフォルトの名無しさん
08/01/29 14:53:52
>513
calendarってのが定義されてないからコンパイル出来ない。

515:デフォルトの名無しさん
08/01/29 16:47:28
CSVを解析するプログラムを作っていて「java CSV」で検索したのですがあまりよいものがなく
「CSV 正規表現」で検索したらPerlのサイトが出てきて自分なりに作ってみたんですけど疑問がいくつかあるので質問させてください。
==========================================
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class CsvSplit {

 private static final String CSV_SPLIT_REGEX = "(\"(?:[^\"]|\"\")*\"|[^,]*)";
 private Pattern _pattern;
 /**
  * 実行用のメイン
  */
 public static void main(String[] args) {
  CsvSplit aaa = new CsvSplit();
  ArrayList csvArray = aaa.readCsvFile("C:\\zzzzzzzzzz.csv", "JISAutoDetect");
  Iterator ite = csvArray.iterator();
  while(ite.hasNext()) {
   String[] csvData = (String[])ite.next();
   for (int i = 0; i < csvData.length; i++) {
    System.out.println("-------------");
    System.out.println(csvData[i]);
    System.out.println("-------------");
   }
  }
 }


516:デフォルトの名無しさん
08/01/29 16:49:47
 /**
  * コンストラクタ
  */
 public CsvSplit() {
  this._pattern = Pattern.compile(CSV_SPLIT_REGEX);
 }

 private ArrayList readCsvFile(String fileName, String charsetName) {

  try {
   // ファイルの取得
   BufferedReader br = new BufferedReader(
    new InputStreamReader(
     new FileInputStream(fileName), charsetName));

   ArrayList csvArray = new ArrayList();
   String columnValue = "";

   try {
    // ファイルから1行ずつ読み込む
    while (br.ready()) {
     String lineData = br.readLine();

     // ダブルコーテーション以外の文字をすべて削除しダブルコーテーションの数を数える。
     // ダブルコーテーションの数が奇数の場合は次の行も読み、再び奇数になるまで読み込む
     if (lineData.replaceAll("[^\"]", "").length() % 2 == 0 && columnValue.equals("") ||
     lineData.replaceAll("[^\"]", "").length() % 2 == 1 && !columnValue.equals("")) {

      columnValue += lineData;
      String[] splitData = splitCsvData(columnValue);
      columnValue = "";
      csvArray.add(splitData);

517:デフォルトの名無しさん
08/01/29 16:51:05
     } else {
      columnValue += lineData + "\r\n";
     }
    }
    return csvArray;
   } finally {
    br.close();
   }
  } catch (Exception ex) {
   ex.printStackTrace();
   return null;
  }
 }

 /**
  * CSVデータの1行を分割して配列にして返却する。
  * 改行が含まれるデータの場合は必ず奇数となるので、奇数である限り取得処理を繰り返す。
  * ただし、CSVデータは以下の条件で保存されている場合に限る。
  * 1.基本的にコンマで区切った部分がスペースを含めて値である。
  * 2.値にコンマ、ダブルクウォート、改行が含まれる場合は、値全体をダブルクウォートで囲む
  *  (コンマやダブルクウォートがない場合に値全体がダブルクウォートで囲まれていても問題ない)
  * 3.値に含まれるダブルクウォートは "" となる。
  * @param csvLine
  * @return
  */
 private String[] splitCsvData(String csvLine) {

  ArrayList csvDataArray = new ArrayList(30);
  Matcher matcher = this._pattern.matcher(csvLine);
  boolean isDataSkip = false;
  String columnValue = "";

518:デフォルトの名無しさん
08/01/29 16:51:11
このまま俺らにデバッグしろと言う気か

519:デフォルトの名無しさん
08/01/29 16:51:37
  // 正規表現に従い取得する。
  while(matcher.find()) {
   // なぜか値が取得できた場合の次の値が空文字として取得できるのでスキップする
   if( isDataSkip ) {
    isDataSkip = false;
    continue;
   }
   String result = matcher.group();

   // 値が取得できたかどうか
   if( !result.equals("") ) {
    isDataSkip = true;
   }

   // データの前後がダブルクウォートで囲まれている場合は省く
   if(result.startsWith("\"") && result.endsWith("\"") ) {
    result = result.substring(1, result.length() - 1);
    // データにダブルクウォートがあれば1つに置換する
    result = result.replaceAll("\"\"", "\"");
   }
   // セット
   csvDataArray.add(result);
  }
  String[] splitData = new String[csvDataArray.size()];
  csvDataArray.toArray(splitData);

  return splitData;
 }
}
==========================================

520:デフォルトの名無しさん
08/01/29 17:01:23
>>518
長くてすいません。。。
質問なんですけど、
1.readLineで1行ずつ取得していると改行データを含む行が分割されてしまうので本当はCRLFが
  正しいデータかわからずreadLine以外に効率よく確実に読み取る方法ってありますでしょうか?
2.perlのサイトだと正規表現でダブルコーテーションの数を直接数えてるんですけどjavaの正規表現だと
  どうやるのでしょうか?
3.正規表現で値を取得した場合次の値が空文字として取得できてしまうのですが
  正規表現がいまいちよくわからず・・・。パターンの悪いところや正しいパターンを教えていただけないでしょうか。
4.@ITでC#で「^(?:(?<1>"[^"]*"),?|(?<1>[^,]+),?|,)*」というの見つけたのですが動かず。。。C#とjavaってそこまで違うのですか?


長文駄文ですいません。お手数おかけしますが宜しくお願い致します。


521:デフォルトの名無しさん
08/01/29 17:10:20
よくググレCSVライブラリあるぞ。

ところでThe Java Virtual Machine Specificationの和訳って本しかないかな?
本買おうか悩んでるんだけど。

522:デフォルトの名無しさん
08/01/29 17:15:29
ネットにあってもどうせ広告すらクリックしないだろ乞食

523:デフォルトの名無しさん
08/01/29 17:34:01
>>520
これをコピペしてコンパイルして自分で色々実験してみるがよろし。
あと、JavaのとPerlの正規表現はほぼ別物と考えた方がいい。

public class RegExp {
public static void main(String args[]){
String patStr = null;
String text = null;
if(args.length <= 0) {
try {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("Pattern: ");
patStr = br.readLine();
System.out.print("Text : ");
text = br.readLine();
} catch(IOException e) {
e.printStackTrace();
}
} else {
patStr = args[0];
text = args[1];
}
Pattern pattern = Pattern.compile( patStr );
Matcher matcher = pattern.matcher( text );
if(matcher.matches()==true)
System.out.println("match");
else
System.out.println("not match");
}
}

524:デフォルトの名無しさん
08/01/29 18:51:24
ある文章から指定した正規表現に一致するもののみを抽出したいのですが、そのものずばりな方法ってありませんかね?
一致するものをひとつずつ探して、それらを結合する、といった方法しか思いつかないのですが、もっとスマートな方法があったら教えてください。

525:デフォルトの名無しさん
08/01/29 18:58:20
>>522
広告クリックしてもらえなかったのか。よしよし。

526:デフォルトの名無しさん
08/01/29 19:17:49
>>524
それぐらいならスマートな方じゃないかなと。(というかスマートって何さ
貴方の理想が魔法のステッキなら話は別ですが…

便利な魔法のステッキも最終的にはどこかで地道な作業をやってるわけで。

527:デフォルトの名無しさん
08/01/29 20:00:31
ありがとうございます、ひとつずつで実装することにします。
Lispから入った捻くれなので、リストは一括操作でないとどうにも落ち着かないのです。

528:デフォルトの名無しさん
08/01/29 21:22:21
「Lispから入った捻くれなので、リストは一括操作でないとどうにも落ち着かないのです。」
今年に入って一番説得力のある発言を見た

529:デフォルトの名無しさん
08/01/29 21:28:15
やっぱりLisp使いはJava厨とはわけが違うな

530:デフォルトの名無しさん
08/01/29 21:39:49
以上、自作自演でした

531:515
08/01/29 22:35:42
>>521
CSVTokenizerだと正規表現を使っておらず参考になりませんでした。
ほかにもそういったもので参考になるものがあれば教えていただけないでしょうか。

>>523
だいたい同じようなものを作ってようやく形になったのが上記のソースです。。。orz

532:デフォルトの名無しさん
08/01/29 22:43:18
>>507
まとめてexecuteするときに間にsleepタスクを挟めばいいんじゃない

533:デフォルトの名無しさん
08/01/29 23:49:04
16進数の文字列表現をintまたはIntegerに変換したいのですけど、
まさにこういった機能をもったAPIがあったら教えてください。

結構探し回ったんですけど見つかりませんでした。

534:デフォルトの名無しさん
08/01/29 23:53:35
>>533
つ Integer.parseInt(String, int)
URLリンク(sdc.sun.co.jp)

535:デフォルトの名無しさん
08/01/29 23:55:52
すいません、メモリ(ヒープ)サイズについて質問です。
java実行時に-XX:+PrintGCDetailsオプションを指定してgcのログを出しています。
そのログに記録される結果のヒープサイズと
psコマンド(ps alxなど)の結果(RSS)が一致しないんですが、

プロセスサイズ=ヒープサイズ+JVM自身が利用するメモリサイズ
ってことであってますか?

536:533
08/01/29 23:57:21
>>534
parseIntは散々試してみましたけどだめでした。
なむふぉでまくりです。
decodeがまだだったので試してみます。

537:533
08/01/30 00:04:07
うまくいきまんた

538:デフォルトの名無しさん
08/01/30 00:04:41
>>524
あらかじめずばり抽出できる構造で文章を保持しておけばスマートじゃね?

539:デフォルトの名無しさん
08/01/30 00:10:28
>>531
なんでそこまで正規表現を使いたがるのかな?
正規表現って便利だけど実行速度はすごく遅いよ。


540:デフォルトの名無しさん
08/01/30 00:16:53
>>521
和訳は本しかない
VMの対応バージョンは1.3か1.4あたりだったかな
5.0でバイトコードのフォーマットが変わったから、買おうか悩む

541:デフォルトの名無しさん
08/01/30 00:33:30
伝わりにくいと思うんですが、文字列を相手に入力してもらう方法と、その入力してもらったいくつかの文字列をランダムに組み合わせるってできますかね?

542:デフォルトの名無しさん
08/01/30 00:35:36
>>541
文字列というのは日本語です。

543:デフォルトの名無しさん
08/01/30 00:39:59
伝わりにくいね。
~してもらう方法と、~をランダムに組み合わせるってできますかね?
・・・日本語がおかしいから伝わりにくいんだろうね。

544:デフォルトの名無しさん
08/01/30 00:40:32
List に突っ込んで Collection#suffle() して連結。

545:デフォルトの名無しさん
08/01/30 00:40:35
×伝わりにくいと思うのですが
○伝わらないと思うのですが

546:デフォルトの名無しさん
08/01/30 00:42:38
入力:いくつかの文字列
出力:入力をランダムに並べ替えたもの

もしくは

入力:いくつかの文字列
出力:入力のいくつかをランダムに並べ替えたもの

他にもいろいろ考えられるけど?

547:デフォルトの名無しさん
08/01/30 00:44:48
入力:文字列
出力:入力の部分文字列をいくつか作り、それを並び替える
とかか。

548:デフォルトの名無しさん
08/01/30 00:53:58
方法ってできますかね???
なんだかできないきがするんですががが


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