★★ Java の宿題ここで答えます Part 66 ★★
javascriptの宿題について聞きたいんだけど ここはスレちですかね?? ほかは過疎ってるみたいなので、できたら教えてほしいのだが・・・ たのみます!
954 :
デフォルトの名無しさん :2009/01/20(火) 01:34:24
【 課題 】画面をクリックするたびに、自己アピールを効果的に行う文字・図形・画像・そして音声が表示・再生されるものであること。
【 形態 】javaアプレット
【 GUI 】 制限なし
【 期限 】1月24日
【 Ver 】1.6.0_07
【 補足 】J自由課題でして、絵本のようにクリックで画像が変化するアプレットが作りたいのですが、
なかなかうまくいかなくて困っています。
http://chaichan.web.infoseek.co.jp/qa6500/qa6913.htm ここにあったのを使ったみたのですが、
if (count & 1) {g.drawImage(img[1],0,0,this);}
の部分で[互換性の無い型 検出値int 期待値boolean]
と表示されてしまいます。
初心者でよくわからない事が多いですが、よろしくお願いしますm(_ _)m
>>958 課題の日本語おかしくね?
クリックすると画像が変化するアプレットの作成が希望でいいの?
エラーの意味は count & 1 が int なのに対して
if の条件は boolean でなければいけないという意味。
Java では if の条件に int は使えない。
日本語おかしいとか書いたが自分の日本語もおかしかったwすまん
>959 はい、クリックすると次の画像に切り替わっていくアプレットです。 public class imageCanvas extends Canvas implements MouseListener { int count = 1 ; imageCanvas() { addMouseListener(this); } public void paint(Graphics g){ if (count & 1) {g.drawImage(img[1],0,0,this);} else {g.drawImage(img[2],0,0,this);} } これだとどこを直せばいいでしょうか? intをbooleanに置き換えてみたのですが、 演算子&はboolean,intに適用できませんになってしまいます;
962 :
947 :2009/01/20(火) 15:20:00
>>952 お礼が遅くなってしまいましたがどうもありがとうございました!
>>961 プログラムに関する部分的な質問ならここよりも質問スレ向き
count&1という式はcountの最下位ビットによって0か1という「整数値」が得られる
boolean値が出てくるわけではない
count&1が1(もしくは0)に等しい時にifの後のブロックを実行させたいのなら
その条件式としてきちんとcount&1が1(もしくは0)に等しい旨を示さないといけない
言われたことを適当に解釈してint countをboolean countにしても正しくなるわけがない
if((count & 1) == 1)
>>958 がやりたいのはこういうかな
countが奇数なら〜ってやりたいなら
if(count%2 == 1)
の方が分かりやすい気がするけど。
>963 了解です。だいたい分かりました、ありがとうございます。 ほんとに知識の無い初心者なので、、すみません; >964 ありです、それに近い感じだと思います。 要領を得ない質問ばかりで申し訳ないです、もう一回if文を復讐しなおしてやってみたんですが this.addMouseListener( new MouseAdapter() { int count = 0; public void mouseClicked(MouseEvent e) { count++; if(count==1) {g.drawImage(img[2],0 , 0, app);} else if(count==2) { g.drawImage(img[3],0 , 0, app);} else if(count==3) {g.drawImage(img[4],0 , 0, app);} else if(count==4) {g.drawImage(img[5],0 , 0, app);} これで画像が表示されると思うのですが、でてきません。 if((count & 1) == 1) では表示されるのですが・・ 付けたし質問でごめんなさい、これで最後にします。
>>965 情報を小出しにしてはいけない。ソースコード全体が示されなければなんともいえない。
画面上のコンポーネントのものと違うグラフィックコンテクストに描こうとしているのかもしれないし、
単にrepaintを忘れているだけかもしれない。
やりたいのはこんなこと?
/* <applet code="Ehon.class" width="640" height="400"><param name="images" value="first.jpg,second.jpg,last.jpg"></applet> */
import java.awt.*;
import java.awt.event.*;
public class Ehon extends java.applet.Applet {
private int count = 0;
private Image[] images;
public void init() {
String[] resources = getParameter("images").split(",");
images = new Image[resources.length];
for (int i = 0; i < resources.length; i++) images[i] = getImage(getCodeBase(), resources[i]);
addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
count++;
repaint();
}
});
}
public void paint(Graphics g) {
g.drawImage(images[count % images.length], 0, 0, this);
}
}
imagesという名前のparamタグにカンマ区切りで並べられた画像ファイル群をクリックのたびに切り替えていくアプレット。
画像ファイル群はこのアプレットを含むディレクトリに置く。
>966 ありがとうございます!できました! お騒がせしてすみませんでした、以後気をつけます。
968 :
デフォルトの名無しさん :2009/01/21(水) 12:40:44
以前
>>896 でお世話になった者です。
前回の課題の続きなのですが、また行き詰まってしまいました;
【 課題 】<ゲームクリア画面の実装>
ゲームのクリア条件を満たしたら、
ゲームプレイ画面からゲームクリア画面へと移行するようにする。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】2. Swing
【 期限 】提出期限:2009.1.23 解答希望日:2009.1.22
【 Ver 】 1.4.2_09
【 補足 】
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/557.zip 土台は以前
>>897 さんから頂いたこのプログラムです。
クリア画面用の画像はsrcフォルダの中のimageフォルダに
clear.gifという名前で入れています。
ゲームクリア条件は敵の全滅です。(敵は上から踏むと消滅します)
度々すみません。どうかよろしくお願いします。
【 課題 】javaサーブレットからメールを送信する。
【 形態 】javaアプリケーション及びサーブレット
【 GUI 】分かりません。
【 期限 】1月31日
【 Ver 】java 1.6.0_10 tomcat 5.5.27
【 用語 】javamail sunが提供しているアプリケーションからメールを送受信するためのプログラム
【 補足 】
他サイトとマルチスレッドになりますが失礼を承知で質問させていただきます。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47883&forum=12 現在java mailを使ったプログラム・サーブレットを作成しているのですが、
サーブレットから値をアプリケーション(java mailの実行プログラム<サーブレットではありません>)に渡して
アプリケーションで実行しようと思っているのですがうまくいきません。
しかし、アプリケーション単体をコマンドプロンプトで動作を確認したところ作動しました。
javamailのjarファイル activation.jarとmail.jarはWEB-INFの配下libに配置しています。
また、クラスパッチは(以下のフォルダにもactivation.jarとmail.jarを配置しています)
C:\Program Files\Java\javamail-1.4.1\mail.jar;
C:\Program Files\Java\jaf-1.1.1\activation.jar;
問題のjavaファイルはコンパイルして
サーブレット(onmail)とアプリケーション(Mailsender1)をweb.xmlに登録してclassesに配備しています。
エラーは排出されません、ちゃんと終了します。
また、エラー構文としてUnsupportedEncodingException eをonmailのソースに書くと
MessagingExceptionがコンパイル時に設定されていないという表示が出てきます。
途中までのソースとweb.xmlの内容
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/558.zip なぜ作動しないのかとても気になっています。よろしくお願いします。
二次元配列の行ごとに要素値の最大値を表示する課題です 【 課題 】int[][]型の配列numについて、for文を使って各行ごとの最大値をint型の変数maxに格納して表示する 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】? 【 期限 】2009/1/30 【 Ver 】1.4.2_06 【 補足 】if文で値の代入を繰り返して最大値を出すのは分かるのですが、 for文が絡むとよくわからなくなってしまいます。 また、各行ごとに最大値を出す方法がよくわかりません。 下のように全行通しての最大値が出てしまいます(3行目は0になってほしいのに90になってしまう) 要素 10, 6, 3, 5, 1, 78, 11, 90, -4, 0, 0, -22, -3, -5, -1, 1行目の最大値 = 10 2行目の最大値 = 90 3行目の最大値 = 90 他の課題も各行ごとの処理にする問題なので行き詰まっています…どうかよろしくお願いします。
>>971 > 下のように全行通しての最大値が出てしまいます(3行目は0になってほしいのに90になってしまう)
maxを初期化してないんじゃね?
これ、入力はどうすんの?
>>971 numへの値の代入は自分の問題のやり方に適当に合わせて
3行目が90になるのは
>>972 の言うように各行ごとにmaxを初期化していないからと思われ
int[][] num = {
{ 10, 6, 3, 5, 1 },
{ 78, 11, 90, -4, 0 },
{ 0, -22, -3, -5, -1 }
};
for (int i = 0; i < num.length; i++) {
int max = Integer.MIN_VALUE;//もし各行に最低1個の値があるならnum[i][0]で初期化してもいい
for (int j = 0; j < num[i].length; j++) {//そのときは比較をj=1から始めてもよい
if (max < num[i][j]) max = num[i][j];
}
System.out.println(i + 1 + "行目の最大値 = " + max);
}
もし要素のない行があったらその行の最大値は嘘の値になるね int[][] num = { { 10, 6, 3, 5, 1 }, { 78, 11, 90, -4, 0 }, { 0, -22, -3, -5, -1 }, {} }; for (int i = 0; i < num.length; i++) { int max = Integer.MIN_VALUE; for (int j = 0; j < num[i].length; j++) { if (max < num[i][j]) max = num[i][j]; } if (num[i].length > 0) System.out.println(i + 1 + "行目の最大値 = " + max); else System.out.println(i + 1 + "行目に要素はありません"); }
976 :
デフォルトの名無しさん :2009/01/21(水) 23:55:56
【 課題 】課題1 for文を使い18から100までの数字で丁度18で割り切れるものをすべて表示しなさい 課題2 1から小さい順に7で割り切れかつ9で割り切れる数を10個求めて表示し、さらにその和を表示してください 【 形態 】Javaアプリケーション(main()で開始) 【 GUI 】制限なし 【 期限 】1月22日 【 Ver 】1.6.0_07 【 補足 】2問もすいません、急ですがどうかよろしくお願いします。
>>975 俺ならInteger.MIN_VALUEなんて知らんって言う人間のためにこっちかな。
for (int i = 0; i < num.length; i++) {
if (num[i].length > 0) {
int max = num[i][0];
for (int j = 1; j < num[i].length; j++) {
if (max < num[i][j]) max = num[i][j];
}
System.out.println(i + 1 + "行目の最大値 = " + max);
} else System.out.println(i + 1 + "行目に要素はありません");
}
>>976 public class R976 {
public static void main(String[] args) {
System.out.println("課題1");
for (int i = 18; i <= 100; i++) if (i % 18 == 0) System.out.println(i);
System.out.println("課題2");
int sum = 0;
for (int i = 1, n = 0; n < 10; i++) {
if (i % 7 == 0 && i % 9 == 0) {
System.out.println(i);
n++;
sum += i;
}
}
System.out.println("sum=" + sum);
}
}
>>979 まあ課題2も互いに素だからi+=63でもいいんだが
各数値のうち割り切れるものをifで選択していくというのが題意じゃないかと思って愚直に
>>979 それは答えありきでやってるからこういう課題ではいいんじゃね?
念のため
>>979 の意見を取り入れて
public class R976b {
public static void main(String[] args) {
System.out.println("課題1");
for (int i = 18; i <= 100; i += 18) System.out.println(i);
System.out.println("課題2");
for (int i = 63; i <= 63 * 10; i += 63) System.out.println(i);
System.out.println("和=" + ((10 * (10 + 1) / 2) * 63));
}
}
数学的知識をどこまで使っていいかは課題の意図を真には知りえないので推測するしかないわけだが
素直に解いて来た学生を、講師が小ばかにしてヘンテコな解答を発表するパターンか?
984 :
976 :2009/01/22(木) 06:26:21
みなさんありがとうございます。本当の助かりました。
985 :
971 :2009/01/22(木) 10:37:57
>>972 ,974-5,977
仰る通り、各行ごとにmaxを初期化していませんでした
お陰様で完成しました、ありがとうございました
よろしくお願いします!!!m(__)m 以下の図形を描くアプレットを1つ作成せよ 直線(drawLine),四角形(drawRect),楕円(drawOval) ※これらのメソッドはいずれも4つの引数をとる ただし,これらの図形の元となるクラスを作成し,それを 継承してポリモルフィズムにより上記の図形を描き分ける 工夫をすること ※図形の描画位置・サイズ等は任意かつ固定で良い
すみませんでも死にません 【 課題 】以下の図形を描くアプレットを1つ作成せよ 直線(drawLine),四角形(drawRect),楕円(drawOval) ※これらのメソッドはいずれも4つの引数をとる ただし,これらの図形の元となるクラスを作成し,それを 継承してポリモルフィズムにより上記の図形を描き分ける 工夫をすること ※図形の描画位置・サイズ等は任意かつ固定で良い 【 形態 】1. Javaアプリケーション(main()で開始)/2. Applet/ 1か2かどちらかわかりません 【 GUI 】? 【 期限 】1/24までにお願いします。 【 Ver 】1.6.0_06 【 補足 】ポリモフィズムを満たしてアプレットで図形を描くって どうすればいいんでしょうか?どうかよろしくお願いします。
【 課題 】int[][]型の配列numを、for文を使って各行の最小値を表示し、 その最小値の要素の要素番号を表示する 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】? 【 期限 】2009/1/30 【 Ver 】1.4.2_06 【 補足 】 各行の最小値をint型のminvalue、 その最小値の要素番号をint型のminindexに格納して表示する、というもので、 最小値を表示することはできたのですが、 その最小値の要素の要素番号を表示する方法が分かりません。 下のように表示させたいのですが…どうかお願いします。 配列num 1,10, 9, 7, 8 30, 10, 9, 4, 6 -1, -2, -9, -5, -6 0行目の最小値 = 1 0行目の最小値の要素番号 = 0 1行目の最小値 = 4 1行目の最小値の要素番号 = 3 2行目の最小値 = -9 2行目の最小値の要素番号 = 2
次ぎたてるよ
>>988 インタフェースで定義したけど、どうしてもクラスでないといやなら抽象クラスにでもしてくれ
//<applet code="Figure.class" width="200" height="200"></applet>
public class Figure extends java.applet.Applet {
private Drawable[] figures = {new FixedLine(), new FixedRectangle(), new FixedOval()};
public void paint(java.awt.Graphics g) {
for (Drawable f : figures) f.draw(g);
}
}
interface Drawable {
void draw(java.awt.Graphics g);
}
class FixedLine implements Drawable {
public void draw(java.awt.Graphics g) {
g.drawLine(20, 20, 70, 90);
}
}
class FixedRectangle implements Drawable {
public void draw(java.awt.Graphics g) {
g.drawRect(120, 20, 70, 50);
}
}
class FixedOval implements Drawable {
public void draw(java.awt.Graphics g) {
g.drawOval(30, 120, 150, 70);
}
}
t
t
1000ならジュースでも飲むか
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。