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

このエントリーをはてなブックマークに追加
さーじゃんじゃん質問しよう。
お前らとりあえずがんがってください
そして誰か教えてください。

関連スレ
初心者無視! Java相談室 その9
http://pc.2ch.net/test/read.cgi/tech/1021555964/
調べようとする優秀な奴は↑へどうぞ。

2
関連スレくらいリンク貼れや!!
だれかおしえろよヽ(`Д´)ノウワァァン


はじめてJavaを学ぶにあたって(過去にプログラム経験無し)
どの本を買うのが一番わかりやすい?
またわかりやすいサイトってないですか?
すんません。マジな質問です。
俺は少しいびつな勉強をさせられたせいか、文字ベースのJavaはだいたいわかってます。
がGUIはまったくできません。

最近、JDBCを文字ベースレベルで使えるようになりました。
さて、GUIをかぶせようとしたら、あんまりうまく動かないようなので、ショックを受けているのです。
俺自身まだGUIプログラムは書けないので、どこがどうと言えないのですが、サンプルを動かすと
妙にカクカクしているのです。スクロールするたびにチラチラ、チラチラ。
これは、サンプルが悪いのでしょうか?それとも、JavaのGUIってこんなものなのでしょうか?
SwingでDefault Focusを
当てるにはどうしたらよいのですか?
8アマゾンリンク実験中:02/05/20 00:03
http://www.amazon.co.jp/exec/obidos/redirect?tag=omotinokanris-22&path=tg/browse/-/515820

アマゾンで、Javaのカテゴリーの中で、売れている順番でソートしてみました。
この中で、わかりやすそうなものを選べばいいと思います。
>>8
ありがとう!
8はなんていう本で勉強しました?
マジで質問なんですけど
プログラムを書こうとする時
どうゆう順で書いてるんですか?
まずクラスをいくつにするかとか変数をいつ宣言するかとか?

たとえば10このオブジェクトを作成して、それらを
配列に格納するアプリケーション(格納するオブジェクトはランダム)
だったら順番的に上から書いていけます?
DQNな質問すみません。
118:02/05/20 00:19
私は、
Learn to Program with Java
http://www.amazon.co.jp/exec/obidos/ASIN/0072131896/omotinokanris-22



Java2 a beginner's guide
http://www.amazon.co.jp/exec/obidos/ASIN/0072127422/omotinokanris-22

という2冊で勉強中です。どちらも一長一短です。

本当は英語の本を紹介しようと思ったのですが、ここは日本語の掲示板なので、
>>8には日本語のカテゴリーからもってきたリンクを張りました。
>>11
なるほど、英語の本はむりっぽいですw。
いま独習Javaという本で勉強してるんですけど
書き方が難しい?のでインターフェイスとパッケージの
考え方で詰まってます。ちょっと本屋で見てみます
まじありがとうございました。
>>7
requestFocus()
14デフォルトの名無しさん:02/05/20 00:33
JBuilderって分割表示はできないのでしょうか?

よくプログラムを書くときに、宣言部分などを上半分に表示しながら
下半分で入力などを行うのです。秀丸にはこの機能があるのですが、
JBuilder6には見当たりません。

また、ホイールマウスのホイールの回転で上下に移動できないのが
辛いです。

この問題を解決した人はおられませんか?
15デフォルトの名無しさん:02/05/20 00:35
>>14
1.(分割表示)入力補完機能があるIDEで、分割が必要か?
 第一、一番上に宣言されているとも限らんが・・・
2.(マウス)JDK1.4にするか、それ用のプラグインをIBMから取ってくる。
>>7
一番最初にそのコンポーネントを追加。
>>6
文字ベースで勉強するのはいびつでも何でもないよ。
個人的にはすぐにGUIを教える本は信用してないし。
それよりも文法をきっちり勉強する方が大事。

で、GUIがちらちらするのは、マシンがのろいか、
ビデオカードがまずいか、コードの書き方がまずいか、
やっぱりJavaのGUIが腐ってるかのどれかです。
僕のアプリはそこそこ普通に使えるけど。
18デフォルトの名無しさん:02/05/20 01:10
>>6
AWTじゃなくSwing使いなさい
AWTはチラチラする
こっちの1はエロくないな。
>>17-18 嘘教えるなよ。かわいそうに。
マジ質問なんだけど
パネルの上に3つのボタン、スクロールバーをつけて
ボタンを押せば対応した図形が出て
スクロールバーを変化させれば背景色が変る
アプレットを作ってみたんだけど、
スクロールバーを変化させると
図形が消えるんだけど図形を残したまま
背景色を変化させるには?
2218:02/05/20 02:02
>>20
あ?AWTがちらちらするのは事実だが?
もしかして、AWTのほうが動作軽いとか思ってる?
>>22
は? Swing を軽量コンポーネントとか言ってる人?
24デフォルトの名無しさん:02/05/20 02:05
>スクロールバーを変化させると
コレの意味がわかんないんですが
「スクロールバーを動かすと」ってこと?
RGBImageFilter (だっけ?) 実装して repaint
2618:02/05/20 02:06
>>23
あのさぁー
AWTがちらつくっていうことしらないんですかぁ?
>>26
お前の作りがヘタレすぎ
>>24
そうです。

>>25
??やべーむじゅい
29デフォルトの名無しさん:02/05/20 02:09
>>21

プログラム見ないとなんとも言えないが、
たぶん、背景色を書くときに、図形を消して(上書き)しまっているのでは?

図形を変えたときも、背景色を変えたときも、

・背景を描く。
・図形を書く。

の順番で描画するようになってる?
スクロールバー移動のイベント拾って setBackground, repaint のコンボ
3118:02/05/20 02:11
>>27
やっぱり、知らないじゃん
軽い軽くないとちらつきは関係ない。
double bufferで検索しろヘタレども。
ヘタレがチラつくスレはココですか?
>>29-30
sbいじった時もrepaint
すればいいのか。わかった気が汁。
もちっといじってみます。どうもです
3518:02/05/20 02:17
>>32
軽い軽くないとちらつきは関係あるとは
俺は一言も言ってないが?
わけわからんやつ(27,23,とその前)
に対して「おまえはどうせ、よくいる『AWTはSwingより軽い』と思っているやつか?」
の意味で言った
>>35
AWT使うと必ずちらつくわけじゃない。
ダブルバッファで検索しろヘタレ。
377:02/05/20 02:21
>>13 >>16
ありがとうございます。
ダブルバッファリングも出来ん奴に軽い言われとる Swing って一体…
3918:02/05/20 02:24
>>36
はぁ?
TextAreaちらつくの知らないやつは引っ込んでろ
ダブルバッファでどうやってTextAreaのちらつき抑えるんだよ
もしかして、ちらつきを描画コンポのことだと思っているのだろうか?
>>39
別にちらつかないけど…
JDK1.1くらいを使ってるとか?
>>39
AWTはプラットフォームごとのコンポーネントを使うから
動作がプラットフォームごとに違うよ。

ちらつくってどのプラットフォームの話?Motif?
42デフォルトの名無しさん:02/05/20 02:27
>>39
TextAreaちらついたことありませんが何か?
>>6がTextAreaのことだとなぜ思うんだろう。
4418:02/05/20 02:31
>>43
[スクロールするたびにチラチラ、チラチラ]
この部分読んだら、TextAreaだってわかるよ

確信した。>>39 の作りがヘタレ。
4618:02/05/20 02:34
確信した。>>45は経験不足。
>>44
ふーむ。ScrollPaneとかScrollBar+Panelという可能性はないんだろうか。
48デフォルトの名無しさん:02/05/20 02:37
ま、結論としては>>18はネタと言うことで。

おい。もう初心者を惑わすようなネタはやめろよ >>18
まーまー和やかに逝きましょう。

そこで質問なんですけど。
インターフェイスっていうのは
メソッドを実装しないクラスってことでいーんでしょうか?

もし違ったら誰か解説お願いします。
setEnabled() ちゃんと使ってる? つかってねーんだろーな >>18
51デフォルトの名無しさん:02/05/20 02:39
>>47
とりあえず>>6の言っている「サンプル」のソース
がどういうものか、わからないと・・・
>>49
そう「呼び出し規約」だけを定義したクラス (?)。
5347:02/05/20 02:40
>>51
そう。TextAreaと断言はできないよね。
>>50
setEnabled() ?
コレで何か変わるんですか?
マジです。煽りじゃないです。
18 はダブルバッファをぐぐってます。しばらくお待ちください。
ある程度C++を覚えたのでJAVAを始めようかと思っているのですが、
C++で使えてJAVAで使えないもの、逆にJAVAで使えてC++に無いものがあったら
教えて頂けませんか?
>>56
多すぎる。
>>49
abstractなクラスはどうなるんだろう・・・
>>56
具体的に聞いてくれ
これは出来ないんですか?とか
これは出来ますか?とか
インターフェースはクラスじゃねーよ。
>>49
インターフェイスってのは、クラスの型だけを定義した物と考えるべし。
型ってのは、外身と言い換えてもいいよ。

【C++ で使えて Java で使えないもの】
多重継承、inline 関数、プリプロセッサディレクティブ (マクロ)、
演算子オーバーロード、インラインアセンブリ、デストラクタ起動の
明示的なタイミング、テンプレート機能 (JDK1.5で対応?)、明示的な
ヒープの割り当てと開放

【Java で使えて C++ で使えないもの】(最近使ってないから間違ってるかも)
synchronized 構文、finally ブロック、クラス名からインスタンスの生成、
安全なダウンキャスト、オブジェクトシリアライゼイション、ラベル付き
ブロック抜け、notify/wait のシグナル

こんな感じ? ライブラリレベルになるとたくさんある。
ちなみに friend クラスや多重継承と同じことは inner クラス使えば
大抵出来る。
>>62
>明示的なヒープの割り当てと開放

使えないって言うとまるで欠点みたいに聞こえるが。

逆にC++で使えないものにGCが入ってないな。
64デフォルトの名無しさん:02/05/20 02:59
祭りの予感ワショーイ
>>63
そうだな。思いついたままに書いたから。
C++に無いthread関係ってsynchronized, wait, notifyだけ?
そもそもC++に標準のthread機能ってあったっけ?
レスありがとうございます。
今、思いつくところでは
ポインタが無い代わりに参照みたいなものを使うのか?
テンプレートはあるのか?多重定義はあるのか?
メモリの割り当て、解放はどうするのか?
ストリング型はあるのか?
ってところです。
JAVAは知識もろくにないので、かなり馬鹿げた質問かもしれませんが
皆さん、よろしくお願いします。
>>66
ANSI C++ レベルの標準でスレッドという概念は無い。
POSIX とかあるけど、printf 等の標準関数はスレッドセーフでは
なかった (今のは知らん)。
69初心者 ◆3UmwhFqY :02/05/20 03:04
>>61
なるほど。インターフェイスって
おかなくてもできるような気がするのは
漏れだけですか?別のクラスに
詰め込んじゃえば・・いってることDQNですか?
Javaでポインタを数値として演算することはできないし、
配列の型がポインタだったりもしないが、
Javaの参照はC++の「インスタンスへのポインタ」とほぼ
同じだと思って良い。
>>69
まぁ Java やってればいずれポリモーフィズムの概念を理解しなきゃ
いけない時がやってくる。そんときになんないとインターフェースの
存在価値なんて分からないかも。

# 類似で未実装部分をでっち上げる時にも使うが。
>>69
インターフェースはクラスより重要な概念だ。
ある程度大きなプログラムを設計したら、まずインターフェースが決まる。
クラスの内部表現はその後。

実装の継承は、最後にやる一種の最適化だと思ってよい。
あんまり重視しない方が良い。
73デフォルトの名無しさん:02/05/20 03:08
>>69
利点その1:
大規模開発になると、クラスやメソッドの機能は決まっているけど、実装は
まだ出来ていない開発フェーズっていうのはあるのよ。そういうときに、
インターフェイスだけ定義しておいて実装を別の人に投げたりできるのよ。

利点その2:
ポリモルフィズムの基本概念です。こっちはOOPを勉強してくれ。
POSIX pthreadはC++じゃ使えないんじゃないかな…
だって、tryやthrowがどうなるか、どこにも定義ないでしょ。
処理系作成者も考慮してないと思う。
むしろ本読んだだけでインターフェースの利点を理解できるのは
よっぽどの C++ の経験者か、宗教関係者かのどっちか。
76デフォルトの名無しさん:02/05/20 03:12
>>74
別に、使うだけならできるんじゃないの。
綺麗にラップしてあげないと管理が大変そうだけど。
77初心者 ◆3UmwhFqY :02/05/20 03:12
>71-73
レスありがとうございます。
つまり初心者でも作れるようなプログラムなら
インタフェイスを使わなくても強引にできるけど
大きなプログラムになれば重要になってくるって
ことっすね。ゆっくり勉強していきます

ホンと勉強になるYO!
C++と一番違うのはライブラリだろ。
GUI, マルチメディア, セキュリティなどがJavaだと標準で入っている。
79デフォルトの名無しさん:02/05/20 03:17
>>78
「Java」と言う言葉が
Java言語仕様、Java実行環境、APIライブラリ
の全てを指すのに対して、C++っていうのは
C++の言語仕様(とコンパイラ)だけだからねえ。
>>76
いやー難しいんじゃねえか?
例えば、STLってちゃんと同時アクセスをロックしてくれる?
スレッドの中でcatchしてない例外投げたら何が起る?
81デフォルトの名無しさん:02/05/20 03:18
で正直
JavaとC++将来があるのはどっちよ?
>>79
で、ストリームは言語仕様?コンパイラ?
>>79
STLはANSI/ISO規格だぞ。
>>81
学校でどっち教えてるところが多いか見れば明らか。
授業でC++教えてるところは正直いってしらん。
85 :02/05/20 03:28
【google 先生曰く】
授業 課題 Java ⇒ 5,720 件
授業 課題 C++ ⇒ 495 件
まあ学校で教えてるからってのは必ずしも将来に直結しないが、
現時点での需要としてはJavaということだろうね。
Java覚えとけば、とりあえず画面回りで困ることはないな。
88デフォルトの名無しさん:02/05/20 03:36
画面のキャプチャーソフトJavaで書きたいんですが
どうすれば良いですか?
89 :02/05/20 03:37
JNI しかない。
さっそく画面回りで困った(w
91 :02/05/20 03:39
>>87-91 ジサクジエン (・∀・) デシタ!!
>>90
きみ、屁理屈ばっかりだね
画面回りで困ることは無いって事はなかろーが、少なくとも MFC や
Motif なんかに振り回される事は少なくなるな。
AWTのレイアウタは最悪でしょう。振り回され度No1。
>>92
やり込められて負け惜しんでる人ハケーン!
> レイアウタ
あんたどこの人?
俺的振り回され度
MFC >>>>>>>>>>>>>>>>>>>>>>>>>>> Motif >> AWT
98デフォルトの名無しさん:02/05/20 03:53
>>94
そうか?コーディングでレイアウトを決定できるのは便利だと思うが。
へんな仕様のリソースファイル書かせられるよりまし。
>>98
今はGUIビルダでやるでしょ。
いずれにせよ、layoutManagerはマニュアルちょっと読めば使える。

VBみたいに、リサイズ全く考慮しない固定レイアウトしか知らないと
使いにくいと思うのかも。
>>27 これはどういうことでしょうか?
コンストラクタの詳細
JPanel

public JPanel(LayoutManager layout,
boolean isDoubleBuffered)

指定されたレイアウトマネージャおよびバッファリング方式で新しい JPanel を作成します。

パラメータ:
layout - 使用する LayoutManagerisDoubleBuffered - boolean 値。true の場合、ダブルバッファリング方式で、追加メモリ空間を使用した高速でちらつきのない変更を行う
__^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>101
(゚д゚) ハァ?
AWT でダブルバッファも使えない ヘタレ の登場ですか。
>>101
恐ろしいまでの墓穴だな。
104103:02/05/20 07:53
書きかけで送っちまった。
ダブルバッファリングのやり方くらい Java の入門書にも載ってるだろーが。
最近「【foo】○○スレ【bar】 」なスレタイ多いよね...
>>105
ニュー速のマネと思われ
最近聞きかじりの知識で書き込む痛い識者、多くね?
なんだろね。そろそろ VB ⇒ Java 移行組が知恵付け始めたのかな。
>>100
ハラショー!!
109101:02/05/20 08:18
>>102-104
ソツレイスマスタ
「高速でちらつきのない」しか
読んだなかった
110デフォルトの名無しさん:02/05/20 18:21
アプレットなんですけどお願いします。
classファイルと画像ファイルを同じディレクトリに入れたのに画像だけが表示されません。
ソースは<APPLET CODEBASE="/applet" CODE="xxx.class" WIDTH=200 HEIGHT=160></applet>です。
原因がさっぱりわからないのでどんな原因が考えられるか教えて下さい。
ちなみにローカルで実行すると画像も表示されます。
111デフォルトの名無しさん:02/05/20 18:50
アプレットの灰色の部分は
色を変えることが出来ないのですか?
>>110
DOCUMENTBASEも同じディレクトリにしたら?
>>111
setBackground(color);
114 :02/05/20 19:07
ジャバスクリプトについて質問です。
会社のLANにつながってる社内文書を見ようとネットスケープで開いたところ
リンク先がopen window〜とジャバスクリプトで書かれて?おり、
illegal URL method〜とエラーが出てしまいました。ネスケのバージョンは
4.05で同僚の4.7で見たところ見ることが出来ました。バージョンによって
見れないということがあるのでしょうか?わかりにくいですけどお願いします。
115デフォルトの名無しさん:02/05/20 19:10
>111さん
やってみました。ダメみたいです。他に原因となりそうなもの
ありますか?
>>114
板違い。おまけに、JavaとJavaScriptは名前が似てるだけで別物。
117114:02/05/20 19:49
よくスレ確認してませんでした。放置という事でお願いします。
117は放置プレイ好き
119デフォルトの名無しさん:02/05/20 21:00
サーバサイドの開発でJNIを使う場面ってありますか?
>>119
やりたきゃやればよい。
普通に考えればJNIなんぞ使わなくても足りるだけのものはあると思うが。
>>120
NIS+使ってユーザ認証しなきゃならないんですが
JNI使わなくてもできますか?
122デフォルトの名無しさん:02/05/20 22:12
javax.servlet.*以下の〜.classファイルを
逆コンパイルしたいんですけど、MOHCAを
使っても逆コンパイルできません。なにか良い
ツールはあるでしょうか?
>>121
RADIUSのクライアント用ライブラリとかあった気がする...
>>122
最近のclassファイルだと、JODEあたりじゃないの?

126デフォルトの名無しさん:02/05/20 23:51
JAVAを始めたけど・・・・
まず、メソッドからわからん。
メソッドの呼び出し??

なにか、超初心者でもわかりやすい
サイトかなにかありますか?
129デフォルトの名無しさん:02/05/21 01:10
ソース
import java.io.*;

public class AddSub {
public static void main(String[] args) {

double x=7.5;
double y=5.4;
double z;

z=x+y;
System.out.println("x+yは"+z+"です。");

z=x-y;
System.out.println("x-yは"+z+"です。");
}
}

実行結果
x+yは12.9です。
x-yは2.0999999999999996です。

x-yが2.0999999999999996になる理由と
x-yを2.1と表示する方法をおしえてください。

x-yが 2.0999999999999996になるのなら
x+yも12.9000000000000004になると思うのですが。
もしかして有効桁数17桁で18桁目の4が丸められてるのかな。
あちこちで同じこと聞くなヴォケ
131デフォルトの名無しさん:02/05/21 01:17
>>130
あっちでスレ違いと言われたからです。
>>130
それってJAVA Fuck(www.hatena.org)にかいてなかったっけ?
>>131
根に持つなよ…
http://pc.2ch.net/test/read.cgi/tech/1021555964/96-113
みんなマジレスしてるじゃないか。
これ以上の答はどこで聞いても出てこないよ。
いったい何がわからんのかわからん。
>>129
もういっぺん説明を試みる。
> x+yは12.9です。
違う。「x+yを丸めた結果が12.9」だ。計算機の内部ではぴったり12.9じゃない。
> x-yは2.0999999999999996です。
>
> x-yが2.0999999999999996になる理由と
これを説明するのはもう秋田。
> x-yを2.1と表示する方法をおしえてください。
好きな桁で丸めるか、BigDecimalを使え。
> x-yが 2.0999999999999996になるのなら
> x+yも12.9000000000000004になると思うのですが。
> もしかして有効桁数17桁で18桁目の4が丸められてるのかな。
…まあ、そんなとこだ。10進17桁じゃなくて2進53桁だけどな。
Forte3.0CE使ってるですが、まちがえてCENTERに配置してあるjScrollPane1に
入れてしまったjPanel1を、NORTHに配置しなおす操作方法がわかりません。
教えてください。
消せばいいじゃん。
137デフォルトの名無しさん:02/05/21 02:02
>>134
どうもありがとう御座います。
doubleがどのように数を扱っているかが
分かっていなかったから駄目だったんですね。

doubleのヘルプ
BigDecimalのヘルプ
頑張って読みます。

かなり数値演算の真理に近づいた気がする。

>>132
ナイスなページをありがとう!


138デフォルトの名無しさん:02/05/21 03:05
今日、スレッドの勉強を始めました。
API仕様見てるのですが、
Timer クラスにおける例外、
IllegalStateException
というのを発生させてみたいのですが、どうやればいいのでしょうか。
タスクがすでにスケジュールされたか取り消された場合、またはタイマー が取り消された場合に発生すると書かれてあるのですが、
「タスクがすでにスケジュールされたか取り消された場合」、「タイマー が取り消された場合」
の両方の意味が分かりません。
再現の方法など教えていただきたいのですが。
よろしくお願いします。
139135:02/05/21 03:06
>>136
コンポーネントを置いてしまってて、めんどくさい場合はどうしましょ?

そもそも、CENTERにJScrollPaneを置いた後でSOUTHとかNORTHとかにコンポーネント
配置する方法ってある?
140138:02/05/21 03:06
改行失敗しますた。
すんません
141138:02/05/21 03:09
ここで言う Timer クラスは、 java.util.Timer です。
たしか、他のパッケージにも同じ名前のがあったと書いてあったので、
念のため。
142デフォルトの名無しさん:02/05/21 07:20
1.4から導尿されたPreference APIって実は使いにくくない?
143デフォルトの名無しさん:02/05/21 09:03
携帯電話に保存した画像をPCにつないだ
ケーブルを使って保存し直すプログラムを
J-PHONEのJavaアプリで作りたいんですが
できるんでしょうか?板違い??
144デフォルトの名無しさん:02/05/21 09:35
ウインドウズVSサンマイクロシステムズの係争の結果、XPから
Javaをサポートしなくなったって本当?
これからの主流は、C#ですか?
Javaはじめたばかりなんですが。。。。いまさらやってもなのかな〜(泣
マジレスおねがいします。
>>144
自社の独自拡張VMを搭載しなくなっただけでしょ?
VBとかだってランタイム必要なんだからそれと同じ感じで
使う人に落としてもらえばいいわけで。
使いたい人は使う、関係ない人はさっぱり知らない。
今までと対して変わらないような・・・
146デフォルトの名無しさん:02/05/21 10:14
アプレットで書いた図形をプリントアウトしたいのですが
やり方がわかりません。とりあえずスクリーンショットで
ごまかしてます。ブラウザの印刷機能だと真っ黒で・・・
正しい方法をどうか教えてくださいよろしくお願いします。
147デフォルトの名無しさん:02/05/21 10:31
>144さっそくありがとう。かわらないんだね・・
148デフォルトの名無しさん:02/05/21 10:48
質問いいですか?
入力した英文字の大文字は小文字に、小文字は大文字に変換して
表示しようとしているのですがわからなくて詰まっています。
toLowerCase,toUpperCaseを使うとすべて小文字、大文字に
なってしまっています。うまい方法があれば教えて下さい。よろしく
お願いします。
初心者です。お願いします。
最近、「Java言語規定」というページを見つけて喜んでいたのですが、
このページは古いというようなことを言われました。1997年だし。
まあ、文法そのものはそんなに古くないと思うのですが、言葉遣いが
気になります。プリミティブ型なんて、周りで言ってる人いないし。
Sunの英語の標準訳のページってないでしょうか?
たとえば、inner classは、内部クラスというのがよいか
インナークラスがよいか、などです。
プリミティブのインナーも内部も言う。
プリミティブの
プリミティブも
"プログラミング言語Java" ピアソンエデゥケーション
の中の練習問題の模範解答ってどこかにありませんか?
>>148
一文字ずつ変えてくしかないんじゃ?

if( Character.isUpperCase( c ) )
 c = Character.toLowerCase( c );
else if( Character.isLowerCase( c ) )
 c = Character.toUpperCase( c );
>>149
標準訳って何?欲しけりゃ自分で訳せ。
内部クラスでもインナークラスでも
どっちでもいーと思うけど。
>>152
ピアソンエデゥケーションに直接聞いてください。
本に電話番号とか書いてあるでしょ?
>>155
そうですか。
その前にここで聞いていいですか?電話代掛かるし。
結構売れてる本のようなので、ここにも読んだことがある人が結構いると思いますので。
第3版なんですが、P102の3.11、
SortDoubleのセキュリティーホールをみつけなさい。
って問題の答えわかる人いませんかね?
>>153
ありがとうございます。
なんとなく先が見えてきました。

158149:02/05/21 12:26
>>154
>標準訳って何?欲しけりゃ自分で訳せ。
ごもっとも。でも、資格試験とか受けたいしぃ。
>>158
SunのJava資格試験は答案用紙を使わない。
チェックボックスとラジオボタンの選択問題だから
気にしなくてヨシ
160デフォルトの名無しさん:02/05/21 15:11
AIX で使える Java のプロファイラ (JVMPI 使う奴ね) って無いすか?
WebSphere を調べたいんだがリソースアナライザじゃ貧弱すぎて…
161デフォルトの名無しさん:02/05/21 15:20
少し前に話題になってたけど、Javaの負の整数は
2の補数表現でよいのでしょうか。
162デフォルトの名無しさん:02/05/21 15:48
以下のプログラムでボタンがふえませぬ
リサイズすると増えまする
なぜかわかる人いますか
再描画関係でしょうか?

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

/* <applet code="Test.class" width="300"height="300">
</applet>
*/

public class Test extends Applet implements ActionListener{
boolean bool = true;
public void init() {
Button but = (Button)add(new Button("2ch"));
but.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if (bool) {
setBackground(Color.green);
this.bool = false;
}
else {
setBackground(Color.blue);
this.bool = true;
}
add( new Button("java"));
}
}
163a:02/05/21 16:09
あの質問させていただいてもよろしいでしょうか?
ポートスキャンってなにでしょうか?
2CHで個人情報の特定とかできるんでしょうか?
>>163
板違いの上スレ違いだが、あんたのPCに鍵の掛かってないドアが
あるか一つ一つ調べること。意図的に開けとく事もあるけど、鍵かけ
忘れたドアから入って個人情報をいただく、という事はあるかも
知れん。ポートスキャンだけじゃ個人情報は取れん。
165a:02/05/21 16:16
>164
ありがとうございます
こう言った質問はどこですれば良いんでしょうか?
初級ネット (ハックラ) 板イケ
167デフォルトの名無しさん:02/05/21 16:41
初心者無視スレで無視されたので、初心者の質問内容だったと
悔い改め、こちらに質問させてもらいます(w

JavaWebStart 1.0.1_02を使ってます。Webページからシーム
レスに起動できるJavaアプリケーションの提供を考えてまして。
実際にテスト署名を使って動作も確認しました。

ところで、jarファイルに対する署名って、どこの公的機関から
何のタイプの署名を発行して貰えばよいんですか?日本ベリサ
インではIE用のAuthenticode対応Digital ID、Netscape用の
Object Signing対応Digital IDしか扱っていないようで。なん
となくこれらの署名は違うなと。

米国ベリサインでは、Sun Java Signing Digital IDってのが
あって、これじゃないかと思うんだけど、実際に署名を取得
したよ、知ってるよ、って人いたら、そこらへんの事情を教
えてください。

よろしくおながいします。
/*
 <html>
  <applet code="Test.class" width="300" height="300"></applet>
 </html>
*/

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Test extends Applet implements ActionListener {
    boolean bool = true;
    public void init() {
        Button but = (Button)add(new Button("2ch"));
        but.addActionListener(this);
    }
    public void actionPerformed(ActionEvent e) {
        if (bool) {
            setBackground(Color.green);
            this.bool = false;
        }
        else {
            setBackground(Color.blue);
            this.bool = true;
        }
        add( new Button("java"));
        validate(); // hehehe
    }
}
170162:02/05/21 20:02
>>169
レスありがとうございました
できました
>>124
> 最近のclassファイルだと、JODEあたりじゃないの?
JODE と JAD ってどっちのほうが評判いいんでしょう.
172デフォルトの名無しさん:02/05/21 21:58
1.5から導入されるGeneric機能ってどうなんでしょうか・
C++のtempleteみたいなもんですか>
vector<Integer> a
みたいな
>>143
見るからに無理だと感じるのだが。
J-PHONEのJavaアプリに携帯端末そのもののメモリ扱うAPIも
本体につながったケーブル扱うAPIもないだろう?
>>174
今の仕様の携帯Javaだと、自分でサーバ立ててインターネット経由で
HTTPパケットで送信することしかできなそう。
176デフォルトの名無しさん:02/05/22 07:17
プログラマー板で紹介されてたので載っけときます

Java的リンク
http://www.geocities.co.jp/SiliconValley/6064/java_link.html
>>176
いいね
>>176
すげぇ量だな。俺んち、トップページへリンクしてくれよ
179デフォルトの名無しさん:02/05/22 10:43
初心者です。

動的メソッドと静的メソッドの使い分けがよくわかりません。
変数なら使い分ける必要があるけど、なんでメソッドをいちいち動的に割り当てるのでしょうか?
全部静的で問題ないような気がするんですけど。
>>179 Javaに静的メソッドはない。
Java使ってる限り動的束縛強制ギプスからはどうやっても
逃れられないのでそんな事悩む必要なし。

ポリモーフィズムについて勉強してから
C++スレにでも行ってごらん。
181179:02/05/22 11:16
>>180
ええ、本には関数の前にstaticをつけると静的メソッドになるって
かかれていたんですけど。

ポリフォーフィズムはこれから勉強します。
>>179
メソッドってのは動的に割り当てたりするもんじゃない。
(というか、「動的メソッド」という言い方は普通使わない。)
183180:02/05/22 11:26
>>181
お、そっちの「静的」か、
カンチガイすまナンダ。
つーか全部その「静的」メソッドだけでプログラミングすると実質的に
構造がC(C++でない)と変わらなくなる。
オブジェクト指向言語の意味がない。
(仕事でやると↓でヒーローになれる)
http://pc.2ch.net/test/read.cgi/prog/1021560641/l50

メソッドはあくまで「オブジェクト」の動作の定義ってのが
オブジェクト指向の前提。staticが例外。
184181:02/05/22 11:54
>>183
つまりstaticなメソッドでも動くけど、暗黙の了解で使うなってことですか?
そうじゃない。
その本に書いてないの?
ダブルディスパッチってなんですか?
>>184
役割が違うので互いに単純に代替できるようなものではない。
必要性があるからこそJavaにも取り入れられたわけで
gotoほど忌み嫌われる存在ではない。
しかし使いどころが分からずに乱用すると困った事になるのも事実。
188デフォルトの名無しさん:02/05/22 14:43
XMLファイルに登録してある内容を読んで、箇条書きのHTMLを作成したいんですが、XMLファイル
の読み方というのがよくわかってません。
今はnew BufferedInputStream(new FileInputStream("test.xml"))でループさせてstringに入れて
るんですが、これでいいんでしょうか? 他にやり方があったら教えてください。
189デフォルトの名無しさん:02/05/22 15:51
XML読むなら最初はDOMを利用する方法がわかりやすくていいと思いますよ。
CrimsonとかXercesとかのソフトウェアはXMLドキュメントをObject化してくれます。
また、単純にHTML吐き出したいのならXSLTというソフトウェアを利用すると再利用性の高いコードがかけると思います。

see
http://xml.apache.org
190デフォルトの名無しさん:02/05/22 16:05
>>184
ユーティリティなどのわざわざオブジェクトとしてインスタンス化する必要のないようなメソッドは静的メソッドとして実装するとコードとがシンプルになり、メモリが節約できます。
私はがんがんユーティリティを作るほうなので、静的メソッドを結構多用しますが、それによって、クラスの結合度などが高まってしまって失敗したりと一長一短です。
とりあえず静的メソッドのことは忘れて設計してはどうでしょうか。そのほうがオブジェクト指向に関する理解が早まると思います。
191デフォルトの名無しさん:02/05/22 16:19
>>189
RESありがとうございます。

>XML読むなら最初はDOMを利用する方法がわかりやすくていいと思いますよ。
>CrimsonとかXercesとかのソフトウェアはXMLドキュメントをObject化してくれます。
まさしくそのDOMでできそうです。これから調べてみます。
シーケンシャルファイルとして読むなんて泥臭いこと、普通はしませんよね^^;。

>また、単純にHTML吐き出したいのならXSLTというソフトウェアを利用すると再利用性の高いコードがかけると思います。
XSLTはお客さんから「自分とこで保守できないのでNG」と言われましたw。

情報、ありがとうございました!
19299:02/05/22 16:22
-------風俗の総合商社・MTTどこでも-------

〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
  http://www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/
------------------------------------------------

>>191
中身をXSLT+XSLTプロセッサで作ろうが全部Javaで作ろうが、
顧客がメンテするのは元のXMLファイルだけだと思うのだが...
もしかして、191はJavaのソース込みで納品して、191の顧客は
そのソースをメンテするつもりだとでもいうのだろうか。
194デフォルトの名無しさん:02/05/22 21:03
VAJでの
デバッグの方法がわかりません、
ステップでのやり方をだれか教えてください。
>>193
SIがプログラムだけを外注してんじゃないの。
そんでそのSIはXSLTが使えないと。
ありえなさそうでありえる話っぽいなぁ。
196デフォルトの名無しさん:02/05/22 21:59
javaで書いたファイルを、exeファイルみたいに
ダブルクリックだけで起動するにはどうしたらいいんですか?
>>196
JARにする。JDKドキュメントの「JDKのツール」の項目に解説あるから嫁。
マニフェストファイルにMain-Classを登録するのがミソ。
198196:02/05/22 22:14
>>197
ありがとうございます、勉強します
199デフォルトの名無しさん:02/05/22 22:30
>>194
F5でステップイン、F6でステップオーバー、F7でステップアウト
でもVAJはサポート打ちきり、Studioに移行するから
あまりおぼえんでよい
200 :02/05/22 22:31
swingでテキストが二つ並ぶような画面を作成中なのですが、
undoの処理で悩んでいます。
なにかヒントになるWeb,書籍など情報はありませんか??
Java1.2で、publicではないコンストラクタを持つクラスを
別のパッケージから、リフレクションのConstructerクラスのnewInstance(Object[])で生成しようとすると
IllegalExceptionが出て生成できないんですが、だめなんですか?
メソッドやフィールドはprivateでもリフレクションでうまくいったんですが。
202 :02/05/22 23:08
JUnit対象のクラスやメソッドをテストする雛型を吐いてくれるツールってありますか?
eclipseあたりでできるとハッピーなのですが。
203デフォルトの名無しさん:02/05/22 23:22
>>202
eclipseでできるよ。対象クラスを選択して右クリック。
new -> Java -> JUnit -> TestCase
あとは、テストしたいメソッドを選択して生成。
204**********:02/05/22 23:30
>>201
できたぞ。
メソッドやフィールドと同じ方法で。
205 :02/05/22 23:39
>>203
どうもです。
中身は勝手に作ってくれないの?w
206デフォルトの名無しさん:02/05/22 23:42
>>200
JTextAreaつかってんなら、JFCのデモでいいんじゃん?
>>204
使用されるほうのクラスで、setAccessible(true)としないとだめなのかな。
208**********:02/05/22 23:53
ソース上げ

import java.lang.reflect.*;

public class reflecttest{
public static void main(String args[]){
try{
Class cls =Class.forName("test");
Constructor con = cls.getDeclaredConstructor(null);
con.setAccessible(true);
Object o = con.newInstance(null);

}catch(Exception e){e.printStackTrace();}
}
}

public class test{
private test(){
System.out.println("キター");
}
}

これがしたいんでしょ?
209デフォルトの名無しさん:02/05/23 00:06
今、書籍「独習Java」で勉強しているのですが、付属のCD-ROMを
なくしてしまいました。。。。。。
練習問題・章末問題の解答が。。。
どなたか、「独習Java」の解答(Win版)アップしてくださいぃぃ。
まじ困ってます。
210デフォルトの名無しさん:02/05/23 01:25
>>209
もっかい買え
211デフォルトの名無しさん:02/05/23 01:26
>>209
ってか独習Javaやめれば?
もっといい本あるよ。
212デフォルトの名無しさん:02/05/23 01:30
publicとなにもつけないのとでは
何が違うのですか?
スコープ
214デフォルトの名無しさん:02/05/23 01:41
ねーねーオブジェクト指向やポリモーフィズム
について詳しく書いてある本ってなんか
ないですかね?
>>214
Java Examples in a Nutshell
http://www.oreilly.com/catalog/jenut2/
で十分だと思う
スコープじゃないだろ、アクセス制御でしょ。
217デフォルトの名無しさん:02/05/23 01:56
>>215
英語かい!
すみません、英語はきついな〜
>>217
日本語版あるでよ
>>218
まじっすか!ありがとう!
明日書店であさります。
220209:02/05/23 02:51
もう一回買えって・・・(泣
もっといいのもあるみたいですが、せっかく買ったんで最後まで
やってみるつもりです。。。

ていうか、どなたか「独習Java」の問題の答えください・・・
まじ、困ってますぅぅぅぅ。。。(泣
>>220
問題書けば答えてくれるかも
222デフォルトの名無しさん:02/05/23 03:09
以下のような文字コードを編集するには、どのようなツールを用いればよいのでしょうか。
( ????.preperties_ja というようなファイルでよく見かけます。 )

「\u5546\u54C1\u4E00\u89A7」

223デフォルトの名無しさん:02/05/23 03:12
> ねーねーオブジェクト指向やポリモーフィズム
> について詳しく書いてある本ってなんか
> ないですかね?

「Javaの格言」 あたりはどうかな。アレに書いてあることをマネして、Java で一つアプリケーション
(Web アプリケーションはあまりよくないと思う。Swing とか GUI 使うやつがいいよ)作ってみると
もうマスターしたも同然。
多分 foo_ja.properties の形式だと思うが、JDK に付いている
native2ascii を使え。DOS 窓から以下を叩け。

native2ascii -reverse foo_ja.properties > bar_ja.properties

リダイレクト先間違えて既存ファイル消すなよ。
>223
たとえば
class Ex{
public static void main(String args[]){
int i=3,x=5,s=7;
System.out.println(i+x+s);
}
}
で書けるものを
class Ex{
int i,x,s;
}
class Ex2 extends Ex{
public static void main(String args[]){
Ex ex=new Ex();
ex.i=3;
ex.x=5;
ex.s=7;
System.out.println(ex.i+ex.x+ex.s);
}
}
で書くメリットがわからないんです。
ちなみに独習Javaはもってます。(7章で詰まりました)
アプレットや制御ステートメントは少しは理解してると思います。
その本で理解できるでしょうか?初心者なんですみません。
>>225
精進しまひょ
もっと複雑なものを考えるとか
UMLにしてみるとか
227デフォルトの名無しさん:02/05/23 04:53
windows CE(PocketPC?)用のJDKってあるんでしょうか?
228デフォルトの名無しさん:02/05/23 05:09
>>209
図書館に行けばあるかも。
>>225
あんがい、君みたいな人が多いのかもな。
おかげで、CやコボからJavaへは移行しやすいとか?
230 :02/05/23 07:17
>>206
THX!
ついでにundo関連についての”考え方”が
書いてあるWebってありませんか?

JFCのデモのソースを読んだのですが難しすぎて・・・。
>>230
API Reference
googleにないの?
>>225
教習所のなかぐるぐる回ってるだけじゃ
車のありがたみが分からないのと一緒。
233デフォルトの名無しさん:02/05/23 12:06
これからアプリを作ろうと思っているんですけど、ネタを振ってください。
独習Javaでまだ二日しかJava経験がありませんが。

あまり難しくないけど、いろいろな標準クラスを使うやつがいいです。
形ができたら公開しようと思います。
C++用のリファクタリングブラウザをお願い。
標準クラスだけでばっちり作れると思います
235_:02/05/23 12:25
Robocodeで最強のロボ作れ
236233:02/05/23 14:03
>>235
いまIBMのページを調べましたが、おもしろそうですね。
「高機能のロボット格闘シミュレーション・エンジンで、Javaプログラミング学習がずっと楽しくなる」
というのが気に入りました。

http://www-6.ibm.com/jp/developerworks/java/020329/j_j-robocode.html
がんばって、robocode スレを盛り上げてくれ。
238デフォルトの名無しさん:02/05/23 15:20
[localhost:~/Documents/java_test] nao% cat test_034_pre_02.java
//
// while
//
public class test_034_pre_02 {
public static void main (String [] args) {
int i = 7;

while (--i > 0) {
System.out.println (i);
}
}
}
[localhost:~/Documents/java_test] nao% java test_034_pre_02
6
5
4
3
2
1

上記の前置デクリメントの場合、0を出力しないで終了するけれど、
後述の後置デクリメントだと、0まで出力するのはどうしてなの?

[localhost:~/Documents/java_test] nao% cat test_034_post_02.java
//
// while
//
public class test_034_post_02 {
public static void main (String [] args) {
int i = 7;

while (i-- > 0) {
System.out.println (i);
}
}
}
[localhost:~/Documents/java_test] nao% java test_034_post_02
6
5
4
3
2
1
0

Javaは初めてのプログラム言語で、初めてまだ3日目。。。
239デフォルトの名無しさん:02/05/23 15:21
[localhost:~/Documents/java_test] nao% cat test_034_pre_02.java
//
// while
//
public class test_034_pre_02 {
public static void main (String [] args) {
int i = 7;

while (--i > 0) {
System.out.println (i);
}
}
}
[localhost:~/Documents/java_test] nao% java test_034_pre_02
6
5
4
3
2
1

上記の前置デクリメントの場合、0を出力しないで終了するけれど、
後述の後置デクリメントだと、0まで出力するのはどうしてなの?
240デフォルトの名無しさん:02/05/23 15:22
[localhost:~/Documents/java_test] nao% cat test_034_post_02.java
//
// while
//
public class test_034_post_02 {
public static void main (String [] args) {
int i = 7;

while (i-- > 0) {
System.out.println (i);
}
}
}
[localhost:~/Documents/java_test] nao% java test_034_post_02
6
5
4
3
2
1
0

Javaは初めてのプログラム言語で、初めてまだ3日目。。。
三重カキコになってしまった。。。
ゴメン。。。
242デフォルトの名無しさん:02/05/23 15:30
大馬鹿者の>>241を晒しあげ
243242:02/05/23 15:32
>>241
--iはiに1を加算してからその値を返す。
i--はiを返した後にiに1を加算する。

それを理解すればなぜそうなるのか分かるでしょ。
244243:02/05/23 15:34
加算じゃねー、減算だ。
ワラ
246241:02/05/23 15:40
>>243レス、ありがとう。
デクリメント演算子の役割は本を読んで(一応)理解しているつもり
だけれど、疑問点は次の点なんです。
whileのループ変数に( i > 0 )の場合に、実行しろという文なのに、
後置デクリメントの場合、(i >=0)と書かれているのに、
System.out.printlnが0を出力するのはなぜなのかというのが、疑問。

もしかして、
While (i-- > 0) の時点では、i = 1だけれども、
System.out.printlnの時点では、i = 0となっていると理解すればいい
の?
247241:02/05/23 15:43
自己レス、ゴメン。
理解できた。
248TL使い:02/05/23 17:41
TurbolinuxServer6 で コンパイルとおるプログラムを
TurbolinuxServer7 で コンパイルしたらエラーになっちゃった。なんでだろ。

エラー内容は 入力された文字が全角記号だったら云々かんぬん
とかいう判定文にて 「unclosed character literal」とか言われちゃうの。
249質問です:02/05/23 18:03
JAVAで日付、時間をとりたいんですけど
明日の日付はどうすればいいのでしょうか。
本日の日付なら

java.util.Date currentTime = new java.util.Date();
calendar.setTime(currentTime);

こんな感じでとれたんですが・・・。
>>249
3600 * 24秒足す。
86400000000ns足す
252質問です:02/05/23 18:37
えーと・・・スーパーど初心者ですみません。
どのタイミングで足せばいいのでしょうか・・・。
お願いします。
日時処理はなるべく Calendar クラス使え。

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, +1);
254質問です:02/05/23 18:50
>>250サマ>>251サマ>>253サマ
できましたぁ〜ありがとうございます!

修行不足ですみません・・・。
255デフォルトの名無しさん:02/05/23 20:15
すいません
どこに聞けばいいのかわからないので書きます
これってそんなに怖いんですか?
わかんない人はあけないでください
http://www.rental-web.com/~azuma/pha/medusa/Medusa.gif
>>255
巨大真っ白 (透明?) 画像。
つーか、半角のブラクラ判定スレへどうぞ。
257デフォルトの名無しさん:02/05/23 20:25
>>256
んじゃ、いってきます ありgとです
JavaでFTPを扱うライブラリってありますか?
ソケットからゴリゴリ書くしかないんでしょうか。
260デフォルトの名無しさん:02/05/23 21:02
>>256
どうやって判断したんですか?
私のマシンのNetscapeにいれたら応答しなくなりましたよ
261258:02/05/23 21:02
THX。日本語で探したのが悪かったみたいです。
FTP程度だったら ソケットからゴリゴリ(?)書いても
そんなに手間にならんと思うけど…

FTPでRandomAccessFileってできないかなぁ…
読み込みだけだったらすげー簡単だけど。
>>248
OSのlocale設定でも見直せば?
該当部分のソースも書かない、
エラーメッセージも全部書いてない、
では他に答えようが…
264デフォルトの名無しさん:02/05/23 21:41
print文で疑問があります。

[localhost:~/Documents/java_test] nao% cat test_041.java
//
// return
//
public class test_041 {
public static void divide (double n1, double n2) {
if (n1 == 0) {
System.out.println ("Enter the number except 0.");
return;
}
else if (n2 == 0) {
System.out.println ("Enter the number except 0.");
return;
}
else {
System.out.print (n1 + " / " + n2);
System.out.print (" = ");
System.out.println (+ n1 / n2);
System.exit (0);
}
}

public static void main (String [] args) {
if (args.length == 2)
divide (Double.parseDouble (args [0]), Double.parseDouble (args[1]));
else {
System.out.println ("How to use : enter command number number");
System.exit (1);
}
}
}

このソースの中にあるdivide名のメソッド中にある
else {
System.out.print (n1 + " / " + n2);
System.out.print (" = ");
System.out.println (+ n1 / n2);
System.exit (0);
}



else {
System.out.println (n1 + " / " + n2 " = " + n1 / n2);
System.exit (0);
}

と書き換えると、コンパイル時にエラーが出てしまいます。
どうしてなのでしょうか?
>>260
ネスケ用の画像ブラクラか。俺 IE だから分かんなかった。
ヘッダ部で無駄に巨大なサイズ指定して OutOfMemory で無応答にさせるタイプかな。
実際、ダウンロードして Fireworks で開こうとしたらメモリ足らんと言われた。
ファイルサイズ的には 146 バイト。手元にバイナリエディタが無いので詳細は不明。
>>265
ご名答。Width と Height が 65535 に設定されてた。
G00D8YE NETSC4PE とか書いてあるしあほくさい。
267デフォルトの名無しさん:02/05/23 22:00
double x=0.12345;
System.out.print(x);

の表示を小数点以下3桁にしたいんですけどどうやればいいんですか?
>>264
n2の後ろに+入れれ
>>267
NumberFormat nf = new DecimalFormat("0.000");
double x = 0.12345;
System.out.print(nf.format(x));
>>269
できた^^
ありがと。
271264:02/05/23 22:27
>>268
ありがとう。コンパイルも正常にできた。
多謝多謝。
272201:02/05/23 22:35
>>208
なんと、Java1.3なら大丈夫だった。Java1.2はできないらしい(?)
273デフォルトの名無しさん:02/05/23 23:10
超初心者な質問ですいません。JAVAをインストールして、
その次のPATHを通すやり方がよくわかりません。
環境変数に何をどう書き込めばいいのか・・・
XPなのですが、JAVAの初心者向けのサイトなどないでしょうか?
274デフォルトの名無しさん:02/05/23 23:16
www.hatena.org
275(・J虫レ・):02/05/23 23:22
1.
たとえばある座標をマウスリスナーとかで与えてやって
その座標によって図形を描画するようなメソッドを定義する場合

Public Graphics void Zukei(int x,int y.......)
{
//描画に関する処理
}

こんな感じでいいのかね?
276デフォルトの名無しさん:02/05/23 23:25
277デフォルトの名無しさん:02/05/23 23:25
>274
ありがとうございました。
ネタか?>>275
Public じゃなくて public
ところでその Graphics ってなんじゃ?
描画用グラフィックコンテキストのクラス名に見えるが
そこに書いてどうする気だ?
>>273
環境変数の加え方は分かってるん?
なら、インストールしたjavaの bin フォルダまでのパスを書く。
ex) C:\program files\j2sdk1.4.0\bin;
ドライブ名 コロン バックスラッシュ(\マーク) フォルダ名 ・・・ セミコロン
280デフォルトの名無しさん:02/05/24 03:05
>>264
> System.out.println (+ n1 / n2);
この n1 の前の '+' って、なんか意味あるの?

勉強始めて間が無いので変な質問だったらスマソ。
281デフォルトの名無しさん:02/05/24 05:25
Java勉強始めて間もないからかもしれんが、

「引数の引き渡し」

わかんねーよ。
おめーらもほんとに理解してんのか?
おれにわかりやすく教えれ!
282デフォルトの名無しさん:02/05/24 05:26
System.out.println (n1 + " / " + n2 " = " + n1 / n2);

System.out.println (n1 + " / " + n2 " = " + (n1 / n2));
にすればいいんじゃネーノ?
引数って
anyMethod( 引数 );
って渡すだけだろ?何がわからんの?
>>282
残念だが違う

>>283
引き渡しなんだから
anyMethod( 引数1 - 引数2 ){ //...}
だと思う
285284:02/05/24 08:41
はずかしい
x anyMethod( 引数1 - 引数2 ){ //...}
o anyMethod( 引数1 - 引数2 );
>>284-285
これってマジレス?
マゾレス
引数の値渡し/参照渡しと予想してみるテスト
参照の値渡しと参照渡しって違うの? と言ってみるテスト
>>289
それは一緒
Java Servlet + DBなんですが、

あれは問い合わせ1回ごとにコネクションを開始→問い合わせ→切断、するべきなんでしょうか。


すれ間違えたのでやりなおし投稿す。
>>290
でもさぁ、首藤さんとこの日記の 5/1 のところ読むと
http://www.shudo.net/diary/index.html
その2つは違うって書いてあるみたいだけど。
>>291
コネクションプール使え。
294デフォルトの名無しさん:02/05/24 10:48
メソッドから、複数のパラメータを一度に受け取るにはどうすればいいんでしょうか。
具体的には、Showinfoメソッドから、情報を10個受け取りたいです。
>>294
10 個の getter が付いた Bean のインスタンス
もしくは Object[] info = new Object[10];
に情報全部込めて return info; とか。
/**
* ユーティリティメソッド
*/
Object[] showInfo( xxxx ){
 showInfo( xxxxx, new Object[10] );
}

/**
* Object[10] を使いまわししたいときはこっち
*/
Object[] showInfo( xxxx, Object[] info ){
 xxxxx;
 return info;
}

とか。JDKのソース見ればこーゆーのいっぱいあると思うけど。
return忘れた。
Object[] showInfo( xxxx ){
 return showInfo( xxxxx, new Object[10] );
}
だね。
299デフォルトの名無しさん:02/05/24 12:17
>>294
その戻り値を格納するクラスを別途作成してリターンするのがいいと思います。
またはそのメソッドそのものをクラスとして実装して、情報を自分自身に格納しておくかですね。
参照渡しと参照の値渡しは違うだろ。

C++で言えば、参照渡しは
int i;
foo(i);
という呼び出しを
void foo(int &v)
で受ける場合。
参照の値渡しは
foo(&i);

void foo(int *p)
で受ける場合。
えーと、ちなみに Java で
void foo( Object bar ){ } を
foo( bar );
で呼び出すのはどっちなんですか?
参照渡し? 参照の値渡し?
>>300
それってポインタ渡してるだけでは?
C++の参照は値渡しできないのでは。
そのとおり
C++用語の「参照」は値渡しできないね。

ただ、Javaの参照型引数の渡し方は、C++で言えば「ポインタの値渡し」
に相当する。

つまり、Javaの「参照」は「値渡し」。
いやぁねぇ
頭がスパゲティになっちゃうわ。
306デフォルトの名無しさん:02/05/24 19:46
ねかまきしょいage
なぜそれだけでネカマなんだ?(藁
>>305 みたいに「わざわざ女言葉つかって」しゃべる女はいない。
単なる表現だろ
別に女を演出したワケじゃないと思われ
>>305-309
このスレらしくなって来たね(W
>>309=ネカマ
312(・J虫レ・):02/05/24 22:57
>>278
要するに俺様としては

クラスA====
変数x,yを用いて図形を描くメソッド(ZUKEI)の定義

クラスB===
クラスAを継承して
マウスリスナーでXとYの座標を取得
ZUKEIメソッドに取得したXとYを放り込んで図形を描画

って感じにしたいんですよダンナ
313デフォルトの名無しさん:02/05/24 23:05
「参照渡し」と「値渡し」の違いが・・・・・・かなり曖昧になってきた。。。

だれか、違いがわかりやすい例(ソース)あげてくれー!

いや、あげてください。。。
いや
>>313
引数の値を変更すると呼び出し側の変数の値も変わる:参照渡し
引数の値を変更しても呼び出し側の変数の値が変わらない:値渡し

厳密ではないけどこういうこと。
316デフォルトの名無しさん:02/05/24 23:19
>>315
つまりどういうこと?
どのようなコーディングをしたら高速化できますか?
基礎レベルのことでもいいので教えてください。
318313:02/05/24 23:20
>>315
即レスどうもっす。
それはわかってるんですが・・・そういうことでいいんですか?

参照渡し → 配列、オブジェクト(String以外)
値渡し  → プリミティブ型、Stringオフジェクト

でイイんすか?
>>317
ループ内の処理は必要最低限に。
>>317
何も書かなければ理論上最も早いです
>>317
そう、急ぐ事もあるまい。
「狭い日本そんなに急いでどこへ行く」
って事例もあることだし
どこへ行くの?
323デフォルトの名無しさん:02/05/24 23:46
>>318 (315じゃないけど)

> 参照渡し → 配列、オブジェクト(String以外)
> 値渡し  → プリミティブ型、Stringオフジェクト

ちがうよ。Javaだとどっちも値渡し。

method(v) と呼び出して、
void method(Object x) { x = null; }
としたとき、変数vの値もnullになっちゃうのが参照渡し。
324デフォルトの名無しさん:02/05/24 23:47
>>317
インスタンスを再利用する。
325313&318:02/05/25 00:06
>>323
レスどうもです。
どっちも値渡しなんですか。。。うーん。。。
例を挙げていただいて、なんとなくわかっているのですが。。。

プリミティブ型は、必ず値渡しですよね?
配列・オフジェクト(Stringも)は、値渡し・参照渡しのどちらにもなる。。。ってことすか?

値渡しか、参照渡しかはどうやって見抜くんですか?
>>325
Javaには参照渡しなんぞない(値渡ししかない)っつーに。
なんべん言えば分かるんじゃ。
「参照渡し」という言い方が悪いんだな、きっと。
英語で言えば「call by reference」つまり「参照呼び」だ。

・呼び出し側の実引数は変数(lvalue)に限る。
・呼び出された側の仮引数は、メソッドの実行中 実引数の別名となる。
 (別の名前で、同じ箱を参照する。)

これに対して「call by value」では、
・呼び出し側の実引数は変数に限らず、定数その他、任意の式で良い
・その値が、仮引数の箱(新たに作られる)にコピーされる。

Javaの場合はcall by valueしかない。
「参照渡し」だと変数という箱への参照を渡すんだよ。
参照型の値を渡すという意味じゃなくて。

参照型の「値を渡す」だけなら、ただの値渡し。
330288:02/05/25 00:52
「値渡し」「参照渡し」って書くと言葉遊びを始める連中が来るかもと思って
かなり控えめにしてみたんだが、まさかこんなに釣れるとは (藁
そりゃ良かったな。
なんで言葉遊びなの?
(ほんとに違いがないと思ってるとか?)
>>288 は区別がついてないってことだろう。
288=313
335デフォルトの名無しさん:02/05/25 01:04
privateフィールドとローカル変数はどういう風に
使い分けたらいいのでしょうか?

privateフィールドは、クラス内のみで参照でき、
そのクラス内にあるメソッドが参照できる。しか
し、ローカル変数はあるメソッド内のみでしか参
照できない、という理解のしかたでいいのでしょ
うか?
スコープだけじゃなく生存期間が違う。
337335:02/05/25 01:13
>>336
このレスは漏れに向けてと考えていいのかな?

スコープの範囲が異なるというのは理解できたけれど、
生存期間が異なるということはどういうことを意味して
いるの?
生存期間というのは、ポイントを保持している期間が異
なるということなのかな?

Javaが初めての言語の上に、入門書を買ってきて、まだ
一週間しか経っていないので、手加減を宜しくお願いし
ます。
338デフォルトの名無しさん:02/05/25 01:20
Java が 「値渡し」 であることは、
次のプログラムで確認で来るわけですよ、ね?
・・・違います?どなたか添削してください。

public class CallTest{

private int num = 0;
private int callNum = num; //ここで何が起こっているか?

private Obje obje = new Obje(0);
private Obje callObje = obje; //ここで何が起こっているか?

public static void main(String[] args){

CallTest test = new CallTest();
test.showValues();

}


public void showValues(){

num = 1; //参照渡しなら、callNumも変化するはず。
System.out.println("num = "+num);
System.out.println("callNum = "+callNum);

obje = new Obje(1); //参照渡しなら、callObjeも変化するはず。
System.out.println("obje.num = "+obje.getNum());
System.out.println("callObje.num = "+callObje.getNum());

}



}

class Obje{
int num;
public Obje(int n){
num = n;
}

public int getNum(){
return num;
}

}
ゲームを作るのにアクセサメソッドは必要?
>>338
自分でコンパイルしてみた?
>>339
「アクセサメソッド」・・・?
それってつおい?
342デフォルトの名無しさん:02/05/25 01:32
>>340
はい。
出力結果が、順に、
num = 1
callNum = 0
obje.num = 1
callObje = 0
と、なりますので、フィールドでのcallNum と、callObje の生成は、
値渡しが行われたからだと考えたのですが。

どこかで勘違いしてますか?
>337
メソッド内のローカル変数はメソッドの実行中だけ値を保持する
それに対してフィールドはクラスが存在する間中、値を保持する
privateだから外からは見えないけどちゃんと中で保持してるわけだ
344338:02/05/25 01:35
「字下げ」が出来てなくて読みにくくてすみません。
関係ない話で済みませんが、
「字下げ」を表現するには、書き込みのときに
半角スペースを全角にしてるのでしょうか?
>>339
必要と思えば使う。思わなければ使わない。
346335:02/05/25 01:47
>>343
なるほど。わかりました。
ありがとうございます。
347338:02/05/25 02:08
ひょっとして、「渡す」というのはメソッドの引数のことですか?
だとしたら自分の書いたのは的外れでした。
processValues というメソッドを書き加えたので見てくれませんか。
public class CallTest2{

private int num = 0;

private Obje obje = new Obje(0);

public static void main(String[] args){

CallTest2 test = new CallTest2();
test.showValues();

}

public void showValues(){

System.out.println("num = "+num);
System.out.println("obje.num = "+obje.getNum());

processValues(num,obje); //ここで、何を渡しているか?(値?参照?)

System.out.println("num = "+num); //0 なら「値渡し」、1 なら「参照渡し」
System.out.println("obje.num = "+obje.getNum()); //0 なら「値渡し」、1 なら「参照渡し」

}

public void processValues(int n,Obje o){

n = 1;
o = new Obje(1);

System.out.println("n = "+n);
System.out.println("o.getNum() = "+o.getNum());

}


}

class Obje{
int num;
public Obje(int n){
num = n;
}

public int getNum(){
return num;
}

}
>341
格言読んでろ
349339:02/05/25 10:19
アクセサメソッドって用語集とかにないね・・・
350デフォルトの名無しさん:02/05/25 13:45
>>338
Javaが値渡しであることは当然なんだけど、以下の書き方見ると、
誤解があるみたいね。

>private Obje obje = new Obje(0);
>private Obje callObje = obje; //ここで何が起こっているか?

代入がしているのは、右の変数の値を取り出して、左の変数に入れること
だけ。新しいオブジェクトを生成したりしません。
で、objeには、new Obje(0)で生成されたオブジェクトの参照が入っている。
この参照をcallObjeに代入しているだけだよ。だから、objeもcallObjeも
同じオブジェクトを指しているんだ。
すまん、お前らだれかabstractクラスの
意味を教えてください。お願いします。
できれば実例も加えてくれると神です。
>>351
実装が派生クラスにゆだねられているクラス。
353デフォルトの名無しさん:02/05/25 15:09
>>351
まずabstractクラスはインスタンス化できない。
またメソッドをabstract修飾子をつけて宣言させることで、子クラスにその実装を強制させることができる。
俺はインスタンス化させたくない基底クラスの定義とかに使うが・・。
>>353
良いこと聞いた。忘れてたよ。
無理に基本クラスに純仮想関数置かなくて良いんだ。
355デフォルトの名無しさん:02/05/25 16:40
>>351
今月のJavaWorld読め。
356デフォルトの名無しさん:02/05/25 16:44
学校の宿題やってたら、
(↓プログラムの一部)
public void remove(Object element){
if(next==null){
}else if(next.body.equals(element)){
if(next.next==null){
next=null;
}else{
next=next.next;
}
}else{
next.remove(element);
}
}

でコンパイルは通ったのですが、実行するとjava.lang.NullPointerException
というエラーがでました。
そこで下のように、3行目にreturn;を加えるとエラーが出なくなりました。
なぜでしょうか?必要ないように感じるのですが…
「next==nullのとき、何もしない」って書くにはなぜreturnが必要なのでしょうか?
多分 return を理解してないように思うので説明お願いします。

public void remove(Object element){
if(next==null){
return;
}else if(next.body.equals(element)){
if(next.next==null){
next=null;
}else{
next=next.next;
}
}else{
next.remove(element);
}
}
357デフォルトの名無しさん:02/05/25 17:36
>>356
returnは関係ないだろうな。
コードからjava.lang.NullPointerExceptionが予測されるのは、
}else if(next.body.equals(element)){の部分のnext.bodyがnullの
場合だ。
多分、再度試したときには、これがnullじゃなかったんだろう。
エラーが出たときは、それが発生した行数もチェックして、どこが
おかしいか確かめたほうがいいよ。
358デフォルトの名無しさん:02/05/25 17:37
return 文は、メソッドの実行を終了させて、呼び出し元に戻ります。
if 文の中であっても、return 文は、メソッドの実行を終了させて、呼び出し元に戻ります。

>>356
NullPointerExceptionは、どの行で出たんだ?
360デフォルトの名無しさん:02/05/25 21:07
なるほど
どうも、next.bodyがnullの時があったようです。
361デフォルトの名無しさん:02/05/25 21:46
auのezplusとJーPHONEのJ-アプリって
どっちがおもしろいだろう?
>>352>>353>>355
ほんとうにありがと。ぼう参考書からの抜粋なんだけど
avstract class Shape{
void display(){
}}

class Circle extends Shape{
void display(){
System.out.println("Circle");
}}

class Rectangle extends Shape{
void display(){
System.out.println("Rectangle");
}}

class Triangle extends Shape{
void display(){
System.out.println("Triangle");
}}

class AbstractClassDemo{
public static void main(String args[]){
Shape s=new Circle();
s.display();
s=new Rectangle();
s.display();
s=new Triangle();
s.display();
}}
このアブストラクトクラスにはなんの意味があるの?
abstractをけしてコンパイルしてみたんだけど
出来るんだよね。どうしてもこの概念が理解できない。
とりあえず今月のJavaWorldをよんでみるけど。。
363デフォルトの名無しさん:02/05/25 21:53
Jもauも中々クセがあるからどっちも面白いかも。
魅力的な面で言えばJなのかなぁ。どうなんでしょう?
364デフォルトの名無しさん:02/05/25 22:25
>>362
基底クラスのShapeをインスタンス化させたくないってこと。
365デフォルトの名無しさん:02/05/25 22:28
>>362

ええと、
avstract ってのは単なるタイプミスね。
(今度からはきちんとコピー&ペーストしましょう)

abstract なクラス Shape を消してもエラーが出ない、というのは、どうだろう。
これを確認してくれ。

Shape クラスの宣言がソース中にある状態でコンパイルしたときに出来たクラスファイル

  Shape.class

が、まだ存在している状態で、ソース上から

  abstract class Shape{
    void display(){
  }}

を削除(コメントアウト)してコンパイルしていませんか?

class Circle extends Shape{ ......

なんかの行をコンパイルするときに、コンパイラは extend 元の Shape クラスを探しに行く
わけだけど、既に Shape.class というファイルが存在していると、コンパイラはソース中に
Shape クラスの宣言がなければそれを使うよ。

コンパイルする前に、すべての .class ファイルを削除する癖をつけると、
良いと思うんだけど。
366364:02/05/25 22:32
>>365
ちがう。よく意図を読んでやれ。abstract修飾子を消したってことを362はいいたんだと思う。
367365:02/05/25 22:48
>>366

なるほど。たしかに。

この例が、abstract メソッドを含んでいないので、ちょっとわかりにくいかも。

http://www.gimlay.org/~javafaq/

この Java FAQ なんかをみると、abstract メソッドを含む abstract クラスの
例が載ってるので、そっちのほうがわかりやすいかも。
>>364−367
マジでありがとう。2chでこんなやさしくされると
涙出るよ。ちょっと行ってみます。
tryブロックの中でreturnで戻った時もfinallyブロックのコードが
実行されることを昨日知って愕然とした・・・
370デフォルトの名無しさん:02/05/25 23:15
やさしいね、みんな
371368:02/05/25 23:17
みてきました。
つまりメソッドだけそのクラスにおいといて
実装を別のクラスで出来るからプログラムが
汎用的になるってことかな?
違う気がする・・
インスタンス化させたくないクラスおくことの
意味がいまいち解らない・・

>>365
このfaqまじでいい!
ありがとです。
「どんな抜け方をしても絶対実行される」ときに使うのがfinally
だからな。Cとかだとこれがないん、でロックしたまま忘れてリター
ンしちゃったりlongjumpが使いにくかったりする。
373デフォルトの名無しさん:02/05/25 23:33
テストの点数を順位付けする30行くらいの
すごい簡単なプログラムを組んで見たんだけど
なんかきたないものになっちゃって、
ここにいる上級者の人達はどれくらいスマートに
書けるのか手本見せてもらってもいい?
>>373
言語不問でやった方がどろどろしておもしろそう。
スレ立てて>>1に仕様書いてみんなでやればいいじゃん。
スレ立てたらたたかれるだけだと思うが。
>>374 ソートってこと?
awkとsortコマンド組み合わせると1〜2行で書ける気がする。
377デフォルトの名無しさん:02/05/25 23:41
ソースのっけたら誰か採点してくれる?
>>376
forしか使ってない。。。

上級者が俺の同じ出力を出すのに
何行くらいで出来るのか見てみたい
>>373
BASICでいいなら100行以内に収めて魅せるぜ?
とりあえず、データの形式だしてみ。
380デフォルトの名無しさん:02/05/25 23:49
66,56,78,55,88,90,56,76,73,58の十人の点数(前から学籍番号1〜10)から
学籍番号|1 2 3 4 5 6 7 8 9 10
--------------------------------------------
点数   |66 56 78 55 88 90 56 76 73 58
順位    | 6 8 3 10 2 1 8 4 5 7
このように出力させるプログラム。
ちなみにおれは}をちゃんと1つに付き1つ改行して
31行だった。forだけで20行切れるつわものはいますか?
381デフォルトの名無しさん:02/05/25 23:52
あれ?表示おかしくなっちった。とりあえず
public class Juni{
public static void main(String args[]){
int array[]=new int[9];
int array2[]={66,56,78,55,88,90,56,76,73,58};
System.out.print("学籍番号 |");
for(int j=1;j<=10;j++){
System.out.print(j+" ");
}
System.out.println(" ");
System.out.print("------------------------------------------------");
System.out.println(" ");
System.out.print("点数   |");
for(int k=0;k<10;k++){
System.out.print(array2[k]+" ");
}
System.out.println(" ");
System.out.print("順位   |");
int count=1;
for(int s=0;s<array2.length;s++){
for(int i=0;i<array2.length;i++){
if(array2[s]<array2[i])
count++;
}
if(count==10)
System.out.print(count+" ");
else
System.out.print(count+" ");
count=1;
}
}
}
ちなみにJava歴1週間です。だれか一番きれいに書けるか、
そしてその人はJava歴何年か教えてちょーだい。
長い分になってすまん
ここを再利用するとか。

csvからhtml表生成最強言語は?
http://pc.2ch.net/test/read.cgi/tech/1021596367/
public class Juni{
public static void main(String args[]){
int array[]=new int[9];
int array2[]={66,56,78,55,88,90,56,76,73,58};
System.out.print("学籍番号 |");
for(int j=1;j<=10;j++)
System.out.println(j+" ");
System.out.println("------------------------------------------------ ");
System.out.print("点数   |");
for(int k=0;k<10;k++)
System.out.println(array2[k]+" ");
System.out.print("順位   |");
int count=1;
for(int s=0;s<array2.length;s++){
for(int i=0;i<array2.length;i++){
if(array2[s]<array2[i])
count++;
}
System.out.print(count+" ");
count=1;
}
}
}
384デフォルトの名無しさん:02/05/26 00:01
なるほど。forには{いらないんだ。
始めて知った。w参考になったよ>>383
23行。おれほんと無駄の多い人間だったんだな。

なんかこれとまったく違う書き方で
あっと言わせる書き方できるひといないっすか?
sort?とか使って。
public class Juni{public static void main(String args[]){int array[]=new int[9];int array2[]={66,56,78,55,88,90,56,76,73,58};
System.out.print("学籍番号 |");for(int j=1;j<=10;j++)System.out.println(j+"");System.out.println("------------------------------------------------ ");
System.out.print("点数   |");for(int k=0;k<10;k++)System.out.println(array2[k]+" ");System.out.print("順位   |");int count=1;for(int s=0;s<array2.length;s++){
for(int i=0;i<array2.length;i++){if(array2[s]<array2[i])count++;}System.out.print(count+" ");count=1;}}}
if(count==10)
の部分がないとたぶん微妙にずれるぞ。
>>386
あれ?幅違ってたの?あれ。
じゃ\tでごまかす。
public class Test {
 public static void main(String[] args) {
  System.out.println("学籍番号| 1 2 3 4 5 6 7 8 9 10");
  System.out.println("----------------------------------------");
  System.out.println("点数  | 66 56 78 55 88 90 56 76 73 58");
  System.out.println("順位  | 6 8 3 10 2 1 8 4 5 7");
 }
}
データ固定じゃつまらない。
もっと一般的な問題にしようよ。
おお、これは幻の配列指向プログラミングではないか!
390デフォルトの名無しさん:02/05/26 01:26
>>388
・゚・(ノД`)・゚・。
そんなことしなくても。。
じゃー誰か問題出してくり。簡単なんだけど
工夫したらすごいかっこよくなる奴。
一般的にやろうと思って Student クラス導入したりコンパレータ書いたりしてたら70行超えてしまった。
392デフォルトの名無しさん:02/05/26 01:38
>>391
見せてほすい。
相当見やすいんだろうな。
393デフォルトの名無しさん:02/05/26 01:39
C#スレかとオモッタ。
いや、別に点数ソートでも良いんじゃない?

class Data {
 int tensuu;  // 0〜100点
 int gakuseki; // 正の整数
}

class Junni {
 int[] getJunni(final Data[] data) {
  // dataと同じ長さの配列に順位を入れて返す。
 }
}
基準は短さ?
んー、7行スレみたいだな。まあいいや。
395デフォルトの名無しさん:02/05/26 01:51
class Junni {
 int[] getJunni(final Data[] data) {
  int[] hindo = new int[100], junni = new int[data.length];
  for (int i = 0; i < data.length; i++) {
   hindo[data[i].tensuu]++;
  }
  for (int i = data.length - 1; i > 0; i--) {
   hindo[i - 1] += hindo[i];
  }
  for (int i = data.length - 1; i > 0; i--) {
   junni[i] = hindo[data[i].tensuu];
  }
  return junni;
 }
}
import java.util.*;
class Student { int id; int score; int rank; }
class Rank {
  static void setRank(Student[] studentArr) {
    List studentList = Arrays.asList(studentArr);
    MyComparator comparator = new MyComparator();
    comparator.sortBy = "score";
    Collections.sort(studentList, comparator);
    Collections.reverse(studentList);
    int oldScore = Integer.MAX_VALUE, rank = 1, oldRank = 1;
    for (Iterator i=studentList.iterator(); i.hasNext(); rank++) {
      Student s = (Student)i.next();
      oldRank = s.rank = s.score != oldScore ? rank : oldRank;
      oldScore = s.score;
    }
    comparator.sortBy = "id";
    Collections.sort(studentList, comparator);
  }
  static class MyComparator implements Comparator {
    String sortBy;
    public int compare(Object o1, Object o2) {
      Student s1 = (Student)o1; Student s2 = (Student)o2;
      return sortBy.equals("score")
        ? (s1.score<s2.score ? -1 : (s1.score==s2.score ? 0 : 1))
        : (s1.id<s2.id ? -1 : (s1.id==s2.id ? 0 : 1));
    }
    public boolean equals(Object obj) { return this == obj; }
  }
}
public class Main {
  public static String spc(int cnt, int i) {
    StringBuffer sb = new StringBuffer("" + i);
    while (sb.length() < cnt) sb.insert(0, " ");
    return sb.toString();
  }
  public static void main(String[] argv) {
    int[] scoreArr ={66,56,78,55,88,90,56,76,73,58,100,100};
    Student[] studentArr = new Student[scoreArr.length];
    for (int i=0; i<studentArr.length; i++) {
      studentArr[i] = new Student();
      studentArr[i].id = i+1;
      studentArr[i].score = scoreArr[i];
    }
    Rank.setRank(studentArr);
    String ln = System.getProperty("line.separator");
    System.out.print("学籍番号");
    for (int i=0; i<studentArr.length; i++) System.out.print(spc(3, studentArr[i].id) + " ");
    System.out.print(ln + "点数  ");
    for (int i=0; i<studentArr.length; i++) System.out.print(spc(3, studentArr[i].score) + " ");
    System.out.print(ln + "順位  ");
    for (int i=0; i<studentArr.length; i++) System.out.print(spc(3, studentArr[i].rank) + " ");
    System.out.println("");
  }
}
397デフォルトの名無しさん:02/05/26 02:48
やべえ。すげえ
399デフォルトの名無しさん:02/05/26 02:56
たったいまjavaの本を読み始めたばかりのひよっこです。
さっそく最初のプログラムをじっこうしてみたら

Exception in thread "main" java.lang.NoClassDefError: 〜

みたいのがでてきちゃいました。
mainメソッドがない、みたいな意味かと思うんですけど
どうしたらいいんでしゃうか?
400デフォルトの名無しさん:02/05/26 03:01
>>399
歯を磨いてオナニーしてから寝る。
401399:02/05/26 03:03
>>400
オナニーしてからシャワー浴びてもいい?
402デフォルトの名無しさん:02/05/26 03:03
>>399
たぶん、クラスパスの設定
その段階だと手っ取り早いのはコマンドラインで
set CLASSPATH=
と打って、クラスパスをはずす。
403デフォルトの名無しさん:02/05/26 03:06
>>401
それだけは教えられない。
404デフォルトの名無しさん:02/05/26 03:10
set CLASSPATH=.;を追加しなさい
これを知ったときは
初めて、肛門オナニーを覚えた時のようだ
405399:02/05/26 03:11
>>402
クラスパスって??
>>404
SET CLASSPATH=%CLASSPATH%;.;
の方が良くない?
>>405
Java で使う *.class ファイルを探すディレクトリ/JAR ファイルの事。
実行しようとしたクラスがクラスパス上に無かったため ClassNoDefFound...
となった。
408399:02/05/26 03:20
>>404,406,407
できました。ありがとうございます。

ところで、これってプログラム実行毎にやらなきゃなんですか?
mainのあるクラス名を打っていない
という罠
java Hoge.class
と.classまで書いちゃったとか。
411デフォルトの名無しさん:02/05/26 03:29
>>408
オナニーする前に、
http://java-house.jp/ml/archive/j-h-b/021880.html#body
これを120回繰り返して読め。
412デフォルトの名無しさん:02/05/26 03:34
C言語から、今Javaで仕事するようになった者ですが。

変数にアンダースコア"_"がついてるのは、何か意味があるんですか?
特別な意味がありそうなんだけど、基準が見えません。
職場の先輩に聞いても、はっきりした答えが返ってきませんでした。

_data_、とか変数名の前後にこれをつける理由ちゅうか基準を知りたいです。
よろしくお願いします。
>>412
アンダースコア使うと動きが変わる/属性が変わる等の機能的な
規約とかはない。あるとしたらプロジェクトの命名規約とか
個人的な命名規約とかそんな所。
414デフォルトの名無しさん:02/05/26 03:40
>>413
機能的に変わることがないのはわかるんですが、規約的にどういう意味があるのかな?
って思うんですよ。

たとえばC言語の標準ライブラリのヘッダファイルだと、アンダースコアが2つ前後に
ついてるのはライブラリ内部処理用っぽい気がするんですけど、本当にそうなのか
確証がなくって。
メンバ変数なんかにつけてんじゃない?
>>414
まぁ C だとそういうのもあるが、Java はアクセススコープがしっかり
しているから "__" とかやんなくても良い。俺はめったに使わない。
Java Coding StandardのNaming Conventions

http://gee.cs.oswego.edu/dl/html/javaCodingStd.html#secName
418デフォルトの名無しさん:02/05/26 03:51
_value  という表記は、
static 属性のフィールドでしょう、多分。
自分はこれがあるとすごく見通しが良くなる気がするので自発的にやってるが。
クラスフィールドやインスタンスフィールドは、宣言の位置が遠いことが
おおいから、クラスフィールドやインスタンスフィールドである事がすぐ
分かるようにしとくため、ということかと。

インスタンスフィールドにはローカルな命名則つかうくらいならthis
つけとくほうがよいかと思うけど。
クラスフィールドはどうしよう。クラス名.フィールドかな。
this つけたら、this.thisVal みたいになっちゃうんじゃない?

ってそういうことじゃない?
>>420
this.value って意味だと思われ
422デフォルトの名無しさん:02/05/26 09:06
肛門オナニーってどうよ
>>422=404 ですか?

とか言ってみる。
>>422
肛門から射精します
プログラムが実行される
順番を教えてくれ
>>426
static public void main
NT認証を行うためのクラスってありますか?
429デフォルトの名無しさん:02/05/26 23:39
コマンドラインから適当に入力した文字で特定文字だけ表示させる方法を教えてください。
>>429
いや、勝手にフィルタリングすればよかろう。
431デフォルトの名無しさん:02/05/26 23:42
初心者ってプログラムが下手なだけならわかるんだけど
なぜ皆そろいもそろって日本語が下手なんだろう?
>>431
日本語出来る奴はプログラミング言語なんてあっさり覚えますから。
才能が無くても普通の人は本を読んだり試行錯誤したりしながら大きくなる。
少なくともこんな犯罪者まで出る掲示板には来ない。
433429:02/05/26 23:54
>>430
フィルタリングですね。検索して調べてみます。ありがとうございます。
>>431
ごめんなさい。
やりたいことを的確に表現できないんで曖昧な書き込みしかできませんでした。
434デフォルトの名無しさん:02/05/26 23:57
自分のプロセスが使ってるメモリ使用量ってわかるんでしょうか?
VMのメモリ使用量が分かればいいと思うんですが・・。
外部のそういうツールを使わないと無理でしょうか?
435429:02/05/27 00:00
やりたいのは

「こんにちわ/ありがとう/ごめんなさい」とコマンドラインから入力して
ありがとう だけ表示させる方法です。

これフィルタリング使えばできそうですか?
436デフォルトの名無しさん:02/05/27 00:01
StringTokenizer(スペル間違ってそうだが)使えばできるんでない?
437新車:02/05/27 00:04
ファイルから読み出して行数を引数で指定して戻り値をStringで
受け取るようなメソッドって存在しないんですか?
while分を使って文字ごとにreadしていくしかないんですか?
438デフォルトの名無しさん:02/05/27 00:07
>>437
それしかないです。
ねえよ。
440デフォルトの名無しさん:02/05/27 00:07
かぶった。ごめんちょ
>>435
入力する文字列は毎回同じなのか違うのか。
出力を選ぶ条件は何なのだ。

何を入力しても「ありがとう」と表示するプログラムでも良いのか?
442デフォルトの名無しさん:02/05/27 00:12
>>435
ちゃんと正確に伝わるように書かないと、>>441みたいに突っ込まれちゃうよ(w
443429:02/05/27 00:13
>>441
入力文字列は毎回違うようにしたいです。
出力を選ぶ条件は、途中で「出力したい番号を選んでください」みたいに
表示させて2を選ぶと「ありがとう」が表示されるようにしたいです。
>>443
ええと、いままでは1行にまとまった文字列の途中から、一部を
抜き出すんだと皆 思い込んでいたんだが、そうじゃなくて、

「1. こんにちは
 2. ありがとう
 3. さようなら
 番号は?」

とか表示して、「2」と入れたら

「ありがとう」

と表示する、とこういう事だったノカ実は?
>>444
もうちょっとやさしく。
相手は「こんにちわ」とか書いてる子供なんだから。

あと、入力の話はどうなった?
446デフォルトの名無しさん:02/05/27 00:36
あきらめてどっかいっちゃったかな。
import java.io.*;
public class Thankyou {
  public static void main(String[] argv) {
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    String str = null;
    while (true) {
      try {
        str = in.readLine();
      } catch (IOException e) {
        e.printStackTrace();
        break;
      }
      if (str != null && str.equals("こんにちは")) {
        System.out.println(str);
      }
      if (str == null || str.equals("quit")) {
        break;
      }
    }
  }
}
あたしはてっきりこういうことかと。
448429:02/05/27 00:46
>>444
一行で「こんにちわ/ありがとう/ごめんなさい」をコマンドラインから
入力(文字列の間に/で区切って)後、何個目?と表示して「3」と入れたら

「ごめんなさい」

と表示する感じです。

>>446
頑張っていました・・・
449デフォルトの名無しさん:02/05/27 00:52
public class KonNichiWa{

 public static void main(String[] args){
  if(args[0].equals("1"))
   System.out.println("こんにちは");
  else if(args[0].equals("2"))
   System.out.println("ありがとう");
  else if(args[0].equals("3"))
   System.out.println("さようなら");
 }
}
>>448
わかった。
1行入力は良いな? BufferedReader#readLineあたりを使う。
String line = reader.readLine();
とか。

次はbeginを0にしといて、
end = line.indexOf('/', begin);
で1文字ずつ'/'の位置を探す。

endが負なら'/'がbegin以後に無いと言うことなので、
line.substring(begin) で文字列が切り出せる。

endが0以上なら、
line.substring(begin, end)で次の'/'の前までを切り出せる。
begin = end + 1; としてこれを繰り返す。
451429:02/05/27 00:57
>>445
中学の宿題で明日提出期限なんです。
いくら考えてもわかりませんでした。。。
452デフォルトの名無しさん:02/05/27 00:57
StringTokenizer 使え
453デフォルトの名無しさん:02/05/27 01:00
StringTokenizer t = new StringTokenizer(line,"/");
454452,453:02/05/27 01:04
>>429
思いっきり前に出てるじゃんか。
StringTokenizer
もっとがんがん質問せいやー。
真剣な質問ならこたえたるでー。(寝てなければ)
>>429
せっかく436で答えが出てるのになんで、
>いくら考えてもわかりませんでした。。。
なんて答えが返ってくるのかと問い詰めたい。
457429:02/05/27 01:16
みなさま、ありがとうございます。
StringTokenizerを使って解決できました。

朝からネットでいろいろ検索してもわからなかったです。
StringTokenizerを使うというのは常識なのでしょうか・・・
458デフォルトの名無しさん:02/05/27 01:29
問題=特定の文字列で区切られた値を取り出したい
StringTokenizerの機能=特定の区切り文字でトークン(それ以上分解できない最小の単語に)分解する。
問題はStringTokenizerによって解決できるだろ?
>>429
罰として449のをコピペして提出しる。
460>>435:02/05/27 01:46
とりあえず435は
教えてくれたみんなにありがとうと表示したらどうなんだ?
461デフォルトの名無しさん:02/05/27 01:54
>>460
429=435=457じゃねーのか?
増毛したいのか?
463デフォルトの名無しさん:02/05/27 02:32
AのスレッドでZクラスのインスタンスを生成したら
Aのスレッドの一部になるの?
BのスレッドにZのインスタンスの参照渡して
そのインスタンスを操作したらAのスレッドとして動作するの?
マジ最近薄くなってきたんだよね
これって職業病?
スレッドは、処理の流れのことです。

A スレッドでZクラスのインスタンスを作成しようとすると、
その処理は A スレッドで行われます。

A スレッドで作成したインスタンスを B スレッドに渡す、というのは、
両方のスレッドからアクセスできる変数に入れる、ということでしょうか。
Action Listenerを外部クラスで定義した。
ボタンにaddActionListenerして、
ボタンが押されるとActionListenerが
呼ばれるのは良いんだけど
ボタンと一緒に配置してるテキストフィールドとか
チェックボックスの値をActionListener側から
参照する方法はあるんですか?
467466:02/05/27 06:18
age忘れた
468デフォルトの名無しさん:02/05/27 06:39
>>466
いろいろなやり方があるよ。
でも、簡単なのは内部無名クラスとして定義することだね。
469466:02/05/27 06:42
>>468
そうですね。
いくつかサンプルは全部内部無名クラスですね
でも、anyclass$1.classみたいなのが出来るのを
出来るだけ避けたいので外部クラスで処理してみたいです。
470デフォルトの名無しさん:02/05/27 06:52
>>466
単に、anyclass$1.classみたいなのが出来るのを避けるためであれば、
元クラスの方にボタンクリックで実行したいメソッドを用意しておき、
ActionListenerクラスでは、コンストラクタで元クラスのthisを受け
取るようにして、actionPerformedでは、その元クラスのメソッドを
呼び出す、なんていう方法でいいんじゃないの。
471466:02/05/27 06:56
>>470
そうですね。そうでいいんだと思います。
ちょっとわからないんですが、
>ActionListenerクラスでは、コンストラクタで元クラスのthisを受け
っていうのはどうやるんですか?
472デフォルトの名無しさん:02/05/27 07:08
>>466
ActionListenerをaddするためにnewしてるよね。
例えば、ActionListenerクラスをHogeListener、元クラスをMotoClass
とすると、HogeListenerのコンストラクタを
public HogeListener(MotoClass moto){
this.moto = moto;
}
とかする。当然、HogeListenerにはMotoClass moto;っていうフィールド
があるのが前提。
で、MotoClassの中で、addActionListenerしているところで、
hogeButton.addActionListener(new HogeListener(this));
等とするわけさ。
473デフォルトの名無しさん:02/05/27 07:14
>>466
言い忘れたけど、単に元クラスにimplements ActionListenerして
元クラスにactionPerformedを定義すれば、anyclass$1.classみた
いなのはできないけど、それは分ってやってるんだよね。
474466:02/05/27 07:29
>>472
ありがとう
できました。
>>473
あ!本当ですね。
ただ、ソースの見栄え的に
明確にMVCを分離するには
ActionListenerは別クラスに
定義すべきだと思いました。


同じ機能を、ボタンや、メニューItemや、ツールバー上のボタンに
割り当てたいときは、Actionを使うと楽だよ。
476デフォルトの名無しさん:02/05/27 07:56
>475
あっ、楽だね〜。
setEnabled したら全部に適応されるし。
背景スクロールはどんな感じで実装すれば良いですか?
478デフォルトの名無しさん:02/05/27 13:37
JavaでCDを再生する方法無いでしょうか?
AudioSystemクラスでは再生できないようなのですが。
JNIを使うというのはナシで。
>477
画面クリアの変わりに背景画像drawImageすればよいんでない?

>478
PureJavaでは無理。
JSDLでも使いませう。
ttp://www.libsdl.org/intro.jp/whatcanitdo.html
480デフォルトの名無しさん:02/05/27 16:04
指定したクラスがロードしているネイティブな外部プログラム(DLL等)を
ファイル名で知りたいんですが可能でしょうか?
外部のツールでかまわないのですが。
481デフォルトの名無しさん:02/05/27 18:02
Java勉強したいんですけど、教科書何にすればいいでしょう?
演習があって、やさしい(学術書や専門書じみたやつでない)やつが
いいんですけど。
482481:02/05/27 18:05
ああ、私書ける言語はありません。
>>481
ザ・Javaはクソなので注意。
まぁ、あの地味な表紙じゃ買わないか。
>>481
入門ソフトウェアシリーズの
Java言語が初心者にも見やすい。
が必ずもう一冊買うはめになる罠
485477:02/05/27 19:43
>479
それは1枚絵にしろということですか?
JAVAってゲームパッドは使えないの?
>>486
ホストOS側で工夫しないと無理。
>486
標準のAPIだけでは無理。

PureJavaでなくてよければ↓
DirectInputとかのラッパー
ttp://www.hardcode.de/jxinput/
Java3DのInputDeviceとしても使えるらしい。

あと、JavaGameProfileにも入力用のAPIが入るらしい。
490デフォルトの名無しさん:02/05/28 00:28
thisについて質問です。
よく
drawImage(img,0,0,this);とかaddActionListener(this);
と色々なところで使われますが、一体このthisは何者なんでしょうか?
その都度に必要なインスタンスの参照を渡すという解釈でよろしいのでしょうか?
491デフォルトの名無しさん:02/05/28 00:59
サブクラスで拡張し、そのインスタンスをスーパークラスのオブジェクトにした場合
拡張した部分は有効なのでしょうか?
また、有効ではない場合、スーパークラスからまたサブクラスのオブジェクトに
戻すと元のサブクラスだったときに設定してあった変数の中身などは
有効になのでしょうか?
>>490
× その都度に必要なインスタンス
○ カレントオブジェクト
>>491
>スーパークラスからまたサブクラスのオブジェクトに戻す
キャストするってこと?
>>491
public class Parent{
}

public class Child extends Parent{
public void showMessage(){
System.out.println("OK");
}
}

public class ExtendsTest{
public static void main(String[] args){
Parent child = new Child();
((Child)child).showMessage();
}
}
495デフォルトの名無しさん:02/05/28 02:23
>>494
試してみました。分っかりました!
スーパークラスのインスタンスになってる時はダメで、
また元に戻せば有効になるんですね!
ありがとうございました!!

>>492
ちなみにカレントオブジェクトってどういうのですか?
クソ素人野郎なので分からないことばかりですみません。

>>493
そのとおりです。
>>495
カレントオブジェクト:そのキーワード(this)が実行されているオブジェクト。
簡単に言うなら、その"this"という単語から、外に向かって
最初に行き着いたクラス(から作られたインスタンス)

だから、490の例でいえば、そのカレントクラスは前者:ImageObserver
後者:ActionListener を実装しているから、そのような扱いが出来るってこと。

で、thisの使い方は、ここで説明した「カレントオブジェクトの参照」の他に
もう一つあるのでちゃんと調べておくと良いです。
>495

class Parent{
public void showMessage(){
System.out.println("BAD");
}
}

class Child extends Parent{
public void showMessage(){
System.out.println("OK");
}
}

public class ExtendsTest{
public static void main(String[] args){
Parent child = new Child();
child.showMessage();
}
}
490より>>496さんへ
 なんとなくですが、わかりました。
 どうもありがとうです。
499デフォルトの名無しさん:02/05/28 13:47
SUNの所にあるチュートリアルを読んでSwingを勉強しているのですが、
以下のコードがよく分からないので質問します。

//コード
JButton convertTemp;
...
convertTemp.addActionListener(this);←ココが分かりません。
...
public void actionPerformed(ActionEvent event) {
...
}
//終わり

convertTemp.addActionListener(this);を実行するとなぜactionPerformed
を呼び出して実行するのでしょうか?

addActionListenerのプロトタイプは
addActionListener(ActionListener l)となっています。

「this」というのは、オブジェクト自身のことですよね?なぜ明示的にactionPerformedを
呼び出していないのに、それが実行されるのですか?

http://java.sun.com/docs/books/tutorial/uiswing/mini/thirdexample.html
500デフォルトの名無しさん:02/05/28 13:59
>>499
>なぜ明示的にactionPerformedを
>呼び出していないのに、それが実行されるのですか?
この場合、actionPerformedを呼び出すのは、JVMのイベントディスパッチ
スレッド。つまり、ボタンが押されたら自動的に呼び出されるという
こと。
また、このクラスは、implements ActionListenerと定義されていて、
public void actionPerformed(ActionEvent event) を定義しているの
で、立派にActionListenerとして働くことができる。
501499:02/05/28 14:26
>>500
どうもです。
うーむ、オブジェクト指向の基礎が抜けているので、もう一度復習してみます。
それとイベント関連のメカニズム、スレッドが分かってないんでそれも勉強します。
ありがとうございやした。
502デフォルトの名無しさん:02/05/28 16:47
public class A{
...
}

public class B{
...
}

public class Main{
...
}

のようなプログラムをコンパイルするためには
イチイチソースを3つに分けて
javac A.java
javac B.java
javac C.java
のようにコンパイルしなくてはならないのですか?
やってみりゃすぐわかるだろうが。
504デフォルトの名無しさん:02/05/28 16:57
やってみたんですが、
Main.java
をコンパイルするとpublicなclassやinterfaceは
A.java B.javaのように定義しろって言われました。
ですが、AというクラスでクラスBのインスタンスを生成し、
クラスBではクラスA型の変数を宣言しているので
切り離すことが出来ないんで、どうしたらいいんだろうと思いまして。。。
>>502は、あれだ。自分の時間を節約するためなら
他人の時間を平気で浪費しても罪悪感をもたないタイプだ。
切り離すことができないって、実際に分けてやってみたのか?

507デフォルトの名無しさん:02/05/28 17:01
実際に分けてやってみました。
もう一度やってみます。
クラス定義ファイルを分けたから
インスタンス化できないなんてことはない
文法がおかしいだけだろ
509デフォルトの名無しさん:02/05/28 17:14
おっしゃる通り文法ミスでした。。。
コンパイルできました。
申し訳ありませんでした。
ありがとうございました。
510   :02/05/28 17:16

質問ですが、

br は BufferedReader のクラス変数
str は String のクラス変数

であってますでしょうか?インスタンス変数ではないんでしょうか?

import java.io.*;

class Sample
{
....public static void main(String srgs[]) throws IOException
....{
........System.out.println("整数を入力して下さい。");

........BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
........String str = br.readLine();
........int num = Integer.parseInt(str);
........System.out.println(num + "が入力されました。");
....}
}
>>502
その前に main()にしれ
>>511
ハァ?
String srgs[]
>>513
ハァ?
ここは初心者が集まるスレなんですね?
>510
ローカル変数です。
>>511はあれだ、ちっとだけ Java を覚えて Main クラスを作るときに main(String srgs[]) にしたいんだな。
518   :02/05/28 17:31
>>516
クラスか、インスタンスか、と聞いて、ローカルと答えるのはなぜ?
519   :02/05/28 17:31
っていうか ローカルなら自クラス内で宣言しなきゃいけないと思うんだけど?
どちらも違います。
521   :02/05/28 17:32
>>520
んじゃ なんですか?
522デフォルトの名無しさん:02/05/28 17:34










スレが腐ってるから馬鹿しか いないぞ 質問者!!!!!










 
523   510:02/05/28 17:38
あっわかった。

br は BufferedReader のクラス変数
str は String のクラス変数

じゃなくて

br は BufferedReaderクラス の変数
str は Stringクラス の変数

でした。ありがとうございました。
>>510
あ?くろーとさんはうちじゃおことわりだよ!

よし、次
Cd = Cd
Ad = As
な感じのAlphaCompositeが欲しい。
おまいら こんな時どうしますか。
527422:02/05/28 18:40
私は、「フウリン」と申します。
現在クソスレを立てる仲間を集めています。
目的は家庭用ゲーム板にクソスレを立てまくることです。
その数に限りはなく、同時に立てたいのです。
一応目標は、150を目指しています。
そこで相談なのですが、クソスレを立てる仲間を募集しています。
現在、15名近くしかいなくて、同時に150立てるには絶望的です。
必ず一人一個というルールでやるので、150人ほしいのです。(規制くらわないために)
もし私の目的に応じてくれる方がいたら助かります。
では、最後に立てる状況までについて説明します。
1  まず、このコピペをさまざまな所に貼ってください。
2  そして、決行時間5月30日の午前0時、つまり夜の12時に家庭用ゲーム板にクソスレを1個立ててください。
   それで終了です。
なお、このレスに対する返答は要りません。
皆が、各自の意思で行ってください。
必ずあなたと同じ考えを持ち、クソスレを立ててくれる方は現れます。
やってはいけないことも、皆でやれば怖くありません。
一緒に家庭用ゲーム板を破壊しましょう!
では、5月30日の午前0時から祭りが始まることを祈りつつ、私、「フウリン」の話を終わらせていただきます。
みなさん、よろしくお願いいたします。



廃れた参照とはなんでしょうか?
529仕様書無しさん:02/05/28 21:13
>>510
br は BufferedReaderクラスのインスタンスもしくはオブジェクト
str は Stringクラスのインスタンスもしくはオブジェクト

と普通は言うと思うぞ
もしくは

br、strはmainメソッドのローカル変数

だ。細かいようだが言葉は正しく使わないとあとで泣きを見ることになる
530デフォルトの名無しさん:02/05/28 21:47
さらに細かいこと言うぞ。
参照変数の事を「オブジェクト」と呼ぶと痛い目に遭うぞ。

Vector v = new Vector();
Data d = new Data();
d.setA(1);
v.add(d);
d.setA(2);
v.add(d);
  ↓
javaは値渡しであることだけ頭に入れとくと、
「Aが”1”と”2”のDataオブジェクトを追加したはずなのに、
 Aが”2”のDataオブジェクトが二つ入ってる!」
と言うことになる。

俺は意地でも「〜オブジェクトへの参照」と呼ぶようにしている。
分かりにくいな。
Dataオブジェクトは”A”というメンバを持つと思ってくれ。
532   510:02/05/28 22:10
>>529 >>530
詳しい説明感謝です。その辺の説明を編集して本にはさんでおきます。

そういう意味で解釈しているんですけど、本に書いてある言葉が間違っているのかな?と質問させていただきました。

本に間違った説明があることってよくありますからね。
533HOE:02/05/28 22:22
>>531
メンバはC/C++系の呼び名と思われ

JavaはプリミティブTypeを除けば「ポインタ(Refference型)」しかないわけだから
オブジェクトは参照に決まっている。だから  >>530 の
>>俺は意地でも「〜オブジェクトへの参照」と呼ぶようにしている。
は正しい。

C++でいえば
BufferedReder *br = new BufferedReader();
と書くところを、クラスオブジェクトはReffer型しかないにきまっているJavaは わざわざ * をつかわないだけ。

BufferedReader br = new BufferedReader()
brはBufferdReaderクラスのインスタンスオブジェクト。
534HOE:02/05/28 22:32

C/C++
ポインタ dから参照するときに d->setA(1);

Java
実体から参照するときは d.x

何度も言うがJavaはプリミティブ型を除けばポインタ(参照)しかない。
わからなければ また質問しれ 管理age
いつもお世話になっています。また、質問をさせてください。

よく、
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
のようなコードを見かけます。ところが、最後にin.close();をしている本と
していない本があります。一般に、ファイルを開く場合なら、私の知る限り100%
closeしているのに、System.inのときは、たいていの教科書がcloseしていない
のです。
今のところ、動作に問題はないのですが、不安です。
System.inの場合もcloseした方がよいのでしょうか、それとも不要なのでしょうか?

よろしくお願いします。
不要。
使わないなら明示的に閉じてよし。
537535:02/05/28 23:20
>>536
やはりそうなのですか。ありがとうございます。
安心して寝れます。
インスタンスオブジェクト?
すみませんほんとDQNな質問なんですけど
バッファってなんですか?
540デフォルトの名無しさん:02/05/28 23:30
>>535を読んで、俺も不思議に思った。
>>536が「不要」と言い切る理由は、System.inは別に閉じる必要がないということ?
今見たら、結城さんの本ではたしかにcloseしてるんだよね。
彼は几帳面ということなのかもね。

あと関連して、普通の本では、バッファ付きのWriterでもあんまりフラッシュして
ないような気がするけど、closeするときにフラッシュされると考えてよいのかな?

横からスマソだけど、教えてください。
>>529, 530

「細かいようだが言葉は正しく使わないとあとで泣きを見ることになる」
「と呼ぶと痛い目に遭うぞ。 」

実際に泣いたり、痛い目にあうことは無いと思うけど、この台詞は
鋭く正しいことを言っていると思います。

人に何かを聞いたりするときに、自分の質問の仕方を細かく注意されたときは、
そこに重要な「自分が理解していない何か」があることがあります。

以下長文。しつこく説明されたい人用。

 int a = 5;
 int b = a;

このとき、b には、a に入っていた値 (5) がコピーして入れられます。
この後、a の中に入っている値を変更しても、b の中身は変化しません。

 StringBuffer sb1 = new StringBuffer("abc");
 StringBuffer sb2 = sb1;

ここではもともと sb1 に入っていた「 StringBuffer オブジェクトへの参照 」がコピーされて
sb2 に代入されます。コピーされたのはオブジェクトではなく、オブジェクトへの参照です。

この時点で、sb1 と sb2 は、同じオブジェクトを参照します。

 sb2.append("def");

この処理は厳密に言えば、sb2 の中身を変更しているのではなく、sb2 の中身である
「 StringBuffer オブジェクトへの参照 」を利用して、参照されている先のオブジェクトそのもの
を変更しているのです。

 sb1 = null;

このようにすると、sb1 の「中身を書き換える」ことになります。
もともと sb1 が指していた StringBuffer オブジェクトそのものにはなんの影響も与えません。
単に、
 「sb1 はもともと指していた StringBuffer オブジェクトを指すのをやめた、参照するのをやめた」
ということです。

sb1 はあのオブジェクトを参照するのを止めましたが、まだあのオブジェクトを参照している
参照型変数がありました。 sb2 です。

 sb2 = new StringBuffer("another string");

こうすると、sb2 に入っていた(あの)「 StringBuffer オブジェクトへの参照 」は上書きされ、
別な「 StringBuffer オブジェクトへの参照 」が代入されます。

こうなると、sb1 も sb2 も最初の(あの)オブジェクトを参照するのをやめたわけですから、
(あの)オブジェクトに含まれていた "abcdef" という文字列を取り出すことは出来ません。
どの参照型変数も参照していない(あの)オブジェクトは、(そのうち)ガベージコレクトされます。
542541:02/05/28 23:40
(続き。惰性で書いてしまったので、・・。)

もう使わないとはっきりしたオブジェクトがあれば、それを参照しないように、null を代入し、
ガベージコレクトの対象になるようにするべきです。使わないのにいつまでも参照を保持している
とき、その参照を「廃れた参照」と言います。メモリリークの1つです。

例えば Vector クラスでは、remove 系メソッドが呼ばれた際には、削除する要素以降の要素を
前に詰めて要素数のカウンタを減らすだけではなく、いらなくなった要素部分に null を代入し、
廃れた参照を保持しないようにしています。その部分には、

  /* to let gc do its work */
 // Let gc do its work

のようなコメントがあります。

Vector に 100 の要素を追加し、99 の要素を remove すると、内部の配列のサイズは 100 のまま
で、最初の要素以外は全て null で埋められます。null ばかりの長い配列を保持させておくのも、
メモリリークと言えます。このような場合は、trimToSize() を呼ぶとよいでしょう。
543HOE:02/05/28 23:57

>>535
ガーベジコレクタというのを知っているな?これはオブジェクトのメモリ領域を開放する際、
そのオブジェクトのファイナライザ(Ffinalizer)が呼び出されるというものだ。
C++でいうところの、デストラクタに当たる。(コンストラクタの逆だな)
しかし、Javaのfinalizerはいつ実行されるかわからないのだ。

「じゃあ、close()しなくてもいいんだ?」

そうじゃない。
メモリをたくさん積んでいる状態ではなかなかガーベジコレクタが起動しないからfinalizerが
動く前に一度にオープンするファイルの数を超えてしまうかもしれない、、、
用意されているfinalizerを当てにしないで明示的にclose()する*必要*があるのだ。
誰かがかたづけてくれるからと言って闇雲に捨ててばかりではいけないのだ。
544HOE:02/05/29 00:02
>> 536
> 不要。
> 使わないなら明示的に閉じてよし。

JVMは以下を意識して実装することを推奨している。
ファイナライザの中でthisをstaticなフィールドに代入してしまうとガーベジコレクタの対象外となる。
よっていつまでたっても close()されない。だからメモリは解放されずにずっとそのままだ。
ちゃんとclose()してね 
545デフォルトの名無しさん:02/05/29 00:03
>>539 ちったあ自分で検索汁!
http://yougo.ascii24.com/gh/05/000542.html
>>545
スマソ。助かりました。
547初心者厨:02/05/29 00:23
すみません、java script質問スレでjavaスレに逝けと言われました。
どなたかご存知でしたら教えて下さい。

爆裂拳さんのブロック崩しアプレットが
local: *****class not found
というエラーが出て動いてくれません。
昨日までは何事もなく動いてくれていたのですが、
本日SSI懐石を仕込んだ直後からエラーが出てしまい、
懐石タグを削除しても戻ってくれません。
同じフォルダに、必要なアプレット類は総てアップしてあります。
また、昨日までは何事もなく動いていたという事で混乱しております。

すみませんが、ご指導よろしくお願いします。
>536
自分で開いたストリームは責任もって閉じるべきだけれども、
よそから渡されたやつは勝手に閉じるべきではないと思う也。

自分もSystem.inをcloseしてるコードにはお目にかかったことが無い
俺はSystem.outもclose()してますが何か?
550デフォルトの名無しさん:02/05/29 00:39
>543 はこれで良いの?
551デフォルトの名無しさん:02/05/29 00:48
アプレットを作ったのですが
ローカルでは問題無く動くのに、サーバにアップすると
「アプレットは初期化されていません」というメッセージで止まってしまいます。
何か特別なディレクトリに入れなければならない。とか
パーミッションはこれで無ければならない。とか
気をつけなければならない事があるのでしょうか?
ご教授お願いします。
552デフォルトの名無しさん:02/05/29 00:55
たった今からJava始めたいので
何からすればいいですか?
Win厨房ですけどよろしくです
553540:02/05/29 01:01
>>548
そんな気がする。好みもあるかもしれんけど。たとえば、以下のコードで//を取ると実行時に例外になるね。
import java.io.*;

class StreamTest
{
public static void main(String[] args) throws IOException
{
System.out.print("Input : ");
BufferedReader br =
new BufferedReader (new InputStreamReader(System.in));
String str = br.readLine();
System.out.println(str);
// br.close();
System.out.print("Input : ");
br =
new BufferedReader (new InputStreamReader(System.in));
str = br.readLine();
System.out.println(str);
}
}
554デフォルトの名無しさん:02/05/29 01:01
>>551
解決しました。
内部クラスを作っていたのを忘れてました。
厨房すぎてごめんなさい。
>>552
何でもいいんじゃないですか?とりあえず今の情勢としては
Applet=Flash登場により影をひそめる
Servelet=そこそこ人気
てとこでしょうか。
555540:02/05/29 01:03
>>553で言いたかったことは、標準入出力はそのままにしておいた方が、
簡単そうという程度のことね。

あと、誰か、「クローズでフラッシュもされる」に確信が持てる話してくれませんか。
556デフォルトの名無しさん:02/05/29 02:07
>>555
Writerでは、「closeはflushしてから」とAPIドキュメントにある。
BufferedWriterのソースを見ても、ちゃんとflushBufferしてから
closeしている。
OutputStreamでは、FilterOutputStreamのcloseでflushされる。
BufferedOutputStreamでは、flushはちゃんとflushBufferされるよう
オーバーライドされている。
まあ、気になるならソース読んでみれば。
まえにStringTokenizerの話が出ていて
そのプログラムを作ってみようと思ったんですが
String msg=”おはよう、こんにちは、こんばんは”
とあって
String Tokenizer=new String Tokenizer(msg,",");
としたあとに
コマンドライン引数として3と入力したらこんばんはと
出るようするためにはどうしたらいいんですか?
import java.util.*;

class TokenA{
public static void main(String args[]){
String msg="おはようございます/こんにちは/こんばんは";
StringTokenizer st=new StringTokenizer(msg,"/");
System.out.println(msg);
int i=Integer.parseInt(args[0]);
このあとがわからないんです。ヒントだけでもお願いします。
すいません
  
int idx = 0;
String str;
while (st.hasMoreTokens()) {
  str = st.nextToken();
  if (idx == i) {
    System.out.println(str);
  }
  idx++;
}

番号に該当するメッセージがない(=不正な番号の入力)を検出したいなら、
フラグとか使って、 while を抜けた後にcheckとか。

まあ、凡庸な方法ですわ。

(ここで使ってるのは、0,1,2 というインデックスなので、1,2,3にしたければ、
手直しが必要。あと、コンパイルしてCheckしてないので、うち間違い勘弁)
>>558
こんな時間にどうもです。さすがですね。
イフの条件をまちがってました。
ありがとうございました。
>>541-542
> しつこく説明されたい人用

っっていうかお前がシツコイ!
>>546
ネタじゃないのか
>>556
えーと、ソースってどこにあるんすか?
ドキュンですみませんが、教えてくれませんか?
お願いします。
563デフォルトの名無しさん:02/05/29 08:24
>>562
JDKについてくるsrc.jarを解凍すれ。
ついてないよママン
ブラウザとかでよく表示されている「毎秒何バイトで通信してます」と言うのは
どこの値を計算しているのでしょうか?
java.net.Socketを眺めてみましたが、
バッファがどうのと言うのがそれなんでしょうか?
566デフォルトの名無しさん:02/05/29 11:41
>>565
ブラウザの中身は知らんけど、単に読み込んだデータの量を積算してるだけ
じゃないの。それで1秒ごとに計算すればいい。

567HOE:02/05/29 12:23
>>547

>>551
終わって鱈ごめん。init()での処理が完了していないのかも
変数の初期化エラー、画像などのロードエラー、などが考えられる。
よくあるのは画像ファイルの大文字小文字の問題。UNIXサーバーは区別するからね(Javaもだけど)
よくある解決策としてinit()内部を処理後とのmethodに分けて、原因を追及すべし。
newしているオブジェクトなどのコンストラクタなどにも目を配るべし。

>>555
プログレスバーの作り方を参考にするとよいです。
転送データをどういった単位(項目)でわり算するかと言うだけですが勉強になると思います。
>>566
1秒ごとに計算していたらもったいない。
569566:02/05/29 15:04
>>568
じゃ、どうするの。
JDK で Win アプリつくりたいんですが。
勝手に作れ。
class Rei{
public static void max(int a,int b){
if(a>b)
System.out.println(a);
else if(a==b)
System.out.println("a=b");
else
System.out.println(b);
}
public static void main(String args[]){
int a=Integer.parseInt(args[0]);
int b=Integer.parseInt(args[1]);

max(a,b);
}
}
これが実行できない理由は何?
たぶんstaticがいけないんだと思うけど・・・
えー・・・初心者です。
>>572
punlic class?

あと、どう動かないのか書きなされ。
>>573
本当に申し訳ございません。
コマンドライン引数を入力してないだけでした
きよつけます・・・
>>574
>きよつけます・・・

日本語くらいsytaxerror出すのやめてくれ。
576HOE:02/05/29 17:23
public static void main()
{
.....System.out.println("HOE") ; // ......をいれるとインデントされて読みやすくなるなり
}
>>576
普通全角スペース入れないか?
public static void main(String[] args){
 System.out.println("HOI");
}

コピペする場合は
 全角スペース -> TAB
 全角スペース -> 8個のスペース
 (スペースの個数はお好みでどーぞ)
で置換するとかで。
578デフォルトの名無しさん:02/05/29 17:33
Java アプレットの上にマウスカーソルがあるとき
カーソルのアイコンを自分の作成したアイコンに変更できますか?
j2sdk1.4
jikes1.15
この環境でjikesでコンパイルしようとすると
jarファイルが不正ですみたいなエラーが出る。
これは設定がおかしいの?
もしかして今のjikesだとj2sdk1.4はコンパイルできない?
580HOE:02/05/29 19:15
>>577
そらそうだよね^^; 
>578
Component.setCursor(Cursor)かな?
JDK1.1で使えるかは知らないけど

>579
rt.jarにクラスパス通ってる?
>>575
おいらも
きよつけよ〜っと
つまらん
pocketpcで動くpersonal Javaアプリを作りたいのですけど、
personal Javaについてのお勧め日本語サイトはあるでしょうか?
585デフォルトの名無しさん:02/05/29 21:12
カタカナの単語をアイウエオ順に並べたいんですけど
どうやったらいいんでしょうか?
アイデアだけでよいので。。。
>>585
Arrays.sort(Object[] array, java.util.Comparetor c)
×Comparetor -> ○Comparator
比較は、多分 stringA.compre(stringB) でイケルと思うけど…
全角カタカナと半角カタカナ混じってなければ…
あ、濁点付きのカタカナとか半濁音符付きカタカナって
どーなってたかな…
また間違った…
stringA.compre(stringB) -> stringA.compareTo(stringB)
おちけつ!!
591DQN:02/05/29 21:28
592デフォルトの名無しさん:02/05/29 21:53
今日Java始めたんだが、JavaってVBでいうelseifみたいのはないの?
if … {
 …;
} else {
  if … {
   …;
  } else {
   …;
  }
}

こういうのしか無理?
if(…) {

}
else if(…) {

}
else {

}
とすれば擬似的にelseifを表現できる。
擬似的?
みなさん、開発ソフトは何でしょう?
某ファンなんでJBuilderを買おうかと思うんですけど、マイナーでしょうか?
メジャーは何でしょう?
>>595
上の方を読め・・・
ほらネタスレだから。。
598デフォルトの名無しさん:02/05/29 22:02
>>593
そういう書き方もできるんだ。
ObjectPascalのelse ifみたいなものだね。
ありがと。

>>595
ちなみに漏れはSDK。
コンソールでちょっと作れるようになったら、JBuilderにするつもりですよ。
SDKっつーか、JDKだと思うけど、どうなんだろ?

あと、JDKとかって開発ソフトっていうのか?
使用しているエディタのほうがそれに近いと思うんだけど
それはちがう
俺は Eclipse だ。もう JDK + エディタには戻れん。
Eclipseって何すか?
603デフォルトの名無しさん:02/05/29 22:55
Eclipseって辞書索くと
eatと同じ意味みたいだな
605:02/05/29 23:00
JAVA+UNIXでJAVAからシェルのコマンドを実行してその戻り値を取りたいのですが。
どうしたら出来ますかね?教えてください。
java class < shell.sh
で出来ないかね?
608607:02/05/29 23:13
しまった、コピペ中に書き込んでしまった。
やる気なくした... 寝よ。
609605:02/05/29 23:16
>>606
それは、シェルからJAVAを呼んでいませんか?
JAVAのクラスのコードの中でシェルをコールしたあげたいんです。

Perlとかだとsystemコマンドとか。
VBとかだったら、COMのオブジェクト作ってexecuteとか?できたような。

そんなのを求めているのですが。どうでしょう。
610605:02/05/29 23:18
それです!!
ども、ありがとございます。

>>605
607が途中まで答を書き込んでいるんだよね。
サーバーサイドJAVAをやろうとTOMCATを入れようとしているのですが、
DOS窓で「startup.bat」を実行しても、新しい窓が一瞬で閉じてしまいます。
JAVA_HOMEやTOMCAT_HOMEなどの環境設定はしてあります。ブラウザに
http://localhost:8080/と打っても猫の画面まで逝けません
どなたかご教授お願いします。
Tomcat のバージョンは?
614612 ◆h.mc2Fv. :02/05/29 23:33
>>613
jakarta-tomcat-3.2.3
です
何だろ?
環境変数を 8.3 で書いてないとかかな。
616612 ◆h.mc2Fv. :02/05/29 23:49
>>615
「環境変数を8.3」とはどうゆうことでしょうか??(汗
617デフォルトの名無しさん:02/05/29 23:54
>>616
同じ現象で悩んだような気がする。
PATH or CLASSPATH の設定ミスだったような。。。
618ma,:02/05/29 23:58
>>616
ファイル名.拡張子
619612 ◆h.mc2Fv. :02/05/30 00:06
PATH     %JAVA_HOME%\bin;%PATH%
JAVA_HOME  c:\jdk1.3.1
TOMCAT_HOME c:\jakarta-tomcat-3.2.3
CLASSPATH  c:\jakarta-tomcat-3.2.3\lib\ant.jar;
       c:\jakarta-tomcat-3.2.3\lib\jasper.jar;
c:\jakarta-tomcat-3.2.3\lib\jaxp.jar;
c:\jakarta-tomcat-3.2.3\lib\parser.jar;
c:\jakarta-tomcat-3.2.3\lib\servlet.jar;
c:\jakarta-tomcat-3.2.3\lib\webserver.jar;
c:\jdk1.3.1\lib\dt.jar;
c:\jdk1.3.1\lib\htmlconverter.jar;
c:\jdk1.3.1\lib\tools.jar

以上を、Administratorのユーザー環境変数の所に設定してあります。
c:\jakart~1.3

みたいな書き方で書いたらどうかな?
621612 ◆h.mc2Fv. :02/05/30 00:20
>>620
すいません、言ってる意味が私には理解できません。
もう少しわかり易くご説明願えないでしょうか?;
つまり DOS の 8.3 のファイル(ディレクトリ)形式で書くわけだ。

 dir /x

で確認できる。
623デフォルトの名無しさん:02/05/30 00:33
tomcatよく知らんけど、あんなにCLASSPATHを設定せにゃならんもんなの?
必要なし。
625612 ◆h.mc2Fv. :02/05/30 00:41
はい、確かに必要ないと思います。
どうやれば動くのかわからずに足して逝っただけです。
ちなみに言い忘れていましたが当方Windows2000の環境です。
漏れのマシンにはJavaプラグインの1.3.1と1.4の両方が入ってるんだけど
(コントロールパネルに両方のバージョンのがある)、
アプレット立ち上げると、プラグインの1.3.1で起動します。
どっちのバージョンで立ち上がるかってのはどーやって決まるんでしょうか。
627612 ◆h.mc2Fv. :02/05/30 00:49
できました!
TOMCATのzipファイルをLhaplusではなく、
Lhacaで解凍したらできました。
・・・・・・・お騒がせしました・・・・・ペコリ
>>627
なんだそりゃ。
>>627
どうして、その行為に出たのかの経緯が知りたい。
630お願いします!:02/05/30 01:35
誰か>>448 のソース上げていただけませんか?
StringTokenizerを使うのはわかっているんですが、動くものを書くことが
できません。勉強不足は承知の上です。
優しい方お願いします。
631デフォルトの名無しさん:02/05/30 02:15
初心者すぎて誰も相手にしてくれないか・・・悲しい
>>630
まだいますか?
>>630
すみません、>448を見て思ったんですけど
コマンドラインから入力し、なにかを表示させたあと
コマンドラインにまた数値を入れる方法ってどうするんですか?
634633:02/05/30 02:58
>> 630
ってのは気にしないでください
まちがえた
635630:02/05/30 03:01
はい、います・・・
中学生ができた問題を3日考えてもできないので、
恥を忍んで書き込みしました。放置プレーされるほどレベル低いのかと落ち込んでいました。
レスありがとう
>>635
おれも初心者でここで昨日やり方聞いたんだけど
>>558さんが教えてくれたやり方じゃ駄目なの?
637デフォルトの名無しさん:02/05/30 03:16
>>636
問題はエラー処理と一番最初の入力項目を増やした時なんです。
項目3つだとIF文繋げて強引にできるのですが、スマートで汎用性のある処理にしたいのです。
>>633
その辺のことは、データの入出力に関することだから、
ストリームの勉強を一通りすべし。

一応 double 型の返り値を生成するメソッドを載せるので参考までに。
多分、動く・・・ハズ。

double inputNumber(){
 double number;
 BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
 System.out.flush();
 try{
  String str = keyin.readLine();
  double number = new Double(str).doubleValue();
 }catch(IOException e){
  System.out.println(e);
 }
 return number;
}
>>638
サンクス。いまからもう一度ストリーム関係
勉強しなおしてきます。
640638:02/05/30 03:29
>>633
ちゃんと前レス読んでなかったが、改めて読んでみたら、
この場合は別に数値化しなくても、
Stringクラスのままで、equalメソッドを使った方が簡単。

>>630
せっかく途中までやったのなら、未完成でも自分で考えたのを晒した方が良いよ。
どうせ恥じかくのは一緒なんだから。
641558:02/05/30 03:34
今なら私が教えてあげる特典つき。
import java.io.IOException;
import java.util.NoSuchElementException;
import java.util.StringTokenizer;

public class StringTokenizerSample {

public static void main( String[] args ) {

String message = new String( "おはよう/こんにちは/こんばんわ" );
byte[] inputBytes = new byte[1];
StringTokenizer tokenizer = new StringTokenizer( message , "/" );

System.out.println( message );
System.out.println( "どの部分を表示するか選んでください(1-3)" );
try {
System.in.read( inputBytes );
}
catch( IOException e ) {
System.out.println( e.getMessage() );
System.exit( 1 );
}
String inputString = new String( inputBytes );
int inputValue = 0;
try {
inputValue = Integer.decode( inputString ).intValue();
}
catch( NumberFormatException e ) {
System.out.println( e.getMessage() );
System.exit( 1 );
}

String outputValue;
try {
for( int i = 1; true; i++ ) {
outputValue = tokenizer.nextToken();
if( i == inputValue ) {
System.out.println( outputValue );
}
}
}
catch( NoSuchElementException e ) {
}

System.exit( 0 );
}
}
643642:02/05/30 03:37
とりあえず書いてみた
これで一応動く
644558:02/05/30 03:58
とはいったものの、これをどうしろって・・・。

まあ、いま一生懸命みてますよ。みてますとも。(笑)>>642
645558:02/05/30 04:00
まず、これは非常に良くないです。

String message = new String( "おはよう/こんにちは/こんばんわ" );

こう書くべきです。

String message = "おはよう/こんにちは/こんばんわ";

理由は、

http://java-house.jp/ml/

この辺とかから自力で探してね。
>>643
まじすげえよ。あなたおれのなかじゃ神だ。
おれもくれくらい出来るまで頑張ろうと思う
きっかけになったありがとう。
647642:02/05/30 04:08
>すでに別のメールで説明したように,new String("wahaha") というコンスト
>ラクタの役目を一口で言えば,「intern()の逆操作」であるからです.

>つまり,前者は,intern済のものを,未internに戻してから,再びinternする
>という,論理的に意味がない操作をおこなっています.意味があるとしたら,
>その副作用に基づく,GCシステムに対する負荷試験ぐらいでしょうね.

>しかし,後者はこれだけなら論理的に矛盾のないコードです.

ってとこだね。なるほど。勉強になったよ

なんとなく、コンストラクタを呼んだ方がいかにもnewしてるって感じで
そっちのほうがいいかなと思ってやっただけでした。
ちょっとまって
>630=>642
なの?
649642:02/05/30 04:12
いや、漏れは>630の参考になればと思って書いただけです。
っていうか、書いてる間に>632-641くらい進んでてビクーリ
650558:02/05/30 04:21
あと、カウンタとか、個数とか、そういう数を表す場合は、int を使うのが普通だと思います。
651642:02/05/30 04:28
???
それはどこのこと?
652558:02/05/30 04:33
なんでbyteが出てきたのかがよくわからなかったです。
import java.io.*;
import java.util.*;
public class StringTokenizerSample {
  static BufferedReader keyin;
  static int inputNumber(){
    int number = 0;
    if (keyin == null) {
      keyin = new BufferedReader(new InputStreamReader(System.in));
    }
    String str = null;
    boolean valid;
    do {
      valid = true;
      try{
        str = keyin.readLine();
      }catch(IOException e){
        e.printStackTrace();
        System.exit(1);
      }
      try {
        number = Integer.parseInt(str);
      } catch (NumberFormatException e) {
        System.out.println("正の整数を入力してください");
        valid = false;
      }
    } while (!valid);
    return number;
  }
  public static void main( String[] args ) {
    String message = "おはよう/こんにちは/こんばんわ";
    StringTokenizer tokenizer = new StringTokenizer( message , "/" );
    String[] messages = new String[3];
    int idx = 0;
    while (tokenizer.hasMoreTokens()) {
      messages[idx++] = tokenizer.nextToken();
    }
    System.out.println( message );
    System.out.println( "どの部分を表示するか選んでください(1-3)" );
    int inputNumber = inputNumber();
    inputNumber--;
    try {
      System.out.println(messages[inputNumber]);
    } catch(IndexOutOfBoundsException e ) {
      System.out.println("それは無いよ");
    }
  }
}
654642:02/05/30 04:39
InputStreamで読み込むにはbyte配列以外は無理だと思ったから。
もしかすると漏れの知らない方法があるのかもしれないけど、
少なくともInputStreamにはそういうメソッドはないっぽい。
655558:02/05/30 04:43
とりあえず今日はここまで。

何をやっているのかじっくり解析して、コメントとかをかくとよいかも。
がんばればもっときれいになる。ほんとうは、

 String message = "おはよう/こんにちは/こんばんわ";

の部分を変更して、もっと種類を増やしたりしたときに、
ソースコード中に直に書かれてしまっている 3 という数を、
(こういうのを「マジックナンバー」と言う)
書き直さなきゃならない、と言う部分も、直したいところ。

そのためには、文字列をばらした後で、いったん Vector とか、
ArrayListなんかに入れてやって、要素数を取得して、
その大きさを配列のサイズにしたり、

 どの部分を表示するか選んでください(1-3)

の表示に使ったりする。

とにかく、いろんな(まともな)人のソースを読むよろし。
がんば。
あ、そうか。
最初の文字列をだーっと1文字ずつスキャンして、'/' が
出てきた回数+1が、要素の数かぁ。。。

という手もあるなぁ。
657642:02/05/30 04:48
つーか、漏れは別にレクチュアしてもらいたいわけではなく・・・
割と適当に書いたコードなんでツッコミどころはあるだろうけど、
それより>630が理解できたかどうかのほうが問題だと思う。

あと、InputStreamから値を読み込むときにbyte配列を使うのは
常套手段だと思うので知っとかないとマズイと思うよ
658540 == 555:02/05/30 06:10
思いっきり、遅レスで、すまそ。

>>563
さんきゅー。解凍できた。
なんか、MFCで苦闘していた日々を思い出しながら、ソースながめてみた。

>>556
うーん、そういうことなら、結局、closeの前にflushはいらないということだよね。
closeのコード内でフラッシュしてるので。
とにかく、勉強になった。ありがとう。
659630:02/05/30 08:10
レス遅れてすみませんです。
枕を涙で濡らして寝ていました・・・
相当勉強になりました。本当にありがとうございます。
これからも宜しくお願いします!!
660HOE:02/05/30 11:02

久しぶりの良スレの予感・・・
ガンバロウ!
StringTokenizer tokenizer = new StringTokenizer( message , "/" );
String[] messages = new String[tokenizer.countTokens()];
662あのう:02/05/30 16:09
drawStringのときとSystem.outo.printlnを使って文字や変数を表示するときに
小数点以下2桁まで表示させるときにはどうすればいいんですか?
>>152
>>156

doSort() の実装の中で、ソートしたあとに、ソート済みの情報で、
super.sort(情報) してしまえば、metrix はクリアされちゃうし・・・。
doSort() の2回目の呼び出しは、黙って return してしまえ。
これで、0回の probe, compare, swap で、ソート可能。(笑)
664デフォルトの名無しさん:02/05/30 16:16
>>662
java.text.DecimalFormatを使えば?
665デフォルトの名無しさん:02/05/30 22:23
package abc;
public abstract class A{
...
}

____________________________

package abc;
public abstract class B{
public final A method(..){
...
}
}

のようなプログラムでA.javaはコンパイルできたのですが
B.javaをコンパイルしようとすると、
クラスabc.Aが見つかりませんといわれてしまいました。
で、両方とものソースのパッケージ宣言を外して再度コンパイルすると、
エラーは出ませんでした。
僕のパッケージ宣言の仕方がまずいのでしょうか?
>>665
作業ディレクトリに問題があるかも
667デフォルトの名無しさん:02/05/30 22:26
>>666
即レスどうもありがとうございます。
問題があるとは具体的には、どう直したらいいんでしょうか?
>>667

# pwd
/home/2ch

# ls
abc test.java test.class

# javac abc/A.java
って感じか?

C:\foo> mkdir abc
C:\foo> move A.java abc
C:\foo> move B.java abc
C:\foo> javac abc\A.java
C:\foo> javac abc\B.java
670デフォルトの名無しさん:02/05/30 22:41
>>668
>>669
Windowsなので>>669のようにやってみました。
ディレクトリ作成までは出来たのですが、moveコマンドが効かないっす。
C:\foo> move A.java C:\foo\abc
のようにしてもダメです。
って、これに関してはスレ違いですか?
>>670
mvだと思われ

>>668
スーパーユーザーで動かさない方が良いよ
672デフォルトの名無しさん:02/05/30 22:46
>>669
abcディレクトリに二つのファイルをコピーしました。
んで、
C:\foo> javac abc\A.java
C:\foo> javac abc\B.java
とコンパイルするとやはり同じエラーが出てしまいます。。。
>>672
エラーメッセージをコピぺしろ
674デフォルトの名無しさん:02/05/30 22:51
abc\A.java:10: クラス abc.A が見つかりません。
protected abstract void thread(A a);
675デフォルトの名無しさん:02/05/30 23:06
>>674
thread(A a);

method(A a);
676 ◆VB6.V49. :02/05/31 00:11
VS6Pro持ってますがVBとDevしか使った事ありません
VB6はもうだめなので、Javaを始めようと思います
VJでアプレットの作成をしたいですが、どこから手をつけましょうか?
MSDNのVJはJavaの基本解説が不親切
おすすめサイトを教えてください〜
最初がアプレットは邪道ですか?
VJが邪道
すいません、とっても低レヴェルな質問なのですが、

class suretsu{
 public static void main(String arg[]){
  int i, j;
  int A[7]; //この行
  int B[6]; //この行

  for (i = 0; i < 7; i++){
   B[i] = i;
  }
  for (j = 0;j < 8; j++){
   A[j] = A[j - 1] + B[j - 1];
  }
 }
}

コンパイルしようとすると']'がありませんとのエラーが出ます。
どうしてですか?
679 ◆VB6.V49. :02/05/31 00:46
>>677
そう言わないでお願いします
アプレットはVJに依存しないですよね?<わかって言ってるか不明
ActiveXにはウンザ‐リなのでアプレット!!
Javaは全く初めてなので、どこが有名サイトなんだろ…
int[] A = new int[7];
>>680
あぁ、そっか、基礎を忘れてました。
ありがとうございます。
682途中参加:02/05/31 01:33
>>655 その書き方だと ・・・/こんにちわ//こんばんわの場合、空欄部分を無視しちゃいます。
空欄認識させる方法を伝授してください。
683678:02/05/31 01:38
すいません、>>680さんの通りに直したら、他のエラーが出ます。
Exception in thread "main" java. long.ArrayIndexOutOfBoundException at suretsu main(suretsu.java:8)
がエラー文です。
どういう意味ですか?
ArrayIndexOutOfBoundException です。
それは単純に配列インデックスに不正な値を突っ込んでるだけだ

int[] hoge = new int[5];

hoge[5] = 1;

とかやってると出る。
686678:02/05/31 01:52
>>685
つまり、
Int[] hoge = new int[5];
と書くと、0〜5のインデックスではなく、要素が5個ということで、0〜4がインデックスということですね。
了解です。
ありがとうございました。
JAVAでインターフェイスを自分で作る時って
どんな設計の時なのでしょうか??
自分で作るクラスやメソッドはわかるのですが、
インターフェイスを作った事がありません。
作って実装した事がある方、そのソフト設計というか、
つくりを教えていただければと思います
688デフォルトの名無しさん:02/05/31 02:08
初心者です。
JSPで、Excelファイルを吐き出すプログラムを作っています。
Contenttypeでエクセルを指定してるのですが、吐き出すファイル名が指定できません。

出力するエクセルファイルの名前を指定する方法はありますか?
689デフォルトの名無しさん:02/05/31 02:20
下記プログラムで、なぜFontオブジェクトの初期化と変数soundの初期化が必要なのか
教えてください。

import java.applet.*;
import java.awt.*;

public class Graph extends Applet implements Runnable{
Thread kick;int loop=0;Font f;AudioClip sound;
int data[][]={{200,100,400,80},{150,120,50,200},
{180,150,300,150},{200,220,400,50}};

public void init(){
f=new Font("Helvetica",Font.BOLD,30);
sound = getAudioClip(getDocumentBase(),"sounds/cowbell.au");}
public void start(){
if(kick==null){
kick=new Thread(this);
kick.start();}
}
public void run(){
while (true){
if(++loop>=4) loop=0;
repaint();
try{
Thread.sleep(5000);
}catch(InterruptedException e){
}}
}
public void paint(Graphics g){
sound.play();
     g.setFont(f);
     g.setColor(Color.black);
g.drawString("A",5,80);
g.setColor(Color.yellow);
g.fill3DRect(35,60,data[loop][0],20,false);
     g.setColor(Color.black);
g.drawString("B",5,130);
g.setColor(Color.blue);
g.fill3DRect(35,110,data[loop][1],20,false);
     g.setColor(Color.black);
g.drawString("C",5,180);
g.setColor(Color.orange);
g.fill3DRect(35,160,data[loop][2],20,false);
     g.setColor(Color.black);
g.drawString("D",5,230);
g.setColor(Color.green);
g.fill3DRect(35,210,data[loop][3],20,false);
}
public void stop(){
if(kick !=null){
kick.stop();
kick=null;
}}
}
あなたは初期化しないの?
init()で行っているのは初期化ではないのか…
うーむ… 奥が深い…
>>687
JDKのソースでも見てください。
Collection API の java.util.List と
java.util.ArrayList, java.util.LinkedList とか、

もっと簡単なのってーと
java.util.Collections の sort(List list, Comparator c) や
java.util.Arrays の sort(List list, Comparator c) と
java.util.Comparator の関係とか。
693678:02/05/31 03:38

 ん
   こ
      な
          げ
               ま
                     く
                            り
と表示したいのですが、どこが間違えてますか?
コンパイルできるのですが、何も表示されません!
教えてください。m(__)m

class unko{
 public static void main(String arg[]){
  int i, j, k, l;
  int A[] = new int[8];
  int B[] = new int[7];

  for (i = 0; i < 7; i++){
   B[i] = i + 1;
  }
  for (j = 0; j < 8; j++){
   if (j == 0){
    A[j] = j;
   }else{
    A[j] = A[j - 1] + B[j - 1];
   }
  }
  for (k = 0; j < 8; k++){
   if (k != 0){
    for (l = 0; l < A[k]; l++){
     System.out.print(" ");
   } }
   switch (k) {
    case 0 : System.out.println("う");
     break;
    case 1 : System.out.println("ん");
     break;
    case 2 : System.out.println("こ");
     break;
    case 3 : System.out.println("な");
     break;
    case 4 : System.out.println("げ");
     break;
    case 5 : System.out.println("ま");
     break;
    case 6 : System.out.println("く");
     break;
    case 7 : System.out.println("り");
     break;
   }
  }
 }
}
単純なタイプミス
バグ取りくらい自分でやれ
ところで、配列 B は本当に必要ですか?
> どこが間違えてますか?

いくら初心者スレとはいえ、良いのかこれは?
>>695
それ言い出したら A だって要らんだろ。
ネタも大歓迎なんだからいーんじゃない?質問するのは。
っつか、 switch(k)も(以下略)
っつか、このプログラム自体(以下略)
いや、 >>693 の存在自体(以下略)
>>676
とりあえず、j2sdkをインストロールしろ
そして、
javax.swing.JAppletを継承したクラスを作れ
704デフォルトの名無しさん:02/05/31 10:38
初心者です。

JAVAアプレットのソースをもらって、htmlファイルに組み込もうとしたのですが、
ある特定のクラスファイルだけftp転送中にエラーが生じます。
ちなみにerrno=13なのですが、どうしてなのでしょうか?

スレ違いだったらごめんなさい。
よろしくお願いします。
>>704
EACCES かな? FTP ソフトがそのファイルの読み込みに失敗してると
思われ。ディスクエラーの可能性が高いから、スキャンディスク走ら
せてもう一度コンパイル & FTP 転送をやってみれ。
706HOE:02/05/31 11:30

>>704
$つきのふぁいるとかない?外部クラスも使ってるでしょ?
とにかくJarで固めよう
707デフォルトの名無しさん:02/05/31 11:37
JFileChooserを使って画像読みこんでJPanelにdrawImage()するとなぜか
JFileChooserのダイアログがあった部分の画像が切り取られてしまうんですが
おまえらどうにかなりませんか?
うるせーバカ
709デフォルトの名無しさん:02/05/31 12:04
JAVAでフライトシュミレーターって作れるんですか?
710デフォルトの名無しさん:02/05/31 12:20
>>709
JAVAでっっっ1!
作れないものなどっっっ!!!!
ないっっっっっ!!!!!!!!!
それはネタなのか…
>707
updateで変な事してるとかかなぁ
もしくはgetGraphicsで描いてたりとか

それだけじゃわからんちん
713JBUILDER6:02/05/31 12:45
JBUILEDER6ってコードのフォーマットできないんですか?
714678:02/05/31 13:45
>>694
ありがとうございます。
まだ見つからないけど、頑張ります!

>>695
別に System.out.printlnだけで書いてもいいのですが、
何となく、初項1、項差1の等差数列B[n]を階差数列に持つA[n]という数列を使ってみました。
715デフォルトの名無しさん:02/05/31 15:28
>>707
>>JPanelにdrawImage()するとなぜか
ということは、JPanelを継承したクラスで、paintメソッドで描いている訳
じゃないの?
画像を自動で再描画するには、paintメソッドで描くようにした方がいいよ。
716704:02/05/31 15:32
>>705,706
レスありがとうございます!
とりあえずスキャンディスクはしてみたのですが、やっぱり同じエラーになります。
当方アプレットに関しては全く知識がなく、ただhtmlソースに貼り付ければ動くと言われたので、
コンパイルとかもよくわからず・・・すみません。

$つきのファイルばっかりです。でもついているのでも転送できたのもありました。
Jarで固める、とのこと、調べて見ます。ありがとうございました。



使ってる FTP ソフト晒せ。
718デフォルトの名無しさん:02/05/31 15:47
JAVAのことさっぱりわかりませんが、課題で
人工無能の対話するものを作らなくてはなりません。
どなたかソース(?)教えてください。(もしくは公開しているHP)
言葉をかえるだけでいい!みたいなのありますか?
>>718
この書き込みをそのまま提出して君の人工無能っぷりを見せ付けてやれ。
720718:02/05/31 15:51
>>719
それですむなら、そうしたいよ。
>>718-720
ワロタ
722ぐぐる信者:02/05/31 15:57
>>718
探してみたのか?
Java がさっぱり分からないのは授業をさぼっていたからじゃないのか?
そもそも課題ではプログラムを作るように指定されていたのか?
724718:02/05/31 16:04
いろいろキーワードかえてさがしたんですけど
ソースのってるのがみつかんないんです。
授業きいてたんですけど、高度すぎて、ついていけません。
課題はプログラムをつくるんです。
一発で見つかっちゃったよ。
726718:02/05/31 16:19
>>725
ほんとですか!?ぜひ教えてください!
>>715

paintComponent() じゃなくて?
来月から Java ぷるぐらまになります。
よろぴこ。
どこが質問・相談なんだ?
730795:02/05/31 17:08
>>729
ヨロプク
731HOE:02/05/31 17:16

>>716
java -jar cvf hoge.jar *.class

アプレット実行ファイル名がhoge.javaだったら、hoge.classが作成されるよね?
classファイルの中には $ マーク付きのファイルもたくさんあると思う。
一つにまとめると、転送サイズも小さくなるよ。問題の解決にはならないと思うけど。

あと、HTMLへのアプレットの記述も書いてほしいな。念のため。
画像ファイルなどがあればそれらの画像ファイル名は転送後、ちゃんと大文字小文字は
ソースファイル指定の文字になっているかどうかを確認してみて。

classファイルはバイナリでFTP転送しないとダメだからね。

ローカルで動くんだから、後もう一息!がんばってね
732HOE:02/05/31 17:18

>>718
PerlとかCGIだったら理解しやすいかも。
Web裏技 というページに昔人工無能イチロー君があったけど(今はないかも)

処理のプロセスはみれば何となく分かると思うよ。
>java -jar cvf …



>jar cvf …

って何が違うの?
734HOE:02/05/31 17:21

>>733
あ、ごめん まちがえた

jar -cvf.....だ 混乱させちゃったかも。ゴメン
>718
これ提出すれ

public class Kadai {
  public static void main( String[] args ) {
    System.out.println( "私は無能です" );
  }
}
質問
実行結果を下記のように出すにはどうすればいいの?

A:\>java Histogram 56 25 67 88 100 61 55 67 76 56

ヒストグラム
0- 9|
10- 19|
20- 29|*
30- 39|
40- 49|
50- 59|***
60- 69|***
70- 79|*
80- 89|*
90- 99|
100- |*
最低点:25
最高点:100
平均点:65.1
jarつくるときってマニフェストファイル書かなくていいの?
いろいろ悩んでできなくて、マニフェストかいたら1発だった
という経験があるんだけど。
>>736
回答
そういう動作をするプログラムを書く。
>736

public class Histogram {
  public static void main( String[] args ) {
    System.out.println( "ヒストグラム\n0- 9|\n10- 19|\n20- 29|*\n30- 39|\n40- 49|\n50- 59|***\n60- 69|***\n70- 79|*\n80- 89|*\n90- 99|\n100- |*\n最低点:25\n最高点:100\n平均点:65.1" );
  }
}
740HOE:02/05/31 18:16

>>737
jarで固めるだけだったらいらないと思うな。(タブン
Beanなのかを示す場合に Java-Bean: True を記述する必要があったと思うけど。



>>739
オオイニワラタ
742HOE:02/05/31 18:41

main(String[] args) に入ってきた引数を数える。
(args.length とかで要素の数を求められますよね)

その要素がどの項目に割り当てられるべきかを条件分岐する。
(別にif文をたくさん並べても可能だし、もっとスマートに書くこともできますよ)

該当した場合、それぞれ用意しておいた各項目ごとのint型変数をインクリメントする

各項目の変数を args.length の分だけ 頭から System.out.println する

最低点
初期の値を0にして、その変数の値よりも比べる要素の方が小さい場合にのみ代入
する という条件分岐を 要素の数 args.length だけ行います。

最高点
最低点の逆です

平均点
一番簡単です。 要素を片っ端から順番に足していって args.lengthの数でわり算します。
0でわり算してしまうことに注意する必要があります。

Mathを使うことでもっと上手に求められることも覚えた方がよいかもしれません。

言葉足りない部分 みなさんのフォローお願いします
これを、ちょっと美しめに書くとしたら、みなさんならどんなふうに
クラス分けしますか?(mainメソッドの中で全部やるのも可能だけど)

histogram クラスに、データを追加していって、最後に、
自分で自分を表示すれ、てな風に呼びますか?

それと、平均、最高、最低などの値を求めることが出来る
データのあつまりって、なんと呼べばいいんでしょう?

途中参加するから意味不明なのか?俺は。

>これを、
どれを?
>データのあつまりって、なんと呼べばいいんでしょう?
データベース
745707:02/05/31 21:56
色々やってたら解決しました。サンキュ
>>743
美しいはともかく、クラス分けするほどのプログラムだろうか。
まあ、分けようと思えば分けられないこともないんだろうが。
エクセルでやればいいじゃん。
748736:02/05/31 23:22
ヒントをありがとうございます。
{56 25 67 88 100 61 55 67 76 56}の数字は例なので、
他の数字でも動くプログラムを書きたいのです。
よろしくお願いしますm(_ _)m



749 ◆J2SE/.yE :02/06/01 00:55
>748
なぁ。
どうすれば出来るかもうちょっと自分で考えて見ろ。
望む結果出力を得るには、どうゆう処理と計算が必要か。

何がわかって何がわからないのかを列挙して、
わからない部分だけを質問し直せ。
なーんにもわかってないんじゃないの?(w
プログラムなんてホントはやりたくないとか・・。
751デフォルトの名無しさん:02/06/01 01:08
ショートカットを作りたいんですが。
myJMenuItem.setAccelerator(KeyStroke.getKeyStroke('s'));
としたら、メニューでアイテムの横に
Unknown KeyCode :0x0 と表示されます。
誰か教えてください。
>748
課題の答え書いてもらおうとしてるだろ?

授業でもらったプリントをもう一回見なおせ!
753僕も初心者君:02/06/01 02:07
public class Histogram {
public static void main( String[] args ) {
int sum = 0;
int high = 0,low = 100;
double ave = 0;
String Title = "ヒストグラム",Saikou = "最高点:",
Saitei = "最低点:",Heikin = "平均点:";
String[] Item = {" 0 - 9|"," 10 - 19|"," 20 - 29|",
" 30 - 39|"," 40 - 49|"," 50 - 59|",
" 60 - 69|"," 70 - 79|"," 80 - 89|",
" 90 - 99|","100 - |"};
int[] num = new int[11];
StringBuffer[] Asterisk = new StringBuffer[11];
for (int i = 0;i < num.length;i++){
num[i] = 0;
Asterisk[i] = new StringBuffer();
}

try{
int InputNum;
for (int i = 0;i < args.length;i++){
InputNum = Integer.parseInt(args[i]);
Asterisk[InputNum / 10].append('*');
sum += InputNum;
if(InputNum > high)high = InputNum;
if(InputNum < low)low = InputNum;
}
ave = (double)sum / (double)args.length;
}
catch(Exception e){
e.printStackTrace();
}
System.out.println(Title);
for (int i = 0;i < Item.length;i++){
System.out.println(Item[i] + Asterisk[i]);
}
System.out.println(Saitei + (low));
System.out.println(Saikou + (high));
System.out.println(Heikin + (ave));
}
}
754僕も初心者君:02/06/01 02:14
>753
突っ込みどころ満載でしょうが、748氏の求める仕様をとりあえず満たすプログラムを書いてみました。
初心者なのでこんなのでも1時間半ぐらいかかってしまいました。
>>736
平均点が、キリの悪い場合は小数以下も何桁も続いてしまいます。
Cみたいに%3.1fとか桁数を合わす方法をまだ知りません。その辺はまた調べようと思います。
オープン系に行きたい2年目汎用男でした。ウザかったらごめんなさい。
755僕も初心者君:02/06/01 02:15
Javaって例外が分かりやすくてよいですね。
756 ◆J2SE/.yE :02/06/01 02:18
>>751
とりあえず、's' を 'S' にしてみる。
それでダメなら getKeyStroke(KeyEvent.VK_S,0) にしてみる。

>>753
答え書くなよ…。
てか、748=736 が
Asterisk[InputNum / 10].append('*');
を理解できるんだろうか…。
757HOE:02/06/01 03:27

大変お疲れさまでした  
きっと748さんも感激してくれることと思います。

あしたあたりさっそく次の問題で、「グラフを縦に」したいとか言っちゃったりして ^^;
758751:02/06/01 03:48
>>756
2番目の方法でメニューアイテムの右にSと表示される
ようになったんですが、反応ありません。何でですか?
>>756
748 が 「こういう風に書いたのですが、上手くいきません」 だったならともかく、
742 のヒントを見ていないかのようなレスだからなあ。
彼は答えをそのままコピーするくらいしかできないんじゃないかね。
何のために学校に行っているのだか。
760 ◆J2SE/.yE :02/06/01 04:22
>>758
そんなこと言われても…。
これでもだめ?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class MTest extends JFrame{
public static void main(String[] argv) {
MTest insta=new MTest();
insta.pack();
insta.setVisible(true);
}
public MTest(){
setJMenuBar(new MBar());
}

class MBar extends JMenuBar implements ActionListener{
MBar(){
JMenuItem item=new JMenuItem("えすぼたん");
item.addActionListener(this);
item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,0));
JMenu mn=new JMenu("めぬー");
mn.add(item);
add(mn);
}
public void actionPerformed(ActionEvent evt){
System.out.println(evt.toString()+" ::: "+System.currentTimeMillis());
}
}
}
761751:02/06/01 04:41
>>760
それ、できました。
うーん。何が違うのだろうか?
ちなみに私のはポップアップメニューなんですが
関係ないですよね?
762デフォルトの名無しさん:02/06/01 04:48
このスレにいる人ってまさかJavaマンセな人じゃないでしょうね?
763 ◆J2SE/.yE :02/06/01 05:01
>>761
setAccelerator() は、内部で
registerKeyboardAction() を WHEN_IN_FOCUSED_WINDOW で呼ぶことで、
ショートカットキーを登録します。
つまり、その JMenuItem を含むウィンドウにフォーカスがないと効かないわけですな。
ポップアップメニューは別ウィンドウとして扱われるので、ダメなわけです。はい。
public class Histogram{
private int[] values = null;
private int[] dist = new int[11];
private int sum = 0;
private int max = 0;
private int min = 0;
private double ave = 0.0;
Histogram(int[] arr){
if(arr == null || arr.length == 0)return;
values = (int[])arr.clone();
min = 100;
max = 0;
for(int i = 0; i < values.length; i++){
if(values[i] < 0 || 100 < values[i])throw new IllegalArgumentException("不正な点数が含まれています:" + values[i]);
if(min > values[i])min = values[i];
if(max < values[i])max = values[i];
sum += values[i];
dist[(values[i] / 10)]++;
}
ave = (double)sum / values.length;
}
void show(){
System.out.println("ヒストグラム");
for(int i = 0; i <= 10; i++){
StringBuffer buf = new StringBuffer();
if(i < 10)buf.append(i).append('-').append(i + 9);
else buf.append("100-");
buf.append('|');
for(int j = 0; j < dist[i]; j++)buf.append('*');
System.out.println(buf);
}
System.out.println("最低点:" + min);
System.out.println("最高点:" + max);
System.out.println("平均点:" + ave);
}
public static void main(String[] args){
if(args.length == 0){
System.out.println("数字(0−100)を入力してくだちい");
return;
}
int[] arr = new int[args.length];
for(int i = 0; i < args.length; i++){
try{
arr[i] = Integer.parseInt(args[i]);
if(arr[i] < 0 || 100 < arr[i]){
System.out.println(args[i]+"は範囲外ですよ");
}
}catch(NumberFormatException e){
System.out.println(args[i]+"は数字じゃないよ");
return;
}
}
Histogram hist = new Histogram(arr);
hist.show();
}
}
765764:02/06/01 05:25
自分で考えました
>759さん採点してくだちい
766751:02/06/01 05:50
>>763
ありがとうございます。
まだよくわかりません。
ポップアップだとショートカットつけられないんですか?
つけれるでぃしょ。
768デフォルトの名無しさん:02/06/01 06:37
>>751
Action使うとよいよ。
769初心者:02/06/01 10:27
byte a;
int b = 258;
a = (byte)b;
でaが2となる理由を分かりやすく教えてください。
お願いします。
>>769
00000000000000000000000100000010 = 258(32bits)
            ↓
00000010 = 2(8bits)
771デフォルトの名無しさん:02/06/01 10:39
>>769
258を2進数で表現して(32bit)、その下8bitを取ってみ。
772デフォルトの名無しさん:02/06/01 11:01
>>769 さんに便乗
b = 160;
のように 256 より下のとき、マイナスになりますがなぜですか?
773デフォルトの名無しさん:02/06/01 11:09
正確には127から255のようですね。
>>770-771 さんの様に考えると、>>772
1010 0000
になりますよね。で、これが-96になるのがわかりません。
775デフォルトの名無しさん:02/06/01 11:14
>>772,773
javaのbyteは符号付。javaで符号なしの整数型はcharのみ。
776デフォルトの名無しさん:02/06/01 11:22
>>774
おぉ、これが2の補数ってやつですね。
1010 0000 を反転して+1
0110 0000 で96
なるほど。サンクス。


みんな今日もお仕事なのね。
778デフォルトの名無しさん:02/06/01 16:26
Webサーバや独自プロトコルなどのソケット通信系xスレッドを使った
ソースを読んでみたいのですが、なにかオススメのオープンソースプロジェクトなど
あったら教えて下さい。

IPメッセンジャーfor JAVA
780JAVA勉強中:02/06/01 19:38
スレッドについての質問です。

 wait()メソッドは、synchronizedメソッド/ブロックを実行中のスレッドは、
取得しているオブジェクトロックを解放してから、何をしている(待っている)
んですか?

 notify()メソッドは、synchronizedメソッド/ブロックを実行中のスレッドが、
そのオブジェクトロック解放を待っているスレッドに対して、「もうすぐ、
オブジェクトロックを解放するよ。ちよっと待ってて。」みたいなメッセージを
送るんですか?

 もし後者(notify()メソッド)がそうなら、wait()メソッドは、オブジェクト
ロックを解放して、このnotify()メソッドのこの通知を待っているんですか?

長くなってスイマセン。
781780:02/06/01 19:42
訂正・・・

1行目「実行中のスレッドは、・・・」
            ↓
   「実行中のスレッドが、・・・」
782デフォルトの名無しさん:02/06/01 19:52
アプレットでliveconnectを使いたいんですが
moz3_0.zipはどこで手に入れればいいんでしょか。

netscape3なんて持ってないですよ・・(;´Д`)
>>780

いまいち日本語がわからん。
書き直せ。

「wait() がやってること」=「notify() の通知を待つ」というのは、
だいたい正しいと思うぞ。

784780:02/06/01 20:11
>>783
レスどうもです。
説明下手でごめんなさい。・゚・(ノД`)・゚・。

「wait()が待っているもの」=「notify()の通知」ってことでいいんですね。
wait() になったことが無いので、wait() のきもちはわからんが、w
notify(), notifyAll() で起こされるまで待っているのは機能の1つ。

あと、割り込まれるか、待ち時間が過ぎる、というのもある。
786デフォルトの名無しさん:02/06/01 21:00
便乗質問ですが・・
wait(1000)とした後、notify()されたら1秒待たずに
復帰するんですかね?
787質問っす:02/06/01 21:04
スレッドを使ったアプリでスレッド内部からログ出力を行う際に、
ログクラス内のキューにログ内容を溜めてから、
内部のスレッドで順次ログ出力するような機構が一般的でしょうか?
そのまま出力しちゃうとメインのスレッドがWriteされるまで
待たされますよね?
>>787
サーバサイドみたいに多数のスレッドがログを吐きまくるシステムではそれが
基本なはずなんだけどねぇ... 出来てないフレームワークが多いんだよねぇ...
WACs とか ServletWorks とか...
>notify()メソッドは、synchronizedメソッド/ブロックを実行中のスレッドが、
>そのオブジェクトロック解放を待っているスレッドに対して、「もうすぐ、
>オブジェクトロックを解放するよ。ちよっと待ってて。」みたいなメッセージを
>送るんですか?

notfiy()をコールしたオブジェクトでwaitしていたスレッドのうちの一つの
スレッドのステータスを「実行可能」に変更するのです。

JVMは、「実行可能」状態のスレッドから一つ(CPUの数とスレッドスケジューラの
実装にもよるけど)を選んで、CPUの実行剣を付与するわけです。
790789:02/06/01 22:55
実行権ね。

だから、notify()コールしたからといって、直ちにwait()していたスレッドが
動き出すとは保証されないのよ。
wait()していたスレッド以外に一つも「実行可能」な状態のスレッドがなければ、
直ちにwait()スレッドが動き出すのが道理だけど、少なくとも「notify()をコール
したスレッド」は「実行可能」な状態のスレッド(しかもその時点で実行中の
スレッド)だったわけで。
791流れ無視だけど:02/06/01 22:58
スピンロックかけといて「なんでCPU利用率100%なんじゃー」と騒ぐ人は
大体>>789-790みたいな話がわかってないんだよな。
792789:02/06/01 23:00
>>787
メンドウくさけりゃ、非常にバッファのデカイBufferedOutputStream
モドキをつくるとか。メモリをバッファに使いさせすればけっきょく
実行時性能は変わらんわけで。

JDK1.4でメモリマップドファイル使ってみるとどうだろね。
バッファサイズの制御や、read/writeの最適化がしやすくていいん
じゃない?
>>792
1.4 は Logging API があると思われ
794789:02/06/01 23:06
>>793
そうだった(藁
795789:02/06/01 23:10
>>786
もしどのスレッドからもnotify()コールされなかったとしても、1秒
(スケジューラの実装によるけど厳密には「1秒たった後でスレッドの
ステータスチェックのロジックが動作したとき」だね)たつと「実行
可能」に戻るだけです。
ネタはマ板か
http://pc.2ch.net/test/read.cgi/tech/1021817147/
でシル!!
797789:02/06/01 23:27
>>796
SJC-PレベルのJava言語初心者向け話題だけど・・・
798デフォルトの名無しさん:02/06/01 23:29
>796
思い切った誤爆だな(w
799796:02/06/01 23:52
スマソ
http://pc.2ch.net/test/read.cgi/tech/1021555964/
に書き込むつもりだった。
鬱だし脳。
HttpURLConnectionを使いたいんですけど、
なんでコイツはabstractなんですか?
どーやって使えばいいかサッパリ( ゚д゚)

抽象クラスは、サブクラスを定義して使うもんですよね
で、その抽象クラスの参照型変数に、サブクラスのインスタンスを参照させると。
間違ってます?

それでHttpURLConnectionですが、ttp://ash.jp/java/java_http.htm これの下の方を見ると、
URL urlObj;
HttpURLConnection urlCon;
urlCon = (HttpURLConnection)urlObj.openConnection();
と、URL.openConnection()を参照させてますけど、
URL.openConnection()はURLConnection型でそれも抽象クラス・・・
HttpURLConnection.disconnect()はabstructメソッドなのに平気で呼び出してるし・・・

いったいどーゆー原理なんですか?教えてください
801 ◆J2SE/.yE :02/06/02 05:47
>>800
>で、その抽象クラスの参照型変数に、サブクラスのインスタンスを参照させると。
>間違ってます?

間違ってない。
てか、これが理解できていてるなら、下のプログラムも理解できるだろ??

>抽象クラスは、サブクラスを定義して使うもんですよね

そう。abstractクラスは、インスタンスを作れない。
今回の場合の urlObj.openConnection() は、
URLConnection のサブクラスの HttpURLConnection の、さらにサブクラスの
インスタンス(への参照)を返している。
ところが、urlObj.openConnection() は、戻り値が URLConnection(参照型)なので、
このままだと、disconnect() は使えない。
なので、わざわざ HttpURLConnection にキャストして、HttpURLConnection(参照型)に
入れているわけだ。
これでいいか?
802こんにゃく計画:02/06/02 12:16
 趣味でJavaプログラムを組んでいるものですが、
わからないことがありまして、質問させていただきます。

 現在作成しております、プログラムでは、
日付および時刻の情報を保持するためにjava.util.Dateを
利用しています。

そのプログラム内で、Dateに対する同じ操作を
何度も行っている部分がいくつかありますので、
Dateを継承したクラス(DateEx)を作成して、
まとめてしまおうと思いましたが、
あるひとつの機能が問題にぶつかりました。

・問題の機能
「DateExのコンストラクタで、日付を表すString(yyyy/MM/dd形式)を
渡して、その値でDateExを初期化する、
日付が解析できない場合はParseExceptionをthrowする」
というものです。

・発生した問題
Dateを継承しているDateExのコンストラクタの最初に
superを呼び出さなくてはならないため、
文字列を解析するタイミングがなくなってしまう


Dateを包含する形でDateExを作成すれば問題ないのですが、
DateExはDateのサブクラスである必要がありますので、
今回はその方法がつかえませんでした。

現状は、DateExにstatic関数を定義し、その関数を使って
文字列からDateExを作成していますが、
初期化する際にミリ秒ならばコンストラクタなのに、
文字列はstatic関数で作成なので
直感的ではない気がしています。

まとめ:
@DateExはDateの継承クラスである必要がある。
ADateExはコンストラクタで文字列を渡して初期化する機能が必要。
BDateを包含したり、static関数は使いたくない

この条件を満たすクラスを作成するのは
無理でしょうか(設計ミス?)

よろしくお願いします。
803こんにゃく計画:02/06/02 12:17
 長すぎました(大汗


最後のまとめ部分書いておきます

まとめ:
@DateExはDateの継承クラスである必要がある。
ADateExはコンストラクタで文字列を渡して初期化する機能が必要。
BDateを包含したり、static関数は使いたくない

この条件を満たすクラスを作成するのは
無理でしょうか(設計ミス?)

よろしくお願いします。
Date を内包してなおかつ Date を継承するのも出来るし (Wrapper つうか Adapter つうか):

public class DateEx extends Date{
  private Date date = null;
  …
  public long getYear(){ return date.getYear();}
  public long getTime(){ return date.getTime();}

String を long に変換する static メソッド作って、その返値をスーパークラスの
コンストラクタに渡すことも出来る:

public DateExt(String dt){
  super(parseDate(dt));
}
private static long parseDate(String dt) throws ParseException{
  DateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
  return df.parse(dt).getTime();  // あってるかな?
}
805名無しさん@お腹いっぱい。:02/06/02 19:06
TOMCATをサーバにインストールして起動したら

%CPU %MEM VSZ RSS TT STAT COMMAND
0.0 6.8 102988 17644 con S+ /usr/local/jdk1.3.1/bin/i386/

こんな状態に・・・ひゃくめがっすよ・・・
これが普通なのかな?サーバ管理者の方、教えて!
>>805
普通だが 100 MB 全部使い切ってるわけではないし。
数字が気になるなら起動シェルを修正して使用メモリ制限すれば? (-Xmx だったかな)
807名無しさん@お腹いっぱい。:02/06/02 21:52
905ですが・・・

ヒープしているわけだから、使い切ってるでしょ。
他のプロセスは使えないんだから。

で、使用メモリの制限とはなにかいな?っと。

ありがとう。もー手探りでさ、なにが正しいのかわかんないよ。
808デフォルトの名無しさん:02/06/02 22:37
809デフォルトの名無しさん:02/06/02 23:09
EJBにて、Bean管理による2相コミットやろうとしてるんですが、
コンテナ管理にすべきですか?
わたしゃー、Bean管理にするとコーディングが面倒くさいし、
複数Beanにまたがるトランザクションの複雑さを考えると
コンテナ任せにした方が良いんでわないかと言うておるんですが・・。
聞いてくれないしぃー。。
810800:02/06/02 23:44
>>801
なるほど、合点がいきました
URL.openConnection()の返り値がURLConnection型なので、
URLConnectionのインスタンスを作るのかと思ってました
どうもありがとうございました
811デフォルトの名無しさん:02/06/03 00:03
はい、質問ですよ〜
文字処理に関係するクラスはなんでしょうか?
>>811
java.util.regex.Pattern
813デフォルトの名無しさん:02/06/03 00:10
>>812
それって1.4じゃないっすよね?
>>813
1.4です。
>文字処理に関係するクラス
なにがしたいんだよ
>>809
聞いてくれないじゃどうしようもないんじゃないの?
817デフォルトの名無しさん:02/06/03 00:30
あるフォーマット(汚い)で入力した文字列をあるフォーマット(きれい)に書き換えたいのです。
818デフォルトの名無しさん:02/06/03 00:30
JButtonに関する質問が2つあります。
1)JButton の大きさを調節したいのですが、
どのようにすればいいのでしょうか?

Component からsetSizeメソッドを継承しているので
てっきりこれで大丈夫なのだと思ったのですが、
まったく大きさが変わりません。

2)JButton に画像を表示したいのですが、
二つの画像で一つのテキストを(横並びで)挟むような
デザインにしたいのです。
コンストラクタでの設定では左に画像、
右にテキストという表示しか出来ませんし、
HTMLを使用しても、IMGタグは使えないです。

よろしくお願いいたします。
819こんにゃく計画:02/06/03 00:31
>>804

 教えていただいた方法で、難なくできました、

 もっと勉強する必要があることを痛感しました(汗。

ありがとうございます。
>>818
1)JButtonを置くものにsetLayout
2)JButton("<html><body><img src=\"a.jpg\">anytext<img src=\"b.jpg\"></body></html>");
>>818
1)はsetMinimumSize(Dimension)かな
822デフォルトの名無しさん:02/06/03 00:49
前までできていたはずなんですが、自作クラスが読み込めなくなってしまいました。
ServerクラスをClientクラスで呼び出すのですが、Server.javaをコンパイルした後にClient.javaをコンパイルすると以下のエラーがでます。

client.java:33: シンボルを解釈処理できません。
シンボル: クラス Server
位置 : Client の クラス
Server server;
^

どのようにすれば元に戻るのか、わかる人は教えてもらえませんか?
823デフォルトの名無しさん:02/06/03 00:52
>>822

パス
824逝って良しの1:02/06/03 01:26
何で仕事では誰も使ってないクライアントサイド・GUI系の
質問ばっか来るんですか?
趣味でやってるからだろ。
初心者用の書籍が必ずGUIをいじらすからでは?
>>824
PC で気軽に作れるから。
>>826
それはやはり,GUIのことを書かないと(プログラム)初心者がよって来ないからからかな
Java初心者,オブジェクト指向初心者には,GUI関連の項目はウザいだけなんだが

クライアントサイドなのは...趣味でやってるからです
>>824-828
いま作ってるGUI/クライアント系ソフトウェアは
ひょっとして誰も使ってくれないってことかな?
投資した10数万はどこへ逝く・・・・・・・
初めてバイトでやった仕事がクライアントサイドのjavaプログラムだったんですが
これって稀なんですか?
831デフォルトの名無しさん:02/06/03 14:58
あの。
sunのサイトなんかにあるAPIリファレンスって、
JDKにはついてこないのでしょうか。
探したけど見つかりませんでした。
インターネット常時接続ではないので困ってます。
一括ダウンロードの方法とかありましたら、教えて下さい。

すみません。下がってるので、あげます。

すいません プログラムの処理を5秒止める方法を教えて頂けませんか?

class Testmes
{
  public static void main(String args[])
  {
    System.out.print("こ");
  //5秒止める
    System.out.print("ん");
  //5秒止める
    System.out.print("に");
  //5秒止める
    System.out.print("ち");
  //5秒止める
    System.out.print("は");
  }
}
オブジェクトが破棄されたとき finalize() が呼ばれますが、
先にプログラムが終了した場合には finalize() は呼ばれないんでしょうか?

// 実験プログラムを作っても呼ばれませんでしたので確認。
新米プログラマ:「クソッ!」
私:「どうしたんだい?」
新米プログラマ:「Johnson(>>832)のやつが、調べもせずに変な質問をし
てくるんだ」
私:「それは困ったな。Johnson(>>832)は回線切って首つって氏んだほう
がいいね」
>>832
Thread.sleep(5000);

>>833
はい、そういう仕様です。
>>834 は、Sleep(int); を使ったプログラムを書いたことがないんだろうなぁ。
838832:02/06/03 17:05
>>836
Thread.sleep(5000);  って書けばよかったのか。 ありがとうございました。
>>834は、>>832のプログラムを完成させることができないだろうね。
841822:02/06/03 19:10
>>823
カレントフォルダのパスって何?
842名無し:02/06/03 19:18
RS6000というunixにWebsphereというウエブサーバが
乗ったアプリサーバーとAS/400という計算用サーバで
構成されているWEBシステムのメンテをポイ投げされ
て1週間後、AS/400の修理をしました。
それ以来、method not foundというエラーが出てしまい
全く解決できておりません。
JAVAが全くわからないものでどうしたらよいものかと。
ちなみにプログラムは全くいじってません。
よろしくお願いします。
843デフォルトの名無しさん:02/06/03 19:48
JCheckBoxで、チェックされた時のイベントを拾うにはどうしたらいいでしょうか?
ここの質問ひどいな
>>844
お前の質問が一番ひどい
848831:02/06/03 20:41
>>840
ありがとうございます。さっそくダウンロードしてみます。

下の方の「ここの質問ひどいな」は、俺なんかを指してるんだと思うけど、
ちゃんと教えてくれる人がいるのが、うれしいっす。
>>848
初心者の質問を理解できない無知がほえているだけだ。
850デフォルトの名無しさん:02/06/03 21:14
Javaのソースコードを読みたいんですが、
Javanoクラスライブラリと、Tomcatの
ソースコードのどちらが良いでしょうか?
851844:02/06/03 21:24
>>849
それはちがうYO
852デフォルトの名無しさん:02/06/03 21:51
プログラムド素人ですが最初に学ぶ言語としてJAVAを選択したいと思います。
http://www.amazon.co.jp/exec/obidos/ASIN/4797314451/qid=1023108002/br=1-2/ref=br_lf_b_2
/250-2302319-8394618
アマゾンで調べたらこの本がいかにもサイコーって感じィになってるんですが独学で学ぶにあたり
この本はオススメなんでしょうか?これにするか書店で平積みになってる下の本を買うか迷ってます。

http://www.amazon.co.jp/exec/obidos/ASIN/4797318570/qid=1023108394/sr=1-29/ref=sr_1_2_29/250-2302319-8394618
>>852
前者のページの「あわせて買いたい」がどうしてその組み合わせに
なるのか...
>>853
「あわせて買いたい」は、「あわせて買うといいですよ」 という意味ではなく 「あわせて買ってくれ」 という意味です。
>>842
そんなシステム使ってるんなら出入りしてるIBMの人間がいるだろ。
そいつにきけ。
856デフォルトの名無しさん:02/06/03 23:02
>>842

RS6000というUNIXは無い。AIXの間違いだろ。
そういう間違い、結構恥ずかしいぞ(w
857デフォルトの名無しさん:02/06/03 23:03
>>842

ちなみに言うとWebsphereというウェブサーバも無い。
WebSphere Application Serverというアプリケーション・サーバはあるが。
ageてまでイジめることなかろうに。
859デフォルトの名無しさん:02/06/03 23:08
すごく初歩的なんですが、以下のプログラムの実行結果が「-56」になるのはなぜですか?
int型の200という値をbyte型(-128〜127)に変換しようとしてるのですが、、、

class hoge{
public static void main(String args[]){
byte b;
int i = 200;
b = (byte)i;
System.out.println(+ b);
}
}
最近初心者スレでしか煽れない連中が増えてきたな
VB やってた頃のトラウマか?
えーと、オマエモナ。
>>859
200がbyteの範囲外ということを知っているのに、なぜあえてbyte型に
キャストしたいのかを書いたほうがいいのではないかと思う。もし単に
言語仕様を知りたいだけなら素直にそうかいたほうがいい。ちなみに
既出なので検索してみるのもよし。
>>859
「補数」でこのスレをさかのぼれ。つい最近その話は出た。

>>860
厨房隔離スレで息巻いてる連中、増えたな。
携帯JAVAスレで書き込もうかと思ったのですが、寂れてますし、
推薦図書スレはPart4の初っ端から荒れてるので(;´Д`)
こちらで質問させて下さいです。

この間Java対応携帯(auのA3012CA)に機種変したこともあり、
携帯Javaプログラミングに興味が出てきたので、
Javaの基礎から携帯Javaプログラミングを勉強したいと思っています。

それでまず手始めにamazonで検索してみました。
http://www.amazon.co.jp/exec/obidos/ASIN/4839906351/ref=sr_aps_d_1_1/250-4679237-7501868
しかなさげ、と思ったのですが、Java初心者にはつらい感じです。

Java初心者が携帯(特にau)Javaプログラミングを始めるに当たり、
(・∀・)イイ!! 本はありませんでしょうか?

スキルレベルとしては、VBとDelphiはそこそこ出来ます。
エディタなどの環境はWebで情報漁って一通りそろえた(はず)です。
初心者に乏しい知識をひけらかすのは正直、気持ちいい
866デフォルトの名無しさん:02/06/03 23:55
Javaでスレッドプログラミング。おもしろいねぇ。
Javaなんかつまんねって思ってたがそうでもないと思った。
867859:02/06/04 00:11
あれま、おもいっきり既出でしたね。板汚しスマソ
868751:02/06/04 00:35
751ですが・・・。
できん!わからん!Action??
どーしたらポップアップにショートカットつけられるんだ!!
誰か教えてください…。
869デフォルトの名無しさん:02/06/04 01:04
日本語を喋れ
>>868
たぶん
's'のコーテーションをダブルにするっぽい
871751:02/06/04 01:34
>>870
ダメでした。
こないだいただいたサンプルコードで、
メニューだと大丈夫で、ポップアップメニューだとダメであることが
わかったんです。その後Actionを使えという
アドバイスをいただいたのですが、マニュアル読んでもよくわからず
困っております…。どなたか助けてください…。
>>751
もういっかい整理して
やったことすべてをかきたまえ
873デフォルトの名無しさん:02/06/04 02:00
Session管理について暑くあつーーーくかたってくれるかたいませんか?
コピペでもいいです。できれば、500文字以上
874デフォルトの名無しさん:02/06/04 02:16
JAVAを勉強するのに、参考になるサイトを教えてください
>>1 のリンク先の、さらに 2〜6 辺りのリンク先を見れ。
876 ◆J2SE/.yE :02/06/04 02:25
>>871
メインのフレームの適当なコンポーネントで
registerKeyboardAction(ActionListener anAction, String aCommand, KeyStroke aKeyStroke, int aCondition)
を呼べばいいんだってば。
aCondition=WHEN_IN_FOCUSED_WINDOW で。

Action は使っても使わなくてもいい。
878デフォルトの名無しさん:02/06/04 02:47
J2SDK 1.4.0 の API ドキュメントの
日本語版はまだ無いのでしょうか?
j2sdk-1_4_0-beta-doc-ja.zip 落としたら英語だったし……。
>>878
まだっぽい。しばらくは 1.3 の日本語 API ドキュメントと併用すべし
880878:02/06/04 02:52
http://pc.2ch.net/test/read.cgi/tech/1021555964/6
に書いてあったよぉ〜。!。・゚・(ノД`)・゚・。
881デフォルトの名無しさん:02/06/04 03:31
JAVAでEXCELを動かせますか?
VBみたいに動かしたいです。
COM ブリッジとか言うの無かったっけ? それで出来るかも (詳しくは知らん)。
883デフォルトの名無しさん:02/06/04 04:56
>>864
俺と同じような人が居るのでかきこ
携帯JAVAの本はあまり出てないみたいだね
普通のJAVA本でもいいと思うけど他の人はどんなの読んでるんだろうね
携帯だとMIDPだよね、リファレンス見るしかないような気がしてきた
AUだとWEBなんかもあまりないし Iモードのページは結構あるのに
884デフォルトの名無しさん:02/06/04 05:09
>>864
そこに載ってる本は多分古いのであなたの携帯ではダメかもしれない
tp://www.amazon.co.jp/exec/obidos/search-handle-form/ref=br_ncs_/250-1990486-5306667
これの下のやつはちょっと新しい、買うんだったらこっちのほうがいいかも
でも高い
885afo:02/06/04 05:52
あの〜くだらない質問だと思います。
でも、ホンキで解らないので質問させてください。
環境はvine2.5をインストール「すべて」、j2sdk1.4.0、j2re1.4.0のRPMをインストールしました。

さて、
/usr/local/test/test.java /usr/local/test/test.class
という2つファイルがあります。

カレントディレクトリが/usr/local/testの場合、
# java test
と、打てば実行されるのですが、

絶対パスの場合
# java /usr/local/test/test
と、打った場合
>Exception in thread "main" java.lang.NoClassDefFoundError: /usr/local/test/test
と、出てしまいます。

なぜ、絶対パスだと上手くいかないのですか?
ちなみに
# javac /usr/local/test/test.java
は上手く行きます。

みなさん、お忙しいと存じますが、何卒よろしくお願いいたします。

また、PATHについてですが、以下の通りです。
export JAVA_HOME=/usr/java/j2sdk
export PATH=$PATH:/usr/java/j2sdk1.4.0/bin:/usr/java/j2re1.4.0/bin:
export CLASSPATH=.:/usr/java/j2sdk1.4.0/lib/tools.jar:/usr/java/j2sdk1.4.0/lib:/usr/java/j2re1.4.0/lib
>>885
javaまでフルパスで書いてみたら?
887デフォルトの名無しさん:02/06/04 06:34
>>885
javaのパラメータはパスを指定するのですか?
man java
888デフォルトの名無しさん:02/06/04 07:06
>>885
環境変数CLASSPATHに/usr/local/testを追加せよ。
javaの第一引数はファイルでなくパッケージとクラス名をしていする。
889864:02/06/04 09:22
レスthx!

>>883
正直、趣味の部分も多分に含まれてるので、
iモードじゃだめぽ…
それにJavaは全くのトーシロなので、
>リファレンス見るしかない
のは避けたい…

>>884
>そこに載ってる本は多分古いのであなたの携帯ではダメかもしれない
あ、確かに出版はこの携帯出る前だ。指摘ありがと。

>tp://www.amazon.co.jp/exec/obidos/search-handle-form/ref=br_ncs_/250-1990486-5306667
見られない罠…
>ブラウザのバグ?
とか言われた(;´Д`)
ISBNだけで構わないので教えていただけませんでしょうか?
新米プログラマ:「クソッ!」
私:「どうしたんだい?」
新米プログラマ:「Johnson(>>834)は馬鹿だから、sleep()メソッドが使えな
いんだ」
私:「それは困ったな。Johnson(>>834)は回線切って首つって氏んだほう
がいいね」
891デフォルトの名無しさん:02/06/04 11:33
サーブレットでURL変数を受け取る形で作られたPGはURL変数が送信されてこないとエラーになるのでしょうか?
また、URLパラメータが存在するかの処理はどのように行えばよいのでしょうか?
エラーで判別するやり方はしたくありません。
宜しくお願いします。

サーブレットAというものを作成しました。
サーブレットの呼び出し方は
https://xxx.xxx.xxx.xxx/servlet/A?aaa=0&bbb="2"」
のようにパラメータを2つ送信します。
サーブレットAはdoPost,doGet処理を行った後、次のようなプログラムが走ります。

Enumeration enum = req.getParameterNames();
Hashtable hash = new Hashtable();
while (enum.hasMoreElements()) {
   String paramName = (String)enum.nextElement();
   hash.put(paramName, req.getParameter(paramName));
}
このプログラムを走らせると、次の呼び出し方法の時、エラーが返ってくるのでしょうか?
https://xxx.xxx.xxx.xxx/servlet/A」(パラメータなし)

また、エラーになってしまうという場合は、サーブレットAが起動した時にURL変数が送信されてきているかのチェックをしたいのですが、どのようにすれば良いのでしょうか?
>891
やってみればいいじゃん。
      ワフールワッショイ!!
     \\  ワフールワッショイ!! //
 +   + \\ ワフールワッショイ!!/+
                            +
.   +   ###  ###  ###  +
      ( ´∀`∩(´∀`∩)( ´ー`)
 +  (( (つ   ノ(つ  丿(つ  つ ))  +
       ヽ  ( ノ ( ノ  ) ) )
       (_)し' し(_) (_)_)
>>981 (分かりにくい日本語だな)
エラーが返るって Exception が発生することか?
Exception は発生しません。パラメータが指定されてるかどうかは

if(request.getParameter("hoge") == null){
  ...
}

で判定できる。参考書のコピペで済まさないでもうちょっと自分で考えれ。
895891:02/06/04 12:17
>>894
ありがとうございます。
Exceptionが発生しない事は分かりました。

String result = (String)hash.get("A");
↑のプログラムではURL変数をresultへセットしています。
hashの内容がNullの場合、上記PGはExceptionを返すのでしょうか。

たびたびすみませんが、宜しくお願いします。
896デフォルトの名無しさん:02/06/04 12:22
>>895
発生しないよ。nullポインタが返されるだけ。
>>895
あのなぁ、それくらいのことは API リファレンスに書いてあるよ。
>>895
どうでもいいが健全な知識を得るなら健全な用語から。
899afo:02/06/04 12:51
>>886-889
THXです。
なるほど、第一引数はクラスを意味してるんですね。

CLASSPATHに/usr/local/testを追加したところ、どこからでも
# java test
で実行できるようになりました。

ありがとうございました。
タカラとギコ猫の件をくわしく知りたいのですが、
どこに行けばいいですか?
なぜそれをここに書くのか。
903900:02/06/04 14:21
しまった誤爆った。
スレ汚しスマソ。

>>902
thx!
904768:02/06/04 15:46
>>751
setAccelerator( KeyStroke.getKeyStroke("S") )
でできまっせ。
大文字にしなきゃだめ。
ちなみに "shift S" とかにしたら、
Shift-S って表示されるよん。
しまった、>>902にかかれたURLクリックしたの二回目だよ。
http://www.zdnet.co.jp/news/0206/03/nj00_giko.html
> 確かに、タカラは軽率だった。
>ギコ猫を商品化するという大胆な発想は、
>さすが玩具メーカーというべきだが、もう少し、
>上手いやり方があったように思える。
>ひろゆき氏を「ギコ猫商品化プロジェクト」の
>スーパーバイザーに迎えるとか……。
だからスレ違いだって。
907Cプログラマ(Java初心者):02/06/04 20:40
JavaのString変数って最大値(バイト数)ってあるんですか?
Cだとサイズ指定無って考えられないので…
>>907
一応無制限だが、UTF-8 化して 65,535 バイト (?) 以上の文字列は
シリアライズできないので注意。
909Cプログラマ(Java初心者):02/06/04 20:43
即レスありがとうございます!
>>907
とりあえずわざわざ制限を設けてはいない。メモリ量とか int の範囲に制限されるとかってのはおいといて。
必要な分だけ自動的に確保/解放してくれます。
>メモリ量とか int の範囲に制限されるとかってのはおいといて。
制限してるじゃんアフォよ
>>891
とりあえずお前はサーブレットなんぞいじる前に
コマンドラインからのプログラムでもやってなさいってこった。

PGってなによって一瞬思っちまった。
913afo:02/06/04 21:13
LANの中のプライベートアドレスのマシンで、
hoge.classというプログラムを動かしています。

wwwサーバに接続し、こちら側のIPをGETで、
フォームに送信したいのです。
そこで、ためしにIPを取れるかのテストのために

public class hoge {
public static void main(String[] args){
try{
Socket s = new Socket("hoge.jp", 80);
System.out.println(s.getLocalAddress());
}catch (Exception e){}
}
}

このようなプログラムを動かしてみました。
結果はこのように、プライベートアドレスが出力されました。
> /192.168.1.2

さて、皆さんにお聞きしたいのは、どのようにすれば、
グローバルアドレスを取ってくれば良いのでしょうか?

初歩的な質問だと思いますが、
よろしくお願いします。
NATの向こう側だろうなぁ。
サーバー側CGIで環境変数見れば。
>>913
1.ルータに訊く。
2.実際にどこかに接続して調べてもらう(例えばREMOTE_ADDRを返すようなCGIを作るとか)。
>>913
なんつうでたらめなプロトコルだ...
>>913
traceroute www.yahoo.co.jp の出力をキャプチャする。
(Max Hop 1 で良いか?)
>>917
無理やった...
>>913
こっちから送るんじゃなくて、向こうで取得せれ。REMOTE_ADDR を取得
するとか、X-Forwarded-For を取得するとか。
サーバー側でみるのもproxy経由だと限界あるしね。
やっぱ、ルータにきけば? 環境依存だけど。
>>913
IPなどわざわざ送信しなくても、wwwサーバ側で取得出来るものだと思うのだけれど?
922afo:02/06/04 22:05
>>914-921
レスありがとうございます。

うーん、私の環境のプログラム中では、グローバルアドレスが取れないつーことですね。
迂回するCGIでも作ってみます。

あと、ルータに聞くというのは、どんな感じなのでしょう?
プログラム中でルータを扱えるんでしょうか?
説明して頂くのが面倒なら、もう少し、キーワードみたいなものを教えて頂けると、
検索するのに大変助かります。

>>916
すみません、ひどいプログラムかもしれません。
できれば、ダメな点を教えていただければ嬉しいです。
>922
ルータによっては例えば動作ログを送ってくれるものもある。
ルータによっては例えばtelnetで接続すると応答を返してくれるものもある。
詳しくはお使いのルータの開発元にお問い合わせ下さい(答えてくれるかどうか判らんけど)。
924883=884:02/06/05 00:27
>>889
ISBNてなに? リンク見れないんなら MIDP で検索すればいい
でも上で書いたやつはJAVAの基本がわかってる人向けだから
JAVAの本も買わなきゃいけないかも
プログラムできるなら入門の次ぐらいがいいと思うけど
889サンはどんなものを作るの
俺もなんか作りたいなと思ってるんだけど889サンとすごく似てるな気がする
なんか情報交換とかしない?
925つーか:02/06/05 01:22
1 Hop のルーターの向こう側がグローバルアドレスなんて保障はどこにもない。
それから HTTP 勉強する気がないなら URLConnection クラス使っとけ。
とりあえず
http://www.google.co.jp/search?hl=ja&q=ISBN+%96%7B&lr=
すらできない奴とは組みたくないと思われ
強そうだ、この>>925と組んだら?
928学生初心者:02/06/05 02:09
Windows XPからjavaのサポートがなくなったと聞いたんですが、以前のバージョンで
市販されているソフトで独学するのに何か不具合等あるんですか?
しょうもない質問ですみません
929デフォルトの名無しさん:02/06/05 02:45
>>928
MSのJavaはいまだに1.1.3だから時代遅れアプレットにしか使えない。
本格的なJavaの勉強にはどのみちSunのJDKが必要になるから、
最初から付いてるぁどうかなんて関係ないよ。

ともかくOSが何でもまずはJDK 1.4をゲットすれ。
http://java.sun.com/j2se/1.4/ja/download.html
930学生初心者:02/06/05 03:02
≫929
親切な方ありがとうございます。さっそくやってみます。
931初心者見習:02/06/05 09:28
結局javaって人気なのか?javaで開発してある有名なソフトとかってあるの?
932デフォルトの名無しさん:02/06/05 10:41
>>931
iアプリ や applet は、みんな JAVA ですがなにか?
>>931
それを聞いてどうするつもりなんだろう?

仮に、emacs が Java で作られているって聞いたら
彼は「自分も Java を使えば emacs が作れる」とか思うのだろうか?

( emacs は Java じゃないです。念のため。 )
>>931
ない。以上。

935900:02/06/05 13:25
>>931
JBuilder
>>933
そんなことを言ってどうするつもりなんだろう?

   〜略〜

(936 は 931 じゃないです。念のため。)
937デフォルトの名無しさん:02/06/05 16:07
>>931
一応マジレスしておくが、Javaで作られた
いわゆる「デスクトップアプリ」(店で見かけるパッケージソフト)は
これくらいしかないと思う。
http://www.borland.co.jp/jbuilder/
http://www.justsystem.co.jp/justarks/

Javaでのデスクトップアプリなんてもう誰も真面目に取り組んでないよ。
Javaはアプリサーバでの内部処理とかの(簡単にいうとCGIの高度なやつ)
サーバサイドに完全に追いやられたってわけ。

だからそういうサーバサイドの開発に携わるんじゃなかったら
Javaなんか勉強しても無駄無駄。
デスクトップアプリに興味があるんだったらC#でもやってな。
デスクトップアプリ=店で見かけるパッケージ

ですか?おめでたいですね。
>>938 じゃないけど、単体切り売りで PC ショップに売ってるような
製品は Java なんてほとんど無い。でかいシステムを後ろに持った
フロントエンドとしては結構使われている。
940デフォルトの名無しさん:02/06/05 17:07
java で
@@
@@
@@
@@
と出力するアルゴリズムはどんなのが良いでしょう?教えてください
941デフォルトの名無しさん:02/06/05 17:08
上 間違いです
@@
--@@
----@@
------@@
です -−はスペースです
ループ (ってアルゴリズムか?)
>>941
System.out.println("@@");
System.out.println("--@@");
System.out.println("----@@");
System.out.println("------@@");
>>940
アルゴリズムと言語は関係ないと思われ
945デフォルトの名無しさん:02/06/05 17:31
すいません、解決したんで(^^;
946デフォルトの名無しさん:02/06/05 17:32
>>943は、for(;;) を知らないんだろうな。
947デフォルトの名無しさん:02/06/05 17:38
そうそう、forでやりたかった>>946
当然、わざと使わないで書いたんだと思うが。
949デフォルトの名無しさん:02/06/05 17:40
class Ex073 {
public static void main(String args[]){
for(int i = 0; i < 5; i++){
for(int j = 0; j < 20; j++){
if (i == j){
System.out.print("@");
} else if ( i + j == 10) {
System.out.print("@");
} else {
System.out.print(" ");
}
if ( i == j) { //break条件
System.out.print("\n");
break;
}

}
}
}
}
これで@がV字にでるはずじゃないんですか?
解決したんじゃなかったのか?
951デフォルトの名無しさん:02/06/05 17:42
また詰まった!
System.out.println("@@\n--@@\n----@@\n------@@");
>943
ずばり最適解。
ま、ループ思いつかね−やつはこの回答もできねーな。
954デフォルトの名無しさん:02/06/05 17:44
てかなんでソース書くとインデントがぐちゃぐちゃになるん?
モナー板でも行って来い
>>954
おまえのPGとしての人生は今終わった
957デフォルトの名無しさん:02/06/05 17:59
>>948
必死だな(w
>>956
2ちゃんねるの仕様を知らないとPGになれないのか?
959948:02/06/05 18:01
俺は 943 じゃないんだが、いかにもループを使った回答をほしいところに
わざと 943 みたいな回答を出した、と読んだんだが。

まあ、どう思われようがかまわんが。
System.out.print("\n");は実行環境に依存するコードなので止めたほうがいい
>>949
@
-@
--@
---@
----@
\nが改行復帰として機能するなら上のように表示されるはず
なぜV字になるのか簡潔に説明してみろ
>>959
まぁ自作自演厨の言うことだ。大目に見てやってくれ。
そろそろ次スレを用意ですか。
963943:02/06/05 18:11
>>961
自作自演あつかいかよ!
940の説明不足を遠まわしに指摘しただけなのに・・・(´・ω・`)
家帰って気が向いたら次スレ立てとく。
パート 10 で体裁は今までどおりにするぞ。
>>943 = >>959 = >>961
このスレで自慰するなよ
困った坊やだ。
本家自演の登場です
本家自演のご登場です
969943=963:02/06/05 19:12
>>965
違うというのに・・・もーいーや
自演で自慰でいいからもうレスしないで下さい
新スレ立てるの?
古巣に戻って、Java相談室を使えばいいんじゃない?
似たようなスレが並立すると、混乱してしまう。
全部同じスレだから混乱はしないと思うが。
初心者用のスレが欲しいです
ここのスレ名に「初心者」って書いてあるの読めなかった?
974デフォルトの名無しさん:02/06/05 21:26
>>949
class Ex073 {
  public static void main(String args[]){

    int h = 4;
    int n = 0;

    for(int i = 0; i < h; i++)
    {

      for(int j =0; j < n; j++)
      {
        System.out.print(" ");
      }
      
      System.out.print("@");
      
      for(int j =0; j < (h-n-1)*2; j++)
      {
        System.out.print(" ");
      }
      System.out.print("@");
      for(int j =0; j < n; j++)
      {
        System.out.print(" ");
      }

      n++;
      System.out.println(" ");

    }
  }
}
//これで@がV字にでるはずじゃないんですか?
975デフォルトの名無しさん:02/06/05 21:27
初心者無視スレは、あっちはあっちで マターリ やってるようだから
別スレにしてしまってもよかろう。
977あっちの1:02/06/06 00:20
ごめん
できこごろだったんだ・・・・
あ、エロい1さんだ (w
979デフォルトの名無しさん:02/06/06 15:25
次スレかどうかの瀬戸際のようですが、質問させてください。

Swingでウインドウプログラムを作りはじめた(本見ながらです)初心者です。
そのなかで、packというメソッドがよく使われているのですが、いまいち
意味がわかりません。ヘルプを見ても、???。

そもそも必要なものなのでしょうか?何のやくに立っているのでしょうか?
どなたか教えて下さい。
よろしくお願いいたします。
残念ながら新スレできてました。
>>979
わからないならつかわなくていい。
982新スレの1:02/06/06 16:02
新規質問は下記へ

【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/
983新スレの1:02/06/06 16:07
>>981
分からないなら答えなくていい。
>>984
正直、わからないならつかわなくていいものですよ。
うんこしながらオナーニする方法を教えてください
スレ違いです。
コソーリ1000を目指します
ジャーマしないデネ
989
【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50
1000ゲットー
【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50
【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50
【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50
【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50


【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50

997 :02/06/07 13:52

【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50


998 :02/06/07 13:53

【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50




【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50





1000新スレの1:02/06/07 13:53
次スレは↓

【初心者】Java質問・相談スレ2【大歓迎】
http://pc.2ch.net/test/read.cgi/tech/1023319551/l50


10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。