サイザー専用JAVA演習場
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
2006/12/08(金) 18:50:350810ネカマ由紀恵
2007/01/04(木) 18:12:26サイザータソがどの辺りで
どの方向を向いているのか
ちょっと掴めなかったもので…。
0811デフォルトの名無しさん
2007/01/04(木) 18:47:07おい、昨日↑は間違いって教えたろ。
>import 他人を短い名前で呼べる。「山田太郎」→「太郎」
この人いい例だしてくれてんじゃん、スルーすんなよ。
0812サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 18:53:10他人を短い名前で呼べる。「山田太郎」→「太郎」
この人いい例だしてくれてんじゃん
は単に分からんかった。どうもすみませんでした。_(。_。)_
0813デフォルトの名無しさん
2007/01/04(木) 18:59:150814サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 19:17:110815デフォルトの名無しさん
2007/01/04(木) 19:20:270816サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 19:24:15ってかextendsの疑問は解決した。もっと深い部分が有るかもだけど。
0817デフォルトの名無しさん
2007/01/04(木) 19:35:080818サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 19:38:07コンパイルエラーになる。
0819サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 19:40:320820デフォルトの名無しさん
2007/01/04(木) 19:45:49import無しでもextendsは可能だし。
0821C++専
2007/01/04(木) 19:45:54importしないでもextendsはできるんだぜ?
さあそれをどう説明するんだ?
0822サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 19:48:45サブインタフェースはスーパーインターフェースのメソッドを引き継ぐ
有ったんだけどサブインタフェースにもスーパーインタフェースのメソッド
書かんといかんの?
0824デフォルトの名無しさん
2007/01/04(木) 19:51:04いや、書かんでも勝手に引き継ぐ。
0826サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 19:53:080828デフォルトの名無しさん
2007/01/04(木) 19:56:43普通はJavaの標準クラスライブラリと呼ぶ。
で、標準クラスライブラリだろうが自作のクラスだろうが
サードパーティ製のクラスライブラリだろうが、Javaは別に扱いを変えるわけではない。
0829C++専
2007/01/04(木) 19:57:41不正解。
既存の標準クラスもimportなしでいけます。
残念。
余計混乱するかもしれないが、
import自体はC++のnamespaceに近いかもしれんな。
0830サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 19:59:15その後extendsするからシンボルエラーが出ない。
0831デフォルトの名無しさん
2007/01/04(木) 20:02:25ならばimportなしでそのパッケージに含まれてるクラスを呼び出すにはどうしたらいいんだろうね?
考えて解答よろ。
0832デフォルトの名無しさん
2007/01/04(木) 20:02:53インタフェースの話な。そう、それで大体あってる。
まあ細かいことを言うと、クラスがabstractで宣言されてる場合は
implementsしてるインタフェースを必ず実装するというわけでもないのだが。
0833サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:02:54import.java.io.*;するだけで使えるって覚えてた。
0835サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:06:400838デフォルトの名無しさん
2007/01/04(木) 20:21:19じゃそんな感じでextendしたらどうなるんだろうか?
考えて解答よろ。
0839サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:23:040840デフォルトの名無しさん
2007/01/04(木) 20:24:37エラーがでるかどうか。
0841サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:28:380842デフォルトの名無しさん
2007/01/04(木) 20:30:060843デフォルトの名無しさん
2007/01/04(木) 20:30:08コードを組んで実行したときはそういう癖をもういい加減つけてくれ。
0844サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:31:46io.BufferedReader br = new BufferedReader(new InputStreamReade
0845サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:32:500846サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:34:550847サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:40:420849サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:42:170850デフォルトの名無しさん
2007/01/04(木) 20:42:53つか、お前は何をやっているんだ?
パッケージ.クラスでやってみろっていってるのはextends対象のクラス、
つまりソースコード上ではextendsの直後に来るクラスのことなんじゃないのか?
ちなみに、パッケージ.クラス形式のクラス表記のことを「完全修飾名」とか「FQCN」とか
呼ぶんだぜ。
0851C++専
2007/01/04(木) 20:43:45そこがimport、extendsにかかわってくるんだよ。
オマエ自身がそのあたりが気になる粘着体質っていったんだろ。
自分の書き込みに責任持てよ。
0852デフォルトの名無しさん
2007/01/04(木) 20:44:40よって、ioがクラス名っていうのは(基本的には)ありえない。
0853デフォルトの名無しさん
2007/01/04(木) 20:45:48importとパッケージは切っても切れねー関係。
よってテキストでもimportの説明の前にパッケージの話出てきてるはずだが違うか?
0854サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:47:280855デフォルトの名無しさん
2007/01/04(木) 20:48:230856サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:49:120857サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:51:460858デフォルトの名無しさん
2007/01/04(木) 20:55:55「java.io」っていう、ひとつのパッケージ名。
0859サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 20:59:280860デフォルトの名無しさん
2007/01/04(木) 21:19:02コンパイルできたか?
0861サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 21:55:000862サイザー 光太郎 ◆rbhHqF51rI
2007/01/04(木) 21:56:070863デフォルトの名無しさん
2007/01/04(木) 23:38:040864サイザー 光太郎 ◆rbhHqF51rI
2007/01/05(金) 08:12:57import java.applet.*;
import java.awt.*;
public class Ex3 extends Applet
{
public void paint(Graphics g)
{
g.drawLine(10,10,100,100);
}
}
でやってみたんだが extends無しでもコンパイル通った。なんでやろ?
謎Σ(´∀`;)
0865サイザー 光太郎 ◆rbhHqF51rI
2007/01/05(金) 08:55:19クラスextendsするものとばかり思っていたのだが・・・orz
0866サイザー 光太郎 ◆rbhHqF51rI
2007/01/05(金) 11:01:29import無しでも使えるのね
0867C++専
2007/01/05(金) 11:13:09おい、それはimportのところに記述があったはずだろ。
java.langパッケは自動参照されるって。
よく読み返せ。あと本よりネットのが情報がいいことが殆どだからな。
import java 入門でぐぐってこい。
0868サイザー 光太郎 ◆rbhHqF51rI
2007/01/05(金) 12:09:30extends パッケージ.クラスってしなきゃいけないのかー
でもいちいちパッケ名書くのめんどいからimport パッケ名.*;でいいや
0869JAVA使ってるSEPG ◆jG/Re6aTC.
2007/01/05(金) 13:05:59パッケージ名.クラス名
って言う指定方法は、「完全修飾クラス名」とか、略して「FQCN」とかって呼ぶ。
実務でいろんなライブラリを使うことになると思うが、
ライブラリ用の設定ファイルなんかは完全修飾でクラス指定することが多い。
ほかにも、java.util.Dateとjava.sql.Dateを同じjavaファイル内で同時に使いたいとき、
クラス名が同じだからimportじゃコンパイルできない。
ゆえに完全修飾したりすることもある。
すぐに意識する内容じゃないと思うが、この際だから頭の片隅に入れとくと良いよ。
正月も頑張ってたんだな。えらいぞ。
0870C++専
2007/01/05(金) 13:08:51importしなくてもくパッケージにあるクラスのextendsは可能である。
ここにいきつくのに1日かかったが、ゆっくりガンガレ!
ただし、自分で調べる癖はまじで徐々につけていけよ。
言われて調べるのではなく、言われる前に調べることを心がけるべし
0871デフォルトの名無しさん
2007/01/05(金) 19:09:33ハローワークで斡旋してくれるよ!
0872デフォルトの名無しさん
2007/01/06(土) 00:44:100873サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 10:44:44{
int num;
int sum;
public Sum()
{
num = 0;
sum = 0;
}
public synchronized void addMoney(int n)
{
num = n;
sum += num;
System.out.println(sum+"円");
}
public void run()
{
for(int i=0; i<3; i++)
{
addMoney(-100);
}
}
}
}
0874サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 10:45:14{
public Gas()
{
}
public void run()
{
Sum num = new Sum();
for(int i=0; i<7; i++)
{
num.addMoney(2000);
}
}
0875サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 10:46:17{
public static void main(String args[])
{
Gas gas = new Gas();
Thread th = new Thread(gas);
th.start();
Sum sum = new Sum();
Thread tf = new Thread(sum);
tf.start();
}
}
0876サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 10:50:12C:\pg>java Ex7
2000円
4000円
6000円
8000円
10000円
12000円
14000円
-100円
-200円
-300円
って表示されるのです。
ちゃんと
2000・・・14000・・・13700って表示するんはどう直せば良いでしょうか?
アドバイス下さい。ちなみに3時間くらい悩んでます。
0877サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 10:55:33思わぬ問題を発見したΣ(´∀`;)
0878サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 11:04:570879デフォルトの名無しさん
2007/01/06(土) 11:15:080880サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 11:37:27{
public Gas()
{
}
public void run()
{
Sum num = new Sum();
Thread th= new Thread(num);
for(int i=0; i<7; i++)
{
num.addMoney(2000);
}
th.start();
}
}
失礼、思いつきで2つ目のクラスこう直おしたら、思い通りの結果得られました。
0881デフォルトの名無しさん
2007/01/06(土) 11:42:54(゚д゚) (゚д゚)
(゚д゚) (゚д゚)
(゚д゚) (゚д゚)
(゚д゚) (゚д゚)
(゚д゚) (゚д゚)
(゚д゚)(゚д゚)
( ゚д゚)
0882デフォルトの名無しさん
2007/01/06(土) 11:43:47驚いたよ
0885デフォルトの名無しさん
2007/01/06(土) 13:47:05>>876
そもそもやりたかったのは、↓こういう風に出力することか?
(これだとThread使う意味がないが。)
2000円
4000円
6000円
8000円
10000円
12000円
14000円
13900円
13800円
13700円
それとも、↓こんな感じか?
2000円
4000円
6000円
5900円 ←割り込み
7900円
9900円
9800円 ←割り込み
11800円
11700円 ←割り込み
13700円
0886サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 14:03:02500円
gasクラスからATM利用されました。0
0円
1000円
gasクラスからATM利用されました。1
500円
1500円
gasクラスからATM利用されました。2
1000円
2000円
gasクラスからATM利用されました。3
1500円
2500円
gasクラスからATM利用されました。4
2000円
3000円
gasクラスからATM利用されました。5
2500円
3500円
gasクラスからATM利用されました。6
5500円
5400円
sumクラスからATM利用されました0
7400円
7300円
こういう感じでthreadの動きも見たかったのよ。
0887サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 14:03:470888デフォルトの名無しさん
2007/01/06(土) 14:51:140889サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 15:04:21その扱ってる事象がスレッドに適してようが無かろうが、どっちでも良いのよ。
0890デフォルトの名無しさん
2007/01/06(土) 15:09:55混乱した頭で言われても
というより、言ってることとやってることの差が激しすぎてワロ
0891デフォルトの名無しさん
2007/01/06(土) 15:38:15public void main(String s[]) throws Exception{
Account acc=new Account();
Client c1=new Client(acc,"Alice",2000);Client c2=new Client(acc,"Bob",-1000);
c1.start();c2.start();
c1.join();c2.join();
}
}
class Account{
private int m;
public synchronized void add(int n){m+=n;}
public synchronized int read(){return m;}
public synchronized boolean isInbound(){return 0<=m && m<10000;}
}
class Client extends Thread{
private Account b_;
private String n_;
private int a_;
public Client(Account bank, String name, int add){b_=bank;n_=name;a_=add;}
public void run(){
try{
for(;;){
b_.add(a_);
System.out.println(n_+":"+b_.read());
if(!b_.isInbound()) break;
Thread.sleep((a_>0?(a_):(-a_))/2);
}
}catch(Exception e){ e.printStackTrace(); }
System.out.println(n_+":End");
}
}
0893デフォルトの名無しさん
2007/01/06(土) 16:12:000894サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 16:26:49突き落とそうとするorz。入門参考書じゃねぇw
0895デフォルトの名無しさん
2007/01/06(土) 16:31:36普通に読みやすいよ。
ヒモとスポンサーの関係をプログラムで表している。
0896サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 16:36:210897サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 16:40:350898デフォルトの名無しさん
2007/01/06(土) 16:40:38for()の構文を覚えてるか?
for( はじめに一回だけやること ; ループを続ける条件 : ループが1回ごとにやる処理 )
だったよな。
0899デフォルトの名無しさん
2007/01/06(土) 16:44:22まてよお前がさっき晒したソースからして、>>891で知らないことは
それほど多くないはずだろ。
あと、>>891
× public void main(String s[]) throws Exception{
○ public static void main(String s[]) throws Exception{
な。
0900サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 16:45:02だろ。
0901デフォルトの名無しさん
2007/01/06(土) 16:46:42for(;1;) System.out.println("Loop");
0902デフォルトの名無しさん
2007/01/06(土) 16:47:130903デフォルトの名無しさん
2007/01/06(土) 16:50:44C++専?
Javaの場合for文のループ条件は厳密にbool値じゃなきゃなんねー。
よって
for(;true;) ;System.out.println("Loop");
0905デフォルトの名無しさん
2007/01/06(土) 16:57:07× for(;true;) ;System.out.println("Loop");
○ for(;true;) System.out.println("Loop");
だった。
0906サイザー 光太郎 ◆rbhHqF51rI
2007/01/06(土) 16:57:28javaに集中できて嬉しいような悲しいような・・・
0907デフォルトの名無しさん
2007/01/06(土) 17:06:42まず、public class Ex7 extends Thread
の「extends Thread」
コレいらないだろ。
extendsが理解できてないと見える。
0908デフォルトの名無しさん
2007/01/06(土) 17:08:03付近のソースは不完全なので切り捨てた
どうせならコピペで動くソース貼り付けてくれ
レス数が900を超えています。1000を超えると表示できなくなるよ。