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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/10/20(日) 19:30:39.35
プログラミング言語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
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
・String に == は使うな。equals() を使え。※

前スレッド
★★Java質問・相談スレッド164★★
http://toro.2ch.net/test/read.cgi/tech/1378219684/
0334デフォルトの名無しさん2013/11/04(月) 22:25:36.59
すみません、Javaでandroidアプリを作っているのですが、
TableLayoutで作った表の幅と高さを調整したいのですが、どうしたらいいでしょうか?

TableLayoutでテキストとボタンを配置したのですが、実機で起動したところ
表示したものが、1/9の大きさで左上隅に表示されました。
これだと、小さすぎるので幅を大きくしたいのですが、
調べたところ、xmlファイルのはあるのですが、Activityファイルでは見つかりませんでした。
どこを調べたらいいのでしょうか?
0335デフォルトの名無しさん2013/11/04(月) 22:26:59.26
>>331
何の話してんだバーカ
2chの仕様をいってんだよ
0336デフォルトの名無しさん2013/11/04(月) 22:33:35.78
自己解決しました
0337デフォルトの名無しさん2013/11/04(月) 22:35:23.94
>>333
close漏れは(�@、�A)どちらでも防げるよ。
0338デフォルトの名無しさん2013/11/04(月) 22:38:16.68
�@ってtry {の部分が失敗することってないのかな?
0339デフォルトの名無しさん2013/11/04(月) 23:21:43.96
>>328,330,331,335
おまえら面白杉だろw
0340デフォルトの名無しさん2013/11/05(火) 00:01:05.31
>>327
検索したらそのものずばりの解説がヒットしたけど、検索した?
http://www.atmarkit.co.jp/ait/articles/1112/20/news131_3.html
0341デフォルトの名無しさん2013/11/05(火) 00:06:07.20
>>340
バカ乙
0342デフォルトの名無しさん2013/11/05(火) 00:08:53.65
close()メソッドも例外投げなかったっけ?try-catchでくくる必要あった希ガス
0343デフォルトの名無しさん2013/11/05(火) 00:10:20.03
>>342
関係ねえよ
0344デフォルトの名無しさん2013/11/05(火) 00:13:21.72
>>342
あるね。

try{
 FileReader reader=new FileReader("unko");
 try{
  ...
 }finally{
  reader.close();
 }
}catch(Exception e){...}//ヌルポとIOExceptionを補足
で良い感じもする。
0345デフォルトの名無しさん2013/11/05(火) 00:14:12.45
>>342
今回の話とは関係ない
0346デフォルトの名無しさん2013/11/05(火) 00:14:29.78
>>327
前者と後者の違いはclose()の漏れに注目してる違いのコードじゃないよ
new FileReader("a.txt")の失敗をキャッチしたいかしなくていいかの違いだよ
前者はa.txtが無かった場合どこで処理されるか知らんけど、後者はそこのcatchで処理されるからcloseメソッドの呼び出しに気を遣うためにnullチェックしてる
0347デフォルトの名無しさん2013/11/05(火) 00:17:49.52
だけど自分の場合過去のソースの99%は以下
FileReader reader=null;
try{
 reader=new FileReader("unko");
 ...
}catch(IOException e){
 ...
}finally{
 try{
 reader.close();
 }catch(Exception e){...}
}
0348デフォルトの名無しさん2013/11/05(火) 00:18:10.05
つまり
前者の�@はnew FileReader("a.txt")の失敗を想定しなくていいコード
後者の�Aはnew FileReader("a.txt")の失敗をそこで処理したいコード (ただ�Aにはcatch文が書かれてないけど、本来は処理する)
0349デフォルトの名無しさん2013/11/05(火) 00:20:25.24
>>348
>>333読めよバカ
0350デフォルトの名無しさん2013/11/05(火) 00:21:59.23
馬鹿には無理
0351デフォルトの名無しさん2013/11/05(火) 00:43:39.87
質問者名前欄にレス番号入れてくれないと見落とすだろんバカん
0352デフォルトの名無しさん2013/11/05(火) 00:46:59.65
質問者は根本問題として�@と�Aのコードの違いをcloseの漏れを防ぐために厳重にしてるかどうかの違いだと勘違いしてるからあんな質問したんだろJK
0353デフォルトの名無しさん2013/11/05(火) 01:03:39.20
自信がなかったのでFileReaderのソースコード見たけど�@でOK
0354デフォルトの名無しさん2013/11/05(火) 01:27:27.96
>>347
これはまずいと思うぞ。
コンストラクタが例外投げたらぬるぽじゃないか。
ぬるぽ地獄に陥りたいのか!!
0355デフォルトの名無しさん2013/11/05(火) 01:29:31.91
>>353
今の論点は>>338なんですよ。
0356デフォルトの名無しさん2013/11/05(火) 01:33:59.45
実際にはこんな感じになると思う。
void load(File f)throws IOException
 FileReader reader=new FileReader(f);
 try{
  ...
 }finally{
  reader.close();
 }
}
0357デフォルトの名無しさん2013/11/05(火) 01:35:35.37
スレ汚しすまんね。
void load(File f)throws IOException,NullPointerException
{...}
0358デフォルトの名無しさん2013/11/05(火) 01:36:21.44
もうだめだ地獄だ。357は間違っている。
0359デフォルトの名無しさん2013/11/05(火) 01:36:54.32
>>327と>>333が質問者のレスだから両方読んでから回答してね(>>337の回答でFAだけどね)
0360デフォルトの名無しさん2013/11/05(火) 01:37:29.35
tryの行で失敗するってことはないのん??
0361デフォルトの名無しさん2013/11/05(火) 01:38:00.13
構文であるtryが失敗ってどういうこと?
0362デフォルトの名無しさん2013/11/05(火) 01:39:05.45
�@のコードの

Reader reader = new FileReader("a.txt");
// ここに何か処理があったらreaderのclose()のフォローができない
try {

って話をしたいの?
0363デフォルトの名無しさん2013/11/05(火) 01:44:11.30
自分以外の誰か、あるいは自分がうっかりして、そこに失敗の危険性のあるコードを書き足したらヤバいな
0364デフォルトの名無しさん2013/11/05(火) 01:45:14.39
構文であるtryが失敗する心配をするならfinallyが失敗する可能性も検討しないと、finallyが呼び出されず異常終了したらcloseされないじゃん!って
0365デフォルトの名無しさん2013/11/05(火) 01:46:47.96
いや、try って多分例外が発生したときのためにスタックをどこまで巻き戻すかとかやってると思うんだけど
0366デフォルトの名無しさん2013/11/05(火) 01:51:06.65
構文であるtryが内部で何をやってようとJavaプログラマがそこを配慮する必要は全くないだろJK
0367デフォルトの名無しさん2013/11/05(火) 01:54:02.55
try自体の失敗にビビったら何のメソッドも呼び出せなくなるだろ、呼び出し先のtryでシステムエラー投げられたってどうしようもないぜ
0368デフォルトの名無しさん2013/11/05(火) 02:00:26.00
メモリのスタックサイズを気にするような環境でJavaを使うのか
0369デフォルトの名無しさん2013/11/05(火) 02:51:32.05
>>172
0370デフォルトの名無しさん2013/11/05(火) 03:42:42.31
test(cursor c1){
Cursor c2 = c1
c1.close
}

こんな感じのコードを書いたんですが、
c1をクローズするとc2まで閉じちゃうんです。代入ってコピーするんじゃなくて、メモリで持ってるインスタンスそのものにアクセスするエイリアスみたいなものなんでしょうか?
0371デフォルトの名無しさん2013/11/05(火) 03:47:11.09
ハードリンクみたいなもんだよ
0372デフォルトの名無しさん2013/11/05(火) 03:48:12.72
ハードリンク - Wikipedia
http://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%BC%E3%83%89%E3%83%AA%E3%83%B3%E3%82%AF
0373デフォルトの名無しさん2013/11/05(火) 03:52:34.53
Object obj1 = new Object();
Object obj2 = obj1;
obj1 = null; //obj2はnullにならない

もしエイリアスなら、obj2はobj1と同じ物を指さないといけないからobj1をnullにしたならobj2もnullにならなければならない
0374デフォルトの名無しさん2013/11/05(火) 03:55:30.80
む、、、難しい。
0375デフォルトの名無しさん2013/11/05(火) 03:58:04.78
コピー姿態ならメソッドclone()が必要かも
0376デフォルトの名無しさん2013/11/05(火) 03:59:04.42
Human tom = new Human(); //新しい人間を1人作ってそいつにtomというニックネームをつけた
Human joe = tom; // tomとニックネームをつけた人間にjoeというニックネームもつけた
tom = null; //tomというニックネームを使うのをやめた

インスタンスの概念
0377デフォルトの名無しさん2013/11/05(火) 04:03:43.13
>>376
ジョーさんはその後もトムという通名を使ってるのですか?
0378デフォルトの名無しさん2013/11/05(火) 04:05:27.30
>>377
それは違うよ、本人がtomやjoeと名乗ってるわけじゃない、周りが勝手にtomやjoeと呼んでるだけなんだよ
0379デフォルトの名無しさん2013/11/05(火) 04:10:58.85
プロレスラー 武藤 = new プロレスラー()
プロレスラー ムタ = 武藤
ムタ = null ムタ止めた
武藤.dead 武藤(ムタ)は引退した

こ・・・こういうことか 理解した 
0380デフォルトの名無しさん2013/11/05(火) 04:16:45.78
Human tom = new Human("Jack"); //新しい人間(本名Jack)を1人作ってそいつにtomというニックネームで呼ぶことにする
Human joe = tom; // tomとニックネームをつけた人間(Jack)にjoeというニックネームでも呼ぶことにする
tom = null; //tomというニックネームで誰かを呼ぶことをやめる、tomというニックネームで呼ばれる人間はいなくなる (Jackはもうtomとは呼ばれない)
tom = new Human("Cindy"); //別の新しい人間(本名Cindy)を作ってそいつをtomと呼ぶことにする

Foo(tom); // Fooメソッドに tom と呼んでる人間(Cindy)を引数として渡す

void Foo(Human bob) { //引数で渡された人間を Fooのメソッド内では bobというニックネームで呼ぶことにする
}
0381デフォルトの名無しさん2013/11/05(火) 04:21:59.03
Human tom = new Human("Jack"); //新しい人間(本名Jack)を1人作ってそいつにtomというニックネームで呼ぶことにする
Human joe = tom; // tomとニックネームをつけた人間(Jack)をjoeというニックネームでも呼ぶことにする
tom = null; //tomというニックネームで誰かを呼ぶことをやめる、tomというニックネームで呼ばれる人間はいなくなる (Jackはもうtomとは呼ばれない)
tom = new Human("Cindy"); //別の新しい人間(本名Cindy)を作ってそいつをtomというニックネームで呼ぶことにする
Foo(tom); // Fooメソッドに tom と呼んでる人間(Cindy)を引数として渡す
tom.die(); // tomと呼ばれてる人間(Cindy)を死なす
joe = null; // joeというニックネームで誰かを呼ぶことをやめる、joeというニックネームで呼ばれる人間はいなくなる、また同時にJackをニックネームで呼ぶ者がいなくなったためJackは失踪する
joe.die(); // joeと呼ばれてる人間はいないので存在しない者を死なすことは出来ない

void Foo(Human bob) { //引数で渡された人間を Fooのメソッド内では bobというニックネームで呼ぶことにする
}
0382デフォルトの名無しさん2013/11/05(火) 04:28:49.67
荒らすな雑魚
0383デフォルトの名無しさん2013/11/05(火) 05:12:16.69
>>382
        ノ ⌒γ⌒)
      ((       (
     (          )
     )          ヽ
    ノノ           ))
   (    ノノ   ノノ    )
  (((   ノ乂ノノ从 人乂  ヽ
   )  )ノノ__」」__|   )
  (   )) (●) |(●)/(  ))
  ))   (   ノ | ヽ | )ノ    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  ( メ  ヽヽ   」  / ノ   <  え!ここ荒らしちゃいけないの!?
 ((乂  ノノ | llllllllllllll ノノ )     \________
   ((乂  ヽヽ ++++ノノノ)((
     ヽ乂  ヽ  ̄ ̄/ ノ
          ヽllllllノ
0384デフォルトの名無しさん2013/11/05(火) 05:19:39.58
どんどん書き込んでね
0385デフォルトの名無しさん2013/11/05(火) 05:42:37.68
アンドロイドはすれ違い
0386デフォルトの名無しさん2013/11/05(火) 06:10:49.45
変数とは認識。
0387デフォルトの名無しさん2013/11/05(火) 06:39:30.78
馬鹿には無理
0388デフォルトの名無しさん2013/11/05(火) 08:42:01.61
>>296
0389デフォルトの名無しさん2013/11/05(火) 23:37:37.99
JNIの技術使えばandroid携帯の色々な機能が使えたりする?
0390デフォルトの名無しさん2013/11/06(水) 01:50:55.99
色々な機能が使えるよ
0391デフォルトの名無しさん2013/11/06(水) 02:36:56.28
Jarファイル内にDLLを入れてJNIでアクセスすることできる?
0392デフォルトの名無しさん2013/11/06(水) 03:07:41.31
JNI で DLL, SO 等のネイティブライブラリを JAR に含めるには|てくめも@ecoop.net
http://www.ecoop.net/memo/archives/2007-02-17-3.html

Javaで標準以外のライブラリを使用したプログラムを他のPCで動か.. - 人力検索はてな
http://q.hatena.ne.jp/1288867770

Jar ファイルを持つネイティブ dll をバンドル
http://ja.softuses.com/218163

コンピュータ職の徒然日記 - Yahoo!ブログ
http://blogs.yahoo.co.jp/shikakuit/archive/2011/08/25

View Source Native code and classloaders
http://jiemamy.org/plugins/viewsource/viewpagesrc.action?pageId=2162771

Oracle CEPアプリケーションのアセンブルとデプロイ
http://docs.oracle.com/cd/E28389_01/dev.1111/b61654/deploy.htm
0393デフォルトの名無しさん2013/11/06(水) 06:09:41.09
ヒマ人だなお前w
0394デフォルトの名無しさん2013/11/06(水) 06:47:25.39
>>391
直接は出来ない。MANIFEST.MFをごにょごにょすれば出来るとかは基本的に迷信。
getResourceAsStream等でJAR内のDLLを一端テンポラリディレクトリ等に書き出して
System.loadで読み出す必要がある。
0395デフォルトの名無しさん2013/11/06(水) 08:14:15.89
>>392
そーゆーのはブログでやって
0396デフォルトの名無しさん2013/11/06(水) 08:47:18.80
XML使うときってどのライブラリ使うのが一般的というか簡単ですか?
0397デフォルトの名無しさん2013/11/06(水) 09:07:44.30
java
0398デフォルトの名無しさん2013/11/06(水) 09:10:24.16
>>196
重くても楽がいいなら標準DOM
でなきゃ標準SAXで
0399デフォルトの名無しさん2013/11/06(水) 09:16:47.25
rhino上のjQuery経由
0400デフォルトの名無しさん2013/11/06(水) 09:50:30.21
馬鹿には無理
0401デフォルトの名無しさん2013/11/06(水) 09:55:47.17
pull型最強
0402デフォルトの名無しさん2013/11/06(水) 10:03:07.83
Pullはいかにも手続き型って感じで嫌だ
0403デフォルトの名無しさん2013/11/06(水) 12:12:43.18
アホには無理
0404デフォルトの名無しさん2013/11/06(水) 12:27:38.42
java.util.Dateのメソッドは非推奨ばっかりなんですが
日付を扱う場合はCalendarクラス
時刻を扱う場合はDateFormatクラス
を使うのが定番でしょうか?

Java7のドキュメントのこのページ見ながら勉強してます
http://docs.oracle.com/javase/jp/7/api/java/util/Date.html
0405デフォルトの名無しさん2013/11/06(水) 12:32:30.20
ガンバって勉強して下さい
0406デフォルトの名無しさん2013/11/06(水) 12:41:03.38
>>404
いいえ。
0407デフォルトの名無しさん2013/11/06(水) 12:56:44.63
util.Dateを使えって事ですか?
0408デフォルトの名無しさん2013/11/06(水) 13:12:55.70
Date は、地域や暦によらない不変の日付時刻を表す
Calendar は、ある特定の地域と暦における年月日時分秒を表す
例えば、日本時間における西暦2013年11月6日12時27分38秒は、
アメリカ東海岸では西暦2013年11月5日22時27分38秒になる
Date は特定の地域や暦に結びついていないので、 Date 的にはどちらも等しい
同じ Date をまた別の地域や暦の Calendar にセットすれば、その地域や暦に応じた年月日時分秒になる
0409デフォルトの名無しさん2013/11/06(水) 15:11:41.13
未だに日付関連APIすらまともに使えないって…
初心者未満のレベルだってことを自覚した方がいいぞ
0410デフォルトの名無しさん2013/11/06(水) 15:51:44.98
質問スレで上から目線()
0411デフォルトの名無しさん2013/11/06(水) 17:04:27.24
Runnableのような単一のメソッドのみ持ったインターフェースを、コールバック用の
関数っぽく扱うために(メンバ変数などを持たせずに)、runメソッドのみを実装することに
なると思うんですが、そのような関数のためのインスタンスでも、いちいちヒープ領域に
インスタンスを作ったり開放したりするコストなどがかかるのでしょうか?

同じようなモノをJava8で追加されるラムダ式で実現すると、static finalで作った関数と
同程度の最適化が起こると聞いたので気になります
0412デフォルトの名無しさん2013/11/06(水) 17:09:42.88
ゆっくり休んだほうがいいぞ
0413デフォルトの名無しさん2013/11/06(水) 17:12:14.31
だなw
0414デフォルトの名無しさん2013/11/06(水) 17:20:30.01
>>408
詳しい解説ありがとうございます
Calendarでやってみたんですが日本の日時になってくれません

TimeZone tz = TimeZone.getTimeZone("Asia/Tokyo");
Calendar calendar = Calendar.getInstance(tz);
System.out.println(calendar.getTime());
System.out.println(calendar.getTimeZone());

いくつかのオンラインでためしてみたのですが時間がずれてしまいます
http://www.browxy.com/
http://www.compileonline.com/compile_java_online.php
0415デフォルトの名無しさん2013/11/06(水) 17:32:17.98
>>414
getTime の戻り値は Date
Date は地域に結びついていないと言った
Calendar の年月日時分秒は get で取る
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH) + 1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
System.out.println(calendar.get(Calendar.HOUR_OF_DAY));
System.out.println(calendar.get(Calendar.MINUTE));
System.out.println(calendar.get(Calendar.SECOND));
0416デフォルトの名無しさん2013/11/06(水) 17:48:17.65
馬鹿には無理
0417デフォルトの名無しさん2013/11/07(木) 03:02:13.62
JavaDBを使ったアプリを作って配布する際にJavaDBのファイルを含めないとアプリをダウンロードしたユーザはアプリを使えないよね?
JavaDBのファイルってアプリに含めて配布してもいいのかな?どのファイルをアプリに含めればいいんだろ
0418デフォルトの名無しさん2013/11/07(木) 06:38:48.39
java初心者で申し訳ないですが質問です。

public class Sample2 {
public static void main(String[] args) {
int count=5;


while (count !=5&&count>0){
System.out.println("while :count=" +count);
count--;
}


do{
System.out.println("do-while : count="+count);
count--;
}while (count!=5&&count>0);
}

}

で結果が

do-while : count=5
do-while : count=4
do-while : count=3
do-while : count=2
do-while : count=1

になるのですが count!=5 のところの ! の意味がよくわかっていない為よくわかりません。
階乗の意味か逆の意味のどちらかと思い自分なりに考えてみたもののさっぱりでした。
count!=5 の意味に重点においた解説をどなたかしてはもらえませんか?
0419デフォルトの名無しさん2013/11/07(木) 06:43:22.44
甘えてばっかりだなゆとりは
0420デフォルトの名無しさん2013/11/07(木) 07:05:04.47
きみが5歳ならおしえてあげる。
0421デフォルトの名無しさん2013/11/07(木) 07:08:29.05
>>418
count != 5は、countが5ではないって意味。
while (count != 5 && count > 0)
はcountが5ではなく、0より大きければという条件。
countは5なので、条件は不成立。最初のwhile文は実行されない。

do while文では最初にdoのところが処理されて
count--でcountが4になる。
countが5ではなく、0より大きければという条件が成立する。
0422デフォルトの名無しさん2013/11/07(木) 07:11:00.33
オレオレ語を使われてもわかりません。
0423デフォルトの名無しさん2013/11/07(木) 07:23:51.37
>>421
解説ありがとうございます!
おかげで理解することができ、スッキリしました!
0424デフォルトの名無しさん2013/11/07(木) 07:28:31.44
テキスト検索ボックスに入力されるたびにリストのフィルター処理しているんですが、一文字目のフィルター処理中に2文字目が入力された場合、処理を中断して2文字目の処理を優先する方法はありますか?
0425デフォルトの名無しさん2013/11/07(木) 07:29:13.14
>>421
なるほど、大変良くわかりました。
どうもありがとうございました!
0426デフォルトの名無しさん2013/11/07(木) 07:41:39.94
javadbは、jdk7/db/LICENSE のファイル(linux)によると Apache License Version 2.0 とあるので、dbフォルダごと全部そのフォルダの構造やファイルを一切編集しないでコピーすれば、再配布できるはず。
0427デフォルトの名無しさん2013/11/07(木) 08:03:56.16
一番年下のたらちゃんに敬語を強制させているさざえ家の闇に触れた気がした。
0428デフォルトの名無しさん2013/11/07(木) 08:28:14.09
>>422
0429デフォルトの名無しさん2013/11/07(木) 11:45:20.36
集合の比較ができるクラスはありますか?

int配列1 1,2,3
int配列2 1,3,5
とあって、
この場合、1,3を取得をしたいのです。
0430デフォルトの名無しさん2013/11/07(木) 12:06:57.00
Set、検索するきもないのか
0431デフォルトの名無しさん2013/11/07(木) 12:36:05.92
教えてクレクレ君っていうのはくだらない理由で大学教授を怨むパターンが多い。
0432デフォルトの名無しさん2013/11/07(木) 12:43:12.70
>>172
0433デフォルトの名無しさん2013/11/07(木) 13:27:52.81
>>430
ありがとうございます。
こういうの探してました!
ちょっと試してみます。
■ このスレッドは過去ログ倉庫に格納されています