トップページ⇒tech
1001コメント281KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/10/18(火) 19:53:20.26
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

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

前スレッド
★★Java質問・相談スレッド147★★
http://hibari.2ch.net/test/read.cgi/tech/1312958339/

次スレは>>950あたりで。

過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
0153デフォルトの名無しさん2011/12/01(木) 01:14:08.26
>>151
タイマーでどうにかなるんじゃねーの?
http://allabout.co.jp/gm/gc/80603/
0154デフォルトの名無しさん2011/12/01(木) 01:19:03.62
>>153
ありがとうございます
さっそく試します
0155デフォルトの名無しさん2011/12/01(木) 01:25:49.42
>>150さん
冗長なソースを読んでいただいてありがとうございます。
Classについてもっと勉強して分割できるようにがんばってみます。

>>152さん
わざわざ検索かけていただいてありがとうございます。
やはりズバリの命令はないんですね。
>変換かけてtry~catchで拾うか、正規表現でマッチを取るか、
が何を意味しているのかわかるようになるまで勉強してみます。
0156デフォルトの名無しさん2011/12/01(木) 01:44:39.08
>>155
java.lang.NumberFormatExceptionで例外をキャッチ
0157デフォルトの名無しさん2011/12/01(木) 01:59:55.23
>>155
正規表現が、そのものずばりだと思うけどね。
簡単な数字の判定程度なら、すぐ分かるからググってみるといい
0158デフォルトの名無しさん2011/12/01(木) 15:11:08.45
>>155
ひとつのクラスあたり30行くらいを目処に設計するとわかり易いと云われている。
プログラムの機能各にクラスを分けるといい。
0159デフォルトの名無しさん2011/12/01(木) 16:36:22.93
ひとつのクラスを30行くらいってきつくね?
1クラス, 1メソッドみたいにするのか?
0160デフォルトの名無しさん2011/12/01(木) 17:06:08.93
ヘタしたらファイルヘッダとimport宣言と
クラスのドキュメントコメントとクラス宣言だけで終わりだな
0161デフォルトの名無しさん2011/12/01(木) 17:16:57.22
どうにもならんがjavadocコメントがあると読みにくいとは思う。

1ファイル 200行超えるのは避けたいがファイル数が増えまくるのも嫌
0162デフォルトの名無しさん2011/12/01(木) 17:21:52.55
30行/メソッドまでみたいな話はCleanCodeで見たよ
0163デフォルトの名無しさん2011/12/01(木) 18:33:54.02
メソッドというか、1画面で見渡せる範囲で処理をまとめると、作業効率がいいって話なら、25年ぐらい前から実践してる。
0164デフォルトの名無しさん2011/12/01(木) 18:42:42.80
画面は人それぞれだしそれはちょっとどうかな
あ、けど行数もコーディング規約によって変わるしいいか
0165デフォルトの名無しさん2011/12/01(木) 19:36:26.47
ソケット通信が難しい…
サーバー側からCドライブのフォルダの中のファイル名送ろうとしてるんだけど
クライアント側で出力すると1行目しか読み込んでない…
0166デフォルトの名無しさん2011/12/01(木) 20:28:32.34
ほうほう
0167デフォルトの名無しさん2011/12/01(木) 21:41:24.40
>>165
まず簡単なテキストの送受信から確認したら?
0168デフォルトの名無しさん2011/12/01(木) 21:53:16.27
ソケット通信が難しいだと?
簡単に扱うためのソケット通信なのにw
0169デフォルトの名無しさん2011/12/01(木) 22:09:06.77
へぇ〜
0170デフォルトの名無しさん2011/12/01(木) 23:20:04.43
アセンブラは機械語より簡単ですよね
0171デフォルトの名無しさん2011/12/02(金) 00:28:33.37
事実簡単だろ。紙でアドレス計算した連中なら、全員賛同するはず。
0172デフォルトの名無しさん2011/12/02(金) 00:34:35.04
まんこ
0173デフォルトの名無しさん2011/12/02(金) 01:22:04.56
変に抽象化しすぎてかえって複雑になるってJavaワールドのお家芸だよね
0174デフォルトの名無しさん2011/12/02(金) 01:26:06.30
ソケットで送るって話をしてる最中に、Cドライブのファイル名がどうのと言い出すあたりの混乱振りは、どうにもならないだろ。
0175デフォルトの名無しさん2011/12/02(金) 08:22:14.91
>>173
悲しいかなjavaに限った話ではない。
0176デフォルトの名無しさん2011/12/02(金) 09:10:00.02
マトリョーシカ職人養成言語
0177デフォルトの名無しさん2011/12/02(金) 10:28:00.64
javamailを使ってメールのやり取りのあるサイトを作成しています。

現在、サイトの独自ドメインのメルアドで送信しているのですが、
高確率で迷惑メール扱いになってしまいます。(携帯へのメールなど)
なにか対策はないでしょうか?
gmailを使うとか、SendMail()に迷惑メールではないと明示するパラメータがあるとか。。。
0178デフォルトの名無しさん2011/12/02(金) 10:31:43.71
送信側で迷惑メールではないってフラグを付けられたら全て迷惑メールがそのフラグを付けると思いませんか?
01791772011/12/02(金) 10:46:01.79
レスありがとうございます
それは思います。しかし、救済策はないのかなぁとか期待してしまいました。
0180デフォルトの名無しさん2011/12/02(金) 10:53:35.47
要するに >>177 は迷惑メールを届けたいのだ、という認識でOK?
0181デフォルトの名無しさん2011/12/02(金) 10:59:21.46
携帯の場合、「迷惑メール扱い」にするのは、クライアント側だから
Webでユーザーにお願いするしかないでしょ

PCだと、変なタイトル付けるとなりやすい感じ?
01821772011/12/02(金) 11:00:56.62
いえ、サイトのユーザーに通知メールを送るだけですので悪意などはまったくありません。
とどのつまり、そんな悪用可能な方法は無いと言うことですか。。
01831772011/12/02(金) 11:03:43.92
>>181
ありがとうございます!!!!!
わかりました。タイトルの見直しと、注意文を掲載する形を取りたいと思います。
0184デフォルトの名無しさん2011/12/02(金) 13:27:36.53
糞スレ街道をこのままどんどん突き進め
0185 忍法帖【Lv=35,xxxPT】 2011/12/02(金) 13:54:45.32
確か、メールのヘッダのなんたらとかんたらが同じじゃない奴は迷惑メールの可能性が高いとかいうのがあった気がするけど、その辺は大丈夫?
0186デフォルトの名無しさん2011/12/02(金) 14:33:38.66
>>165
File fileを送ってるだろ?w
0187デフォルトの名無しさん2011/12/02(金) 18:30:16.23
>>185
ありがとうございます!!!!!
なんたらとかんたらを別にしたら解決しました。
0188デフォルトの名無しさん2011/12/02(金) 18:33:28.17
な〜るほどね〜
0189デフォルトの名無しさん2011/12/02(金) 18:40:14.79
>>187
別にしちゃダメだろwww
0190デフォルトの名無しさん2011/12/02(金) 19:38:00.08
送信者認証が無いメールは高確率で迷惑メール行き
”本気”で対応したいならDomainKeysとかDKIMとかでググればいいかと
0191デフォルトの名無しさん2011/12/02(金) 22:09:06.45
staticメソッドの利便性を教えてくれ!

通常ならnewで作って普通に呼び出せばいいのに
特別な呼び出し方でスコープも分かりにくいから旨味が無いわけだが

static変数は別だけど
0192 ◆QZaw55cn4c 2011/12/02(金) 23:14:02.61
>>191
特定のクラス一つに強制的に所属させる、という分類法に機能的・意味的にそぐわないメソッドを無理やりにどこかに押し込める、いわばオブジェクト指向万能論者にとっても必要悪・目の上の瘤的な存在なのでは?
0193デフォルトの名無しさん2011/12/02(金) 23:20:35.64
日本語でおか
0194デフォルトの名無しさん2011/12/02(金) 23:49:45.96
>>193
日本語おk
0195デフォルトの名無しさん2011/12/03(土) 00:03:52.54
クラスの設計について質問です。

CSVを書き込むCSVWriterというクラスを作り、実際の出力はwriteCSV()が行うとします。
この時CSVWriterはjava.io.BufferedWriterを継承させたいのですが、そうなると
利用者から見てwrite()、writeCSV()どちらを使えば良いか迷うことになります。
このとき、write()を実行された場合はどういう動作が適切でしょうか。
01961512011/12/03(土) 01:04:00.97
先日質問させていただいた>>151です。>>153を参考にSwingとTimerでも一度ググッたら、関連するページがいっぱいヒットしました
http://www.javamex.com/tutorials/threads/invokelater.shtml このサンプルどおりボタンの処理をスレッド化したら解決しました

button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
Thread omoimessoddoThread = new Thread() {
public void run() {
omoimesoddo();
}
};
omoimesoddoThread.start();
}
});

本来上記ページのサンプルにあるSwingUtilities.invokeLaterを使用するコードもつけたのですが、
ひょんなことからコードをコメントアウトしても動いてます
重いメソッドが動いてる間にもボタンが操作可能になってしまってるのが関連してるのかもしれないですが
そのへんはぼちぼち直していきます
ありがとうございました
01971962011/12/03(土) 01:07:10.18
コード貼り付け失敗すまそ
0198デフォルトの名無しさん2011/12/03(土) 01:16:31.89
うざい
0199デフォルトの名無しさん2011/12/03(土) 01:36:05.39
これだな。
http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html
0200デフォルトの名無しさん2011/12/03(土) 07:54:35.19
>>195
そもそもインターフェイスが合わないからWriter以下を継承するべきではありません
Writerを引数に取る独立したクラスにしましょう
0201デフォルトの名無しさん2011/12/03(土) 10:11:43.07
数学関数を集めたクラスを作ったとしていちいちオブジェクト化したくないじゃない
スタティックメソッドで計算結果を得られればそれで十分じゃない
0202デフォルトの名無しさん2011/12/03(土) 11:21:53.22
リプレースを連続で使用する場合
前のリプレースで置換した文字列は無視することはできますか?
例えばある文字列を、"あ"を"あい"に置換した後、"い"をいうに置換する場合
最初の"あ"が"あい"に置換された"い"の部分を無視するとか
0203デフォルトの名無しさん2011/12/03(土) 11:39:04.62
い を いう に変換した後、 あ を あい に変換する。
0204デフォルトの名無しさん2011/12/03(土) 12:36:59.76
>>203
これはただの例なので文字は連続しているとは限りません
"え"を"おえ"に置き換えるという部分もあるので単純に一度置き換えた箇所以外の該当文字をリプレースしていく方法はありますか?
0205デフォルトの名無しさん2011/12/03(土) 12:38:29.74
連続で使用する場合は、
前の置換を利用したい場合、利用したくない場合、色々あるから、
置換の順序を考慮してするのが簡単。
0206デフォルトの名無しさん2011/12/03(土) 12:55:15.63
ジャヴァ関係ないねん
0207デフォルトの名無しさん2011/12/03(土) 13:47:17.03
>>204
自分でエディタ使って一括置換する場合にどうすれば考えてみれば早い。
自分なら、一つ目はありえない文字列(「@@1@@」みたいな)に置換しておいて、
その後で二つ目の置換をかけ、最後に最初置換した文字列を本来の目的の文字列に置換する。
0208デフォルトの名無しさん2011/12/03(土) 14:19:19.60
うわぁー
そりゃスンゴイわぁー
0209デフォルトの名無しさん2011/12/03(土) 14:52:16.59
>>192
>>201
スタティックメソッドの存在理由をそれなりに納得出来ました
0210デフォルトの名無しさん2011/12/03(土) 15:19:02.68
>>207
実はオリジナルの暗号文作成ソフトであ、から ん、までの一つ一つの文字を置換したいので効率の良い方法ありませんか?
0211デフォルトの名無しさん2011/12/03(土) 15:23:48.14
ありません
0212デフォルトの名無しさん2011/12/03(土) 15:36:51.63
>>210
暗号について聞きたいなら、こっちでやれ

http://hibari.2ch.net/test/read.cgi/tech/1180280982/
0213デフォルトの名無しさん2011/12/03(土) 16:02:59.42
いや、まあ、それもどうかと思うが
0214デフォルトの名無しさん2011/12/03(土) 16:15:13.81
>>210
ひらがなの暗号化なら、
サンデー今週号の「史上最強の弟子ケンイチ」にすばらしい方法が出てたぞ。
0215デフォルトの名無しさん2011/12/03(土) 16:15:30.94
>>212
ちょっとした言葉遊び程度の暗号です
ひらがなを置換して変な文章作成するソフトで複合化はルールに従った置換で簡単に出来るのですが、
一文字一文字を暗号化していくとなると難しいです
0216デフォルトの名無しさん2011/12/03(土) 16:18:42.40
昔、GGって言うジョークソフトがあったんだが、知ってる奴いないよね?
0217デフォルトの名無しさん2011/12/03(土) 16:39:43.10
知りたくもないです
0218デフォルトの名無しさん2011/12/03(土) 17:02:25.24
休みになると必ず元気になる荒らしはもう何年も飽きないよな
どれだけ無趣味なんだお前
0219デフォルトの名無しさん2011/12/03(土) 17:05:19.97
>>215
それ一度置換した文字は読み直す必要ないじゃん。1パスで処理できる
そもそも何回も先頭まで戻って置換し直しなんて処理にはならないじゃん
0220デフォルトの名無しさん2011/12/03(土) 17:28:24.53
>>196
SwingWorkerでググるとよろし
0221デフォルトの名無しさん2011/12/03(土) 17:35:13.28
>>202
リプレース前の文字列が1字に限られるんだったら、文字列の頭から順に処理していくだけで済むんじゃないの?
そうでなくとも、未リプレースの文字なのかリプレース済みの文字なのか判別できるようにしとくだけで良さそうだけど。
0222デフォルトの名無しさん2011/12/03(土) 18:54:47.28
>>219
例えば
string a="あいうえお";
a.replase("あ", "あい").replase("い", "いう")•••;
ってことですか?
0223デフォルトの名無しさん2011/12/03(土) 22:14:38.39
パッケージ名やクラス名に日本語を入れると、実行時コンパイラ中で文字化けするのか
java.lang.ClassNotFoundExceptionとなってしまいます
これを問題なく実行できるようにする為にはどうすれば良いでしょうか?

メソッド名やフィールド名に日本語を使うのは大丈夫でした
また、Eclipseを使っていますが、TextFileEncodingはUTF-8に設定しています
0224デフォルトの名無しさん2011/12/03(土) 22:37:37.24
質問いいですか。java始めて一年くらいの初心者です。簡単なテキストのすごろくみたいなの作ろうと思ってます
diceクラスのdiceRollメソッドでint型のdiceNumberに値を入れて、
panelクラスのpanelDownメソッドでpanelNumber(残りのパネル枚数)を50に設定して、
panelNumber = panelNumber - diceNumber; return panelNumberでdiceの出た目の数だけどんどん枚数が減っていく仕様にしたいのですが、
playクラスのplayGameメソッドで、dice();panelDown();と続けて実行して、最後にshowクラスのshowPanelメソッドで
System.out.printf("残りのパネルは%d枚です",panelDown(panelNumber));としているのですが、
パネルの残り枚数が50から変動しません。いろいろ試してみましたがだめでした。何かアドバイスをください。お願いします
わかりづらいようでしたらもう少し詳しく書きます
0225デフォルトの名無しさん2011/12/03(土) 22:52:27.96
>>222
一旦ローマ字にリプレースして、あとから戻せ。あ行は最後に戻せ。
0226デフォルトの名無しさん2011/12/03(土) 22:58:35.48
>>224
panelDownのなかでdiceNumberが幾つか確かめろ

あと、panelNumberはなんでpanelDownの引数なの?
panelDownの中から見るpanelNumberと引数で渡しているpanelNumberがブツなら引数で渡すことないし、
別のブツなら上書きされてねーんじゃねーの?
0227デフォルトの名無しさん2011/12/03(土) 23:01:47.57
コード見せて欲しいところだけどただの凡ミスで自己解決エンドだろうな
0228デフォルトの名無しさん2011/12/03(土) 23:04:44.30
>>226
×panelDownの中から見るpanelNumberと引数で渡しているpanelNumberがブツなら引数で渡すことないし、
○panelDownの中から見るpanelNumberと引数で渡しているpanelNumberが同じブツなら引数で渡すことないし、
0229デフォルトの名無しさん2011/12/04(日) 00:48:13.48
>>223
パッケージ名やクラス名に日本語を入れるのはやめとけ。
コンパイル後にファイル名になるのでJVMの外の世界に影響が出る・・つまりOS依存部分が出来てしまう。
0230デフォルトの名無しさん2011/12/04(日) 17:58:25.99
Java Tutorialはなぜ公式PDFがないのか。
0231デフォルトの名無しさん2011/12/04(日) 18:16:19.56
何でもかんでもPDFにしたがるのは日本だけだからな。
一まとめの文書量が多いとPDF使うよ。
0232デフォルトの名無しさん2011/12/04(日) 19:00:44.49
PDFは形式が決まった書類でもなければ極力出力したくないなあ
0233デフォルトの名無しさん2011/12/04(日) 19:24:37.75
ワードファイルとか受け取りたくないから文書はPDFでやりとりねといったら、
エラーログもPDFで送ってきた馬鹿を思い出したw
0234デフォルトの名無しさん2011/12/04(日) 20:21:41.13
皮肉もわからん極楽蜻蛉
0235 ◆QZaw55cn4c 2011/12/04(日) 20:53:55.19
>>233
いまや pdf がセキュリティホールの一つ。
0236デフォルトの名無しさん2011/12/05(月) 10:27:16.66
GUI のウインドウを出して、それにコマンドラインで
命令を送って制御したいと思っています

独自コマンドをいくつか定義して、それに加えて
UNIX 標準のコマンド等(less, grep, リダイレクトなど)を
組み合わせて使用できるようにしたいです

cygwin のターミナルから GUI プログラムに向けて
メッセージを送信するといいのかなと思いましたが
別々のプログラム間でどのように
メッセージを送信すればよいか分かりません

どなたかやり方分かる方教えて下さい
0237デフォルトの名無しさん2011/12/05(月) 10:52:15.00
>>236
ソケットはどうですか。
0238デフォルトの名無しさん2011/12/05(月) 10:56:47.86
すみません、質問です。

System.out.print() や System.out.println() を実行した後に、
その出力した値を文字列として得たいのですが、どうしたらいいでしょうか。

System.out.print("AAA");
System.out.print("BBB");
String str = /* 何かを実行することで、"AAABBB"を取得 */
ということをやりたいのです。

System.setOut() を使えばできそうなのですが、なかなかできません。
System.setOut() の引数の型が Writer であれば、StringWriter を使えるのですが、
引数の型が PrintStream なので使用できません。

何か良いアイデアはありませんでしょうか。
0239デフォルトの名無しさん2011/12/05(月) 11:08:48.12
>>237
ありがとうございます
ポート開くのはセキュリティ的に少し怖いのですが、
何か安全対策の方法はありますか?
0240デフォルトの名無しさん2011/12/05(月) 11:31:54.79
オーバーライドやオーバーロードなんて厨二っぽい名前すぎて混乱していたけど
オーバーライドの重要性(つーか必須)はよく分かったけど
オーバーロードって要らなくね?

ようは
if(変数の数==1)
Method1();
if(変数の数==2)
Method2();

みたいなもんでしょ?(型で判断もしてくれるけど)

同じメソッド名で混乱を招くだけじゃね?
0241デフォルトの名無しさん2011/12/05(月) 11:39:49.83
read1とかread2みたいなメソッド名であふれたクラスを使いたい奴も居るんだな。
0242デフォルトの名無しさん2011/12/05(月) 11:48:16.41
C/C++出身者が大好きだろ。func1,func2,funcEx,_func
0243デフォルトの名無しさん2011/12/05(月) 12:01:28.76
オーバーライドやオーバーロードを厨二っぽい名前って言ってる時点でおかしい
0244デフォルトの名無しさん2011/12/05(月) 12:03:53.75
そもそもプログラム用語ってのは厨二受けしやすい

クラス
オーバーロード
ファイナリィ
ストリーム
ヌルポ
0245デフォルトの名無しさん2011/12/05(月) 12:12:02.03
>>244
ガッ
0246デフォルトの名無しさん2011/12/05(月) 12:41:58.65
>java very.irritating.poor.eternal.force.Blizzard
>相手は死ぬ
0247デフォルトの名無しさん2011/12/05(月) 14:39:24.87
「厨二っぽい名前」とか「厨二受けしやすい」とかはどういう意味ですか?
0248デフォルトの名無しさん2011/12/05(月) 17:01:23.64
abstractって、受身(エラーチェック的)の@Overrideに対して
絶対オーバーライドしろや!的な継承をさせるためだけの物なんだな
しかも引数の数と型まで限定させてさ
そのくせ中身は空っぽ

ウゼェ存在だなwwww
0249デフォルトの名無しさん2011/12/05(月) 17:12:54.74
>>248
何をいってんだお前は?
中身が空っぽなのはお前の頭蓋骨の中だろ(笑)
0250デフォルトの名無しさん2011/12/05(月) 17:16:27.04
だなw
0251デフォルトの名無しさん2011/12/05(月) 17:26:50.97
すみません、質問ですが
<?>
ってどういう意味ですか?[]と同じ配列の意味でしょうか?
0252デフォルトの名無しさん2011/12/05(月) 17:45:55.61
キャストじゃなかった?
■ このスレッドは過去ログ倉庫に格納されています