[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/06 00:12 / Filesize : 302 KB / Number-of Response : 972
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれJava(超初心者用) その2



1 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 11:54:09 ]
このスレッドは、他のスレッドでは書き込めない超低レベル、  
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。  
Java使いが優しくコメントを返しますが、  
お礼はJavaの布教と初心者の救済をお願いします。  

Java SunのHome Page  
www.java.com/ja/

前スレ

くだすれJava(超初心者用)
pc10.2ch.net/test/read.cgi/tech/1126470659/l50


620 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:37:03 ]
特定の環境にしかない機能が使えない
DirectXとかCoreAnimationとか

621 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:34:14 ]
int a = args.length;
上のプログラムでよくわからないことがあるんですが
配列変数名.メソッド;
の形ですよね?

今まで、
インスタンス化したメソッド.メソッド名();
の形でしかだめだと思っていたんですが、どういうことなんでしょうか?

622 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:36:30 ]
>の形ですよね?

違う
配列変数名.フィールド名
の形

>インスタンス化したメソッド

そんなものはない

623 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 15:45:15 ]
>>622
なるほど、ありがとうございます。

インスタンス化したメソッドは私の参考書に書いてありました。
〜main(){
  keisan keisan1 = new keisan();
  keisan1.tate=1.3;
  p=keisan1.tasizan();
}
class keisan{
double tate;
double tasizan(){


見たいな感じで
keisan1.tateと言う変数がそうなってるみたいです

624 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:18:14 ]
keisan1はkeisanのインスタンスが入ってるローカル変数
tateはkeisanのインスタンス変数
tasizanはkeisanのインスタンスメソッド
君の読み違いでなければその参考書は今すぐ焼き捨てるべき

625 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:52:22 ]
>>619
>>620
ありがとうございます。
やはりどんなモノにも欠点はあるんですね

626 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:11:08 ]
>>621
Javaでは、配列は実質クラス

627 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 18:57:15 ]
けど length は配列のインスタンスフィールドではない

628 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 19:28:52 ]
>>624
>>626
>>627
皆様ありがとうございます。インスタンスかした”クラス”でした、。申し訳ありません。
keisan1がインスタンスかしたクラスなんですね。

>keisan1はkeisanのインスタンスが入ってるローカル変数
なるほど、やっと分かりました。これも変数なんですね

そう考えると確かにkeisan1.tateは変数名.フィールド名になってますね。
配列が特殊なんだと考えて起きます
ありがとうございました



629 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:16:15 ]
>>627
しかし言語仕様にはフィールドだと書いてある

java.sun.com/docs/books/jls/third_edition/html/arrays.html#10.7
>The public final field length

630 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 22:47:33 ]
変数の型についての質問です。
byte型は1バイト、short型は2バイト、int型は4バイト、long型は8バイトまでの整数を扱えるとのことですが、それ以外の違いはないのでしょうか?
だとしたら、あらゆる整数を格納できるlong型を常に使えば他の整数型を意識する必要がなくなって便利だと思うのですが・・・。
int型の範囲を超える整数を扱うことは滅多にないので通常はint型を使うにしても、byte型やshort型はなんのためにあるのでしょうか?
素朴な疑問って感じですが、お答えお願いします。

631 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:04:02 ]
それだけメモリをたくさん使う
たとえば10000000個のデータを扱う場合、
byteが10000000個だったら10MBで済むが、
longが10000000個だったら80MBになってしまう

632 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:20:53 ]
>>631
なるほど、メモリの問題があるのですね・・・。
回答ありがとうございました。

633 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:35:45 ]
実際、short なんて滅多に使わないね。


634 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:37:03 ]
>>612
>>615
参考にさせてもらいます。
文系の出で、プログラムに触れた事がないので助かります。

635 名前:sage [2008/02/11(月) 17:30:28 ]
javaに近いと思うのですがoctaveというのを使っていて、以下のプログラムを少し変えて出さなければなりません。
(なぜなら以下のプログラムは友達が作ったもののため)
プログラムの本質自体はかわらないようにちょっとでもいいので変え方わかる方いましたらぜひ教えてください。
・ダイクストラ法
☆Dijkstra.m
function [distance, pointer] = Dijkstra(A)
n = size(A)(1); %Aはn×n行列
S = zeros(1, n);
d = zeros(1, n);
for i=2:1:n
d(i) = Inf; % d = [inf, inf, inf, ... ]
endfor
pointer = zeros(1, n); %Pointer for previous check point
check = 0
while(check < 1 && check > -10)
if(sum(S) == 4)
check = 1
else
check -= 1
d
S
[minimum, v] = minD(d, S)
S(v) = 1;
for j=1:1:n
if(d(j) > d(v)+A(v, j))
d(j) = d(v) + A(v, j) %過程を見せたい場合;をのぞく
pointer(j) = v
endif
endfor
endif endwhile distance = d; pointer; endfunction

636 名前:つづき mailto:sage [2008/02/11(月) 17:31:23 ]
☆minD.m
function [min, min_index] = minD(d, S)
% min : min(d) not included to S
% min_index : d(min_index) = min
% d[] : distance array
% S[] : searched = 1 : not yet = 0
min = inf;
min_index = 0;
n = size(d)(2);
for i=1:1:n
if( S(i)==0 && d(i) < min )
min_index = i
min = d(i)
endif
endfor
endfunction



637 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 17:34:09 ]
なるほど
つまりまったく一緒だと怒られるから適当にいじりたいけど
まったく分からないからなんとかしてくれということですね

638 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 17:39:59 ]
そういうことなんです、1mmもわからないので変えようがないのです。。。
どなたかお願いします。



639 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:01:56 ]
Javaに近いとは思いません
>Gnu Octave とは、MATLABと互換性を持ったフリーな数値解析ソフトウェアであり、
>GNUによって開発されている。

640 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:17:07 ]
javaに近いという理由でoctaveの宿題の解答の偽装依頼をこのスレで見る日が来ようとは

641 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 14:22:30 ]
うん、とりあえず逝ってくれ。
あと、名前欄にsageは入れないほうがいいと思うよw

642 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:24:45 ]
int i,j;

for(i=0;i<2;i++){
for(j=0;j<2:j++){}}
System.out.println(i,j);

ってやるとj「だけ」未定義エラーになるのですが何故なんですかね
両方エラーならまだわかるんだが・・・

643 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:26:18 ]
あ、最後(i,j)じゃなくて

System.out.println(i+":"+j);
ってことで

644 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:31:41 ]
外側のループが条件によっては実行されないから
内側のループでjが必ず初期化されるかは不明としている
この場合は外側のループは必ず実行されるけど
その条件が成立するかどうかまでは検査していない

645 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 19:57:38 ]
やっぱそれだけのことなのか
どうせソース見るなら最後まで見てくれよな、って思う
型キャストとかのあたりとか特に、
自動でキャストしたりコンパイルエラーだったり実行時エラーだったりはっきりしてくれぃ!


>>644さんくす

646 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:08:17 ]
ttp://java.sun.com/docs/books/jls/third_edition/html/defAssign.html
言語仕様では、(原文ではi,jはn,kだけど>>642に合わせれば)
> a Java compiler must produce a compile-time error
> ...
> even though the value of (i) is known at compile time,
> and in principle it can be known at compile time that
> the assignment to (j) will always be executed
だから、そのエラーについてはコンパイラは言語仕様に従ってるだけ。
フロー解析をどこまで詳細にやるかの規定次第で人にとっては妙に思える結果も出てくるけど、
解析の精度を高めることとコンパイラの負荷とのバランスの問題でここに落ち着いたんじゃないかな。
とりあえず、はっきりしてくれと思ったときにはまず言語仕様を見てみる癖を。

647 名前:デフォルトの名無しさん [2008/02/14(木) 00:28:06 ]
JPanelを継承したMainPanelとJLabelのhazimeとLoadがあるんですが
Startというクラスのコンストラクタで

Start(MainPanel panel){
hazime.setSize(new Dimension(LabelSizeWIDTH,LabelSizeHEIGHT));
Load.setSize(new Dimension(LabelSizeWIDTH,LabelSizeHEIGHT));
hazime.setLocation(100,33);
Load.setLocation(100,266);
panel.add(hazime);
panel.add(Load);
}
と書いてMainPanelのコンストラクタでStartを初期化してJFrameを継承したクラスにMainPanelを貼り付けたんですが
hazimeとLoadに書いてある文字は表示されたんですがサイズと位置が変わりません
なんででしょうか?

648 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:32:42 ]
>>647
MainPanelのレイアウトマネージャがサイズと位置を自分のポリシーに合わせて自動で変更してるとか
レイアウトマネージャはnullまたはコンポーネントの勝手に任せるようなものになってる?



649 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:04:21 ]
>>648
MainPanelの引数にも何もとっていないのでレイアウトマネージャーは何も設定していません
自分でnullに設定しないといけないのでしょうか?

650 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:15:45 ]
JPanelはデフォルトでレイアウトマネージャが設定されてるので
レイアウトマネージャを無くしたいならsetLayout(null)しないと
継承先のMainPanelでも同じものがつかわれる

651 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 01:19:19 ]
デフォルトで設定されていたんですか
うまく解決できました、どうもありがとうございます

652 名前:デフォルトの名無しさん [2008/02/14(木) 14:35:25 ]
Java3Dじゃなくても3次元モデルが出来るようですが
Javaで作るのとJava3Dで作るのって何が違うんでしょうか?

653 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 17:28:18 ]
>>652
Java3Dは3Dグラフィックス関連のプログラムを簡単に書くためのためのJava API群。
コアJava APIではないけれど準標準的なライブラリ。
Java3Dを使わなくても座標計算や表示を自分で実装したり、
Java3D以外のJavaとのインタフェースを持った3Dグラフィックスライブラリを使えば、
Java3Dと似たようなことができる。
ただ、他のライブラリを使うのは別として、自分で実装していくのはかなりの労力がいる。
まあ、Java3Dの全機能は不要で、立方体のワイヤーフレーム表示をしたいだけです、
とかの単純なことなら、頂点の座標変換計算を自前のコードでしてJava2D APIで線を描画しても、
それほど難しくないと思う。
それと、Java3Dや他の3DCGライブラリを使う場合はJREやJDKに最初から入ってるわけではないので、
別にインストールしないといけないのが少し手間といえば手間かも。特に他人に使ってもらう場合。
あと、Java3DはOS依存の機能を使って表示を高速化するとかも行ってるので、
そこまで自分で実装するとかになると大変だと思う。
自分の用途に合わせて選択を考えてみては?

654 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 23:18:17 ]
スレッドのrunメソッドに引数をとりたいのですが、Startメソッドで呼び出して実行するため引数をいれることができません
どのように引数をいれればいいのでしょうか?

655 名前:デフォルトの名無しさん mailto:start [2008/02/15(金) 02:48:20 ]
start()の呼び出しタイミングでなく、
ThreadやRunnableのインスタンス生成の段階で引数を与えてもいいのなら、
class AThread extends Thread {
private int arg1;
private Object arg2;
public AThread(int arg1, Object arg2) {
this.arg1 = arg1;
this.arg2 = arg2;
}
public void run() {
System.out.println(arg1 + ", " + arg2);
}
}
new AThread(1, "hoge").start();
みたいな感じでどう?
new時点でなくstart時点でないとってことなら、
コンストラクタで設定する代わりに引数を与えるメソッドを定義したサブクラスにして、
startの直前でそれを呼び出して設定するとか。

656 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 02:09:18 ]
>>655
そういうやりかたがありましたか、ありがとうございます

657 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 12:52:49 ]
>>653
ありがとうございます
まだJavaを触り始めたばかりなのでJava3Dは止めておきます

658 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:01:20 ]
Javaの全身であるOakの呼び方って「おーえーけー」で良かった?



659 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:02:03 ]
全身=前身でお願いしますorz

660 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:07:26 ]
オーク

661 名前:デフォルトの名無しさん [2008/02/16(土) 18:54:12 ]
>>660
ありがとう!!!!!

662 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 00:49:48 ]
ローカル変数の存在意義って何ですか?
全てメンバ変数にしたほうが扱いやすい気がするのですが・・・

663 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 01:59:23 ]
>>662
そう思うならそうすればいいじゃん
君のコードとの接点を俺が持たない限り止めはしないよ

664 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 03:57:19 ]
接点t! 接点t!

665 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 04:38:59 ]
>>662
メンバ変数って用語はあまりJavaでは使われないかもしれない。
存在する理由はいろいろあると思うけど、例えば、
同じクラス内でも別スコープなら同じ変数名が使えるローカル変数と違い、
フィールドはクラス全体が同じスコープになるから名前がダブらないように気をつけないといけない。
名前付けが面倒だからと同じ変数を違う場所で違う役割に使用するのはバグの元になりやすい。
また、ローカル変数の方がフィールドに定義されたものよりアクセスがたいていのJVM実装では速いはず。
それに、スレッドごとにメソッドの呼出しごとに違う場所が用意されるローカル変数と違って、
フィールドはインスタンスまたはクラスごとに一つしかないという違いもある。
マルチスレッドプログラミングやメソッドの再帰呼び出しをやり始めればその違いが分かる。
ごくごく小さなプログラムだけなら、そうは感じないのかもしれないけれど、
自分でプログラムを書き始めればローカル変数を全て排除しようとすると扱いにくくなると感じると思うよ。

666 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 13:35:32 ]
面の法線の計算について
右手座標系で頂点P0(x0,y0,z0) ,P1(x1,y1,z1), P2(x2,y2,z2)とした場合
z軸から見た場合の計算式はどうなるのでしょうか?

667 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:14:36 ]
>>666
それは、Javaの質問か?

668 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 18:21:31 ]
>>666
java関係ないやん。
Java3Dを使うならjavax.vecmath.Vector3d#crossで
3頂点の位置ベクトルの差から作られる2つのベクトルの外積を求めればいい。
正規化が必要なら外積を求めた後、Vector3d#normalizeをする。
float精度ならjavax.vecmath.Vector3fを使う。



669 名前:デフォルトの名無しさん [2008/02/21(木) 15:59:33 ]
質問です。
初心者丸出しの質問ですみません。

同じパッケージ内のクラスを使うにはどうしたらいいのでしょうか?
よろしければご教授お願いします。

670 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:28:15 ]
独習やっているんですが、ひとつ解せないところがあったので質問します。

ある例で、実行時の引数をdouble型に変換するために

double d = Double.valueOf(args[0]).doubleValue();

と記述されているんですが、その他の例では、実行時の引数をint型に変換するのに

int i = Integer.parseInt(args[0]);

と記述されています。
2つ目の例でもdouble型と同じ方法が取れると思うのですが、
変換の仕方を統一していないのは何か意図があるのでしょうか?

671 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:32:06 ]
>>670
何を意図しているのか、それとも何も考えていないのか、
その例を作った作者に聞くしかないのでは?

672 名前:670 mailto:sage [2008/02/21(木) 17:52:43 ]
その後の例ではint型でもvalueOf().intValue()やってた・・・
やはり著者のきまぐれなのか・・・とりあえず進めてみます。
ありがとうございました。

673 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 00:06:52 ]
Double#parseDoubleやFloat#parseFloatは後のバージョンで追加された
それ以前に覚えた/主流だった書き方をする人が
今でもそれなりにいるというだけの話

674 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 01:57:26 ]
それは一つの著書の中で統一されてないことの理由にはならないと思う。
何らかの意図があると勘繰られないために、または読者を混乱させないために、
こういった方法もあるのでここではこちらを使用するの旨を書くか、
本文では統一しておいて、これ以外にもこういう方法もとれると注釈を入れるか、
少なくとも学習用の参考書であればあってもしかるべきだという気がする。
実は版を変える時に古い例がそのまま残ってしまっているとかかもしれないが。

675 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 02:05:09 ]
新版t! 新版t!

676 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 09:15:23 ]
独習Javaは第3版でJDK5.0対応をうたってはいるが
注釈やコラムが少し追加されているだけで
サンプルコードは初版時の1.1のままという本なので
そんなに期待してはいけない

677 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:01:41 ]
Java2のコードでさえないとは……
それはさすがに今使う学習書としてはちょっとまずい気がする。

678 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:00:44 ]
class Aがあったとして・・
A a;と宣言して
a = new A();とし
a = null;としたときaは空になりますか?
これをやったのですがうまくいかないので、よろしければaを空にする方法を教えてください




679 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:04:23 ]
空ってなんのことだ?
うまくいかないというのは、何を期待してて実際にはどうなったんだ?

680 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:08:18 ]
インベーダーゲームを作ろうとしていて弾(同時に出ていられる弾の数には限りがある)の処理で
SPACEを押したときif文でaがnullならaを初期化して(弾をつくる)
弾が画面外にでたらa = null;として再度弾を出せるようにしたかったんです

681 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:09:30 ]
実際には弾を1発撃ったら再度撃てなくなったのでa = nullとするあたりがおかしいのかなと・・

682 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 21:23:11 ]
すみません良く見たらifで使う変数を間違えていまして、そこを修正したら直りましたorz



683 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 11:40:27 ]
Aに生きてるか死んでるかのフラグを付けた方がいいんじゃないかと

684 名前:デフォルトの名無しさん [2008/03/05(水) 21:46:19 ]
外部プログラムの起動で

cd /hogehoge/

が出来ないのは仕様ですか?

685 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:00:59 ]
cd という名前の外部プログラムはそもそも存在しない

686 名前:デフォルトの名無しさん mailto:sage [2008/03/05(水) 23:03:54 ]
>>684
cdがカレントディレクトリを移動するコマンドのことなら大抵の環境でできるよ。

1.
直接cdを外部プログラムとして起動しようとしていないか確認。
多くの環境ではcdは外部プログラムでなくシェルが解釈するコマンド。
したがってcdを使うにはシェルを起動して、それに対してcdコマンドを渡さなければならない。
たとえば、9x系でないwindowsなら、
new ProcessBuilder("cmd", "/C", "cd \\tmp & dir")
で起動されたプロセスは\tmpディレクトリのファイルリストを標準出力に出す。

2.
外部プログラムでカレントディレクトリを移動した後、
外部プログラムから復帰した後の親プロセス、つまりJavaプログラムの方で見ていないか確認。
多くの環境でカレントディレクトリの情報は各プロセスで独立している。
唯一、プロセスを起動する時に親プロセスから引き継がれるくらい。
子プロセスから親プロセスに伝播することはない。

687 名前:684 [2008/03/06(木) 11:14:03 ]
OSはlinux or FreeBSDなんですが
new ProcessBuilder("bash", "cd", "/hugahuga/");
で動きませんでした。
どうしたらいいのか教えて頂けませんか?


688 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 11:51:31 ]
>>687
何をしたいのか知らんが、
子プロセスでカレントディレクトリを移動しても、
自プロセスのカレントディレクトリは変わらないよ?



689 名前:684 [2008/03/06(木) 12:03:37 ]
やりたいことは、mecabの辞書の更新を動的にやりたいんで、
# cd /usr/local/src/mecab
に移動して、そこで一度
# /usr/local/libexec/mecab/mecab-dict-index -c utf8
で辞書を更新して
# make install
し直したいんです。

私の考えだと、子プロセスでカレントディレクトリに移動して、
その子プロセスでその次のコマンドを実行すれば出来ると考えているのですが。

690 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 13:03:24 ]
>>689
シェルスクリプトでやりたいことを一括して書いて、それを起動すればいいんじゃないかい?

691 名前:684 [2008/03/06(木) 13:05:40 ]
>>690
ウホッ!
そこには気づきませんでした!
確かに、シェルしか使ってないならそれがベストですね!
やってみます。ありがとうございました。

692 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 13:30:58 ]
>>691
ちなみに>>687
> new ProcessBuilder("bash", "cd", "/hugahuga/");
は思った結果は得られない。これはbashにcdと/hugahuga/という二つの引数を与えるもので、
cdや/hugahuga/という実行可能なファイルが存在しないというエラーになると思う。
やるなら、例えば、
new ProcessBuilder("bash", "-c", "cd /hugahuga/ && ls");
とする。bashのオプション-cはその次の引数をコマンドとして読み込む。

693 名前:684 mailto:sage [2008/03/06(木) 13:53:05 ]
>>692
何から何までありがとうございました。
勉強になりました。

694 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 14:10:30 ]
>>692
スレ違いだけど bash cd /hugahuga/ の二つ目以降の引数は一つ目のシェルスクリプトに与えられる引数だから
そんなファイルはないと言われるのはcdだけだね
あと-cを使わなければbashに渡せるのは実行可能ファイルというよりシェルスクリプト
bash cd はファイルcdが存在しないと言われるが bash ls はバイナリファイルは実行できないと言われる

695 名前:デフォルトの名無しさん mailto:sage [2008/03/06(木) 23:35:54 ]
public class Sample5_1 {
public static void main(String[] args) {
System.out.println(1+1);
System.out.println(1+1+2);
System.out.println("1+1+2の結果は"+1+1+2+"です");
System.out.println("1+1+2の結果は"+(1+1+2)+"です");
}
}
を実行すると下のようになるんですが、一番下はわかるのですが、下から二行目の112はなぜ計算されずに112になるのかわかりません。
理由を教えて下さい。
2
4
1+1+2の結果は112です
1+1+2の結果は4です

あともうひとつ
public class Sample5_4 {
public static void main(String[] args) {
int fatherAge = 52;
int motherAge = 50;
int myAge = 20;
int sisterAge = 20;
int sumAge = fatherAge + motherAge + myAge +sisterAge;
int averageAge = sumAge / 4;
System.out.println("家族の平均年齢は、"+ averageAge +"歳です");
}
}
を実行すると成功するのですが、一番下の「aveerageAge」の横の+を取ると下のエラーがでます。
上の質問も同じなのですが、前後に+を付ける理由などを教えていただきたいです。お願いします。

型 PrintStream のメソッド println(String) は引数 (String, String) に適用できません。トークン "averageAge" に構文エラーがあります。正しくは , です。


696 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:04:57 ]
>>695
"1+1+2の結果は"+1 → "1+1+2の結果は1"
"1+1+2の結果は1"+1 → "1+1+2の結果は11"
"1+1+2の結果は11"+2 → "1+1+2の結果は112"
"1+1+2の結果は112"+"です" → "1+1+2の結果は112です"

+を文字列に使うと、文字列を連結してひとつの文字列にする
括弧がなければ、左から順番に
printlnには文字列はひとつしか渡せないので、+なしで
System.out.println("foo" "bar" "hoge");
などとは書けない

697 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 00:05:37 ]
>>695
一つ目の質問について
"1+1+2の結果は"+1+1+2+"です"

(((("1+1+2の結果は"+1)+1)+2)+"です")
と解釈されるから。

698 名前:デフォルトの名無しさん mailto:sage [2008/03/07(金) 01:54:16 ]
>>696
>>697
すごくわかりやすく説明していただきありがとうございます。参考書にも詳しく書いてなかったので悩んでいました。
こうやって一つ一つ覚えて行くのが楽しさの一つですね。
まだはじめて少しですので、また聞くことがあるかもしれませんが、よろしくお願いします。



699 名前:デフォルトの名無しさん [2008/03/11(火) 00:13:05 ]
お尋ねします。
Java のコマンドライン引数には自分自身のパスは含まれないようですが、どうすれば自分自身のパスや名前を得ることができますか?
次の C 言語の例のようなことがしたいのですが。

/* hoge.c */
#include <stdio.h>

int main(const int argc, char * argv[])
{
  printf("EXE NAME: %s\n", argv[0]);
  return(0);
}

C:\test>hoge.exe
EXE NAME: hoge.exe

コマンドプロンプトで hoge.exe を実行すると argv[0] に hoge.exe という名前が入りそれを表示します。

700 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:43:00 ]
コマンドラインでプログラムを実行しようとすると
Registry key 'Software\JavaSoft\Java Runtime Enbiroment\CurrentVersion'
has value '1.3',but'1.6' is required.
Error:could not find java.dll
Error:could not find Java 2 Runtime Enviroment.
とでて実行してくれません。
どうすればいいですか?

701 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 00:50:53 ]
but'1.6' is required
だから、
JREの1.6をインストールして下さい

702 名前:デフォルトの名無しさん [2008/03/11(火) 00:56:03 ]
>>700
ランタイムの新しいバージョンをインストールすれば良いと思う。
java.sun.com/javase/ja/6/download.html

703 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 01:14:40 ]
できました!
ありがとうです

704 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 05:14:23 ]
>>699
ttp://ja.doukaku.org/151/nested/

705 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 07:48:49 ]
やはりそれしかありませんか。
私もぐぐってそのページは見付けたのですが、もっと簡単な方法はないものかと。
ともあれお答えありがとうございます。

706 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 11:53:32 ]
>>705
javaをキックするラッパを書いて、それのargv[0]を引数として渡せばいい。

707 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 17:22:50 ]
自分自身の名前は次の方法で得られました。
コマンドライン引数ではありませんがこれで代替可能だと思います。
public class test
{
  public static void main(String[] args)
  {
    test t1 = new test();
    System.out.println(t1.getClass().getName());
  }
}

708 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 17:32:13 ]
それでいいなら、

test.class.getName()

でもいいんじゃ?



709 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 17:47:36 ]
おー!
Windows の exe は勝手に名前を変えても実行できるでしょ。
だから自分の名前を表示したい場合はコマンドライン引数から持ってこなきゃいけないわけで。
Java なら *.class の名前を勝ってに変えてしまうと実行できませんよね。
だから getName() で充分だと思います。
色々とありがとうございました。

710 名前:デフォルトの名無しさん mailto:sage [2008/03/11(火) 23:06:33 ]
>>653
> それと、Java3Dや他の3DCGライブラリを使う場合はJREやJDKに最初から入ってるわけではないので、
> 別にインストールしないといけないのが少し手間といえば手間かも。特に他人に使ってもらう場合。

j3d.jarを自分のプログラムの中にFatJarで入れれば
そんなインストールの手間も省けると思うよ

711 名前:デフォルトの名無しさん [2008/03/14(金) 00:31:34 ]
コンパイルしたら
「*******.java:27: \12288は不正な文字です。」
と出るのですが「\12288」とは、何のことでしょうか
宜しくお願いします。

712 名前:デフォルトの名無しさん mailto:sage [2008/03/14(金) 00:33:13 ]
まあ検索ですぐに出てくるが
全角スペースのこと

713 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 21:59:38 ]
javaのswingで遊んでいますが設計上よくわからないことがあるので質問させていただきます

JFrameをextendsしたクラス、TimerTaskを実装したクラス、KeyListenerを実装したクラスを作りました
JFrameに色々と画像を表示してゲームを作りたいのですが、KeyListenerの取得したイベントはどのようにJFrameやTimerTaskに伝えるのが常識なのでしょうか?
友人の書いたプログラムをのぞくと、JFrameを実装したクラスにKeyAdapterやTimerTaskクラスを記述しJFrameを実装したクラスのフィールドを使いやりとりしているようでした


714 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 22:35:54 ]
>>713
つ ttp://www.pwv.co.jp/take_public_html/MVCwithEclipse/doc/MVCwithEclipse_c3.html

とはいえ正解があるわけじゃなし、プログラムいじる人が直感的にわかればいいっちゃ
いいんだろうけど

715 名前:デフォルトの名無しさん mailto:sage [2008/03/15(土) 23:18:49 ]
>>714
ありがとうございます
勉強してみます

716 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 11:30:34 ]
MySQLを使ったアプリケーションについての質問です。
データの登録や検索をしたいのですが、
例えば、String qry1 = "insert into 〜 values(〜,〜,〜)";という文で
〜の部分をアプリケーションから入力するにはどうすればいいでしょうか?


717 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 11:58:42 ]
?にして、PreparedStatement使うといいよ。

718 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 12:00:59 ]
あー、テーブル名もか。
テーブル名には?は使えないから、文字列組み立てるしかないね。
そのときに、テーブルが本当に存在するかどうかのチェックをしないと、
とても大変なことになるので注意が必要。



719 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 12:10:12 ]
あ、valuesの中だけで大丈夫です。ややこしくて済みません。
ご丁寧にありがとうございました。やってみます。

720 名前:デフォルトの名無しさん [2008/03/26(水) 22:18:21 ]
java.java:4: "]" がありません。
  int check(number[0],number[1],number[2]) {
             ^
こんなエラーが出るんですけど原因は何でしょうか?
int[] number = new int[3]; って宣言して、
int kekka = check(args[0],args[1],args[2]); って呼び出しています。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<302KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef