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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/10/22(日) 13:42:10
過去ログ、関連スレッド、よくある質問とその回答、
質問をする前に、貴方が見なければならないサイトについての情報は、
下の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 は不正な文字です。」
文字リテラル以外で全角スペースは使えません。半角スペースに。

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

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

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

次スレは>>980あたりで。
0655デフォルトの名無しさん2006/11/12(日) 14:09:29
うるせーよ。
0656デフォルトの名無しさん2006/11/12(日) 14:15:27
>>640
649氏と一部かぶるが
・delegate がない。
・プロパティがない。
・protected のスコープがパッケージまで及ぶ。
・チェック例外とチェックしない例外がある。
・struct 相当のユーザー定義型はない
・ref/out に値する引数の渡し方はない。
・switch の case 式に String を使えない。
・属性(attribute)に似た注釈(annotation)がある。
など。細かい違いは多数あるが、C/C++ ほど違うわけじゃない。
後発だけあって C# の方が言語構文は優れてると言う意見が支配的。
(プロパティとdelegate、ref/out が特に素晴らしいと個人的に感じる。)

画面作ることに関しては VS.NET より Eclipse+VE の方が好き。
動作がとてつもなく遅いがリファクタリングの正確さや
ファイル配置・変数配置の自由度が上だと感じる。
これはもう個人の感想だけど。
0657デフォルトの名無しさん2006/11/12(日) 14:16:57
>>654
時間がないなら流し読みの技術身につけた方が良いよ。
あと部活がどうとか、誰も聞いてないこと書く必要ないから。
(読む側の時間も考えてくれよ。)
06586402006/11/12(日) 14:38:20
>>656
まさに私が知りたかったことです!
後は掘り下げていくうちに数珠繋ぎでわかっていくかと思いますので、自分でやっていきます
ありがとうございました

>>657
忙しい理由も添えないと、ただの「怠慢」に取られそうでしたので。。
無理に読ませようとは思ってませんので、煩雑に感じたなら無視してください


迷惑掛けてるようなので去ります
ありがとうございました
0659デフォルトの名無しさん2006/11/12(日) 14:42:30
言い方がキツかったか。
迷惑ってほどでもないので、またつまったら来るヨロシ。
ID出てないから証明しようがないけど、
656,657 は同一人物(俺)による発言だよ。
0660デフォルトの名無しさん2006/11/12(日) 14:52:35
きんもーっ☆
0661デフォルトの名無しさん2006/11/12(日) 15:10:45
DefaultCategoryDataset dataset = new DefaultCategoryDataset();

dataset.addValue(0.2, "売上高", "2001年");
dataset.addValue(2.2, "売上高", "2002年");
dataset.addValue(5.1, "売上高", "2003年");
dataset.addValue(9.8, "売上高", "2004年");
dataset.addValue(12.0, "売上高", "2005年");

JFreeChartのデータの部分をcsvファイルから追加したいのですがどのようにしたらできますか?
csvファイルの中身は下記の通りです。
0.2,売上高,2001年
2.2,売上高,2002年
5.1,売上高,2003年
9.8,売上高,2004年
12.0,売上高,2005年
0662デフォルトの名無しさん2006/11/12(日) 15:52:24
>>651
C# ≒(Java + C++)/2
みたいなもんだと俺は思ってる
0663デフォルトの名無しさん2006/11/12(日) 15:54:37
>>656
> 後発だけあって C# の方が言語構文は優れてると言う意見が支配的。
> (プロパティとdelegate、ref/out が特に素晴らしいと個人的に感じる。)

俺としては、それも素晴らしいとはとても思えなかった。
アノテーションより先に属性を導入した点だけはC#にアドバンテージが
あったと見えたけど、それ以外は大したことがないというか
0664デフォルトの名無しさん2006/11/12(日) 16:05:55
>>663
と、Java基地外が悔しさ紛れにつぶやいております。
0665デフォルトの名無しさん2006/11/12(日) 18:45:51
とりあえず、他の言語と比較するなら、しっかり使ってからにしろと。
一部かじっただけでは批評ではなく第一印象。
0666デフォルトの名無しさん2006/11/12(日) 21:52:27
すみません、全くの初心者なのですが、
>>472を作り方かヒントだけでも、お願いしますorz
いろんなサイト見たけど、分かりません、、、
0667デフォルトの名無しさん2006/11/12(日) 22:24:53
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28470 クライアント
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=28471 サーバー
ソケット通信のプログラムなんですが、2台のPCでサーバーを構築してサーバーからサーバーへのメッセージを転送するには
どうしたらいいんでしょうか。クライアントのconnectToServer();の記述を加えたりしてみたんですができなかったので・・・
0668デフォルトの名無しさん2006/11/12(日) 22:24:56
じゃあ、あきらめてください
0669デフォルトの名無しさん2006/11/12(日) 22:39:30
JTextField で文字制限はプログラムで書けばできるのですが、
| |
スペースキーをずっと押していると文字がフィールド内に収まらず隠れてしまうのですが
何かいい方法があれば教えてください。
0670ぴゅあ2006/11/12(日) 23:31:56
>>667
>できなかったので・・・
やったのなら、どうできなかったかというものがあったりする筈ですが。。。
(それは書かれてないので置いといて)

「2台のPCでサーバーを構築してサーバーからサーバーへのメッセージを転送する」の前に
まずその既にあるクライアント,サーバーのソースコードがよく理解できていないことが
現れているようにも思えます
0671ぴゅあ2006/11/12(日) 23:36:49
>>669
>JTextField で文字制限はプログラムで書けばできるのですが、
>スペースキーをずっと押していると文字がフィールド内に収まらず隠れてしまう
まず
・フィールドの幅を広げれば済むことなのか
・フィールドに文字数制限を掛けることができていないのか
或いはその他の問題なんでしょうか?
0672デフォルトの名無しさん2006/11/13(月) 00:46:43
教えてください
「requestFocusInWindow」
これどのような処理だかわからないです
0673デフォルトの名無しさん2006/11/13(月) 01:52:11
>>664
またお前Javaスレを荒らし始める例のAA厨かよ
0674デフォルトの名無しさん2006/11/13(月) 06:09:18
質問でございます。
int aの中身が1,3,5,7,8,10,12の場合の処理が同じ。
4,6,9,11の場合の処理が同じ。
2だけ違う処理。

という構文を書く場合if文ではif(a == 1 || ...)と書くのは大変です。
しかしswitchで書く場合は処理をその都度書く必要があるので大変です。
12通りは必要になります。

処理は各々のメソッドに入れるものとして構文自体をもっと簡単に書く方法はありませんか?

勉強不足ですみません。
よろしくお願いします。
0675デフォルトの名無しさん2006/11/13(月) 06:49:31
>>674
switchのbreak削ったらいいじゃね?
0676デフォルトの名無しさん2006/11/13(月) 06:57:55
>>675
わかりにくい分ですみません。
例えばswitch文に例えるなら

switch(a) {
case 1 : System.out.println(); break;
case 2 : System.out.print(); break;
case 3 : hoge(); break;
}
ではなく
switch(a) {
case 1, 3, 5, 7, 8, 10, 12 : System.out.print(); break;
case 4, 6, 9, 11 : System.out.println(); break;
}
の様に同じ処理をする変数の場合まとめて書くことができないのか?
できるだけ短く記述できないでしょうか?という事です。
0677デフォルトの名無しさん2006/11/13(月) 07:01:44
try & catch文を使う際にある範囲内での数字以外例外を吐き出すという事は可能でしょうか?
標準入力を使いint xの場合1 < x <100の間以外の数字を入力された
場合例外を吐き出す、または再度入力を促す様にしたいです。
よろしければご教授ください。
06786752006/11/13(月) 07:12:56
>>676
これじゃだめなのかな?

switch(a)
{
 case 1:
 case 3:
 case 5:
 case 7:
 case 8:
 case 10:
 case 12:
  //処理(1)
  break;
 case 4:
 case 6:
 case 9:
 case 11:
  //処理(2)
  break;
 case 2:
  //処理(3)
  break;
}
0679デフォルトの名無しさん2006/11/13(月) 07:15:54
>>677
throw
0680ぴゅあ2006/11/13(月) 07:39:31
>>677
if構文の使い方が解らない?
だとすれば基本的な部分を学び直すということになると思うけど

>例外を吐き出す
は>>679の言うthrowの使い方を知ることだろうけど

>再度入力を促す様にしたい
do〜whileループ(使いそうなときは稀なので怪しいけど…確かJavaでもあった筈?)の使い方とか
これも基本的な部分になると思うけど

サンプルを示して解説されているようなもので理解してみるのがいいかも
ってところなのかな?
0681デフォルトの名無しさん2006/11/13(月) 10:21:47
>>679
Exceptionの使い分けがよくわからなくて…。

>>680
できれば

try {
BufferedReader = new BufferedReader(new InputStreamReader(System.in));
System.out.println("数値を入力してください");
int a = Integer.parseInt(input.readLine());
} catch(Exception e) { //ここが怪しいです
System.out.println("範囲外の数値が入力されました");
}

の様に使いたいです。

int a = Integer.parseInt(input.readLine());
if(1 < a && a < 100) {
System.out.println("範囲外の数値が入力されました");
}
とするべきでしょうかね?

良くないのは知っていますがgoto構文などが使えれば凄く楽になると思っています。
06826762006/11/13(月) 10:32:09
>>678
すみません意味を理解できていませんでした。
わざわざどうもありがとうございます。

アルゴリズムの習得?というか練習の為パッケージを使用せずにカレンダーを
作ろうとしてるんですけど曜日の概念だけがとても難しいですね。
現時点ではまだ入力された月を表示する位のつもりですけどそれでも曜日が難しいです。
また詰まったら質問しに来ると思うのでその時はよろしくお願いします。
0683デフォルトの名無しさん2006/11/13(月) 12:07:38
case 1, 2, 3: とは書けないが、 case 1: case 2: case 3: と並べることは可能。
それだけのこと。

switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
System.out.println("大の月");
case 2:
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
System.out.println("29日");
} else {
System.out.println("28日");
}
case 4: case 6: case 9: case 11:
System.out.println("小の月");
default:
System.out.println("ぶっちゃけありえなーい");
}

曜日はツェラーの公式を検索してきて使えばよろし。
(難しい式でもないし)
0684デフォルトの名無しさん2006/11/13(月) 13:17:48
C#には将来性を感じないのでJavaをやってみた
0685デフォルトの名無しさん2006/11/13(月) 13:52:02
>>681
状況から考えるに例外で処理するより、普通のエラー処理の方が分かりやすくない?
入力検証通した後なら assert で値チェックしたり、実行時例外投げるのもありだけど。

while(true){
 // 入力待ち
 // 入力検証
 if( 入力エラー ){
  // エラーメッセージ(再度入力しろとかなんとか)
 }

 // 入力問題なし
 break;
}
0686デフォルトの名無しさん2006/11/13(月) 13:52:51
if の最後に continue; が抜けてたが、ララァなら分かってくれるよね。
0687デフォルトの名無しさん2006/11/13(月) 15:12:29
質問です。
Java2DとSwingに関連する内容なのですが、
JPanalを継承したクラスを、JTabbedPaneにaddして、そのクラスのpaintメソッドで
Java2Dの描画を行っています。
そこで、
public void paint(Graphics g) {
Graphics2D g2 = (Graphics2D)g;
AffineTransform af = new AffineTransform();
g2.setTransform(af);
以下描画...
}
とすると、ウィンドウサイズを変更したり、再描画させたりした時に描画するものの位置がずれます。
具体的にいうと、jTabbedPaneのタブの大きさだけ描画した物が上に移動します。
原因を調べてみると、どうもAffineTransformオブジェクトをGraphics2Dに登録すると、
座標計算の基準点がタブに登録したJPanel派生クラスの領域の左上ではなく、
jTabbedPaneの領域(タブ表示域も含んだ)の左上に、再描画の時に変更になってしまうようなのです。

これはJavaランタイムのバグなのでしょうか。ちなみにJavaのバージョンは1.5.0_08です。
0688デフォルトの名無しさん2006/11/13(月) 15:14:59
import java.io.File;
import java.util.Scanner;


public class test2 {
public static void main(String args[]) {
try {
int i = 0;
String[] words = null;
// ファイルを指定し開く。
Scanner f = new Scanner(new File("データ.dat"));
// ファイルから1行分入力しコンソールへ出力。
while( f.hasNextLine() ) {
String s = f.nextLine();
words[i] = s;
++i;
}
while( i < words.length ) {
System.out.println(words[i]);
++i;
}
} catch( Exception e ) {
System.out.println("エラー");
}
}
}

ファイルは存在しますが
うまく動作せずに例外処理になってしまいます。
どうすればいいか教えてください。
0689デフォルトの名無しさん2006/11/13(月) 15:48:40
サーブレットでアップローダーの作成をしているのですが
ファイルを直でリンクさせてダウンロードさせると
ユーザの環境によっては画像やtxtファイルなどは展開されてしまうので
拡張子にかかわらずファイルの保存を表示させたいのですが
良い方法はありますでしょうか
0690デフォルトの名無しさん2006/11/13(月) 20:11:56
色々と自分でも調べたのですが、解決出来なかったので質問させてください。
private String toColor(String s){
z = s.replaceAll("green", "緑");
z = s.replaceAll("red", "赤");
z = s.replaceAll("blue", "青");
z = s.replaceAll("yellow", "黄色);
return(z);
}
として、入力された文字に対して置換を行うプログラムを作っています。
実行は出来たのですが、何故か一番下の置換プログラム(yellow→黄色の行)しか処理せず、
緑〜青はそのまま英文で出て来てしまいます。
このほかに必要なプログラムがあるのでしょうか?どうぞ、宜しくお願いします。
0691デフォルトの名無しさん2006/11/13(月) 20:27:11
>>690

z = z.replaceAll("red", "赤");
z = z.replaceAll("blue", "青");
z = z.replaceAll("yellow", "黄色);

えーっと、変換した文字列は次の処理へ渡さないとダメですよ。
zが毎回、不変のsから生成されてます
0692デフォルトの名無しさん2006/11/13(月) 20:28:36
>>690
zってのをどこで宣言してるのがわからんが、それを使いたいのなら

z = s.replaceAll("green", "緑");
z = z.replaceAll("red", "赤");
z = z.replaceAll("blue", "青");
z = z.replaceAll("yellow", "黄色);
return(z);

以上。
0693デフォルトの名無しさん2006/11/13(月) 20:34:41
>>688
勝手に省略せずにエラーを書け。

words が確保されてなくて NullPointerException?
十分なサイズを確保するか、もしくは配列やめてリストにするとか。
0694デフォルトの名無しさん2006/11/13(月) 20:37:13
>>689
Java とは一切関係ない。
Web制作板で聞いた方が適切。
0695デフォルトの名無しさん2006/11/13(月) 20:45:18
>>691-692

ご回答ありがとうございます。

sを使用するのは1行目だけで、2行目からはzを使用するんだったんですね。
プログラムが動くと共に理解できてよかったです。丁寧なご回答ありがとうございました。
ネットで探しても置換プログラムがどこも1行だけだったので、思い切ってこちらで聞いてよかったです。
0696デフォルトの名無しさん2006/11/13(月) 21:23:38
>>689
> サーブレットでアップローダーの作成をしているのですが
> ファイルを直でリンクさせてダウンロードさせると
> ユーザの環境によっては画像やtxtファイルなどは展開されてしまうので
> 拡張子にかかわらずファイルの保存を表示させたいのですが
> 良い方法はありますでしょうか



Jakarta Commons FileUploadを使うことを
お勧めする。非常に簡単にアップローダを作ることができるぞ
0697デフォルトの名無しさん2006/11/13(月) 21:24:04
>>694
いや、そうでもないな。
Commons FileUploadを使えばいい
とだけはいっておくべき
0698デフォルトの名無しさん2006/11/13(月) 21:37:48
アップロードに関してはそれで労力を減らせるけど、
それはそれとして他に知っとくべきことが多すぎない?
0699デフォルトの名無しさん2006/11/13(月) 22:20:04
javaアップデートって言うのが昨日あたりから来ているのですがこれってしてもいいんでしょうか?
初心者質問ですいません
0700デフォルトの名無しさん2006/11/13(月) 22:29:03
linux上で、JMF2.11eを使い動画の再生を行っています。
で、player.play()・player.stop()は効いているようなのですが、
player.close()ができていないようなのです。
そんな状態になっている方いませんでしょうか?
そして解決方法があれば教えていただきたいのですが。
0701デフォルトの名無しさん2006/11/13(月) 22:30:29
ちなみに、win上では同じ組み方でcloseができています。
連投すいません。
07025192006/11/13(月) 23:05:57
ごめんちょっと再び質問ちゃんしていい?

ボタンを配置して、そのボタンをクリックしたら別のwindowが
出るようなプログラムをつくりたいんです。
前のwindowを残して新しいwindowが出るようなプログラムって
できるんですか?
0703デフォルトの名無しさん2006/11/13(月) 23:11:52
できます
0704デフォルトの名無しさん2006/11/13(月) 23:15:48
getCode1・・・getCode50みたいなメソッドがあって(setも同じ)、
Listオブジェクトとやりとりしたいのですが、(羅列するのが大変なので)
for文の中で「"getCode" + i」みたいなことをやって、その文字列のメソッドを
呼び出す方法はないでしょうか?
0705デフォルトの名無しさん2006/11/13(月) 23:18:45
>>704
リフレクションを使えば可能。でも
getCode(int index)
でいいじゃん。
その前に、COBOLっぽいいやな臭いがプンプンするぞ。
0706ぴゅあ2006/11/13(月) 23:21:32
>>681
細かいところは置いといて(後でちゃんと見るのでしょうし)

入力誤りをエラーとして扱うか(if文で見てメッセージ出すとか)
例外として扱うかとかの選択は作る上での好みの選択だろうとして

前半は前半で色々と例外を出すだろうからcatchすることにもなるでしょうけど
(Integer#parseInt()に渡されたものが数字以外とかIntegerの範囲を越えてるとかで例外)
それはそれで取り敢えずは端折っておいてもよいかもですけど
後半のコードは"1 < x <100の間"の条件を見るために
その2つのコードを一緒にしたものとかいうのでいいんじゃないかと

ここ(後半)の
>System.out.println("範囲外の数値が入力されました");
を"throw new なんちゃら;"とかしてもいいでしょうけど
(例外にしたいということならそうなったりするでしょうけど)
要は入力が範囲内であるかどうか(入力エラー)が判って適切な処理ができればいいので
後半のコードのままを使った方がいいんじゃないかと
(throwしてしまうと今度はそれをcatchして…とか余計なコードも出てくるでしょう)

>System.out.println("範囲外の数値が入力されました");
の後に再入力として戻ったりしたいということですから(正常に処理した場合も?)
頭に戻るというコードをちゃんと書いておけば

そこんところは>>685-686で挙げてくれているので大丈夫だと思う
・・・か、もうできちゃってるか
0707ぴゅあ2006/11/13(月) 23:23:17
ララァって何?
0708デフォルトの名無しさん2006/11/13(月) 23:27:17
リッチクライアントじゃない
ただのWebアプリからWin32APIにアクセスできますか?
(^_^;
07096882006/11/13(月) 23:35:44
import java.io.*;
import java.util.Scanner;


public class test2 {
public static void main(String args[]) {
int i = 0;
String[] words = null;
try {
// ファイルを指定し開く。
Scanner f = new Scanner(new File("データ.dat"));
// ファイルから1行分入力しコンソールへ出力。
while( f.hasNextLine() ) {
words[i] = f.nextLine();
++i;
}
i = 0;
while( i < words.length ) {
System.out.println(words[i]);
++i;
}
} catch( Exception e ) { }
}
}

2度目ですみません
tryの何処かでエラーが起こるみたいなのですが
解らないので教えてください。

言うまでも無いと思いますが
例外処理になるためコンソール画面には何も表示されません。
0710ぴゅあ2006/11/13(月) 23:41:43
>>683
>ツェラーの公式
そんなのあったのね

基準日設けて日数算出してました

ミニコンで遊ばせてもらってたときに
たぶん初めて実機上で作ったプログラム
0711デフォルトの名無しさん2006/11/13(月) 23:41:45
webサイトにIDとパスワードを送信して、ログインした先のページデータを
取得したいのですが、うまくいきません。
POST指定して、outputStream()メソッドを使ってるのですが
ログイン前のソースしか取得できません。
肝心なメソッド名等あれば教えて頂きたいのですが?
07127042006/11/13(月) 23:42:28
>>705
setter/getter(他の開発チームの担当)はこちらでは変更できないので、
リフレクションでやってみます。ありがとうございました。
0713ぴゅあ2006/11/13(月) 23:57:25
>>709
>言うまでも無いと思いますが
言うまでもないわけでもなく
catchして何もしていないからでは?
スタックトレースくらい採れるんじゃないかと思うけど。。。
(その前にSystem.out.printlnを鏤めるとかだって…)

エラーが判らないというより
エラーの扱い方が解らないということかも?
07147092006/11/14(火) 00:12:39
>>713
ありがとうございます。スタックトレースは知らなかったです。
知れ見たところ下記のエラーが出ました
java.lang.NullPointerException
at test2.main(test2.java:14)
0715デフォルトの名無しさん2006/11/14(火) 00:20:45
>>714
そのまんまだな
0716ぴゅあ2006/11/14(火) 00:21:25
>>714
コードの方は全然見てなかったけど…

エラーの内容が判れば後は追えますよね?(なんとなくでも)
あとは>>693が言ってくれていることを(も)参考にするとよいと思う
0717デフォルトの名無しさん2006/11/14(火) 00:30:48
Blackdown JAVAのスレを探してるんですが見つかりません><
誘導おながします。
07187092006/11/14(火) 00:31:15
みなさんありがとうございました。ちゃんと配列の確保しましたらできました!
0719デフォルトの名無しさん2006/11/14(火) 00:48:38
配列と聞いてふと調べてみたのですが配列の追加って出来ましたか?
0720デフォルトの名無しさん2006/11/14(火) 01:03:51
JAVAは死にました。今日からみなさんC#,NETを覚えてください。
もうあの頃の時代は戻ってきません。
残念でしたうきょきょきょ
ざまーみろSUNシネw
0721名無し2006/11/14(火) 01:12:01
初めて書き込みます。質問にお答えいただけるとありがたいです。

ArrayList alist = new ArrayList();
Hashtable<Integer,ArrayList> ht3 = new Hashtable<Integer,ArrayList>();
for(int i = 0; i < alist.size(); i++)
{
ht3_.put(i,alist.get(i));
}
※alistには値は入っています。

このように、HashtableにArrayListを追加していきたいのですが、
ht3_.put(i,alist.get(i));では当然ながら
<Integer,ArrayList>で宣言しているのに、<Integer,Object>となってしまい
エラーがでます。Hashtable<Integer,ArrayList>の部分は変えず、
ArrayListを壊さないでHashtableに格納できないでしょうか。
質問が分かりにくかったら申し訳ありません。
0722デフォルトの名無しさん2006/11/14(火) 01:16:25
>>721
JAVAは終わった言語だもう聞くなw
0723デフォルトの名無しさん2006/11/14(火) 01:25:49
ドザってどこいってもこんな香具師ばっかだな
MSはいつまで基地害を生産しつづけるんだろう
0724デフォルトの名無しさん2006/11/14(火) 01:26:57
JAVAってどこいってもこんな香具師ばっかだな
SUNはいつまで基地害を生産し続けるんだろう
0725デフォルトの名無しさん2006/11/14(火) 01:36:22
Java Communication APIのWindows版ってどこにあるの?
0726デフォルトの名無しさん2006/11/14(火) 01:36:55
JAVA閉店しましたー
もう聞くなよw
0727ぴゅあ2006/11/14(火) 01:46:18
>>719
できないですね

取り敢えずあちしが書いたものだけど>>31とか

ArrayListとかはオブジェクトでないと扱えないですけど
やってみたいと思うなら参考にしてint用とか書いてみるとか
(その前にクラスにするまでもなく試しにコードにしてみるとか)

>>721
alist.get(i)で取り出しているんだから
最早ArrayListではないですよ
0728デフォルトの名無しさん2006/11/14(火) 10:49:09
>>708
サーバ側の処理でJNIを使えば可能。

>>725
3.0ではSUNの実装はない。2.0の時はあった。
ttp://javashoplm.sun.com/ECom/docs/Welcome.jsp?StoreId=22&PartDetailId=7235-javacomm-2.0-spec-oth-JSpec&SiteId=JSC&TransactionId=noreg
場所からしてサポートする気ゼロっぽい。
(仮想マシンでもかまわんから)Linuxマシン用意した方が楽かも知れん。
0729デフォルトの名無しさん2006/11/14(火) 12:07:44
>>724
残念でした。
もうSunはJavaに対する影響力が非常に弱まっています。

M$製品にすがりついて哀れな戯言を言う人たちは
そのあたりをまったくわかっていないようですね。

0730デフォルトの名無しさん2006/11/14(火) 12:47:29
あの、質問なんですが、
IE上で動いているJavaアプレットをダウンロードしたいのです。

WEB上で公開されているJavaをパワーポイント等に貼り付けて
プレゼンとかに使いたいなーと思ってるんですけど、何かよい方法がある
のなら教えてもらえないでしょうか。

お願いします(ノ_≦)
0731デフォルトの名無しさん2006/11/14(火) 13:08:34
アプレットは単なるファイルだから、ソース見てURL直接指定して保存すればOK。
ただ、動作するには他のファイルやネットワーク上のリソースに依存してる可能性もあるから、
そのアプレットをローカル保存して動くかどうかはわからん。
パワポにアプレット貼り付けて動いたっけか? パワポでIEコンポーネントが使えるなら、HTMLに
アプレットを呼ぶように書いておけば動くかも。
0732 2006/11/14(火) 13:19:36
ファイルのコピーやディレクトリを再帰的にコピーするのは自分でStreamとか使ってプログラムを書かなくてはいけないの?
標準のライブラリで一発でできるのありますか?
0733デフォルトの名無しさん2006/11/14(火) 13:38:47
>>732
標準にはないけど、Jakarta Commons IOにこういうものがある。
ttp://jakarta.apache.org/commons/io/api-release/org/apache/commons/io/FileUtils.html#copyDirectory(java.io.File, java.io.File)
0734デフォルトの名無しさん2006/11/14(火) 13:47:50
>>731
ありがとうございます。
一応教えてもらったとおりソースからアプレット(.classの拡張子でした)をダウンロードしたつもりです。
しかし、おっしゃるように.classのそのファイルを実行することができません。
.classのファイルがアプレットの本体を意味しているのかどうかもわかりませんが、
このような状況ではやはりローカルな環境で動かすことは難しいのでしょうか?
0735デフォルトの名無しさん2006/11/14(火) 14:01:59
>>734
たぶんその*.classがアプレット本体だよ。
実行するにはHTML書いて(もしくは拾った先からコピって)アプレット呼び出せばOK。 ダブクリでは不可。
実行できても何かしらエラーが出るんなら、他に必要なモノがある可能性が高い。
0736 2006/11/14(火) 14:12:57
>>733
どうもありがとうごさいます。その他にもいろいろ楽できそうなライブラリですね。
0737デフォルトの名無しさん2006/11/14(火) 15:46:14
>>721
ArrayList<ArrayList> alist = new ArrayList<ArrayList>();
0738デフォルトの名無しさん2006/11/14(火) 16:14:25
>>734
ライセンスに留意しておくべきだよ。
プレゼンで使うのなら引用の範疇におさまるとは思うけど。
0739_2006/11/14(火) 18:36:41
>>738
うるせーよ。
0740教えてちゃん2006/11/14(火) 19:35:22
try {
Runtime rt = Runtime.getRuntime();
Process p = rt.exec("cat C:\\usr\\local\\aa.txt");
InputStream is = p.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
while ((result = br.readLine()) != null){
tx1.setText(result);
}
}

catch (IOException ex) {
ex.printStackTrace();
}
}
みたいな感じでcat C:\\usr\\local\\aa.txtを実行してその結果をresultに
格納されていくじゃないですか?で、例えばaa.txtには以下のような
中身だったとするじゃないですか?

hoge
hoge2
hoge3
hoge4 hoge5
hoge6 hoge7 hoge8

とかってときに、で
JTextField tx = new JTextField();
tx.setText(result);
ってすると最後の一行hoge6 hoge7 hoge8しか表示されないんですよ。
ちゃん全部表示するようにするにはどうすればいいのですか?
別にテキストじゃなくてもラベルでもなんでも全部表示できればOKっす!
swingで全部表示したいです
0741デフォルトの名無しさん2006/11/14(火) 20:35:03
>>740
JTextFieldのかわりにJTextAreaを使ってappendメソッドで文字列を追加する。
0742ぴゅあ2006/11/14(火) 20:36:30
>>740
>Runtime rt = Runtime.getRuntime();
>Process p = rt.exec("cat C:\\usr\\local\\aa.txt");
普通にテキストファイルとしてopenしないのはなんでだろ?と思ったけど
なんか理由があるんでしょう

>while ((result = br.readLine()) != null){
>tx1.setText(result);
>}
まずこれがどういう動きをしているか調べてみること

>>730
アプレット単体で動くものなら(PowerPointで…は判らないけど)動かすことはできるだろうけど
サーバーと通信してたりする作りだとかなり?難があるかも

それより
プレゼンとか…というのがどんなのか判らないけど
所有者側だけでなく"プレゼンする側の立場"としても
使っていいかどうかというのもあるだろうし
>ライセンスに留意しておくべきだよ。
>プレゼンで使うのなら引用の範疇におさまるとは思うけど。
は話の限りではあり得ないようなものの気がしたりする。。。
07437392006/11/14(火) 21:03:40
>>742
うるせーよ。
0744デフォルトの名無しさん2006/11/14(火) 22:26:25
HSQLDBを使ってるアプリで、特定のテーブルの内容だけ個別のファイルにバックアップ/リストアしたいと考えています。

1.CSVの読み書きするのって、いまだにhttp://www.wakhok.ac.jp/~tomoharu/Java/csv/が現役なんでしょうか?
Jakarta Common CSVってのがあるらしいですが、未だ正式リリースには至っていないようです

2.JDBC使ってCSVからテーブルにインポートするユーティリティってありませんかね?
 ・テーブル名は手で指定
 ・getMetaData使ってカラムの名前とデータ型を取得
 ・カラムの数だけ?を並べたPreparedStatementを用意しておく
 ・CSVの一行目をカラム名として、対応するデータ型でParseXXXしたあとsetXXX。
 ・例外でたら全部読み飛ばし。カラム数が合わなかったら即終了。あとは野となれ山となれ(笑

絶対誰かが考えていそうなんですが(^^;、ググっても見つかりませんでした。
何か御存知の方がいらっしゃれば御教授いただければ幸いです。
0745デフォルトの名無しさん2006/11/14(火) 22:49:21
DoJa3.5で↓のを実行したら「class がありません」って言われたのですが原因がわかりません
どなたか教えていただけませんか?

import com.nttdocomo.ui.*;
public class Test001 extends IApplication {
public void start() {
MyCanvas mycanvas = new MyCanvas();
mycanvas.setSoftLabel(Frame.SOFT_KEY_1,"入力");
mycanvas.setSoftLabel(Frame.SOFT_KEY_2,"end");
Display.setCurrent(mycanvas);
}
}
class MyCanvas extends Canvas {
int IMEText;
public void paint(Graphics g){
g.clearRect(0,0,getWidth(),getHeight());
String IMEText2 = int.toString(IMEText);
g.drawString(IMEText2,30,60);
}
public void processEvent(int type, int param){
if(type==Display.KEY_RELEASED_EVENT){
if(param==Display.KEY_SOFT1){
imeOn("",TextBox.DISPLAY_ANY,TextBox.NUMBER);
} else if(param==Display.KEY_SOFT2){
IApplication.getCurrentApp().terminate();
}
}
}
public void processIMEEvent(int type,int text){
if(type==IME_COMMITTED){IMEText=text; repaint();}
}
}
0746デフォルトの名無しさん2006/11/14(火) 22:56:43
>>744
HSQLDB なら、テーブルをTEXT TABLEとして作れば、テーブルを個別のCSVファイルとして保存できるよ。
詳しくはHSQLDBのドキュメントを読めばいい。
0747デフォルトの名無しさん2006/11/14(火) 22:57:58
>>683
亀レスですがありがとうございました。
凄く助かりました。
ツェラーの公式についてなんですが

youbi =(year + year/4 - year/100 + year/400 + ((13*mounth+8)/5) + day) % 7;
にしてday=1;でyearとmounthはユーザに入力を求めるようにしてみました。

その場合今年などは問題ないのですが
うるう年の2008年の2月を入力すると1日は金曜日のはずなのですが3の水曜と出てしまいます。
細かく検証したわけではないのですが2日の差がでてしまっています。

どこかおかしな点があれば教えていただけたら光栄です。
0748ぴゅあ2006/11/14(火) 23:23:01
>>747
もうちょっと調べてみるといいんでしょう

検証はやってないですが
1月と2月のときは12を加え、その分(1年分を越えることになるので)年を-1する
という条件が入るみたいですよ

何故できるかは
(year + year/4 - year/100 + year/400) %7については
365 % 7を計算してみれば判るだろうし
あとは残りの(((13*mounth+8)/5) + day) % 7を考えてみれば
(時間ないので見てみてない)
0749デフォルトの名無しさん2006/11/15(水) 00:24:16
System.in の型を見ると InputStream となっていますが、
java.io.InputStream は抽象クラスでインスタンスを
作れないんじゃないでしょうか?
0750デフォルトの名無しさん2006/11/15(水) 00:46:55
>>749
ヒント。
System.out.println(System.in.getClass().getName());
0751デフォルトの名無しさん2006/11/15(水) 01:02:32
LinuxやFreeBSDのコマンドラインからjavacでコンパイルすると
毎回時間がかかりますが、これを早くする方法はありますか?
0752デフォルトの名無しさん2006/11/15(水) 01:18:29
>>749
いい事に気がついたね。
じゃあ、次はインターフェースの使い方について勉強してみようか。
0753デフォルトの名無しさん2006/11/15(水) 01:24:13
>>751
Antを使うとタイムスタンプみてjavaがclassより古ければコンパイルしないようになるよ。
javacのコンパイルオプションについてたら便利なのに(俺が知らないだけかも)
0754デフォルトの名無しさん2006/11/15(水) 01:31:49
>>753
というか、JavaVMの起動が遅いんだと思うんですが。
javacをデーモンみたいに常駐させといて、要求を受けたら
コンパイルするようにするだけでいいように思うんですが、
そんな簡単にいかないんですかね?
■ このスレッドは過去ログ倉庫に格納されています