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

【初心者】Java質問・相談スレ4【大歓迎】

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
JAVA初心者の方はこちらのスレで質問をしましょう。そして誰か教えてあげてください。

なお、ソースを貼るときには、半角空白が消える仕様のため、タブ1つを全角空白2つに
置換してから投稿しましょう。雑誌や宿題などの疑問を質問するときは出展を明記した
ほうが解決が早いです。

関連情報は >>2-10 あたりにあります。 (一部 dat落ちやHTML化待ち)


JavaScriptの質問はWeb製作板へどうぞ。
web制作管理
http://pc.2ch.net/hp/

パソコンの基本操作に関しては、PC初心者板や、各OS板などで質問しましょう。
パソコン初心者@2ch掲示板
http://pc.2ch.net/pcqa/

上級者の方で教える技術が無い方は下記スレでダベりましょう。
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/


基本的にsage進行でおねがいします。
0302デフォルトの名無しさんNGNG
なんか似たような質問が多いな。どっかの課題か?
俺はわからないから答えられないけど。
0303デフォルトの名無しさんNGNG
String d = "1989/1/7";
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date past = df.parse(d);
Date now = new Date();
if(now.before(past)) throw new IllegalArgumentException("未来入力すんな");
int dateSpan = (int)((now.getTime() - past.getTime()) / 24 / 60 / 60 / 10000);

簡単に書くとこんなか。Calendar 使わんとタイムゾーンを考えなきゃいけないんだっけ?
Calendar#add() でカウントアップするのもあるけど。
0304デフォルトの名無しさんNGNG
>>300
その日付に意味はあるのか?
0305デフォルトの名無しさんNGNG
>>303
sankusu
0306デフォルトの名無しさんNGNG
>>304
誕生日と思われ
0307デフォルトの名無しさんNGNG
>>306
13歳か…
先生に聞け!!
0308デフォルトの名無しさんNGNG
<jsp:useBean /> を使うと id に指定した名前の変数が <% %> の中で使えるよね。
これと同じ事って拡張タグライブラリだけじゃ出来ないよね?
0309デフォルトの名無しさんNGNG
byteをunsignedとして扱いたいんだけど、自前で+256して&255するしかない?
もっと簡単なのあったら教えてください。結果の型は不問。
0310デフォルトの名無しさんNGNG
jEditorPaneのsetPage()を使ってHTML表示したとき
リロード(もう一度、同一URLをsetPage)が
うまくできず古い内容しか表示されないんだけど、なんかいい方法ない?
0311デフォルトの名無しさんNGNG
質問の日本語が良く分からないけれど、
結果の型が不問なら、&0xffするだけでいいのでない?
自動的にintへ昇格されるはずだと思われ。

0312309NGNG
>>311
期待したとおりになりました。サンクス!
0313デフォルトの名無しさんNGNG
JavaでExcelファイルを読みこんで
セルを指定してそのセルに書かれている文字列を画面に表示させたいんですけど
こんなこと出来ますか?
0314デフォルトの名無しさんNGNG

>313
ttp://www.hcn.zaq.ne.jp/no-ji/reseach/index.htm
0315デフォルトの名無しさんNGNG
Javaマンセ〜
0316310NGNG
最近javaに目覚めた。もちろんマンセー
but, swingむずー
表のカスタマイズむずー
可変レイアウトむずー
0317デフォルトの名無しさんNGNG
住民基本台帳法について教えてもらえるネットの専門家の方々には、どの板
でお会いできるのですか?
0318デフォルトの名無しさんNGNG
gunbareyoむずー
0319デフォルトの名無しさんNGNG
>>317
俎板
0320デフォルトの名無しさんNGNG
J2EEサーバーの起動がうまく行きません。
下記のようなエラーがでます。何が悪いかわかる方がいましたら教えてください
OSはvine linux 2.1です

$ j2ee -verbose
Cannot write the seed file for fast startup. The next startup will be slow.
以後エラーメッセージが続く・・・
0321デフォルトの名無しさんNGNG
>>320

320 and/or vine linux 2.1
0322デフォルトの名無しさんNGNG
ファイルのランダムアクセスで質問があります。

例えば、
--以下ファイルサンプル----
あああああああ
いいいい
ううううううう
ええ
-------------------------
のように、1行が可変長のファイルで3行目を1行まるまる取得するには
どのようにしたら良いでしょうか?
RandomAccessFileクラスのseekメソッドを使用してポインタを
移動しようとしても1行が可変長なため、どうしたらいいか悩んでいます。
各行の頭にポインタを指定できて、その行に対してreadLineメソッドで
読むようなことは出来ないでしょうか?

どなたか宜しくお願いします。
0323デフォルトの名無しさんNGNG
プログラムのことで相談というかお願いです。

データメーカーというプログラムを持ってる方いらっしゃらないでしょうか?

あるのでしたらUPしてもらえませんか?
0324デフォルトの名無しさんNGNG
JTableで編集可能なテーブルは、セル上でダブルクリックをすれば編集モードになるけど、
シングルクリックで編集モードにするにはどうするの?
0325デフォルトの名無しさんNGNG
>>322
先頭から一行づつ読んでく方法以外は無理。
そういうファイルをランダムアクセスで効率的に読むなら、ファイルの先頭に
seek オフセット値のテーブルを持たせるのが普通。
0326320NGNG
>>321さん
ごめんなさい。意味が良くわかりません。
vine linux2.1、jdk1.4、j2SDKEE1.4.1以外特に何も入れていません。
j2eeのAPIを含むプログラムがコンパイルできたので環境設定は
うまくいっていると思います
0327デフォルトの名無しさんNGNG
Exception in thread "main" java.lang.NoClassDefFoundError: クラス名
↑コンパイルした後、classを動かそうとするとこのエラーがでます。
意味がわかりません。わかる方がいましたら教えてください
0328デフォルトの名無しさんNGNG
>>327
動かそうとするとき、大文字と小文字はちゃんと区別してますか?
0329327NGNG
>>328さん
ありがとうございます。
大文字、小文字、誤字脱字等のミスはありませんでした。
0330デフォルトの名無しさんNGNG
CLASSPATHの設定を見なおす。
この質問、超FAQで毎スレ2、3回出てると思うんだけど。
0331327NGNG
>>330さん 
ありがとうございます。やっぱりクラスパスですか・・・
java -classpath . クラス名 とコマンドを打つと
Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/Session
と出ます。現在linuxで使っているのですが、windowsで同じプログラムを動かして
見るとうまく行きます。
CLASSPATHはともに
J2EE_HOME/lib/j2ee.jar , J2EE_HOME/lib/locale
が入っています。
Linuxだとほかに何か加えなければならないのでしょうか?
0332デフォルトの名無しさんNGNG
int型の引数をとるコンストラクタを持つクラスがあって、
そのクラスを動的にロードし、上記コンストラクタを使って
インスタンスを作るにはどうしたらいいですか?
「上記コンストラクタを使って」の部分でつまってます。。
0333デフォルトの名無しさんNGNG
>>332
hennakurasu hen = new hennakurasu(1);
0334デフォルトの名無しさんNGNG
>>332
java.lang.Class#getConstractor()
java.lang.reflect.Constractor#newInstance()
0335332NGNG
レスどもです。
いまやっているのを具体的にいうと、プラグインクラスのインタフェース
まわりの設計です。

>>333
ロードするクラス名は不定(forName()でロード)で、そのメソッド
(コンストラクタ含む)はわかっているという状況なので、困ってます。
書いてなくてすみません。

>>334
getConstructor()の引数にプリミティブなintを指定するにはどうしたら
いいですか?あと、newInstance()はAPIリファレンスには空の引数リスト
でnewしたのと同じとありますが、引数ありでnewしたいのですが。
0336334NGNG
>>335
ドキュメントはちゃんと嫁。
int val =...;
Class cls = ...;
Constractor cns = cls.getConstractor(new Class[]{int.class});
Hoge instance = (Hoge)cns.newInstance(new Object[]{new Integer(val)});
0337334NGNG
>>335
ついでだけど、
AccessibleObject#setAccessible(boolean)
を併用することで、publicでないメンバへのアクセスも可能になる。
(リフレクションは何もかもをぶち壊しにする可能性のある諸刃の剣
ということですな。)リフレクションを使用したフレームワークを構築
するとき、その機構を外部から隠蔽したいときに使うとよいかも。

ただし、SecurityManagerが許可していない場合など(Servletで
動かしているときなどは、コンテナ側でSecurityManagerがインス
トール済みのことがあるよね)は、↑は出来ないので注意。
0338デフォルトの名無しさんNGNG
JavaからDBの入力とか削除とかの操作って出来ますか?
0339334NGNG
>>338
できます(条件付で)。Googleで"JDBC"で検索。または本屋にいきなはれ。
0340デフォルトの名無しさんNGNG
ていうかDBって何か知ってるのか?
0341デフォルトの名無しさんNGNG
>>340
ドリーム・ボーイ
0342デフォルトの名無しさんNGNG
ドラゴンボールに決まってんだろ

0343デフォルトの名無しさんNGNG
>>340
デルタ・ブルース
ドン・ブレーザー
デビッド・ベッカム
0344デフォルトの名無しさんNGNG
>>340
D   B
だってバカですから。
0345デフォルトの名無しさんNGNG
全然関係ないけど
その昔
DBクイーンズってグループがあったよね?
0346デフォルトの名無しさんNGNG
>>345
それはいくら何でも失礼だぞ。

今度の懐かしの人100にLINDBERGが出るらしい。
あんまりだ。今年解散だがまだまだ現役だ。
0347335NGNG
>>336
できました!ありがとうございます!!
ところで、int.classは、型intのフィールドclassで、intのClassインスタンス
であるという解釈であってるんでしょうか?同様のことを表すのに、いくつか
あさった限りではInteger.TYPEとしていたのでちょと気になりました。

リフレクションはいろいろおもしろそうなことができそうですね。
深入りするとドツボにハマりそうですが。
0348334NGNG
>>347
System.out.println(int.class == Integer.TYPE);
でたしかめれ。
0349347NGNG
>>348
確認しました。サンクス!
あと、このことについてさらに検索したところ
http://www.jguru.com/faq/view.jsp?EID=20857
がみつかりました。上記URLには、一貫性と単純さのために、
.classを使えと書いてありました。
0350デフォルトの名無しさんNGNG
JButtonを拡張したクラスにActionListenerインターフェイスをつけて、ボタンを押したら新しいウィンドウが開くように書いたつもりなんですが、
開かないです。

class StartButton extends JButton implements ActionListener{

public StartButton(String s){
super(s);
}

public void actionPerformed(ActionEvent e){

Ban ban = new Ban("test");
ban.setDefaultCloseOperation(3);
ban.show();
}

どうすれば開くようになりますか?
0351デフォルトの名無しさんNGNG
>>350
super(s) の下に this.addActionListener(this)
0352デフォルトの名無しさんNGNG
>>351
無事ひらきますた。ありがとうございます。
0353デフォルトの名無しさんNGNG
この言語って独自ファイルフォーマットの実装
って出来ないんじゃないの?
まあ小ざかしい手を使えば出来るのかもしれないが
費用対効果であまり現実的じゃないよな。
あんまり業務で使う気になれんな。
0354デフォルトの名無しさんNGNG
>>353
は? バイナリファイルなら普通に扱えますが?
0355デフォルトの名無しさんNGNG
API リファレンスすら読まない人には仕事で使ってもらいたくないですね :P
0356354NGNG
ランダムアクセスもな。
0357デフォルトの名無しさんNGNG
>>354-356
いつもの "彼" なので相手にしないで下さい。
0358デフォルトの名無しさんNGNG
ふーん。符号無しbyte型がない言語でねえ。
ぼくはあんまり処理を増やしたくないのだ。
(flag&0x01)!=0x00
といった処理や、
flag=0x01
といった処理が何万とあるとき、
楽に書ければいいんだけど。
0359デフォルトの名無しさんNGNG
あのね 他の言語やってるから JAVAが窮屈なんだよ
JAVAしか知らないプログラマには JAVAは最適だよ
0360デフォルトの名無しさんNGNG
>>358
ちょっとしたビットフィールドなら byte なり int なり使ってくだ
さい。大量のビットフィールドを扱いたいなら BitSet でも使って
ください。符号なし byte が int で代用できない理由は? そもそも
何が聞きたいんですか?
0361デフォルトの名無しさんNGNG
だからJavaのint,byteは符号付だから符号拡張で変なビットが
たってしまうだろ。そこが問題なのだよ。
例えば通信で8ビットでデータを送る場合場合
十進で128以上の値は符号拡張されるだろ。


0362デフォルトの名無しさんNGNG
byteがsignedかunsignedかをきにしなきゃいけないの?
Javaって32ビット以下のプリミティブ値って実行時には
32ビットをアロケートされるんだよね?プログラム上では
intにキャストして全部計算といても問題なし。
byteなんて普通はI/O前後ぐらいでしか使わんとおもうし、
使う必要ない。

・・・と思っていたんだけど、おいらの勘違いですか?
0363デフォルトの名無しさんNGNG
で?
0364デフォルトの名無しさんNGNG
>>363 は >>361 宛て。
結局最初の byte → int と最後の int → byte で "& 0xFF" って書くのが
面倒という話で良いわけ?
0365デフォルトの名無しさんNGNG
このネタ、JDK1.4βスレでいろいろやってたのを見た。
http://pc3.2ch.net/test/read.cgi/tech/990949654/l50
350前後からかな。
途中で方向が変わってるけど。
0366デフォルトの名無しさんNGNG
>Javaって32ビット以下のプリミティブ値って実行時には
>32ビットをアロケートされる

ということを知らない人がえらい苦労を自ら買っているわけで、
自業自得です。仕様書ぐらい嫁。
0367デフォルトの名無しさんNGNG
まぁ俺も C/C++ から来たばかりの頃は (もう 5,6 年前か) unsigned char が
ないのが不満だったな。「符号なしと符号付で byte と tiny に分けてくれ」
って言いたかったが、どこに主張して良いか分からなかった。C/C++ 時代に
築き上げたバイナリ操作の小技がほとんど使えなくなってしまったんだからな。
しかしあえて Java 流儀でやり始めてみると、そんな小技は大したもんじゃ
なかったと思うようになった。

まぁあれだ、つまりは言語移行時のはしかのようなもんだ。
0368っていうかNGNG
char 型使えば?
0369デフォルトの名無しさんNGNG
>>358
BugP(以下略)
プリ(以下略)
そんなに めんどくさいなら呼(以下略)
0370デフォルトの名無しさんNGNG
>>365
懐かしーっすね
0371デフォルトの名無しさんNGNG
>>367
さっきから見てるとごねてるのはCを使いこなしすぎた人々ですな。
JavaにCの面影を探してるよう。

「1代目は本立てにもっと細かな彫刻を施してたぞ。2代目はクソ。」

お前はその彫刻が無いと本を立てられんのかと。
むしろ、彼の作った伸縮時代で漬け物石にもなるという高機能は無視なのか。
みたいな。
0372デフォルトの名無しさんNGNG
>>365
あー、そこだそこだ。俺が byte のほかに tiny 型が欲しいって言ったの (藁
0373デフォルトの名無しさんNGNG
>>371
いや、Cを使いこなした人だったら、
ゴネてないでちゃっちゃとプリプロセッサ書いちゃいます。
ゴネてるのは(以下略)
0374デフォルトの名無しさんNGNG
>>302
>>307
市ね
0375デフォルトの名無しさんNGNG
>>374
煽りはスピードが命。
0376デフォルトの名無しさんNGNG
>>374
このスレくらい全部読め
過去スレまでとはいわんから
0377デフォルトの名無しさんNGNG
初心者どころかなんの知識もないんですが…プログラミングって何にやればいいんでしょう?
ツールとかいらないんですか?
0378デフォルトの名無しさんNGNG
>>377
>何にやればいいんでしょう?
基本的にはコンピュータ
0379デフォルトの名無しさんNGNG
Javaやるつもりなら、コンパイラくらいは必要だね。
0380デフォルトの名無しさんNGNG
あとメモ帳も必要だろう。
0381デフォルトの名無しさんNGNG
あと鉛筆。
定規があるとなおよい。
0382デフォルトの名無しさんNGNG
とりあえず、入門書買ってこい。いっぱいあるから。
サンプルプログラムがいっぱい載ってるやつが良いと思う。
役に立たない本に限って、ごたくならべて、うんちくたれてる。

と、釣られてみるテスト。
0383デフォルトの名無しさんNGNG
JAVA1001Tipsか?
JAVA Program in a Nutshellか?
0384デフォルトの名無しさんNGNG
>>382
アプレットから勧めるべきだろうか?
じゃあJava2は避けさせた方がいいのだろうか?
0385デフォルトの名無しさんNGNG
>>384
間を取ってJAppletだ!
0386デフォルトの名無しさんNGNG
せっかくだから、どんな入門書がいいか吹いてください。
・DOS窓の正しい使い方が載っている
・PATH / CLASSPATH の正しい説明が載っている
・コンパイル時・実行時のトラブル対策が載っている
とか。

>383
それは入門書じゃないと思います…

>384
アプレット本だから悪いって事はないと思うんだけどな。
まぁ、HelloWorld ぐらいはやっといてもらいたい気もするが。
File だ、Stream だ、なんてのは次のレベルだと思うし。
Java2 かどうかは関係ないっしょ?
最近の本はどっちのイベントモデルで書いてあるんでしょうかね?
0387デフォルトの名無しさんNGNG
アプレットでMIDIを鳴らそうと思ってとりあえず
・・・
AudioClip ac = new AudioClip(getDocumentBase(),"test.mid");
ac.play();
・・・
とやってみたんですが、
ふつうのmidiプレイヤーで再生して出る音量と違って、Maxボリュームにしても
殆ど聞こえない!です。ボリュームを管理するにはどうすればいいか教えてください。
アプリの方には独自のクラスとボリューム調節用メソッドがあるようですが、、、

0388デフォルトの名無しさんNGNG
>>386
JAVA Program in a Nutshellは入門書だと思ったのだが・・・
0389デフォルトの名無しさんNGNG
>>387
ちょっと待て。AudioClipはインタフェースではないか。
new出来るのかと小一時間・・・


少なくとも
AudioClip ac = applet.getAudioClip(getDocumentBase(),"test.mid");
ではないのか?
正確なコードを切り張りして再挑戦。
0390訂正NGNG
あ、よく見たらgetDocumentBase()とかやってるから、Appletのサブクラスか。
ならば正確には
AudioClip ac = getAudioClip(getDocumentBase(),"test.mid");
だな。
0391デフォルトの名無しさんNGNG
>>387
判明。
× getDocumentBase()
○ getCodeBase()

理由
getDocumentBase() はアプレットの載っているHTML文書のファイル
のurlを返している。


とか書いてたが、試しにやってみたら・・・音が出た・・・


とするなら、HTML文書のurlにtest.midが無い、もしくは名前間違い。
ではないのか?例外起きないから。

import java.applet.*;
import javax.swing.*;

public class AudioApplet extends JApplet {
AudioClip ac;
public void init() {
System.out.println("getCodeBase() : "+getCodeBase());
System.out.println("getDocumentBase() : "+getDocumentBase());
ac = getAudioClip(getDocumentBase(),"test.mid");
}
public void destroy() {
ac = null;
}
public void start() {
ac.play();
}
public void stop() {
ac.stop();
}
}
0392デフォルトの名無しさんNGNG
>>386
君には、このスレがあるから大丈夫ね。
「入門xx」買って、とりあえず始めなさい
まずはそれから
0393デフォルトの名無しさんNGNG
>>392
「入門酔拳」?
0394386NGNG
>389〜391
 早速レスありがとうございます。書き込みはミスでした(getAudioClip()でした。)
音は出るんですが、Maxボリュームでやっと聞こえる程度で困ってます。
今のところ"MIDIファイルをMML形式に変換していじる"しか思いつきましぇん。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
import java.applet.AudioClip;

public class audio2 extends Applet{
AudioClip ac;
Button bt1;
public void init(){
add(bt1 = new Button("play"));
bt1.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
ac.play();
}
}
);
ac = getAudioClip(getDocumentBase(),"hikari.mid");
}
}
0395387NGNG
↑387の間違いですスミマセンスミマセン
0396デフォルトの名無しさんNGNG
>>394
>MIDIファイルをMML形式に変換していじる
ここまでできるならMIDIファイル直接いじれよ・・・。
0397377NGNG
厨質問に答えていただきみなさんありがとうございます。それでは入門書買ってきます。
0398独習Java勉強厨NGNG
誰か私に抽象クラスとインターフェースの存在意義について
説明してくれる勇者はいませんか?とくにインターフェース。
空っぽのメソッドだけ宣言していったい何になるのかがどうしても理解しがたいんです。
あとでそれを継承したインターフェースやらクラスやらでメソッドを記述するなら
大元で空っぽのメソッドなんて書かなくてもいいじゃないかと思ってしまいます。

そしてもうひとつ質問が。
定数として扱うものはクラスの先頭で宣言しなくてはいけないものですか?
public static void main(String args[])よりも前に記述してあったので少し気になった次第です。
0399初心者君。NGNG
すいません質問が有ります
抽象メソッドの宣言は、
public abstract void method();
で良いんですよね。
この場合戻り値がvoidなのでこのメソッドをオーバーライドするメソッドも
戻り値を無しにしなくてはいけないのですか?
public abstract method();
では何故いけないのですか?
0400デフォルトの名無しさんNGNG
あるハッシュ表の中身を一端ファイルにとっておき、またそのファイルから
ハッシュ表に読み込むにはどうしたらいいですか。
できれば、具体的に教えて欲しいのですが。
0401とか。。。NGNG
>>399
いけない。戻り値もオーバライドの一部で戻り値のみかえるのはいけない。戻り値を省略できるのはコンストラクタのみ。
0402とか。。。NGNG
>>398
インタフェースはジャバにない関数ポインタの替わりにつかえるっしょ。
後それなりの多重継承用。多重継承のあるC++からなぜ削られたかは
EffectiveC++っちゅう本を読むとそのやらしさ、危険さはわかる。
■ このスレッドは過去ログ倉庫に格納されています