[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 08/21 17:37 / Filesize : 238 KB / Number-of Response : 992
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★★Java質問・相談スレッド134★★



1 名前:テンプレ(1/3) mailto:sage [2009/11/21(土) 17:58:46 ]
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    ttp://pc11.2ch.net/hp/
Webプログラミング ttp://pc11.2ch.net/php/
をご利用下さい。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 ttp://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」

前スレッド
★★Java質問・相談スレッド133★★
pc12.2ch.net/test/read.cgi/tech/1253376151/
次スレは>>950あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
ttp://www.wikiroom.com/java/


111 名前:デフォルトの名無しさん [2009/11/27(金) 23:26:31 ]
>>110
お前、態度でかいぞ
トーシロの無能が何言ってんだ

112 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 23:40:04 ]
フィールド(メンバ変数)は名前を持つが、
パラメータ(引数)やローカル変数は名前を持たない。

113 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 23:51:22 ]
「点ホニャララは」の部分はmain側で表示してから
Point2Dのコンストラクタを呼び出す。

114 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 00:04:34 ]
>>110
後出しこわい
> メッソドの形が指定されているので、引数は利用できません。 
なんで?
どうしてもシグネチャを変更できないのなら,そもそもコンストラクタで名前を表示しようなんて考えてはいけない.

ソースいじくれるようだし,コンストラクタ増やしたら?

115 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 00:06:20 ]
>>111
丁寧に書こうとしたら、こんなんになってしまいました。
不快にさせてごめんなさい。

>>112
助言ありがとうございます。

>>113
!?。それだ・・・!!!
正直、目から鱗です。

素人な質問に答えていただきありがとうございました!
助かりました。

116 名前:107 mailto:sage [2009/11/28(土) 00:12:29 ]
>>114
>どうしてもシグネチャを変更できないのなら,そもそもコンストラクタで名前を表示しようなんて考えてはいけない.
なるほど。参考になります。

>>113とともに、コンストラクタを増やすことでも解決できますね。
自分の馬鹿さ加減がイヤになります。
お答えいただきありがとうございました。

117 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 00:32:44 ]
showInputDialog でパスワード入力時に、入力文字を*****となるテキストフィールドを使いたいのですが
どのようにしたらできますか?

118 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 01:23:23 ]
というか大抵のケースでコンストラクタにパラメータ付ける場合は
パラメータなしでnewされたくない
=パラメータは意味のあるものだから必須
=メンバ変数に格納
とかじゃねーの

そうでないならコンストラクタなんてパラメータ付けずに
setterで外からはめさせりゃいいじゃん

119 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 01:39:33 ]
マスをクリックした時に一回、勝敗が決まった時に3回
対戦者のテーマ音を鳴らす三目並べゲームを作ってるんですが
Xが勝った時にテーマ音が鳴りません
以下は自分で作ったプログラムです
www.dotup.org/uploda/www.dotup.org401130.java.html
どうしてXのときだけ鳴らないか気付いた方はご教授おねがいします



120 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 01:49:32 ]
まずクラス化したらどうだい?
Playerクラスに纏めてしまえば変なswitch文にまどわされる事はない。

121 名前:119 mailto:sage [2009/11/28(土) 03:25:54 ]
すみません、再生する音楽ファイルを変更したら解決しました
おそらく、再生時間が極端に短いとloop再生できないようです・・・

122 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 10:31:27 ]
>>117ですが
お願いします。

123 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 11:46:51 ]
>>117
このあたりが参考になるのでは
ttp://java.sun.com/docs/books/tutorial/uiswing/components/passwordfield.html

124 名前:デフォルトの名無しさん [2009/11/28(土) 11:59:12 ]
JAVAで関数ポピンタみたいなことをやるには
どうすりゃいいの。

125 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 12:01:10 ]
関数ポピンタってなんですか?

126 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 12:12:33 ]
アイアムザパニーズなんですけどもザバで風呂釜を綺麗にするには?

127 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 12:13:41 ]
いわゆるショッピング症候群です

128 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 12:14:34 ]
ヌルポピンタ

129 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 14:53:57 ]
>>123
Thx



130 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 16:36:21 ]
>>124
動的にいろいろな関数のボピンタを渡す代わりに、動的にいろいろなオブジェクトを渡して、
それらのオブジェクトが共通に実装しているメソッドを呼ばせる。

131 名前:デフォルトの名無しさん mailto:sage [2009/11/28(土) 18:47:21 ]
ポピンタが使えるようになったら初心者卒業だね!

132 名前:デフォルトの名無しさん [2009/11/29(日) 05:59:57 ]
java seが普通のjavaで
java eeがjspやサーブレットまで含めたjavaということでしょうか?

133 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 12:18:39 ]
そんなところ

134 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 14:06:18 ]
ポピンタがなんだかわからなかったから、ググってみたらgoogle先生が教えてくれたww

135 名前:デフォルトの名無しさん [2009/11/29(日) 14:47:45 ]
クラス、継承、オーバーライドまでは使えそうですが、
ポリモーフィズム、抽象クラス、インタフェースとかになってくると
もう使いこなせる気がしません。

どういうものか理解はできていますが、自分でいつ使えばいいのか
判断が難しそうです。

皆さんはどうやって使えるようになりましたか?
使わなくても問題ないでしょうか?

136 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 14:52:58 ]
俺は最近
インターフェイス=コールバック用
抽象クラス=計算戦略の概略の形を作る用
になってきた

137 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 15:20:15 ]
使っているうちにわかってくると思えばいいんでしょうかね。
前にC++をしばらくいじってみたとき、結局最初から最後までOOPらしいものはできませんでした。。

138 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 16:00:36 ]
>>135
インターフェース⇒使う側は「×××という機能(メソッド)が使える」ということだけわかっていればいい。中身は気にしない。
継承関係からは独立しているので、インターフェースを実装したクラスは中で何をやっていてもいい。
ファイルに書き込む代わりにネットワーク越しでサーバにアップロードするとか。

抽象クラス⇒処理の流れの大枠は決まっているが、一部の処理だけ使う側にまかせたい。その部分は使う側が決めなければならないので、抽象クラス自身は単独では完結していない。

ポリモフィズム⇒使う側は一律、writer.write(data)みたいに書くが、このとき実際に書き込む先はファイルだったりメモリだったりDBだったりどっかのサーバだったり。
要は、呼び出し側がif〜else if〜elseやswitch〜caseで切り替えるんじゃなくて、呼び出される側が同じシグネチャのメソッドを実装した中身の違うクラスを用意する。
なるべくをif文やswitch文を書きたくないので、無いと生きて行けない。

139 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 16:05:14 ]
>>135
インタフェース=ポリモルフィズムのための規格
抽象クラス=雛形



140 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 16:10:15 ]
>>138-139
うーん、難しいですね…。
違う本も読んでもっと勉強してみます。

抽象クラス、インタフェースの意味・目的はさておき、どのように身に付けましたか?

141 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 17:05:12 ]
標準のコレクションクラスをひととおり眺める
それらを具象クラス (ArrayList, LinkedList) ではなくインタフェース (List) で使ってみる

142 名前:デフォルトの名無しさん [2009/11/29(日) 18:17:37 ]
同じ内容のオブジェクトのハッシュコードは等しいが
異なる内容のオブジェクトのハッシュコードは必ずしも違う値になるわけでは
ないと聞いたのですが、ハッシュコードってどのような場面で使用されるのですか?

143 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:21:19 ]
>>142
例えばjava.util.HashMapの内部で使用されてる

144 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 18:22:58 ]
Hashtableとか

ハッシュ値はクラスの設計者がどんな値使うか決めていい
必要であれば全部同じ値を返してもいい

145 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 19:10:26 ]
よく指摘される事項ではあるけど、
equalsをオーバーライドしたクラスは必ずhashcodeもオーバーライド必須ね。
これ忘れて潜在的なバグが放置されてる業務プロジェクトは星の数ほど存在する。

146 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 19:14:27 ]
仕様です。

147 名前:デフォルトの名無しさん [2009/11/29(日) 19:22:07 ]
>>143-145
ありがとうございます。

HashMapの実装の仕方を見たことは無いのですが
getしたとき内部では高速化のためhashcode毎に分けられており
最終的にkey紐づくものを返すというイメージなのですか?

148 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 19:42:49 ]
そうだね。

ハッシュマップは↓のようなデータ構造のイメージ
hash1 : {key1:val1, key4:val4, key6:val6}
hash2 : {key2:val2, key3:val3, key5:val5}
hash3 : {key7:val7}

key3でgetした場合、まずkey3のhashcodeであるhash2でgetして、
取得されたサイズ3のコレクションに対して、key3とのequalsが実行される。

最悪7回equalsが必要(size7のMapだから)なところ、
HashMapの実装であれば3回のequalsですんでいる。

実際には値がより均等に分散するアルゴリズムでhashcodeが計算されるため、
よほどHashMapのサイズが大きくならない限り
同じhashcodeにぶら下がるオブジェクトは多くて1個で収まる。→ 超速い

149 名前:デフォルトの名無しさん [2009/11/29(日) 20:25:55 ]
>>148
解説ありがとうございます。
理解できました。



150 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 21:50:57 ]
javaでファイル出力処理時に、ファイル名「現在の日付+.txt」としたいのですが、
その設定をjavaのpropertiesファイルに書いておいてそこから呼び出すためには
propertiesファイルに記載したら良いのでしょうか?

たまに固定文字列でファイル出力を行いたいため、
プロパティファイルを編集するだけで、日付つきファイルか固定かを変えられるようにしたいのです。


151 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 22:15:23 ]
予め決めておいたパターンが(プロパティファイルの値のなかに)出現したら
現在時刻に置き換えるようにしておけば?

152 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 22:17:56 ]
レスありがとうございます
その方法もいいかもしれませんが、プロパティファイル内の設定だけで対応したいです

153 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 22:20:21 ]
プロパティファイル読み込む処理は自分で書いたんでしょ?
そこで置き換えればいいんじゃないの?


154 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 23:44:19 ]
実行可能なjarファイルを作成したのですが、
これを別のディレクトリに移動してから実行すると動きません。

jarファイル内部のpropertiesファイルが読み込めない(見つからない?)ようなのですが、
プログラム中にpropertiesファイルの相対パスを指定しただけではダメなのでしょうか?


155 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 23:52:13 ]
一体どんな指定をしてるんだ?

156 名前:デフォルトの名無しさん mailto:sage [2009/11/29(日) 23:57:01 ]
>>154
jarファイル内部のはClassLoader使ってURL取得するといいよ。

hoge/
Hoge.class
hoge.properties
となってたら
url = Hoge.class.getResource("hoge.properties");
もしくは絶対パス
url = Hoge.class.getResource("/hoge/hoge.propertis");

157 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 01:55:11 ]
でも、それじゃクラス全体がメモリにロードされちゃいませんか?
確かクラスは自動でアンロードされなかったし問題ですよ。

158 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 02:08:31 ]
でっかい釣り針が...

159 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 06:44:15 ]
java -cp abcde.jar:lib/opencsv-2.1.jar jp.aaaaa.Guiframe
と実行を試みると、
NoClassDefFoundErrorがjp/aaaaa/Guiframeで出ます。
java -cp abcde.jar jp.aaaaa.Guiframe
と入力すると正常に動作しますが、この場合はlibにPathが通ってないため
不十分な動作になります。
自分では原因が検討もつかず、悩んでいます。
よろしくお願いします。



160 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 06:56:58 ]
>>159
パス区切り記号は :(コロン)ではなく、;(セミコロン)です。

161 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 10:40:32 ]
Winではね

162 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 10:44:07 ]
カラムヘッダに、日付と曜日を順々に2週間分入れてテーブルを作成したいのですがうまくいきません
どこがいけないのでしょうか?

public class CalendarModel extends AbstractTableModel {
.........
public String getColumnName(int columnIndex) {

calendar = Calendar.getInstance();
String[] columns = new String[14];
String dow = null;

calendar.add(calendar.get(Calendar.DAY_OF_WEEK), columnIndex);
dow = getDOW(calendar.get(Calendar.DAY_OF_WEEK));

columns[columnIndex] = dow + " " + calendar.get(Calendar.DATE);

return columns[columnIndex];
}}

163 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 11:24:00 ]
すみません、激しく自己解決しました
calendar.add(Calendar.DAY_OF_WEEK, columnIndex);
ですね

164 名前:159 mailto:sage [2009/11/30(月) 12:03:26 ]
>>160
ありがとうございました。
助かりました。

165 名前:デフォルトの名無しさん [2009/11/30(月) 12:15:26 ]
HashMapで現在
キー     値 
あいうえお →1
かきくけこ →2,3
さしすせそ →4
とセットされているとして値の個数を返すメソッドってありますか?
たとえば「かきくけこ」を引数とした場合に2が返ってきてほしいのですが。

166 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 12:25:43 ]
値の型って何さ

167 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 12:30:17 ]
>>165
HashMapに同じキーの新しい値を入れると古い値は消えるので、値が2個以上になることはありません

168 名前:166 mailto:sage [2009/11/30(月) 12:38:38 ]
ArrayListでも突っ込んでるのかと思った

169 名前:デフォルトの名無しさん [2009/11/30(月) 19:27:58 ]
HashMapのかわりに何を使えばいいのですか?
>>166以外の人に答えてほしいです。



170 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 19:56:49 ]
HashMapには値としてArrayListを入れて、そのArrayListの中に本当の値を入れるのが定番

171 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 22:06:45 ]
>>166 も間違ったことは言ってないのに…

172 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 23:28:00 ]
@see、@param、@override、@throwsみたいなアノーテーションをよく使うけど、
結局アノーテーションって何に使うの?

173 名前:デフォルトの名無しさん mailto:sage [2009/11/30(月) 23:32:34 ]
その @see、@param、@override、@throws を、何のために入れているのか、
分からないで使ってるのかw

174 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 00:11:19 ]
>>172
JavadocのタグとJava5のアノテーションを混同してないかい?
そこに挙げているのはぜんぶJavadocのタグ。


175 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 00:59:17 ]
アノテーションの言葉どおりに、注釈つけたい場合に利用されてる。
DIコンテナとかEJB界隈を扱うと嫌でも利用例に触れることになる。

このメソッドの前後で新規トランザクション作れよ、とか
このフィールドはDI対象なんだぜ。とかね。
フレームワーク側がそういった注釈を処理してなんらかの処理を追加してくれたりする。

逆に小さなツールとかゲーム作ってるだけならあんまり出てこないと思う。


176 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 02:53:22 ]
しかし全部javadoc

177 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 03:47:15 ]
最近まったくjavadoc見てないな。
自動で更新されてるけどまったく見ない。
どうせコード確認しないとあかんし。

178 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 12:29:27 ]
>>171
勘違いが明らかなときは、それを一言で表現できないなら、レスしない方がいいね。
新人教育のときのような応答をするとバカを見ることになりそうだ。

179 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 12:33:18 ]
でもふつう>>168のように考えると思うんだが



180 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 12:44:45 ]
いやバカは無知をさらけ出さない質問者
小出しするやつはしぬ

181 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 12:54:56 ]
ええよええよ
目下に馬鹿にされるのは慣れてるから

182 名前:デフォルトの名無しさん [2009/12/01(火) 15:04:11 ]
BufferedReaderで開いたファイル(bin)に
akljflkgjadb
jdnfkgjnd;fkj
fjng;alkjndf;gk
と書かれている場合に、bin.read()で一文字ずつ配列にいれていきたいのですが、改行がきたらループを抜けたい場合
while(□ !=bin.read())
の□には何を書けばいいですか?\nでいいんですかね?

183 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 16:36:34 ]
EOFて定数なかったっけ?

184 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 16:51:48 ]
1 3 8 9
5 2 4
1 4
8 12 3 10
7 9 8
5 3 11 3 9 4 2
4 5 2

↑のような内容のテキストファイルがあります。
各行にはいくつかの数字が羅列されてるんですが
その個数は各行ごとに完全にランダムで
かつ最大何個とかも決まっていません。
このようなファイルを読み込んで
int[][]、もしくはint[][]でできないとしたら別の何らかの形で持ちたいのですが
どうするのがよいでしょうか?

185 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 18:19:51 ]
>>182
ためしてないけど、たぶんファイルに記録されている改行コードがその
まま返るんじゃないかなあ。Windows で作ったテキストファイルだと
\r と \n の2文字。

せっかくBufferedReaderなんだから、readLine() で一気に1行読んでか
ら処理するのがお勧め。こっちなら改行コードが何か考える必要がない。



186 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:10:07 ]
>>184
別にint[][]でいいんじゃねーの。
そのデータをどう使いたいのかわからんから何とも言えないが。

187 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:24:53 ]
ファイルの内容をint[][]型の変数にどうやって格納するか
ってのを聞きたいんじゃないの?

188 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:26:11 ]
>>187
そうです、まさにそれが知りたいです
えすぱー!

189 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 20:32:54 ]
>>185にほとんど答えが書いてあるけど…
ストリームオブジェクトを作ってreadLineで読み出すしかない。
readLineで読み込んだ1行はさらに区切り(ここでは空白?)を元に文字列を分解して数字を取り出す。
汚いコードになるだろうけど、ベタにテキストファイルに数字が羅列されてるなら仕方ない。



190 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:15:34 ]
スレッドを利用してバイトデータを送受信(例:mainで送信、スレッドを拡張したクラスで受信)したいのですが、それぞれ別にSocketオブジェクトを作成する必要ありますか?
ググってみて必要ないと判断して打ったのですが、どうやってスレッドを拡張したクラスでSocketオブジェクトを利用するのか分かりません。
ちなみにmainでポートと接続先を指定してSocketオブジェクトを作っています。
ご教示お願いします。

191 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:43:37 ]
>>190
こんな感じか?
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class a190 {
public static void main(String[] args) throws Exception {
new a190Receive().start();
Socket socket = new Socket("localhost", 6666);
OutputStream os = socket.getOutputStream();
os.write(111);
os.write(222);
os.close();
socket.close();
}
public static class a190Receive extends Thread {
@Override
public void run() {
try {
ServerSocket receive = new ServerSocket(6666);
Socket socket = receive.accept();
InputStream is = socket.getInputStream();
System.out.println("receive : " + is.read());
System.out.println("receive : " + is.read());
is.close();
socket.close();
} catch(Exception e) {throw new RuntimeException(e);}
}
}
}


192 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:59:25 ]
>>184
行数も特に固定じゃないんだとしたら、ArrayList<int[]>とか使った方が楽な気もするけどなぁ
読み込みはまぁ、>>189

193 名前:184 mailto:sage [2009/12/01(火) 22:07:25 ]
先に
int[][] data = new int[N][];
としておいて

FileReader fr = new FileReader(output);
BufferedReader br = new BufferedReader(fr);

String s=null;
String[] ss = new String[99];
for (i = 0; i < N; i++) {
s=br.readLine();
ss = s.split(" ");
int j = 0;
while (ss[j]!=null) {
data[i][j] = Integer.parseInt(ss[j]);
j++;
}
}
こんな感じでやろうとおもったらdata[0][0] = の時点でぬるぽ
横のサイズも指定しておかないとだめなんですかね?

194 名前:184 mailto:sage [2009/12/01(火) 22:09:11 ]
>>192
行数はNで決まってます
なにかやり方あったら教えてくれませんか?
ArrayList<int[]>使う方法でもいいので

195 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 22:15:54 ]
BufferedReaderの行の下から↓に変えてみ

for (int i = 0; i < N; i++) {
String ss[] = br.readLine().split(" ");
data[i] = new int[ss.length];
for (int j = 0, n = ss.length; j < n; j++) {
data[i][j] = Integer.parseInt(ss[j]);
}
}

196 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 22:42:33 ]
>>194
あぁ行数は固定だったんだ。勝手に行数も可変なんだと思ってた。
ならint[][]でもArrayList<int[]>どっちでもいいや。というか、int[][]の方がわかりやすいかも

横の配列分もnewしておかないとぬるぽになるよ。
一応ArrayList使うとしたら

ArrayList<int[]> al = new ArrayList<int[]>();
String[] ss;
int[] data;
for(int i = 0 ; i < N ; i++){
ss = br.readLine().split(" ");
data = new int[ss.length];
for(int j = 0 ; j < ss.length ; j++){
data[j] = Integer.parseInt(ss[j]);
}
al.add(data);
}

こんな感じかな

197 名前:184 mailto:sage [2009/12/01(火) 22:45:27 ]
>>195
すごい!できました!
こういうふうにnewすればよかったんですね
ありがとうございまうす

198 名前:184 mailto:sage [2009/12/01(火) 22:47:26 ]
>>196
なるほど、ありがとうございます!
大変勉強になりました

199 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 22:54:40 ]
>>191
ご回答ありがとうございます。
このような主旨のプログラムを異なるホスト同士で送受信できるようにするにはどうすればよいでしょうか?



200 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 22:59:46 ]
普通に送信受信それぞれのクラスを異なるホスト上で実行して、
送信側Socketのコンストラクタでlocalhostとしているのを、相手ホスト名に変えるだけ。

ちなみにサーバソケットは、accpetしたソケットを受け取って
受信処理を専用で行う別スレッドをあげるのが一般的なやり方。

201 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:16:37 ]
Socket socket;
....
// Thread A
while(true){
 socket.getOutputStream().write(...);
}
...
// Thread B
while(true){
 ... socket.getInputStream().read();
}

ってOKだっけ?
未だに慣れない

202 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 23:24:11 ]
むしろ1.3時代では普通なんじゃないの。
今はノンブロッキングIOだろうね。

203 名前:190 mailto:sage [2009/12/01(火) 23:24:28 ]
>>200
言葉足らずでした。
申し訳ありません。
>>191のようなプログラムを雛形として両ホスト共送信も受信も行いたいのですが、接続の際の処理をどのように記述するか思い浮かばないのです。
レスありがとうございました。

204 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 00:14:59 ]
>>203

超適当に書いた。例外処理と終了処理してないんでよろしく。
rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/852.java

サーバを
>java a203 -s 5555
で実行してから

クライアントを
>java a203 -c localhost 5555
で実行してくれ。
あとはByte(-127から127)をサーバかクライアントのコンソールに入力してエンター押せば
相手のコンソール画面に入力値が表示されるはず。
終了はCtrl+C押して抜けてくれ。

205 名前:190 mailto:sage [2009/12/02(水) 01:47:56 ]
>>204
ありがとうございました。
参考にさせていただきます。

206 名前:デフォルトの名無しさん [2009/12/02(水) 11:21:02 ]
>>185>>189
レスありがとうございます。
最初はreadlineでやってたんですが、類似文字列マッチングするのに一文字ずつ配列にいれたいんですが、
readlineしたあとに文字列を配列にいれることは可能ですかね?

207 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 12:16:02 ]
メインメソッドのmain(String[] args)ってのはどこからString形式を引数として持ってくるのでしょうか
又、Stringクラスのargsに代入された引数を利用することはよくあるのでしょうか?

208 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 12:46:21 ]
プログラムの起動元(親プロセス)から渡される
よくある

209 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 14:54:06 ]
>>206
そりゃ可能さー。
String line = reader.readLine();
char[] chars = line.toCharArray();




210 名前:デフォルトの名無しさん [2009/12/02(水) 16:34:21 ]
C[i][j]にC[i-1][j],C[i][j-1],C[i-1][j-1]の最小値を代入したい場合って

 C[i][j]=C[i-1][j];
if(C[i-1][j]>C[i][j-1])
C[i][j]=C[i][j-1];
if(C[i][j-1]>C[i-1][j-1])
C[i][j]=C[i-1][j-1];
であってますよね?なんか結果が変なんですが。。。

211 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 16:42:06 ]
合ってない
2つめのifは
if(C[i][j]>C[i-1][j-1])
としなければいけない






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<238KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef