【初心者】Java質問・相談スレッド103【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/06/27(水) 07:23:27JavaScript, Ajaxの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc10.2ch.net/hp/
過去ログ、関連スレッド、よくある質問とその回答など、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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() を使え。
・「\12288 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。
・その他の質問→「APIのjavadoc見ろ」
前スレッド
【初心者】Java質問・相談スレッド102【大歓迎】
http://pc11.2ch.net/test/read.cgi/tech/1180419689/
/* 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。 */
また、当スレで質問をするかたは、回答をもらえたときに、
wikiの更新をして頂ければ、忝なく存じます。
次スレは>>980あたりで。
0103デフォルトの名無しさん
2007/06/30(土) 01:00:43ArrayList<Integer>とint[]は一方が他方のサブクラスの関係でないので代入できない。
リストの各要素をint[]の各要素に代入したいのなら、
toArrayでInteger[]を生成したあとで、同じ要素数のint[]を作って、各要素に代入していく。
0104デフォルトの名無しさん
2007/06/30(土) 01:03:390105デフォルトの名無しさん
2007/06/30(土) 01:25:21if(a[ i ] && b+c<=d)
という条件文の場合、条件を日本語を訳すと「a配列の�@番目の要素とb+cがともにd以下の場合」ということでいいんでしょうか?
0106デフォルトの名無しさん
2007/06/30(土) 01:30:520107デフォルトの名無しさん
2007/06/30(土) 01:31:33○要素が
0108デフォルトの名無しさん
2007/06/30(土) 01:32:17URL url = new URL(address);
URLConnection connection = url.openConnection();
としたとしてサーバーに「GET」としてリクエストが行くと思うのですが、ヘッダーのUser-AgentがJava/1.5.0_12となっています。
ネット上のデータを取得するときに、指定したヘッダーをサーバーに送信するやりかたはあるでしょうか?
今はテストとして、http://www.cybersyndrome.net/evc.htmlをURLクラスで取得して、User-Agentの書き換えをあれこれ試してるんのですが、
URLConnectionのsetRequestPropertyなど試してもなかなかうまくいきません。
よろしくお願いします。
0109デフォルトの名無しさん
2007/06/30(土) 02:16:26setRequestPropertyはストリームを開く前にセットしないと効果がないよ。
URLConnection u = new URL(...).openConnection();
u.setRequestProperty("User-Agent", "hogehoge");
InputStream s = u.getInputStream();
こんな感じで。
もし、hogehoge Java/1.5.0_12みたいに後に元のUser-Agentが付いても構わないなら、
javaのオプションに-Dhttp.agent=hogehogeとかやるだけでいける。
0110デフォルトの名無しさん
2007/06/30(土) 02:24:22現在まで読んだ文字数を知る方法はないでしょうか?
読み込んだ文字列の長さを足していけばいいと思ったのですが,
改行が削除されているために,改行コードがCRかCRLFかわからない場合うまく数えられないのです.
0111デフォルトの名無しさん
2007/06/30(土) 02:30:11BufferedReader#readLineではたぶん無理
一文字ずつ読んで行にまとめる処理は自分でやる
0113デフォルトの名無しさん
2007/06/30(土) 02:35:55とりあえず最初の行末端が出るまでは一文字ずつ読んで
改行がLFかCRLFかCRかを判断したら
あとはreadLineで読んで改行の種類に応じて行ごとに文字数に1か2を足してやる手もある
0114110
2007/06/30(土) 02:37:43BufferedReaderで現在まで読んだバイト数(現在位置)も知ることは無理でしょうか?
0115108
2007/06/30(土) 02:44:38継続的にUAの改変をしたいのでプログラム中に書こうと思ってます。
試した処理が
URL url = new URL(String address);
URLConnection connection = url.openConnection(); //オブジェクト取得
connection.setRequestProperty("User-Agent", "hogehoge"); //ヘッダーセット
connection.connect(); // 接続
という風にやってます。
その後は、BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));で読み込んでreadlineでデータ読み込むとやっぱりUAがJAVAのままになってます。
ぐぐって出てくるサイトはPOST処理について書かれてるものばかりで。
URLで中身取得するだけなら、これ以上処理はないと思ってるのですが。
connect()前にヘッダー送られてるのでしょうか…
0116デフォルトの名無しさん
2007/06/30(土) 02:52:28実際にデータを読むときはなんでURLからストリームを開いてるの?
0117デフォルトの名無しさん
2007/06/30(土) 02:54:22for(;i<bln;i++){
}
と
if(blp==0){
i=2;}
for(i=2;i<bln;i++){
}
は一緒の意味?
0118デフォルトの名無しさん
2007/06/30(土) 02:56:18多分無理っぽい。自分でカウントするしかなさそう。
>>115
わざわざconnectしなくてもデータを読もうとした時点で勝手に接続してくれるよ。
0119デフォルトの名無しさん
2007/06/30(土) 02:58:50blpの値によって違う
0121デフォルトの名無しさん
2007/06/30(土) 03:01:21もしblpが0と1の2種類の場合、0と1でどう違うのでしょうか?
0122デフォルトの名無しさん
2007/06/30(土) 03:09:070123デフォルトの名無しさん
2007/06/30(土) 03:10:59実際に実行してみて分かりました!
0124108
2007/06/30(土) 03:15:28ありがとうございます、UA表示が変わりました。
どうやら、本でURL先のデータ表示だけをする部分に
ttp://journal.mycom.co.jp/column/java/054/index.html
ここのヘッダー取得処理を加えたときに、ごっちゃになったようです、すみません…
>>118
私も最初はconnect()いらないんじゃないかと思ったんですが、ぐぐったときに出たサイトで
// コネクション生成(この時点では、接続されていない)
con=(HttpURLConnection) url.openConnection();
とあったので、そういうものだとばかり思ってました。
ありがとうございました、またがんばろうと思います。
0125デフォルトの名無しさん
2007/06/30(土) 06:27:340126デフォルトの名無しさん
2007/06/30(土) 07:33:530127デフォルトの名無しさん
2007/06/30(土) 08:41:400128デフォルトの名無しさん
2007/06/30(土) 21:08:43Windows アプリケーションでいうところの INI ファイルみたいな
設定ファイルって Servlet にはないの?
properties ファイルはローケール依存テキストを記述するものだから
適当じゃないよね?
0129デフォルトの名無しさん
2007/06/30(土) 21:18:21グーグル先生に「Servlet 設定ファイル」で聞いてみろよ。
http://www.google.co.jp/search?q=Servlet+%E8%A8%AD%E5%AE%9A%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
0130128
2007/06/30(土) 21:25:19調べたんだけど、どこか分からないんです。
コンテキスト ファイルでもないし、server.xml でもないし、web.xml でもない。。。
外部プログラムのパスとか、アップロードしたファイルを記録するディレクトリとか、
Servlet を配備するユーザーが書き換えれるような設定ファイルって、どれになるのかな?
0131デフォルトの名無しさん
2007/06/30(土) 21:31:00そういうことか
アプリケーション自体の設定ファイルなんぞ、読める場所に好きな形式で書いておけばいい
変更も少なく数も少なければ、web.xmlに記述するのもあり。
よくやるのは、設定ファイルのパスをweb.xmlに書いておき、実際の設定ファイルは別にするという形
そうすればテスト用の設定ファイルとかを使い分けるのが楽。
形式はXMLにするかプロパティファイルにするか独自形式か、それは好きにしてくれ
0133デフォルトの名無しさん
2007/06/30(土) 21:43:49ありがとう。とても参考になったよ。
0134デフォルトの名無しさん
2007/06/30(土) 23:23:18しかし、ボタンを2回以上押すとアイコンの後ろに「...」のような文字が入ります。 ちなみに、setActionCommand()も
同時に使っています。 何かのバグでしょうか?
アプリは簡単な動画再生プログラムでPlayとPauseのアイコンを入れ替えるだけのものですが、何か解決方法は
ないでしょうか?
0135デフォルトの名無しさん
2007/06/30(土) 23:27:30ソースみなきゃ何ともいえないけど・・・
JButton playButton = new JButton();
JButton pauseButton = new JButton();
と個別にインスタンス作って、setEnableで制御した方が確実な気がする
どうしても1ボタンで済ませたいのであれば、setVisibleで見せる/見せないの制御を行うほうが自然
013688
2007/06/30(土) 23:50:05値渡し、参照渡しの理解で苦しんでます。
値渡し、参照渡しは言語によってあったりなかったりぽいのですが、これは理屈どうこうっていうより「java仕様」って事で覚えた方がいいのでしょうか?
なぜ値渡し、参照渡しと別々の考え方なのかが理解できないでいます。
「やさしいjava」曰く、クラス型変数は代入=参照渡しだから〜という内容で、int型等を「基本型」とくくって「基本型の変数は値渡し」と書いてあります。
他のサイトやwikiで調べてみると、基本型とかクラス型とか、そういう考え方は一切なく、intやdoubleは値渡しで処理して、String型等は参照渡しがjavaの仕様と書いてあるような気がしました。
やさしいjavaで「クラスで生成された変数は参照型の処理をされる」と書いてありますが、自分のコードのクラスで生成した変数だろうが、クラスライブラリ使用での変数だろうが、
どっちもクラス型変数のような気がして、いまいち「int型やdouble型は基本型の変数」というのが納得いきません。
int型やdouble型等は値渡し、String型は参照渡し みたいな感覚で覚えていいのでしょうか?
うまく説明できてい上に初歩すぎる質問かもですが、よろしくお願いします。
0137デフォルトの名無しさん
2007/06/30(土) 23:57:57http://www.google.com/search?num=50&hl=ja&lr=lang_ja&ie=UTF-8&oe=sjis&q=%E3%82%88%E3%82%8A%E6%AD%A3%E7%A2%BA%E3%81%AB%E8%A8%80%E3%81%86%E3%81%AA%E3%82%89%E3%81%B0%E3%80%8C%E5%8F%82%E7%85%A7%E3%82%92%E5%80%A4%E6%B8%A1%E3%81%97%E3%80%8D
0138デフォルトの名無しさん
2007/07/01(日) 00:11:09やさしいJavaはろくな目にあわないなw
Javaでのプリミティブ型は特殊だという認識を持った上で、メソッド呼び出しの時は全てインスタンスの参照が渡されると認識するならばいいんじゃないか?
納得して先に進みたいならば、この辺に結構詳しく書いてあった
ttp://d.hatena.ne.jp/Strada/20070216
013988
2007/07/01(日) 00:27:18仕組みについては理解できました!
クラス型の変数というところでひっかかっていたようです。
クラスで作った変数1=変数2だと参照型というのは理解していたのですが、
やさしいjavaで「String n」の引数に「一号車」と代入する時はクラス型変数なので参照型 という記述があって、
なぜString型がクラス型の変数なのか?とワケワカラン状態になってました。
プリミティブ型が特殊っていう考え方が非常にわかりやすかったですw
値渡しが基本で、参照渡しが特殊 ではなくて、参照渡しばっかりのjavaの中でプリミティブ型は値渡しが行われてる仕様 って事でいいんですね。
勉強になりました。ありがとうございました!
0140デフォルトの名無しさん
2007/07/01(日) 00:36:18クラス型変数?
違和感を感じたのはそこか!
「クラス型変数なので参照型」は逆だ、逆。
「インスタンス(正確にはその参照)は、参照型変数に代入できる」が正しい
だから、参照型変数の型は必然的にクラスになる
インスタンスの存在に関する記述がテキトーなんだな、その本は
0141デフォルトの名無しさん
2007/07/01(日) 00:38:14#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
# EXCEPTION_ACCESS_VIOLATION 。。。
というメッセージがコンソール画面に出て来るときがあります。
Eclipseのデバッグ画面には、このエラーが発生した箇所が出てこないので、どこで発生しているのか分かりません…
このエラーメッセージが出た場合、とりあえずプログラムのどこをチェックすべきですか?
ACCESS_VIOLATIONってことなので、C言語だったらポインタ演算してる箇所とかをチェックするんですが…
0142デフォルトの名無しさん
2007/07/01(日) 00:39:090143デフォルトの名無しさん
2007/07/01(日) 00:45:57Swingとかマルチスレッド関連?
どの手のアプリケーション実行していての話だろうか。
デバッグ時だと予期せぬ状態としか言いようがないな
0144デフォルトの名無しさん
2007/07/01(日) 00:54:24それが出たときは飼い犬に咬まれたと思って諦めろ
0145デフォルトの名無しさん
2007/07/01(日) 01:02:59今はSwingとマルチスレッド両方使ってます。Swingだけで出てきたこともあります。
エラーが発生した後、logファイルが吐かれてて、そこには
Current thread (0x00837440): JavaThread "JDWP Command Reader" daemon [_thread_in_native, id=5020]
と書かれてました。自分で作ったスレッドで発生したわけではないのかな…
>>144
諦めろ…ということは、原因を突き止めるのがすごく難しい問題だったり、まさかJavaの仕様だったりするんですか…
発生確率は1/10くらいなので「仕様」ということにしておきます。
0146デフォルトの名無しさん
2007/07/01(日) 01:09:08マルチスレッドだと単純に不安定になるよ
デバッグでなく発生するのであれば、別の問題だろうけど
そうでないのであれば原因を突き止めるのはデバッグモードを創れるレベルが要求されそうな予感
0147デフォルトの名無しさん
2007/07/01(日) 01:12:19>値渡しが基本で、参照渡しが特殊 ではなくて、参照渡しばっかりのjavaの中でプリミティブ型は値渡しが行われてる仕様
値渡しが全て。
プリミティブは、その値自身が、値渡しされる。
オブジェクトは、そのオブジェクトへの参照が、値渡しされる。
0148デフォルトの名無しさん
2007/07/01(日) 01:12:370149デフォルトの名無しさん
2007/07/01(日) 01:18:11VMのバグ、または、JNIでの呼び出し先でのバグかも
Javaのプログラムを見ても解決するはずない、たぶん
0150デフォルトの名無しさん
2007/07/01(日) 02:55:57ttp://www.javadrive.jp/start/before/index2.htmlを参考に
したのですが、java test1を実行すると
「注釈処理が〜」というエラーメッセージが出ます。
エラーは1つです。
で、ためしにjava ソース で検索したものを実行させて
みたのですがこれも同じメッセージでエラー1つです。
これは設定が間違っているということなのでしょうか?
0151デフォルトの名無しさん
2007/07/01(日) 02:58:550152150
2007/07/01(日) 03:02:09これです
class test1
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}
0153150
2007/07/01(日) 03:03:36もう1度
class test1
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}
0154デフォルトの名無しさん
2007/07/01(日) 03:10:09そのまま実行すれば実行できるよ。
0155デフォルトの名無しさん
2007/07/01(日) 03:11:12あとjavacとjavaのバージョン
0156150
2007/07/01(日) 03:19:46いろいろいじってたらまた出来なくなってきた
操作可能なプログラムまたはバッチファイルとして認識されません
とか出てきた・・・
ちょっと出直してきます。すみません・・・
javacのバージョンとは??
javaはjdk1.6.0_01です
0157150
2007/07/01(日) 03:23:53C:\Program Files\Java\jdk1.6.0_01\bin に変えればよいみたい
なのですが、間違えて class PATH とPatch もこれに
してしまったのですが、問題アリでしょうか??
0158デフォルトの名無しさん
2007/07/01(日) 03:26:01cd C:\TestClass
C:\Java\jdk1.6.0_01\bin\javac test1.java
C:\Java\jdk1.6.0_01\bin\java test1
みたいにフルパスで指定するべし
0159デフォルトの名無しさん
2007/07/01(日) 03:38:28JAVA_HOME = <install_dir>
Path = %Path%; %JAVA__HOME%\bin;
とする。
CLASS_PATHは必要な時だけ。
環境変数Pathって復元できたっけ?
0160150
2007/07/01(日) 04:05:09エラーはこういう表示です。
エラー:クラス名 'java' が受け入れられるのは、注釈処理が明示的に要求された場合だ
けです
エラー 1 個
C:\jsample>
こっから全く進めません・・・
ぐぐっても出てこないし
0161150
2007/07/01(日) 04:06:58ファイル名をjavaに変更しました
0162デフォルトの名無しさん
2007/07/01(日) 04:21:330164デフォルトの名無しさん
2007/07/01(日) 04:27:130165デフォルトの名無しさん
2007/07/01(日) 04:29:58Test01.java
------------------------------------
class Test01
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}
0166150
2007/07/01(日) 04:30:14けです
このメッセージをぐぐっても出てこないのは
やっぱり普通はこういう事にはならないからなのでしょうか。
うーーーーん・・
>>164
6時までは頑張ってやってみます
ダメなら寝る
0167デフォルトの名無しさん
2007/07/01(日) 04:31:04Test01.java
public class Test01
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}
0168デフォルトの名無しさん
2007/07/01(日) 04:32:29javacでは拡張子の.javaを含むファイル名を指定する必要あり。
java では拡張子の.classは付けない。
javac test1.java
java test1
0169150
2007/07/01(日) 04:49:15できましたーーーーーーーーーーーーー!!
ファイル名に .java をつけてjavaファイルにしていなかったのが
1番の原因だったと思われます。
ただ、サイトや実用書のように文字が表示されないのが
よくわかりませんが、とりあえず第一関門突破です
ありがとうございました
0170デフォルトの名無しさん
2007/07/01(日) 04:53:15コマンドプロンプトとかDOSとかCUIってしってるか?
0171150
2007/07/01(日) 04:57:42コマンドプロンプトは分かります。
DOSはDOS−Vとかのでしょうか?(真っ黒い画面のがそう?)
DOSとCUIは言葉は聴いたことありますが今いちよく分かりません・・
0172デフォルトの名無しさん
2007/07/01(日) 04:57:55m.add(new JFileChooser());
という感じで、JMenuにJFileChooserを置いて、メニュー内に選択画面を出す…
という変なことやってみたいんですが、ちゃんと表示はされます。
でも、スクロールバーが動かなかったり、ボタンも機能してくれません。
やっぱり無理なんですかね
0173デフォルトの名無しさん
2007/07/01(日) 05:00:120174150
2007/07/01(日) 05:00:56できましたが、Hello Worldの表示が出ない・・・
0175デフォルトの名無しさん
2007/07/01(日) 05:03:47じゃあさっき生成されたclassファイルがあるディレクトリ(フォルダ)に潜って
java test1
>>172
メニューアイテムが選択された時にチューザを表示するようにする。とか。
0176150
2007/07/01(日) 05:12:33今までコンパイラとインタプリタを勘違いしてました。
コンパイラで文字を出そうとしていたのですが
やっと意味が分かってきました。
でも、CLASSファイルができたので
java test1 で出てきそうなのですがエラーになります
うーーん・・・
もうちょいやってみます
0177デフォルトの名無しさん
2007/07/01(日) 05:21:40~~~~~~~~~~~~
0178150
2007/07/01(日) 05:29:22このようなエラーがでます。
おかしいなぁ・・
0179デフォルトの名無しさん
2007/07/01(日) 05:40:49ないなら追加。
0180デフォルトの名無しさん
2007/07/01(日) 05:48:14ttp://ezrenai.takara-me.com/
にリダイレクトされるんだけどPHPおかしくない?
0181150
2007/07/01(日) 05:48:51PATHなんですが、いろいろいじったせいで
元々設定してあったのを全部消して今は
C:\Program Files\Java\jdk1.6.0_01\bin
を設定してあります。; はどこに追加すればよいでしょうか?
0183150
2007/07/01(日) 06:21:16質問答えてくださったみなさんありがとうございました!
やっと次に進めます
0184デフォルトの名無しさん
2007/07/01(日) 06:35:34どうせ俺はvipの深夜保守組だし気にするな。
ただし、昼間は頭使えw
0185デフォルトの名無しさん
2007/07/01(日) 09:00:24WEB上で見るときに色の情報がポップアップで見れたりできるようにしたいんですが
どなたか作ってもらえませんか
http://sky.ap.teacup.com/meki55/img/1183168156.png
欲を言えば最後に絵の具の番号で言うとどうなるのか変換してくれるボックスみたいのがあれば
うれしいんですが
0186デフォルトの名無しさん
2007/07/01(日) 09:03:210187デフォルトの名無しさん
2007/07/01(日) 09:05:540188デフォルトの名無しさん
2007/07/01(日) 09:12:490189デフォルトの名無しさん
2007/07/01(日) 09:36:13Javaのエラーメッセージって相変わらず不親切だな。MSほどじゃないけどさ。
普通に「拡張子(.java)をつけてください」って出せよな
0190デフォルトの名無しさん
2007/07/01(日) 09:39:17元が狂いまくってんだし、幅が効かん。
それともそっち系のモニタの話?
にしても>>185はひどいな。
0191デフォルトの名無しさん
2007/07/01(日) 12:53:48させるにはどのようにすればいいのでしょうか。
↓こんな感じです
最初 □
一秒後□□
もう一秒後□□□
・
・
・
できれば5個くらい表示させたところで停止させる処理の記述も
教えていただけるとありがたいです。
よろしくお願いします。
0192デフォルトの名無しさん
2007/07/01(日) 14:15:28public void paint(Graphics g) {
・
g.drawString("文字間隔",x,y);
・
}
その文字の間隔を任意に設定はできないんでしょうか?
ご教示願います。
0193デフォルトの名無しさん
2007/07/01(日) 16:27:49スレッドまたはタイマー
>>192
g.drawString("文",x1,y);
g.drawString("字",x2,y);
g.drawString("間",x3,y);
g.drawString("隔",x4,y);
どのくらい間隔あけるかは、fontMetricsから計算する
0195デフォルトの名無しさん
2007/07/01(日) 17:28:44読み込んでくれません。 imagesディレクトリに入れてあり、ディレクトリ構造は同じなのですが、
何か MANIFEST.MFに書き加える必要はあるのでしょうか?
0196デフォルトの名無しさん
2007/07/01(日) 17:43:170197デフォルトの名無しさん
2007/07/01(日) 17:48:03わかりました。やってみます。ありがとうございました。
0198195
2007/07/01(日) 17:56:280199デフォルトの名無しさん
2007/07/01(日) 18:13:22public static void main(String[] args) {
long a=2147483647;
System.out.println(a);
}
}
このプログラムのaの値をより大きく表示できるように改変してください。
この値よりも1でも大きくなるとエラーが出てしまいます。
値は出来るだけ大きいほうが良いです。
0200デフォルトの名無しさん
2007/07/01(日) 18:16:201.リソース検索してそのURLを指定せず、ファイル名を直接指定している。
2.Windowsのような大文字小文字の区別をつけないファイルシステムを使っていて、区別をつけるjar内の事情を気にしていない。
0201デフォルトの名無しさん
2007/07/01(日) 18:19:59どっちでも使え
public class longtest {
public static void main(String[] args) {
long a=2147483648L; //1増加
a=Long.MAX_VALUE; // 最大限に増加
System.out.println(a);
}
}
0202192
2007/07/01(日) 18:24:37おいおい、IDでないからってパクるなよw
やってみたけど、めんどうですね。ところでMFCの
SetTextCharacterExtra
みたいに1発で指定できないですかね。
setCharacterSpacing
というのがあるみたいですけど、使い方がわからないです。
■ このスレッドは過去ログ倉庫に格納されています