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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2005/11/13(日) 14:48:57
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/

これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。

よくある質問
・「コマンドまたはファイル名が違います」
 「'javac' は、内部コマンドまたは外部コマンド、
 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
 「Exception in thread "main" java.lang.NoClassDefFoundError: 」
 http://www.wikiroom.com/java/?path,classpath
・String に == は使うな。equals を使え。
・内部クラスから外部クラスのローカル変数は使えない。他の方法を考えろ。

前スレッド
【初心者】Java質問・相談スレッド74【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1130315416/

/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。

JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/

次スレは>>980あたりでお願いしまする。
0002デフォルトの名無しさん2005/11/13(日) 15:08:25
今ここに宣言する!!!

「2ゲットズサー三三三三三⊂⌒⊃゚Д゚)⊃」
0003デフォルトの名無しさん2005/11/13(日) 15:21:05
華麗に3ゲット
0004デフォルトの名無しさん2005/11/13(日) 15:32:23
String型の文字列のn番目の文字を抽出することってできますか?
0005前スレ9982005/11/13(日) 15:33:09
前スレ1000ありがとうございます。

Javaを独学で学ぼうとしているものです。
独学でマスターするには
■ともかくプログラミングする環境を整える。Javaならば、開発のためのソフトなどを用意しインストールして使える状態にする。
■後は、ひたすらプログラムを書く!
ということなので
初心者におすすめのソフトがあればお教えください。
0006デフォルトの名無しさん2005/11/13(日) 15:34:43
>>5
前スレ1000で回答もらってたじゃない
マルチは嫌われますよ
0007デフォルトの名無しさん2005/11/13(日) 15:35:24
>>4
これくらい低レベルな質問なら、おれでもわかる。
char c = s.charAt(n);
0008デフォルトの名無しさん2005/11/13(日) 15:37:49
>>7
ありがとう
0009デフォルトの名無しさん2005/11/13(日) 16:01:33
文字データの数字を数字に変換するにはどうしたらいいですか?
0010デフォルトの名無しさん2005/11/13(日) 16:04:29
char c = '9';
int i = c - '0';

String s = "10";
int j = Integer.parseInt(s);
0011デフォルトの名無しさん2005/11/13(日) 16:26:26
>>10
ありがとうございました
じゃあ逆に
数字を文字に変換することってできますか?
0012デフォルトの名無しさん2005/11/13(日) 16:35:56
>>11
APIくらいみやがれ

各種型から文字列にしたいのなら
String.valueOf( 123 )

逆に各種型からIntegerにしたいのなら
Integer.valueOf( "123" )

FloatやDouble、Longなどもこの規則で統一された

0013デフォルトの名無しさん2005/11/13(日) 16:41:00
>>12
ありがとうございました

0014132005/11/13(日) 16:44:02
たびたびすいませんが
n文字の文字列から先頭のn-1もじを抜き取りたいんですが
簡単にできる方法ってないですか?
自分は
1からn-1番目の文字列をひとつずつcharAtで抜き取るぐらいしか
思いつかないんですがこれだとすこしコードが汚くなって
いやなんですが・・・
0015デフォルトの名無しさん2005/11/13(日) 16:45:58
>>14
> たびたびすいませんが
> n文字の文字列から先頭のn-1もじを抜き取りたいんですが
> 簡単にできる方法ってないですか?

あります。以上。回答もらったらWiki更新しようね。
0016デフォルトの名無しさん2005/11/13(日) 16:53:14
Wikiってなーに?
0017デフォルトの名無しさん2005/11/13(日) 16:59:42

型 Thread からの static メソッド sleep(long) には静的にアクセスしてください。

↑このエラーメッセージってどういうこと?
静的にアクセスってどうすればいいの?
0018デフォルトの名無しさん2005/11/13(日) 17:06:51
ウイッキーさん
0019デフォルトの名無しさん2005/11/13(日) 17:07:36
型 Thread の static メソッド のsleep(long) に静的にアクセスしろって事。
0020デフォルトの名無しさん2005/11/13(日) 17:08:20
>>17
ゆっくりと静かにEnterを押下
0021デフォルトの名無しさん2005/11/13(日) 17:18:39
前スレ987です。
ご意見くださったとおりいろいろ試しましたが
まだ良い方法が見つからないです。
onejarも調べて見ましたが、私にはいまいちわかりませんでした…

やりたいことは、a.jarとb.jarをまとめてc.xxx にして
a.jarとb.jarにクラスパスを通すということです。
jarは実行形式でなく、単なるライブラリであって、アプリから参照されます。

何かご存知の方よろしくです。
00225782005/11/13(日) 18:31:52
http://page.freett.com/kb100000/2.txt
http://page.freett.com/kb100000/3.txt
これってどんなことをかけばいいんでしょうか?
調べたことをテキトーにかけばいいんですかね?
だいたいどのようなことをかけばよいか教えていただけませんか?
0023デフォルトの名無しさん2005/11/13(日) 18:33:08
質問です
ティンティン変数って何ですか?
0024デフォルトの名無しさん2005/11/13(日) 18:38:02
>>22
宿題は宿題スレで。

★★ Java の宿題ここで答えます Part 53 ★★
http://pc8.2ch.net/test/read.cgi/tech/1123639475/
0025デフォルトの名無しさん2005/11/13(日) 18:56:59
基本的な質問で申し訳ありませんが、質問させてください。
コンパイルしようとすると
「シンボルを解釈できません」と出てきます。
パスもクラスパスも1文字にいたるまで確かめたのですが間違っていません。
何より、一ヶ月前にはコンパイルできたものができなくなっているのですが、なにが原因なのでしょうか。
今日、別のマシンでコンパイルしてみたらできたのですが。
0026デフォルトの名無しさん2005/11/13(日) 19:03:52
>>16
>>1 参照

>>17
Thread.sleep();

>>21
「いまいち」などと曖昧な書き方ではなく何がわからないか具体的に書きなさい

>>23
Java関連の用語ではない

>>25
その情報からでは一ヶ月前から現在にいたるまでに変わった何かが原因としか言えない
0027デフォルトの名無しさん2005/11/13(日) 20:02:48
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HelloApp extends JFrame implements ActionListener {
public static void main(String[] args) {
new HelloApp("HelloApp").show();
}
public HelloApp(String title) {

と続くプログラムなのですが、6行目の
new HelloApp("HelloApp").show();
は具体的にどんなことをしているのですか?
0028デフォルトの名無しさん2005/11/13(日) 20:27:00
>>27
まず言語の基本から勉強したほうがよくないか?
具体的に答えたところでこの質問の答えからは得られるものはないだろうし
0029デフォルトの名無しさん2005/11/13(日) 20:35:09
>>28
いや、基本は少しやったんで、とりあえずここだけ聞きたいんです
よろしくお願いします
0030デフォルトの名無しさん2005/11/13(日) 20:44:25
>>27
下記の二行と同じ
HelloApp x = new HelloApp("HelloApp");
x.show();
0031デフォルトの名無しさん2005/11/13(日) 20:49:58
>>29
基本ができてないからそんなこともわかんないんだと思うよ
0032デフォルトの名無しさん2005/11/13(日) 20:56:42
>>30
ありがとうございます。
0033デフォルトの名無しさん2005/11/13(日) 21:00:24
>>27
show()じゃなくてsetVisible(true)でないと警告でるかもね
0034デフォルトの名無しさん2005/11/13(日) 21:35:32
>>33
注: HelloApp.java は推奨されない API を使用またはオーバーライドしています。
注: 詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてくだ
さい。
という警告が消えました。ありがとうございます。
0035デフォルトの名無しさん2005/11/13(日) 21:53:59
メッセージダイアログのメッセージを
改行できる記述ってありませんか?
JOptionPaneのshowMessageDialog()メソッドを
使っているのですが、メッセージが長くて、結果として
横長のダイアログが表示されてしまいます。
0036デフォルトの名無しさん2005/11/13(日) 21:56:26
\n
0037デフォルトの名無しさん2005/11/13(日) 22:10:30
>>36
不正な文字とエラーが出るのですが、以下の場合どうするのでしょう?

JOptionPane.showMessageDialog(null,
                      "改行を" + \n + "試みています"
                      );
0038デフォルトの名無しさん2005/11/13(日) 22:15:10
>>37
"改行を\n試みています"
0039デフォルトの名無しさん2005/11/13(日) 22:15:49
>>37
Javaの基本構文勉強したほうがいいよ
0040デフォルトの名無しさん2005/11/13(日) 22:25:07
>>38
すいません。ありがとうございました。

>>39
そうですね。基本がなってないですね。
文法書の最初から読み返す事にします。
0041デフォルトの名無しさん2005/11/13(日) 22:56:07
先生!jpg画像を加工したいです!

どの辺参照すればいいですか!
0042デフォルトの名無しさん2005/11/13(日) 22:58:15
>>41
画像全般扱うJava2D
画像のロードセーブのImageIO
0043デフォルトの名無しさん2005/11/13(日) 23:57:11
配列を書くまでは分かるんだが、
そこからどう使えばいいかわかんない・・・。
int[] date = {12,13,14,15,16,11,10};
この先どうやって使うんですか?
0044デフォルトの名無しさん2005/11/14(月) 01:02:12
どんなふうに使いたいんですか。
0045デフォルトの名無しさん2005/11/14(月) 02:15:49
>>44
例えば、平均を求めたいときとか、合計を求めたいときの使い方は
どうすればよいのでしょう?
0046デフォルトの名無しさん2005/11/14(月) 02:37:03
数字の並べ替えってどうやるんですか?
どなたか教えてください
0047デフォルトの名無しさん2005/11/14(月) 02:44:46
>>45
int[] date = {12,13,14,15,16,11,10};

int sum = 0;
for(int i = 0; i<date.length; i++ ){
sum += date[i];
}
System.out.println("合計:" + sum);
System.out.println("平均:" + ((float)sum / date.length));

つーか宿題スレにいったら?
0048デフォルトの名無しさん2005/11/14(月) 02:47:27
>>46
java.util.Arrays.sort(date);
0049デフォルトの名無しさん2005/11/14(月) 03:11:47
javaでCのsetprecisionみたいなことやるのってどうすればいいんですか
0050デフォルトの名無しさん2005/11/14(月) 08:41:35
>>49
System#printf()
とか使う
0051デフォルトの名無しさん2005/11/14(月) 08:42:06
Systen.out.printf()
だっけか
0052デフォルトの名無しさん2005/11/14(月) 09:50:21
オブジェクトのIDって取得できますか?
具体的にはMapとList(を実装したクラスのインスタンス)だけでいいのですが、RubyのObject#__id__ のように、オブジェクト固有のIDみたいなのが取得したいです。
0053デフォルトの名無しさん2005/11/14(月) 09:53:54
>>52
java.lang.System#identityHashCode(Object)

int じゃ足りなくなったらどーすんだろ? とか思ったが、まーいーや。
0054デフォルトの名無しさん2005/11/14(月) 10:09:06
2億もあれば十分じゃね?
0055デフォルトの名無しさん2005/11/14(月) 10:23:06
JFileChooserでファイル選択ダイアログを表示すると
例外が発生します。
fonts/fallbackにフォントへのリンクを作成してから
例外が発生するようになりました。
fonts/fallbackのリンクを消すと日本語は表示できませんが、
例外は発生しません。

環境は
SUSE Linux9.3
JDK1.5.0_04
です。

解決方法わかる方、よろしくおねがいします。
0056デフォルトの名無しさん2005/11/14(月) 11:35:14
toString、equal とはどういったメソッドなのでしょうか?
0057デフォルトの名無しさん2005/11/14(月) 12:01:31
>>56
>>1
0058デフォルトの名無しさん2005/11/14(月) 12:24:13
Cでいうところのargv[0]はどうやって取得?
System.err.println("usage: java " + argv[0] + "filename");
ってやりたいよな。いちいちクラス名に合わせて書き換え?
0059デフォルトの名無しさん2005/11/14(月) 12:33:02
>>58
> System.err.println("usage: java " + argv[0] + "filename");
> ってやりたいよな。
java -jar されてる場合とか java -cp されてる場合とか考えたら、それじゃ拙いだろ。
0060デフォルトの名無しさん2005/11/14(月) 13:33:08
クラスAとクラスBがあって、クラスAの中で作った変数をクラスBでも使えるようにするにはどうしたらいいんでしょうか?
イベント処理で、テキストフィールドを持つクラスAと、テキストフィールドに入力された変数に合わせてグラフィックスで描画を行うクラスBとの間の変数のやり取りの仕方がわかりません。
0061デフォルトの名無しさん2005/11/14(月) 13:36:54
java.sql.Connectionクラスの
commit、closeについてですが、
closeすると、commitも自動で行われるのでしょうか?
それとも、別々にやらないとダメなのでしょうか?
0062デフォルトの名無しさん2005/11/14(月) 13:47:54
>>61
DBってもんはオートコミットになってなければ勝手にコミットすることはないと思うのだが
0063デフォルトの名無しさん2005/11/14(月) 13:51:28
>>62
どっかでオートコミットが設定されてる文があるのかも・・
しらべてみま〜す
ありがとうございます(・∀・)ノ
0064デフォルトの名無しさん2005/11/14(月) 13:56:14
ドライバによってオートコミットの初期状態は違う可能性あり
トランザクション開始する前にはかならずオートコミットをOFFにしよう
0065デフォルトの名無しさん2005/11/14(月) 14:06:10
>>64
あれまっ!そうなんですか?!
マジでよ〜く調べたほうがよさそうだ〜〜(´д`)
0066デフォルトの名無しさん2005/11/14(月) 14:16:15
数字を比較する場合にint型の変数を符号で比較する場合と
String型で数字をequalsメソッドで比較した場合、

速度的には符号(==など)が早いのでしょうか?
それとも変わらないのでしょうか?
微々たる差ではありますが気になったもので。
0067デフォルトの名無しさん2005/11/14(月) 14:25:54
>>53
すげー、こんなのあったんだ。多謝多謝。
0068デフォルトの名無しさん2005/11/14(月) 14:27:13
>>66
== のほうが断然速い。
ただし、プログラム全体からみれば微々たる差なのはそのとおり。
0069デフォルトの名無しさん2005/11/14(月) 14:28:33
>>65
まあ調べた方がよいのは確かだが、実装レベルでいえば
>>64の言うとおり「トランザクション開始する前にはかならずオートコミットをOFFにしよう」
を守っておけば問題ない、というかむしろそうすべき。
ドライバ側で仕様変更が起こるかもしれないとか、RDBを問わず動作させねばならんとかあるわけで。
0070デフォルトの名無しさん2005/11/14(月) 14:36:27
>>68さん
レス、ありがとうございます。
やっぱり微々たるものですか・・・
byte[]でデータ入力があり、その値によって処理分岐をさせる場合、
一度int型に変換して符号で比較するぐらいなら、
String型のまま比較してもかわらなそうですね・・・。
0071デフォルトの名無しさん2005/11/14(月) 14:36:34
>>60
ほかのクラスの変数を直接参照することはできない。
一方が他方の参照を保持しておくか、または描写するメソッドの引数として渡す。

class TextField {
 private String text;
 public TextField(String text) { this.text = text; }
 public String getText() { return text; }
}
class Renderer {
 // 方法1. TextFieldオブジェクトの参照を保持しておき、それを描写する
 private TextField textfield;
 public Renderer(TextField textfield) { this.textfield = textfield; }
 public void render() {
  String text = textfield.getText();
 }
 // 方法2. TextFieldオブジェクトを引数として渡す
 public void render(TextField textfield) {
  String text = textfield.getText();
 }
}
0072デフォルトの名無しさん2005/11/14(月) 14:43:04
>>13
String str = "foobar";
String pre = str.substring(0, 3); // 先頭から3文字とりだす
String post = str.substring(4); // 4文字目以降を取り出す
String last = str.substring(str.length() - 1); // 最後の一文字だけを文字列として取り出す
0073デフォルトの名無しさん2005/11/14(月) 14:50:16
>>69
ありがとうございます〜
やっとわかってキタ━━━━(゚∀゚)━━━━ッ!!っす!
0074デフォルトの名無しさん2005/11/14(月) 16:51:17
javaでUDP通信を行ないたいのですが、データの受信を以下のようにスレッドで設計しました。

void run(){
DatagramSocket sock = new DatagramSocket(port);
while(true){
sock.receive(datagram);

処理…
}
}

この処理中に新しいパケットが届いた時、ループが返ってきた時にそのパケットはちゃんと処理されるのでしょうか?教えて下さい、よろしくお願いします。
0075デフォルトの名無しさん 2005/11/14(月) 18:03:00
超初心者ですので馬鹿な質問かもしれませんが教えてください。
このように同じ内容のthreadを2個立ち上げ、その中で同じ内容のタスクaaaを
newでコールしたとき

thread1:new aaa
thread2:new aaa

呼び出したタスクaaaはthreadのようにそれぞれマルチに動いているのでしょうか?
それとも処理が終わるまで待っているのでしょうか?


0076デフォルトの名無しさん2005/11/14(月) 18:10:52
>>75
タスクaaa の実装によるとしか言いようが無い。

あと、「threadを立ち上げ」とか「タスクaaa をnewでコール」とか
抽象的な表現は止めてコンパイル可能なプログラムで示せ。
0077デフォルトの名無しさん2005/11/14(月) 18:23:47

すいませんでした
threadの開始はこんな感じです(中身は長いので省略しました)

Runnable r = new Runnable() {
public void run() {
boolean connFlag = connectableFlag;
int res = ResultCode.SUCCEEDED;
:省略
if (cms != null) {
cms.clientConnected(clientProp);
}
};
  new Thread(r).start();

そのthreadのなかでnewでコールしている部分です
MessageSender ms = null;
ms = new MessageSend(getInetAddress(), PortNum, dataSocket);
0078デフォルトの名無しさん2005/11/14(月) 18:46:16
>>74
UDPだと受け取れないパケットは取りこぼすんじゃないですかね
0079デフォルトの名無しさん2005/11/14(月) 18:48:39
SWTのImageDataでwidthとheightの値を小さくすると画像の右と下を削れますが、
左と上を削るにはどうすればよいでしょうか。
0080デフォルトの名無しさん2005/11/14(月) 19:29:19
SWTスレいったほうがいいんじゃね
0081デフォルトの名無しさん2005/11/14(月) 19:42:02
int[] data = {10,11,12,50,4,3,2,1};
このデータを使って最大値、最小値、合計、平均を求めるのがわかんない。
一つ一つはなんとかわかるんだけど、
全部一気にやるといっつもエラーがでる…。
なんででしょう?
0082デフォルトの名無しさん2005/11/14(月) 19:54:53
>>74
ソケットの受信バッファが十分空いてりゃ大丈夫じゃない?
0083デフォルトの名無しさん2005/11/14(月) 20:02:18
>>81
エスパー募集スンナ
0084792005/11/14(月) 20:16:29
>>80
どうも。移動します。
0085デフォルトの名無しさん2005/11/14(月) 21:40:37
prepareStatementを使ってデータベースに登録するため、
getTimeでDate型の時間を受け取り、Timestamp型に変更して登録したいのですが、
クラスキャストエクセプションが出てしまいます。どうしたらよいのでしょう?

クラス名 **** = new クラス名(); ←get,setを持っているクラス 

String sql = "INSERT INTO RESERVATION VALUES(?) ";
pstmt.setTimestamp(1, (Timestamp)****.getTime());
0086デフォルトの名無しさん2005/11/14(月) 22:11:23
>>85
そのDateってjava.util.Dateだろ?

java.sql.Timestampとまったくべつのクラス渡してればエラーが出るのは当たり前
java.sql.Timestampのインスタンス作ればいいだけ

どこを迷うことがあるのさ
コンストラクタも1つしかないし
0087デフォルトの名無しさん2005/11/14(月) 22:43:09
pstmt.setTimestamp(1, new Timestamp(****.getTime().getTime()));
0088デフォルトの名無しさん2005/11/14(月) 23:14:10
配列自体はソートせずに、大きいものから表示したいのですがどんな方法がありますか?
0089デフォルトの名無しさん2005/11/14(月) 23:16:37
作業用の配列でも用意してそれをソートすれば
0090デフォルトの名無しさん2005/11/14(月) 23:19:17
【玄人】プロジェクト管理ツールApache Maven【2.0登場】
http://pc8.2ch.net/test/read.cgi/tech/1131976988/
0091デフォルトの名無しさん2005/11/14(月) 23:19:27
OS のクリップボードに画像を貼り付けたいのだが(Java 1.4 系)、
Windows だと上手く動くのに、Linux だと張り付かない。
このあたりはVMの実装依存なんですか?
0092デフォルトの名無しさん2005/11/14(月) 23:38:34
>>88
int限定
int[] data = {0, -20, 100, 5, 0};
int min = data[0], max = data[0];
for (int d : data) {
if (d > max) max = d;
if (d < min) min = d;
}
for (int i = max; i >= min; i--) for (int d : data) if (d == i) System.out.println(d);
0093922005/11/14(月) 23:40:59
こっちの方がキレイ
int[] data = {0, -20, 100, 5, 0};
int min = data[0], max = data[0];
for (int d : data) if (d > max) max = d;
for (int d : data) if (d < min) min = d;
for (int i = max; i >= min; i--) for (int d : data) if (d == i) System.out.println(d);
0094922005/11/14(月) 23:49:04
バグってたけど(゚ε゚)キニシナイ!!
0095デフォルトの名無しさん2005/11/14(月) 23:58:03
http://pc8.2ch.net/test/read.cgi/tech/1131282679/l50

237 :デフォルトの名無しさん :2005/11/14(月) 23:38:29
さあ話をそらしにかかりました
0096デフォルトの名無しさん2005/11/15(火) 00:04:08
>>93
それだとminとmaxの差が大きいと時間が掛からんか?

// 生成
java.util.Random random = new java.util.Random();
int[] data = new int[100];
for(int i=0; i<data.length; i++) data[i] = random.nextInt();

// ソート&表示
int[] cdata = data.clone();
Arrays.sort(cdata);
for (int i = cdata.length - 1; i >= 0; i--) System.out.println(cdata[i]);
0097デフォルトの名無しさん2005/11/15(火) 00:18:13
■幸福のコピペ(チョピペ)■
他のスレに貼り付けると□□□□■□□□□■□□□
□■■隠された文字が■浮き出るよ□□■■■□□□□
http://pc8.2ch.net/test/read.cgi/tech/1131282679/l50
□□□■■□■■□□□□□■■□□■■□■□□
237 :デフォルトの名無しさん :2005/11/14(月) 23:38:29
さあ話をそらしにかかりました□□□□■□□□■■□
□■■□□■□□□□■■□□■□□□□□■■□
0098デフォルトの名無しさん2005/11/15(火) 00:34:59
ttp://pc8.2ch.net/test/read.cgi/tech/1131587274/l50
ttp://pc8.2ch.net/test/read.cgi/tech/1131884991/l50
0099デフォルトの名無しさん2005/11/15(火) 00:53:42
JEditorPaneにHTMLのっけると、動作が非常に重いです
なんとかなりませんか?
それとも、そういう仕様でしょうか?
0100デフォルトの名無しさん2005/11/15(火) 02:12:54
携帯電話でSessionを管理するにはどのようにすればよいのでしょうか?
JSP→Servlet→JSP(セッションの値表示)→
Servlet(セッションの値がとれない)
いままでシュミレータを使っていてうまく動作していたのですが、
携帯で実際に操作してみると、sessionの値がnullで Server エラーになって
しまいました。。
0101デフォルトの名無しさん2005/11/15(火) 06:17:49
>>100
サーバー側に渡してないからでは?
携帯だとCookieは使えないものが多いらしいから
JSPの中で自分で渡さないとダメだよ
■ このスレッドは過去ログ倉庫に格納されています