学校の宿題は俺にやらせて下さいver.2.0βfor Java
1 :
デフォルトの名無しさん :
04/02/06 16:53
2?
3 :
鳥取砂丘&rlo;ムレーハ村リ゚フ@&lro; ◆Dream/3P/. :04/02/06 16:56
深海型さっきゅんがよゆうで4げっと  ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ 。 。 || || /⌒ ヽ. / ⌒ヽ( /⌒ヾ ) ((゚Д゚,,))ゝヽのノノ ⊂⊂ _____つ )) ))
添削だとすれば、スレにソース貼ると仮定して 5レスくらい =百数十行におさまるくらいが限度だな
5 :
デフォルトの名無しさん :04/02/06 17:10
そうだいなすとーりーのげーむをつくてください
switch (rnd.nextInt(1000000)%1000000) {
case 1 :
System.out.println("小惑星にぶつかりました - THE END - ");
System.exit(-1);
default :
System.out.println("星空が綺麗です");
break;
}
>>5 コア部分
コスモを感じるぜ
まだベータか。次にみるときはRC1くらいにはなってるかな。
9 :
デフォルトの名無しさん :04/02/07 17:09
西暦を入力してください:2003 月を入力してください:8 ***** 2003年8月(閏年ではありません) ***** SUNMONTUEWEDTHRFRISAT 1 2 3 4 5 6 7 8 9 10111213141516 17181920212223 24252627282930 31 このような形のプログラムを作っていただけないでしょうか? よろしくお願いします!! キーボードから年と月を入力、その後うるう年かを判別し表示する。 入力された年の月をカレンダーにして表示するプログラムです。
>>9 void main()
{
//入力された年の月をカレンダーにして表示する関数です。
calender();
}
>>9 改行が多すぎって言われて縮めたから見にくくてゴメソ。全角スペースは半角に直してね。
import java.io.*;
import java.util.*;
class Test {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("西暦を入力してください:");
int year = Integer.parseInt(reader.readLine());
System.out.print("月を入力してください:");
int month = Integer.parseInt(reader.readLine());
GregorianCalendar calendar = new GregorianCalendar(year, month - 1, 1);
System.out.println("***** " + year + "年" + month + "月(閏年" + (calendar.isLeapYear(year) ? "です" : "ではありません") + ") *****");
System.out.println("SU MO TU WE TH FR SA");
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
for (int i = 1; i < dayOfWeek; i++) System.out.print(" ");
for (int i = 1; i <= calendar.getActualMaximum(Calendar.DAY_OF_MONTH); i++) {
if (i < 10) System.out.print(" ");
System.out.print(i + " ");
if (dayOfWeek++ % 7 == 0) System.out.println();
}
System.out.println();
}
}
すいません、テキストフィールドが変更したらすぐにイベントが起きるようにしたいのですが、 どのようにすれば良いですか? 下のように頑張ったのですが、これだと、テキストフィールド内でEnterを入力しないと動かないのです。。。 text1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ae){ System.out.println("テキスト変更検出"); } });
AWTならaddTextListener JTextFieldならgetDocument().addDocumentListener。 後者だとMVCできれい。
>>13 ありがとうございます。
なんとか上手くいきそうです。
実は、これ宿題じゃなくて仕事なんです、スレ違いですいません。
でも、大変感謝しています。
もし、このシステムが稼動したら名簿に「13」と書かせて頂きます。
>>14 > もし、このシステムが稼動したら名簿に「13」と書かせて頂きます。
ワラタ
16 :
デフォルトの名無しさん :04/02/09 17:52
取り合えずいきなりソース丸写しで申し訳ないんですが、直角三角形をアスタリスクで生成する問題は出来たのですが 正三角形(又は二等辺三角形)を作るのがわかりませんです、丸投げですけど誰かおしえてくらはい、解説付きで(爆 public class Lesson { public static void main(String[] args) { int x = Integer.parseInt(args[0]); int i; int count=0; //三角形の高さに達するまでループ、iはループカウンタ for(i = 0; i < x; i++ ) { //通常処理(高さ-1の空白を挿入) for(int a=0; a<i-1; a++) { //行の最初に挿入 if(a==0)System.out.print("*"); System.out.print(" "); } //行の最後に挿入(最初の一行目は終点の書き出しは無し(!=0)) if(i != 0)System.out.println("*"); //底辺の処理(三角形の高さとループカウントが一致したら全部出力) if(i==x-1) { for(int a=0; a<x ;a++) { //最後の行の出力 System.out.print("* "); } } } } }
>>16 形は微妙だが。
解説はここ
ttp://homepage1.nifty.com/kenzo30/ex_kisotyu/ex_ks_tyukyu9_7.htm int h = 3;
int x = (int)( h/Math.cos( Math.PI/3 ) * 2 );
System.out.println( x );
for ( int i = 0; i < h; i++ ) {
for ( int j = x/2; j > 0; j-- ) {
if ( (int)( i/Math.cos( Math.PI/3 )) == j ) {
System.out.print( '*' );
} else {
System.out.print( ' ' );
}
}
for ( int j = x/2; j < x; j++ ) {
if ( (int)( i/Math.cos( Math.PI/3 ) + x/2 ) == j ) {
System.out.print( '*' );
} else {
System.out.print( ' ' );
}
}
System.out.println();
}
for ( int i = 0; i < x; i++ ) {
System.out.print( '*' );
}
System.out.println();
18 :
デフォルトの名無しさん :04/02/09 18:17
* ** *** **** これはできたのか? * *** ***** これを作るのか?上下逆の場合もあるけど。 とりあえずヒントをあげると、 __* _*** ***** _の部分の数を段数から計算で求めればいい。
ガ━━ΣΣ(゚Д゚;)━━ン
21 :
デフォルトの名無しさん :04/02/09 18:26
あ、ありがとう御座います、後は自分で辺の長さをコマンドラインから取得して 可変にするように作り変えてみます、迅速な対応ありがとう御座います
22 :
デフォルトの名無しさん :04/02/13 08:22
いきなりソース丸写しで申し訳ないんですが 解説お願いします私としては二つの整数の差を比較する 際どうゆう書き方をしたらいいのか分かりません。 /* 二つの整数の差を比較して10以下か10以上か出力せよ */ #include <stdio.h> int main(void) { int n1,n2,sa1,sa2; puts("二つの整数を入力して下さい。"); printf("整数A>");scanf("%d",&n1); printf("整数B>");scanf("%d",&n2); n1-n2=sa1; n2-n1=sa2; if(n1-n2<=10 || n2-n1<=10)/*条件判断 10以下*/ {if(sa1<0 || sa2<0) /*二つの差が負の時*/ printf("それらの差は10以下です。\n"); else /*二つの差が正の時*/ printf("それらの差は10以下です\n"); } if(n1-n2>=0 || n2-n1>=0)/*条件判断 10以上*/ {if(sa1<0 ||sa2<0) printf("それらの差は10以上です。\n"); else printf("それらの差は10以上です。\n"); } return (0); }
23 :
デフォルトの名無しさん :04/02/13 08:25
すみません Javaですた C言語関連にスルーお願いしまつ。
文字列を数値に変換してそれをint型の変数に入れたいのですが 例えば char buf[] = "23456"; int num; こんな形だった場合、numに数値の23456を入れるにはどのようにするんでしょうか? bufに入るのは数字のみです。 宿題なのに質問スレに書いてしまった_| ̄|○lll スマソ
>>24 num = Integer.parseInt( new String(buf) );
26 :
デフォルトの名無しさん :04/02/19 15:56
学校でテキストファイルを読み込んでhtml形式で保存するってのが出ました。 BufferedWriterを使うんだとは思うのですがうまくいきません。 どなたか助けてください。
どううまくいかんの? HTML形式への変換はうまくいったけど出力がだめなんかな?
>>26 html形式で保存するって…
ファイルの頭とケツに適当に tag つけるだけでいいの?
>>26 File src = new File( "c:\\a.txt" );
File dest = new File( "c:\\a.html" );
dest.createNewFile();
BufferedReader bufR = new BufferedReader( new FileReader( src ) );
BufferedWriter bufW = new BufferedWriter( new FileWriter( dest ) );
bufW.write( "<html><body>\n" );
String line;
while ( (line = bufR.readLine() ) != null ) {
bufW.write( line );
bufW.write( "<br />\n" );
}
bufW.write( "</body></html>\n" );
bufR.close();
bufW.close();
31 :
デフォルトの名無しさん :04/02/19 16:08
不等号を < 等に置き換えるとか
しまった < のことね
33 :
デフォルトの名無しさん :04/02/19 16:12
>>27 コンパイルだけは通るのですが、出来たhtmlが空ファイルになってしまいます。
>>28 ソース中にプレーンテキストファイルを指定して、その内容がそのままhtmlとして作成されればOKです。
>>31-32 ああ、そこら辺のリプレースやってねーや。
まあ、いいか。
1.4以降ならreplaceAll使えば簡単だしな。
1.3以前でもORO使えばいいしな。
遅くなりましたがみなさん、ありがとうございました。
36 :
デフォルトの名無しさん :04/02/19 18:01
26さんのに似てると思うけど、javaを使ってcsvファイルを表としてhtmlに変換するにはどうすりゃいいの? 枠線とかも入れなきゃいけないんだけど、htmlの知識に乏しいのでおながいします。
HTML知らないでTABLE使うのは無謀かと思うが・・
38 :
デフォルトの名無しさん :04/02/19 18:10
>>37 javaもhtmlも平行して習っている最中なんで、訳わからんのです。
>>36 BufferedWriterで書き込み先ファイルをオープン。
書き込み先に<html><body><table>を書き込む。
BufferedReaderでファイルからcsvを1行ずつ読み込む。
String#splitでカンマごとの要素をString[]に格納。
書き込み先に<tr>を書き込む
String[]配列のサイズ分だけfor文で繰り返し
書き込み先に<td>、取り出したString[i]、</td>を順番に書き込む
3行目に戻る
終わったらcsvファイルを閉じる
書き込み先に</table></body></html>を書き込む。
書き込み先を閉じる。
0文字の時は<br>埋めたり
41 :
デフォルトの名無しさん :04/02/19 18:24
>>39 お願いです。
ソースとして書いてもらえません?
>>41 おいおい、あそこまで丁寧に書いてやったのにわからないのかよ。
回線切って、先生に土下座してこい。
ちょっと前にお題を出した9です。
>>11 さんありがとうございました。
後で、曜日をSUN MON...と直しました。
そして10以降の日付の位置も空文字で調整したのですが
最初の週の数値がうまくあるべき位置に出力されないのです。
うまくぴったり曜日の下に出力をできるように教えていただきたいです。
誰かお願いします。
import java.io.*; import java.util.*; class Urudoshi { public static void main(String[] args) throws IOException{ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); System.out.print("西暦を入力してください:"); int year = Integer.parseInt(reader.readLine()); System.out.print("月を入力してください:"); int month = Integer.parseInt(reader.readLine()); GregorianCalendar calendar = new GregorianCalendar(year, month - 1, 1); System.out.println("***** " + year + "年" + month + "月(閏年" + (calendar.isLeapYear(year) ? "です" : "ではありません") + ") *****"); System.out.println("Sun Mon Tue Wed Thr Fri Sat");
41 ではないが、ここは 学校の宿題は俺にやらせてください スレじゃないのか?それとも やり方を教えさせてください スレなのか?
>>47 よし、次スレからは「Javaの宿題がわからない私を調教してください」スレに。
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); int monthmax = calendar.getActualMaximum(Calendar.DAY_OF_MONTH); for (int i = 1; i < dayOfWeek; i++) for(int i = 1; i <= monthmax; i++) { if (i <= 9) { System.out.print(" "); System.out.print(i + " "); } } else if(i <= 10) { System.out.print(" "); System.out.print(i + " "); } else { System.out.print(" "); System.out.print(i + " "); } if (dayOfWeek++ % 7 == 0) System.out.println(); } System.out.println(); } }
一回作ってもらったんですがうまくいかなかったんで…、 じゃあダメですかね? dayofweekをifで条件つけて1-7まで分けて位置を調整しようとしたんですが 何か結局うまくいかなったんです。 駄目ならいいですが、っていいつつ乗せてるのも何なんですけど。
>>50 オレ、それの回答のレスみて試して見たらずれてたんで
該当するところにスペース2つ入れて直したぞ
for (int i = 1; i < dayOfWeek; i++) System.out.print(" ");//<-ここのスペースを1つから3つに
自分で適当に変えたなら、元に戻して試せ
多分元のやつも解答したときには3つあったんだろうけど、 ここに載るとつぶれるからな
全部間隔あけるのか。適当にスペース増やして見たら。 10日未満なら1つ増やしてるのを2つにして、10日以降も1つ増やすところと、 行末に改行だけしてるところに、1つ追加するとこだけ気をつければ あとは適当にやってれば合うと思うがな
s p a c e
55 :
デフォルトの名無しさん :04/02/19 21:54
下記のPersonクラスにインスタンスメソッドを追加してください。 追加するメソッドは、引数を受け取らず、データ(名前、年齢、収入)の表示を 行います。そのメソッドを呼び出して表示を行うようにmainメソッドを作成してください。 class Person { String name; int age; float salary; } class PersonExample { public static void main(String args[]) { Person p = new Person(); p.name = "John Doe"; p.age = 21; p.salary = 29100f; System.out.println("p.name = " + p.name); System.out.println("p.age = " + p.age); System.out.println("p.salary = " + p.salary); } } どなたかお願いします。
class Person { String name; int age; float salary; void printName(){ System.out.println( name); } void printAge(){ System.out.println( age); } void printSalary(){ System.out.println( salary); } } class PersonExample { public static void main(String args[]) { Person p = new Person(); p.name = "John Doe"; p.age = 21; p.salary = 29100f; p.printName(); p.printAge(); p.printSalary(); } }
nameで表示できるんですね。p.nameにしてずっと考えてました。 あほでした。ありがとうございました。
>>36 CSVって""で括ったのを文字列と判断したり、"をエスケープしたり色々仕様があると思うけど、
そういうむつかしいのは無視で、カンマで区切られた値を表示するだけ。
全角スペースを半角かタブに変えてね。
import java.io.*;
import java.util.*;
class Test {
public static void main(String[] args) throws Exception {
BufferedReader reader = new BufferedReader(new FileReader("test.csv"));
PrintWriter writer = new PrintWriter(new FileWriter("test.html"));
writer.println("<html><body><table border=\"1\">");
String line = null;
while ((line = reader.readLine()) != null) {
writer.println("<tr>");
for (StringTokenizer tokens = new StringTokenizer(line, ","); tokens.hasMoreTokens();) {
writer.println("<td>" + tokens.nextToken() + "</td>");
}
writer.println("</tr>");
}
writer.println("</table></body></html>");
writer.close();
reader.close();
}
}
つか、StringTokenizerだと値が空だとずれるね。
カンマの数を数えるなりして、
>>39 のString#split(String, int)しないとダメか。
さらに、空行のチェックもしてないし、
>>31 、
>>40 も考慮してないや。
まぁ、それを言い出すと""とか"エスケープとか、先頭行をカラム名にするとか、
色々出てくるし、宿題でそこまで要求されることも無いだろうけど、
対応しなきゃいけなさそうな要件があったら知らせて。
63 :
デフォルトの名無しさん :04/02/20 11:55
SQLも聞いて大丈夫でしょうか?
SQL そのものは板違い
CSVとCVSを良く書き間違えます。 書き間違えなくなるPGを教えて下さい。
>>65 C・S・V!C・S・V!と連呼すると脱ぐ女の子と、C・V・S!C・V・S!と連呼すると脱ぐマッチョを用意しろ。
いゃ〜ん、逆にして〜
(comma-separated-values)
70 :
デフォルトの名無しさん :04/02/20 12:30
JDBC,,,,,DB,,,,,PostgreSQL(and PHP)!!!!! ということで同じデータベースとか言う広義な仲ジャン! だからおせぇーてくらはい $Sql = "SELECT * FROM y"; $Sql .= " WHERE ps_id = " . '$id'; $Sql .= " OR flg =" . '1'; $Sql .= " ORDER BY ply_id desc"; $result = pg_Exec($db, $Sql); $Rows = pg_numrows($result); コレで$ROWSに長さが返ってきません、SQL文に問題があるんでしょうか
>>70 残念ながらPHP+SQLとなると話は別だ。
失せろ。
大馬鹿者。 ."$id" か .$id じゃないか?よく知らんけど。
73 :
デフォルトの名無しさん :04/02/20 12:38
そのJAVAをこよなく愛する貴方に惚れた! だからさっさと答えろ、知ってるんだろ! もちろんsunの株主さまですよね
74 :
デフォルトの名無しさん :04/02/20 12:40
結合演算子なんてどこに入れたって同じに決まってんだろsun
ごめん。そう来るとは思わなかった。あまりにも広義すぎてほぼ無関係な仲だよ。
多分
>>72 だけど、pg_result_error($result)でエラーメッセージ見るくらいしろよ。
もう死んでいいよ Java と全然関係ないことでやってきて SQL と全然関係ないことで間違ってて 指摘されたことと全然違うところで逆切れしてて 救いようが無い
しかも、宿題じゃないだろ、それ。
78 :
デフォルトの名無しさん :04/02/20 12:47
79 :
デフォルトの名無しさん :04/02/20 12:51
おまいらユーモアのかけらも無いな 何だかんだ言って笑ったんだろ、そーなんだろ
82 :
デフォルトの名無しさん :04/02/20 13:02
まぁ直らないんだけどな ちなみにidはvarchar(2)NOTNULL
flg の方も怪しいな いいから PHP のスレに行けよ
85 :
デフォルトの名無しさん :04/02/20 13:13
もうこねぇよ、
もう来ないならいいが、 $Sql .= " WHERE ps_id = '$id'"; とすると解決すると見た。 次はJavaの宿題持って来いよ。
87 :
デフォルトの名無しさん :04/02/20 13:24
Windowsのスクリーンセーバー(宇宙空間)みたいなのつくれ 言語はなんでもいい とにかくつくれ
88 :
デフォルトの名無しさん :04/02/20 13:29
>>86 直ったじゃねぇか。sunもちょっとはやるじゃねぇか
インサイダーで株価ageといてやるよ
89 :
デフォルトの名無しさん :04/02/20 13:29
90 :
デフォルトの名無しさん :04/02/20 14:40
>>59 ありがとうございます。
ちょっと今はコーディングできないので、後ほどまたレスさせてもらいます。
3月半ばまでにJAVAで「ミスタードリラー」か「ボンバーマン」を作れなんていう ろくでもない事を言い出した先生が出現しちまいました。 著作権って言葉を知らないんだろか?
個人で楽しむなら自由です
なんだ このスレ、アルゴリズムはおろか コーディングすらできない連中の集まりか。
>>94 その通りです。
87さんが作ってくれるのを楽しみにして待つしか能がありません。
頑張って今までに誰も見たことの無い様なスクリーンセーバー作ってくださいね。
96 :
デフォルトの名無しさん :04/02/20 16:10
おいおい なんで俺がつくらなきゃならんのだ? 根本的に意味不明
98 :
デフォルトの名無しさん :04/02/20 16:14
>>97 宿題やりたいんだろ?
思う存分やってくれ。
お な 根 縦読みか・・・
100 :
デフォルトの名無しさん :04/02/20 16:20
はやくつくれや コーディングまでは要求しないから アルゴリズムだけ考えれ
考えた
104 :
デフォルトの名無しさん :04/02/20 16:25
は ー ゴ 斜め読みか(^o^=)
105 :
デフォルトの名無しさん :04/02/20 16:26
画面の中心を元に ランダムで傾きが設定された直線の方程式をつくり xの値が増えるにしたがって拡大する仕組みなわけだが
バカでもなんでもいいからはやくつくれよ 弱い犬ほどよく吠える って言われないようにな
俺は確かにプログラムに関しては無知だが 学歴は良いほうだ。 広大附属小学校→広大附属中→広大附属高→慶應義塾大学経済学部→一橋大学大学院
広大ってのが何か知らんが、まあ実際慶応行ったとして、 いつまでも過去の栄光にしがみついてないで、目の前の問題に取り組んだらどうだ?
だから手助けしてくれよ 俺のプロセスが間違ってるなら指導してくれよ
>>107 で要ってることが意味不明だぞ。
画面の中心を元に、って元にどうするんだよ?画面の中心が(0,0)ってことか?
あとxは何だ?定義してから使えよ。いきなりxって言われてもわかんねーだろうが。
y=ax+bのxか?だとしたら拡大するのは何だ?
>>114 >>107 は適当に言っただけだが
Windowsの宇宙空間のスクリーンセーバ見てみれば
言いたいこと分かるだろ
画面の中心を元にってのは
画面の中心(クライアントのwidth/2 クライアントのheight/2)ってこと
その中心を中心にって言い方がまどろっこしいから「元」って書いた
>>115 いや、だからその中心がどうしたんだよ?
中心が(0,0)なのか?
だいたいなんで俺が考えなきゃいけないんだ? このスレは人の宿題をわざわざやりたがるキチガイがあつまってんだろ つべこべいわずにはやくやれや やらせてやるんだからありがたくおもえや
宇宙飛行のSSのことか?
>>116 お前もわからん奴だな。
数学的に言えば
中心点を通る傾きα(とりあえず任意)の直線をランダムに引き
その軌跡を点が通っていく仕組みだよ
あーもうイライラするなあ うちのパパに聞くからいいよ 使えねえサルばっか。 じゃあな
>>119 わかってないのはお前だろ。
はじめからそういえばわかるのにわけわからん言い方するから。
画面の中心を(0,0)として、y=axの直線を考え、その直線状を外側に移動する
多数のランダムな点を表示するプログラムを作れってことだろ?
慶応出の偉いお方の言う通りにすると、 Windows マークは垂直に移動できないわけだが。
>>87 できたぜ。DLしろ。
file://c:/windows/system32/ssstars.scr
宇宙飛行で拡大するのは○だったか。 Windows マークが飛んでくるのは何だっけ?
ちなみに、2画面でやるとその2つの画面の間が中心になる
>>70 みたいなのですら助けるようなおせっかいな奴らの溜まり場なのに、
煽られるだけだった
>>87 にはよっぽど人として大事な何かが欠けてたのかな?
127 :
デフォルトの名無しさん :04/02/20 21:41
Circleクラスを作成し、半径、中心座標(x,y)を定数としてカプセル化して下さい。 そして、それらのデータの値を表示して下さい。 (カプセル化する際は修飾子を用いてデータを隠蔽すること) お願いします。
class Circle { private final double center_x, center_y, radial; public Circle(double x, double y, double r){ center_x = x; center_y = y; radial = r; } public void show(){ System.out.println( "x = " + center_x + ", y = " + center_y + ", r = " + radial ); } public void main(String[] args){ new Circle(0,0,10).show(); } }
>>128 >private final double center_x, center_y, radial;
なぜにfinal?
>>129 定数としてカプセル化しろ、という話だったので。
面倒くさかったのでゲッターメソッドつけなかったけど、
必要だったらつけといて。
すまそ。なんか変な書き方したですが、 設計上finalにする利点とかを聞かせてもらえればと思いますた。
ありがとうございました。助かりました。
>>131 設計上?
最近はコード書きながら設計するのか?
利点はコンストラクタ(もしくは言語規定に明記された特定の場所)で
たったの一度しか代入できないため
うっかり間違って代入するとコンパイルエラーで知らせてもらえる。
代入できないので public にしておいても安全。
(型がプリミティブ型とか String みたいな不変オブジェクトの場合だけだけど)
お前らは 結局教科書に載ってるようなレベルのことしか分からない つまり創造性がない だからアルゴリズムすら示せない
>>133 なるほど。良く分かりました。ありがとうございますた。
宿題スレで創造性云々されてもなぁ…
>>134 こういっちゃ何だが、アルゴリズムはそれほど難しくはない。
スクリーンセーバ、宇宙飛行、Javaとかでググっても、
素人さんによるアプレットもいくつかある。
みんなアルゴリズムが分からなくて示せないわけではなくて、
誰もお前なんかに教えたくないから示さないんだと思う。
>みんなアルゴリズムが分からなくて示せないわけではなくて、 >誰もお前なんかに教えたくないから示さないんだと思う。 ハイハイ つまらなすぎて笑えません。
低学歴なら低学歴らしく 高学歴の奴隷として口ごたえせずに労働してほしいね
>>138 つまらないかも知れないけど、それが本当の理由だろうってことは、
いくら君でもうすうす感じてるでしょ?
>>139 学校で何習ってきたの?
>>141 その身分社会の構造をもって、
上位にいる君の望むように下位にいるこのスレの人を動かすことができた?
俺が87から142まで常に話題の中心だった。 これこそが俺の意図した結末であり、 別にアルゴリズムやコードを本当に求めていたわけではない。 とネタバレするとあまりにもかわいそうなので あまり言うべきではなかったな。
ソーデスネ
>>143 それはつまり、学歴も高くて頭も良いにも関わらず、
話題の中心になるにしても、もっと生産的な話題、
例えば新しいアルゴリズムの解法を提供することで、
このスレの住人を指導する意味での話題の中心になれたにも関わらず、
他人をとても高尚とは言えない内容で煽って、
スレの住人の迷惑の中心人物となって注目を引くという、
幼稚な自己顕示欲に駆られて起こしたとしか思えない行動の結末が、
君の本当に意図した結末だったってこと?
本当に学歴も高くて頭も良いの?
>>146 お前、tanasinnスレの住民みたいだね。
意味のないことをトートーと語る。
そういうのは論理的に話してるようで
単なる言葉アソビにすぎない。
そして最後に煽る、と。
幼稚だと思ったんならそれでいいんじゃないの?
tanasinnは強制されるものではないし
人のtanasinnを否定するものでもない。
>>147 なんで?別に非論理的でも無意味でもないよ?あの程度の文章も読めない?
分かりやすく言うと、こんな感じ。これなら分かるだろ?
頭いいんなら他に話すこともあったろうに、
なんであんなバカっぽい話しかできなかったんだ?
みんなに嫌われただけだとおもうけど、
ほんとにそれでよかったのか?
ちなみに、漏れ無教養だからtanasinnを強制するって意味分からん。
っていうか、もはや漏れの方も荒らしになって来てるな・・・。
みなさん、すんませんでした。
>>143 > 俺が87から142まで常に話題の中心だった。
え〜と。バカに人は群がるからな。
>>149 >もうお前ネタなのかマジでつっかかってきてるのかワカランな
ネタに決まっとろうが。誰がお前なんかマジで相手にするか。
って書こうかと思ったけど、いくらなんでもあれなんでやめときます。
tanasinnって、哲学か何かの用語だと思ってた。リンク先見て激しくワロタ。
CHANGE…AとBの画像(同じサイズ、色違い)を入れ替える(済) CHANGE2…対応するボタンの切り替え(済) A…Bの画像をAの画像に替える(済) ※下記の制御をするプログラムが分かりません B…Aの画像をBの画像に替える AとBの画像が重ならないようにするプログラムを追加する
import java applet.*; import java awt.*; import java awt.evevt.*; public class ima extends Applet implements AtionListener{ Image pic1,pic2; int x1=0,y1=0,x2=550,y2=0,lx=544,ly=237,flg1=1,flg2=1,flg3=1,flg4=1; Button up = new Button("W"); Button down = new Button("X"); Button left = new Button("A"); Button right = new Button("D"); Button up2 = new Button("8"); Button down2 = new Button("2"); Button left2 = new Button("4"); Button right2 = new Button("6"); Button change = new Button("CHANGE"); Button change2 = new Button("CHANGE2"); Button a = new Button("A"); Button b = new Button("B"); public void paint(Graphics g){ if(x1 > lx)x1=lx; if(x1 < 0)x1=0; if(y1 < 0)y1=0; if(y1 > ly)y1=lx;
if(x2 > lx)x2=lx; if(x2 < 0)x2=0; if(y2 < 0)y2=0; if(y2 > ly)y2=lx; if(x1-x2 > 56); if(x2-x1 > 56); if(flg1 == 1){ if(flg3 == 1){ g.drawImage(pic1,x1,y1,this); g.drawImage(pic2,x2,y2,this); } if(flg3 == -1){ g.drawImage(pic2,x1,y1,this); g.drawImage(pic2,x2,y2,this); } } if(flg1 == -1){ if(flg3 == 1){ g.drawImage(pic1,x1,y1,this); g.drawImage(pic2,x2,y2,this); } if(flg3 == -1){ g.drawImage(pic2,x1,y1,this); g.drawImage(pic2,x2,y2,this); } } }
public void init(){ pic1 = getImage(getDocumentBase(),"a1.gif"); pic2 = getImage(getDocumentBase(),"a2.gif"); setLayout(null); up.setBounds(50,200,30,30); down.setBounds(50,260,30,30); left.setBounds(20,230,30,30); right.setBounds(80,230,30,30); up2.setBounds(520,200,30,30); down2.setBounds(520,260,30,30); left2.setBounds(490,230,30,30); right2.setBounds(550,230,30,30); change.setBounds(240,230,60,30); change2.setBounds(240,260,60,30); a.setBounds(300,230,60,30); b.setBounds(300,260,60,30); add(up); add(down); add(left); add(right); add(up2); add(down2); add(left2); add(right2);
add(change); add(change2); add(a); add(b); up.addActionListener(this); down.addActionListener(this); left.addActionListener(this); right.addActionListener(this); up.addActionListener(this); down.addActionListener(this); left.addActionListener(this); right.addActionListener(this); change.addActionListener(this); change2.addActionListener(this); a.addActionListener(this); b.addActionListener(this); } public void actionPerformed(ActionEvent e){ String s; s = e.getActionCommand(); if(flg2 == 1){ if(s == "W")y1-=5 if(s == "X")y1+=5 if(s == "A")x1-=5 if(s == "D")x1+=5
if(s == "8")y2-=5 if(s == "2")y2+=5 if(s == "4")x2-=5 if(s == "6")x2+=5 } if(flg2 == -1){ if(s == "W")y2-=5 if(s == "X")y2+=5 if(s == "A")x2-=5 if(s == "D")x2+=5 if(s == "8")y1-=5 if(s == "2")y1+=5 if(s == "4")x1-=5 if(s == "6")x1+=5 } if(s == "CHANGE") flg1 *= -1; if(s == "CHANGE2")flg2 *= -1; if(s == "A")flg3 *= -1; if(s == "B")flg4 *= -1; repaint(); } }
Tabキーや半角スペースが詰められるのを忘れていた為見難くてすみません。
>>152 Aボタンで画像が切り替わると同時に左に移動するっていう、バグっぽい動きは正しいの?
A/Bボタンは、単純に画像切り替えってことでOK?
あと、フラグでなんとかしようとしてるみたいだけど、こうしないといけないの?
画像A/B用のクラスを追加するとかして、書き換えてしまってもいい?
>>159 返答に遅れてすみません。
確認したら
>>154 の21、22行目が間違っていました。
g.drawImage(pic1,x1,y1,this);
g.drawImage(pic2,x2,y2,this);
ではなく
g.drawImage(pic2,x1,y1,this);
g.drawImage(pic1,x2,y2,this);
が正しいです。
フラグを用いているのは他の方法が思いつかなかっただけなので
書き換えてしまって大丈夫です。
1 Java言語で使用できる変数名を次の1から12までの中から4つ選び番号で答えなさい。 1 hotjava 2 x+y 3 3D 4 length/time 5 @average 6 MS_C 7 sum# 8 C++ 9 Ver.3 short 11 _ _java_ _ 12 breaks 2 次の定数を10進数に変換して数値で答えなさい。なお整数定数として正しくないものはエラーと答えなさい。 1 0/ 11 (0の中に斜め線が入った0を0/としています。) 2 0/ a1 3 0/ 3D 4 0/ 8 5 0/ XFF 6 1 0/ L 7 1 0/ F 8 ff
Q1 : 写し間違ってない? 4つもないよ。 Q2 : > (0の中に斜め線が入った0を0/としています。) これは君の注釈? それはただの 0 。 オーとの区別でそういうフォントになってるだけ。 D の縦棒に \ が入ったり、6 や 9 に下線が入るのと似たようなもの。 正しくないのは 2, 3, 7, 8。 5 の 10進変換くらいはできるでしょ。
>>163 1 hotjava 6 MS_C 11 __java__ 12 breaks
じゃない?
>>163 レスthx
問1ですが
hotjava
x+y
3D
lenght/time
@averange
MS_C
sum#
C++
Ver.3
short
_ _java_ _
breaks
の12個です。この内4つが正解でして私は、hotjava MS_C _ _java_ _ breaksを選択したんですが
間違ってますかね?
問2の10Lというのは最後にLがつくと64ビット整数での8バイトの10になる・・・64ビット整数ってところが
わからなくてどう変換したらいいのかわかりません。
0xで始まる整数は16進数、このxは大文字小文字関係ないのですか?
>>164 いや _ _ とスペースが入ってるからどうなのかと思って
>>165 >64ビット整数ってところがわからなくて
16進数で表せば 0x000000000000000a のこと。0xa と同じ。
上のほうの bit まで情報があれば数がでかい= int や short などに変換できない、というだけで、
整数は整数。
>0xで始まる整数は16進数、このxは大文字小文字関係ないのですか?
今まで大文字にしたことないけど普通にコンパイルは通るみたいだね。
10L が10l でも通るしね。
>>167 ありゃ、ほんとだ。写し間違いじゃなければ、NGだ。すまそ。
//kadai1b.java public class Kadai1b { public static void main(String a{ }){ char c1 ='\101' , c2='\u0061'; System.out.println(''c1=''+c1+''c2=''+c2); } } a c1=\101 c2=\u61 b c1=H c2=h c c1=。 c2=\u61 d c1=h c2=H e c1=A c2=a 上の実行結果として適当なものをaからeの中から選んでください 度々ですみません。お願いします。
>>167 ありがとうございます
レス下さった方も感謝です
>>161 返答がまた遅れてしまって申し訳ありません。
【a】ボタンと【B】ボタンの動作が違っていました。
自分のレスを見て動作についての説明が不足していたのと課題の資料を読み間違えていたのが原因です。
正しい動作は
【a】(【B】)ボタンを押すと両方の画像が【a1】(【a2】)になり、もう一度押すと押す前の状態に戻ります。
その他の動作は大丈夫でした。
173 :
デフォルトの名無しさん :04/02/24 18:04
//宜しくお願い致します 以下の仕様に従って、口座クラスとその口座クラスを利用するクラスを作成しなさい。 利用者クラスでは口座を作り、お金を預けて、その口座番号と預金額を表示するようにします。 (1)口座クラスを下記の仕様に従い作成しなさい。 クラス名:Kouza 情報(フィールド) :口座番号(kouzaNum)、預金額(yokingaku) 初期化(コンストラクタ) :口座を開設(口座番号と最初の預金額を与える) 操作(メソッド) :お金を預ける(charge) (2)利用者クラスを下記の仕様に従い作成しなさい。 クラス名:Yokinsha 情報(フィールド) :預金額(yokingaku)、預金者名(name) 初期化(コンストラクタ) :預金者の名前を与える 操作(メソッド) :メインメソッド 1) Kouzaクラスを使って口座を作成します 2) 10,000円を預けます 3) 画面には、kouzaNumとyokingakuを表示して下さい
>>173 途中まで組んだけど問題が非常識だから止めた
何で預金者と口座にリレーションが無いのだ
>>172 スマソ。今見た。家に帰ったらやるからちょっと待って。
176 :
デフォルトの名無しさん :04/02/24 23:50
下記の空欄を答えよ、それぞれ同じ語が入る。 キーボードからの入力、ファイルへのデータ読み書き、ディスプレイへの表示、 ネットワークへのデータ送受信などの処理を入出力処理という。 入出力処理において、外部とのデータのやり取りをする箇所を、 「キーボード用」、「ネットワーク用」の様に、装置ごとにプログラムを用意するのでは、 大変ですし、新しい装置が出てくるたびに新しいアクセス方法を覚えなければなりません。 そこでjavaでは、外部とのデータのやり取りを「 」という抽象的な概念として表しています。 「 」を使う事によって装置を意識しない共通のアクセス手順で、データの読み書きを行えます。 //宿題です お願いします
ストリーム、かな。
>>177 お返事どうも、ありがとう御座います!!!!
>>180 漏れの学生時代、こんな宿題なかったから、新鮮で面白くて。
どうせすぐ飽きるだろうけど、しばらくは頑張らせてください(w
>>161 さん
遅くなりましたが有難う御座います。
無事に課題を提出する事が出来ました。
保守
184 :
デフォルトの名無しさん :04/03/06 14:16
以下のサンプルソースを変えて「C:\Program Files\Java」内にある .iniファイル内に書かれているフォルダに JTableの内容をCSV形式でファイルに出力するプログラムを作成する。 //以下サンプルソース import javax.swing.*; import javax.swing.table.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.io.*; //******************************************************************************** // // Class : TableOutSmp // : JTableの内容をCSV形式でファイルに出力 // //******************************************************************************** public class TableOutSmp extends JFrame implements ActionListener { Container container; JTable table; JScrollPane scrollPane; TableModel model;
185 :
デフォルトの名無しさん :04/03/06 14:17
public TableOutSmp() { // コンテンツペインを取得する( ウィンドウのクライアント領域 ) super("TableOutSmp"); container = this.getContentPane(); //列名を定義 String[] columnTitles = { "日付","開始時間", "終了時間", "時間外(普通)", "時間外(深夜)", "実労時間","控除"}; //データを定義 Object[][] dataEntries = { {"08/01","09:00", "18:00", "00:00", "00:01", "00:10"," "}, {"08/02","10:00", "19:00", "01:00", "00:02", "00:20"," "}, {"08/03","11:00", "20:00", "02:00", "00:03", "00:30"," "}, {"08/04","12:00", "21:00", "03:00", "00:04", "00:40"," "}, }; //テーブルモデルを作成 model = new TableOutSmpModel(columnTitles, dataEntries);
186 :
デフォルトの名無しさん :04/03/06 14:17
//テーブルを作成 table = new JTable(model); table.createDefaultColumnsFromModel(); //コンボボックス作成 String[] strKoujo = {"遅刻","早退","外出","休憩"}; JComboBox cmbKoujo = new JComboBox( strKoujo ); table.getColumnModel().getColumn(6).setCellEditor( new DefaultCellEditor( cmbKoujo ) ); //スクロールを作成 JScrollPane scrPane = new JScrollPane(); //スクロールペインを通して、テーブルのサイズを設定 scrPane.getViewport().setView(table); scrPane.setPreferredSize(new Dimension(750, 200)); //パネル作成 JPanel p1 = new JPanel();
187 :
デフォルトの名無しさん :04/03/06 14:18
//終了ボタン作成 JButton jbEnd = new JButton("終了"); jbEnd.addActionListener(this);//アクションリスナーを設定 //保存ボタン作成 JButton jbSava = new JButton("保存"); jbSava.addActionListener(this); // パネルをコンテンツに設定 p1.add(scrPane); p1.add(jbSava); p1.add(jbEnd); container.add(p1); // ウィンドウをクローズするためのリスナを登録する addWindowListener(new WindowEventHandler()); setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); setBackground(Color.white); setSize(770, 300); // Frame width=450, height=150 show(); // フレームを表示 }
188 :
デフォルトの名無しさん :04/03/06 14:19
// ウィンドウをクローズする為のリスナクラス class WindowEventHandler extends WindowAdapter { public void windowClosing(WindowEvent evt) { System.exit(0); } } //アクション時の動作を定義 public void actionPerformed(ActionEvent e){ String action = e.getActionCommand(); //CSVファイル作成処理 if(action.equals("保存")){ int i, j; Object objVal; String strVal; String strRec;
189 :
デフォルトの名無しさん :04/03/06 14:20
try{ File outFile = new File("smpKintai.txt"); FileWriter out = new FileWriter(outFile); for( i=0 ; i< model.getRowCount() ; i++ ){ strRec = ""; for( j=0 ; j<model.getColumnCount() ; j++ ){ objVal = model.getValueAt(i,j); strRec = strRec.concat(objVal.toString()); if( j < model.getColumnCount()-1 ) strRec = strRec.concat(","); else strRec = strRec.concat("\n"); } out.write(strRec); } out.close(); }catch(IOException ioe){} //終了処理 }else if(action.equals("終了")){ System.exit(0); } }
190 :
デフォルトの名無しさん :04/03/06 15:49
// main()メソッド(プログラム開始) public static void main(String[] args) { TableOutSmp frame = new TableOutSmp(); } } //******************************************************************************** // // 編集可能なテーブルモデルのクラス // //******************************************************************************** class TableOutSmpModel extends AbstractTableModel { String[] columnTitles; Object[][] dataEntries; int rowCount; // コンストラクタ public TableOutSmpModel(String[] columnTitles, Object[][] dataEntries) { this.columnTitles = columnTitles; this.dataEntries = dataEntries; } // テーブルの行数を取り出す public int getRowCount() { return dataEntries.length; }
191 :
デフォルトの名無しさん :04/03/06 15:50
// テーブルの列数を取り出す public int getColumnCount() { return columnTitles.length; } // 指定した行/列位置の値を取り出す public Object getValueAt(int row, int column) { return dataEntries[row][column]; } // 列名を取り出す public String getColumnName(int column) { return columnTitles[column]; } // テーブルの各欄のオブジェクトのクラスの種類を取り出す public Class getColumnClass(int column) { return getValueAt(0, column).getClass(); } // テーブルのセルをすべて編集可能にする public boolean isCellEditable(int row, int column) { return true; } // 指定の行/列位置の値を設定する public void setValueAt(Object value, int row, int column) { dataEntries[row][column] = value; } }
192 :
デフォルトの名無しさん :04/03/06 15:51
以上です。 長くて申し訳ありませんが、よろしくお願いいたします。
1 :デフォルトの名無しさん :04/02/06 16:53 おい!厨房どもJavaの宿題はここに持って来い! ただGUIかんけーはめんどクセーから、放置するぞ! ただGUIかんけーはめんどクセーから、放置するぞ! ただGUIかんけーはめんどクセーから、放置するぞ! ただGUIかんけーはめんどクセーから、放置するぞ! ただGUIかんけーはめんどクセーから、放置するぞ! ただGUIかんけーはめんどクセーから、放置するぞ! ただGUIかんけーはめんどクセーから、放置するぞ!
問題は GUI じゃないし
>>189 のファイル名を、.ini から取り出せばいいだけじゃないの?
BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("パスとファイル名")));
String filename = in.readLine();
in.close();
File outFile = new File(filename);
195 :
デフォルトの名無しさん :04/03/09 14:04
クリック位置に描画されたボール(円)が動き回るJAVAアプレットを 作成して欲しいです。 ボール(円)のサイズ、色、動き回るスピード、動き出す方向はランダムな値です。 ウインドウの上下左右の境界線に達した場合は、ボールが跳ね返るようにします。 JAVAのコードのみでいいので宜しくお願いします。 お手数をかけますが何卒。
public class Q195 extends Applet { public void init() { new Thread(new Runner()).start(); } private Random rnd = new Random(); private Vector balls = new Vector(); private Rectangle bounds = new Rectangle(20, 20, 100, 100); private MyCanvas canvas; public Q195() { canvas = new MyCanvas(); setLayout(new BorderLayout()); add(canvas, BorderLayout.CENTER); } public Canvas getCanvas() { return canvas; } private void addBall(Point p) { int size = (int)(rnd.nextDouble()*10.0 + 5.0); Ball ball = new Ball(p.x, p.y, size, Color.red); ball.setDirection(rnd.nextDouble()*Math.PI*2.0); balls.add(ball); }
private static class Ball { private double dx, dy; private int x, y, size; private Color color; public Ball(int x, int y, int size, Color color) { this.x = x; this.y = y; this.size = size; this.color = color; dx = 0.0; dy = 0.0; } public void setDirection(double theta) { dx = Math.cos(theta) * 5.0; dy = Math.sin(theta) * 5.0; } public void move(Rectangle bounds) { x += dx; y += dy; if (x < bounds.x) { x = bounds.x * 2 - x; dx = -dx; } if (y < bounds.y) { y = bounds.y * 2 -y; dy = -dy; } if (bounds.x + bounds.width < x) { x = (bounds.x + bounds.width)*2 - x; dx = -dx; } if (bounds.y + bounds.height < y) { y = (bounds.y + bounds.height)*2 - y; dy = -dy; } } public int getSize() { return size; } public Color getColor() { return color; } public int getX() { return x; } public int getY() { return y; } public void setX(int i) { x = i; } public void setY(int i) { y = i; } }
public class Runner implements Runnable { public void run() { while (true) { try { for (Enumeration e=balls.elements(); e.hasMoreElements(); ) { Ball ball = (Ball)e.nextElement(); ball.move(bounds); } canvas.repaint(); Thread.sleep(100); } catch (InterruptedException ex) { ex.printStackTrace(); } } } } public class MyMouseListener extends MouseAdapter { public void mousePressed(MouseEvent ev) { addBall(ev.getPoint()); } }
public class MyCanvas extends Canvas { Image img = null; public MyCanvas() { addMouseListener(new MyMouseListener()); } public void paint(Graphics org) { if (img == null) { img = createImage(200, 200); } Graphics g = img.getGraphics(); g.setColor(Color.white); g.fillRect(0, 0, 200, 200); for (Enumeration e=balls.elements(); e.hasMoreElements(); ) { Ball ball = (Ball)e.nextElement(); g.setColor(ball.getColor()); int size = ball.getSize(); g.fillArc(ball.getX() - size, ball.getY() - size, size*2, size*2, 0, 360); } org.drawImage(img, 0, 0, this); } public void update(Graphics g) { paint(g); } }
public static void main(String[] args) { Q195 q = new Q195(); Frame f = new Frame(); f.add(q.getCanvas()); f.setVisible(true); new Thread(q.new Runner()).start(); } 上記 main で動作確認しただけで、applet (かつ1.1.8環境)は試してない。 変だったら、色のランダムとともに、課題として自分で頑張って考えてみておくれ。 色のヒント: r, g, b を Random#nextInt() から解決するか、 Color[] COLORS = { Color.black, Color.blue , ... として、 添え字をやはり Random から解決するか。
201 :
デフォルトの名無しさん :04/03/10 01:34
素人なんで質問の意味が伝わりにくいかもしれませんけどお許してください。 TextFieldやJTextAreaから文字列を取得するメソッド?(getActionCommand,getItemみたいな)を教えてください。
JTextArea.getDocument() TextArea.getText() そのクラスにないメソッドは親クラスを調べるといいよ。 あとEclipseとかで"hoge."まで押すと勝手に出てくるよ。
作って頂いた後に、早速、空白などに気をつけてコンパイルしてみたのですが、 エラーが30以上出てしまいます…。 こっちが何かおかしいんでしょうか?
import つけた? import java.applet.Applet; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.*; 自明だからと省いたんだけど。 とにかく一番最初の1つをここに貼りなさい。
>>202 ご教授どうもありがとうございます。
しかしTextAreaはできたんですがJTextAreaがどうしてもできません。
Stringで返したいんですが・・・
JTextArea text = new JTextArea(3,20);
text.getDocument().addDocumentListener(this);
public void changedUpdate(DocumentEvent e) {
}
public void insertUpdate(DocumentEvent e) {
System.out.println(text.getDocument());
}
public void removeUpdate(DocumentEvent e) {
}
こうすると訳のわからない文章が返ってきます。
>>205 getText() でいいんだよ。
JTextArea は、言って見れば「高尚な」使い方ができるだけであって、
そのときは getDocument() を使うんだけど、
低次元なことでいいなら getText() も用意されてるよ、という感じ。
>>206 ボケてました。。。
どうもありがとうございました!
208 :
デフォルトの名無しさん :04/03/20 21:34
閏年のプログラムを作ってください。 パラメータ:year(Date型) 戻り値:boolean(true、false) 入力した年が閏年かどうか判定するプログラムです。 お願いします。
>>208 4、100、400、2000 で割る。だったような。
>>208 boolean isLeapYear(Date date){
return new java.util.GregorianCalendar().isLeapYear(1900+date.getYear());
}
>>209 4で割り切れる年は閏年、
ただし100で割り切れる年は閏年でない、
ただし400で割り切れる年はやっぱり閏年。
2000は関係ないと思った。
212 :
デフォルトの名無しさん :04/04/08 20:51
保守age
213 :
デフォルトの名無しさん :04/04/27 17:01
そろそろ情報科に入ったはいいがJavaよくわかんねー、って人が出てきそうなのでスレを上げておいてあげよう
214 :
デフォルトの名無しさん :04/04/27 17:23
class Context{ public void contexInterface(){ } } interface Strategy{ public void AlgorithmInterface(); } class ConcreteStrategy implements Strategy{ public void AlgorithmInterface(){ } } 次のJAVAコードからクラス図を作成しなさい。
215 :
デフォルトの名無しさん :04/04/27 17:25
教えてください、お願いします
┌─────────┐ ┌─────────┐ │<<interface>> .│ │ConcreteStrategy │ │ Strategy .│ ├─────────┤ ├─────────┤ ├─────────┤ │+AlgorithmInterface().│ └─────────┘ └─────────┘ △ : ┌─────────┐ │ConcreteStrategy │ ├─────────┤ ├─────────┤ │+AlgorithmInterface().│ └─────────┘
まちがえた。右上のは、 ┌─────────┐ │Context │ ├─────────┤ ├─────────┤ │+ContextInterface() │ └─────────┘ で、このContextは何か関連があるのか?
218 :
デフォルトの名無しさん :04/04/27 21:33
多分関係あるね。そこらへんはJAVAの詳しい人におまかせ!
デザパタだろ。 Strategyパターン。
これもデザパタ。Adapterパターン。 class Adaptee{ public void start(){ //ここにスタートの処理 } public void stop(){ //ここにストップの処理 } } interface Target{ public abstract void begin(); public abstract void end(); } class Adapter extends Adaptee implements Target{ public void begin(){ start(); } public void end(){ stop(); } } public class Main{ public static void main(String[] args){ Target t = new Adapter(); t.begin(); t.end(); } }
222 :
デフォルトの名無しさん :04/04/27 22:20
>>214 のソースじゃ関係は結べないわな。
そのソースからクラス図作れば
>>215 としかかきようがない。
間違い。
>>215 ではなくて
>>126 でした。
この宿題。与えらたソースをただクラス図にするだけじゃないんでないの?
コードを完成させるのも宿題のうちとか・・。
225 :
デフォルトの名無しさん :04/04/27 22:29
神様ありがとうございました。 本当にネ甲だ!
226 :
デフォルトの名無しさん :04/04/27 22:31
>>224 与えられたソースをただクラス図にするだけだと思います。
227 :
デフォルトの名無しさん :04/04/27 23:03
次のJAVAコードからクラス図を作成しなさい。 public Interace Target{ void begin(); void end(); } public class Adaptee{ private String string; public Adaptee(String string){ this.string=string; } public void start(){ System.out.printin(string+"is start up."); } public void stop(){ System.out.printin(string+"is ended."); } } public class Adapter Implements Target{ private Adaptee adaptee; public Adapter(String string){ adaptee=new Adaptee(string); } public void begin(){ adaptee.start(): } public void end(){ adaptee.stop(); } }
228 :
デフォルトの名無しさん :04/04/27 23:04
宜しくお願い致します。
229 :
デフォルトの名無しさん :04/04/27 23:28
230 :
デフォルトの名無しさん :04/04/27 23:53
左を見ろ→ (@ω@)こっちは右だ馬鹿w
231 :
お願いします :04/04/28 00:48
文字列の配列を受け取り,配列の最初から最後まで,StrStackに順番にpushする.その後,StrStackが空になるまでpopを繰り返しながら文字列を表示するメソッドreverseを作りなさい.ただし,新しいクラスStrReverseを作り,そのクラスのメソッドとして実装すること /** * 文字列の配列を逆順に表示するクラス */ public class StrReverse { /** * 指定した文字列配列を逆順に表示する. * @param strs 対象となる文字列配列 */ public void reverse(String[] strs){ StrStack stack = new StrStack(strs.length); for(int i=0; i < strs.length; i++){ //ここでプッシュする } while( stack.isEmpty()==false ){ //ここでポップして,そのデータをSystem.out.printlnで表示 } } } /** * クラスStrReverseを試すクラス */ public class StrReverseTest { public static void main(String[] args){ String[] fruits = { "イチゴ","サクランボ","ブルーベリー","ミカン","リンゴ" }; StrReverse strRev = new StrReverse(); strRev.reverse(fruits); }}
232 :
デフォルトの名無しさん :04/04/28 09:47
@ @@ @@@ @@@@ @@@@@ ↑みたいにC言語で作るにはどうしたらよい? ついでにこっちもおながいします @ @@ @@@ @@ @
タイトルミロ for java ッテカイテアンダロ
>>231 です
教えていただきたいのであげさせてもらいます!
プッシュするところ。stack.push( ) ←このカッコの中を"a"とかにするとaが出力されるみたいなので
ここに"イチゴ""さくらんぼ"〜〜をいれればよいのでしょうか?その場合の変数はどうなってるのでしょうか。
あとポップのところ
System.out.println(stack.pop());
これかなと思ったのですが反応しないです。ご教授下さい。
StrStackの仕様がわからん。
public void reverse(String[] strs){ StrStack stack = new StrStack(strs.length); for(int i=0; i < strs.length; i++){ //ここでプッシュする stack.push(strs[i]); } while( stack.isEmpty()==false ){ //ここでポップして,そのデータをSystem.out.printlnで表示 System.out.println(stack.pop()); } }
>>227 ○
Target
begin() : void
end() : void
\
\
┌──────────┐ ┌──────────┐
| Adapter | | Adaptee |
├──────────┤ ├──────────┤
|-adaptee : Adaptee | |-string : String |
├──────────┤───├──────────┤
|+Adapter(string : String)| |+Adaptee(string : String)|
|+begin() : void | |+start() : void |
|+end() : void | |+stop() : void |
└──────────┘ └──────────┘
集約の ◇ がほしいとこだな。
243 :
デフォルトの名無しさん :04/04/30 10:56
情報処理概論という授業で宿題が出ているんですけど、 わからないので教えてください。 問題→キーボードから入力された実数の2乗と平方根とを計算して表示する プログラムを書きなさい。 「13.7の2乗は187.69です」、「13.7の平方根は3.70135です」 の2つとなる。平方根を何桁まで表示するかは気にしなくてよい。 答えの欄に、実数の2乗と平方根を計算し表示する。 と書かれてあるんですが、一生懸命考えたんですけれども、 さっぱりわからなかったので、どうかわかりやすく 答えを指導していただけるとありがたいと思いますので、 どうかよろしくお願いします。 今日の午前11時30分までに教えてくれる方お願いします。
public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //標準入力から String で読む用意 String line = br.readLine(); //読む double a = Double.parseDouble(line); //数字を数値として解析 double b = Math.pow(a, 2.0); //二乗を得る double c = Math.sqrt(a); //平方根を得る System.out.println(a + "の2乗は" + b + "です"); //表示して改行 System.out.println(a + "の平方根は" + c + "です"); //表示して改行 } catch (IOException ex) { //入力時の例外をキャッチ。でも多分なにもおきないだろう } } 数以外を入力すると Exception が発生する。必要なら catch すべし。
ちなみに Math は数学用のライブラリ。 このクラス単体で、static メソッドを用いてあれこれする。 pow は power。累乗。sqrt は square root 。平方根。 2乗は別に * でやってもいいんだがね。 数以外の入力での例外は parseDouble メソッドで発生する。 readLine() からこの付近までに try〜 catch と while ループを張って、 「数を入力せぇやぼけ」とできたらなおいい評価がもらえるだろうな。
246 :
デフォルトの名無しさん :04/04/30 11:30
わかりました!大変参考になりました。 ご協力していただいた方々どうもありがとうございましたv
それぞれの頂点に違う色を持つ4角形の内部を線形補間して塗りつぶす というのをを作らなきゃならんのですが全然わからんのです ネ申様、教えて下さいお願いします・・・ (つД`)
線形補間ならそのままだろ。
アフォだからわからんのです すみません OTL
線形補間なんて、中学数学レベルの知識で何とかなるだろ? 宿題なら宿題らしく、問題文を全部書き写すところから始めろよ。
問題としては↑に書いたのとコレなんですが 左上頂点を赤、右上を青 左下を緑、右下を黒として 左、右外郭線の中間色をだす、それぞれ左右の補間された中間色を水平に沿って さらに四角形内部の中間色を求める、これを底辺からトップまで続ける とあるんですが・・・(これで全文です) 中学レベルですか・・・・(´・ω・`)
private static final int marge(int c1, int c2, int x) { return (int)( (((double)c1 * (100.0 - (double)x)) + ((double)c2 * (double)x))/100.0 ); } private static final Color marge(Color c1, Color c2, int x) { return new Color( marge(c1.getRed(), c2.getRed(), x), marge(c1.getGreen(), c2.getGreen(), x), marge(c1.getBlue(), c2.getBlue(), x) ); } public static void main(String[] args) { Color c1 = new Color(0x00, 0x34, 0x21); Color c2 = new Color(0xff, 0x22, 0x51); Color c3 = new Color(0x21, 0x49, 0xff); Color c4 = new Color(0x33, 0xe4, 0x81); BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB); for (int y=0; y<100; y++) { for (int x=0; x<100; x++) { Color ctop = marge(c1, c2, x); Color cbottom = marge(c3, c4, x); Color c = marge(ctop, cbottom, y); img.setRGB(x, y, c.getRGB()); } } } これであってんのかな? 分かってないままやってみたが
あ、かぶった 適当に変えてくれ あと表示はやってないから
「JAVA実行時の引数の文字列が括弧つき四則演算である。その答えを表示させよ。」 という問題が出されたんですが、自分でやっても近いところまでは行くんですが、どうしてもうまくいきません。 どなたか教えてください。お願いします。
255 :
デフォルトの名無しさん :04/05/01 14:00
>>254 自分でどの程度やったのかかけよ。
どこがうまくいかないとか。
○投げで答えもらおうとするな。
257 :
デフォルトの名無しさん :04/05/01 21:09
あぁ、宿題すれか。質問すれと勘違いしてた。 とりあえず逆ポーランド実装でいいんじゃねーの。 アルゴリズム・実装方法はWeb探せば無数に出てくるし
それと同じ宿題Tomcatでやってたやつが前スレにいたよ。 これの前スレか初心者すれのちょっと前探してみ。 逆ポーランド記法とか使ってた気がした。
259 :
デフォルトの名無しさん :04/05/02 16:21
260 :
デフォルトの名無しさん :04/05/05 19:23
文字列"GPIB-022.70V"から"-022.70"を取り出し、その文字列をDoubleオブジェクトにし dublle型実数値に変換して数値を表示させるプログラムを完成させるよう空欄を埋めなさい。 public class 3b{ public static void main(String args[]){ String s="GPIB-022.70V",ds; ds=s.substirng([1]); Double dd=[2]; double d =[3]; System.out.println(d); } } これもお願いできないでしょうか。すみません・・・空欄は[1]とかです。
java初心者とマルチになってしまったのですが誘導されたので・・・お願いします 次の実行結果になるよう空欄を埋めなさい 実行結果 0dB -> 1.0 1db -> 1.2589254117941673 略 9dB -> 7.943282347242816 10dB -> 10.0 public class 3c{ public static void main(Stringargs[]){ for(int dB = 0;dB<=10;dB++){ System.out.println([1]); } } 空欄は[1]です。よろしくお願いします
s.indexOf("-"), s.indexOf("V") new Double(ds) dd.doubleValue() dB + "dB -> " + Math.pow(10.0, (double)dB/10.0) ちなみに、自分で試してないからね
>>262 >Math.pow(10.0, (double)dB/10.0)
よくわかったね。
ありがとうございます。マジ感謝です
>>252 遅れましたが、どうにかやってみます
ありがとうございます
綴りまちがってた merge だた しかもむしろ blend の方が良かった気もする
以下の機能を持つクラスCarを作りなさい. Carは,40リットルのガソリンタンクを持ち,ある決められた燃費(リットル/km)で走る. 燃費は,コンストラクタの引数で指定する. 初期化後の最初のガソリン量は,0. 特定の距離をドライブするメソッドdriveがあり,走った分だけガソリンが減る. ガソリンを給油するメソッドtankがある. 現在のガソリンの量を調べるメソッドcheckFuelがある. ガソリンの量が空になっているかどうかを調べるメソッドisEmptyがある. /** * Carクラスを試験するクラス */ public class CarTest { public static void main(String[] args){ // 最大データ数5のStrStackオブジェクトを生成 Car myCar = new Car(10); // リットルあたり10km走る. myCar.tank(40); // 40リットル給油する System.out.println("Empty ? " + myCar.isEmpty()); myCar.drive(400); // 400km走る. System.out.println("Fuel = " + myCar.checkFuel()); myCar.tank(20); // 20リットル給油する System.out.println("Fuel = " + myCar.checkFuel()); } }
すみませんお願いします。
public class Car { int fuel = 0; int mileage; public Car(int mileage) { this.mileage = mileage; } public void tank(int fuel) { this.fuel += fuel; } public int checkFuel() { return fuel; } public boolean isEmpty() { return fuel == 0; } public void drive(int distance) { fuel -= distance * mileage; if(fuel < 0) { fuel = 0; } } }
>269 燃料タンクに限界突破して給油できる driveでのmileageの実装がkm/lじゃなくてl/kmになってる。 例えば、fuel=0の状態でdrive(10000)が実行可能。 267への課題として残したのかな?
問題文がl/kmになってる km/lだとすると fuel -= distance / mileage; tankの方は最後に if(fuel > 40) { fuel = 40; } とでも付け足してください driveは燃料無いときどうしろとか書いてないから気合で動いてもらう
>ある決められた燃費(リットル/km)で走る >new Car(10); // リットルあたり10km走る 矛盾してるな。267の問題文の書き損じに一票。
普通は n km/L だね。燃費の話をするときは。
>>269-273 どうもありがとうございます。
問題のほうはそのままみたいなので教授が勘違いしてるのですかね・・・。
275 :
デフォルトの名無しさん :04/05/13 05:09
int型の変数にchar型の変数を入れる方法を教えていただけませんか 例えば char c = 1; として int i = c; とやったら49になってしまうのですが。。
31だろ? 解決法はatoi使え。
>>275 char c = '1';
こうしたんだろ。
>>277 0x31 = 3 * 16 + 1 = 49
atoi なんてメソッドもない。
アホもたいがいにしましょう。
i = Integer.parseInt("" + c);
もしくは
i = new Integer("" + c).intValue();
int i = c - '0'; cには0〜9以外の文字は入らない場合、これでもOK。
フォートラン キーボードから実数xを入力し、結果を表示するプログラムを 作成せよ。 y1=(2*x**2)(3*x−3/4)
よそのスレも、こういう、スレタイの読めないアホがたくさん来るの?
Cの宿題スレでも見た。ま、春だからな。
283 :
デフォルトの名無しさん :04/05/16 02:00
ソートの問題なんですけど、コンパイルはうまくいくのですが、表示されません。 問題は、(a)scoreという配列の初期値を78,・・・・・・・・・・・77。 とする。(・・・・・・・・は省略しました。) (b)右端の77を分割値としてdoPartitonに示した方法で二分割した結果を標準出力する。 と言うものです。 実行結果は 77の左側には77より小さい数、右に大きい数が表示されることになります。
284 :
デフォルトの名無しさん :04/05/16 02:16
public class FirstPartition { static int[] score = new int[11]; public static void main(String[] args) { initialize(); int partition = doPartition(0,11,score[11]);score[5] = 91; for(int i =0; i<score.length; i++){ System.out.println(score[i]); }} static void initialize() { score[0] = 78;score[1] = 65;score[2] = 59;score[3] = 58;score[4] = 55;score[5] = 91; score[6] = 100;score[7] = 57;score[8] = 59;score[9] = 54;score[10] = 85;score[11] = 77; } static int doPartition(int left,int right,int pivot){ int leftPtr =left - 1; int rightPtr =right; while(true){ while(score[++leftPtr]<pivot); while(rightPtr>0 && score[--rightPtr]>pivot);score[5] = 91; if (leftPtr>=rightPtr) break; else swap(leftPtr,rightPtr);} swap(leftPtr,right); return leftPtr; } static void swap(int x, int y) { int tmp; tmp = score[x]; score[x] = score[y]; score[y] = tmp; }} 上が自分の作ったやつです。 ドコが間違っているのかご指導ください。
>>283 >>284 よくわからんけど、次の点を直したらエラー出さずに動くようになったよ。
1、配列の要素は12個使うらしいので、12個の領域を持つ配列を生成するようにした。
static int[] score = new int[12];
2、なんか途中に入ってる意味のわからない
score[5] = 91;
を消した。
286 :
デフォルトの名無しさん :04/05/16 12:37
//Netclock1.java import java.io.* ; import java.net.* ; import java.util.* ; class Netclock1{ public static void main(String args[]){ ServerSocket servsock = null; Socket sock; OutputStream out; String outstr; Date d; try{ servsock = new ServerSocket(1032,300); while(true){ sock = servsock.accept(); d = new Date(); outstr = "\n" + "Hello, this is Netclock server." + "\n" + d.toString() + "\n" + "Thank you." + "\n"; out = sock.getOutputStream(); Thread t = new Netclockthread(out, outstr); t.start(); sock.close(); } } catch(IOException e){ System.exit(1); }}}
//Netclockthread.java import java.io.* ; import java.net.* ; import java.util.* ; public class Netclockthread extends Thread{ OutputStream out; String outstr; int n; public Netclockthread(OutputStream out, String outstr){ this.out = out; this.outstr = outstr; } public void run(){ try{ for(n = 0; n < outstr.length();++n) out.write((int)outstr.charAt(n)); out.write('\n'); } catch(IOException e){ System.exit(1); } } } 接続があった時間を返すサーバを作りたいんですが 何も返してくれません。 どこがまずいんでしょうか? どなたかお願いします。
288 :
デフォルトの名無しさん :04/05/16 14:24
10進数を2進数に、2進数を10進数にするプログラムを作る宿題が出されましたが、 ぜんっぜん分かりません。 誰か優しい人、おねがいしなす。 なを、Subで始まりEnd Subで終わってください。
それJavaか?
290 :
デフォルトの名無しさん :04/05/16 14:33
仕事はどうでうsか?
90点以上の生徒と69〜69点の生徒を対象に、該当の得点の生徒は”明日5:00職員室に来てください”と表示するプログラムをANDとORを使って作りたい。ただし、点数はプログラム中にint tokuten=80などと記述する方法でいい。 心からお願いします。
if (tokuten >= 90 || 69 <= tokuten && tokuten <= 69) System.out.println(”明日5:00職員室に来てください”);
>>292 ありがとうございます。
ついでに、実効のやり方が分かりません。
教えてください。
>>287 出力するようにスレッドを立てておいて、
すぐさまソケットを閉じちまってるのが原因ではなかろうか。
あと Buffered なものを使うとか文字列出すなら Writer 使うとか
flush するとかいろいろ作法はあるけど・・・
>>293 >>291 には提出方法も形態も書いてないしな。
それはもう同級生に聞いた方が早そうだ。
javac Hoge.java java Hoge
提出方法はプリントなんですけど
じゃ実行する必要ないだろ
>>297 そうなんですか?
プリント提出の場合は何かする必要あるのですか?
プリント出せばいいんじゃないの? それ以上は教授に聞け。
>>299 わかりました。
どうもありがとうございました。
その通りでした。 助かりました、有難うございます。
あぁ、アンカー忘れてました。 >301は>294あてです。
303 :
デフォルトの名無しさん :04/05/16 21:21
MATLAB関係の質問ってどこで聞けばよさそうでしょうか
304 :
デフォルトの名無しさん :04/05/16 21:40
だれか単語頻度のjavaプログラムわかりませんか? 自分では全くできず、助けてー
>>303 初めて聞いたが、これはなんだ、数学・物理?
MATLAB 2ch でググッて、既に話として出てるスレでも探せば?
特定の製品環境で Java を使うのどうのは、その製品のスレでもなければ厳しいよ。
pure java なものなら普通の質問スレでもいいかもしれないけど。
それともまさか Java とは関係なしに聞いてるんじゃないだろうな
>>304 懐かしい。基本だな。
課題がでて、それから Java を初めてやって、その日のうちに解決しちまった
あの課題がなかったら今 Java で仕事してないかもしれないな
import java.util.*; public class Q304 { public static void main(String[] args) { String text = "This is a pen. This is mine."; SortedMap map = countWords(text); printResult(map); } //あとで順に並べたいので SortedMap を返すことにしておく public static SortedMap countWords(String text) { SortedMap counts = new TreeMap(); StringTokenizer st = new StringTokenizer(text, " \n.,"); while (st.hasMoreTokens()) { String token = st.nextToken().toLowerCase(); //大文字を小文字に Integer count = (Integer)counts.get(token); //幾つカウントしたか取り出す if (count == null) { count = new Integer(0); //初出なら、0 を取り出した感じにする } counts.put(token, new Integer(count.intValue() + 1)); //1足して格納 } return counts; }
public static void printResult(Map map) { for (Iterator itword=map.keySet().iterator(); itword.hasNext(); ) { String word = (String)itword.next(); Integer count = (Integer)map.get(word); System.out.println(word + "\t" + count); } } } あとはどうやって文を入力するかだが。 ファイルからか、パイプで標準入力するのか、 それとも上記のように、ソース中にリテラル(" " で囲む)用意すればいいのか。
308 :
デフォルトの名無しさん :04/05/16 22:16
ありがとうございます。txtファイルからです
public static void main(String[] args) { try { //入出力処理があるので例外処理を追加 String text = readText(new FileInputStream("data.txt")); //実行時ディレクトリとパスが別ならフルパスでも入れておけばいい SortedMap map = countWords(text); printResult(map); } catch (IOException ex) { ex.printStackTrace(); } } public static String readText(InputStream inorg) throws IOException { String text = ""; BufferedReader in = new BufferedReader(new InputStreamReader(inorg)); while (true) { String line = in.readLine(); if (line == null) { break; } text += line; } return text; } 他にも ( ) はどうするんだ、とかシバリがあるかも知れんけど、それは自分で工夫して
310 :
デフォルトの名無しさん :04/05/16 22:42
ありがとうございます。非常に参考になりました。
311 :
デフォルトの名無しさん :04/05/16 23:43
すいません310の単語頻度をたずねたものですが、309がどのように繋げていいかわかりません。 どうか、全部つなげてもらえないでしょうか? めちゃめちゃ初心者なんです
いつまで初心者でいるつもりだい?
313 :
デフォルトの名無しさん :04/05/17 00:45
先生、おじいちゃんなんですが。。
main メソッドをまるまる取り替えて、 readText メソッドを追加 書き忘れたけど、 import java.io.*; も追加
完璧にできました!ありがとうございます。
316 :
デフォルトの名無しさん :04/05/17 23:38
public static void printResult(Map map) { for (Iterator itword=map.keySet().iterator(); itword.hasNext(); ) { String word = (String)itword.next(); Integer count = (Integer)map.get(word); System.out.println(word + "\t" + count); } } } これはどういう意味なんでしょうか、どなたか解説おねがいします。
318 :
デフォルトの名無しさん :04/05/18 01:05
>>317 プログラムを一文ずつ説明したらどうなるかなあと思って
はぁ?
320 :
デフォルトの名無しさん :04/05/18 01:15
いやとりあえずこの全体はどういう意味をしているか 全体的な意味でもいいです
全体的な意味は、結果を表示するメソッドです。
java.util.Map型の引数をひとつとり、その要素を全て表示する。 Iterator、Set、Mapの詳細についてはAPIリファレンスのjava.utilを参照。 というか、mapとset、イテレータと言う概念が分かってないと説明のしようが無い。
323 :
デフォルトの名無しさん :04/05/18 12:55
ありがとうございます。超初心者ですいません
JavaScriptでformの項目の入力チェックをしたいんですが、 スペースだけが3つとか、要するにスペースのみしか入力されていない時、 それをエラーとするにはどういったscriptにしたらいいでしょうか?
スペースだけの場合と、何も入力されなかった場合をいっしょくたに扱っていいなら、 java.lang.String#trim() を使うといいかも。 スペースだけの場合と、何も入力されなかった場合を分けて扱うなら、 java.lang.String#matches() かな。
Java |―←――― 10億光年 ――――→| JavaScript
あ、「JavaScript」って書いてある!。 釣られたよ。(涙
暇なのでマターリと>316を解説しよう。 Map(java.util.Map)というのは、ある値と別の値を結びつける働きをするコンテナ。 無茶苦茶大雑把な言い方をすれば、添字に数字だけでなく文字列とかも使える配列のようなもの。 添字に当たるデータを「キー」、それに対応するデータを「値」と呼ぶ。 Set(java.util.Set)というのはデータコンテナ。配列の親戚、程度の認識で今回は問題ない。 Iterator(反復子、java.util.Iterator)というのは配列で言えば添字みたいなもの。 printResultはMap型の変数(以下、map)を引数に取る。 for文の初期化ではIterator型のitwordを宣言し、それがmapのキーを指すようにしている。 詳しく言えばmap.keySet()でmapのキー全部が入ったSetが返ってくる。 それに対しiterator() (つまり、java.util.Set.iterator() )を実行し最初の要素の場所をゲト、それをitwordに代入。 Stringの行。itwordをnext()で次の要素を取り出すと同時にひとつ先に進める。 で、取り出した値を(String)で明示的に型変換しwordに代入。 Integerの行。mapの中からwordをキーに持つ値を引っ張り出し、やっぱり型変換してcountに代入。 mapはStringをキーに、Integerを値に持ってるMapだろうと推測される。 (Stringに変換可能な型とIntegerに変換可能な型ならば問題なく動くけど)
>(Stringに変換可能な型とIntegerに変換可能な型ならば問題なく動くけど) String, Integer はどちらも final なので、そういう型はないよ
byte型の変数に入る数値の最大値をループで求めるプログラムをつくれ。 たとえば、どこまで大きくできるかを表示する。 て奴なんですが、どうやるんでしょうか?
>>330 全角スペースを半角にすればコンパイルできるはず
class ByteMaxNumberPrintTest {
public static void main(String[] args) {
byte num = 0;
byte num2 = 0;
while(true) {
if(num >= num2) num2=num;
else break;
num++;
}
System.out.println("byte型の最大値は" + num2 + "です。");
}
}
332 :
デフォルトの名無しさん :04/05/27 09:19
マウスをクリックして描画の起点とし、そのままマウスをドラッグした時に楕円を逐次描き マウスを放した時に最終的に終点を決定して楕円を描くようにするプログラム中の空欄を埋めながら完成させなさい。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Kadai extends [ 1 ]{ int x1,y1; public void init(){ [ 2 ] [ 3 ] } public void mouseDragged(MouseEvent me){ int x0,y0,x2,y2; Graphics g=this.getGraphics(); g.clearRect(0,0,300,300); x2=[ 4 ]; y2=[ 5 ]; if(x1>=x2)[ 6 ]else[ 7 ] if(y1>=y2)[ 8 ]else[ 9 ] g.drawOval([ 10 ],[ 11 ],[ 12 ],[ 13 ]); }
333 :
デフォルトの名無しさん :04/05/27 09:21
public void mouseMoved(MouseEvent me){} public void mousePressed(MouseEvent me){ [ 14 ] [ 15 ] } public void mouseReleased(MouseEvent me){} public void mouseEntered(MouseEvent me){} public void mouseExited(MouseEvent me){} public void mouseClicked(MouseEvent me){} } 初心者スレに誤爆してしまいました。よろしくお願いします。
あっちでもう答えた
335 :
デフォルトの名無しさん :04/05/27 14:07
CSVファイル(※1)が3個あり、今日の日付分の行のみを抽出し、 新規CSVファイルに書き込みする。 ※1 このような形式のテキストが3個 [2004-05-21],rejtyfgyyjy [2004-05-21],gerjtydytdh [2004-05-21],gaerjytfgr [2004-05-22],agergaerrf [2004-05-22],faeraeferr [2004-05-27],faerfaeret [2004-05-27],fearajttyh ↓↓ 新しく [2004-05-27],faerfaeret [2004-05-27],fearajttyh このようなプログラムを何卒宜しくお願い致します。
import java.io.*; import java.text.*; import java.util.*; public class Q315 { public static void main(String[] args) { try { String[] files = { "hoge.csv", "hero.csv", "moe.csv" }; String outfile = "out.csv"; Calendar date = Calendar.getInstance(); date.set(2004, Calendar.MAY, 27); DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String key = "[" + df.format(date.getTime()) + "]"; Collection listmain = new ArrayList(); for (int i=0; i<files.length; i++) { InputStream in = new FileInputStream(files[i]); Collection list = collect(in, key); listmain.addAll(list); } OutputStream out = new FileOutputStream(outfile); write(out, listmain); } catch (IOException ex) { ex.printStackTrace(); } }
public static Collection collect(InputStream in, String key) throws IOException { Collection list = new ArrayList(); BufferedReader br = new BufferedReader(new InputStreamReader(in)); while (true) { String line = br.readLine(); if (line == null) break; if (line.startsWith(key)) { list.add(line); } } br.close(); return list; } public static void write(OutputStream out, Collection list) throws IOException { PrintWriter pw = new PrintWriter(new OutputStreamWriter(out)); for (Iterator itline=list.iterator(); itline.hasNext(); ) { String line = (String)itline.next(); pw.println(line); } pw.flush(); pw.close(); } }
315? 間違った。 あと、「今日」が「実行日」を意味するんなら、これいらん。 > date.set(2004, Calendar.MAY, 27); ファイル名を args で渡すんならそれなりに自分で悩んでね。簡単だから。
>>338 さん
ありがとうございます!!
まだ、プログラム自体覚え始めたばかりなので、
後は自分で調べて組みます!
すごい助かりましたーー感謝
x~2-y~2を計算するプログラム作ってください あと、xを入力する際、「x=」、yを入力する際、「y=」という誘導がつくようにして欲しいです ↓をちょこっと(あるいは大きく)変える感じでやって頂きたいです class Compute { public static void main(String[] args){ int x,y; x = IO.in.readInt();y = IO.in.readInt(); System.out.println( (x-y)*(x+y) ); System.out.println( x*x-y*y ); } }
//x = IO.in.readInt(); これらがなんだか分からない //y = IO.in.readInt(); try { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("X ="); x = new Integer(in.readLine()).intValue(); System.out.print("Y ="); y = new Integer(in.readLine()).intValue(); } catch (IOException ex) { }
パックマンみたいに、敵と自分がいて画面を動き回ってるような ネットワーク対戦ゲームをを作ることになったのですが、 この場合クライアント側をアプレットで、サーバー側をサーブレットで組もうと思ってますが、 このときの実行速度としてどの程度発揮できるものなんでしょうか? やっぱぜんぜん話にならないぐらい遅いんですかね? サーブレットの速さというのをお聞きしたいです。
話にならないぐらい、というのがどの程度か分からんが。 アクションゲームに使うにはどうかな。あんまり使う意義も感じられないな。 クライアントは何でもいいけど、 サーバはサーブレットじゃなくて EJB か何かの方がいいんじゃないの? 俺はローカル環境でお遊び程度でしか使ったことがないのであれだが、 サーバのマシンスペック、J2EE環境、ネットワーク環境、 アイテムだのをどのぐらい凝るのか、同時対戦ユーザ数はいくらか、 それだけざっと書いたらエロイ人が 「やめとけ」「意味ない」「勉強にはいいんじゃない」とかくらいは答えてくれるだろう。
遅さというのは、ラグが怖いですね。 画面上で敵が近くにいたから避けようとしたら、サーバー上の座標はすでに接触してて 避けようとした瞬間にはやられてるというのはなくしたいんです。 一応サーバーは Pen4 2.53GHz RAM 1G 回線は光ので構成して、 対戦人数は多くても5人ぐらいまでですかね。 ネットワークプログラミングの勉強なんでそこまで完全なものができなくてもいいのですが、 さすがにあまりに遅くてゲームにならないようなものだと、できたときに悲しいもので…
助けてください。明日までに提出しなければ いけないにも関わらず、パソコンがおかしくて JAVAができません。 public class Mondai1{ public static void main(String S[]){ int n,m; for(n=1;n<-4;n++){ for(m=2;m<=4;m+=2){ if(n%2==1)break; System.out.println("n="+n+"m="+m); } } } } このプログラムでbreakの代わりにcontinue を用いると実行結果はどのように変わりますか?
public class Mondai2{ public static void main(String s[]){ Test t=new Test(); t.show(); t.show(4); } } このプログラムで実行結果がi=0 i=4 となるようなTestクラスを求めよ。
public class Mondai3{ public static void main(String s[]){ ConOver co1=new ConOver(),co2=new ConOver(7); co1.print(); co2.print(); } } このプログラムで実行結果が i=6 i=7 となるようなConOverクラスを書け。
GIF画像を表示し、マウスをクリックすればクリックした場所に GIF画像が移動するJAVAアプレットを作成せよ。 半径が15ピクセルの黒円がマウスのドラッグすれば 円がマウスポインタについてくるようなJAVAアプレットを作成せよ マウスのクリックで始点を決め、ドラッグすることによって楕円を 描くJAVAアプレットを作成せよ。ただし終点はマウスを放すことに より決定する。
はうあうああ
350 :
デフォルトの名無しさん :04/05/30 21:02
携帯電話の一画面の大きさが128ドット*72ドットでひとつのドットあたり 65536色が扱えるとした場合,この一画面を扱うために必要なメモリ量を バイト(8bit)で答えよ。 お願いします。
>>350 Java の問題じゃないな。
128 * 72 * log2(65536) / 8 = 18432
352 :
デフォルトの名無しさん :04/05/30 21:14
>>351 あ、すいません。ここJava専門だったんですね
次からは気をつけます。
回答のほうありがとうございました。
宿題は早めにやるべきだな。
>>341 ありがとうございます・・・
しかし・・・
大学で指導されていない言葉使ったら、授業の性質上ちとまずいんです。。。。
誰か、
>>340 できませんでしょうかぁ。。。?
せめて何が指導されてない言葉なのか教えてよ
>>356 try catchのでの例外処理は習ってないとしても、
ラッパークラスすら習っていないのか…
しかも標準入力から読ませるのにStringBufferも習ってないって…
今まで習ったの簡単に列挙してみなよ
StringBufferな〜んて書いてしまったが、 BufferedReaderのことね
習ってないから使っちゃダメなんて実は誰も言っていなかったりするのもよくある話で。 単に、自分が知らないから怖いだけだったりな。
小学校なんかの場合、アホな教師ができる生徒を押さえつけようとすることはあるが、 大学の場合、そんなこと無いだろ。 習ってないから使っちゃダメなんてアホなことはありえん。
>>342 サーブレットなんかよりは、自分で独自サーバ組んで各セッション管理した方がいいぞ。
つーことはつまり IO ちうのをライブラリとしてあてがわれてるのか。
まぁ講師としてはその方が教えやすかろうが無能の証でもあるわな・・・Java やってる意味なさげ
そしたら
System.out.print("X =");
このへんくっつけるだけでいいんじゃないか?
とにかく
>>341 のソースでどうなるか試して、考えてみろよ
もう遅いかな
>>345 変らない。つーか写し間違ってない?
>>346 class Test {
public void show() {
show(0);
}
public void show(int i) {
System.out.print("i=" + i + " ");
}
}
>>347 class ConOver {
private int i;
public ConOver() {
this(6);
}
public ConOver(int v) {
this.i = v;
}
public void print() {
System.out.println("i=" + i);
}
}
>>348 めんどくさっ。惜しかったなぁ、夕べ見てたらやってやったのに
>習ってないから使っちゃダメなんてアホなことはありえん レポート課題で自作プログラムの説明書を作れといわれて、 javadoc生成ドキュメントを丸ごと提出したら「自分の手で一から書け」と言われorz
それは反論のつもりなのか?
それは「使っちゃダメ」と云われたんじゃなくて 「使ったからどうだってんだ」って意味だろう
>>364 プログラムの説明書とJavaDocは微妙にちがうような。
369 :
デフォルトの名無しさん :04/06/01 16:54
お願いします。教えてください。 例えば、顧客登録システムのようにメイン画面から追加・変更・削除などを選び、 それぞれの処理を行い、結果を表示するプログラムを教えてください。
>>369 さすがにそんなおおざっぱな要求じゃちょっと・・・。
Javaスレなんだから、せめて要件定義と基本設計程度はすませておいてくれ。
前にも入社時研修の宿題かなんかで同じ質問があったな ぽんぽん答えられるわけねーっつーの 適当に仕様決めて組んでやっても 300行超えるだろう そんなの、めんどくさくて誰もやらない
373 :
デフォルトの名無しさん :04/06/01 17:17
2から100までの素数をすべて印刷するプログラムを作成しなさい。 考え方 添え字100までの配列Pを作成する。 2は素数なので、P[2]は素数である印を付け、P[2×n](n>2)は素数でないと印を付ける。2を表示する。 次のP[3]を調べると。素数ではないという印がないので、素数であると印を付け、P[3×n](n>2)は素数でないと印を付ける。3を表示する。 次のP[4]を調べると、すでに素数でないという印がついているので、何もしない。 これを10まで繰り返す。 10から先は、P[n]に素数でないという印のないnを順番に表示する。 100行わたって、各行にランダムな整数が一つずつ格納されたファイル(data.txt)から100個の数値を読み込み、小さい方から順に並べ替え、画面に表示せよ。 考え方 配列にデータを読み込む。 配列の先頭から、隣同士のデータを比べ、並べ替え条件と大小関係が異なれば、内容を交換する。 この比較と交換を順に配列の末尾に向かって、繰り返していく。 最後まで、これを繰り返していく中で、内容の交換が一度も行われなければ、並べ替えが終了した状態である。 並べ替えが一度でも行われていれば、配列の先頭に戻って、比較と交換を繰り返す。 並べ替えが終わったら、配列の内容を順番に画面に表示する。
public class Q373_1 { private static final int NONE = 0, SOSUU = 1, HISOSUU = 2; public static void main(String[] args) { int[] P = new int[101]; java.util.Arrays.fill(P, NONE); for (int i=2; i<=10; i++) { if (P[i] == NONE) { P[i] = SOSUU; for (int j=i+i; j<=100; j+=i) { P[j] = HISOSUU; } System.out.println(i); } } for (int i=10; i<=100; i++) { if (P[i] == NONE) { System.out.println(i); } } } }
import java.io.*; public class Q373_2 { private static final String FILENAME = "datas.txt"; public static void main(String[] args) { int[] A = new int[100]; try { load(A); boolean exchanged; do { exchanged = false; for (int i=0; i<99; i++) { if (A[i] > A[i+1]) { int tmp = A[i]; A[i] = A[i+1]; A[i+1] = tmp; exchanged = true; } } } while (exchanged);
} catch (IOException ex) { ex.printStackTrace(); } for (int i=0; i<100; i++) { System.out.print(A[i] + " "); } } private static void load(int[] array) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(FILENAME))); int i = 0; while (true) { String line = br.readLine(); if (line == null) break; array[i] = new Integer(line).intValue(); i++; } br.close(); } }
>>373 漏れと全く同じ課題だ…。提出期限は明日だよな?
つうか377以外にも見てる奴いるなこりゃ… まあ別にかぶってもいいか
>>379 カブったら0点にされかねないし、漏れは質問者じゃないから自力でやる。
まあ解答は参考にさせてもらうけどな。
ここはお前らの教室じゃねぇんだ。 教室の黒板にでも書いてろ な?
Long型double型の変数に入る数値の最大値をループで求めるプログラムをつくれ。 たとえば、どこまで大きくできるかを表示する ただし、1ずつ足していくのではなく、もっと効率的なやり方で求めよ。 って奴なんですが、どうやればいいのでしょうか?
100リミットだと仮定して 1→2→4→8→16→32→64→128→96→・・・ 2倍ずつ増やしていく。 超えてしまったら、一回戻って半分(64の代わりに32)足す これを繰り返していけばいいんじゃないか?
386 :
デフォルトの名無しさん :04/06/03 16:34
A、B二つのCSVファイルを照らし合わせ、「bbb」の部分がマッチングする行の「ccc」 の部分をCSV出力せよ。「bbb」は17文字以内の英数字(大文字小文字混じり)の乱 数とする。 A,Bのフォーマット以下の通り aaa,bbb,ccc A.csv d,bbb B.csv お願いします、プログラム初心者過ぎて、全然分かりません。。
387 :
デフォルトの名無しさん :04/06/03 16:37
オブジェクトを引数にするメソッドを作りました。 引数のオブジェクトをローカルのオブジェクトに渡して、それをnullにした場合は呼び出し元のオブジェクトも消えるんでしょうか。 public object list(object obj){ object obj2=obj; object obj3=obj.next; obj2=null; obj3=null; } ↑こういう風にやってobjとobj.nextがちゃんとnullを指すのでしょうか。もし出来ないならどうやれば出来るでしょうか。
Cとかなら&をつければいいんでしょうが、アドレス演算子って無いみたいなんで・・
>引数のオブジェクトをローカルのオブジェクトに渡して、 この時点で間違ってる。 引数はオブジェクトそのものではなくその参照。ローカルに渡せるのも参照。 null が入る先は変数であってオブジェクトではない。 君の言ってるようなことがもし出来たら、1つの変数の参照先をかえるだけで、 あちこちの変数の値が変わりまくってしまうだろう。困るだろうそんなの。 君は C の例を出してきてるが、C のポインタがどんなものかいまいち分かってないから java の方も分からないんだ。
391 :
デフォルトの名無しさん :04/06/03 17:09
vectorクラスを使ってキーボード入力により図書情報を登録し、一覧表示せよ。 例えば、分類番号=100、分類名=文学、図書名=△△△△などを複数入力し、 すべて表示させる。
>>386 要件定義があいまい。
A.csv
aaa,bbb,ccc
aaa,bbb,ddd
aaa,kkk,eee
aaa,kkk,ddd
B.csv
d,bbb
d,kkk
このとき、どう表示してほしいの?
4×2の総当りをするのか、それとも A, B は同じ行数で、1行ずつまっちさせるのか。
それとも B は 1行のみなのか。
A の 3カラム目は、重複を許すのかそれとも重複分は省略するのか。
>>392 書いてあるって言い張るんならその通りやってろ。クソスレageるは反省しないわ最低だな。
>>391 要件定義があいまい。
順順に登録したはいいが、いつどの時点で表示するのか。
空白入力時とか、勝手に決めていいのか?
それとも 1件入力後ごとにメニュー表示するのか?
396 :
デフォルトの名無しさん :04/06/03 17:22
>>395 1件ごとに表示してください。
また、空白時、既に登録済みの分類番号がある場合はエラーメッセージを出力
してください。
すみません、説明不足で・・・。
出来ないのなら、もし入れ子でリスト構造のオブジェクトを順々に処理していく時はどうすればいいんですか。
入れ子? 再帰じゃなくて? hage() { Node root; //(ry hoge(root); root = null; } void hoge(Node node) { if (node.next != null) { hoge(node.next); node.next = null; } //node 君の断末魔処理 } これでええやんけ。てめぇが何やりたいか正確にわからないからな。これで勝手に想像しろ。
>>397 public class A {
private String data;
private A next;
public A() {
}
public void setNext( A a ) {
next = a;
}
public A getNext() {
return next;
}
public void clear() {
data = null;
}
}
こんなクラスの場合でいいのか?
この場合は、こんな感じで全部消せる。
while ( a != null ) {
A b = a.getNext();
a.setNext( null );
a.clear();
a = b;
}
素数を求めるプログラムを作っています。 for文を使ってなんとか完成させたのですが、 できるだけ大きい素数を求めたいので(賞金とれるほど大きい素数を求めたいわけではないですが) できるだけ処理を減らし、効率の良い処理をするプログラムを作りたいです。 なにか良い方針などがあれば教えて下さい
なるほど。礼は言わないぜbaby
402 :
デフォルトの名無しさん :04/06/03 17:42
import java.io.*; import java.util.*; public class Q391 { public static void main(String[] args) throws IOException { //ほんとは行儀悪い BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); Vector nums = new Vector(), books = new Vector(); while (true) { //無限ループ //入力 System.out.println("ひとつずつ入力してください(分類番号,分類名,図書名)"); String num = in.readLine(); try { Integer numInt = new Integer(num); //チェック if (nums.contains(numInt)) { System.out.println("既に使われている分類番号です"); } else {
//残りを入力 String typename; while (true) { typename = in.readLine(); if (typename.equals("")) { System.out.println("空白はダメです"); continue; } else { break; } } String title; while (true) { title = in.readLine(); if (title.equals("")) { System.out.println("空白はダメです"); continue; } else { break; } } //生成 Book book = new Book(numInt.intValue(), typename, title); //追加 nums.add(numInt); books.add(book); //表示 printBooks(books); }
} catch (NumberFormatException ex) { System.out.println("分類番号は数字でどうぞ"); } } } private static void printBooks(Vector books) { System.out.println(); System.out.println("分類番号\t分類名\t図書名"); for (Enumeration e=books.elements(); e.hasMoreElements(); ) { //index 使ったり Iterator 使ったりもOK Book book = (Book)e.nextElement(); System.out.println(book.getNum() + "\t" + book.getTypeName() + "\t" + book.getTitle()); } System.out.println(); } }
class Book { private int num; private String typename, title; public Book(int num, String typename, String title) { this.num = num; this.typename = typename; this.title = title; } public int getNum() { return num; } public String getTypeName() { return typename; } public String getTitle() { return title; } } ちょっと丁寧目にしたからかえって分かりにくいかも。ゆるせ。
407 :
デフォルトの名無しさん :04/06/03 18:00
>>406 ありがとうございます。早速試してみます!!
あと、たびたび申し訳ないのですが、その登録した図書情報から
分類番号を選択し、削除・変更することも可能でしょうか??
変更の場合はもう一度分類番号、分類名、図書名を入力することになるのですが・・・。
お願いします。
それだったら Map で実装した方がよかったかな・・・ 変更はこんな感じ。 int index = nums.indexOf(numInt); Book book = (Book)books.get(index); book.setTitle(title); //setter を自分で作る。コンストラクタでやってる処理と同じ 削除はこう。 int index = nums.indexOf(numInt); nums.remove(index); books.remove(index); これをこのまま組み込むとなるとソースがどんどん汚くなるな。 できれば自分で頑張って欲しいがどうだ。
409 :
デフォルトの名無しさん :04/06/03 18:21
あまりにも初心者なので、自分では無理かと・・・。 かなりがんばったのですが・・。 メインで機能(登録・削除・変更)を選択し、それぞれを別のクラスで処理したら可能ですか?? 表示はメインで一度に表示するとか。
Library クラスちうのを作って、中に Vector を private で用意して、 ・find(int num) ・add(int num, String typename, String title) ・edit(int num, String typename, String title) ・remove(int num) なる各メソッドを作れば、整理できるであろう。 頑張ってやってみたら直してあげよう。
411 :
デフォルトの名無しさん :04/06/03 18:40
ありがとうございます。 とりあえず、なんとかがんばってやってみます。 ただ、インスタンスやメソッドの意味もろくに理解していないド素人なため、 期待はできません。
一方向にシフトを繰り返すリストを作って(シフトされた先頭ノードは消える)、 その先頭をtopにして、毎回シフトしてtopを消す前にtopを辿って次のノードをtopに更新してるんですけど、どうもtopが更新されてないっぽいです。 どなたか原因を教えて頂けないでしょうか?topを使わなくてもリストの先頭ノードが毎回参照できる方法があればいいんですが・・
413 :
デフォルトの名無しさん :04/06/03 20:48
やっぱり分かりません。 直すもなにもさっぱりです・・。
414 :
デフォルトの名無しさん :04/06/03 23:11
jPanelに描画させるようにしてるんですが、グラフを引きたいので毎回クリアはして欲しくないのです。 paintComponentでsuper.paintComponent()を呼び出さずにfillRectで最初だけクリアして何とか間に合わせてますが、ボタンを押したりするとゴミが出ます。 何か上手い方法はありますか?
書きたいものをImageに対して描画しておいて JPanelのPaintComponentではdrawImageだけするようにする、とか。
416 :
デフォルトの名無しさん :04/06/03 23:24
なるほど、それはスマートですね。 ただ、paintComponent内でのクリアの有無の制御を行うメソッドなどは無いのでしょうか?
417 :
デフォルトの名無しさん :04/06/04 00:11
登録・変更・削除ですが・・・。 せめてヒントだけでも教えてください。 しつこくてすみまそ
>>417 もしかして提出日明日とか?
それなら俺のできる範囲で作ってみるけど・・・
419 :
デフォルトの名無しさん :04/06/04 04:24
うん、じつはそお。 月曜日でもいいと言われたが、そのときは評価点が下がるらしい。
public void setTypeName(String typename) { this.typename = typename; } public void setTitle(String title) { this.title = title; } Book にこのメソッドを足す。
class Library { //index は図書の並んでる順番、num は図書番号を表す //nums は図書の並んでる順に、図書番号を蓄えてある //そうすることで、図書番号から図書を即座に取り出せる private Vector books, nums; public Library() { books = new Vector(); nums = new Vector(); } public Book find(int num) { int index = nums.indexOf(new Integer(num)); if (index == -1) { return null; //無いから null を返す } else { return (Book)books.get(index); } } public void add(int num, String typename, String title) { Book book = new Book(num, typename, title); nums.add(new Integer(num)); books.add(book); }
public void edit(int num, String typename, String title) { Book book = find(num); book.setTypeName(typename); book.setTitle(title); } public void remove(int num) { int index = nums.indexOf(new Integer(num)); nums.remove(index); books.remove(index); } public void printBooks() { //Q391 の static void だったものと中身同じ } } あとはメニューと入力部分。ちょっとまっとれ
public static void main(String[] args) throws IOException { //ほんとは行儀悪い Library lib = new Library(); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); while (true) { System.out.println("0:追加 1:変更 2:削除 9:終了"); String numstr = in.readLine(); try { int num = new Integer(numstr).intValue(); if (num == 9) { break; } else if (num == 0) { addProcess(lib, in); lib.printBooks(); } else if (num == 1) { editProcess(lib, in); lib.printBooks(); } else if (num == 2) { removeProcess(lib, in); lib.printBooks(); } else { System.out.println("無効な番号です"); } } catch (NumberFormatException ex) { System.out.println("無効な番号です"); } } }
private static void addProcess(Library lib, BufferedReader in) throws IOException { System.out.println("ひとつずつ入力してください(分類番号,分類名,図書名)"); int num; String typename, title; //番号 while (true) { try { String numstr = in.readLine(); num = new Integer(numstr).intValue(); if (lib.find(num) != null) { System.out.println("既に使われている分類番号です"); continue; } break; } catch (NumberFormatException ex) { System.out.println("分類番号は数字でどうぞ"); continue; } }
//残りを入力 while (true) { typename = in.readLine(); if (typename.equals("")) { System.out.println("空白はダメです"); continue; } else { break; } } while (true) { title = in.readLine(); if (title.equals("")) { System.out.println("空白はダメです"); continue; } else { break; } } //生成 lib.add(num, typename, title); }
private static void editProcess(Library lib, BufferedReader in) throws IOException { //追加と削除のハイブリッド。 //番号は「存在しない」チェックをし、その他項目は同じように入力させ、 //最後に lib.edit する。それくらいは頑張ってみんか? } private static void removeProcess(Library lib, BufferedReader in) throws IOException { System.out.println("分類番号を入力してください"); int num; while (true) { String numstr = in.readLine(); if (numstr.equals("")) { System.out.println("キャンセルします"); return; } try { num = new Integer(numstr).intValue(); if (lib.find(num) == null) { System.out.println("その番号は存在しません"); continue; } else { break; } } catch (NumberFormatException ex) { System.out.println("分類番号は数字でどうぞ"); } } lib.remove(num); }
クラスは 3 つ。Q391, Book, Library。 Q391 は起動クラスなので public にしておこう。ファイル名は Q391.java main はメニュー表示。 〜Process は Q391 内のメソッドで、main から分岐して呼び出される。 (main が static なので、そこから直で呼ばれるメソッドも static) Libary は図書を収めたり削除したりの仲介。BufferedReader は文字入力用のクラス(Java 標準 API の1つ。自作ではない)。 図書群の Vector は main のローカル変数から、Library のインスタンスフィールドに移動したから、 文書リスト表示も Library のインスタンスメソッドに変更した。 だから main にあった printBooks(Vector) はもういらない。
429 :
デフォルトの名無しさん :04/06/04 16:43
>>428 どうもご丁寧にありがとうございます。
あれから自力でがんばってみたのですが、なかなかエラーがつぶれなかったので
助かりました!!
さっそく動かしてみますね。
430 :
デフォルトの名無しさん :04/06/04 18:41
Library の edit(int,java.lang.String,java.lang.String) は (int) に適用できません。 とでて、エラーになってしまいます。
>430 int, String, Stringが引数として必要なメソッドであるeditを、intだけで呼び出してる、って意味。 何行目でそんな呼び方をしたかは、エラーメッセージに書いてある。 その程度のバグは自力で潰せるようにならんと永遠に他人任せのままだぞ。
432 :
あいタン ◆3QC.t4i5w6 :04/06/04 19:35
ちょっと、おじゃばしますねーヽ(´▽`)ノ ・・・ 何もいわないで・・・(⊃д`)
433 :
デフォルトの名無しさん :04/06/04 19:41
+""もしらんのか 死ねよ
434 :
デフォルトの名無しさん :04/06/04 21:43
ふたつの入力した3桁の2進数の足し算と引き算を charAt()を使って実行するプログラムを組んでください。 そしてその両方をキーボード入力から選択できるように プログラムを組んでください。 おねがいします。
435 :
デフォルトの名無しさん :04/06/04 21:56
だってわかんないんだもん。・゜(⊃д`)゜・。 わからないので適当にやってみたのですが・・・。 間違いをなおしてやってください。変更の部分 System.out.println("分類番号を入力してください"); int num; String typename,title; while (true) { String numstr = in.readLine(); if (numstr.equals("")) { System.out.println("キャンセルします"); return; }
436 :
デフォルトの名無しさん :04/06/04 21:57
try { String numstr = in.readLine(); num = new Integer(numstr).intValue(); if (lib.find(num) != null) { System.out.println("既に使われている分類番号です"); continue; } break; } catch (NumberFormatException ex) { System.out.println("分類番号は数字でどうぞ"); continue; } }
437 :
デフォルトの名無しさん :04/06/04 21:58
while (true) { typename = in.readLine(); if (typename.equals("")) { System.out.println("空白はダメです"); continue; } else { break; } } while (true) { title = in.readLine(); if (title.equals("")) { System.out.println("空白はダメです"); continue; } else { break; } } } lib.edit(num,typename,title);
いや、もう少し冷静に考えろよ・・・日本語見たら分かるやん。 まずな、while(true) {} というのは、{} 内を、延々と何度も何度も繰り返すのだ。 {} をブロックと呼ぶ。 break はブロックの外、} の次の行へ抜け出す。 continue は即座にブロックの最初に戻る(だから } の直前の continue は本当は意味がない)。 ただし、ブロックはブロックでも if {} else {} とか try {} catch() {} は continue, break に関係ない。 if {} の中に break があれば、その外側にある中で一番内側の while を break する、という意味。 while ブロックの先頭に in.readLine() があるということは、 間違いがあれば何度も一行入力を繰り返す、という処理をやってるわけだ。 この場合変更処理だから、分類番号は既に使われてる番号でなければいけない。 その入力をさせる繰返しの中に、 >System.out.println("既に使われている分類番号です"); >continue; があったらおかしいだろう。 それと、ここにソース貼るときは面倒だからしてないけど、{} が現れるごとにインデントしてるか? { と } の数が合ってないとき、わけわからんところでエラーが出るから手に追えないぞ。 それでチェックしながらやればもうちょいだ。
439 :
デフォルトの名無しさん :04/06/04 23:26
すみません。キャンセルしますの後に↓を抜かしてました・・・。 それでも5個のエラーが出てくる。 もう泣きたい・・・。 情けなくて涙がでてくるよ。・゜(⊃д`)゜・。 try { num = new Integer(numstr).intValue(); if (lib.find(num) == null) { System.out.println("その番号は存在しません"); continue; } else { break; } } catch (NumberFormatException ex) { System.out.println("分類番号は数字でどうぞ"); } System.out.println("ひとつずつ入力してください(分類番号,分類名,図書名)"); while (true) {
440 :
デフォルトの名無しさん :04/06/05 10:21
月曜までだろ? できてるところのしくみをゆっくり解析してみれ。
このコード凄いな。。センスあるよ。。きっと。。なんかの。。たぶん。。
どなたか434をやってください。
BufferedReader in = // 他のソース参考にしろ String a = in.readLine(); int value_a = (a.charAt(0) == '1' ? 4 : 0) + (a.charAt(1) == '1' ? 2 : 0) + (a.charAt(2) == '1' ? 1 : 0); 同じようにもう1つ入力して足して出力するだけ
444 :
デフォルトの名無しさん :04/06/06 17:33
jarファイルというものを作ってみましたが、NoClassDefFoundErrorというものが出て実行出来ません。 Main-Classもしっかり指定しています。なぜでしょうか。
445 :
デフォルトの名無しさん :04/06/06 18:09
検索しても、クラス名を実行時に間違えていませんか?とか問題外の解決方法ばかり載っていてお話にならないです。。
自分のマシンの状況を細かく書かないとか、 内容を「しっかり」などと具体性に欠ける表現で済ませるなど、 問題外の質問文ではお話にならないです
447 :
デフォルトの名無しさん :04/06/06 18:18
>>444 それが普通じゃないの?
俺も通常のclassファイルすらIDE上でしか実行出来ないけど。元々そういう仕様だと思う。
このエラーに躓く人ってかなりいるな。まあ欠陥の1つと言えなくもない。
import javax.swing.*; import java.awt.*; import java.awt.event.*; class MainFrame extends JFrame {public MainFrame(String title, int width, int height) {Color color = Color.lightGray; setTitle(title); setSize(width, height); setBackground(color); getContentPane().add(new TextPanel("hello, world", color)); setDefaultCloseOperation(EXIT_ON_CLOSE);}} class TextPanel extends JPanel {private Font m_font; private FontMetrics m_fm; private String m_str; private Color m_color; public TextPanel(String str, Color color) {m_font = new Font("SansSerif", Font.BOLD, 30); m_fm = getFontMetrics(m_font); m_str = new String(str); m_color = Color.red; setBackground(color); setLayout(new FlowLayout()); JButton RedBtn = new JButton("Red"); add(RedBtn); JButton GreenBtn = new JButton("Green"); add(GreenBtn);
JButton BlueBtn = new JButton("Blue"); add(BlueBtn); RedBtn.addActionListener( new ActionListener() {public void actionPerformed(ActionEvent e) {m_color = Color.red; repaint();}}); GreenBtn.addActionListener( new ActionListener() {public void actionPerformed(ActionEvent e) {m_color = Color.green; repaint();}}); BlueBtn.addActionListener( new ActionListener() {public void actionPerformed(ActionEvent e)
{m_color = Color.blue; repaint();}});} public void paintComponent(Graphics g) {super.paintComponent(g); g.setColor(m_color); g.setFont(m_font); int x = (getWidth() - m_fm.stringWidth(m_str)) / 2; int y = m_fm.getAscent() + (getHeight() - m_fm.getHeight()) / 2; g.drawString(m_str, x, y);}} public class Test {public static void main(String[] args) {MainFrame frame = new MainFrame("sample04", 300, 180); frame.show();}} 大変見づらくて申し訳ないですが、このプログラムを以下の様に変更しろという課題です。 ・ボタンそのものをイベント・リスナーにしてください。 ・すっきりと短く美しい実装を心がけてください。そうでない場合は 減点 します。 期限が明日までなので、分かる方がいましたらどうかご教授お願い致します。
452 :
デフォルトの名無しさん :04/06/06 18:59
>>447 なるほど、私もクラスファイルもプロンプトから実行出来ませんでした。
CLASSPATH=.;にしてPATHにjdkのパス追加しましたが全く変わりません。同じエラーが出ます。
>>451 ボタン作成・追加・Listener 登録をばっさり切って代わりにこれ
add(new MyButton("Red", Color.red));
add(new MyButton("Green", Color.green));
add(new MyButton("Blue", Color.blue));
あとこのクラスを宣言(※TextPanel の中に宣言すること)
private class MyButton extends JButton implements ActionListener {
private Color color;
private MyButton(String name, Color color) {
super(name);
addActionListener(this);
this.color = color;
}
public void actionPerformed(ActionEvent e) {
m_color = color;
TextPanel.this.repaint();
}
}
ほんとに美しい実装なら Action を使うんじゃないのかなぁ・・・
ほかにももっともっと改良の余地あるなぁ・・・まぁいいけどね
>>453 ありがとうございます!
これで明日の授業で提出できそうです。
本当に感謝です。
えぇと、Methodを2つ使って?キーボードから打ち込んだ文字数を 表示させるのってどうやるのでしょうか。 たとえば、Bill is tiredと打ち込んだとき 空白の部分を無視して文字数は11ですよーって返してくれるやつが 作りたいのですが・・・。。 宜しくお願いします。
> えぇと、Methodを2つ使って? メソッドを2つ使ってみた。 ( getTypeCount と main ) public class Test { private static int getTypeCount(String line) { return line.replaceAll(" ", "").length(); } public static void main(String[] args) { System.out.println( args[0] + " : " + getTypeCount(args[0]) ); } } むろん、他にもやり方はあるけど。 全角空白も無視したいなら、自分でやってみたらいい。
Pascalの三角形 多項式(1+x)のn乗における、xのi乗の項の係数をP(n,i)としたときに、キーボードからnを入力して、 P(n,0) P(n,1) P(n,2)...P(n,n) を印刷するプログラムを作成しなさい。 そのプログラムを拡張して、nを入力したら、0からnまでのP(n,i)を画面に表示するプログラムにしなさい。このときに、数が三角形に配列するが、これをPascalの三角形という。 よろしくおねがいします
02.金種計算 名前と金額が交互に記録されたファイルから、名前としてendが読み込まれるまで、データを読み込む。 それぞれの金額を支払うために最低枚数の紙幣と硬貨の組み合わせを1万円札、5千円札、千円札、500円玉、100円玉、50円玉、10円玉、5円玉、1円玉の枚数を計算し、表示する。(2千円札を入れてもよい) 最後に、Totalとして、すべての金額を支払うために必要な紙幣と貨幣の数を表示する。 データファイルの例takeda 123456 tanaka 234567 takenaka 454545 takenouchi 345432 end 結果表示の例takeda 123456 12 0 3 0 4 1 0 1 1 tanaka 234567 23 0 4 1 0 1 1 1 2 takenaka 454545 45 0 4 1 0 0 4 1 0
数が三角形に配列するんですか。
そうですが。文句があるならはっきり言ってください。
実行の仕方は、データファイルが money.txt なら。 >java Shukudai458 money.txt money.txt のデータ形式がおかしいと即、例外で終わるので注意。
あー、余計なtrim消し忘れた。 ま、いいか。
ありがとうございました
>>457 P(n,i) を配列で表す。下から x^i 乗の項の係数
(1+x) → [1], [1], [0], [0], [0], [0] ...
2乗したときは、同じ物同士をずらして足す。
[1], [1], [0], [0], [0], [0] ... (1+x) のうちの 1。そのまま足す
+) [0], [1], [1], [0], [0], [0] ... (1+x) のうちの x。係数にかかる x の数が増えるのでずれる
-----------------------------
[1], [2], [1], [0], [0], [0] ...
3乗したときも同じ。
[1], [2], [1], [0], [0], [0] ...
+) [0], [1], [2], [1], [0], [0] ...
-----------------------------
[1], [3], [3], [1], [0], [0] ...
これを繰り返せばできるわけだが。
ちなみに三角形とは
0
1 1
1 2 1
1 3 3 1
1 4 6 4 1
のことだね
配列といっておいて [] を変な風に使ったのは許してくれい
0 じゃなくて 1 だ
468 :
デフォルトの名無しさん :04/06/08 16:21
図書情報のプログラム、提出が昨日だったので提出してきました。 結局private static void editProcess(Library lib, BufferedReader in) throws IOException {} の中身がわからず、未完成のまま提出しました。 結局中身はなんだったんですか??
一生懸命勉強してからもっかい挑んでくれ・・・ おじちゃんは悲しいよ
470 :
デフォルトの名無しさん :04/06/08 17:26
力不足のため、どうにもなりません。 このままではすっきりしないので教えてください。 後でトレースしたいので・・・。
int num; String typename, title; System.out.println("分類番号を入力してください"); while (true) { String numstr = in.readLine(); if (numstr.equals("")) { System.out.println("キャンセルします"); return; } try { num = new Integer(numstr).intValue(); if (lib.find(num) == null) { System.out.println("その番号は存在しません"); continue; } else { break; } } catch (NumberFormatException ex) { System.out.println("分類番号は数字でどうぞ"); } }
//残りを入力 while (true) { typename = in.readLine(); if (typename.equals("")) { System.out.println("空白はダメです"); continue; } else { break; } } while (true) { title = in.readLine(); if (title.equals("")) { System.out.println("空白はダメです"); continue; } else { break; } } //変更 lib.edit(num, typename, title); 以上。よくみてごらん。add, remove の各部分をほとんどいじらず合成。
473 :
デフォルトの名無しさん :04/06/08 17:34
ありがとうございます。 今後の参考にしたいと思います。
474 :
デフォルトの名無しさん :04/06/08 22:11
このスレで質問することじゃないかもしれないけど 学籍番号を入力すると対応する学生を探し、新しいファイルを作成するみたいな プログラムってどうやって作ればいいんですか?
その文章のまんま作ればいいだろ。 具体的なことは説明できない。少なくとも、 「学生情報がどこにどういう形式であるのか。」 が分からないことには。
ある数の平方根を求めるプログラムを教えて下さい。おもいつきませんでした
使っちゃいかんのなら 開平をやるか増やしたり減らしたりをやるか
>>476 Xが平方根を求めたい数、Nは適当に。
public class Sqrt {
private static final double X=10.0;
private static final int N = 4000;
public static void main( String args[] ) {
int i, c;
double t, t2;
java.util.Random r = new java.util.Random( );
for( i = 0, c = 0; i < N; ++i ) {
t = r.nextDouble( ) * X;
t2 = t*t;
if( t2 < X ) ++c;
}
System.out.println( "r=" + ((double)c/N)*X );
}
}
>>477 Mathクラスって何すか?ってレベルなんで…
>>499 ありがとうございます。
どういう構造になってるか俺には全く理解不能ですが、とりあえず動かしてみます。
>>480 Mathクラスは数学計算をするための static 関数群を提供する。
その中には平方根を求める関数 sqrt がある。
>>479 はランダムな値をぶち込んで結果を照合してるだけだぞ。
たぶんそのレベルでニュートン法を使えってことはないと思うから上の事項を確認しろ
>481 モンテカルロ法も知らないヴァカ発見(プ
public static double sqrt(double value) { double t = 1.0, x = 0.0; //最初にオーダー決める(同じか超える値) while (t*t <= value) { t *= 10.0; } x = t; //1段細かく求める(同じか下回る値) t /= 10.0; while (value < x*x) { x -= t; } //超えないようにだんだん細かく足していく for (int k=0; k<10; k++) { t /= 10.0; while ((x+t)*(x+t) < value) { x += t; } } return x; } モンテカルロ法もニュートン法も知らない無知な俺=478が組むとこうなる。 これくらいが妥当じゃないか?
>>479 横槍だけど、import java.util.*; 要るのではないかと。
でも java.util.Random とフルで書けばその必要は無いのでしたっけ?
>>485 import するかフルで書くかは完全に個人の自由でいいのでしょうか?
クラスの構造が分かりやすいのでフルがよさげですが、
タイプミス、プログラムの見易さなど考慮するとimportがいいような・・・
自分はimportする派ですがどうでしょう?
お好きにどうぞ。読みやすさだけ考えればいい。
>>489 これ会社の課題だろ?
こんなところで聞いてると上司に怒られるよ。
あのね、これみて。
>>403-406 ,
>>421-427 ,
>>471-472 これで一個の課題よ。で、君のはこれより数段難しくなるわけ。
ということはソースも数段長くなるわけ。たぶん、誰もやらないと思う。俺もやらないし。
期待して待つくらいなら、諦めるか、参考にして勉強しなさい。
492 :
デフォルトの名無しさん :04/06/09 20:03
年齢を入力したら、6歳未満か60歳以上なら「無料」 6歳以上12歳未満なら「子供料金」 それら以外なら「大人料金」 と書き出すプログラムお願いします 「if」とか「age>=6」とか使って
>476 0以下の時の処理は端折った。 public class Sqrt { private static final double E = 0.001; // 適当に。 private static final double X = 0.5; // 平方根を求めたい値 private static double sqrtInternal( double lb, double ub, double x ) { double t = ( ub + lb )/2; if( ub-lb < E ) return t; if( t*t < x ) return sqrtInternal( t, ub, x ); return sqrtInternal( lb, t, x ); } public static double sqrt( double x ) { if( x < 1 ) { return 1/sqrtInternal( 0, 1/x, 1/x ); } return sqrtInternal( 0, x, x ); } public static void main( String args[] ) { System.out.println( "sqrt(" + X + ") = " + sqrt(X)); } }
>>492 if ((age < 6) || (age >= 60)) {
System.out.println("無料");
} else if (age < 12) { //6歳未満は既に排除されている
System.out.println("子供料金");
} else {
System.out.println("大人料金");
}
495 :
デフォルトの名無しさん :04/06/09 20:25
>>494 >6歳未満は既に排除されている
これもプログラムの一部ですか
ネタはやめてね
497 :
デフォルトの名無しさん :04/06/09 21:13
文字列の検索と置換ができるエディタを作るプログラムを教えてください。 replace()メソッドを使ってはいけないって言われました
>>485 プログラミング上の注意のところの
>・ラベル、無限ループは禁止。
ラベル禁止ってどういうこと?
void strcpy(char *a, char *b) { int i; for (i = 0; b[i] != '\0'; i++) a[i] = b[i]; } void strncpy(char *t, char *s, int n) { while (n > 0 && *s != '\0') { *t = *s; t++; s++; n--; } } ↑の2つコードの間違いを指摘し修正しろというのなんですがどこが間違ってるのでしょうか?
誤爆しますた、スミマセン
ヒント:終端が・・・
「銀行の預金金額を入力してください。」 345323 「その銀行の一年あたりの利子率を入力してください。」 0.01 「何年後まで出力しますか?」 3 1年目の預金合計額は 348776円です。 2年目の預金合計額は 352263円です。 3年目の預金合計額は 355786円です。
やってもらう立場のクセしてそういうゾンザイな書き方する奴は存外ウマイ(違
import java.io.*; public class Q505 { private static final String ITOA = "0123456789"; public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("「銀行の預金金額を入力してください。」"); double sum = Integer.parseInt(in.readLine()); System.out.println("「その銀行の一年あたりの利子率を入力してください。」"); double rate = 1.0 + Double.parseDouble(in.readLine()); System.out.println("「何年後まで出力しますか?」"); int years = Integer.parseInt(in.readLine()); for (int y=1; y<=years; y++) { String ystr = ""; int yy = y; while (yy != 0) { ystr = ITOA.charAt(yy%10) + ystr; yy /= 10; } sum *= rate; System.out.println(ystr + "年目の預金合計額は " + (int)sum + "円です。"); } } } 今回の初セーブ後の修正点: ・スペルミス修正 rare → rate ・sum を int で宣言してしまったため毎年切り捨てられちゃった→ double に修正 以上。数から言えば満足だが、2つめは質的にとっても危ないバグ
丸投げ歓迎って書いてあるじゃん
>>507 単利なのなら「1年あたり」という質問はどうかと。。
>>507 これ、ノーセーブでやる量か?
つーかそういう遊びなら漏れも次やってみようかな。
>>509 でも
>>505 の出題がそうだったんだもん 計算結果は複利だし・・・
>>510 どんだけ長いのでも最初はノーセーブでトライ(その代わり例外チェックとかは省略多し)。
かつ、IDE 使わないで、登録してるキーワードだけは色を変えてくれるエディタでやってる
512 :
デフォルトの名無しさん :04/06/10 22:44
@ マイナスの数が入力されるまでの入力データを使って平均値を求め、 個々のデータと平均値の差の二乗和の平均値を表示するプログラム(ただしデータは一回だけしか入力できない) 例 入力データが1,2,4,1なら、平均値は2なので平均値との差の二乗和は(-1)^2+0+2^2+(-1)^2=6となる。 A rand()/32768.0としてn個の乱数を作成し、その度数分布をつくるプログラム ただし、度数分布のクラスの数は10とする ぜんぜんわかりません。よろしくおねがいします。
ごめんなさい!!!c言語のスレと間違えました!!!これはスルーしてください!!
514 :
デフォルトの名無しさん :04/06/11 00:13
(⌒Y⌒Y⌒) /\__/ / / \ / / ,.==- =; (⌒ / ーo 、 ,..of ( (6  ̄ i  ̄} ( | .r _ j / \ 'ー-=ゝ/ ップ \  ̄ノ  ̄ ̄
515 :
デフォルトの名無しさん :04/06/11 11:53
入力したn個の整数の最大値と最小値を求めるプログラムを 配列を使って作成してください。 お願いします。
>>515 int[] array = { 2,4,6,8,12, 1 };
int min = array[0];
int max = array[0];
for ( int i = 1; i< array.length; i++ ) {
if ( min > array[i] ) {
min = array[i];
} else if ( max < array[i] ){
max = array[i];
}
}
System.out.println( min );
System.out.println( max );
517 :
デフォルトの名無しさん :04/06/11 22:15
ちょっとスレ違いな予感もある質問なんですが… 教授にjavaはどういう処理が得意な言語か、 javaでどういうプログラムが書けるのか、調べて来い! という課題をだされますた。 初心者すぎてまったくわからず困っているので、お力を貸してください。
518 :
最小値をとる配列要素の番号わかりません :04/06/11 22:19
平均= 60.46 標準偏差= 22.80 最小値= 5 最小値をとる配列要素の番号= 50 最大値= 99 最大値をとる配列要素の番号= 50 0- 9 |** 2 10-19 |* 1 20-29 |*** 3 30-39 |** 2 40-49 |****** 6 50-59 |********** 10 60-69 |******** 8 70-79 |******* 7 80-89 |****** 6 90-99 |***** 5 続行するには何かキーを押してください . .
519 :
最小値をとる配列要素の番号わかりません :04/06/11 22:25
#include <stdio.h> #include <math.h> #define NUM 50 int a[NUM] = { 99,45,89,62,61,93,55,78,56,26, 81,49,99,77,38,73,54,20,62,59, 63,59,63,93,74,37,71,49,48,56, 5,47,82,83,85,17,74,56,69,50, 51,82,24,99,66,65,73,53,48, 5};
>>517 Q どういう処理が得意か。
A これといってない。
Qどういうプログラムが書けるか。
A どうとでも書ける。
デジタル信号処理の課題ってやってもらえますか??
誤爆m(;;)m
523 :
デフォルトの名無しさん :04/06/11 23:57
>>516 int[] array = { 2,4,6,8,12, 1 };
java.util.Arrays.sort(array);
System.out.println(array[0]);
System.out.println(array[array.length-1]);
>>517 苦手なの、無理なのだったらいくらかあるけどな。
常駐ソフトだのデスクトップユーティリティだのドライバとかな。
>>520 以外の答えを望んでるバカ教授はおまえの方から見限ってやれ。
#include <stdio.h> void main (void) { char s,e; printf("開始文字を入力==>"); scanf("%c",&s); printf("終了文字を入力==>"); scanf("%c",&e); printf("\n開始文字%c\n終了文字%c",s,e); return; } どうやって入力すれば良いのでしょうか? これだと一回目で終わってしまいます。
Javaじゃねえ。
前にも情報処理一般みたいな質問しにきた奴いたけど、 多分今度の夏休みは、英語ドリルがどうとかリトマス試験紙がどうとか、 硬筆とか毛筆とか7月の最初の週の天気とか聞きに来る奴が現れるな。 なんせ奴等はスレタイ読まないから。
529 :
デフォルトの名無しさん :04/06/12 20:38
プログラムを実行するとパソコンからテキストファイルを読み込んで表示するには どうしたらいいんでしょうか?
530 :
デフォルトの名無しさん :04/06/12 20:47
ページ開くと勝手に新しいウインドウができて、 指定したURLに飛ぶっていうのはどーするんだ?
実行するとパソコンからテキストファイルを読み込んで表示するプログラムはどう作るんですか? だろ。日本語的には。
>>529 パソコンからテキストファイルを読み込むプログラム
テキストを表示するプログラム
この二つを組み合わせると作れます。
>>530 複雑だね。ページを開くアプリケーションから作らないといけないし
>528 絵日記なら代わりに書いてやれるぞ。 得ろ専門なので三日にいっぺんは濡れ場が入るが。
534 :
デフォルトの名無しさん :04/06/13 22:34
10行からなるStringAとStringBで行ごとに比較して違う場合はAの違う行を該当する Bの行に置換するって言うプログラム作れって言われたけどどのように作成したらいいん でしょうか?
535 :
デフォルトの名無しさん :04/06/13 22:40
HttpServletクラスをjavadocで調べたいんだけど、 どこに載っているのですか?
>534 StringA=StringB
>>534 public class StringPatternMatche {
private final static int lineNum = 10;//行数の制限
private String[] lineA, lineB;
public StringPatternMatche(String[] lineA, String[] lineB) {
if(lineA.length == lineNum && lineB.length == lineNum) {
this.lineA = lineA;
this.lineB = lineB;
}
}
public String[] getLine() {
return lineA;
}
public void lineCheck() {
for(int i=0; i<lineNum; i++) {
if(!lineA[i].equals(lineB[i]))
lineA[i] = lineB[i];
}
}
}
>>537 ';' がありません。
エラー 1 個
541 :
デフォルトの名無しさん :04/06/14 14:59
Client.javaおよび Server.java TCPにおけるソケット通信を用いる ClientからJAVAという文字を送るとServerで 受け取った文字を標準出力へ表示する お願いします。力を貸してください。
import java.io.*; import java.net.*; public class SocketTest{ private static final int PORT = 20000; //welknown でない 好きな値 public static void main(String[] args) { try { if ((args.length == 2) && args[0].equals("client")) { Client c = new Client(); c.connect(args[1], PORT); c.send("JAVA"); } else if ((args.length == 1) && args[0].equals("server")) { Server s = new Server(); s.waitAccess(PORT); //無限ループ } else { System.out.println("Usage : java SocketTest (client host|server)"); } } catch (IOException ex) { ex.printStackTrace(); } } } 今回の修正点: Runnable つけようと思ってやめたのに implements 宣言したままだったとこ、 connect を connet をしたとこ、import java.net.*; しわすれ。
class Client { private Socket socket; public void connect(String host, int port) throws IOException { socket = new Socket(host, port); } public void send(String line) throws IOException { OutputStream out = socket.getOutputStream(); out.write(line.getBytes()); out.flush(); } } class Server { public Server() { } public void waitAccess(int port) throws IOException { ServerSocket ss = new ServerSocket(port); while (true) { Socket s = ss.accept(); InputStream in = s.getInputStream(); byte[] buf = new byte[100]; int len = in.read(buf); System.out.write(buf, 0, len); } } } 1つのコンソールで java SocketTest server、もう1つで java SocketTest client localhost。 別サーバにつなぐときは localhost を書き換える。
ぐはぁあああ サンプル指した方が早いよなぁ そりゃそうだ
546 :
デフォルトの名無しさん :04/06/14 15:23
ありがとうございます。 頑張ってみます。
well known の綴りが違う、Server のコンストラクタ不要、など
次は文字列と検索する文字を入力し,文字列の中に検索する文字があれば,それ以降(その 文字を含む)の文字列を表示するプログラムです.空欄を埋めてプログラムを完成してください. #include <iostream.h> #define STR_LENG 100 char *wherechar(char *p,char ch); void main(void) { char str[STR_LENG+1], ch, *p; cout << "文字列入力"; cin >> str; cout << "検索文字?"; cin >> ch; if((p=wherechar(str,ch)) == NULL){ cout <<"文字"<< ch << "は見つからない"<<endl; } else{ cout<<"文字"<<ch<<"の後ろの文字列は"<<p<<endl; } } char *wherechar(char *p,char ch) { //埋めていただきたいところ } という問題です。よろしくお願いします。
>>549 ごめんなさい、その527の辺りにヒントがあるということでしょうか?
∧_∧ ウオラァ! .' , ..
( ) ,"⌒ヽ, .∴ ' <⌒ヽゲブッ
/"⌒ヽ 丶⌒"- ─ヽ, .∴ ' ”,, ,,("⌒丶
>>550 丿 人 rー ─"" _ _ _,, _ ” (入 ヽ,ヽ
(_ ソ \, \彡-―""-――= ̄" ,,"" "`: ヽ > | )
", ' ,,, __―__ _ー=_ ソ ノ 丿 |
( 入_,, ノ二三"ー ̄− _ =二__",,, _,,(⌒ / 丿
| ” ドゴッ! ( ノヽノ ,,.,ノ
| | /” / ,,/
r⌒ ) _| / ノ
( | (_ ,ノ /
| |_ _,, _ ,/ _ ノ
(__ノ ( /
>>548 アナタノヤッテル言語はナニ言語アルカ?
そしてスレタイ読んで気づいテクダサイ
553 :
デフォルトの名無しさん :04/06/15 01:53
宿題がわかりません! 140*60pixelの長方形の中に半径15の円を描き、その円を上下左右移動できるようにする。 おしえてください。お願いします。
>553 内容があいまいすぎ。 移動できるって、キーボードで移動するのか、マウスで移動するのか はたまた勝手に円が動いてるのか。 あとマウス以外の方法使った場合、長方形の壁突き抜けて動けてしまうぞ。 paint(Graphics g){ g.drawOval(x,y,30,30); } で円を書いて、中心座標(x,y)を変化させた直後でrepaint()してやればいい。
>>551 552
すみません、まったく気づけませんでした。
>あとマウス以外の方法使った場合、長方形の壁突き抜けて動けてしまうぞ。 それは組み方次第だろ。マウスがどうとかどう関係があるんだ。
「境界条件を意識しろ」という話題に、
>>556 のつっこみはセンスないな
559 :
デフォルトの名無しさん :04/06/15 17:47
すみません、超初心者なのでエラー意味がわかりません。 どうしてシンボルが解決できないんだろう。。。 >シンボル: メソッド getAttribute (java.lang.String) >場所 : org.w3c.dom.Node の インタフェース > String ele= childNode.getAttribute(nodename); import java.io.*; import org.w3c.dom.*; import org.apache.xerces.parsers.*; import java.lang.*; class DomParseDemo { public static void main(String[] args) { DOMParser parser = new DOMParser(); parser.parse(args[0]); Document doc = parser.getDocument(); Node root=(Node)(doc.getDocumentElement()); //ルート取得 Node childNode = root.getFirstChild(); String nodename = childNode.getNodeName(); String ele= childNode.getAttribute(nodename); System.out.println (ele); } }
ここはすごいインターネットですね
そもそも
>>1 書いてることぐらい読め
で、よかったんじゃないのかと
564 :
デフォルトの名無しさん :04/06/15 20:05
実数xと正の整数nを引数とし、べき乗x^(n)を計算する関数定義を作成せよ ただし、再帰を用いない double power1(double x,int n); および再帰を用いた、 double power2(double x,int n); の2通りと、それらの動作テストをするためのプログラムを作成せよ 尚、負のnにも対応せよ このような課題なんですが、ご教授下さい
import java.io.*; class Q564 { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); Q564 q = new Q564(); while (true) { System.out.print("x = "); double x = Double.parseDouble(br.readLine()); System.out.print("n = "); int n = Integer.parseInt(br.readLine()); System.out.println("power1 : " + q.power1(x, n)); System.out.println("power2 : " + q.power2(x, n)); } } catch (IOException ex) { ex.printStackTrace(); } }
double power1(double x, int n) { double a = 1.0; for (int i=0; i<Math.abs(n); i++) { if ((x == 0.0) || (n > 0)) { a *= x; } else { a /= x; } } return a; } double power2(double x, int n) { if (n == 0) { return 1.0; } else if ((x == 0.0) || (n > 0)) { return power2(x, n - 1)*x; } else { return power2(x, n + 1)/x; } } }
今回のセーブ・コンパイル後の修正点: BufferedReader コンストラクタの ) の数 再帰呼び出し時の引数 x 入れ忘れ(2つとも) はっきり言って精度悪し。 入力チェックも無し。 ループ抜ける正しい方法も無し。 もらえるとすれば合格点中の最低点。
配列に収められた 0 1 2 3 4 5 6 7 8 9 の数字をランダムに n 個 ( 0<n<10 ), 重複は認めずに取り出すにはどうした らよろしいでしょうか. よろしくお願いします.
import java.util.Random; public class Q568 { public static void main(String[] args) { int[] array = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Random rnd = new Random(); for (int i=0; i<array.length; i++) { int index; do { index = rnd.nextInt(array.length); } while (array[index] == -1); System.out.print(" " + array[index]); array[index] = -1; } System.out.println(); } }
あ、読み間違った。 > for (int i=0; i<array.length; i++) { ここ int n = //任意の数 for (int i=0; i<n; i++) { こんな感じにしといて
571 :
デフォルトの名無しさん :04/06/15 22:10
>>565 ,566
うお!早い!
ほんとに恐れ入ります。
ありがとうございます、助かりました
import java.util.Random; public class Q568 { static int[] getRandomArray(int n, int[] array){ int end = n <= array.length ? n : array.length; Random random = new Random(); int[] result = new int[end]; for(int i = 0; i < end; i++){ int index = random.nextInt(end - i); result[i] = array[index]; array[index] = array[end - i - 1]; array[end - i - 1] = result[i]; } return result; } static void printArray(int[] array){ for(int i = 0; i < array.length; i++) System.out.print(array[i] + " "); System.out.println(""); } public static void main(String[] args) { int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int[] result = getRandomArray(5, array); printArray(result); } }
う、まちがえた、これじゃだめだ。
//これで多分いい。ためしに10回呼んでます。 Random は外に出したほうが良いな。 import java.util.Random; public class Q568 { static Random random = new Random(); static int[] getRandomArray(int n, int[] array){ int end = n <= array.length ? n : array.length; int[] result = new int[end]; for(int i = 0; i < end; i++){ int index = random.nextInt(array.length - i - 1); result[i] = array[index]; array[index] = array[array.length - i - 1]; array[array.length - i - 1] = result[i]; } return result; } static void printArray(int[] array){ for(int i = 0; i < array.length; i++) System.out.print(array[i] + " "); System.out.println(""); } public static void main(String[] args) { int[] array = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; for(int i = 0; i < 10; i++){ int[] result = getRandomArray(5, array); printArray(result); } } }
575 :
デフォルトの名無しさん :04/06/15 22:37
int aと int[] a の違いを教えて下さい
int[] a 配列変数a
578 :
デフォルトの名無しさん :04/06/16 01:11
2個もint型変数引数の内容を入れかえるための手続き型引数付きマクロ iswap(a,b)を実現せよ これがよくわかりません。よろしくお願いします
>>578 2個も ではなく 2個の と読むのかな?
public void iswap(int a, int b) {
int num = a;
a = b;
b = num;
}
Java にはマクロなんかありません
>>579 もそっと慎重に対応せぇよ
581 :
デフォルトの名無しさん :04/06/16 01:52
>>579 ,580
すみません、C言語でお願いします
2個も×
2個の○
>>579 はjavaなんですか?
なにせ初心者なものでこの課題が難しいか簡単かもわからない始末、、
>>581 スレタイ読んでくだされ…
学校の宿題は俺に…… for Java
すみませんでした
586 :
デフォルトの名無しさん :04/06/16 17:49
javaで電卓を作っています 小数点をつけるにはどうすれば
>>586 もんのすごい抽象的な質問だな。何を知りたいかそれだけで分かれってか。おう。
・double 使え
・NumberFormat 使え
・+ "." しろ
他になんかあるかな。これ以上は無理。
電気麻雀卓?
>>588 だとするとバグ付きで出したら、
ヤクザ団体から物凄いフィードバックが来るんだろうな
それにしてもjavaで動く全自動(点数計算付き)麻雀卓、高そうだな・・・
電子式卓上計算機→電卓 げ、げ、原形がないんだな うん(山下
592 :
マホロビャ :04/06/17 13:36
もうすぐ 時間制限の宿題がでます!!591さん たすけて
高いよ
594 :
マホロビャ :04/06/17 13:42
ゴクリ・・・
時給 おにぎり5個だ
596 :
マホロビャ :04/06/17 13:48
(@3●)〜@コロ や・・・やっすーーー!
山下画伯だからな
そうそう ただし具で飯を包んだやつな ・・・いいから宿題出たらそれだけ書けや 無駄レスすんな
もうすぐっていつ?まだ?
600 :
マホロビャ :04/06/17 13:53
PGMSTARTBEGIN ADS1 INBUFDS80 INLENDS1 BEGINININBUF,INLEN SLLGR2,4 EXIT END なんか こういうCASLの問題なんだけど・・ 管轄外です?
601 :
マホロビャ :04/06/17 13:54
PGM START BEGIN A DS 1 INBUF DS 80 INLEN DS 1 BEGIN IN INBUF,INLEN SLL GR2,4 EXIT END
殺したい ネタでも殺したい 誰かもう一人連れてきて地獄のコンビネーションにかけたい
最近多くなりましたね。 もう夏ですなぁ
604 :
マホロビャ :04/06/17 13:59
あの・・
いやー、おもしろかった! よくやった!
line= new BasicStroke(4.0f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,10.0f,10.0f,0.0f); これでなぜかシンボルを解決できませんエラーが出るんですけど、なぜですか?
607 :
マホロビャ :04/06/17 17:29
結局理解出来ないという事でいいんですね?w
>>607 CASLなんぞやったこと無いから理解できん。
っていうか、CASLの宿題スレ行けよ。
ここはJavaの宿題スレなので。
もしかして日本語理解できないとかじゃないよな?
609 :
デフォルトの名無しさん :04/06/17 18:28
606です。お願いします。
変数宣言してないっつ〜オチじゃなくて?
そういうミスでは無いです。newで直接SetStrokeに渡してもダメでした。何ででしょうか。
どのシンボルが解決できないか出てるだろう。そっから自分で考えたら?
newの下に_がついてました。newがダメって一体・・
もっちょい あと一歩
でもimportもちゃんとしてますよ。
619 :
デフォルトの名無しさん :04/06/18 16:12
[例] 1)要素数sizeの整数型配列tensuを設定する 2)全てのデータをtensuに読み込む ⇒データは不定個なのでwhile型の繰り返し(この処理中に入力されたデータ個数を求めておく) 3)配列tensu中のデータの合計を求める ⇒データ個数は分かっているのでfor型の繰り返し 4)平均点を算出し出力 課題1:配列を用いた試験の平均点(例)をプログラミングし、適切なデータで検証しなさい 課題2:課題1を、配列のサイズを最初に入力し、それを用いて配列を生成するように修正しなさい ※なお各数字は適当で良い
import java.io.*; public class Q619 { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //課題1 ではこっち //int size = 100; //課題2 ではこっち //System.out.print("データ数>"); //int size = Integer.parseInt(br.readLine()); //1) int[] tensu = new int[size];
//2) int count = 0; while (true) { System.out.print("入力(-1で終了)>"); int score = Integer.parseInt(br.readLine()); if (score == -1) break; tensu[count] = score; count++; } //3) int sum = 0; for (int i=0; i<count; i++) { sum += tensu[i]; } //4) double average = ((double)sum)/((double)count); System.out.println("平均点 : " + average); } catch (IOException ex) { ex.printStackTrace(); } } }
課題2がちょっと曖昧。 本当なら配列の数を決めたら丁度その数だけ入力があっていいと思うんだが、 そこまで言及してない。だから適当にしちゃった。 思わず "データ数>" にしちゃったけど "配列サイズ>" が正しいかな。
623 :
デフォルトの名無しさん :04/06/18 16:33
どうもありがとうございます 助かりました
>>622 最後の}でclassまたはinterfaceが必要と出たんですが、どうすればいいんでしょう?
どっかの { が足りないか、 } が多い。 インデントつけて、おかしいところを調べれ。 ちなみに //n) は全部同じ高さになるはず。
626 :
デフォルトの名無しさん :04/06/18 19:06
BufferedReader って何? うちの授業でコレ使ってるの見たことないんだけど
バッファされた読む者
そりゃ、授業程度じゃ見たことないものの方が圧倒的に多いだろう
>>626 io の基本中の基本じゃないの?知っとけよ。
講師が用意した変なユーティリティクラスを使わされてるのか? 前にもそれっぽいクラス書いてる奴がいたけど。 半ばウソ教えられてるようなもんだ かわいそうに
バッファリングしなくても、読めるっちゃ読めるけどな。
632 :
デフォルトの名無しさん :04/06/19 21:07
学校のPCに入ってる エディタ(xyzzy) ってのと DOSプロンプト ってのを自分のPCにも入れたいんだけど どこでDLできますか
>>632 Meadowもイイ
じゃなくて、スレタイ嫁ゴルァ
636 :
デフォルトの名無しさん :04/06/20 22:20
指定したテキストファイルの中に、入力した文字列が何回出現するかを調べるプログラムなんですが、 ・入力した文字の大文字小文字を区別しないようにしたい(例:the とThe) ・入力した文字列が完全一致した場合のみカウントする(例:the で検索したときに、theory はカウントしない) ようにしたいのですがどなたか教えてください。お願いします(><) public class Find3 { public static void main(String[] args) { if(args.length != 1) { System.out.println("使用法:java Find3 検索文字列 < 検索対象ファイル"); System.out.println("example : java Find3 System < Find3.java "); System.exit(0); } String findstring = args[0]; System.out.println("検索文字列は「" + findstring + "」です。"); BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); try { String line; int findnum = 0; while ((line = reader.readLine()) != null) { int n = line.indexOf(" " + findstring + " "); while ( n >= 0) { findnum++; line = line.substring(n+1); n = line.indexOf(" " + findstring + " "); } } System.out.println(findnum + "こ見つかりました"); } catch (IOException e) { System.out.println(e); } } }
>636 面倒なのでtry内だけ。あと、import java.util.regex.*;を足しておけ。 try { String line; int findnum = 0; Pattern pat = Pattern.compile( "\\b" + findstring + "\\b", Pattern.CASE_INSENSITIVE ); Matcher mat = pat.matcher( "" ); while ((line = reader.readLine()) != null) { mat.reset( line ); while( mat.find( )) findnum++; } }
System.out.println(findnum + "こ見つかりました"); を書き忘れた。ま、分かるだろ。
>637=638さん ありがとうございました。(TдT) あとは考察。。(;´〜`)何とかします
「マクローリン展開の応用として、円周率πを求めるプログラムを組め。 (300桁)」という課題がでました。 お力を貸してください。よろしくおねがいします。
リストの全内容を反転するプログラムを作成せよ、という問題を教えてください。 public int size() { return count; } public void reverse() { int center = count / 2; int end = count - 1; for (int i = 0; i < center; i++) { swap(i, end - i); } } public void swap(int k, int j) { int tmp = k; k = j; j = tmp; } 理論的にはswapを使ってリスト内の入れ替えをして反転させようとしたのですが、 うまくいきません。 リスト内でのswapの使い方もよくわからないので、誰か教えてください。
すいません追加でもうひとつ。 public void concat(IntList x) 意味:リストの連結 というプログラムを作れという問題です。 誰かお願いします。
>>640 なんか「このクラスを使うこと」「使わないこと」とかシバリある?
>>641-642 その IntList とやらのソースなりインタフェースなりを教えてくれないことにはどうしようもない。
すいません、問題文を書きます。 以下のIntList クラスに,次のメソッドを追加せよ. public void reverse() 意味:リストの全要素を反転する. public void concat(IntList x) 意味:リストの連結 class IntList { private IntCell head; private int count; // 空リストを生成するコンストラクタ // ダミーのIntCellインスタンスを生成している点に注意 public IntList() { head = new IntCell(); count = 0; } // 要素の個数 public int size() { return count; } // 要素の追加 public boolean add(int n) { head.prepend(n); ++count; return true; }
// index番目に要素を追加 public boolean add(int index, int n) { IntCell p = nth(index); if (p == null) { return false; } p.prepend(n); ++count; return true; } // index番目の値を見る public int get(int index) { IntCell p = nth(index); if (p == null || p.isEnd()) { System.out.println("IntList: range error."); System.exit(1); } return p.getValue(); } // 指定した値を持つ要素が存在するか? public boolean contains(int n) { IntCell p = search(n); return !p.isEnd(); }
// 指定した値を持つ要素の削除 public boolean remove(int n) { IntCell p = search(n); if (p.isEnd()) { return false; } p.delete(); --count; return true; } // index番目の要素の削除 public boolean removeNth(int index) { IntCell p = nth(index); if (p == null ||p.isEnd()) { return false; } p.delete(); --count; return true; } } 長くなってすいません。
テスト用に使うプログラムも追加。 class TestIntList { public static void main(String[] args) { IntList a = new IntList(); IntList b = new IntList(); a.add(2, 10); a.add(0, 20); b.add(3, 13); b.add(0, 22); a.reverse(); System.out.println(a); a.concat(b); System.out.println(a); } }
一時間周期でデータを取得してファイル出力するプログラムを作っているんですが 一時間周期のやり方がわかりません。 お願いします
>>648 Thread, Runnable, Timer あたりを調べてみよ。
ちなみにここは基本的に丸投げスレなので、
それならそう書いて、必要な仕様や中途なソースも挙げて欲しいし、
そうでないなら(レスの感じからそういう風にしかとれない)次回から質問スレにどうぞ。
ファイルにデータに書き込む時に常に上に最新のデータを書き込むようにするのが分かりません。 例で言えば 最新データ 一つ前 二つ前 ・ ・ としていくときの処理はどうやればいいのでしょうか? おねがいします_| ̄|○
>>644 ほんとにそれだけ? IntCell クラスとか、IntList のメソッドが足りないじゃないか。
それでも想像で組めそうではあるけど、俺らも君も動作検証できんぞ。
それと、
>>641 は一体どこまでが君の書いたソース? 全部?
その swap は一切何の役にも立たないメソッドのようだが。
>>650 1) 実行時に全部リストに取り出しちゃって、そのリストの一番最初に最新分をつっこんで、全部書き込む。
2) 保存先と同じディレクトリに別のファイルを作り、最新分を書き込み、
古い方から一個づつ読み込んで新しいのに書き込み、
最後にファイルを閉じて、古い方を捨て、新しい方の名前を変える。
こんなとこかね。
IntCell追加です class IntCell { private int value; private IntCell next; public IntCell(int value, IntCell next) { this.value = value; this.next = next; } public IntCell(int value) { this(value, null); } public IntCell() { this(0, null); } // アクセスメソッド public int getValue() { return value; } public IntCell getNext() { return next; } // リストの最後を表すダミーセルかどうかの判定 public boolean isEnd() { return next == null; } // 後への挿入 public void append(int n) { IntCell p = new IntCell(n, next); next = p; }
// 前への挿入 public void prepend(int n) { IntCell p = new IntCell(value, next); value = n; next = p; } // 要素の削除 public void delete() { value = next.value; next = next.next; } public String toString() { if (next == null) { return "" + value; } else { return "" + value + next; } } }
IntList の nth (それと search) が無い。検証できないってば。 それに、検証用の main おかしくないか。 いきなり a.add(2, 10) って。 空のリストに 2 なんて index つけて渡しも、はじかれるんじゃないのかね。 それも nth の仕様が分からんとなんとも言えんがな。
IntList内の書きもれありました、たびたびすいません。 private IntCell search(int n) { IntCell p = head; while (!p.isEnd() && p.getValue() != n) { p = p.getNext(); } return p; } private IntCell nth(int index) { if (index < 0 || size() < index) { return null; } IntCell p = head; for (int i = 0; i < index; ++i) { p = p.getNext(); } return p; }
IntList#toString() がないけど IntCell#toString() から類推すると・・・ 最初に足した奴は一番終端に行くっていうのでいいのかね。うーん。 他にもひねくれたところが多いなぁ。俺の読み間違いかなぁ。 public void concat(IntList list) { //相手の先頭を取り出す IntCell c = list.head; //追加前の終端に値を追加していく //next をおっていくので、 //先頭(追加list に最後にaddしたもの)が新しい先頭になる。 int i = 0; while (! c.isEnd()) { add(i, c.getValue()); c = c.getNext(); i++; } } public void reverse() { //現在の内部構造をパージして新しい内部構造を作る IntCell tmp = head; head = new IntCell(); //先頭に順にデータを追加していく //結果的に逆順になる //先頭(最後に追加されたもの)は終端(最初に追加されたものの位置)に追いやられていく while (! tmp.isEnd()) { head.prepend(tmp.getValue()); tmp = tmp.getNext(); } }
a に index なしでどぁーっと値を add していって、 b にも add していって、 reverce 前、後、concat 後に println(a); してみよ。 ただし、以下のメソッドを IntList に追加しないと検証できない。 public String toString() { return head.toString(); } また、IntCell は以下のようにしないと見づらい。 public String toString() { if (next == null) { return " " + value; } else { return " " + value + next; } }
>>640 public void execute() throws Exception {
int scale_org = 300;
int scale = scale_org + 5;
int a = 5;
int b = 239;
BigDecimal four = BigDecimal.valueOf( 4l );
BigDecimal arc_inv_a = arctanInverseX( a, scale );
BigDecimal arc_inv_b = arctanInverseX( b, scale );
BigDecimal pi = arc_inv_a.multiply( four ).subtract( arc_inv_b ).multiply( four );
System.out.println( four.toString() );
System.out.println( arc_inv_a.toString() );
System.out.println( arc_inv_b.toString() );
pi = pi.setScale( scale_org, BigDecimal.ROUND_HALF_EVEN );
System.out.println( pi.toString() );
}
private int getMaxN( long base, int scale ) { int i = (int)(scale/Math.log( base ) * Math.log( 10 ))+1; if ( i % 2 != 0 ) { i++; } return (i-1)/2; } private BigDecimal arctanInverseX( long x_org, int scale ) { BigDecimal res = BigDecimal.valueOf( 0l ); BigDecimal one = BigDecimal.valueOf( 1l ); BigDecimal x = BigDecimal.valueOf( x_org ); System.out.println( x.toString() ); boolean sign = false; int max_n = getMaxN( x_org, scale ); for ( int i =0; i < max_n; i++ ) { BigDecimal val = pow( x, 2*i+1 ); val = one.divide( val, scale, BigDecimal.ROUND_HALF_EVEN ); val = val.divide( BigDecimal.valueOf( 2*i+1 ), BigDecimal.ROUND_HALF_EVEN ); if ( sign ) { val = val.negate(); } res = res.add( val ); sign = !sign; } return res; }
private BigDecimal pow( BigDecimal x, int y ) { BigDecimal z = BigDecimal.valueOf( 1l ); for ( int i = 0; i < y; i++ ) { z = z.multiply( x ); } return z; } ちょっと丸めでインチキしてるんで、自分で手入れてくれ。
661 :
デフォルトの名無しさん :04/06/21 19:13
すいませんがお助け下さい… Q:2から100までの素数をすべて印刷するプログラムを作成しなさい。 (素数は2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97) 何か添え字100までの配列Pを作成するらしいんですがさっぱりでつ…
662 :
デフォルトの名無しさん :04/06/21 19:17
あともう一つお助けを! Q:多項式(1+x)のn乗における、xのi乗の項の係数をP(n,i)としたときに、 キーボードからnを入力して、P(n,0) P(n,1) P(n,2)...P(n,n) を印刷するプログラムを作成しなさい。 そのプログラムを拡張して、nを入力したら、0からnまでのP(n,i)を画面に 表示するプログラムにしなさい。このときに、数が三角形に配列するが、これを Pascalの三角形という。 何かPascalの三角形表示になるようなんですがこれもさっぱりでつ…
なんかそれ前にもあったぞ。 このスレさらってみてみな。
理屈は
>>465 参照
package test;
import java.io.*;
public class Q662 {
public static int getP(int n, int i) {
int[] keisu = new int[n+1];
for (int j=0; j<keisu.length; j++) keisu[j] = 0;
keisu[0] = 1;
for (int j=0; j<n; j++) {
for (int k=keisu.length-1; 1<=k; k--) {
keisu[k] = keisu[k] + keisu[k-1];
}
}
return keisu[i];
}
(続く)
public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); //キーボードからnを入力して、P(n,0) P(n,1) P(n,2)...P(n,n) //を印刷するプログラム int n = Integer.parseInt(br.readLine()); for (int i=0; i<=n; i++) { System.out.print(" " + getP(n, i)); } System.out.println(); //0からnまでのP(n,i)を画面に表示するプログラム for (int j=0; j<=n; j++) { for (int i=0; i<=j; i++) { System.out.print(" " + getP(j, i)); } System.out.println(); } br.close(); } catch (IOException ex) { ex.printStackTrace(); } } }
>>661 は
>>374 参照。
しかしのう。C++ の方でもかぶりまくってるのを見かけるが。
ネタ提供は嬉しいけど、どうかのう、この現状。
ごめん、
>>664 の package test; は要らない。
>>661 public class JavaQ661 {
public static void main(String[] args){
int a[] = new int[100];
for(int i = 0; i < 100; i++){
a[i] = 0;
}
for(int i = 2; i < 100; i++){
for(int j = i * 2; j < 100; j += i){
a[j] = 1;
}
}
for(int i = 2; i < 100; i++){
if(a[i] == 0)
System.out.println("" + i);
}
}
}
う、かぶってたのね。
670 :
デフォルトの名無しさん :04/06/21 22:38
数を三つ読み込んで(x,y,zとする) その中の最大値と最小値を書き出すプログラム と 三つの数を読み込み、数の小さい順に書き出すプログラム 三つの数が同じときや二つが同じときも動くように。 (ex:20 30 20 →20 20 30。 10 10 10 →10 10 10) お願いします
そのくらいのレベルなら下手くそでもいいから自分でやれ。
672 :
デフォルトの名無しさん :04/06/21 23:11
頼むYO そういうスレでしょ?
>>670 import java.io.*;
public class Three {
public static void main(String[] args){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] n = new int[3];
for(int i = 0; i< 3; i++){
System.out.print("input[" + i + "] > ");
n[i] = Integer.parseInt(br.readLine());
}
java.util.Arrays.sort(n);
System.out.println("最大値は " + n[2]);
System.out.println("最小値は " + n[0]);
System.out.println("昇順に並べると " + n[0] + " " + n[1] + " " + n[2]);
return;
}
catch(Exception e){
e.printStackTrace();
}
}
}
できました!ありがとうございました。
「じゃんけんゲームをします。」 「何勝先取ですか?」 4 「第1回戦開始します。」 「じゃんけんほい…(グー:1、チョキ:2、パー:3)」 5 「1か2か3を入力してください!」 「じゃんけんほい…(グー:1、チョキ:2、パー:3)」 2 「コンピュータ君はチョキです。あなたはチョキです。」 「あいこです。」 「じゃんけんほい…(グー:1、チョキ:2、パー:3)」 2 コンピュータ君はグーです。 あなたはチョキです。 第1回戦、あなたは負けました。 現在、あなたは0勝1敗です。 第2回戦開始します。 ・ ・ 第4回戦、あなたは負けました。 現在、あなたは0勝4敗です。 あなたは完敗です。 コンピュータのコメント「出直して参れ!!」
「あなたは西暦何年生まれですか?」 1980 「何月ですか?」 1 「何日ですか?」 45 「ありえません。何日ですか?」 6 「あなたは木曜日生まれです。」 注!うるう年には注意してください。 うるう年は、 (1)西暦年が四で割り切れる年 (2)そのうち百で割り切れる年はうるう年としない (3)四でも百でも割り切れる年のうち、四百で割り切れる年はうるう年とする の規則で設けられます。
>>675 import java.io.*;
public class Janken {
private int gameCount = 0, preGameCount = 1;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) {
new Janken().show();
}
public void show() {
System.out.println("じゃんけんゲームをします。");
//じゃんけんゲーム開始
start();
}
public void start() {
try {
int uNum = 0, cNum = 0, vicCount = 0;
int preGameCount=1;
int win = 0, lose = 0;
System.out.println("試合数を入力してください (奇数のみ)");
while(true) {
if(!setGameCount(input())) continue;
break;
}
678 :
デフォルトの名無しさん :04/06/22 14:17
System.out.println("第" + preGameCount + "回戦開始します。"); System.out.print("じゃんけん・・・(グー:1、チョキ:2、パー:3)\t"); while(preGameCount-1<gameCount) { cNum = (int)(Math.random()*3)+1; while(true) { uNum=role(input()); if(uNum==-1) { System.out.println("1〜3以外は入力しないでください。"); continue; } break; } int num = result(uNum, cNum); if(num == 2) { System.out.println("あいこで"); continue; } if(num == 1) win++; if(num == 0) lose ++; else if(num == -1) { System.out.println("エラー"); continue; }
jankenMessage(uNum, cNum, num, preGameCount, win, lose); preGameCount++; } System.out.println(); if(win > lose) System.out.println("PERFECT"); else { System.out.println("COMPLETE DEFEAT"); System.out.println("Computer > 出直して参れ!!"); } } catch(Exception e) {} } public String input() { try { return br.readLine(); } catch(IOException e) {} return null; } //試合数のセット、 セットに成功:true public boolean setGameCount(String str) { int num; try { num = Integer.parseInt(str); } catch(NumberFormatException e) { System.out.println("数字を入力してください"); return false; }
if((num%2)==1) { this.gameCount = num; return true; } else System.out.println("奇数以外は入力しないでください"); return false; } //役(?)の判定 //1〜3以外を入力したらエラーメッセージ public int role(String str) { if(str.equals("1")) return 1; else if(str.equals("2")) return 2; else if(str.equals("3")) return 3; return -1; } //勝ち負けの判定(グー:1、チョキ:2、パー:3) //あいこ:2, 勝ち:1, 負け:0, エラー:-1 public int result(int uNum, int cNum) { if(uNum == cNum) return 2; else if(uNum<3&&(uNum+1)==cNum || 2<uNum&&(uNum-2)==cNum) return 1; else if(cNum<3&&(cNum+1)==uNum || 2<cNum&&(cNum-2)==uNum) return 0; else return -1; }
//役(?)を文字列に変える private String roleString(int num) { if(num == 1) return "グー"; else if(num == 2) return "チョキ"; else if(num == 3) return "パー"; return null; } private void jankenMessage(int uNum, int cNum, int num, int gameCount, int win, int lose) { System.out.println("Computer" + roleString(cNum)); System.out.println("You" + roleString(uNum)); System.out.println(); if(num == 1) System.out.println("第"+gameCount+"回戦:You WIN"); else if(num == 0) System.out.println("第"+gameCount+"回戦:You LOSE"); System.out.println("現在の勝敗は: " + win + "/" + lose); } }
少しだけ実験 (実行テスト) してみたけどちゃんと動いてる これ以上はマンドイので自分でやってください ソース汚いのは許してねw
>>658 返事が遅れて申し訳ありませんでした。
大変参考になりました。
無事完成することができました。ありがとうございました。
IEEE754の浮動小数点数同士の加減乗除のプログラムを教えてください 例えば 9.999×10の1乗+1.610×10の-1乗 入力は二つです。10進数で入力します。それを2進に変換して浮動小数点数にして、演算をします。。 出力結果も10進で表示します。 C言語でお願いします
>>684 ちょっとまって!! そのまえにコレ、実行してみて!!
#include <stdio.h>
#include <string.h>>
int main(int argc, int *argv[]){
char *s = "学校の宿題は俺にやらせて下さいver.2.0βfor Java";
unsigned int i;
for(i = 0; i < strlen(s) - 3; i++){
puts(s + i);
}
return 0;
}
MIDI内に含まれる音程からキー(調)を抽出するアルゴリズムを教えて下さい
>>686 ・MIDIデータのピッチを半音階ごとに集計
・どうにかして7音に絞る
頻度の上位とか、音価の低いものを除くとか、工夫する
・音程が全全半全全全半になっているところを探す
マッチした先頭が長調、6度上が短調
これ以上は、和声学の知識が必要。
最初と最後の音でだいたい決まる。
なんにしろ Java 関係ないし 宿題っぽくもないし
691 :
きょんちゃん :04/06/24 13:33
OUT命令で数値を16進数として表示するプログラムを作成してください! お願いします〜
OUT命令... アセンブラでもやってんのか それとも System.out フィールドのことか 微妙だ
693 :
きょんちゃん :04/06/24 14:08
アセンブラです!CASLでっす! おねがいしますうう><
アセンブラは 8086 と 68000 しか知らん。 文字列出力は MS-DOS INT21 と PC98 の VRAM 直書きしか知らん。 手許の資料あさっても PC98 と AT互換機の BIOS、AT 互換機の VRAM 直書きしか分からん。 そもそもスレ違いの奴のことなど知らん。
695 :
デフォルトの名無しさん :04/06/24 15:14
問 テキストファイルから入力した50個の2桁の整数の合計と平均を求め、 別の名前でテキストファイルに出力せよ。 自分で以下のプログラムを作りましたがうまくいきません。 どうも、入力がうまくいってないようです。 テキストファイルのほうでは50個の整数を1個ずつ改行しながら入力しています。 また、入力をファイルからではなくコマンドライン引数からにする場合にはどうすればいいのでしょうか? よろしくお願いします〜
696 :
デフォルトの名無しさん :04/06/24 15:15
import java.io.*; class Test{ public static void main(String[] args){ try{ FileInputStream fis = new FileInputStream("Data.txt"); DataInputStream dis = new DataInputStream(fis); int g = 0; double h = 0; for(int i=0;i<50;i++){ int k = dis.readInt(); g += k; } h = (double)g/50; FileOutputStream fos = new FileOutputStream("Data2.txt"); DataOutputStream dos = new DataOutputStream(fos); dos.writeInt(g); dos.writeDouble(h); fis.close(); fos.close(); }catch(IOException e){ System.out.println("入出力エラーです。"); } } }
多分 DataInputStream の使い方が分かってない ファイルがテキストで入ってるなら、BufferedReader とか StringTokenizer とか使って読み込むんだよ ためしに、ファイルから入力せずに、ソース中に用意した数値を DataOutputStream で書き込んで、 結果ファイルをエディタで開いてごらん >また、入力をファイルからではなくコマンドライン引数からにする場合にはどうすればいいのでしょうか? コマンドラインから50個も指定するの?
分かりました、BufferedReaderで試してみます。 どうもありがとうございました。 コマンドラインは「ファイルをコマンドライン引数によって読み込む」の間違いでした・・・
699 :
デフォルトの名無しさん :04/06/24 16:43
何で20分も書き込み来てないのよ?
ax^2+bx+c=0の方程式を解くプログラム。a、b、cはコマンドラインパラメータで与える これ頼んます
簡単じゃねーか 数学的にできるところは自分でやってくれよ 頼むよボーイ
public class Q700 { public static void main(String[] args) { if (args.length == 3) { double a = Double.parseDouble(args[0]); double b = Double.parseDouble(args[1]); double c = Double.parseDouble(args[2]); double D = b*b - 4.0*a*c; if (D < 0.0) { double xr = -b/(2.0*a); double xi = Math.abs(Math.sqrt(-D)/(2.0*a)); System.out.println("解 : " + xr + "±" + xi + "i"); } else if (D == 0.0) { double x = -b/(2.0*a); System.out.println("重解 : " + x); } else { double x1 = (-b + Math.sqrt(D))/(2.0*a); double x2 = (-b - Math.sqrt(D))/(2.0*a); System.out.println("解1 : " + x1); System.out.println("解2 : " + x2); } } else { System.out.println("args : a b c"); } } } こんな簡単な問題はないよ。
Double.parseDouble(args[0]); これなに?
import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Q705 extends JApplet implements ActionListener { JTextField celsius; JTextField fahrenheit; public void init() { celsius = new JTextField("0", 15); fahrenheit = new JTextField("32", 15); celsius.addActionListener(this); fahrenheit.addActionListener(this); getContentPane().setLayout(new FlowLayout()); getContentPane().add(new JLabel("摂氏")); getContentPane().add(celsius); getContentPane().add(new JLabel("華氏")); getContentPane().add(fahrenheit); } public void actionPerformed(ActionEvent e) { if(e.getSource() == celsius) { fahrenheit.setText(String.valueOf(Double.parseDouble(celsius.getText())*9/5+32)); } else if(e.getSource() == fahrenheit) { celsius.setText(String.valueOf((Double.parseDouble(fahrenheit.getText())-32)*5/9)); } } } actionPerformedの所、分割した方がいいかも
707 :
デフォルトの名無しさん :04/06/26 03:08
アルゴリズムの考察なんですがいいですか? k<<nの条件で、n個の整数を要素とする1次元配列のXの中から、 要素の値の小さい順にk個までの要素を抽出するための効率のいいアルゴリズム。 kはnに比べて非常に小さいものとする。 すべてを昇順にソートするのではなく、必要なk個のデータを得る方法を考えよ。
>707 クイックソートのアルゴリズムをベースに改造してみると良いと思われ。
サーチベースなら、最悪でもnkで終わりそうなもんだが。。
STL(C++)のnth_elementの実装真似すれば?
712 :
デフォルトの名無しさん :04/06/26 22:31
>>707 ソートなんかする必要ないじゃん。
配列全体一回舐めれば終わりでしょ。
1.最大k個の値をしまっておくプールYを準備する。プールYは値の順序 でならぶリストで実装 2.配列Xを先頭から順にチェック ・Yにプーリングされている値がk個以下ならYに追加 ・Yにプーリングされている値がk個以上で、Yが持つ最大の値(Y内部の リストの最後尾の値)より小さい値であった場合、Yが持つ最大の値を削 除してからYに追加 ・上記以外の場合は無視 でn回チェックで終了でしょ。
714 :
デフォルトの名無しさん :04/06/27 00:46
GUI関係ですが、ここの方ならサクっと出来ると思うので質問させて下さい。 宿題でテトリスを作らなければなりません。 GUIにはSwingを使用とのこと。 で、まずは画面にブロックが落ちてくる(JFrameの中を四角形が動く) プログラムから作ろうと思ったのですが、 どうやったら「動かせる図形」を描画できるのか判りません。 public void paint(Graphics g) { として、 drawRectとかを使おうと思ったのですが、 これだと最初に描画したらそのままで動かせません。 どうしたらいいでしょうか。 一応スレッドの使い方は勉強しました。
今はJButtonを敷き詰めて setBackgroundColorを変えることによるブロックが落ちるのを見せてます・・ それだとあまりにもダサイです。
>>714 1.paint()内部で、インスタンス変数を元に描画位置を決めてドロー
するように実装する。
2.シーンの進行とともにインスタンス変数を変更する。
でいいじゃん。
>>716 あまりに焦っていてインスタンス変数の事を考えてませんでした。
恥ずかしい・・・
ありがとうございます。
>>717 わざわざGUIのソースまで書いてもらってすいません。
大変参考になります。
宿題はもちろん丸パクリではなく、参考にさせて頂いて作ります。
ありがとうございました。
719 :
Name_Not_Found :04/06/27 04:34
>>719 一緒に頑張ろうぜ
今 日 の 23:59 ま で な !
YOSHI! おかげさまでテトリスというか、 テトリスのブロックがランダムで出て落下するものは出来ました。 回転、横移動も出来ました。 これも皆様のおかげです ありがとうございました。
聞き逃げのようですいませんが、 一応学校に提出するものなので 作ったソースをここに晒すことはできません。 予めご了承下さい。
オレはまだ何もできてないぜ! OTL
714さんは2年の方ですか? 私は2年ですが、いきなりこんな課題出されても・・って感じです。 とりあえず教科書読んで勉強してます。
725 :
デフォルトの名無しさん :04/06/27 12:18
>>714 >ここの方ならサクっと出来ると思うので質問させて下さい。
俺らが楽に出来るかどうかなんて関係ねーんだよボケが。
簡単に出来るんだったら何でも無条件にやってもらえるつもりになってんじゃねーよ。死ね。
ぐえー(絶命)
オレに
>>714 の条件で作るテトリスを何からどう始めればいいのか一から教えてくれ
>727 「サクっと出来るので」という所に「チャッチャッとやってくれよな」なニュアンスを感じたんだと思う
>>728 とりあえず、717を解読することからはじめたら?
>>724 2年て何の2年?小学2年? 俺は中学2年でテトリス作れたよ
文句言うなら、適当な状態で進級させられたことに文句を言いませウ
高いレベルを要求されたら、現時点ではそれが必要なんだからしょうがない
よその学校のあんぽんたん授業で
あんぽんたんが同じ学位取ること考えたら腹立つだろうけどね
732 :
デフォルトの名無しさん :04/06/27 14:22
自分も中2ですが、テトリスなんてすごいですね。 テトリスに比べれば簡単な宿題ですが、 int[][] comb(int[] arg,int m) という関数を作る宿題です。 この関数は 自然数が配列で与えられます。 例えば[1,3,7,5] この中からm個を選んでくる組合せを列挙するプログラムです。 m=2なら [1,3][1,7][1,5][3,7][3,5][7,5] です。 試行錯誤を繰り返しているのですが、どうもできません。 よろしくお願いします。 mが固定していれば簡単ですよね・・・
>>732 多重のforを動的にどう表現するかって問題ね。
面白そうだから、俺もちょっと考えてみよう。
734 :
デフォルトの名無しさん :04/06/27 14:25
よろしくお願いします。
1.arg.length*(arg.length-1) * ... * (arg.length-m-1)の値を求める //これを仮にlistLenとする 2.要素数m個の配列をlistLen分用意する //int[listLen][m] 3.listに再帰を用いて値を入れる 1と3はそれぞれ再帰関数を作れば出来るかと。
arg.length-m-1 は arg.length-m でよかった。これはミス。
GMT(グリニッジ標準時)からの時差を求めたいんですが、どのクラスを 使えばいいんでしょうか?そもそもその既存のクラスはあるのでしょうか。
738 :
デフォルトの名無しさん :04/06/27 14:45
(XX; 友達は5分くらいで作ってしまったのですが、 その横で私は1時間悩み、家に帰ってから3時間考えたのですが わかりませんでした。 それくらい、私は馬鹿なので・・・ 再帰ってなんでしょうか? 無知ですいません。
俺もいっそ再帰で書いた方が楽だと思う
>>732 が習ってるかどうかによるが。
それと、引数の配列内には重複はない前提でいいのかな?
740 :
デフォルトの名無しさん :04/06/27 14:47
>>732 とりあえず、mが1の場合くらい自分で作ってみ。
>>737 JavaAPIリファレンスでぐぐってみよう
結構簡単に見つかりますよ
743 :
デフォルトの名無しさん :04/06/27 14:49
>>739 comb([5,5,5],2)
であれば
[[5,5][5,5][5,5]]
です。
再帰?????
744 :
デフォルトの名無しさん :04/06/27 14:49
あ、かぶった。
5分で考えたならそれは再帰だと思うがなあ。
メソッド内でそのメソッド自身を、引数を変えて呼ぶってのを習わなかった?
>>737 日本の時間なら常に 9時間、と決まってるわけだが。
>>740 の挙げてる、実行マシンの設定に対して、ということでいいの?
あ、失礼・・それは作ってるのか。でも規則性とかあるやん・・
747 :
デフォルトの名無しさん :04/06/27 14:53
>>746 たぶん、君にはできないw
一応、再帰を使ったものはできたけど。
再帰を使わないでできた人いる?
中2の宿題にしては難しいな。
748 :
デフォルトの名無しさん :04/06/27 14:55
>>745 >メソッド内でそのメソッド自身を、引数を変えて呼ぶってのを習わなかった?
習ったような習ってないような・・・
コンピューター実習の時間にゲームやってたりするので、
聞き逃したかもしれません。
ちょっとプリントを見直してみます。
進学校なのかどうかは知らんが、それではおいてかれるぞw
てか今時は1や2は省略してListとか使うよな 俺なんでJavaスレにいるんだろうw
751 :
デフォルトの名無しさん :04/06/27 15:04
プリントに載ってました。
再帰を使えばできるんですか。
ちょっと考えてきます。
>>749 はい、既においてかれました。
日本で一番の進学校ですが、東大には入れないと思いますので
慶応か早稲田にしようかと思ってます。
まあ、まだ先の話ですが。
みょうなやりとりなんで、ちょっと笑った。
でも組み合わせかあ。 {5, 5, 5}, m=2なら{5, 5}, {5, 5}になりそうな気がするけどな。 上の例では、 {1, 3, 5, 7}, m=2で、 {1, 3}, {1, 5}, {1, 7}, {3, 1}, {3, 5}, {3, 7}……とはやってないんだから。
重複有りなの?何か問題としての意味がなさそうな・・・。
>>753 冷静にどうぞ。添え字の組合せだけと思われる。
すなわち {0, 1}, {0, 2}, {1, 2} の 3通り。
再帰考えないでやってみようと思ったけど、クソ汚くてだめだ。
結局、スタックを自前で用意するか、それと同等の処理をすることになるからな。
import java.util.Arrays; public class Q731 { public static void main(String[] args) { int[] arg = { 12, 1, 3, 5, 4 }; int m = 4; int[][] result = comb(arg, m); for (int i=0; i<result.length; i++) { System.out.print("["); for (int j=0; j<result[i].length; j++) { System.out.print(result[i][j]); if (j < result[i].length-1) { System.out.print(","); } } System.out.println("]"); } }
public static int[][] comb(int[] arg, int m) { int listLen = 1, r = 1; for (int i=0; i<m; i++) { listLen *= arg.length - i; r *= (i+1); } listLen /= r; int[][] result = new int[listLen][]; int[] lastselectedindex = new int[m]; { int s = 1; for (int k=1; k<lastselectedindex.length; k++) { lastselectedindex[k] = s; s++; } }
for (int i=0; i<result.length; i++) { result[i] = new int[m]; for (int j=0; j<result[i].length; j++) { result[i][j] = arg[lastselectedindex[j]]; } //添え字の更新 int targetj = lastselectedindex.length-1; while (0 <= targetj) { lastselectedindex[targetj]++; if (lastselectedindex[targetj] + (lastselectedindex.length - targetj - 1) >= arg.length) { targetj--; } else { int s = lastselectedindex[targetj] + 1; for (int k=targetj+1; k<lastselectedindex.length; k++) { lastselectedindex[k] = s; s++; } break; } } } return result; } } クソ汚い。人間が手書きでやるときと同じような方法。 同じ再帰なしでも、もう少しマシな方法がありそうだ。
n 個の配列から k 個選ぶ組み合わせを列挙するアルゴリズムとしては、 「M. Beeler, R.W.Gosper, and R.Schroeppelの解法」 というのが奥村晴彦 の「C言語によるアルゴリズム辞典」に載ってる。 このアルゴリズムは、整数型の各ビットパターンを順に、各配列要素に対応したbool値とみなして、 順次ビットパターンを生成するというもの。 あるパターンの次のパターンは、かなり技巧的な整数演算で作り出している。 unsigned int next(unsigned int x){ unsigned int smallest, ripple, new_smallest, ones; smalllest = x & -x; ripple = smallest & -smallest; new _smallest = ripple & -ripple; ones = ((new_smallest / smallest) >> 1) -1; return ripple | ones; } これをそのままJavaでやってもできるけど、制限として、intのピットサイズが、処理可能な配列要素数の 上限となる。long なら上限は増えるが、根本的な解決にはならない。 あるいはこれのアレンジで、任意サイズの配列に対応したものもできなくはないが、メンドクセ。
>>756 の import 要らねーや。
以下は再帰の例。main は同じ。これは import java.util.*; 要る。
public static int[][] comb(int[] arg, int m) {
int[] array = new int[m];
List list = new ArrayList();
saiki(list, arg, 0, array, 0);
int[][] result = new int[list.size()][];
int i = 0;
for (Iterator it=list.iterator(); it.hasNext(); ) {
result[i] = (int[])it.next();
i++;
}
return result;
}
public static void saiki(List list, int[] arg, int offset, int[] array, int j) {
for (int i=offset; i<arg.length; i++) {
array[j] = arg[i];
if (j == array.length-1) {
list.add((int[])array.clone());
} else {
saiki(list, arg, i+1, array, j+1);
}
}
}
配列ばかりで美しくないけど、こんなもんでしょう。
>>759 なんか似たようなのを見たことあるな。
そういうの考えつく人ってのはえらいなぁ。
中学でJAVAやるの?
今は情報という教科でやるんだっけか?
763 :
デフォルトの名無しさん :04/06/27 19:17
なるほど、ビット演算で簡単に出来そうだね。ちょっと考えてみる。
なかなかの英才教育だな。 でも情報工学ばっかりやってられないだろうから、 基礎が抜けて、結局技術者的にはカタワな育ち方すると思う。 大学あたりでのオプション能力としてしか役に立つまい。 それだってやらないよりはマシだけどね。
中学でやる内容なのか? 受験とは違う学校独自の授業? しかし中学でJavaか・・・ 実はなんちゃって中学生? 俺の中学時代は勉強よりも部活に燃えてたな・・・
正直、テトリスより難しい。
正直、お前等が輝いて見えすぎです。
ぷよぷよよりは簡単だな。
こういう課題は燃えるな・・・。 純粋にアルゴリズムの問題。 知識あり(ほとんど定型だから、探せばいくらも既存のあり)、 工夫あり(自分で制限つけてやるもよし)、 楽しい。
「工夫」の線で、木を作ってやってみようかと思ったが、冗長にもほどがあった。 どうも俺はそのへんを図る能力にかけているらしい。
int[]を要素にするArrayListができるハズ。 import java.util.*; public class BitTest { public static void main(String[] args) { ArrayList l = getSubValueList(new int[]{0,1,2,3,4,5,6,7,8,9},3); } public static ArrayList getSubValueList(int[] values,int k){ ArrayList l = new ArrayList(); double n = Math.pow(2,values.length); for(long i = 0;i < n ; i++){ if(bitcount(i) == k){l.add(getSubArray(values,k,i));} } return l; } public static int bitcount(long value){ int count = 0; for(long bit = 1;bit < value ;bit = bit << 1){ if((value & bit) == bit)count++; } return count; } public static int[] getSubArray(int[] target,int size,long bitset){ int[] ret = new int[size]; long bit = 1; for(int i = 0,n=0;n < ret.length ;bit = bit << 1,i++){ if((bitset & bit) == bit){ret[n]=target[i];n++;} } return ret; } }
TRUE/FALSEを要素に持つ可変長リストと、次のリストの状態を導出するメソッド があれば、可変長の処理できそうだね。
ごめんなさい、式が間違っていました。一応正しいのかいておきます。 unsigned int next(unsigned int x){ unsigned int smallest, ripple, new_smallest, ones; smalllest = x & -x; ripple = x + smallest; new _smallest = ripple & -ripple; ones = ((new_smallest / smallest) >> 1) -1; return ripple | ones; }
うげ、まだちがってる。訂正。 ×new _smallest ○new_smallest スマソ
皆様、ありがとうございます。 再帰がどうもわからなくて、ここの模範解答を見ながらやりましたら ようやくできました。 更に3時間かかりました。 面白いという反応があったので 夏休み用の宿題があるんですが、ここに載せましょうか? まだ私は見ていないのですが・・・
>>775 キ ボ ン ヌ
さあ、大学2年の漏れに解けるかどうかッ!
夏休み用の宿題?今ナツヤスミなのか、ヘェー。
夏休みの自由課題は Point[] maze(int[][] map) です。 class Point{ public int x,y; public Point(int x,int y){ this.x=x;this.y=y; } public String toString(){ return "["+x+","+y+]"; } } 引数mapは2次元配列で壁だったら1で、通路だったら0です。 maze関数は最短経路を返します。 迷路を作るGUIのプログラムが配られるみたいですが、 まだホームページからダウンロードできません。
少なくともここで解答が発表されるのは8/31だな いや深い意味は無いがw
>>778 それって上の組み合わせの問題より簡単じゃないか?
こうやって見ると、やっぱりプログラミングってターノスィーネ〜。
そうですか? 私にはさっぱりなんですが。 最短経路ってどうやって求めるんですか? x^2+y^2=z^2 みたいなのを計算する?
>>783 プログラムでやるんだから、手当たり次第という方法が使えるノデス。
仕事でやるJSP/サーブレットでデータを右に左に移すだけのソースを書くより よっぽど頭を使うというところが、なんだか情けなくなってきた…orz
単純に入り口探して、出口探して、x-1〜+1とy-1〜+1とマッピングしながら進めばいいのでは? こんなアナログな解決法だと笑われちまうかなw
すいません、書き忘れましたが スタートは左上[0,0]でゴールは右下[n,m]です。
いくつも候補をリスト化して、壁にぶち当たったら次の候補へ あとは「輪状に繋がっている場所に踏み込むとあぼんする」からここはもう来たといマッピングも必要かな。
1.迷路→通行可能な経路によるツリー構造に変換 2.ゴールにたどり着く経路だけを取り出して、その中で一番短い経路を返却 ってとこかな。ココにコード書こうとすると1レスじゃすまないな。
循環サラリーマン問題ってやつ?違う?
ダイキストラタンをもっとリスペクトしる!
793 :
デフォルトの名無しさん :04/06/28 00:52
中2の宿題の割には難しいな。 これができない本職プログラマーは多いだろう。 7割くらいができないとみた。
結局テトリスは未提出になったオレ 再履修確定
>>795 赤の他人に恨み節ですか。痛いですねあんた。
おいおい被害妄想もいいとこだ
本当に中2だと信じているやつはいるのか?
799 :
デフォルトの名無しさん :04/06/28 09:51
中2の宿題ができない人だ
>>793 できない奴は本職といっちゃいけない
タクシーで言えば白タクみたいなもの
>>778 の課題は、まだ解答載せないほうがいいのか?
802 :
デフォルトの名無しさん :04/06/28 17:43
>>801 どっちでもいいような。
ググレばそこら辺に似たようなのはいっぱいあるけど。
ダイクストラで60行くらい。 なんで java.awt.Point 使わせないのかね。equals 使えてちょっぴり楽なんだけどな。
じゃあいいか(T△T) ソース汚いし。。 検索部分だけなら再帰で10数行だしな
変数 i のとなりに j 追加 i の for の一段中に for(j=i+1; j<numPoints; j++) {} 追加 theta2 = Math.PI*2*j/numPoints; に変更 以上
import java.io.*; import java.text.SimpleDateFormat; import java.util.Calendar; public class Q676 { public static void main(String[] args) throws IOException { int y, m, d; Calendar c = Calendar.getInstance(); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.println("あなたは西暦何年生まれですか?"); y = Integer.parseInt(in.readLine()); for (;;) { System.out.println("何月ですか?"); m = Integer.parseInt(in.readLine()); if (m >= 1 && m <= 12) break; System.out.print("ありえません。"); } for (;;) { System.out.println("何日ですか?"); d = Integer.parseInt(in.readLine()); c.set(y, m - 1, d); if (c.get(Calendar.DAY_OF_MONTH) == d) break; System.out.print("ありえません。"); } SimpleDateFormat sdf = new SimpleDateFormat("あなたはEEEE生まれです。"); System.out.println(sdf.format(c.getTime())); } } 適当です、あまり動作チェックしてません。
くそっタッチの差だった・・・・
811さんのも気になるぞ〜
ほとんど同じ。最後だけこう String wdnames = "日月火水木金土"; int w = tmp.get(Calendar.DAY_OF_WEEK); System.out.println("「あなたは" + wdnames.charAt(w) + "曜日生まれです。」"); ところで、「うるう年」がどうしたこうした言ってるってことは、 たぶん Calendar クラスの利用は想定してないってことだ(Calendar 使えば全部やってくれるから)。 365 * y + (y/4) だのなんだのかんだのして %7 してとか、 本当はそんなことをしなきゃならないと思う。 誰かやって。
Zellar(?)の公式を使うとか(Calendar使うのとあまり変わらん気がするが) まぁ、それは他の人にやってもらうとして…名無しに戻ります。
>>815 ひょっとしてこれはギャグで言ってるのか?
てか先生のギャグか?
俺が始めてふぃぼなっちなる単語を聞いたのは、大学2年のときだったよ・・・
818 :
デフォルトの名無しさん :04/06/30 03:57
n以下の素数を全て見つけ出し、画面上に表示する というプログラムを教えてください・・・・ どうか、お願いします・・・
100 以下の素数を求めるやつがすでにある。 第一段階で10までもとめてるが、かわりにsqrt(n) をカバーすればいいはずだ
素数は
>>373-374 ね。
100 だの 101 だの 10 を、n だの n + 1 だの (int)Math.sqrt(n) だのに変えればいい。
>>818 ほとんど答え書いてあるじゃない。
「階乗を求めるプログラム」ちょこっと変えればできるよ。
アドバイスありがとうございます 参考にして頑張ってみたいと思います
エルトン・ジョンのふるいでも書いて提出すれば先生に一目置かれるぞ 「イヤミや奴」と。
今度自由研究で簡単なゲームを作ることになって、 音ゲーを作ろうと思ってるんですが全然手が出ません。 誰か簡単でいいので作ってくれませんか?
出来そうな物を作ろうと思えよ。 自由課題で全然手が出ないものを作ろうと思う神経が理解できない。
俺も理解できない。 自分ができる最大限のことをやるのが自由研究じゃないの? 最低合格ラインはこのくらいです、って提示されたら作ってやらないでもないけど。 GUI ありじゃめんどくさくてどうかね。
830 :
デフォルトの名無しさん :04/07/01 22:20
public class Gensui { public static void main(String[]args) { for(double t = 0; t < 5; t = t + 0.5) { double m, c, k, a, v, x; m = 1;//質量m c = 0.1;//粘性係数c k = 1;//バネ係数k a = 0;//加速度 a v = 1;//速度 v x = 0;//距離 x a = - ( k * x + c * v ) / m; v = v + a * t; x = x + v * t; System.out.println("加速度a=" + a); System.out.println("速度v=" + v); System.out.println("距離x=" + x); } } } aの値にvとxが反映されません(つAT) どうすりゃいいのか教えてプリーズorz
831 :
デフォルトの名無しさん :04/07/01 22:24
本日の宿題: 時:分:秒を表示する時計
a = -1 * ( k * x + c * v ) / m;
都会の人はうそつきだorz
834 :
デフォルトの名無しさん :04/07/01 22:48
Javaは知らんのだが double型は小数を扱えるのか?
>>831 import java.awt.*;
import java.awt.event.*;
import java.text.*;
import java.util.*;
public class Tokei extends Frame {
String formatStr = "HH時:mm分:ss秒";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(formatStr);
Date date = new Date();
Label display = new Label(simpleDateFormat.format(date));
public static void main(String[] args){
new Tokei();
}
Tokei(){
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){System.exit(0);};
});
java.util.Timer timer = new java.util.Timer();
timer.schedule(new Task(), 0, 500);
add(display);
pack();
setVisible(true);
}
class Task extends java.util.TimerTask {
public void run(){
display.setText(simpleDateFormat.format(new Date()));
}
}
}
> Date date = new Date(); これいらなかった。消しといて。
あ、いるか。ごめん。すれ汚しスマソ。
>>830 ただ書いただけではプログラミングはできないよ。どう動くか分析しないと。
ちなみに物理は苦手なのでこれであってるかどうかは分からん
public class Gensui
{
public static void main(String[]args)
{
double m, c, k, a, v, x;
m = 1;//質量m
c = 0.1;//粘性係数c
k = 1;//バネ係数k
a = 0;//加速度 a
v = 1;//速度 v
x = 0;//距離 x
for(double t = 0; t < 5; t = t + 0.5)
{
a = - ( k * x + c * v ) / m;
v = v + a * t;
x = x + v * t;
System.out.println("加速度a=" + a);
System.out.println("速度v=" + v);
System.out.println("距離x=" + x);
}
}
}
for の中に変数の初期設定が入ってるから、まったく同じ計算だけ繰り返してた
円周率を求めるプログラムがわからないです。 どなたか教えてください。
7/21(最終授業日) 試験: 最終課題の提出者には順次メールで成績を通知する(〜7/16)。最終課題が提出できない者は試験(テキスト持込可)にて成績決定。通知した成績に不満の人は試験を受けられたい(成績は試験の結果のみにより評価、不合格もあり得る)。 -------------------------------------------------------------------------------- 7/7,7/14 実習: 3Dアプレットを創作しよう! (複数の立体をソリッドモデルで表現、陰影、相貫体なども可) [課題:] ( 参考 ) 3次元ビュー変換による図形の表現 (提出期限:7/14、PM7:00)。 これができないと、単位を落としてしまいます。お願いできませんか?
>最終課題が提出できない者は試験(テキスト持込可)にて成績決定。
って書いてあるだろうが。観念して試験をうけろ。
>>1 も読め。
>ただGUIかんけーはめんどクセーから、放置するぞ!
「このくらいちょちょいとできる奴には試験の必要ないな。デキル奴は楽しくやってくれ」 という意味の課題だろ。それを人にやってもらって提出なんて、分不相応もいいとこ。
そこのサンプルいいよね。 知識に乏しかったから、陰影の奴かなりびびった。 でも説明読むとかなり簡単なことを知って、さらに驚いた。
陰影じゃなくて「手書き風」だった。 センスなんだなぁやっぱり。
簡易エディタ付で10万の案件だな 格安だろ
>>842 すいません。授業も教科書もサッパリで、「作れ」って言われても何もできないんです。
一般教養の授業なんですが、必要な単位なんです。
ですので真剣に取り組んだのですが、本当にさっぱりなんです。
教科書に書いてあることをどう組み合わせるの?という感じです。
>>844 ありがとうございます。参考にさせていただきます。
658〜660までに書かれているプログラムをもう少し簡単に(初心者でも理解できそうな感じ)に書き直せないでしょうか? わがまま言って申し訳ありませんが、どなたかよろしくお願いします。
じゃぁ精度はどうでもいいわけ? つか、何を使って解けとか、前提条件がないとしんどいと思うんだけど。 マクローリン展開自体は初心者かどうかなんて関係なくて、 数学の知識や理解力があるかによるものだし。
public class Pai { public static void main(String[] args) { int scale_org = 30; int scale = scale_org + 5; int a = 5; int b = 239; double arc_inv_a = arctanInverseX( a, scale ); double arc_inv_b = arctanInverseX( b, scale ); double pi = (arc_inv_a*4.0 - arc_inv_b)*4.0; System.out.println(pi); } private static int getMaxN(int base, int scale ) { int i = (int)(scale/Math.log(base) * Math.log(10))+1; if ( i % 2 != 0 ) { i++; } return (i-1)/2; }
private static double arctanInverseX(int x_org, int scale) { double res = 0.0; double one = 1.0; int x = x_org; boolean sign = false; int max_n = getMaxN(x_org, scale); for (int i=0; i<max_n; i++) { double val = Math.pow(x, 2*i+1); val = 1.0/val; val /= 2*i + 1; if (sign) { val = -val; } res = res += val; sign = !sign; } return res; } } これ以上はまぁ無理だな。
853 :
デフォルトの名無しさん :04/07/04 19:08
すいません、教えて下さい!! @ キーボードから、年(西暦)と月を整数で入力すると、 その月のカレンダーを表示するプログラムを作成せよ。 閏年は、 1:西暦の年号が4で割り切れる年は閏年とする 2:4で割り切れる年でも、100で割り切れる年は平年とする 3:100で割り切れる年でも、400で割り切れる年は閏年とする 西暦1年の1月は月曜日から始まる。
854 :
デフォルトの名無しさん :04/07/04 19:11
A 自動販売機をシミュレート(模擬)するクラスVendingMachineを 作成しなさい。 お金を入れて、商品を排出する自動販売機をシミュレートする。 シミュレートする機能は、お金の投入、商品の選択、商品とおつりの排出。 また、管理機能として、商品の在庫、自動販売機内の現金が確認できるようにする。 扱う商品は、ジュース(110円)、お茶(150円)、ビール(250円)の三種類。 最初は各商品が10個ずつ入っている。 扱う硬貨は、500円玉、100円玉、10円玉の三種類(50円玉を入れてもよいが、 おつりの計算が少し複雑になる)。最初は、100円玉10枚と、10円玉30枚がおつ りのために、入っている。つまり、自販機の中の現金は1300円から始まる。 VendingMachinのクラスは極力ブラックボックス化する。 1:まず、「いらっしゃいませ」と表示する。 2:メニューを表示し、お金を入れてもらう。 3:商品が選択されたら、商品とおつりを排出し、自販機の中の状態を更新する。
855 :
デフォルトの名無しさん :04/07/04 19:12
Aの続きです import java.io.*; class kadai11 { public static void main(String[] args)n { VendingMachine vm=new VendingMachine(); for(;;) { vm.interact(); } } } class VendingMachine { //ここに埋める
>>853 それ俺なら問題文にCalendarクラス使うなって制限つけるな。
class IntStack { private int val; private IntStack next; public IntStack() { this(0, null); } private IntStack(int val, IntStack next) { this.val = val; this.next = next; } public boolean isEmpty() { return next == null; } public void push(int n) { IntStack p = new IntStack(val, next); val =n; next = p; }
public int pop() { if (isEmpty()) { System.out.println("Error: stack is empty."); System.exit(1); } int result = val; val = next.val; next = next.next; return result; } public String toString() { return "[" + toString(0) + "]"; } private String toString(int n) { if (isEmpty()) { return ""; } else if (n == 0) { return val + next.toString(1); } else { return "," + val + next.toString(1); } } }
継承に関する問題です。 1)IntStack をスーパークラスとして,次のメソッドを追加したクラス NthStack を定義せよ. public int nth(int index) 機能:スタックの上から index 番目(一番上は 0 番目とする)の値を返す.index 番目の値が存在しない場合は,プログラムを強制終了する. 返却値:スタックの上から index 番目の値. 2)Intstackの実装方法を配列を用いたものに変更せよ. それにともなって,NthStackの定義を変更する必要があるだろうか? 変更する必要があるのならば,NthStackの定義を変更せよ.
もう一個お願いします。 class IntStack2 { protected int val; protected IntStack2 next; // 後は,IntStackクラスと同様なので省略. } 1)IntStack2 をスーパークラスとして,次のメソッドを追加したクラス NthStack2 を定義せよ. public int nth(int index) 機能:スタックの上から index 番目(一番上は 0 番目とする)の値を返す. index 番目の値が存在しない場合は,プログラムを強制終了する. 返却値:スタックの上から index 番目の値
2)Intstack2の実装方法を配列を用いたものに変更せよ. それにともなって,NthStack2の定義を変更する必要があるだろうか? 変更する必要があるのならば,NthStack2の定義を変更せよ. 以上のを誰かお願いします。
>>857 その問題の作者に、お前は馬鹿かといってやれ。
確かに。
特に
>>861 の設問は頭おかしい。
全体的に、バカがバカを産む最悪の設問だ。
1) 再帰型
public int nth(int index) {
if (index == 0) {
return val;
} else if ((index > 0) && (next != null)) {
return next.nth(index-1);
} else {
System.exit(-1); //ふつー例外だろ
}
}
1) while 型
public int nth(int index) {
IntStack tmp = this;
while ((tmp != null) && (index >= 0)) {
if (index == 0) {
return tmp.val;
} else {
index--;
tmp = tmp.next;
}
}
System.exit(-1); //ふつー例外だろ
}
class IntStack { private static final int UNIT = 100; private int[] array; private int size; public IntStack() { array = new int[UNIT]; size = 0; } public boolean isEmpty() { return (size == 0); } public void push(int n) { if (size == array.length) { //初心者向けに、原始的方法でのコピーにしておく int[] array2 = new int[size+UNIT]; for (int i=0; i<size; i++) { array2[i] = array[0]; } array = array2; } array[size] = n; size++; } public int pop() { if (isEmpty()) { System.out.println("Error: stack is empty."); System.exit(1); //ふつー例外だろうが } size--; return array[size]; }
public String toString() {
String line = "";
for (int i=0; i<size; i++) {
if (i == 0) {
line += array[i];
} else {
line += "," + array[i];
}
}
return "[" + line + "]";
}
//不要。実装せんでいい
//private String toString(int n) {
//}
}
2) はここまで。UNIT の宣言消して、
各メソッドで UNIT になってるとこ 100 にでもしとけばなお初心者的。
>>860 は、フィールドも IntStack2 になっちまってるから、
コンストラクタから何から全部書き換えなきゃならない。ちょっと待ってて。
>>861 はもう、やることは同じ。
あー問題読み間違ってるかな。ちょっとなしなし今のなし。ごめそ。
こうだね。
>>863 は嘘。
class NthStack extends IntStack {
public int nth(int index) {
if (index < 0) {
//あと exit 後は return つけなきゃだめなんだねそりゃそうだ
System.exit(-1);
return -1;
} else {
//フィールドは private なので
>>863 みたいなことはできない
int tmp = pop();
int result;
if (index != 0) {
result = nth(index-1);
} else {
result = tmp;
}
push(tmp);
return result;
}
}
}
>>865 の if のところは
if (i == 0) {
line += array[i];
} else {
line = array[i] + "," + line;
}
こう替えて。また、NthStack の実装方法変更の必要はなさそうだ。
IntStack2 のフィールドは private じゃないので、
>>863 の方法「も」使える。
class NthStack2 extends IntStack2 {
public int nth(int index) {
IntStack2 tmp = this;
while ((tmp != null) && (index >= 0)) {
if (index == 0) {
return tmp.val;
} else {
index--;
tmp = tmp.next;
}
}
System.exit(-1); //ふつー例外だろ
return -1;
}
}
ただしこれをやると、実装が配列になったとき困るので、
結局はじめから
>>867 と同じ実装にした方がいいのではないか。
問題としてこういうのはどうだろう。
あんまり検証してない。まだ勘違いしてるかも。
へんなとことかエレガントな方法があったら、諸兄らにお願いしたい。
各要素に対するアクセス速度が配列と同等で, 末尾に対する挿入と削除が(多くの場合)一定の時間で行われるようなデータ構造 (MyVector というクラス名にする)を定義せよ. ただし,このクラスは,次のメソッドを持ち,更に,Object クラスで定義されたメソッドのうち, equals メソッド,hashCode メソッド,及び toString メソッドを書き換えること. public MyVector() 意味:ある定められた容量(たとえば10)の MyVector オブジェクトを生成するコンストラクタ. public MyVector(int capacity) 意味:capacity で指定された容量の MyVector オブジェクトを生成するコンストラクタ. public void add(Object obj) 末尾に新しい要素(obj)を追加する.容量が足りない場合は,容量を増やす(例えば,2倍にする). public Object delete() 末尾の要素を削除し,削除した要素を返却値として返す. public void set(int index, Object obj) index 番目の要素(先頭は0番目)に,objを代入する. pubic get(int index) index 番目の要素を返す. public int size() 現在の要素数を返す. public int capacity() 現在の容量を返す. MyVectorクラスは,配列を使ったスタックのような形で定義すれば良い.ただし要素が満杯になったら, より大きい配列を生成し,現在格納しているデータは,新しい配列に移すことが必要になる. この処理は(要素数が多くなると)かなり時間がかかるので,配列の大きさを2倍にしていくのが良いだろう.
857のと同じ問題作成者の課題です。 equals メソッド,hashCode メソッド,及び toString メソッドを書き換えることについて。 public int hashCode() { if (isEmpty()) { return 0; // 空の場合は0を返す. } else { return stack.obj.hashCode(); // 先頭要素のhashCode() } } public boolean equals(Object obj) equals メソッドは,二つのオブジェクトが「等しい」かどうかを判断し, 等しければ true を,そうでなければ false を返す.例えば, 二つの文字列オブジェクトが等しいかどうか調べるには,次のようにすればよい. String a, b; ... if (a.equals(b)) { ... } こういう感じでつくれということなのでしょうが・・・正直よくわかりません。 お願いします。
871 :
デフォルトの名無しさん :04/07/05 17:17
中学生の僕にはわかりません!誰かお願いします! 任意の人数分の点数を入力させて昇順に並べかえ、 合計、平均(小数点第一位)、レンジ(最大値−最小値)、中央値 をそれぞれ出力する。以下のコーディングを参考にするらしい import java.io.*; class sort{ public static void main(String args[]) throws IOException { System.out.println("受験者数を入力してください"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); int num = Integer.parseInt(str); int tbl[] = new int[num]; System.out.println(tbl.length + "人の点数を入力してください"); for(int i=0; i<tbl.length; i++){ str = br.readLine(); tbl[i] = Integer.parseInt(str); } for(int n=num-1; n>0; n--){ for(int i=0; i<n; i++){ if(tbl[i] > tbl[i+1]){ int save = tbl[i]; tbl[i] = tbl[i+1]; tbl[i+1] = save; }}} for(int i=0; i<tbl.length; i++){ System.out.println((i+1) + "番目の人の点数は" + tbl[i] + "です"); }}}
873 :
デフォルトの名無しさん :04/07/05 21:12
木の探索をするプログラムを作るのですが、 根のみが走査されて子をいっさい走査してくれない状態です。 ndが木で、nd.infoが木の内容でそれをtargetと比べるようにしたつもりです。 が、実際は根以外は発見されてもtrueを返してくれない状態です。 static boolean find(Node nd, char target){ boolean result = false; if (nd != null) { if (nd.info == target) { System.out.println(nd.info + " " + "発見しました"); result = true; } find(nd.l,target); if (nd.info == target) { System.out.println(nd.info + " " + "発見しました"); result = true; } find(nd.r,target); if (nd.info == target) { System.out.println(nd.info + " " + "発見しました"); result = true; } if (nd.info != target) { System.out.println(target + "は発見できませんでした"); result = false; } } return result; }
これでいいのかな〜 static boolean find(Node nd, char target){ boolean result = false; if (nd != null) { if (nd.info == target) { System.out.println(nd.info + " " + "発見しました"); result = true; } else { System.out.println(target + "は発見できませんでした"); } return find(nd.l,target) | find(nd.r,target) | result; } System.out.println(target + "は発見できませんでした"); return false; }
>>838 ほんとたすかりました。どうもありがd(*´ωV)
答えが合わないのはなんとかします。どもでした。
>>874 ありがとうございます。
プログラムのほうきちんと動作しました。
ひとつ質問なのですが、
return find(nd.l,target) | find(nd.r,target) | result;
はどういった文の書き方なのでしょうか?
returnとしてこのような書き方は初めて見ましたので、
どのような働きをさせるのか教えていただけると嬉しいです。
>>876 論理和
一つ以上trueならtrue、全てfalseならfalseを返す。
return find(nd.l,target) | find(nd.r,target) | result;
はfind(nd.l,target)かfind(nd.r,target)どちらかが真であればtrueをresultに返すという解釈でいいのでしょうか。
>>877 ありがとうございます。
これをもっと簡単な文法へ書き直すことはできるのでしょうか…?
>>878 boolean bFindL = find(nd.l,target);
boolean bFindR = find(nd.r,target);
return (bFindL | bFinfR | result);
>>879 ありがとうございます。
参考にさせていただいて課題を進めていきます。
教えてくださった方、本当にありがとうございました。
>>871 import java.io.*;
import java.util.*;
import java.text.*;
class sort{
public static void main(String args[]) throws IOException{
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(1);
nf.setMaximumFractionDigits(1);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("受験者数を入力してください");
int num = Integer.parseInt(br.readLine());
int tbl[] = new int[num];
System.out.println(num + "人の点数を入力してください");
int sum=0;
for(int i=0;i<num; i++){
tbl[i] = Integer.parseInt(br.readLine());
sum+=tbl[i];
}
Arrays.sort(tbl);
System.out.println("sum:"+sum);
System.out.println("ave:"+nf.format((double)sum/(double)num));
System.out.println("max:"+tbl[num-1]);
System.out.println("min:"+tbl[0]);
System.out.println("med:"+tbl[num/2]);
}
}
883 :
デフォルトの名無しさん :04/07/06 01:17
すいません、853と854の解答頂けないでしょうか…
884 :
デフォルトの名無しさん :04/07/06 01:23
教えてください、お願いします。 あいうえお、かきくけこ、さしすせそ、なにぬねの・・・(以下続く) という文字列をあ行から順に抽出するという課題なんですが、 よくわかりません。 それぞれを区切っている「、」をポイントにしてsubstringを使って あいうえお かきくけこ さしすせそ なにぬねの といった具合に表示させるんですがどうしたらいいでしょうか??
public class parse{ public static void main(String[] args){ String input="あいうえお、かきくけこ、さしすせそ、たちつてと、なにぬねの、はひふへほ、まみむめも、やいゆえよ、らりるれろ、わいうえを、ん"; while(true){ int index=input.indexOf("、"); if(index<0)break; System.out.println(input.substring(0,index)); input=input.substring(index+1); } System.out.println(input); } }
>>885 さん
早い対応、ありがとうございます。
初心者なので考え方のきっかけがつかめなくて
困っていたのでとても助かります。
自分なりにソースの内容をしっかり理解したいと思います。
ありがとうございました。
>>869 class MyVector {
private Object[] array;
private int size;
public MyVector() {
this(100);
}
public MyVector(int capacity) {
array = new Object[capacity]; size = 0;
}
public void add(Object obj) {
if (size == array.length) {
Object[] array2 = new Object[size*2];
for (int i=0; i<size; i++) array2[i] = array[i];
array = array2;
}
array[size] = obj; size++;
}
public void set(int index, Object obj) {
array[index] = obj; //範囲外のときどうするのか? 仕様が無い
}
public Object get(int index) {
return array[index]; //範囲外のときどうするのか? 仕様が無い
}
public int size() {
return size;
}
public int capacity() {
return array.length;
}
}
>>870 はようわからん。突然出てきた stack という変数はなんじゃ?
互いに1〜3の数字を順に言い合い加算し、100を言ったら負けというシンプルなゲーム。 ★ not 100 ★ 先行:0,後攻:1,どちらかを選択してください. 2 0か1を入力して下さい!!(番兵処理です) 1 では,ゲームを開始します! COM:1 COM:2 あなたの番です.幾つ数字を進めますか?1〜3の数字を入力してください. 1 (ここでも番兵処理をお忘れなく) YOU:3 ・ ・ YOU:100 あなたは負けました.残念!! 今回は,負けの数値は100,選択できる数値は1〜3に固定しました。 これらの数値をオプションで自由自在に設定可能にすれば,汎用性も高まり, 非常に楽しくなりますね。また、今回はコンピュータ対人間の一対一での対戦に限定してます。 プレーヤの数を自由自在に設定可能にするのも面白いのではないでしょうか。
890 :
デフォルトの名無しさん :04/07/06 09:29
コマンドラインで指定した回数だけ、2つの乱数の組x、yを発生させ、その乱数を元に 円周率πを求めるプログラムPaiPai.javaを作成せよ。 ・乱数生成は、Math.random()を使用すること ・実行は、「java PaiPai 100」のようにコマンドラインから引数として乱数の発生組数を入力するものとする ・一組の乱数を発生させ、その結果、円の中に入ってる場合は、trueを、そうでない場合はfalseを返すメソッド randomCheck()を作成して、しようすること ヒント:原点を中心とした半径1の円の第一象限を考える。X座標とY座標を0から1の間の乱数を使って決定する。 円内に入っている確率はπ/4。Math.random()は0以上1未満のdouble型を返すので、1を含まないが上記計算上は、 1を含まないことによる誤差を無視してよいとする。 どうか、おねがいします・・・・・・・・・・ さっぱり分かりませぬ・・・・・・・・
>>890 適当です、これで良いのかどうかは知らん。
public class PaiPai {
public static void main(String[] args) {
int loop = Integer.parseInt(args[0]);
int chk=0;
for(int i=0; i<loop; i++) {
if(randomCheck())
chk++;
}
double pi = chk*4d/loop;
System.out.println(pi);
}
static boolean randomCheck() {
double x = Math.random();
double y = Math.random();
return (x*x+y*y<1);
}
}
892 :
デフォルトの名無しさん :04/07/06 09:52
>>890 public class PaiPai {
public static void main(String[] args) {
long loop = 1000000l;
if ( args.length > 0 ) {
loop = Long.parseLong( args[0] );
}
try {
PaiPai pai = new PaiPai();
pai.execute( loop );
} catch (Exception e) {
e.printStackTrace();
}
}
public void execute( long loop ) throws Exception {
long count = 0;
for ( long i = 0; i < loop; i++ ) {
double x = Math.random();
double y = Math.random();
if ( checkRandom( x, y ) ) {
count++;
}
}
System.out.println( (double)count/(double)loop * 4d );
}
private static boolean checkRandom( double x, double y ) {
return Math.sqrt( x * x + y * y ) <= 1d;
}
}
893 :
デフォルトの名無しさん :04/07/06 10:38
2個の整数を入力し、それらの公約数を表示させるプログラムお願いします。
>>889 作ったけど無駄に長い気がするわさ〜
import java.io.*;
public class Q889 {
public static void main(String[] args) {
Q889 q = new Q889(100, 3);
q.execute();
}
BufferedReader in;
int n, t, x, y; // 現在,手番,目標,最大
Q889(int x, int y) {
this.x = x;
this.y = y;
in = new BufferedReader(new InputStreamReader(System.in));
}
boolean add(int p) {
n += p--;
for (int i = n - p; i <= n; i++) {
System.out.print(t == 0 ? "YOU" : "COM");
System.out.println(":" + i);
if (i == x)
return false;
}
return true;
}
void execute() { do { System.out.println("★ not " + x + " ★"); t = selectTurn(); n = 0; while (add(t == 0 ? selectNumber() : thinkCom())) t ^= 1; if (t == 0) System.out.println("残念、あなたの負けです。"); else System.out.println("おめでとう!あなたの勝ちです!"); } while (selectAgain()); System.out.println("またあそんでね。(^^)ノ~~"); } boolean selectAgain() { System.out.println("もう一度遊びますか?(Y/N)"); for (;;) { try { String s = in.readLine(); if (s.equalsIgnoreCase("y")) return true; else if (s.equalsIgnoreCase("n")) return false; } catch (NumberFormatException e) {} catch (IOException e) {} System.out.println("YかNを入力してください。"); } }
int selectNumber() { System.out.print("あなたの番です.幾つ数字を進めますか?"); for (;;) { System.out.println("1〜" + y + "の数字を入力してください。"); try { int i = Integer.parseInt(in.readLine()); if (1 <= i && i <= y) return i; } catch (Exception e) {} } } int selectTurn() { System.out.println("先行:0,後攻:1,どちらかを選択してください。"); for (;;) { try { int i = Integer.parseInt(in.readLine()); if (i == 0 || i == 1) return i; } catch (NumberFormatException e) {} catch (IOException e) {} System.out.println("0か1を入力して下さい!!"); } } int thinkCom() { int i = ((x - n - 1) % (1 + y)); if (i == 0) i = (int) (Math.random() * 3 + 1); return i; } }
>>893 int gcd(int a,int b){
while(true){
if(a%b==0)return(b);
a%=b;
if(b%a==0)return(a);
b%=a;
}
}
つい最大公約数書いてしまったけど、 もしかしてこっち? int commondivede(int a,int b){ for(int i=1;i<=Math.min(a,b);i++){ if(a%i==0&&b%i==0){ System.out.println(""+i); } } }
一箇所比較間違えてました。 訂正です static void makestrategy(boolean[][] list){ for(int j=0;j<MEMBER;j++){ list[j][LOSENUMBER-1]=!CPUTURN[j]; } for(int i=LOSENUMBER-2;i>=0;i--){ for(int j=0;j<MEMBER;j++){ int after=(j<MEMBER-1) ? (j+1) : 0; if(CPUTURN[j]){//or list[j][i]=false; for(int k=i+1;k<=Math.min(i+MAXVALUE[j],LOSENUMBER-1);k++){ if(list[after][k]){ list[j][i]=true; break; } } } else{//and list[j][i]=true; for(int k=i+1;k<=Math.min(i+MAXVALUE[j],LOSENUMBER-1);k++){ if(!list[after][k]){ list[j][i]=false; break; } } } } } }
901 :
デフォルトの名無しさん :04/07/06 16:14
java.lang.Throwable を継承した Error と RuntimeException では、 例外の throws や catch による処理が要求されない。 一方、それ以外:Exception と その派生クラスでは例外の処理が 要求される。 なぜ、一方では処理が不必要とされ一方では要求されるのか。 お願いします。
ここを読むと。
http://www.y-adagio.com/public/standards/tr_javalang/11.doc.htm 簡単に言うと、起きてしまったらどうしようも無いものを、
Error や RuntimeException を継承したもので表すことになってるから。
ただ、それだけでは説明不十分。
RuntimeException は、プログラマが気をつけてれば起きない。
(例えば、将棋盤を表す配列の添え字に 9 を入れる状況を起こすなどのポカ)
組み方次第で絶対起きない様にできるものを、
いちいち catch させるようコンパイラが強制する必要は無い。
Error は、VM 自体の問題であることが多い。
プログラマにも予測不可能だし、異常な状態になっていることもあり、
VM 内のプログラマをどういじくっても回避できないことにもなる。
あらゆる場所で起こりうるものなので、いちいち catch させない。
903 :
デフォルトの名無しさん :04/07/06 16:59
>>902 どうもありがと。
自分も読んでみます。
これお願いします。 4ケタの数字当てゲームです。4つの数字に同じ数字はありません。 入力した4ケタの数字のうち、ケタ(場所)があっていると1ヒットなり、画面に1 HITと表示されます。 場所はあっていないけれど、使われている4つの数字があっていれば、1ブローとなり画面に1 BLOWと表示されます。 例えば、正解1234に対して、0431と入力すると、3がHITで1がブローとなり、画面に1HIT 1BLOWと表示されます。 これを繰り返して、もとの4ケタの数字を当ててください。 正解の数字は、乱数に従って、コンピュータが毎回任意に決定します。 ★ヒット・アンド・ブローゲーム★ 何人でプレーしますか? 2 1番目のプレーヤーのお名前を入力してください。 あいうえお 2番目のプレーヤーのお名前を入力してください。 かきくけこ では、ゲームを開始します。 あいうえおさんの1回目:4ケタの数値を入力してください。 0123 1ヒット0ブローです。
あいうえおさんの2回目:4ケタの数値を入力してください。 7425 2ヒット0ブローです。 あいうえおさんの3回目:4ケタの数値を入力してください。 7406 1ヒット2ブローです。 あいうえおさんの4回目:4ケタの数値を入力してください。 7365 2ヒット0ブローです。 あいうえおさんの5回目:4ケタの数値を入力してください。 7095 1ヒット1ブローです。 あいうえおさんの6回目:4ケタの数値を入力してください。 7608 0ヒット2ブローです。
あいうえおさんの7回目:4ケタの数値を入力してください。 4065 2ヒット2ブローです。 あいうえおさんの8回目:4ケタの数値を入力してください。 4056 0ヒット4ブローです。 あいうえおさんの9回目:4ケタの数値を入力してください。 0465 正解です!あいうえおさんの記録は9回です! かきくけこさんの1回目:4ケタの数値を入力してください。 ・ ・ 正解です!かきくけこさんの記録は8回です! あいうえおさん:9回 かきくけこさん:8回 従って、この勝負はかきくけこさんの勝利です。 かきくけこさん、おめでとうございます!
import java.io.*; import java.util.*; public class Q904 { public static void main(String[] args) { try { new Q904().playAll(); } catch (IOException ex) { ex.printStackTrace(); } } private void playAll() throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); System.out.println("★ヒット・アンド・ブローゲーム★"); System.out.println("何人でプレーしますか?"); int count = Integer.parseInt(br.readLine()); String[] players = new String[count]; for (int i=0; i<players.length; i++) { System.out.println((i + 1)+ "番目のプレーヤーのお名前を入力してください。"); players[i] = br.readLine(); }
System.out.println("では、ゲームを開始します。"); int[] scores = new int[players.length]; for (int i=0; i<players.length; i++) { scores[i] = play(players[i], br); } int winner = 0; for (int i=0; i<players.length; i++) { System.out.println(players[i] + "さん:" + scores[i] + "回"); if (scores[i] < scores[winner]) { winner = i; } } System.out.println("従って、この勝負は" + players[winner] + "さんの勝利です。"); System.out.println(players[winner] + "さん、おめでとうございます!"); }
private int play(String player, BufferedReader br) throws IOException { Random rnd = new Random(); String answer = ""; boolean checks[] = new boolean[10]; for (int i=0; i<10; i++) { checks[i] = false; } for (int i=0; i<4; i++) { int num; do { num = rnd.nextInt(10); } while (checks[num]); answer += "" + num; checks[num] = true; } String ask = ""; int count = 1; while (! answer.equals(ask)) { ask = null; do { if (ask != null) { System.out.println("4ケタの数値を入力してください。"); } System.out.println(player + "さんの" + count + "回目:4ケタの数値を入力してください。"); ask = br.readLine(); } while (ask.length() != 4);
int hit = 0, blow = 0; for (int i=0; i<4; i++) { for (int j=0; j<4; j++) { if (ask.charAt(i) == answer.charAt(j)) { if (i == j) { hit++; } else { blow++; } } } } if (hit < 4) { count++; System.out.println(hit + " ヒット " + blow + " ブローです"); } } System.out.println("正解です!あいうえおさんの記録は" + count + "回です!"); return count; } } 入力チェック甘し。回答入力のダブりチェックもしてない。60点のでき。
あらら先越されちゃいましたか。 おつかれさまです。 でも自分がやりたかったことは、 おまけで対 CPU の試行ルーチンをつくって、 どのくらい強くなるかを試したかったので、 私もこのソースを借用させていただきます。
>>911 お先しました。
あなたの作ったのに負ける自信有り。苦手だから 25回とか30回とか頻出。
テストするのめんどいめんどい(答え表示しとけつーの)
成績ドローだとどうすればいいのかな? 日和ってしまったけど。
入力チェックは例外処理も多くなるし、初心者的には不問でいいのかな。
913 :
デフォルトの名無しさん :04/07/07 10:27
Java VM にインスタンスが1つだけ存在することを保証しようとした ものであるが、誤りが2箇所ある。 public class Test { private static Test test; public Test() { } public Test getInstance() { if( test == null ) { test = new Test(); } return test; } } 説明もお願いします。
914 :
デフォルトの名無しさん :04/07/07 10:35
>>913 1. コンストラクタがpublicなのでいくつでもインスタンスが生成できてしまう
2. getInstanceメソッドがstaticでないので、インスタンスがないと呼び出せない
915 :
デフォルトの名無しさん :04/07/07 11:27
916 :
デフォルトの名無しさん :04/07/07 11:28
次のプログラムの出力を記せ。 class A { char x = 'A'; void whoami() { System.out.println("A"); } } class Test extends A { char x = 'T'; void whoami() { System.out.println("Test"); } public static void main( String[] args ) { A a = new Test(); a.whoami(); System.out.println( a.x ); } }
>>916 実行すりゃすぐわかる。
どうしてここで聞くのかがわからん。
919 :
デフォルトの名無しさん :04/07/07 13:01
920 :
デフォルトの名無しさん :04/07/07 14:10
class A { } class B extends A { } で、エラーになるのはどっち?でエラーになる理由と エラーにならない理由は? (1) A a = new B(); (2) B b = new A();
921 :
デフォルトの名無しさん :04/07/07 15:58
ちょっとあんまりJAVAを理解できてないので助けてください。 今GUIパーツを用いるクイズゲームのアプレットを作っているんですけど、 ONボタンが押されたら ユーザーの答えが現在の問題の答えと合っているかどうかを調べる 正解だったら 画像を表示するフラグをtrueにする 正解画像の番号を指定する というプログラムをかくにはどうすればいいんでしょうか? ちなみに答えはチョイスボタンから選択し、OKボタンを押すと回答が表示されるようにしたいのですが。
>914 実はもう一個誤りがあったり。。。 3. getInstanceで同期とってないのでタイミングによっては複数インスタンスが作れる
924 :
デフォルトの名無しさん :04/07/07 22:20
>>922 どうも921です。でもなんかそのサイトにアクセスできない...。 時間もあまりないので誰か教えて下さい。 お願いします。
イメージアイコン使うのが一番楽
イメージアイコンですか。使ってますけど、上手くできないんですよね。 できたら上の部分のプログラムだけでも実際に書いて貰えるとかなり 助かります。ほんと申し訳ないです。
2つあって、両方とも「シンボルを解決できない」と出ます。 8行目と223行目で、 クラス:ViewPort 場所:Gateのクラス で、両方ともViewPortの「V」のところにチェックが付いています。
↑ 誤)クラス:ViewPort 正)シンボル:クラス ViewPort です。助けて下さい・・・
ViewPortが無いよ 動かすだけでよいのならViewPort.classをもらってくれば?
933 :
デフォルトの名無しさん :04/07/08 09:48
934 :
デフォルトの名無しさん :04/07/08 09:52
>>933 メソッドにsynchronizedを付けるがいい
>>926 今君の書いてるプログラムにあわせたものでないと
何の参考にもならんと思う
936 :
プログラミング大好き :04/07/08 16:24
コマンドラインで指定した回数だけ、2つの乱数の組x、yを発生させ、その乱数を元に 円周率πを求めるプログラムPaiPai.javaを作成せよ。 ってヤツだけどさ、(x,y)の点を表示させて、その点が、円の範囲内に入ればいいんじゃないの?? 学校の課題かな? ちょっと、プログラム組んでみようか??
どうぞご自由に
>>936 >>891 >>892 で解決済み
今後のために注意を上げておくと、
> コマンドラインで指定した回数だけ、2つの乱数の組x、yを発生させ、その乱数を元に
> 円周率πを求めるプログラムPaiPai.javaを作成せよ。
>>890 と書くと親切
> ってヤツだけどさ、(x,y)の点を表示させて、その点が、円の範囲内に入ればいいんじゃないの??
モンテカルロ法といえば一言で済む
> 学校の課題かな?
スレタイ読め
> ちょっと、プログラム組んでみようか??
最初からこれを貼る
939 :
デフォルトの名無しさん :04/07/08 18:50
・8つの数を読み込んで その合計を表示するプログラムを「while」使ってお願いします
940 :
デフォルトの名無しさん :04/07/08 19:06
Matlabで、2次元の(長方形を用いた平面の)補間の プログラムはどうしたらよいのでしょう?
>>939 int i = 0, sum = 0;
while (i < 8) {
sum += //読み込む、とは? 何から読み込むの?
i++;
}
System.out.println("合計:" + sum);
8つダーっと数字を入力したら合計が出るようにするプログラムです 例えば 3 3 3 4 4 4 5 5(と入力したら) 合計は31です ってなるような感じで
import java.io.*; public class Summer { //嘘英語 public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int i = 0, sum = 0; while (i < 8) { sum += Integer.parseInt(br.readLine()); i++; } System.out.println("合計は" + sum + "です"); } catch (IOException ex) { } } }
944 :
プログラミング大好き :04/07/08 21:20
> コマンドラインで指定した回数だけ、2つの乱数の組x、yを発生させ、その乱数を元に
> 円周率πを求めるプログラムPaiPai.javaを作成せよ。
>>890 のプログラムだけど、キャンバスは、
class Canvas extends Canvas{
private static int ans;
public void paint (Graphics g){
g.lock();
g.clearRect(0,0,getWidth(),getHeight());
setSoftLabel(Frame.SOFT_KEY_1,"計算");
setSoftLabel(Frame.SOFT_KEY_2,"戻る");
int uti = 0; //円の内側に発生する点の数
int a = 70; //円の半径の設定
g.setOrigin(((getWidth()-a)/2),((getHeight()-a)/2)+a); //座標原点の移動
g.drawRect(0,-a,a,a); //点の発生する四角形の描画
Random r=new Random(); //ランダムの宣言
こんなものでどうだろう??
ここってよーするに、 宿題やってもらうスレ? 宿題やってくださいじゃ相手にされないから こういうスレタイにしてんの?
そろそろ新スレ?
949 :
デフォルトの名無しさん :04/07/09 20:40
次のプログラムはN(1以上であるとする)の階乗(N!)を求めるプログラムである。 このプログラムを完成させなさい public class Factorial { static int N=10; public static void main(String args []) { int factorial =1 ; for (int i = N; i > ? ; ? ) { factorial ? i ; } System.out.println("Factrial " + N + "! = "+ factorial) ; } } おしえてー
順に 0 i-- *=
951 :
デフォルトの名無しさん :04/07/09 20:54
あーなるほどー *= ってのがあったんですかー ありがとうございましたー
952 :
デフォルトの名無しさん :04/07/09 21:58
Delphi使ったPascalの宿題があるのですが やってもらってもええですか? Javaじゃないとだめっすかね・・・
「学校の宿題は俺にやらせてください for Pascal」スレがあるだろ
954 :
デフォルトの名無しさん :04/07/09 23:14
なければ自分で立てるんだ。人に頼るな!
956 :
デフォルトの名無しさん :04/07/10 00:22
Dijkstra法を用いて、ノード0からノード3までの最短経路長を求めて出力するプログラムを作成しなさい。 (図では、0→2→1→3の経路のコスト20が最小) なお、各地点間のコストは、cost配列で与えられるものとする。コストは負でないとする K 0━━━1 | /| G | / |I←コスト |/ | 2━━━3 N //cost[i][j]はノードi からノードj へのコスト。無限大をMAX_INTで表現 //ノードi からノードi へは移動しないので、移動コスト無限大と仮定。 int[] [] cost = { { MAX_INT 12 ,8 ,MAX_INT} , {12 ,MAX_INT , 2 , 10} ,{ 8 , 2 ,MAX_INT , 15} , {MAX_INT ,10 ,15,MAX_INT} } ; //計算途中で用いる各ノードまでの旅程(最短経路長)(MAX_INTで初期化) int [] mincost = {MAX_INT, MAX_INT , MAX_INT , MAX_INT } ; 教えてください、お願いします
957 :
デフォルトの名無しさん :04/07/10 00:24
図を修正・・・ K 0━━━1 | /| G | / |I←コスト |/ | 2━━━3 N