学校の宿題は俺にやらせて下さいver.2.0βfor Java

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん

おい!厨房どもJavaの宿題はここに持って来い!
ただGUIかんけーはめんどクセーから、放置するぞ!

☆丸投げ歓迎 AGE進行☆

前スレ
学校の宿題は俺にやらせて下さいver.1.1βfor Java
http://pc2.2ch.net/test/read.cgi/tech/1065599192/
【Java編】 学校の宿題は俺にやらせろ 【Java編】
http://pc2.2ch.net/test/read.cgi/tech/1040552821/
http://pc2.2ch.net/tech/kako/1040/10405/1040552821.html
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
*
**
***
****
これはできたのか?

*
***
*****
これを作るのか?上下逆の場合もあるけど。
とりあえずヒントをあげると、
__*
_***
*****

_の部分の数を段数から計算で求めればいい。
1918:04/02/09 18:18
ガ━━ΣΣ(゚Д゚;)━━ン
>>18-19
すまん、頭の体操ついでにで作っちゃった・・・。
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();
>>28
あと改行を<br>にするとかかな
31デフォルトの名無しさん:04/02/19 16:08
不等号を < 等に置き換えるとか
しまった &lt のことね
33デフォルトの名無しさん:04/02/19 16:12
>>27
コンパイルだけは通るのですが、出来たhtmlが空ファイルになってしまいます。

>>28
ソース中にプレーンテキストファイルを指定して、その内容がそのままhtmlとして作成されればOKです。
3429:04/02/19 16:18
>>31-32
ああ、そこら辺のリプレースやってねーや。
まあ、いいか。
1.4以降ならreplaceAll使えば簡単だしな。
1.3以前でもORO使えばいいしな。
3526:04/02/19 17:11
遅くなりましたがみなさん、ありがとうございました。
36デフォルトの名無しさん:04/02/19 18:01
26さんのに似てると思うけど、javaを使ってcsvファイルを表としてhtmlに変換するにはどうすりゃいいの?

枠線とかも入れなきゃいけないんだけど、htmlの知識に乏しいのでおながいします。
HTML知らないでTABLE使うのは無謀かと思うが・・
38デフォルトの名無しさん:04/02/19 18:10
>>37
javaもhtmlも平行して習っている最中なんで、訳わからんのです。
3929:04/02/19 18:11
>>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
お願いです。
ソースとして書いてもらえません?
4229:04/02/19 18:30
>>41
それくらい自分でやれ
4329:04/02/19 18:44
>>41
おいおい、あそこまで丁寧に書いてやったのにわからないのかよ。
回線切って、先生に土下座してこい。
4429:04/02/19 19:15
>>41
甘えるのもいい加減に汁
459:04/02/19 19:28
ちょっと前にお題を出した9です。
>>11 さんありがとうございました。
後で、曜日をSUN MON...と直しました。
そして10以降の日付の位置も空文字で調整したのですが
最初の週の数値がうまくあるべき位置に出力されないのです。
うまくぴったり曜日の下に出力をできるように教えていただきたいです。
誰かお願いします。
469:04/02/19 19:33
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 ではないが、ここは
 学校の宿題は俺にやらせてください
スレじゃないのか?それとも
 やり方を教えさせてください
スレなのか?
4829:04/02/19 19:37
>>47
よし、次スレからは「Javaの宿題がわからない私を調教してください」スレに。
499:04/02/19 19:39
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();
}
}
509:04/02/19 19:41
一回作ってもらったんですがうまくいかなかったんで…、
じゃあダメですかね?
dayofweekをifで条件つけて1-7まで分けて位置を調整しようとしたんですが
何か結局うまくいかなったんです。
駄目ならいいですが、っていいつつ乗せてるのも何なんですけど。
>>50
オレ、それの回答のレスみて試して見たらずれてたんで
該当するところにスペース2つ入れて直したぞ
for (int i = 1; i < dayOfWeek; i++) System.out.print(" ");//<-ここのスペースを1つから3つに

自分で適当に変えたなら、元に戻して試せ
5251:04/02/19 20:05
多分元のやつも解答したときには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();
}
}
5755:04/02/19 22:20
nameで表示できるんですね。p.nameにしてずっと考えてました。
あほでした。ありがとうございました。
5811:04/02/20 04:21
>>50
ごめん。半角スペースがつぶれてたみたいね。

>>51
さんくすこ。
>>36
解決した?ソースいる?
6036:04/02/20 10:58
>>59
お願いいたします。
6159:04/02/20 11:31
>>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();
  }
}
6259:04/02/20 11:52
つか、StringTokenizerだと値が空だとずれるね。
カンマの数を数えるなりして、>>39のString#split(String, int)しないとダメか。
さらに、空行のチェックもしてないし、>>31>>40も考慮してないや。
まぁ、それを言い出すと""とか"エスケープとか、先頭行をカラム名にするとか、
色々出てくるし、宿題でそこまで要求されることも無いだろうけど、
対応しなきゃいけなさそうな要件があったら知らせて。
63デフォルトの名無しさん:04/02/20 11:55
SQLも聞いて大丈夫でしょうか?
SQL そのものは板違い
CSVとCVSを良く書き間違えます。
書き間違えなくなるPGを教えて下さい。
6629:04/02/20 12:09
>>65
C・S・V!C・S・V!と連呼すると脱ぐ女の子と、C・V・S!C・V・S!と連呼すると脱ぐマッチョを用意しろ。
いゃ〜ん、逆にして〜
(comma-separated-values)
>>63
無理やりJDBCに絡めてみるとか、
ttp://pc2.2ch.net/test/read.cgi/db/1057041973/
で聞いてみるとか。
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文に問題があるんでしょうか
7129:04/02/20 12:36
>>70
残念ながらPHP+SQLとなると話は別だ。
失せろ。
大馬鹿者。






."$id" か .$id じゃないか?よく知らんけど。
73デフォルトの名無しさん:04/02/20 12:38
そのJAVAをこよなく愛する貴方に惚れた!

だからさっさと答えろ、知ってるんだろ!

もちろんsunの株主さまですよね
74デフォルトの名無しさん:04/02/20 12:40
結合演算子なんてどこに入れたって同じに決まってんだろsun
7569:04/02/20 12:43
ごめん。そう来るとは思わなかった。あまりにも広義すぎてほぼ無関係な仲だよ。
多分>>72だけど、pg_result_error($result)でエラーメッセージ見るくらいしろよ。
もう死んでいいよ
Java と全然関係ないことでやってきて
SQL と全然関係ないことで間違ってて
指摘されたことと全然違うところで逆切れしてて
救いようが無い
しかも、宿題じゃないだろ、それ。
78デフォルトの名無しさん:04/02/20 12:47
>>77
が真実
79デフォルトの名無しさん:04/02/20 12:51
おまいらユーモアのかけらも無いな

何だかんだ言って笑ったんだろ、そーなんだろ
>>77-78あたりにちょっと。
>>79
で、解決したのか?
82デフォルトの名無しさん:04/02/20 13:02
まぁ直らないんだけどな

ちなみにidはvarchar(2)NOTNULL
flg の方も怪しいな
いいから PHP のスレに行けよ
>>81
このスレ的には「解決」とは >>70 が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
>>87
エェー やだよ
90デフォルトの名無しさん:04/02/20 14:40
>>87
完成しました、おまいの脳内で
9136:04/02/20 15:15
>>59
ありがとうございます。
ちょっと今はコーディングできないので、後ほどまたレスさせてもらいます。
3月半ばまでにJAVAで「ミスタードリラー」か「ボンバーマン」を作れなんていう
ろくでもない事を言い出した先生が出現しちまいました。

著作権って言葉を知らないんだろか?
個人で楽しむなら自由です
9487:04/02/20 16:07
なんだ
このスレ、アルゴリズムはおろか
コーディングすらできない連中の集まりか。
>>94
その通りです。
87さんが作ってくれるのを楽しみにして待つしか能がありません。
頑張って今までに誰も見たことの無い様なスクリーンセーバー作ってくださいね。
96デフォルトの名無しさん:04/02/20 16:10
>>94
まだか、ゴルァ!!
9787:04/02/20 16:11
おいおい
なんで俺がつくらなきゃならんのだ?
根本的に意味不明
98デフォルトの名無しさん:04/02/20 16:14
>>97
宿題やりたいんだろ?
思う存分やってくれ。




縦読みか・・・
100デフォルトの名無しさん:04/02/20 16:20
>>99
翻訳してくれ
>>100
おなにーの方言だろ
10287:04/02/20 16:24
はやくつくれや
コーディングまでは要求しないから
アルゴリズムだけ考えれ
考えた
104デフォルトの名無しさん:04/02/20 16:25




斜め読みか(^o^=)
105デフォルトの名無しさん:04/02/20 16:26
>>103
>>104
翻訳求む
10787:04/02/20 16:30
画面の中心を元に
ランダムで傾きが設定された直線の方程式をつくり
xの値が増えるにしたがって拡大する仕組みなわけだが
>>107 はバカだということが証明されました
10987:04/02/20 16:36
バカでもなんでもいいからはやくつくれよ
弱い犬ほどよく吠える って言われないようにな
>>109は弱い犬だということが証明されました。
11187:04/02/20 16:39
俺は確かにプログラムに関しては無知だが
学歴は良いほうだ。
広大附属小学校→広大附属中→広大附属高→慶應義塾大学経済学部→一橋大学大学院
広大ってのが何か知らんが、まあ実際慶応行ったとして、
いつまでも過去の栄光にしがみついてないで、目の前の問題に取り組んだらどうだ?
11387:04/02/20 16:42
だから手助けしてくれよ
俺のプロセスが間違ってるなら指導してくれよ
>>107で要ってることが意味不明だぞ。
画面の中心を元に、って元にどうするんだよ?画面の中心が(0,0)ってことか?
あとxは何だ?定義してから使えよ。いきなりxって言われてもわかんねーだろうが。
y=ax+bのxか?だとしたら拡大するのは何だ?
11587:04/02/20 16:45
>>114
>>107は適当に言っただけだが
Windowsの宇宙空間のスクリーンセーバ見てみれば
言いたいこと分かるだろ

画面の中心を元にってのは
画面の中心(クライアントのwidth/2 クライアントのheight/2)ってこと
その中心を中心にって言い方がまどろっこしいから「元」って書いた
>>115
いや、だからその中心がどうしたんだよ?
中心が(0,0)なのか?
11787:04/02/20 16:46
だいたいなんで俺が考えなきゃいけないんだ?
このスレは人の宿題をわざわざやりたがるキチガイがあつまってんだろ
つべこべいわずにはやくやれや
やらせてやるんだからありがたくおもえや
宇宙飛行のSSのことか?
11987:04/02/20 16:48
>>116
お前もわからん奴だな。
数学的に言えば
中心点を通る傾きα(とりあえず任意)の直線をランダムに引き
その軌跡を点が通っていく仕組みだよ
12087:04/02/20 16:49
あーもうイライラするなあ

うちのパパに聞くからいいよ
使えねえサルばっか。
じゃあな
>>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
定数としてカプセル化しろ、という話だったので。

面倒くさかったのでゲッターメソッドつけなかったけど、
必要だったらつけといて。
131129:04/02/20 22:02
すまそ。なんか変な書き方したですが、
設計上finalにする利点とかを聞かせてもらえればと思いますた。
132127:04/02/20 22:11
ありがとうございました。助かりました。
>>131
設計上?
最近はコード書きながら設計するのか?

利点はコンストラクタ(もしくは言語規定に明記された特定の場所)で
たったの一度しか代入できないため
うっかり間違って代入するとコンパイルエラーで知らせてもらえる。
代入できないので public にしておいても安全。
(型がプリミティブ型とか String みたいな不変オブジェクトの場合だけだけど)
13487:04/02/20 22:18
お前らは
結局教科書に載ってるようなレベルのことしか分からない
つまり創造性がない

だからアルゴリズムすら示せない
135129:04/02/20 22:20
>>133
なるほど。良く分かりました。ありがとうございますた。
宿題スレで創造性云々されてもなぁ…
>>134
こういっちゃ何だが、アルゴリズムはそれほど難しくはない。
スクリーンセーバ、宇宙飛行、Javaとかでググっても、
素人さんによるアプレットもいくつかある。

みんなアルゴリズムが分からなくて示せないわけではなくて、
誰もお前なんかに教えたくないから示さないんだと思う。
13887:04/02/20 22:33
>みんなアルゴリズムが分からなくて示せないわけではなくて、
>誰もお前なんかに教えたくないから示さないんだと思う。

ハイハイ
つまらなすぎて笑えません。
13987:04/02/20 22:35
低学歴なら低学歴らしく
高学歴の奴隷として口ごたえせずに労働してほしいね
>>138
つまらないかも知れないけど、それが本当の理由だろうってことは、
いくら君でもうすうす感じてるでしょ?

>>139
学校で何習ってきたの?
14187:04/02/20 22:50
>>140
身分社会の構造
>>141
その身分社会の構造をもって、
上位にいる君の望むように下位にいるこのスレの人を動かすことができた?
14387:04/02/20 23:20
俺が87から142まで常に話題の中心だった。
これこそが俺の意図した結末であり、
別にアルゴリズムやコードを本当に求めていたわけではない。

とネタバレするとあまりにもかわいそうなので
あまり言うべきではなかったな。
>>143
>>127-133 ではすっかり忘れ去られていたようだが。
14587:04/02/20 23:30
ソーデスネ
>>143
それはつまり、学歴も高くて頭も良いにも関わらず、
話題の中心になるにしても、もっと生産的な話題、
例えば新しいアルゴリズムの解法を提供することで、
このスレの住人を指導する意味での話題の中心になれたにも関わらず、
他人をとても高尚とは言えない内容で煽って、
スレの住人の迷惑の中心人物となって注目を引くという、
幼稚な自己顕示欲に駆られて起こしたとしか思えない行動の結末が、
君の本当に意図した結末だったってこと?

本当に学歴も高くて頭も良いの?
14787:04/02/20 23:46
>>146
お前、tanasinnスレの住民みたいだね。
意味のないことをトートーと語る。
そういうのは論理的に話してるようで
単なる言葉アソビにすぎない。
そして最後に煽る、と。

幼稚だと思ったんならそれでいいんじゃないの?
tanasinnは強制されるものではないし
人のtanasinnを否定するものでもない。
148137=140=142=146:04/02/21 00:08
>>147
なんで?別に非論理的でも無意味でもないよ?あの程度の文章も読めない?
分かりやすく言うと、こんな感じ。これなら分かるだろ?

頭いいんなら他に話すこともあったろうに、
なんであんなバカっぽい話しかできなかったんだ?
みんなに嫌われただけだとおもうけど、
ほんとにそれでよかったのか?

ちなみに、漏れ無教養だからtanasinnを強制するって意味分からん。
っていうか、もはや漏れの方も荒らしになって来てるな・・・。
みなさん、すんませんでした。
14987:04/02/21 00:13
>>148
>ちなみに、漏れ無教養だからtanasinnを強制するって意味分からん。

教養の問題ではないよ
もうお前ネタなのかマジでつっかかってきてるのかワカランな
tanasinnにツッコまれるとは思わなかったからちょっと笑ってしまった

ちなみにtanasinnってコレね。
http://that.2ch.net/test/read.cgi/gline/1075672548/
>>143
> 俺が87から142まで常に話題の中心だった。

え〜と。バカに人は群がるからな。
151148:04/02/21 00:50
>>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);
が正しいです。

フラグを用いているのは他の方法が思いつかなかっただけなので
書き換えてしまって大丈夫です。
>>159
ttp://up.isp.2ch.net/up/eb82f0bcf7d0.zip

良く分からんとこは適当に埋めたけど、まずい動きだったら知らせて。
162javaですが・・・:04/02/23 12:59
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
じゃない?
165javaですが・・・:04/02/23 13:41
>>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は大文字小文字関係ないのですか?
166javaですが・・・:04/02/23 13:43
>>164
ありがとうございます。
>>164
いや _ _ とスペースが入ってるからどうなのかと思って

>>165
>64ビット整数ってところがわからなくて
16進数で表せば 0x000000000000000a のこと。0xa と同じ。
上のほうの bit まで情報があれば数がでかい= int や short などに変換できない、というだけで、
整数は整数。

>0xで始まる整数は16進数、このxは大文字小文字関係ないのですか?
今まで大文字にしたことないけど普通にコンパイルは通るみたいだね。
10L が10l でも通るしね。
168164:04/02/23 13:54
>>167
ありゃ、ほんとだ。写し間違いじゃなければ、NGだ。すまそ。
169javaですが・・・:04/02/23 14:10
//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の中から選んでください

度々ですみません。お願いします。
170javaですが・・・:04/02/23 14:11
>>167
ありがとうございます
レス下さった方も感謝です
>>169
実際に動かせば分かると思うんだが。
>>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
途中まで組んだけど問題が非常識だから止めた
何で預金者と口座にリレーションが無いのだ
175161:04/02/24 19:24
>>172
スマソ。今見た。家に帰ったらやるからちょっと待って。
176デフォルトの名無しさん:04/02/24 23:50
下記の空欄を答えよ、それぞれ同じ語が入る。

キーボードからの入力、ファイルへのデータ読み書き、ディスプレイへの表示、
ネットワークへのデータ送受信などの処理を入出力処理という。
入出力処理において、外部とのデータのやり取りをする箇所を、
「キーボード用」、「ネットワーク用」の様に、装置ごとにプログラムを用意するのでは、
大変ですし、新しい装置が出てくるたびに新しいアクセス方法を覚えなければなりません。
そこでjavaでは、外部とのデータのやり取りを「   」という抽象的な概念として表しています。
「   」を使う事によって装置を意識しない共通のアクセス手順で、データの読み書きを行えます。

//宿題です お願いします
ストリーム、かな。
178176:04/02/25 00:02
>>177
お返事どうも、ありがとう御座います!!!!
179161:04/02/25 00:02
>>172
ttp://up.isp.2ch.net/up/ece0b6847536.zip

遅くなってすまん。
>>179
おまい、ほんと宿題好きだな。
181161:04/02/25 00:17
>>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."まで押すと勝手に出てくるよ。
203195:04/03/10 11:43
作って頂いた後に、早速、空白などに気をつけてコンパイルしてみたのですが、
エラーが30以上出てしまいます…。
こっちが何かおかしいんでしょうか?
import つけた?

import java.applet.Applet;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.*;

自明だからと省いたんだけど。
とにかく一番最初の1つをここに貼りなさい。
205201:04/03/10 11:58
>>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() も用意されてるよ、という感じ。
207201:04/03/10 12:57
>>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パターン。
ありがとうございます。

http://tool-ya.ddo.jp/2ch/trash-box/file/20040427181338194.jpg

のクラス図からJAVAのコードを作成するみたいなんですが、教えてください。
これもデザパタ。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
>>216の右上のは矢印とかいらないんですか?
>>214
のソースじゃ関係は結べないわな。
そのソースからクラス図作れば >>215としかかきようがない。
224223:04/04/27 22:26
間違い。
>>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
次のクラス図からJAVAコードを作成しなさい。
↓両方同じ図です。

http://tool-ya.ddo.jp/2ch/trash-box/contents.jsp?file=20040427232533240.jpg
http://up.atnifty.com/upmini/file/20040427232650_.jpg
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
結局>>13のシステムは稼動しなかった模様です

@@
@@@
@@@@
@@@@@

↑みたいにC言語で作るにはどうしたらよい?

ついでにこっちもおながいします


@@
@@@
@@
タイトルミロ for java ッテカイテアンダロ
235231:04/04/28 23:43
>>231です
教えていただきたいのであげさせてもらいます!
プッシュするところ。stack.push( ) ←このカッコの中を"a"とかにするとaが出力されるみたいなので
ここに"イチゴ""さくらんぼ"〜〜をいれればよいのでしょうか?その場合の変数はどうなってるのでしょうか。
あとポップのところ
System.out.println(stack.pop());
これかなと思ったのですが反応しないです。ご教授下さい。

>>235
おまい同じ大学かよ。。。
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());
}
}
>>233
グロ画像っぽいんだけど
>>238
どうもありがとうございます

>>236
点数無しはきついよね(つД`)
>>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
自分でどの程度やったのかかけよ。
どこがうまくいかないとか。
○投げで答えもらおうとするな。
>>1
257デフォルトの名無しさん:04/05/01 21:09
あぁ、宿題すれか。質問すれと勘違いしてた。
とりあえず逆ポーランド実装でいいんじゃねーの。
アルゴリズム・実装方法はWeb探せば無数に出てくるし
それと同じ宿題Tomcatでやってたやつが前スレにいたよ。
これの前スレか初心者すれのちょっと前探してみ。

逆ポーランド記法とか使ってた気がした。
259デフォルトの名無しさん:04/05/02 16:21
>>254
暇だから書いてみた
ttp://up.isp.2ch.net/up/0844c6b610ab.java
に置いたからまだ必要だったら
# エラー処理は甘いのは愛嬌ということで

結構時間がかかった自分に鬱
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]とかです。
261260:04/05/05 19:29
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)
よくわかったね。
264260:04/05/05 20:25
ありがとうございます。マジ感謝です
>>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());
}
}
268267:04/05/09 20:40
すみませんお願いします。
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への課題として残したのかな?
271269:04/05/10 08:01
問題文が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になってしまうのですが。。
>>275
うそつけ
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);
}}}
287286:04/05/16 12:40
//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か?

291名盤さん:04/05/16 14:48
90点以上の生徒と69〜69点の生徒を対象に、該当の得点の生徒は”明日5:00職員室に来てください”と表示するプログラムをANDとORを使って作りたい。ただし、点数はプログラム中にint tokuten=80などと記述する方法でいい。

心からお願いします。
if (tokuten >= 90 || 69 <= tokuten && tokuten <= 69)
System.out.println(”明日5:00職員室に来てください”);
293291:04/05/16 15:41
>>292
ありがとうございます。
ついでに、実効のやり方が分かりません。
教えてください。
>>287
出力するようにスレッドを立てておいて、
すぐさまソケットを閉じちまってるのが原因ではなかろうか。
あと Buffered なものを使うとか文字列出すなら Writer 使うとか
flush するとかいろいろ作法はあるけど・・・

>>293
>>291 には提出方法も形態も書いてないしな。
それはもう同級生に聞いた方が早そうだ。
javac Hoge.java
java Hoge
296291:04/05/16 16:09
提出方法はプリントなんですけど
じゃ実行する必要ないだろ
298291:04/05/16 16:14
>>297
そうなんですか?
プリント提出の場合は何かする必要あるのですか?
プリント出せばいいんじゃないの?
それ以上は教授に聞け。
300291:04/05/16 16:17
>>299
わかりました。
どうもありがとうございました。
301286:04/05/16 16:33
その通りでした。
助かりました、有難うございます。
あぁ、アンカー忘れてました。
>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
先生、おじいちゃんなんですが。。

314309:04/05/17 07:55
main メソッドをまるまる取り替えて、
readText メソッドを追加
書き忘れたけど、 import java.io.*; も追加
315314:04/05/17 11:28
完璧にできました!ありがとうございます。
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);
}
}
}

これはどういう意味なんでしょうか、どなたか解説おねがいします。
>>316
どこが分からないんだ?
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 で渡すんならそれなりに自分で悩んでね。簡単だから。
339335:04/05/27 14:48
>>338さん
ありがとうございます!!
まだ、プログラム自体覚え始めたばかりなので、
後は自分で調べて組みます!
すごい助かりましたーー感謝
340ド初心者:04/05/27 16:40
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環境、ネットワーク環境、
アイテムだのをどのぐらい凝るのか、同時対戦ユーザ数はいくらか、
それだけざっと書いたらエロイ人が
「やめとけ」「意味ない」「勉強にはいいんじゃない」とかくらいは答えてくれるだろう。
344342:04/05/30 15:40
遅さというのは、ラグが怖いですね。
画面上で敵が近くにいたから避けようとしたら、サーバー上の座標はすでに接触してて
避けようとした瞬間にはやられてるというのはなくしたいんです。

一応サーバーは Pen4 2.53GHz RAM 1G 回線は光ので構成して、
対戦人数は多くても5人ぐらいまでですかね。

ネットワークプログラミングの勉強なんでそこまで完全なものができなくてもいいのですが、
さすがにあまりに遅くてゲームにならないようなものだと、できたときに悲しいもので…
345超初心者:04/05/30 20:01
助けてください。明日までに提出しなければ
いけないにも関わらず、パソコンがおかしくて
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
を用いると実行結果はどのように変わりますか?


346超初心者:04/05/30 20:04
public class Mondai2{
public static void main(String s[]){
Test t=new Test();
t.show();
t.show(4);
}
}
このプログラムで実行結果がi=0 i=4
となるようなTestクラスを求めよ。
347超初心者:04/05/30 20:08
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クラスを書け。
348超初心者:04/05/30 20:17
GIF画像を表示し、マウスをクリックすればクリックした場所に
GIF画像が移動するJAVAアプレットを作成せよ。

半径が15ピクセルの黒円がマウスのドラッグすれば
円がマウスポインタについてくるようなJAVAアプレットを作成せよ

マウスのクリックで始点を決め、ドラッグすることによって楕円を
描くJAVAアプレットを作成せよ。ただし終点はマウスを放すことに
より決定する。

349超初心者:04/05/30 20:18
はうあうああ
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専門だったんですね
次からは気をつけます。
回答のほうありがとうございました。
宿題は早めにやるべきだな。
354340:04/05/31 00:47
>>341
ありがとうございます・・・
しかし・・・

大学で指導されていない言葉使ったら、授業の性質上ちとまずいんです。。。。
誰か、>>340できませんでしょうかぁ。。。?
せめて何が指導されてない言葉なのか教えてよ
356340:04/05/31 01:45
>>341のほとんどです。。。

>>356
try catchのでの例外処理は習ってないとしても、
ラッパークラスすら習っていないのか…
しかも標準入力から読ませるのにStringBufferも習ってないって…

今まで習ったの簡単に列挙してみなよ
358357:04/05/31 05:29
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は微妙にちがうような。
>>367
というか全然違う。
369デフォルトの名無しさん:04/06/01 16:54
お願いします。教えてください。
例えば、顧客登録システムのようにメイン画面から追加・変更・削除などを選び、
それぞれの処理を行い、結果を表示するプログラムを教えてください。
>>369
さすがにそんなおおざっぱな要求じゃちょっと・・・。
Javaスレなんだから、せめて要件定義と基本設計程度はすませておいてくれ。
>>369
あとGUI関係は放置するらしい
>>1
前にも入社時研修の宿題かなんかで同じ質問があったな
ぽんぽん答えられるわけねーっつーの
適当に仕様決めて組んでやっても 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
イエス。おまいもしかして…
379378:04/06/02 03:57
つうか377以外にも見てる奴いるなこりゃ…
まあ別にかぶってもいいか
380378:04/06/02 04:03
>>374-376
お礼が後になったけどありがとうございました

残りは自分でがんばろう
381377:04/06/02 09:48
>>379
カブったら0点にされかねないし、漏れは質問者じゃないから自力でやる。
まあ解答は参考にさせてもらうけどな。
ここはお前らの教室じゃねぇんだ。
教室の黒板にでも書いてろ
な?
Long型double型の変数に入る数値の最大値をループで求めるプログラムをつくれ。
たとえば、どこまで大きくできるかを表示する
ただし、1ずつ足していくのではなく、もっと効率的なやり方で求めよ。
って奴なんですが、どうやればいいのでしょうか?
>>383
10ずつ足す。
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を指すのでしょうか。もし出来ないならどうやれば出来るでしょうか。
388387:04/06/03 16:48
Cとかなら&をつければいいんでしょうが、アドレス演算子って無いみたいなんで・・
>>387
そんなことはできん
>引数のオブジェクトをローカルのオブジェクトに渡して、
この時点で間違ってる。
引数はオブジェクトそのものではなくその参照。ローカルに渡せるのも参照。
null が入る先は変数であってオブジェクトではない。

君の言ってるようなことがもし出来たら、1つの変数の参照先をかえるだけで、
あちこちの変数の値が変わりまくってしまうだろう。困るだろうそんなの。
君は C の例を出してきてるが、C のポインタがどんなものかいまいち分かってないから java の方も分からないんだ。
391デフォルトの名無しさん:04/06/03 17:09
vectorクラスを使ってキーボード入力により図書情報を登録し、一覧表示せよ。
例えば、分類番号=100、分類名=文学、図書名=△△△△などを複数入力し、
すべて表示させる。
392387:04/06/03 17:11
>>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件ごとに表示してください。
また、空白時、既に登録済みの分類番号がある場合はエラーメッセージを出力
してください。
すみません、説明不足で・・・。
397387:04/06/03 17:24
出来ないのなら、もし入れ子でリスト構造のオブジェクトを順々に処理していく時はどうすればいいんですか。
入れ子? 再帰じゃなくて?
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文を使ってなんとか完成させたのですが、
できるだけ大きい素数を求めたいので(賞金とれるほど大きい素数を求めたいわけではないですが)
できるだけ処理を減らし、効率の良い処理をするプログラムを作りたいです。
なにか良い方針などがあれば教えて下さい
401387:04/06/03 17:36
なるほど。礼は言わないぜbaby
402デフォルトの名無しさん:04/06/03 17:42
>>400
エラトステネスのふるいでぐぐれって
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
うん、じつはそお。
月曜日でもいいと言われたが、そのときは評価点が下がるらしい。
>>419
初心者なら評価低いのは当然なのでは?
つーか>>410大ヒントのよーな
public void setTypeName(String typename) {
this.typename = typename;
}

public void setTitle(String title) {
this.title = title;
}

Book にこのメソッドを足す。
422このクラスを足す:04/06/04 10:00
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);
}
423このクラスを足す:04/06/04 10:02

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 だったものと中身同じ
}
}

あとはメニューと入力部分。ちょっとまっとれ
424main 差替え:04/06/04 10:20
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);
}
427のこり:04/06/04 10:26
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
月曜までだろ?
できてるところのしくみをゆっくり解析してみれ。
このコード凄いな。。センスあるよ。。きっと。。なんかの。。たぶん。。
442434:04/06/05 23:45
どなたか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つと言えなくもない。
449長文なので分割:04/06/06 18:55
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);
450長文なので分割:04/06/06 18:56
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)
451長文なので分割:04/06/06 18:57
{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

数が三角形に配列するんですか。
そうですが。文句があるならはっきり言ってください。
462461:04/06/07 00:04
実行の仕方は、データファイルが money.txt なら。

>java Shukudai458 money.txt

money.txt のデータ形式がおかしいと即、例外で終わるので注意。
463461:04/06/07 00:17
あー、余計な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
Mathクラス使っちゃいかんの?
使っちゃいかんのなら
開平をやるか増やしたり減らしたりをやるか
>>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 とフルで書けばその必要は無いのでしたっけ?
>>484
フルで書けば必要なし
>>485
import するかフルで書くかは完全に個人の自由でいいのでしょうか?
クラスの構造が分かりやすいのでフルがよさげですが、
タイプミス、プログラムの見易さなど考慮するとimportがいいような・・・
自分はimportする派ですがどうでしょう?
お好きにどうぞ。読みやすさだけ考えればいい。
>>487
了解ですどうも
ガッコの課題で、住所録作れといわれたのですが、ぜんぜんわかりません。
概要は↓
ttp://shinjuku.cool.ne.jp/javajava/kadai.txt

後、使用するインターフェイスは↓
ttp://shinjuku.cool.ne.jp/javajava/PersonalData.java
ttp://shinjuku.cool.ne.jp/javajava/AddressBook.java

です。
何でもいいので教えてください。
>>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()メソッドを使ってはいけないって言われました
@see >>1
>>485
プログラミング上の注意のところの
>・ラベル、無限ループは禁止。
ラベル禁止ってどういうこと?
>>499
http://www.google.co.jp/search?hl=ja&ie=UTF-8&c2coff=1&q=java+%E3%83%A9%E3%83%99%E3%83%AB+break&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
知らなくても全然困らないが、知らないと馬鹿にされることがある。
要するに、多段で抜け出したいとき、途中では boolean 変数を使えってことでしょう。
>>496
ありがとう
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とする



ぜんぜんわかりません。よろしくおねがいします。
513512:04/06/10 22:47
ごめんなさい!!!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 どうとでも書ける。

デジタル信号処理の課題ってやってもらえますか??
522518:04/06/11 23:26
誤爆m(;;)m
523デフォルトの名無しさん:04/06/11 23:57
>>517
多分教授は大本営発表を待ってるはず。
http://jp.sun.com/products/software/javadesktopsystem/features.html
>>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 以外の答えを望んでるバカ教授はおまえの方から見限ってやれ。
526厨房:04/06/12 16:40
#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で調べたいんだけど、
どこに載っているのですか?
http://java.sun.com/j2ee/1.4/download.html
↑ここの↓これ。
J2EE 1.4 Platform API Documentation

それか
All-In-One Bundle。
>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 で FA だろ
>>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.*; しわすれ。
>>541
ttp://www.hellohiro.com/socket.htm
これの文字列をJavaに書き換えれ
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)
{
//埋めていただきたいところ
}

という問題です。よろしくお願いします。
>>548
>>527 に回答があるよ。
>>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()してやればいい。
555548:04/06/15 06:20
>>551 552
すみません、まったく気づけませんでした。
>あとマウス以外の方法使った場合、長方形の壁突き抜けて動けてしまうぞ。
それは組み方次第だろ。マウスがどうとかどう関係があるんだ。
「境界条件を意識しろ」という話題に、>>556のつっこみはセンスないな
>>557
では師匠、お手本をどうぞ。
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);
}
}
>>559
getAttribute "s"
>>558
模範つっこみをしろとでも?
ここはすごいインターネットですね
そもそも
>>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);
  }
573572:04/06/15 22:22
う、まちがえた、これじゃだめだ。
//これで多分いい。ためしに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
577568:04/06/16 00:15
はやい!
>>569,570
>>572-574
のみなさんありがとうございます!
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なんですか?
なにせ初心者なものでこの課題が難しいか簡単かもわからない始末、、
>>548-552 の流れを読め。
読んだら首吊って死ね文盲
>>581
スレタイ読んでくだされ…

学校の宿題は俺に…… for Java
584581:04/06/16 02:14
すみませんでした
ぼるじょあがC/C++の宿題を片づけますYO! 24代目
http://pc5.2ch.net/test/read.cgi/tech/1086612317/
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
>>607
いいです。だから死んでください。
606です。お願いします。
変数宣言してないっつ〜オチじゃなくて?
そういうミスでは無いです。newで直接SetStrokeに渡してもダメでした。何ででしょうか。
どのシンボルが解決できないか出てるだろう。そっから自分で考えたら?
newの下に_がついてました。newがダメって一体・・
もっちょい あと一歩
でもimportもちゃんとしてますよ。
がんがれ>>616
>>606
後ろから2つ目は配列みたいだが。
http://members.jcom.home.ne.jp/hikarufujimura/appendix/2D/BasicStroke/
http://skaiste.elekta.lt/Books/O'Reilly/Bookshelfs/books/javaenterprise/jfc/ch04_05.htm
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
どうもありがとうございます
助かりました
624名盤さん:04/06/18 17:13
>>622
最後の}でclassまたはinterfaceが必要と出たんですが、どうすればいいんでしょう?
どっかの { が足りないか、 } が多い。
インデントつけて、おかしいところを調べれ。
ちなみに //n) は全部同じ高さになるはず。
626デフォルトの名無しさん:04/06/18 19:06
BufferedReader
って何?
うちの授業でコレ使ってるの見たことないんだけど
バッファされた読む者
そりゃ、授業程度じゃ見たことないものの方が圧倒的に多いだろう
>>626
io の基本中の基本じゃないの?知っとけよ。
講師が用意した変なユーティリティクラスを使わされてるのか?
前にもそれっぽいクラス書いてる奴がいたけど。
半ばウソ教えられてるようなもんだ かわいそうに
バッファリングしなくても、読めるっちゃ読めるけどな。
632デフォルトの名無しさん:04/06/19 21:07
学校のPCに入ってる
エディタ(xyzzy)
ってのと
DOSプロンプト
ってのを自分のPCにも入れたいんだけど
どこでDLできますか
http://www.forest.impress.co.jp/lib/offc/document/txteditor/

スタート->すべてのプログラム->アクセサリ->コマンドプロンプト
>>632
Meadowもイイ
じゃなくて、スレタイ嫁ゴルァ
>>634
(;゚д゚)・・・乗り突っ込み
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++;
 }
}
638637:04/06/20 22:47
System.out.println(findnum + "こ見つかりました");
を書き忘れた。ま、分かるだろ。
639636:04/06/20 23:24
>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の使い方もよくわからないので、誰か教えてください。


642641:04/06/21 14:56
すいません追加でもうひとつ。
public void concat(IntList x)
意味:リストの連結
というプログラムを作れという問題です。
誰かお願いします。
>>640
なんか「このクラスを使うこと」「使わないこと」とかシバリある?

>>641-642
その IntList とやらのソースなりインタフェースなりを教えてくれないことにはどうしようもない。
644641:04/06/21 15:40
すいません、問題文を書きます。
以下の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;
}
645641:04/06/21 15:43
// 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();
}
646641:04/06/21 15:45
// 指定した値を持つ要素の削除
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;
}
}
長くなってすいません。
647641:04/06/21 16:08
テスト用に使うプログラムも追加。
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) 保存先と同じディレクトリに別のファイルを作り、最新分を書き込み、
 古い方から一個づつ読み込んで新しいのに書き込み、
 最後にファイルを閉じて、古い方を捨て、新しい方の名前を変える。
こんなとこかね。
652641:04/06/21 16:56
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;
}
653641:04/06/21 16:57
// 前への挿入
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 の仕様が分からんとなんとも言えんがな。
655641:04/06/21 17:17
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;
}
}
6581/3:04/06/21 18:32
>>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() );

}
6592/3:04/06/21 18:33
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;
}
6603/3:04/06/21 18:35
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);
    }
  }
}
669668:04/06/21 21:46
う、かぶってたのね。
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();
    }
  }
}
674641:04/06/22 01:16
できました!ありがとうございました。
「じゃんけんゲームをします。」
「何勝先取ですか?」



「第1回戦開始します。」
「じゃんけんほい…(グー:1、チョキ:2、パー:3)」



「1か2か3を入力してください!」
「じゃんけんほい…(グー:1、チョキ:2、パー:3)」



「コンピュータ君はチョキです。あなたはチョキです。」
「あいこです。」
「じゃんけんほい…(グー:1、チョキ:2、パー:3)」



コンピュータ君はグーです。
あなたはチョキです。
第1回戦、あなたは負けました。
現在、あなたは0勝1敗です。
第2回戦開始します。


第4回戦、あなたは負けました。
現在、あなたは0勝4敗です。
あなたは完敗です。
コンピュータのコメント「出直して参れ!!」
「あなたは西暦何年生まれですか?」

1980

「何月ですか?」



「何日ですか?」

45

「ありえません。何日ですか?」



「あなたは木曜日生まれです。」



注!うるう年には注意してください。
うるう年は、

(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);
}
}
682677-681:04/06/22 14:31
少しだけ実験 (実行テスト) してみたけどちゃんと動いてる
これ以上はマンドイので自分でやってください
ソース汚いのは許してねw
683640:04/06/22 20:48
>>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度上が短調

これ以上は、和声学の知識が必要。
>>687
それ厄介な方法じゃない?
最初と最後の音でだいたい決まる。
なんにしろ 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個も指定するの?
698695:04/06/24 16:26
分かりました、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]);
これなに?
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=94

摂氏の温度をテキストフィールドに入力して、これを華氏の温度に変換するアプレットを
上のプログラムを改造して書け。さらに、2つのテキストフィールドを用いて、
摂氏と華氏の変換を双方向に行える(片方のテキストフィールドの値を変えると、
もう一方のテキストフィールドの値が変わる)ようにせよ。
※(華氏の温度)=(摂氏の温度)×9/5+32
※String型をdouble型(実数の型)に変換するには、Double parse Doubleという
クラスメソッドを使う。

お願いします。
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で終わりそうなもんだが。。
>>706
ありがとうございました
STL(C++)のnth_elementの実装真似すれば?
712デフォルトの名無しさん:04/06/26 22:31
>>707
ソートなんかする必要ないじゃん。
配列全体一回舐めれば終わりでしょ。

713712:04/06/26 22:37
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とかを使おうと思ったのですが、
これだと最初に描画したらそのままで動かせません。
どうしたらいいでしょうか。
一応スレッドの使い方は勉強しました。
715714:04/06/27 01:13
今はJButtonを敷き詰めて
setBackgroundColorを変えることによるブロックが落ちるのを見せてます・・
それだとあまりにもダサイです。
>>714
1.paint()内部で、インスタンス変数を元に描画位置を決めてドロー
するように実装する。
2.シーンの進行とともにインスタンス変数を変更する。

でいいじゃん。
>>714
作ってみたが、拡張性とかあんまり考えていない。参考までに。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=131&fi=no
718714:04/06/27 03:28
>>716
あまりに焦っていてインスタンス変数の事を考えてませんでした。
恥ずかしい・・・
ありがとうございます。
>>717
わざわざGUIのソースまで書いてもらってすいません。
大変参考になります。
宿題はもちろん丸パクリではなく、参考にさせて頂いて作ります。
ありがとうございました。
719Name_Not_Found:04/06/27 04:34
オレも>>714と同じ課題が出てる・・
720714:04/06/27 05:22
>>719
一緒に頑張ろうぜ
 今 日 の 23:59 ま で な !
721714:04/06/27 07:49
YOSHI!
おかげさまでテトリスというか、
テトリスのブロックがランダムで出て落下するものは出来ました。
回転、横移動も出来ました。
これも皆様のおかげです
ありがとうございました。
722714:04/06/27 07:51
聞き逃げのようですいませんが、
一応学校に提出するものなので
作ったソースをここに晒すことはできません。
予めご了承下さい。
723719:04/06/27 11:16
オレはまだ何もできてないぜ!

OTL
724719:04/06/27 11:18
714さんは2年の方ですか?
私は2年ですが、いきなりこんな課題出されても・・って感じです。
とりあえず教科書読んで勉強してます。
725デフォルトの名無しさん:04/06/27 12:18
>>714
>ここの方ならサクっと出来ると思うので質問させて下さい。

俺らが楽に出来るかどうかなんて関係ねーんだよボケが。
簡単に出来るんだったら何でも無条件にやってもらえるつもりになってんじゃねーよ。死ね。
726714:04/06/27 12:32
ぐえー(絶命)
>>725
ここは、そういうスレなわけだが
オレに>>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
よろしくお願いします。
735733:04/06/27 14:42
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 でよかった。これはミス。
737初心者:04/06/27 14:45
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
>>741
mが固定ならできました。
あ、かぶった。
5分で考えたならそれは再帰だと思うがなあ。
メソッド内でそのメソッド自身を、引数を変えて呼ぶってのを習わなかった?

>>737
日本の時間なら常に 9時間、と決まってるわけだが。
>>740 の挙げてる、実行マシンの設定に対して、ということでいいの?
あ、失礼・・それは作ってるのか。でも規則性とかあるやん・・
747デフォルトの名無しさん:04/06/27 14:53
>>746
たぶん、君にはできないw

一応、再帰を使ったものはできたけど。
再帰を使わないでできた人いる?

中2の宿題にしては難しいな。
748デフォルトの名無しさん:04/06/27 14:55
>>745
>メソッド内でそのメソッド自身を、引数を変えて呼ぶってのを習わなかった?
習ったような習ってないような・・・
コンピューター実習の時間にゲームやってたりするので、
聞き逃したかもしれません。
ちょっとプリントを見直してみます。
進学校なのかどうかは知らんが、それではおいてかれるぞw
750733:04/06/27 15:02
てか今時は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通り。

再帰考えないでやってみようと思ったけど、クソ汚くてだめだ。
結局、スタックを自前で用意するか、それと同等の処理をすることになるからな。
756755 一応再帰無し:04/06/27 15:58
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("]");
}
}
757755 一応再帰無し:04/06/27 15:59
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++;
}
}
758755 一応再帰無し:04/06/27 16:00

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か・・・
実はなんちゃって中学生?

俺の中学時代は勉強よりも部活に燃えてたな・・・
正直、テトリスより難しい。
767714:04/06/27 20:37
正直、お前等が輝いて見えすぎです。
ぷよぷよよりは簡単だな。
こういう課題は燃えるな・・・。
純粋にアルゴリズムの問題。

知識あり(ほとんど定型だから、探せばいくらも既存のあり)、
工夫あり(自分で制限つけてやるもよし)、
楽しい。
「工夫」の線で、木を作ってやってみようかと思ったが、冗長にもほどがあった。
どうも俺はそのへんを図る能力にかけているらしい。
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;
 }
}
772771:04/06/27 22:23
TRUE/FALSEを要素に持つ可変長リストと、次のリストの状態を導出するメソッド
があれば、可変長の処理できそうだね。
773759:04/06/27 22:52
ごめんなさい、式が間違っていました。一応正しいのかいておきます。

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;
}
774759:04/06/27 23:04
うげ、まだちがってる。訂正。
×new _smallest
○new_smallest

スマソ
775中2:04/06/27 23:09
皆様、ありがとうございます。
再帰がどうもわからなくて、ここの模範解答を見ながらやりましたら
ようやくできました。
更に3時間かかりました。

面白いという反応があったので
夏休み用の宿題があるんですが、ここに載せましょうか?

まだ私は見ていないのですが・・・
776714:04/06/27 23:11
>>775
 キ ボ ン ヌ 

さあ、大学2年の漏れに解けるかどうかッ!
77730過ぎのオヤジ:04/06/27 23:14
夏休み用の宿題?今ナツヤスミなのか、ヘェー。
778中2:04/06/27 23:18
夏休みの自由課題は
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のプログラムが配られるみたいですが、
まだホームページからダウンロードできません。
779中2:04/06/27 23:19
>>777
教科書の最後に載ってます。
少なくともここで解答が発表されるのは8/31だな
いや深い意味は無いがw
>>778
それって上の組み合わせの問題より簡単じゃないか?
こうやって見ると、やっぱりプログラミングってターノスィーネ〜。
783中2:04/06/27 23:28
そうですか?
私にはさっぱりなんですが。
最短経路ってどうやって求めるんですか?
x^2+y^2=z^2
みたいなのを計算する?
>>783
プログラムでやるんだから、手当たり次第という方法が使えるノデス。
78530過ぎのオヤジ:04/06/27 23:32
仕事でやるJSP/サーブレットでデータを右に左に移すだけのソースを書くより
よっぽど頭を使うというところが、なんだか情けなくなってきた…orz
単純に入り口探して、出口探して、x-1〜+1とy-1〜+1とマッピングしながら進めばいいのでは?
こんなアナログな解決法だと笑われちまうかなw
787中2:04/06/27 23:37
すいません、書き忘れましたが
スタートは左上[0,0]でゴールは右下[n,m]です。
いくつも候補をリスト化して、壁にぶち当たったら次の候補へ
あとは「輪状に繋がっている場所に踏み込むとあぼんする」からここはもう来たといマッピングも必要かな。
1.迷路→通行可能な経路によるツリー構造に変換
2.ゴールにたどり着く経路だけを取り出して、その中で一番短い経路を返却

ってとこかな。ココにコード書こうとすると1レスじゃすまないな。
循環サラリーマン問題ってやつ?違う?
>>790
まったく違うw
ダイキストラタンをもっとリスペクトしる!
793デフォルトの名無しさん:04/06/28 00:52
中2の宿題の割には難しいな。
これができない本職プログラマーは多いだろう。
7割くらいができないとみた。
>>793
んなバカな。多くて2割でしょ。
結局テトリスは未提出になったオレ
再履修確定
>>795
赤の他人に恨み節ですか。痛いですねあんた。
おいおい被害妄想もいいとこだ
本当に中2だと信じているやつはいるのか?
799デフォルトの名無しさん:04/06/28 09:51
中2の宿題ができない人だ
>>793
できない奴は本職といっちゃいけない
タクシーで言えば白タクみたいなもの
>>778の課題は、まだ解答載せないほうがいいのか?
802デフォルトの名無しさん:04/06/28 17:43
>>801
どっちでもいいような。
ググレばそこら辺に似たようなのはいっぱいあるけど。
ダイクストラで60行くらい。
なんで java.awt.Point 使わせないのかね。equals 使えてちょっぴり楽なんだけどな。
804801:04/06/28 18:50
じゃあいいか(T△T) ソース汚いし。。
検索部分だけなら再帰で10数行だしな
805714:04/06/28 22:41
>>795=>>719か?
残念だったな
まあ、何だ。来年があるさ。
>>805
来年、頑張りますよ
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=100

このプログラムを改造して、正n角形の全ての頂点を結んでできる図形(ダイアモンドパターン)を描画する
アプレットを書け。(追加・変更部分にはコメントを記述すること)
変数 i のとなりに j 追加
i の for の一段中に for(j=i+1; j<numPoints; j++) {} 追加
theta2 = Math.PI*2*j/numPoints; に変更

以上
だれか>>676やってください
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()));
  }
}

適当です、あまり動作チェックしてません。
くそっタッチの差だった・・・・
812810:04/06/29 12:41
811さんのも気になるぞ〜
813811:04/06/29 12:56
ほとんど同じ。最後だけこう

String wdnames = "日月火水木金土";
int w = tmp.get(Calendar.DAY_OF_WEEK);
System.out.println("「あなたは" + wdnames.charAt(w) + "曜日生まれです。」");

ところで、「うるう年」がどうしたこうした言ってるってことは、
たぶん Calendar クラスの利用は想定してないってことだ(Calendar 使えば全部やってくれるから)。
365 * y + (y/4) だのなんだのかんだのして %7 してとか、
本当はそんなことをしなきゃならないと思う。


誰かやって。
814810:04/06/29 13:18
Zellar(?)の公式を使うとか(Calendar使うのとあまり変わらん気がするが)
まぁ、それは他の人にやってもらうとして…名無しに戻ります。
中学生でJavaですかぁ…
私は高1なんですが
ttp://lecture.ecc.u-tokyo.ac.jp/~cichiji/cp-03/cp-03-04-3.html
これの演習ができないです…
回答もどこにもないし 教えてくれませんか?
>>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
ほとんど答え書いてあるじゃない。
「階乗を求めるプログラム」ちょこっと変えればできるよ。
822818:04/06/30 09:41
アドバイスありがとうございます
参考にして頑張ってみたいと思います

エルトン・ジョンのふるいでも書いて提出すれば先生に一目置かれるぞ
「イヤミや奴」と。
>>822>>815 への間違い。>>818 は分かってるだろうけれども。
今度自由研究で簡単なゲームを作ることになって、
音ゲーを作ろうと思ってるんですが全然手が出ません。
誰か簡単でいいので作ってくれませんか?
出来そうな物を作ろうと思えよ。
自由課題で全然手が出ないものを作ろうと思う神経が理解できない。
俺も理解できない。
自分ができる最大限のことをやるのが自由研究じゃないの?
最低合格ラインはこのくらいです、って提示されたら作ってやらないでもないけど。
GUI ありじゃめんどくさくてどうかね。
>>825
やねうらおで検索してみろ
>>828
フランスパンで笑わせやがって
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;
833830:04/07/01 22:39
都会の人はうそつきだ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()));
    }
  }
}
836835:04/07/01 22:58
> Date date = new Date();
これいらなかった。消しといて。
837835:04/07/01 23:05
あ、いるか。ごめん。すれ汚しスマソ。
>>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 の中に変数の初期設定が入ってるから、まったく同じ計算だけ繰り返してた
839超初心者:04/07/02 17:42
円周率を求めるプログラムがわからないです。
どなたか教えてください。
>>839
>>640 以降
841初心者:04/07/02 17:54
7/21(最終授業日) 試験: 最終課題の提出者には順次メールで成績を通知する(〜7/16)。最終課題が提出できない者は試験(テキスト持込可)にて成績決定。通知した成績に不満の人は試験を受けられたい(成績は試験の結果のみにより評価、不合格もあり得る)。


--------------------------------------------------------------------------------

7/7,7/14 実習: 3Dアプレットを創作しよう! (複数の立体をソリッドモデルで表現、陰影、相貫体なども可)

[課題:] ( 参考 ) 3次元ビュー変換による図形の表現 (提出期限:7/14、PM7:00)。

これができないと、単位を落としてしまいます。お願いできませんか?
>最終課題が提出できない者は試験(テキスト持込可)にて成績決定。
って書いてあるだろうが。観念して試験をうけろ。

>>1 も読め。
>ただGUIかんけーはめんどクセーから、放置するぞ!
「このくらいちょちょいとできる奴には試験の必要ないな。デキル奴は楽しくやってくれ」
という意味の課題だろ。それを人にやってもらって提出なんて、分不相応もいいとこ。
http://ortros.den.rcast.u-tokyo.ac.jp/~mitani/Java/java3d/index.html
これ読みながらやってみるとか。
そこのサンプルいいよね。
知識に乏しかったから、陰影の奴かなりびびった。
でも説明読むとかなり簡単なことを知って、さらに驚いた。
陰影じゃなくて「手書き風」だった。
センスなんだなぁやっぱり。
簡易エディタ付で10万の案件だな
格安だろ
848初心者:04/07/02 18:25
>>842
すいません。授業も教科書もサッパリで、「作れ」って言われても何もできないんです。
一般教養の授業なんですが、必要な単位なんです。
ですので真剣に取り組んだのですが、本当にさっぱりなんです。
教科書に書いてあることをどう組み合わせるの?という感じです。

>>844
ありがとうございます。参考にさせていただきます。
849超初心者:04/07/02 18:45
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;
}
858857:04/07/04 23:05

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);
}
}
}
859857:04/07/04 23:07
継承に関する問題です。
1)IntStack をスーパークラスとして,次のメソッドを追加したクラス
NthStack を定義せよ.

public int nth(int index)
機能:スタックの上から index 番目(一番上は 0 番目とする)の値を返す.index 番目の値が存在しない場合は,プログラムを強制終了する.
返却値:スタックの上から index 番目の値.
2)Intstackの実装方法を配列を用いたものに変更せよ.
それにともなって,NthStackの定義を変更する必要があるだろうか?
変更する必要があるのならば,NthStackの定義を変更せよ.

860857:04/07/04 23:09
もう一個お願いします。
class IntStack2 {
protected int val;
protected IntStack2 next;
  // 後は,IntStackクラスと同様なので省略.
}
1)IntStack2 をスーパークラスとして,次のメソッドを追加したクラス NthStack2 を定義せよ.

public int nth(int index)
機能:スタックの上から index 番目(一番上は 0 番目とする)の値を返す.
index 番目の値が存在しない場合は,プログラムを強制終了する.
返却値:スタックの上から index 番目の値
861857:04/07/04 23:10
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 と同じ実装にした方がいいのではないか。
問題としてこういうのはどうだろう。

あんまり検証してない。まだ勘違いしてるかも。
へんなとことかエレガントな方法があったら、諸兄らにお願いしたい。
869857:04/07/05 13:28
各要素に対するアクセス速度が配列と同等で,
末尾に対する挿入と削除が(多くの場合)一定の時間で行われるようなデータ構造
(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倍にしていくのが良いだろう.
870857:04/07/05 13:37
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] + "です");
}}}
>>871
小学生の僕でもわかりそうなもんだが
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;
}
875830:04/07/05 21:56
>>838
ほんとたすかりました。どうもありがd(*´ωV)
答えが合わないのはなんとかします。どもでした。
876873:04/07/05 22:05
>>874
ありがとうございます。
プログラムのほうきちんと動作しました。

ひとつ質問なのですが、
return find(nd.l,target) | find(nd.r,target) | result;
はどういった文の書き方なのでしょうか?
returnとしてこのような書き方は初めて見ましたので、
どのような働きをさせるのか教えていただけると嬉しいです。
>>876
論理和

一つ以上trueならtrue、全てfalseならfalseを返す。
878873:04/07/05 22:23
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);
880873:04/07/05 22:53
>>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]);
}
}
882881:04/07/06 00:44
ごめん、まちがえた。
数値読み込みのエラー処理が欠けていたのと
中央値の定義が適切じゃ無かったよ。

ここにあげておいたので、こっちを使ってください。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=239

ただ、微妙に技巧的な部分があるので、
提出前にそこら辺を理解して教師の質問に耐えれるようにしないと、
このソースをそのまま提出するのはちょっと危険かもしれない。
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);
}
}
886884:04/07/06 01:48
>>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,どちらかを選択してください.



0か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個の整数を入力し、それらの公約数を表示させるプログラムお願いします。
8941/3だわさ:04/07/06 11:12
>>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;
}
8952/3だわさ:04/07/06 11:12
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を入力してください。");
}
}
8963/3だわさ:04/07/06 11:13
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);
}
}
}
>>889
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=241
ゲームの設定を変えるためにはコンパイルが必要なのは問題かもしれないけど、
可能な拡張が全て入ってます。

ついでに
Dynamic Programming を使ってCPU 側が必ず勝利するルートに入ったら、
必ず CPU 側が勝利するように作ってあります。

別の課題?
これでゲームをするともてあそばれているのが分かるよw。
900899:04/07/06 13:52
一箇所比較間違えてました。
訂正です

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ケタの数字を当ててください。
正解の数字は、乱数に従って、コンピュータが毎回任意に決定します。

★ヒット・アンド・ブローゲーム★

何人でプレーしますか?



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
>>914
ありがとう。
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
実行すりゃすぐわかる。
どうしてここで聞くのかがわからん。
918911:04/07/07 12:27
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=144&fi=no
どうも最強 CPU です。
ヒットアンドブローを平均 6 手位で解きます。
class CPU を追加しました、class Q904 はほとんど弄っていません。
遊んでみると楽しいですよ。
919デフォルトの名無しさん:04/07/07 13:01
>>917
その通りでした
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ボタンを押すと回答が表示されるようにしたいのですが。

>>921

ttp://black.sakura.ne.jp/~third/system/java/Gjava20.html
とりあえず、ここらへんが参考になると思う
これに書き足して作ってみては。
>914
実はもう一個誤りがあったり。。。
3. getInstanceで同期とってないのでタイミングによっては複数インスタンスが作れる
924デフォルトの名無しさん:04/07/07 22:20
>>922
どうも921です。でもなんかそのサイトにアクセスできない...。
時間もあまりないので誰か教えて下さい。
お願いします。
イメージアイコン使うのが一番楽
926921:04/07/07 23:01
イメージアイコンですか。使ってますけど、上手くできないんですよね。
できたら上の部分のプログラムだけでも実際に書いて貰えるとかなり
助かります。ほんと申し訳ないです。
927初心者:04/07/08 01:48
http://www.h5.dion.ne.jp/~nnempire/gate/Gate.html
において、ソースをコンパイルするとエラーが出るのですが、解決の方法をどなたか教えていただけないでしょうか?
>>927
どんなエラーかくらい書けや
929初心者:04/07/08 01:53
2つあって、両方とも「シンボルを解決できない」と出ます。
8行目と223行目で、
クラス:ViewPort
場所:Gateのクラス
で、両方ともViewPortの「V」のところにチェックが付いています。
930初心者:04/07/08 01:55

誤)クラス:ViewPort
正)シンボル:クラス ViewPort
です。助けて下さい・・・
ViewPortが無いよ
動かすだけでよいのならViewPort.classをもらってくれば?
>>930
シンボルを解決してみ
933デフォルトの名無しさん:04/07/08 09:48
>>923
同期をとるとはなんでしょうか?
934デフォルトの名無しさん:04/07/08 09:52
>>933
メソッドにsynchronizedを付けるがいい
>>926
今君の書いてるプログラムにあわせたものでないと
何の参考にもならんと思う
936プログラミング大好き:04/07/08 16:24
コマンドラインで指定した回数だけ、2つの乱数の組x、yを発生させ、その乱数を元に
円周率πを求めるプログラムPaiPai.javaを作成せよ。

ってヤツだけどさ、(x,y)の点を表示させて、その点が、円の範囲内に入ればいいんじゃないの??
学校の課題かな?
ちょっと、プログラム組んでみようか??
どうぞご自由に
938親切大好き:04/07/08 17:01
>>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);
942939:04/07/08 20:38
8つダーっと数字を入力したら合計が出るようにするプログラムです

例えば








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(); //ランダムの宣言
こんなものでどうだろう??

ここってよーするに、
宿題やってもらうスレ?

宿題やってくださいじゃ相手にされないから
こういうスレタイにしてんの?
>>945
答えてるのは全部>>1さんですよ
でも>>1は俺だよ?
そろそろ新スレ?
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
>>953
なかったですが・・・
なければ自分で立てるんだ。人に頼るな!
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
>>956

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=249
しかし、MAX_INT とは、
一瞬だけそんな定数があると思ってしまった自分が腹立たしい、
Integer.MAX_VALUE じゃないかよ!!!

まぁ、ダイクストラのアルゴリズムを書かされるということは情報系?
それとも教官の横暴?

教官の横暴ならいいけど、情報系なら・・・・・・。