【初心者歓迎】Java質問・相談スレッド65 Update 2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2005/06/09(木) 00:12:33質問をする前に、貴方が見なければならないサイトについての情報は、
下のwikiのページにまとめてあります。
http://www.wikiroom.com/java/
これからJavaでプログラミングを始めたいが、何をすればいいかわからない人も、
wikiからのリンクをおたどりください。
以下のエラーが表示されて、途方にくれているあなたは、下のページへ。
「コマンドまたはファイル名が違います」
「'javac' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。」
「Exception in thread "main" java.lang.NoClassDefFoundError: 」
http://www.wikiroom.com/java/?path,classpath
前スレッド
【初心者歓迎】Java質問・相談スレッド65 Update 1
http://pc8.2ch.net/test/read.cgi/tech/1114850497/
兄弟スレッド
【初心者】Java質問・相談スレッド67【大歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1116750427/
兄弟スレが混雑しているときはこのスレで、このスレが混雑しているときは
兄弟スレで質問すると回答が得やすいかもしれません。
※注意※
1. 既出の質問や、他に適切なスレが存在する質問は、容赦なく無視されます。
質問をする前にwikiで過去ログ、関連スレ、FAQをチェックしてください。
2. 最近マルチ(他スレにも同じ質問を書く人)が増えております。
マルチは嫌われますので、絶対にやめましょう。
もちろん、兄弟スレとのマルチも禁止です。
3. JavaScriptの質問は、ここでは受け付けていません。
Web製作板をご利用ください。http://pc5.2ch.net/hp/
0153デフォルトの名無しさん
2005/06/20(月) 11:43:22iをどうやって定義すればいいんですか?
0154デフォルトの名無しさん
2005/06/20(月) 12:10:05System.getProperty("user.name")
がSYSTEM
となっているのですが、これって・・・?どういう意味でしょう??
0155デフォルトの名無しさん
2005/06/20(月) 13:03:15実数とは別の変数に保存
0156デフォルトの名無しさん
2005/06/20(月) 13:04:23それって、administratorでログインしてるのかな?
0157デフォルトの名無しさん
2005/06/20(月) 13:06:41グローバル変数で、ルート(ー1)とする
0158デフォルトの名無しさん
2005/06/20(月) 13:14:11すみません・・・マジでそこすら分からない・・・
どうやったら確認できますか?
0159デフォルトの名無しさん
2005/06/20(月) 13:19:19小数点のある計算が意図した結果にならず、悩んでおります。
うまく処理する方法をおしえてください。
double yy = 18.33;
double hh = 100;
System.out.println(yy*hh);
----------------------
1832.9999999999998 (結果)
1833.0(←この結果を期待しています)
0160デフォルトの名無しさん
2005/06/20(月) 13:22:39ログアウト?(だっけ?Windowsの場合)して、表示されている名前を見ろ
(下にパスワード欄があったはず)
それがadministratorだったら、非常にまずい。
0161デフォルトの名無しさん
2005/06/20(月) 13:23:34>>1とか読んでる?
0162159
2005/06/20(月) 13:47:05wikiをよんでみましたが、該当箇所がみつかりませんでした。
またgoogleで小数点・java のキーワードで検索もしました。
ttp://web.hc.keio.ac.jp/~fujimura/lang/page-7-1.html
(上記の結果が最も参考にはなりそうでした。)
単純な計算を複雑な処理をしなければならないところ
(基準が難しいところですが)に疑問をもったため、
質問させていただきました。簡単な方法をご存知でしたら、
ご教授ください。よろしくおねがい致します。
0163デフォルトの名無しさん
2005/06/20(月) 13:52:31pc1については、私のPCなのでUserNameはMyNameでした。
sv2については、administratorではありませんでしたが、
sv1については、administratorのようです。
えっと・・・マズイんですか・・・??(汗
0164159
2005/06/20(月) 14:03:55double yy = 18.33;
double hh = 100;
System.out.println(yy*hh);
NumberFormat formatter = NumberFormat.getNumberInstance();
formatter.setMaximumFractionDigits(2);
formatter.setMinimumFractionDigits(2);
System.out.println(formatter.format(yy*hh));
このあたりで解決していきたいとおもいます。ありがとうございました。
0165デフォルトの名無しさん
2005/06/20(月) 14:05:18SYSTEMはWindowsでサービスを動かすときのデフォルト
アカウント。当然ファイルサーバ側の共有リソースの
設定で権限が与えられていなければアクセスすることは
できない。
というわけで次はファイルサーバ側の共有フォルダの
アクセス権とファイルシステム上でのアクセス権の
チェックをすること。
つーか、もうJavaの話じゃないから、もし自分の理解の
範疇を超えていたらPC初心者板に移動してください。
0166前スレ943
2005/06/20(月) 14:31:07ファイルサーバ側の共有フォルダの
アクセス権とファイルシステム上でのアクセス権の
チェック
これはPC初心者板で聞いたほうが良いってことですかね・・・
0167デフォルトの名無しさん
2005/06/20(月) 14:46:12ユーザーがいないとか権限がないとかだと思うけど
0168デフォルトの名無しさん
2005/06/20(月) 15:16:37なるほど・・・ちょっとPC初心者板に行って来ます。
もし、それでも分からなかったら再度お聞きして宜しいですか?
0169デフォルトの名無しさん
2005/06/20(月) 16:03:530170デフォルトの名無しさん
2005/06/20(月) 16:49:35エスケープ処理されてないようにみえるんだが
0171デフォルトの名無しさん
2005/06/20(月) 17:05:08そんな見かけの表示で誤魔化すんじゃなくBigDecimal使え。
0172デフォルトの名無しさん
2005/06/20(月) 17:37:25速度と範囲をとるために正確さを犠牲にしている方法なのにな
つーかつい最近もまったく同じような質問みたような気がする
0173前スレ943
2005/06/20(月) 19:06:11try{ 〜catch}
ですか??
0174デフォルトの名無しさん
2005/06/20(月) 20:07:090175デフォルトの名無しさん
2005/06/20(月) 20:12:520176デフォルトの名無しさん
2005/06/20(月) 20:13:540177デフォルトの名無しさん
2005/06/20(月) 20:18:49public void paint (Graphics g) {
目一杯描きます。
}
0178デフォルトの名無しさん
2005/06/20(月) 20:54:54紙テープでFORTRAN やってた時代から FAQ ですな。
0179デフォルトの名無しさん
2005/06/20(月) 20:56:03ヒント: System.out.println("\\");
0180デフォルトの名無しさん
2005/06/20(月) 23:48:31Java/COMやJ/Direct等があるようなのですが、それぞれの
ざっくりとしたメリットとデメリットを教えて頂けないでしょうか。
とりあえずデメリットとしては、J/DirectはJ++じゃないとダメ、
Java/COMはUNIX系に移植するとき苦労する、とかでしょうか。
0181デフォルトの名無しさん
2005/06/21(火) 00:21:11mainなんかで外からファイル文字列を受け取る場合は例外として、プログラム内部で
文字列でファイルパスを書く時は、\はjavaではエスケープ指定であって\という文字では
ない。だから\という文字を指定する時は\\とかく。
\\Srv1\C\
は
\\\\Srv1\\C\\
と書かなければいけない。
0182デフォルトの名無しさん
2005/06/21(火) 00:22:03JNI以外は無視していい。
Windows限定のプログラムを作るなら、別にJavaを使う必要ないんだし。
0183デフォルトの名無しさん
2005/06/21(火) 00:32:49そんな単純なものだっけ?
0184デフォルトの名無しさん
2005/06/21(火) 00:44:48MS独自拡張だしな
MSVMメンテされないし
0185デフォルトの名無しさん
2005/06/21(火) 00:55:080186デフォルトの名無しさん
2005/06/21(火) 01:21:210187デフォルトの名無しさん
2005/06/21(火) 07:39:12java.io.File.separatorとかjava.io.File.pathSeparatorとか使っていこうよ
0188前スレ943
2005/06/21(火) 08:51:21それって、ユーザが画面入力する時にも意識させておかないとまずいんですか?
ユーザも\\\\sv1\\Cと入力しないといけない??
0189デフォルトの名無しさん
2005/06/21(火) 09:39:280190デフォルトの名無しさん
2005/06/21(火) 10:11:32セパレータには\ではなく/を使え
若しくはFile.separatorを使え
0192デフォルトの名無しさん
2005/06/21(火) 11:01:07エスケープシーケンスとか知らんのか?
0193デフォルトの名無しさん
2005/06/21(火) 11:08:35お前のコードがそうなってるだろ
0194デフォルトの名無しさん
2005/06/21(火) 11:20:02while(falseになるまで次の文字に移りながらn文字回、ループを回す){
//なんかじっこーする
if(ユーザが入力したキー.equals('\\')){
//なんたら
}
//うんたらかんたら
}
0195デフォルトの名無しさん
2005/06/21(火) 11:36:06Stringの中に入ってる文字は関係ない。
0196デフォルトの名無しさん
2005/06/21(火) 12:57:21int wk = 0;
byte[] b = new byte[1];
for(int i = 0; i < 8; i++){
wk += (Integer.parseInt(bin.substring(i, i + 1)) * (1 << (7 - i)));
}
b[0] = (byte)wk;
String str = new String(b); // str = "A"
System.out.println(str);
二進ダンプしたものを元に戻す処理として上記のようなものを書いたのですが
もうちょっとさくっとできないものでしょうか?
0197デフォルトの名無しさん
2005/06/21(火) 13:09:14じゃダメなんかい?
0199デフォルトの名無しさん
2005/06/21(火) 14:29:30class a{
int a[][] = new int[2][2];
・・・・・2*2の同じ画像が出るようにしてあります
}
class b{
ここで例えば[0][0]の画像が押されたら
[1][1]の画像が変るというような処理を行いたいのですが
クリックされたのはどこの画像なのかを識別するには
どうすればいいのでしょうか?
0200デフォルトの名無しさん
2005/06/21(火) 14:49:150201デフォルトの名無しさん
2005/06/21(火) 15:34:43int配列との関係が不明。
適当なリスナを用意する。
0202デフォルトの名無しさん
2005/06/21(火) 15:53:42デスクトップ上でダブルクリックしたとき、配布されているもの(V2C)は実行されるのに、自分のものは
ウインドウを開くだけなのに、エラーで実行されません。
コンソールでは、実行されます。
なにが、間違っているのでしょうか?
ソース
import javax.swing.*;
import java.awt.*;
public class main {
public static void main(String args[]) {
JFrame frm = new JFrame("Kitty on your lap");
frm.setBounds(0 , 0 , 400 , 200);
frm.setVisible(true);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
0203デフォルトの名無しさん
2005/06/21(火) 16:05:54http://java.sun.com/j2se/1.5.0/ja/docs/ja/tooldocs/windows/jar.html
http://java.sun.com/j2se/1.5.0/ja/docs/ja/guide/jar/jar.html#JAR%20Manifest
0205202
2005/06/21(火) 16:33:54???
自分プログラマ向いてないかも・・・orz
0206デフォルトの名無しさん
2005/06/21(火) 16:37:26「Main-Class: manifest jar」でぐぐれ。
0207デフォルトの名無しさん
2005/06/21(火) 16:48:30できました。サンクス。なんとか首がつながりそうです。
0208デフォルトの名無しさん
2005/06/21(火) 17:44:090209デフォルトの名無しさん
2005/06/21(火) 17:46:55この道より他にわれを生かす道なしこの道を行く
〜武者小路実篤
0210デフォルトの名無しさん
2005/06/21(火) 17:51:530211前スレ943
2005/06/21(火) 18:22:42>>193
>>194
>>195
なるほど・・・勉強になりました。
前スレより続いていた問題は解決しました。
私がTomcatのユーザをちゃんと確認していなかっただけでした。
申し訳ありませんでした。
数々のご対応頂きありがとうございました。
0212デフォルトの名無しさん
2005/06/21(火) 19:04:58java version "1.5.0_02"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_02-b09)
Java HotSpot(TM) Client VM (build 1.5.0_02-b09, mixed mode, sharing)
% cat AvailableImageWriters.java ~:8551
import javax.imageio.ImageIO;
import java.util.Arrays;
public class AvailableImageWriters {
public static void main(String[] args) {
System.out.println(Arrays.asList(ImageIO.getWriterFormatNames()));
}
}
% java AvailableImageWriters ~:8552
[BMP, jpeg, bmp, wbmp, JPG, png, jpg, PNG, WBMP, JPEG]
だそうだ。
個人的にはGIFで保存なんてアリエナイので困らんけど、210は困るんだろうな。
0213デフォルトの名無しさん
2005/06/21(火) 19:18:310214デフォルトの名無しさん
2005/06/21(火) 19:25:10主なるクラスが他のクラスを継承している状態でアプレットを継承できません。
インターフェイスでアプレットを実装する事はできませんか?
0215デフォルトの名無しさん
2005/06/21(火) 19:25:100216デフォルトの名無しさん
2005/06/21(火) 19:26:07できません。
0217デフォルトの名無しさん
2005/06/21(火) 19:36:34じゃあアプレットを使う時は
スパゲティで書くしかないのですね・・・
0218デフォルトの名無しさん
2005/06/21(火) 20:01:01きっちり設計すれば、必要なくなる。
ガンバレ
0219デフォルトの名無しさん
2005/06/21(火) 20:15:580220デフォルトの名無しさん
2005/06/21(火) 20:22:40継承しないとスパゲッティになる理屈が分からん。逆だろ。
だいたい OO 初心者は不要な継承が多すぎだ。
0221デフォルトの名無しさん
2005/06/21(火) 21:16:38PNGの方が小さい。それよりJPEG2000は普及しないのかね。
>>217
あえて多重継承を禁止してるのはスパゲッティ継承を防ぐためなんだが。
0222デフォルトの名無しさん
2005/06/21(火) 21:18:01曖昧さを防ぐためだろ。
0223デフォルトの名無しさん
2005/06/21(火) 21:27:350224デフォルトの名無しさん
2005/06/21(火) 21:37:010225217
2005/06/21(火) 21:48:00クラス毎に処理が書けなくて
逆に一つのクラスに長く書き綴る事になるんじゃないですか?
ちなみにJava暦3ヶ月の初心者ですのでほとんどわかりませんが・・・
0226デフォルトの名無しさん
2005/06/21(火) 22:01:56クラスを役割分担させればいいんじゃないの?
0227デフォルトの名無しさん
2005/06/21(火) 22:02:40それに継承だけだと階層が深いとやってられんよ
0228デフォルトの名無しさん
2005/06/21(火) 22:10:540229デフォルトの名無しさん
2005/06/21(火) 22:15:290230デフォルトの名無しさん
2005/06/21(火) 22:17:05それもある。
というかスパゲティ継承をすると曖昧さも問題になる。
そんなわけで議論を過熱させこのスレは早めに葬りましょう。
Java質問スレが2つもあると面倒。
0231デフォルトの名無しさん
2005/06/22(水) 00:04:53いや、世の中には多重継承できない言語の方が多いんだから、困ってないんだよ。
継承は現実には、本当に必要な時以外使わないように言われてる。
かわりに、役割に応じてクラスを分割して、AppletならメインとなるAppletサブクラスの
インスタンス変数に、その分割したクラスのインスタンスを保持しとく。
アプレット内部では、必要に応じて保持しているインスタンスのメソッドを呼べばいい。
0232デフォルトの名無しさん
2005/06/22(水) 00:05:41土足で既存のスレに割り込んできて、「仲良くしようぜ」って。
0233デフォルトの名無しさん
2005/06/22(水) 00:10:310234デフォルトの名無しさん
2005/06/22(水) 00:23:34プロパティファイルを同梱して、アプレットからプロパティファイルを
読み込む、というようなことをしたいのですが、プロパティファイルは
JARの中のどこに入れればよいでしょうか。
もしくはこんなことはできないですか?
0235デフォルトの名無しさん
2005/06/22(水) 00:31:03クラスパスの通ってるところ(要するにjarの、.classファイルがあるところだが)なら
どこでも。
プログラム内からプロパティファイルを読み込む時は、getResource()で取得する。
クラスパス内から指定リソースを探してくれる。
0236デフォルトの名無しさん
2005/06/22(水) 00:38:24ありがとうございます。できそうです!
0237デフォルトの名無しさん
2005/06/22(水) 01:58:38矩形領域の情報と、直線の情報が与えられる。
矩形領域は、矩形の始点座標(x, y)と横幅の長さと縦幅の長さとで表す。
直線は、両端点の座標で表されす。
直線が矩形領域内に収まっている場合には、直線の両端点の座標を返す。
直線が矩形領域内に収まっていない場合には、矩形と直線の交点を返す。
いわゆる、クリッピングを行うものを作ろうと考えています。
これを実現するアルゴリズムは、すぐに考えることは出来ました。
しかし、スマートなコードでライブラリを書こうと思うと、どのような方針で
書いていけば良いのか分かりません。
Javaでライブラリを作るとなると、それはインタフェースにすべきなのか?継承させる
べきなのか?メインプログラムからライブラリに複数の情報を渡すにはどうすれば
よいのか?など疑問なところだらけです。
計算アルゴリズムは自分で出来ますので、「矩形情報と直線情報を渡すだけのメインプログラム」
と「情報を渡されて、計算結果を返すライブラリ」の基本構造を御提示願えないでしょうか?
お願いします。
0238デフォルトの名無しさん
2005/06/22(水) 02:03:20継承させる → 意味なし
Rectangle クラスに Line clip(Line) メソッドでも作れ。
0239デフォルトの名無しさん
2005/06/22(水) 11:22:40ライブラリを作る→意味なし
どう考えてもメソッドひとつ分の機能しかないだろそれ。クラスにすらならん。
Rectangle継承するのも勿体ないからLine clip(Line,Rectangle)メソッドでいいよ。
0240デフォルトの名無しさん
2005/06/22(水) 12:49:19Apache Antの<manifest>タグを使えば
もっと楽にJARを作れるぞ。
0241デフォルトの名無しさん
2005/06/22(水) 12:51:49宿題は専用スレで
0242デフォルトの名無しさん
2005/06/22(水) 13:17:37レベル的にant理解するほうが厳しいと思われ
IDE使えばなんにも意識しないけどな
0243デフォルトの名無しさん
2005/06/22(水) 13:20:28static なクラスを作るのと、singleton のクラスを作るのとで、どのような
違いがあるのでしょう?
singleton の場合、インスタンスが2つ以上(有限)の場合なら、static なク
ラスとの違いが分かるのですが、一つしかインスタンスがない場合、static
なクラスで良いのではないかと思ってしまいます。
わざわざ singleton にすることのメリットが分からないのです。お教えいた
だけないでしょうか?
0244デフォルトの名無しさん
2005/06/22(水) 13:27:30staticなものは継承が使えない。
0245243
2005/06/22(水) 13:36:49・継承を使わないなら、static でよい。
・元のクラスもstatic だったら、新しいクラスも satatic でよい。
(ただし、プロパティは(オーバーライドしない限り)共有される)
という理解でよろしいでしょうか?
0246デフォルトの名無しさん
2005/06/22(水) 13:44:02「元のクラス」「新しいクラス」ってなんだ?
それから、staticなものは継承してもプロパティはオーバーライドされないぞ。
「継承を使わないなら」は、将来使う可能性も無いことがはっきりしているならという意味ではその通り。
将来、継承したサブクラスを作成する可能性があるならstaticで作成しない方がいい。
0247243
2005/06/22(水) 14:10:42クラス = 子 というつもりでした。
継承に付いては、勘違いをしていました。子クラスにフィールドを新設しても、
それにアクセスするメソッドも含めてオーバーライドしないと、新設したフィー
ルドにはアクセスされないのでしたか。
実は、Factoryクラスを作ろうとしています。Factoryクラス自体が情報を保持
していて、生成するインスタンスにそれを初期化パラメータとして与えるので
すが、今のところ、継承の予定もありませんし、static クラスでかまわない
かと思っております。どのように思われますか?
0248デフォルトの名無しさん
2005/06/22(水) 14:24:50違う。staticなものは、フィールドもメソッドもオーバーライドされない。
各クラスオブジェクトに属するだけ。
俺ならDIコンテナにインスタンス管理させてSingletonオブジェクトとして生成されるように設定する。
0249デフォルトの名無しさん
2005/06/22(水) 14:44:25それ、設計に問題あるんじゃないか?
というのはさておき、そのような用途ならstaticで構わん気もする。
あくまで生成だけを行うFactoryであれば。
0250デフォルトの名無しさん
2005/06/22(水) 15:06:54それぞれ分割したいのです。
例えば入力が
ここは大学の教室です
とあったとしたら
str1 = ここは
str2 = 大学
str3 = の
str4 = 教室
str5 = です
といった具合です。
正規表現を使えば出来そうだということはなんとなく分かるんですが…
アドバイスをお願いします。
0251243
2005/06/22(水) 15:29:28ようです。勉強します。
DIコンテナについては全然知らないので、今回は時間も無いし、とりあえず
static でやってみます。いろいろありがとうございました。
0252デフォルトの名無しさん
2005/06/22(水) 15:31:20java.lang.Character.UnicodeBlockを使ってごにょごにょ。
正規表現をつかうのはかえって難しい。
ところで、日本語localeでのjava.text.BreakIterator.getWordInstance()
はどういう動作になるんだろうか。
■ このスレッドは過去ログ倉庫に格納されています