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

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

■ このスレッドは過去ログ倉庫に格納されています
00011NGNG
JAVA初心者の方はこちらのスレで質問をしましょう。そして誰か教えてあげてください。

なお、ソースを貼るときには、半角空白が消える仕様のため、タブ1つを全角空白2つに
置換してから投稿しましょう。雑誌や宿題などの疑問を質問するときは出展を明記した
ほうが解決が早いです。

関連情報は >>2-10 あたりにあります。 (一部 dat落ちやHTML化待ち)


JavaScriptの質問はWeb製作板へどうぞ。
web制作管理
http://pc.2ch.net/hp/

パソコンの基本操作に関しては、PC初心者板や、各OS板などで質問しましょう。
パソコン初心者@2ch掲示板
http://pc.2ch.net/pcqa/

上級者の方で教える技術が無い方は下記スレでダベりましょう。
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/


基本的にsage進行でおねがいします。
0710名前NGNG
JFileChooserみたいに、日付を選択するコンポーネントってありません?
0711ロンギヌスNGNG
>>710
JLISTでも使って作るべし。
0712if_tomorrow_comesNGNG
ロンギヌスさん、ありがとうございます。
えっと、自分で関数(javaではclass?ってことになるの?)を作るしかないということですか?
~で反転出来るかな、って思ったらやっぱり出来なかったし。

バイト型で、0か-1かをとった方が簡単かなぁ。
0713デフォルトの名無しさんNGNG
boolean flag = true;
flag = !flag;

ネタスレでしたか。
0714ロンギヌスNGNG
>>712
>>709 はクラスである必要はありません。
使いたいクラスに関数として存在していればいいです。
(自分はこんな関数集めてクラスとして利用していましたが)

javaではbooleanは独立したオブジェクトです。
(booleanに限らず)
VBみたいにバリアント型ではないので慣れないと使いまわすの
面倒かも知れません。

で、前もってbooleanとして宣言しておく必要があります。

面倒ならbyteでもいいですけど、この機会に色々と慣れておいた方が
いいかも知れません。
0715if_tomorrow_comesNGNG
>>713
ああっ、そんな書き方があったんですね。
~よりそっちを思いつくべきだった・・・
は、恥ずかしすぎる。
ま、まあ、聞くは一時の恥って言うよね・・・ねぇ。
0716デフォルトの名無しさんNGNG
boolean ってオブジェクトだったのか… シラナカターヨ
0717デフォルトの名無しさんNGNG
>>706
ImageFilterを使いたくないってこと?
0718デフォルトの名無しさんNGNG
http://pc3.2ch.net/test/read.cgi/tech/1022667056/693n
0719デフォルトの名無しさんNGNG
>>714
ネタならもうちょっと練ってから書き込め。面白くない。
マジなら一回 (略
0720デフォルトの名無しさんNGNG
jaxpはxmlshemaによる妥当性検証ってサポートしてますか?
0721デフォルトの名無しさんNGNG
apacheとtomcatの連携をさせようと思いとりあえず導入したんですが
ユーザディレクトリにJavaを実行させたい場合はどうするのか教えてください。
具体的には ~/以下はどこでもjspが扱える。任意のディレクトリに(例えば~/webapp/)に
WEB-INFを置いてservletを配置する。と言った具合です。
tomcat4.0.1を使用しててapacheにmod_webappモジュールを組み込んでいます。
0722デフォルトの名無しさんNGNG
グラフ書いてるんだけど縦軸と横軸に数値を入れたいんだよね
たとえばY=X+1とか式あったらy軸との交点は1って表示させたい
あとほかにもある程度軸に数値いれたいんですができるでしょうか?
0723デフォルトの名無しさんNGNG
722>
できます
0724デフォルトの名無しさんNGNG
>>723
どうかやり方教えてもらえませんでしょうか?
よろしくお願いします
0725デフォルトの名無しさんNGNG
JTableをScrollPaneにadd()して、スクロール可能にすることができますよね。
スクロールをしていって、「一番端まで来た!」ということを知る方法は
ないでしょうか? 何かイベントが発生するとか・・?

要は、端っこまで来たらテーブルの行を追加したいだけなんですけど・・。
ご存じの方がいたら教えてください。
0726Rina ◆tI333vNE NGNG
>>720
XML SchemaのはJAXPじゃできないんじゃないかな、今のところ(適当).
そもそもXML Schema自体がキチンとした仕様がまだきまってなかった
ように思うんだけど….
うちの会社はRelaxerっての使ってる. XML Schemaと違って
実装が結構進んでるんし, 何より開発者が日本人だからドキュメント多いよ.
興味湧いたらぐぐってみて. XML Schemaは知らん. あんなの
誰も使わないと思うんだが…仕様が複雑すぎてRinaたんには無理(´-`)ノ
0727Rina ◆tI333vNE NGNG
>>722
でもそういう場合ってさぁ, 自分で書いちゃえばいいのでは?

>>723
それって専用のライブラリでも出てるの? 出てるんなら私にもおせーて.
0728デフォルトの名無しさんNGNG
今日、Javaのプログラムを始めた初心者なんですが、MS-DOSプロンプト上で下記のメッセージが表示され、プログラムが実行できません。なにが原因かサッパリ…助けていただけないでしょうか…。
Exception in thread "main" java.lang.NoClassDefFoundError: Sample1
0729Rina ◆tI333vNE NGNG
>>725
JScrollPane#getHorizontalScrollBar(), もしくは
JScrollPane#getVerticalScrollBar()でJScrollBarを得る.
で, それにAdjustmentListenerを追加すると,スクロールバーが
動いた時にAdjustmentListener#adjustmentChangedが
コールされるから, それ使うとうまくいく…と思う. 他に方法は知らない.
0730Rina ◆tI333vNE NGNG
>>728
それはSample1ってクラスがないよーって言われてるんじゃないかな?
CLASSPATHが通ってないとかだと思う.
0731Rina ◆tI333vNE NGNG
>>721
http://www.itboost.co.jp/jserv/jserv_05.php
分からんかったから自分で調べた人>自分.
0732デフォルトの名無しさんNGNG
>>730
回答ありがとう。でも全然解決できそうも無い。テキストどおりやってるんだけどなー。何とか試行錯誤してみます。
0733デフォルトの名無しさんNGNG
>>722
横向き文字列だけなら Graphics.drawString() を使って描けば良い。

角度の付いた文字列を使いたいなら
\demo\jfc\Java2D\src\java2d\demos\Fonts\Tree.java なんかを参考に
AffineTransform と TextLayout を使って文字を描く(と思われる)。
デモを見ておくのも重要。出来る事の一通りとそのやり方はそれで分かる。
少なくとも画面描画するアプリを作るなら、事前に java2Demo.jar は触って
みるべき。


ただ、少なくとも後者は初心者向きではないと思われる。
アフィン変換って何?という人間だと、ググってすこし勉強したほうが良いかも。
たぶん概略だけで良いと思う。
概略も知らないと AffineTransform の説明文で挫折するかも知れないから。
0734Rina ◆tI333vNE NGNG
その課題に使うファイルがいくつあるのか分からんのだが,
どういうファイル構成になってるの?
・ファイル数
  一つのファイル or 複数のファイル
・必要なファイルの場所
  カレントディレクトリだけ
or カレント以外のディレクトリ
or 複数のディレクトリに

…教えてもらえればキチンと答えれると思うよ.
0735Rina ◆tI333vNE NGNG
>>733
それならできる.
てっきり数式放りこんだらグラフが書かれたCanvasクラスを返して
くれたりするライブラリがあるのかと思ったよw
0736732NGNG
>>734
やっぱり自分じゃムリでした。ファイルはひとつ。必要なファイルもカレントディレクトリだけ。パスの通し方もテキストの通りにやってみた。なのにナゼ…。先は険しいなあ。
0737デフォルトの名無しさんNGNG
( ´Д`)ハァハァRinaタン・・・・
0738デフォルトの名無しさんNGNG
set CLASSPATH=%CLASSPATH%;.
0739Rina ◆tI333vNE NGNG
ブス専ですか?w

ほうほう, DOSだと環境変数は%%で括るのか. 覚えておこう.
0740デフォルトの名無しさんNGNG
配列をつくって、そこに乱数を入れました。

double [] array = new double[s];//sは最初に与える
for(int j=0;j<s;j++){
array[j]=Math.random();
}

ここで、この次に、このs個の配列に入っている値の和を求めたいです。

array[0]+array[1]+...+array[s-1]+array[s]はどうやって計算すれば
いいんでしょうか、足し算するのは知っているのですが、プログラムは
どうやって書けばいいのでしょうか?教えてください。お願いします。
0741デフォルトの名無しさんNGNG
>>740
乱数代入しつつ足していけばいいじゃん
0742デフォルトの名無しさんNGNG
>>741

740です。ありがとうございます。
乱数を代入しつつ足していくとはどうかけばいいんでしょうか。
プログラミング厨房なので、もしよろしければ教えてください。

自分は、\sum_{j=0}^s array[j]を考えていました。
エクセルとかについているsumみたいな、和を求める関数というのを
書きたいのですが、考え方が根本的におかしいでしょうか?
0743デフォルトの名無しさんNGNG
double sum = 0.0;
for(int i=0; i<array.length; i++){
  sum += array[i];
}
0744デフォルトの名無しさんNGNG
>>743
ものすごく助かりました。+=という書き方、はい!ありました!!
やっぱり本でよんだだけの知識はダメですね。大感謝です。
すこし生きた知識がふえました。
0745デフォルトの名無しさんNGNG
>>688
> 商用 Unix

商用 Unix ?
0746デフォルトの名無しさんNGNG
>>698
ちがうぞ おい

>>701
圧縮するとバックアップファイルが壊れたときに全部取り出せなくなるので、アーカイブのみで圧縮はしない
という話もあったな。

>>708
大文字って定数の場合ですよね?

>>732
もっと自分の状況とかいろいろ説明すれば、率直な回答もできるが、ほとんど情報がないので、だれでも
適切な回答をしていないと思うよ。

0747デフォルトの名無しさんNGNG
2次元配列の場合、配列の長さというのは、どっちの長さでしょうか?
行でしょうか?列でしょうか?
array[][]のarray.lengthはどっちの長さを指定しているのでしょうか?
行の長さ、列の長さを指定したい場合、それぞれどう書けばいいでしょうか?
0748デフォルトの名無しさんNGNG
double[] array = new double[2][3];
System.out.println(array.length);
System.out.println(array[0].length);
0749デフォルトの名無しさんNGNG
>>747
System.out.println(array.length);
一発解決
0750名無しさんNGNG
>>747
2次元配列というものは存在しない。あるのは配列内の配列。
0751デフォルトの名無しさんNGNG
class arraylength {
public static void main(String args[])
{
    double[][] array = new double[2][3];
 System.out.println(array.length);
 System.out.println(array[0].length);
}
}
をやってみますた。array.lengthだと前のほうに入っている
値がでるのですね。つまりここでは2ですね。
array[0].lengthで後ろの3ですね。なるほど!
ありがとうございました。
0752デフォルトの名無しさんNGNG
>>750
ふむ、なるほど、だからarray[0].lengthという書き方になるのですね(想像)
理解が深まりすた。皆様いろいろありがとうございます。
0753デフォルトの名無しさんNGNG
>>752
そういうこと。array[0] と array[1] では配列の長さ違うかも知れない。

double[][] array = new double[2][];
array[0] = new double[5];
array[1] = new double[10];
System.out.println(array[0].length);
System.out.println(array[1].length);
0754デフォルトの名無しさんNGNG
class arraylength2 {
public static void main(String args[])
{
double[][] array = new double[2][];
array[0] = new double[5];
array[1] = new double[10];
System.out.println(array[0].length);
System.out.println(array[1].length);
}
}
をやってみますた。5と10がでました。
かなり混乱してきますた。これはarray[0]とarray[1]の長さでしか?
つまり、array[2][]で配列が2本用意されて、そのarray1本ずつに対して、
さらにarrayが一本ずつ、array[0]には5個はいる配列と、だから配列の配列。

つまり配列は行列ではないのですね!!すごい発見をした気分。
平面ではなくて立体ですね!!ビルが2本、5階建てのビル、10階建てのビル
ですね!!
0755デフォルトの名無しさんNGNG
>>722
どうもありがとうございました。
参考にしていろいろやってみます。

Rinaさんもありがとございました。
0756if_tomorrow_comesNGNG
えっと、またバカみたいな質問ですけど・・・

javaで、CのatoiやVBのvalに相当する命令を出すには、
どのように書けば良いのでしょうか。
0757デフォルトの名無しさんNGNG
String num = "100";
int i = Integer.parseInt(num);
0758デフォルトの名無しさんNGNG
>>756みたいな人は
まず
>>2-6あたりのリンクを
読む
0759if_tomorrow_comesNGNG
757さん
出来ました。お手数かけてすいませんでした。

758さん
そうですね。
この調子で質問してたら、キリが無いですよね。
一応、javaのページは軽く目を通したんですけど、もっと詳しく勉強してから
それでも分からない時に質問したいと思います。
0760デフォルトの名無しさんNGNG
JavaのGUIプログラムからFortranの計算プログラムを実行させるにはどのようにすれば良いのですか?
0761Rina ◆tI333vNE NGNG
これじゃ駄目かな?
http://userweb.elec.gla.ac.uk/i/iainw/jni/
0762Rina ◆tI333vNE NGNG
http://donald.phast.umass.edu/~fardal/jfpage/javafortran.shtml
あとここ.
0763デフォルトの名無しさんNGNG
Rinaたん萌え〜
0764725NGNG
>>729
アドバイスありがとうございます。

すいません、よかったらもう一つ教えてください。
JTableで行を選択するとき、デフォルトの設定だと、
 1)複数行を選択してマウスから指を離す。
 2)選択された複数行のうちの1行をマウスでクリックする。
という操作をすると他の行の選択が解除されてしまいますよね。

単に、複数行をドラッグ&ドロップするアプリを作りたいだけなんですが・・。
複数行を選択してそのままドラッグ、だとうまくいきますが、ちょっと
使いにくいので、一度複数行を選択してマウスを離してから再びドラッグする、
ということはできないものかと考えています。

マウスイベントを拾ってシコシコやるしかないでしょうかねえ。
もし簡単なやり方をご存知でしたらアドバイスお願いします。
0765デフォルトの名無しさんNGNG
ファイルを読むとき

BufferedReader reader = new BufferedReader(new FileReader("Filename"));
String line = reader.readLine();

で読むのはわかったのですが、

BufferedWriter writer = new BufferedWriter(new FileWriter("Filename"));

で書く場合にはどうすればよいのでしょう?

PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter("Filename")));

書くときはこうするべきなんですか?
0766デフォルトの名無しさんNGNG
>>765
すべきということはない。PrintWriter を使うと少々のオーバーヘッドがかかるし、
出力エラーが発生した場合ちゃんと通知してほしい、行末シーケンス (LF/CRLF) に
システムデフォルトのコードを使ってほしくない場合などは使わないだろう。要は
楽なコードを書きたいかどうかなんだが。
0767デフォルトの名無しさんNGNG
>764
自前の ListSelectionModel を作る
0768765NGNG
>>766
その場合は、どうやって書き込むのでしょうか?

PrintWriter の場合は、 writer.println(writer); で書きますけど、BufferedWriterの場合の書き方がわかりません。

0769デフォルトの名無しさんNGNG
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("hoge.txt")));
out.println("hello, world");
out.close();

上記は↓のコードとほぼ等価:

Writer out = new BufferedWriter(new FileWriter("hoge.txt"));
try{
  out.write("hello, world");
  out.write(System.getProperty("line.separator"));
} catch(IOException ex){/* */}
out.close();

ってか、PrintWriter クラスのソースを読め。
0770765NGNG
hoge.write を使うんですね。ありがとうございます。

> ってか、PrintWriter クラスのソースを読め。

BufferedWriter のほう一生懸命読んでいました。
0771デフォルトの名無しさんNGNG
>>769
あっ BufferedWriter 型じゃなくて Writer 型なんですね。
0772デフォルトの名無しさんNGNG
> } catch(IOException ex){/* */}

これは良くないなぁ・・・
0773デフォルトの名無しさんNGNG
>>772
ex.printStackTrace() ぐらい呼べという意味?
それとも、IOException 以外の例外をトラップできないから Exception で
受けるべきという意味?
はっきりと書かないと意味が通じないよ。
0774デフォルトの名無しさんNGNG
Fortranの入力が見にくいので、JavaでGUI形式の入力を作成しようと思っています。
その際にFortranとJavaを連動させるにはどしたら良いのですか??
Visual Fortran を使っています。
0775デフォルトの名無しさんNGNG
>>772
PrintWriter は内部で IOException 発生しても何も言わないでしょ。
その意味も込めて {/* */} にしたんだってば。
0776デフォルトの名無しさんNGNG
と言ってみたが初心者に行間読めっていうのも酷な話だな。
0777Rina ◆tI333vNE NGNG
printStackTrace()を呼ばないんなら,

try {
hogehoge();
} catch (FooException e) {
// do nothing.
}

…とかの方がよくない?
もしくは,

try {
hogehoge();
} catch (FooException e) {
throw new InternalError(e.toString());
}
0778デフォルトの名無しさんNGNG
何か話が脱線気味ですが、当初の話は PrintWriter と普通の Writer の動作特性の
違いです。catch した例外の取り扱いこうあるべきってのはまた別の話なのでよろしこ。
0779Rina ◆tI333vNE NGNG
>>764
亀レスすまそ.
えっと結論から言うと,JTableあんまし使ったことないから分からんw
力になれなくて申し訳ない….
APIドキュメント見てみても使えそうなメソッドとかがなかったら, 自前で
イベント拾ってやるしかないんじゃないかなぁ….

>>763
どこら辺に萌え? 教えて,今後の参考にするからw
0780デフォルトの名無しさんNGNG
>>776っていうよね 初心者が初心者を隠すときって
0781デフォルトの名無しさんNGNG
>>773
>>775
なんか、必死だね。

772がなにを言いたいかわからないが、私はコメントの使い方は良いとは思わない。
0782デフォルトの名無しさんNGNG
>>781
たしかに。
0783デフォルトの名無しさんNGNG
初心者と言われて顔を真っ赤にしている人がいらっしゃいます。
0784デフォルトの名無しさんNGNG
>>781
頭悪そうだなおまえ。
0785765NGNG
荒れているところすいませんが

>>769
Writer out = new BufferedWriter(new FileWriter("hoge.txt"));
が try からはずれておりますけど、なぜ、tryの中にいれて例外を受け取らないのでしょうか?
それはプログラムの作り方によって変えればいいってだけですか?

ファイルが作れないこともあると思うので、中に入れたほうがいいんですよね?
入れないほうがいい理由があったら知りたいです。
0786デフォルトの名無しさんNGNG
>>784
逆ギレしてないで黙ってなさい。
0787名前NGNG
フレームを画面中心にするにはどうすればよい?
もしくは、画面サイズを取得する方法を教えて頂戴
0788デフォルトの名無しさんNGNG
>>785
入れたほうが良いって言うか、ちゃんと書くなら普通こんな感じ:

Writer out = null;
try{
  out = new BufferedWriter(new FileWriter("hoge.txt"));
  // …
} catch(IOException ex){
  // エラー処理
} finally {
  try{ if(out != null) out.close(); }catch(IOException ex){/* */}
}

メソッドが IOException をスローすると宣言されていても、最後の finally で
close する必要があるのでどの道 try-catch は必要。
0789デフォルトの名無しさんNGNG
>>787 それ、過去スレで答えたなぁ。
ttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/awt/Window.html#setLocationRelativeTo(java.awt.Component)
0790デフォルトの名無しさんNGNG
>>871
コメントの使い方が気に食わなかったのか?
C/C++ から来た人なら DO NOTHING の意味で使ってる人結構いると思うけど。
0791765NGNG
>>788
ありがとうございます。
宣言は try の外がいいんですね。勉強になります。

0792デフォルトの名無しさんNGNG
>>791
そう、ファイルクローズの保証のために finally の中で close() を
呼び出したいから、try ブロックの外で宣言しておかないとまずい。
0793名前NGNG
>>789
ありがとSUN

0794デフォルトの名無しさんNGNG
public class Hoge {/* */}
0795sageNGNG
どーも
0796デフォルトの名無しさんNGNG
>>779
2ch語使わないともっと萌えます。
0797デフォルトの名無しさんNGNG
765って普通?よく見るコードではあるけど、頭悪そうで嫌い。
try {
 BufferedWriter out = new BufferedWriter(new FileWriter("hoge.txt"));
 try {
  out.write("hoge");
 } finally {
  out.close();
 }
} catch (IOException e) {
 //エラー処理
 e.printStackTrace();
}
ぐらいしないの?
ちゃんと考えないとネストが深くなりすぎるが。
0798デフォルトの名無しさんNGNG
↑間違えた。788ね。
0799デフォルトの名無しさんNGNG
>>797
好き好き。ってか無駄に try 重ねると白痴に見える。
0800デフォルトの名無しさんNGNG
全く無駄ではないが?788にしたって結局2回tryしてるしな。
0801デフォルトの名無しさんNGNG
アタマが悪い人は放置しなさい。
0802765NGNG
>>792
再びありがとうございます。
0803765NGNG
>>799
うん、その点だけ>>788は気になりますね。
0804デフォルトの名無しさんNGNG
>>801
誰がアタマが悪い人なの? あなたの中で・・・ なんかあなたの考え間違っていそう。
0805732NGNG
すいません、質問の仕方が悪かったんですね。 
昨日、Javaを初心者用テキストで勉強し始めて、JDKをC:\jdk1.3のフォルダにインストール。
パスを通すということでC:のAutoexec.batにPATH C:\jdk1.3\bin;%PATH%と入力。
MS−DOSプロンプトで2数の和を求めるプログラムSample1を入力。
コンパイルして、.CLASSファイルが作られたことを確認。
しかしJavaコマンドを実行すると、
Exception in thread "main" java.lang.NoClassDefFoundError: Sample1
とエラーがでるのです。何度テキストを見ても間違った操作をしているようには思えないのですが…。
どなたか対応策を教えていただけないでしょうか。
0806デフォルトの名無しさんNGNG
>>804
必死だな(藁
0807デフォルトの名無しさんNGNG
>>797
out.write() で例外が発生して、その影響で out.close() からも例外が
発生した場合、障害の大本の原因であろう out.write() 側の例外情報が
報告されないな、そのコードだと。JDBC の Connection 関係で同じよう
なコード書いてくれるなよ。
0808デフォルトの名無しさんNGNG
>>805
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/NoClassDefFoundError.html
0809765NGNG
>>805
> パスを通すということでC:のAutoexec.batにPATH C:\jdk1.3\bin;%PATH%と入力。

OSはなにつかってます? OSによってパスを通す方法が異なりますよ。

> Exception in thread "main" java.lang.NoClassDefFoundError: Sample1

実行するときは、クラスのあるディレクトリで

java Sample1

ですよね?




■ このスレッドは過去ログ倉庫に格納されています