★★ Java の宿題ここ ..
[2ch|▼Menu]
306:デフォルトの名無しさん
08/06/30 05:57:50
【 課題 】
Swingを使った簡易ドローエディタ
色・図形選択のできるボタンがあり、マウスをウィンドウ内でドラッグすると
選ばれている色で選ばれている図形を描画する。以前に描画した図形は描画したまま。

【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】
現状:javax.swing.*、java.awt.*、java.awt.event.*、java.util.*をimport
特に制限はないと思います。

【 期限 】提出期限:本日16時
【 Ver  】
学内のLinuxパソコン:おそらく1.6.0
今は自宅のWindowsマシン、Eclipse(IDE for Java Developers)で実行中

【 補足 】
↓今自分が作っている最中のソースコードです。
URLリンク(rg550.hp.infoseek.co.jp)
今は押すごとに色が赤→緑→青と順次変わるボタンと
押すごとに描画図形が四角形⇔楕円と変わるボタンがついただけの状態です

追加・変更したい要素は、
1.描画図形の種類に直線と中が塗りつぶされている四角形を追加
2.色・図形の選択をボタンでなくJComboboxやJColorChooserで実装
このうち1番が必須で、2番は可能であればという感じです。

307:デフォルトの名無しさん
08/06/30 11:12:30
>>306
2の図形選択と1の直線追加の手抜き差分。
直線のクラス LineFigure は直してないが、座標計算要修正。
class DrawApplication に以下を追加:
 private String figureMode;
 public void setFigureMode(String figureMode) {
  this.figureMode = figureMode;
 }
同クラス内メソッド void createFigure(int x, int y) を修正:
 //Figure f = oval ? new OvalFigure(x, y, 0, 0, currentColor): new RectangleFigure(x, y, 0, 0, currentColor);
 Figure f = null;
 if(figureMode.equals("Oval")) {
  f = new OvalFigure(x, y, 0, 0, currentColor);
 } else if(figureMode.equals("Rectangle")) {
  f = new RectangleFigure(x, y, 0, 0, currentColor);
 } else {
  f = new LineFigure(x, y, 0, 0, currentColor);
 }
class DrawMain の void main(String argv[]) を修正:
 //final JButton fc = new JButton("図形変更");
 final JComboBox fc = new JComboBox(new String[]{"Oval","Rectangle","Line"});
 fc.addActionListener(new ActionListener(){
  public void actionPerformed(ActionEvent e){
   app.setFigureMode((String)fc.getSelectedItem());
   }
  });
 fc.setSelectedItem("Oval");

308:307
08/06/30 11:17:40
ごめん、ソース部分に全角スペースでインデント入ってしまった。
コピペするとき消しといて。

309:デフォルトの名無しさん
08/06/30 12:43:37
>>308 ぜんぜん問題無い

310:デフォルトの名無しさん
08/06/30 14:32:49
>>275の問題の続きです

【課題】問題1のプログラムをもとに、 Music クラスに Comparable インタフェースを実装し、
それを利用してソートをするようにプログラムを変更しなさい。
ただし、rating の降順でソートすることは変わらないものとする。

ソートのアルゴリズムは問題1と同じでよい。

main メソッドのあるクラスのクラス名は ComparableMusicSortByRating とする。

【形態】1. Javaアプリケーション(main()で開始)
【期限】6月30日 23:59
【Ver】1.5.0.11
【補足】Comparableインターフェースを作成していちおうソートはできたのですが
問題1のソートアルゴリズムを全く使用していないものになってしまいました。
URLリンク(rg550.hp.infoseek.co.jp)
どうしたら先のソートアルゴリズムを利用できるかが分からない部分です。
よろしくお願いします

311:デフォルトの名無しさん
08/06/30 15:16:47
>>310
ArrayListをCollections.sort()にかけてやればよいのでは?

312:デフォルトの名無しさん
08/06/30 18:04:37
[1] 授業単元:オペレーティングシステム
[2] 問題文(含コード&リンク):
プログラム
step1: a = x + y;
step2: b = z + 1;
step3: c = a ? b;
step4: w = c + 1;
に関し、URLリンク(rg550.hp.infoseek.co.jp)
を完成させて、
step1とstep2を並列実行させるプログラムを作成せよ。
但し、x,y,zはプロンプトにしたがって入力するとする。
正しく動作したか?結果を考察せよ。
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C言語
[4] 期限:7/3 23:00まで

313:デフォルトの名無しさん
08/06/30 18:07:03
>>312
落ち着いてスレタイを嫁

314:276
08/06/30 18:09:02
>>310
Music が Comparable#compareTo() を実装する利点は、sort() が Music クラスを知らなくて済むことなんだが…。
ジェネリックスの書き方が自信ないのでそのまま。

// Music オブジェクトのリストをソート
private static void sort(ArrayList<Music> list)
{
for(int i=1; i<list.size(); ++i)
for(int j=list.size()-1; j>=i; --j)
//if(list.get(j-1).getRating() < list.get(j).getRating())
if(list.get(j-1).compareTo(list.get(j)) > 0)
swap(list, j-1, j);
}

あ、
Collections.sort(list);

sort(list);
にするのを忘れないよーに。

315:312
08/06/30 18:10:00
誤爆った。
スレ汚しスマソ

316:デフォルトの名無しさん
08/06/30 20:35:30
>>314
たまに見るんだけどforの増加値の所を++iと描くのは何か意味があるのかな?
私はi++って描くんだが

なんとなくバブルソート置いておきます・・
private static void sort(ArrayList<Music> list) {
 for(int i=0; i<list.size()-1; i++)
  for(int j=i+1; j<list.size(); j++)
   if(list.get(i).compareTo(list.get(j)) > 0)
    swap(list, i, j);
}

317:デフォルトの名無しさん
08/06/30 21:07:26
>>316
>  for(int i=0; i<list.size()-1; i++)
上記例では++iでも結果は同じ。

++i : +1してからiを評価
i++ : iを評価後に+1

よって (if i++ > 10) と (if ++i > 10) とは結果が違う。

318:デフォルトの名無しさん
08/06/30 21:27:02
>>317
すまん・・それは知ってるんだけどforの増減値の所は
i++が普通だと思っててなんとなく気になったんだよ

319:デフォルトの名無しさん
08/06/30 22:43:21
package java_center_test;
public class six {
public static void main(String[] args)
{
//以下のswitch文をif文で書き換えてください。
/*
switch(n)
{
case 90;
case 80;
System.out.println("A");
break;
case 70;
System.out.println("B");
break;
case 60;
System.out.println("C");
break;
default;
System.out.println("D");
break;
*/
【 課題 】以下のswitch文をif文で書き換えてください。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】 5. その他(意味がわかりません)
【 期限 】一週間後です。
【 Ver  】1.5.0
【 用語 】
【 補足 】動かないので /* と */ で囲ってあります.Eclipse というソフトを使っています。OS は MacOSX の 10.4 です。このサイトは先輩から教えてもらいました。初めての利用です。よろしくお願いします。

320:デフォルトの名無しさん
08/06/30 23:04:28
>>319
case の後ろは ; ではなく、 : が正しい。
switchを閉じる } が無い。

その先輩に直接聞いた方が、早かったのでは?

321:639
08/06/30 23:48:56
>>319

package java_center_test;
public class six {
public static void main(String[] args)
{

if(n == 90 || n == 80){
System.out.println("A");
}else if(n == 70){
System.out.println("B");
}else if (n == 60){
System.out.println("C");
}else{
System.out.println("D");
}

322:デフォルトの名無しさん
08/07/01 02:21:36
>>316
プログラミング言語C(K&R) が ++i って書いてあるからそれの影響じゃないかな?

323:322
08/07/01 02:40:50
今確認したらK&Rも i++ だった.スレ汚しスマソ.

324:デフォルトの名無しさん
08/07/01 02:47:31
【 課題 】1.線型リストの要素数を返すメソッド int listLength(ListNode head) を作成しなさい.
2.線形リストの要素を逆順に並べかえるメソッド ListNode listRev(ListNode head) を作成しなさい.
再帰的メソッドと,繰り返し制御を用いた非再帰的なものを作成しなさい.
非再帰的なメソッドの名前はlistRevとし,再帰的メソッドの名前はlistRev2として,
1つのプログラム中に両方の定義を書き,正しく実行できるかが示せればよい.
3. 線型リストの要素を大きさの順(辞書式順序)に並べ替えるメソッド ListNode listSort(ListNode head) を作成しなさい.
【 形態 】1. Javaアプリケーション
【 期限 】7/3 17:00
【 Ver  】1.5.0_15
【 補足 】条件は,next欄を書き換えることで要素の並び方を変更するのであり,単に逆順に表示するのではない.
すなわち,「ポインタを付けなおす」ことに相当するので, new演算子を使わずにリストのnext欄の値を書き換えることで並べかえること.
任意の長さ(要素数)の線形リストに対して動作すること.
すなわち,要素数が1つの線形リストや,要素数が0(空リストnull)のものに対しても正しく動作するか確認しなさい.
となっています.
また,グローバル変数は使えず,listSortではint compareTo(String anotherString)メソッドを使用するように言われています.

課題2の再帰的なメソッドlistRev2と,課題3がうまくいきません.
各メソッドの定義はURLリンク(www.ed.noda.tus.ac.jp)にあります.
よろしくお願い致します.

325:デフォルトの名無しさん
08/07/01 17:33:31
>>320 の方
アドバイスありがとうございます!
本当ですね。> ";" でなく ":" が正しい
問題用紙をじっくり見たら確かにでした。そして画面で見たら分からなかったです。
ちなみに先輩は規則正しい生活なので帰られてました。>夜11時

>>321 の方
ありがとうございます!
動くことも確認しました。ありがとうございました。

あと、期限なのですが、来週と思っていたら、明後日の朝でした。
何でも持ち込みして良いとのことなので、この掲示板のお力も借りられればと思っています。

326:デフォルトの名無しさん
08/07/01 19:40:24
>>316
実装の問題じゃね?
インクリメントを実装するときに、後置だとインクリメントする前の値を返す必要があるから、変数をバックアップした後に+1してバックアップをreturn。
でも前置なら+1した変数をそのままreturnすればいいので、後置にするよりローコストになる。
でも、正直intとかのネイティブならコンパイラの最適化対象になりそうなんで、コンパイルしてみるとどっちでも同じというオチ。

327:デフォルトの名無しさん
08/07/01 19:50:41
>>324
書いてみた。
URLリンク(rg550.hp.infoseek.co.jp)

328:319
08/07/01 20:17:07
丸投げで申し訳ないのですがよろしくお願いします。

問題
次のように画面に出力されるプログラムを作成せよ。
ただし作成するプログラムに反復構造を含めること。
-----------------------------------------------------------------
12345
1234
123
12
1
-----------------------------------------------------------------


329:319
08/07/01 20:18:10
問題
次のように画面に出力するプログラムを作成せよ。
ただし作成するプログラムに反復構造を含めること。
-----------------------------------------------------------------
12345
1234
123
12
1
12
123
1234
12345
-----------------------------------------------------------------


330:319
08/07/01 20:22:31
問題
2006年現在の日本の人口は127,700,000人です。
年率0.5%の割合で人口が減少した場合、2007年の人口は何人になるかを計算して、以下のように表示するプログラムを作成せよ。
-----------------------------------------------------------------
2007年の日本の人口はXXXXXXX人になる。
-----------------------------------------------------------------


331:319
08/07/01 20:23:35
問題
2006年現在の日本の人口は127,700,000人です。
年率0.5%の割合で人口が減少した場合、2030年の人口は何人になるかを計算して、以下のように表示するプログラムを作成せよ。
-----------------------------------------------------------------
2030年の日本の人口はXXXXXXX人になる。
-----------------------------------------------------------------


332:319
08/07/01 20:28:41
package java_center_test;

public class exam107 {

//次のプログラムを実行したときの出力を示せ。
//また各 ans を求めた計算過程を説明せよ。
//(説明例)x=3, y=2 のとき ans=x+y=3+2=5

public static void main(String[] args){
int x=3, y=3, ans=1;
ans = x-- * ++y;
System.out.println(ans);
ans += x++ * --y;
System.out.print(ans);

//初期状態:x=3,y=3,ans=1
//次の状態:x=2,y=4,ans=2*4=8 ???
//最後状態:y=3,y=3,(ansは12)←これに足し算するので ans=15 ???

//ゴメンなさい。コンソールでは 次,最後が 12,18 になっています。
//なぜでしょうか?

}
}

333:319
08/07/01 20:35:00
package java_center_test;

public class exam108 {

//以下のプログラムを実行したときの出力結果を示せ。
//さらにこのプログラムを for-loop 文で書き直せ。

public static void main(String[] args){
int num =0, i=1;
while((num=23*i)<100){
System.out.println(num);
i++;
}

//出力結果は得られて理解は出来たのですが、
// for-loop 文の書き直しがちっとも頭に浮かびません。

}
}

334:デフォルトの名無しさん
08/07/01 20:39:35
>>332
>>317


335:319
08/07/01 20:49:26
package java_center_test;public class exam114 {
//各学生の合計を計算し、配列 goukei に格納する。そして各学生の平均点を表示するプログラムを完成させなさい。なお、配列の要素数の情報は length を用いること。
//
//配列 ten
//
//    英語 数学  社会 理科    合計
//学生A  60  50  80  80  →
//学生B  70  80  70  90  →
//学生C  40  90  60  70  →

public static void main(String[] args){
int ten[][]={{60,50,80,80},
{70,80,70,90},
{40,90,60,70}};
int goukei[]=new int[ten.length];
//学生ごとの合計点数の集計
for(int i=0; i< 「Q.1」; i++){
「Q.2」=0; //配列 goukei の初期化
for(int j=0; j<「Q.3」; j++){
goukei[i]=goukei[i]+「Q.4」; } }
//平均点の表示
for (int i=0; i< goukei.length; i++){
System.out.println(goukei[i] /「Q.5」);}}}

336:デフォルトの名無しさん
08/07/01 21:03:05
319の未来が心配だ・・この調子だと毎回丸投げしそうで怖いぞ
>>328とか
1
12
123
1234
12345
を表示するプログラムは授業でやってるとかじゃないのか?

337:319
08/07/01 21:23:48
>>336
自分でも未来が心配です・・
>>328とか
おそらく
System.out.println("1");
System.out.println("12");
System.out.println("123");
System.out.println("1234";)
System.out.println("12345";)
を for 文で書くので、おそらく 12345 を数字でなくて、
文字列として書けば良いのだと思って今のところ String ary[] = 12345
みたいな感じで for 文 ループを回そうとしています。
授業で文字列の最後だけ消して行くような内容はやったかどうか分かりません。

338:319
08/07/01 21:28:03
今は
>>332
ではまっています。
以前に i++ と ++i の違いについての書き込みがあったので、
それを読みながら試行錯誤しています。

int x=3, y=3, ans=1;
ans = x-- * ++y;
System.out.println(ans);
ans += x++ * --y;
System.out.print(ans);

//初期状態:x=3,y=3,ans=1
//次の状態:x=2,y=4,ans=2*4=8 ???
//最後状態:y=3,y=3,(ansは12)←これに足し算するので ans=15 ???

339:デフォルトの名無しさん
08/07/01 21:36:55
>>338
とりあえず、この辺りからじゃね?

int x=3;
System.out.println( x--);
x=3;
System.out.println( --x);


340:319
08/07/01 21:49:09
自己解決したような気がします。
>>332
//日本語になっているのか怪しいけれどメモしておきます。
// int の次の行では x は ++ される前に ans に行くので、
// x は初期状態のままの 3 。そして y は ans に行く前に ++ されるので、
// y は初期状態から1つ足した値の 4 になる。
// 3*4 = 12 という答えが出てくる。
//最後のところは先ず x が int の次の行で -- されているので、
// x は 2 なのだけど、++ は ans に行く後なので、ここでは x は 2 のままで考えて、
// y は上のところと同様に y の前に -- があるから、こっちは -- されて 3 である。
// 3*2 = 6 となって、これが ans に入ってた 12 と足し算になるので合計 18 になる。
//一応、自己解決しました。

341:319
08/07/01 21:53:44
>>339
ありがとうございます。まさに、その辺りでした。> --x と x--
何の意味があるのかわからないのですが、そういうものだと丸暗記して次に進みます。
実は public static void main(String[] args) の意味も理解してません。
とはいえ授業の配布資料のメモにも「丸暗記」と書いてありますし、悩むだけの時間も与えられてないので・・

342:デフォルトの名無しさん
08/07/01 21:57:35
>>341
そこは暗記で良いよ。
public static void main(String[] args)からプログラムが始まるってことでいい。
次は>>330かな・・・

343:319
08/07/01 22:16:59
>>342
そう断言して頂けると安心して次に進めます。
「位置についてよーいドン」の訳語とでも丸暗記しておきます。
>>330ですか。>>333の書き換え問題で悩んでいるので、少し放置して330にチャレンジしてみたいと思います。
実は書き込んだ順と与えられた問題の順番が違っていて、手元の試験問題対策プリントだと、>>332,>>333,>>328,>>329,>>330,>>331,>>335 の順番に並んでいます。

344:デフォルトの名無しさん
08/07/01 22:36:54
これは>319が自分で解けるように誘導する流れなのか?

345:639
08/07/01 22:41:35
>>343
普通にその順番でやっていったほうがいいと思う。
>>330以降の問題も>>333の問題ができないとできない。(whileでもできんことはないけどめんどくさい)

forは
for(初期値;継続条件;増分){
処理内容
}

>>330の問題を直すと
int i,num=0;
for(i=1;(num=23*i)<100;i++){
System.out.println(num);
}


346:639
08/07/01 22:47:50
俺なんで名前>>639にしてたんだwww

>>328

int i,j;

for(i=0;i<5;i++){
for(j=1;j=5-i;j++){
System.out.print(j);
}
System.out.println();
}


347:319
08/07/01 22:51:43
>>344
ここは「丸投げ」のスレッドという認識を持ってしまっているのですが、それはあまりに皆様に失礼な気もしまして・・
>>328>>329について、もしかしたら>>18の三角形の問題が役立つかなと思って>>21の解答例を見たら知らない単語が並んでいて自分には役立たないことが分かりました。
別スレッドに「14: 【初心者】Java質問・相談スレッド116【歓迎】 (***)」というのがあるのも知っているのですが、いきなり質問を投げても経緯を説明しないことには回答者の方も大変かなと思いまして。
Java そのものより Exlipse というソフトウェアの使い方も掴みきれていないような状況ですが、英語とかの課題も平行してプログラミングを勉強しています。
今日は目が痛くなってきたので、そろそろ Java のテキストの読み込みの方に移ろうかなと考えているところです。

348:324
08/07/01 22:58:05
>>327
こんなに早く答えていただきありがとうございます。
大変助かりました。
参考にさせていただきます。

349:319
08/07/01 23:04:06
>>345
書き換え問題ありがとうございます。
確かに同じ結果が出ますね。スゴいです。
どうして for 文と while 文とがあるのでしょうか? while でも出来るけどめんどくさいというのは直感でわかるものなのでしょうか?

>>346
for 文の入れ子構造ですか!?
ちょっとガンバって当てはめてみたいと思います。
「型の不一致: int から boolean には変換できません」と言われてしまいました。
もはや何を言っているのかわからないので今日は画面を消したいと思います。
ありがとうございました。

350:デフォルトの名無しさん
08/07/02 06:26:09
>>319
>>1
基本的にテンプレ無視にはレスしない
長い課題でロダ使わずレス消費するのはマナーいくない

351:319
08/07/02 13:08:19
【 課題 】
package java_center_test;public class exam114 {
//各学生の合計を計算し、配列 goukei に格納する。そして各学生の平均点を表示するプログラムを完成させなさい。なお、配列の要素数の情報は length を用いること。
//配列 ten
//    英語 数学  社会 理科    合計
//学生A  60  50  80  80  →
//学生B  70  80  70  90  →
//学生C  40  90  60  70  →
public static void main(String[] args){
int ten[][]={{60,50,80,80},
     {70,80,70,90},
     {40,90,60,70}};
int goukei[]=new int[ten.length];
//学生ごとの合計点数の集計
for(int i=0; i< 「Q.1」; i++){
「Q.2」=0; //配列 goukei の初期化
for(int j=0; j<「Q.3」; j++){
goukei[i]=goukei[i]+「Q.4」; } }
//平均点の表示
for (int i=0; i< goukei.length; i++){
System.out.println(goukei[i] /「Q.5」);}}}

【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】GUI の問題ではないと思います。使用しているのはコマンドプロンプトなので。
【 期限 】明日の午前8時頃でお願いしたいです。
【 Ver  】1.5.0
【 用語 】
【 補足 】>>328 解決、>>329 解決、>>330 解決、>>331 解決、>>332 解決 >>333 解決
      >>345>>346 ありがとうございました。
      本問題(>>335と同じ)は急にレベルが上がった気がします。
      >>350 確かにマナー良くなかったです。ご指摘ありがとうございました。

352:デフォルトの名無しさん
08/07/02 14:54:39
>>351
public class exam114 {
public static void main(String[] args) {
int ten[][] = {
{60,50,80,80},
{70,80,70,90},
{40,90,60,70},
};
int goukei[] = new int[ten.length];
for(int i=0; i<ten.length; i++) {
goukei[i] = 0;
for(int j=0; j<ten[i].length; j++) {
goukei[i] = goukei[i] + ten[i][j];
}
}
for(int i=0; i<goukei.length; i++) {
System.out.println(goukei[i]/ten[i].length);
}
}
}

353:デフォルトの名無しさん
08/07/02 16:48:22
【 課題 】
スレッドの作成に関する、何か,自前のスーパークラスを継承し,かつRunnable Interface を実装したアプリケーションを作成せよ。
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】明日の 7/3 19:00まで
【 Ver  】1.6.0
【 補足 】
凝ったものが良いらしいです、ゲームではじゃんけんなど。
よろしくお願いします。

354:デフォルトの名無しさん
08/07/02 17:04:31
>>353
なんか落ちてるもの拾ってくれば?

URLリンク(www.google.co.jp)

355:デフォルトの名無しさん
08/07/02 23:53:05
【 課題 】カウントダウンタイマーを作る
【 形態 】1. Javaアプリケーション(mainLoop()で開始
【 期限 】7月3日 13:00まで
【 Ver  】1.6.0
【 補足 】下記のようにしたのですが秒数がカウントされません。
Date d = new Date();
int seconds = d.getSeconds();
int countdown=20;
int starttime=0;
int i=0;
if(i==0){
starttime=seconds;
i=1;
}
countdown=countdown-(seconds-starttime);
System.out.println(countdown);

356:デフォルトの名無しさん
08/07/03 00:30:37
>>292
この質問をした者ではないのですが、>>296の方がやっていただいたプログラムを
(ii)が完成した状態にしていだだけないでしょうか?


357:デフォルトの名無しさん
08/07/03 00:50:05
>>356
はて?
なにが出来ていないかな?

358:デフォルトの名無しさん
08/07/03 00:58:46
>>357
完成はしていると思いますが(iii)の機能が付いた状態ではなく
(i)と(ii)の機能が付いただけのものが見たかったもので・・・・・・

359:デフォルトの名無しさん
08/07/03 01:12:11
【 課題 】
URLリンク(rg550.hp.infoseek.co.jp)
上記のソースの簡易webブラウザに
"戻る" というボタンを付け,ホームページの閲覧履歴を遡れるように実装する。

【 形態 】Applet
【 GUI  】制限なし
【 期限 】本日 7/3 20:00まで
【 Ver  】1.6.0
【 用語 】数学用語、専門用語の意味、説明を書きます。 《あれば必須》
【 補足 】丸投げです。よろしくお願いします。

360:デフォルトの名無しさん
08/07/03 01:17:04
>>358
(iii)の関連部分を削ってみた。
URLリンク(rg550.hp.infoseek.co.jp)

ただ、(i)の出来上がりとしては、毎回、前の図を消去しないといけないと思う。

361:デフォルトの名無しさん
08/07/03 01:37:42
>>360
横からでしたありがとうございます
(i)は補足がありそれでできましたので大丈夫です

362:デフォルトの名無しさん
08/07/03 07:10:31
>>355
sleepを使えば、こう。
int countdown = 20;
while(0<=countdown){
System.out.println(countdown--);
try{
Thread.sleep(1000);
}catch(Exception ex){
ex.printStackTrace();
}
}

363:デフォルトの名無しさん
08/07/03 08:05:35
それきもい。

364:デフォルトの名無しさん
08/07/03 08:17:53
【課題】クラスA、B、C、Dがある。クラスAはBを継承し、クラスCはBを継承し、クラスDはクラスCを継承する。

【形態】1. Javaアプリケーション(main()で開始)
【期限】7月9日
【Ver】1.5.0
【補足】

365:デフォルトの名無しさん
08/07/03 08:25:14
【課題】クラスA、B、C、Dがある。クラスAはBを継承し、クラスCはBを継承し、クラスDはクラスCを継承する。
クラスBにはint型の変数bが定義されており、コンストラクタB(int B)も定義されているとする。クラスA、C、Dは
すべて親のクラスを継承し、自分のクラスの中に独立した変数の定義はないものとする。すべてのクラスとコンストラクタを定義せよ。
mainを含むクラスはTestInheritanceとしクラスDの変数yをコンストラクタD(13)で生成し、y.bを印字せよ。
【形態】1. Javaアプリケーション(main()で開始)
【Ver】1.5.0
class B {
int b;
B(int b){
this.b=b;
}
}
class A extends B {
A(int b){
}
}
class C extends B {
C(int b){
}
}
class D extends C {
D(int b){
}
}
class TestInheritance {
public static void main (String args[]){
D y = new D(13);
System.out.println("y.b = " + y.b);
}
}
ここまで書いてみたのですがうまくいきません。どこか違うのでしょうか?よろしくお願いします

366:355
08/07/03 08:26:35
>>362
ありがとうございます。
先ほど実行したのですが、
カウントダウンはできているのですがアプレット(MainLoop?)の中で実行できませんでした。
説明不足ですみません。
一回スレッドを使ってやろうとしたのですがうまくいかなかったので
Dateクラスを使って作ってみたのですがよくわかりません。
どなたか良い方法あればよろしくお願いします

367:デフォルトの名無しさん
08/07/03 08:39:01
>>366
>>355では「Javaアプリケーション」と書いてるけど・・・

いずれにせよ、init()に書き込めば、コンソールに表示されるのでは?

368:デフォルトの名無しさん
08/07/03 08:58:32
>>365
super(b)とか書けってことでは?

369:365
08/07/03 09:05:59
>>368
どのように書けばいいのでしょうか??

370:365
08/07/03 09:24:22
自己解決しました
どうもお騒がせしてすみませんありがとうございました

371:デフォルトの名無しさん
08/07/03 14:10:40
どなたか>>359をお願いします。

372:デフォルトの名無しさん
08/07/03 17:07:28
URLリンク(rg550.hp.infoseek.co.jp)
【 課題 】画像を読み込み、読み込んだ画像をグレースケール化した後名前をつけて保存する。
【 形態 】1. Javaアプリケーション(main()で開始
【 期限 】7月4日
【 Ver  】1.6.0 Eclipse仕様
【 補足 】
1.実行すると無限にでるウィンドウの処理を直したい。
displayPanel = new MousePaint();
をコメント文にすると無限にでなくなるのだが、その原因がわからない。

2.マウスリスナーのアクションを無くしてメニューからOpenでファイルを読み込み
ウィンドウにすぐ画像を表示させたい。

3.読み込んだ画像をグレースケール化したい。←初心者のためここが一番わからない^^;

373:デフォルトの名無しさん
08/07/03 17:32:47
>>372
1.→コンストラクタの中で無条件に同じコンストラクタを呼び出しているのだから、無限に呼び出されて当然。


374:372
08/07/03 17:41:38
>>373
どうすれば呼び出されないようにすればいいでしょうか?

375:デフォルトの名無しさん
08/07/03 18:22:08
【課題】
アルゴリズムの作成

(x,y,z,w)に代入されている数字が(1.2.4.8)→(1,2,8,4)→(1,4,2,8)→(1,4,8,2)→(1,8,2,4)→・・→(8,4,2,1)
と4!通りのパターンが順番に代入されていく様子をprintlnで表示するコードを作成すること

【形態】 Javaアプリケーション(main()で開始)
【Ver】 1.6.0
【補足】 代入アルゴリズム部分だけでも大丈夫です よろしくお願いします。

376:デフォルトの名無しさん
08/07/03 19:08:26
【課題】平面に5つの座標を考える。5つの座標(x,y)を二次元配列に入力し、すべての座標間の距離を計算せよ。
【形態】Javaアプリケーション(main()で開始)
【期限】7月4日
【ver】1.6.0
【補足】わからないのでおねがいします

377:デフォルトの名無しさん
08/07/03 19:18:38
>>374
1.displayPanel自体いらないので削除してみた。
2.主旨が分からなかったのでパス。
3.中に入っていたロジックをペーストして、ちょちょっと。

URLリンク(rg550.hp.infoseek.co.jp)

378:デフォルトの名無しさん
08/07/03 20:11:34
>>375
public static void main(String[] args) {
int[] alphabet = {1,2,4,8};
int[] lngTemp = new int[0];
hoge(alphabet,lngTemp);

}
public static void hoge(int[] candi,int[] patt){
if(candi.length==0){
for(int i=0;i<patt.length;i++)System.out.print(patt[i]);
System.out.println();
}else{
for(int i = 0;i<candi.length;i++){
int[] c = new int[candi.length-1];
int index = 0;
for(int j = 0;j<candi.length;j++){
if(j!=i)c[index++]=candi[j];
}
int[] p = new int[patt.length+1];
for(int j = 0;j<patt.length;j++){
p[j]=patt[j];
}
p[patt.length]=candi[i];
hoge(c,p);
}
}
}


379:デフォルトの名無しさん
08/07/03 20:13:12
>>376
二次元配列という注文が、理解しがたい。

380:デフォルトの名無しさん
08/07/03 21:10:05
>>376
とりあえずint[5][2]と判断
public static void main(String[] args) {
int[][] point = new int[5][2];
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 2; j++) {
point[i][j] = (int) (Math.random() * 10);
}
}
for (int i = 0; i < point.length; i++) {
System.out.println(i + 1 + ":("+point[i][0] + "," + point[i][1]+")");
}
System.out.println();
for (int i = 0; i < point.length - 1; i++) {
for (int j = i + 1; j < point.length; j++) {
System.out.print((i+1) + "-" + (j+1) + ":");
System.out.println(distance(point[i], point[j]));
}
}
}
static double distance(int[] point1, int[] point2) {
return Math.sqrt(Math.pow((point2[0] - point1[0]),2.0) + Math.pow((point2[1] - point1[1]),2.0));
}

381:355
08/07/03 21:13:51
>>367
お返事遅くなって申し訳ありません
違う方法ですが無事解決できました。ありがとうございました。

382:372
08/07/03 22:55:12
>>377
ありがとうございます。
これを参考に自分なりにアレンジして作ってみたいと思います。

383:デフォルトの名無しさん
08/07/04 10:54:17
htmlのフォームのボタンを押す動作などをJavaで実現したいのですが、
何かそういったことのためのクラス・メソッドは無いでしょうか?
HttpURLConnectionでUserAgent入れてソース落とすのはできるのですが、
そこから先のFormの処理がわかりません・・・。

よろしくお願いします。

384:デフォルトの名無しさん
08/07/04 11:02:20
フォームについて少し勉強するといいよ

385:デフォルトの名無しさん
08/07/04 12:46:16
>>383
全然言葉が足りないが、ダウンロードした HTML に含まれる form を Java で実行しようとしているのか?
宿題なら >>1 を参照してちょ。
んで、思っているのと違うかも知れんが、
URLリンク(java.sun.com)

386:255
08/07/04 22:35:57
座標A(X1,Y1)〜座標B(X2,Y2)までの直線Eと
座標B(X3,Y3)〜座標C(X4,Y4)までの直線Fが
交差しているかどうか判定したいです。

どういうコードになりますか?

387:デフォルトの名無しさん
08/07/04 23:06:25
>>386
>>1テンプレを

388:デフォルトの名無しさん
08/07/05 04:54:06
>>386
質問だけならこっち行けばいい

【初心者】Java質問・相談スレッド116【歓迎】
スレリンク(tech板)

389:デフォルトの名無しさん
08/07/05 23:09:27
【 課題 】配列を用いて点数57,78,91,61,42,77点の合計点と平均点、60点以上の人数と
      平均点以下の人数を求めるプログラムを作成せよ。
【 形態 】1. Javaアプリケーション
【 期限 】7/9
【 補足 】学校で配列の所を勉強した時に課題としてでました。丸投げですが宜しくお願いします。




390:デフォルトの名無しさん
08/07/05 23:30:39
>>389
public class Test{
public static void main(String[] args){
int[] score = {57,78,91,61,42,77};
int sum, avr, u60, lavr;

sum = 0;
for(int i = 0; i < score.length; i++){
sum += score[i];
}
avr = sum / score.length;

u60 = 0;
lavr = 0;
for(int i = 0; i < score.length; i++){
if(score[i] >= 60)
u60++;
if(score[i] <= avr)
lavr++;
}

System.out.println("合計点:" + sum);
System.out.println("平均点:" + avr);
System.out.println("60点以上:" + u60);
System.out.println("平均以下:" + lavr);
}
}


391:デフォルトの名無しさん
08/07/06 13:14:18
【 課題 】
四桁の数字をコンソール上でキーボードから入力し、それを出力せよ。
同時に、その数字が素数であるかどうかを判定し、その判定結果を出力せよ。
さらに、その数字より小さい自然数で最大の素数を求め、出力するようにせよ。
上記の内容を実行するプログラムをJAVAで作成せよ。
ただし、以下のポイントを考慮すること。
ポイント:素数でない場合は、判定結果と合わせて、その最大の約数(1とその数自身を除く)も出力する。

【 形態 】1. Javaアプリケーション(main()で開始)

【 期限 】7/8

【 補足 】丸投げです。よろしくお願いします。

392:389
08/07/06 14:37:34
>>390
すぐに回答して頂きありがとうございました。
ホント助かりましたm(__)m

393:デフォルトの名無しさん
08/07/06 15:21:59
>>391
public class ThePrime {
public static void main(String[] args) throws IOException {
System.out.println("4桁の整数を入力:");
Scanner sc = new Scanner(System.in);
int value = sc.nextInt();
if(isPrime(value)) {
System.out.println(value+"は素数");
} else {
System.out.println(value+"は素数ではない");
System.out.println("最大の約数:"+getMaxDivisor(value));
}
for(int lastPrime=value-1; lastPrime>=3; lastPrime--) {
if(isPrime(lastPrime)) {
System.out.println(value+"より小さい素数:"+lastPrime);
break;
}}}
private static boolean isPrime(int value) {
if((value%2) == 0) return false;
for(int i=3; i<value/2; i+=2) if((value%i) == 0) return false;
return true;
}
private static int getMaxDivisor(int value) {
if((value%2) == 0) return value / 2;
int divisor = value;
for(int i=3; i<value; i+=2) if((value%i) == 0) divisor = i;
return divisor;
}}
//エラー無視 & すまん、素数の求め方もあってるか分からんwwwww

394:デフォルトの名無しさん
08/07/06 15:37:44
エラトステネスのふるい涙目ww
まぁ4桁ぐらいなら余裕かw

395:デフォルトの名無しさん
08/07/06 15:59:55
【 課題 】GUI設計に基づき、簡易電卓を設計せよ。ただし以下の条件を満たすように。
      @0から9のボタン入力式でテキストフィールドに出力する
      A四則演算は+−×÷のボタン、小数計算は . のボタン、
      結果は=のボタンで行うようにする。
      B数字のクリアはCで行うように。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】2.Swing
【 期限 】7/9
【 補足 】このプログラムはNetBeansIDE6.1でGUI設計してからプログラム
      を書いていくという手順でやっています。
      あと0から9のボタンや+−×÷のボタンが押された時の
      ActionPerformedはそれぞれ個別にで定義するのではなく
      まとめて定義したいんですが、上手くいかないんです。
      そこら辺の定義の仕方も詳しくして頂けるとありがたいです。

396:デフォルトの名無しさん
08/07/06 16:37:58
>>395
NetBeans 使ってないので操作方法だったら分からんが、作りかけでもあるなら出したほうがいい。
>ActionPerformedはそれぞれ個別にで定義するのではなくまとめて定義したい
というのが ActionListener をボタン毎に別のインスタンスにするのでは無く
一つのインスタンスでっていうことなら、各ボタンの AddActionListener に
同じ ActionListener インスタンスを渡すだけだ。
でその ActionPerformed 内で ActionEvent#getSource なり getCommand なりで
どのボタンのイベントかを判別して処理分け。

397:デフォルトの名無しさん
08/07/06 17:09:54
>>396
返信ありがとうございます。

package dentaku;

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

public class dentakuFrame extends javax.swing.JFrame {

public dentakuFrame() {
initComponents();
}

------------------------------------------------------------------------------------------
ここにボタンの位置などの設定がデフォルトで入っている。
------------------------------------------------------------------------------------------

public void appendResult(String c) {
result.setText(result.getText() + c);
}

public class NumberButton extends JButton implements ActionListener {

public NumberButton(String key) {
super(key); //JButtonクラスのコンストラクタを呼び出す
this.addActionListener(this); //このボタンにアクションイベントのリスナを設定
}



398:デフォルトの名無しさん
08/07/06 17:11:58
public void actionPerformed(ActionEvent evt) {
String keyNumber = this.getText(); //ボタンの名前を取り出す
appendResult(keyNumber); //ボタンの名前をテキストフィールドにつなげる
}
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new dentakuFrame().setVisible(true);
} }); }
private javax.swing.JButton Button0;
private javax.swing.JButton Button1;
private javax.swing.JButton Button2;
private javax.swing.JButton Button3;
private javax.swing.JButton Button4;
private javax.swing.JButton Button5;
private javax.swing.JButton Button6;
private javax.swing.JButton Button7;
private javax.swing.JButton Button8;
private javax.swing.JButton Button9;
private javax.swing.JButton divButton;
private javax.swing.JButton minusButton;
private javax.swing.JButton mulButton;
private javax.swing.JButton plusButton;
private javax.swing.JButton pointButton;
private javax.swing.JButton resetButton;
private javax.swing.JTextField result;
private javax.swing.JButton resultButton;
}
これが現在の状況です。Actionに反応して値を受け渡したり、
演算子に応じる設定がどうしたらよいのかがわかりません。
よろしくお願いします。

399:デフォルトの名無しさん
08/07/06 17:23:16
補足
0から9のボタンはButton0からButton9に
小数点はpointButtonに
四則演算はplusButton,minusButton,mulButton,divButtonに
クリアはresetButton、=はresultButtonに
数値表示テキストはresultに設定しています。

400:デフォルトの名無しさん
08/07/06 17:25:15
>>397-399
>>1
省略しないで全部ろだ2等にアップ

401:デフォルトの名無しさん
08/07/06 17:47:59
ろだ2の336.javaにupしました。お願いします。

402:デフォルトの名無しさん
08/07/06 18:15:34
NumberButton使ってないね・・

403:デフォルトの名無しさん
08/07/06 19:17:59
NumberButtonと言うことは、数字以外のActionPerformedはまとめなくて良いのだろうか、
それとも、すべてのActionPerformedを一つにしたいのだろうか。

そもそも、ActionPerformedをまとめると言うのは出された課題ではないようだけど・・・

404:デフォルトの名無しさん
08/07/06 19:36:10
>>401
URLリンク(rg550.hp.infoseek.co.jp)
全部一個のリスナ(dentakuFrame)にしてみた。
initComponents も弄ると危なそうなので弄らない方向で。
ときどき例外出ることがあるのはご愛嬌(!)

405:デフォルトの名無しさん
08/07/06 21:22:14
>>404
回答ありがとうございます。複雑なプログラムを提示してしま
って申し訳ないです。実際に動かしてみてまた何かあったら
質問します。本当にありがとうございました。

406:デフォルトの名無しさん
08/07/06 23:07:46
たびたびで恐縮なんですが、>>404 のプログラム中で
actionPerformedの定義の部分が理解できないんですが、
解説して頂けないでしょうか。プログラムの意味を
理解しようとしたんですけど初めてみるメソッドなどが多く
て困っています。
特にpushとpop、Stack、peek()、getPriorityなどの意味と
このプログラムにおける使用の仕方などを詳しく解説して
頂けるとありがたいです。
あとBigDecimalで何を行っているかなどもできればお願いします。

407:404
08/07/07 01:15:27
>>406
StackはスタックというLIFO構造で、pushで入れたモノがpopで取り出せる。
peekは取り出さすことなく最後に入れたモノを得る。
Operator#getPropertyは、掛け算割り算を足し算引き算より優先して実行するために入れてある。
1+2*3と入力しようとしたとき、1+2*と入力した場合、最後の*を押した時に1+2を実行「しない」。
1+2+と入力した場合は最後の+を押した時に1+2を「実行し」3を表示する。
BigDecimalは大きな/小さな数値を表現する場合に限界や誤差などを「あまり」気にせずに使うためのクラス。
Javaのドキュメントと「Java BigDecimal」で検索などしてみて。
ちなみにときどき例外が…というのはこのBigDecimalのdivideらしぃ^^;

408:404
08/07/07 01:21:21
よく見たらStack#pushをStack#addにしちゃってるとこばかりだな。
一応Stack#addはpushと同じだから動いてるみたいだが。

409:404
08/07/07 04:05:47
>>406
divideの例外回避とかStack#add→pushとか変数名変えたりとか動作中のスタックイメージコメントなども入れてみた。
URLリンク(rg550.hp.infoseek.co.jp)

410:デフォルトの名無しさん
08/07/07 06:24:06
なんか某アスキーの逆ポーランドの解説を思い出した。

411:デフォルトの名無しさん
08/07/07 23:17:27
>409
例外回避から詳しい説明まで感謝の限りです。実際に動かしてみて
動作も正常に行われました。説明を読んでpopやpush、getPriority
などの使い方、プログラムの動作もよくわかりました。今度使って
みようと思います。

最後に0で割った時のエラーメッセージを出力しようと
try-catch構文でArithmeticExceptionは回避させたんですけど、
java.util.EmptyStackExceptionのほうが割り算のoperatorに
try-catchで組み込んでもうまくいかないのですが、どうすれば
よいのでしょうか。たびたび質問ですみませんがお願いします。

412:409
08/07/08 00:09:02
>>411
まず、状況を説明するならその元となるモノ(409が変更した結果のソース)をアプしたり
どう「うまくいかない」のか、想像していたことと実際起きたことを明記しないと分からん。
というわけで想像だが、
values.push(a.divide(b,5,BigDecimal.ROUND_HALF_EVEN));
を丸ごと try{ }catch(ArithmeticException e) に入れてしまうと、
values への push がされず、以降の計算を進めるための values が
足りなくなってしまうだろな。
0割が発生した場合は式全体を消して初期状態に戻してしまうのが普通かもしれない。
divideOperator#operateではなく、式全体を計算してるactionPerformedで処理する。
URLリンク(rg550.hp.infoseek.co.jp)


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5388日前に更新/381 KB
担当:undef