元のスレッド 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50


学校の宿題は俺にやらせて下さいver.2.0βfor Java
1 名前:デフォルトの名無しさん []:04/02/06 16:53

おい!厨房ども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 名前:デフォルトの名無しさん[sage]:04/02/06 16:54
2?

3 名前:鳥取砂丘&rlo;ムレーハ村リ゚フ@&lro; ◆Dream/3P/. []:04/02/06 16:56
深海型さっきゅんがよゆうで4げっと
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
             。 。
             || ||  /⌒ ヽ.
             / ⌒ヽ( /⌒ヾ )
            ((゚Д゚,,))ゝヽのノノ
           ⊂⊂ _____つ   ))    ))


4 名前:デフォルトの名無しさん[sage]:04/02/06 16:56
添削だとすれば、スレにソース貼ると仮定して 5レスくらい
=百数十行におさまるくらいが限度だな

5 名前:デフォルトの名無しさん []:04/02/06 17:10
そうだいなすとーりーのげーむをつくてください

6 名前:デフォルトの名無しさん[sage]:04/02/06 17:14
switch (rnd.nextInt(1000000)%1000000) {
 case 1 :
  System.out.println("小惑星にぶつかりました - THE END - ");
  System.exit(-1);
 default :
  System.out.println("星空が綺麗です");
  break;
 }
>>5
コア部分

7 名前:デフォルトの名無しさん[sage]:04/02/06 17:23
コスモを感じるぜ

8 名前:デフォルトの名無しさん[sage]:04/02/06 19:00
まだベータか。次にみるときは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

このような形のプログラムを作っていただけないでしょうか?
よろしくお願いします!!
キーボードから年と月を入力、その後うるう年かを判別し表示する。
入力された年の月をカレンダーにして表示するプログラムです。


10 名前:デフォルトの名無しさん[sage]:04/02/07 17:34
>>9
void main()
{
//入力された年の月をカレンダーにして表示する関数です。
calender();
}

11 名前:デフォルトの名無しさん[sage]:04/02/07 21:08
>>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();
  }
}

12 名前:デフォルトの名無しさん[sage]:04/02/08 21:04
すいません、テキストフィールドが変更したらすぐにイベントが起きるようにしたいのですが、
どのようにすれば良いですか?
下のように頑張ったのですが、これだと、テキストフィールド内でEnterを入力しないと動かないのです。。。

text1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
System.out.println("テキスト変更検出");
}
});

13 名前:デフォルトの名無しさん[sage]:04/02/08 21:16
AWTならaddTextListener
JTextFieldならgetDocument().addDocumentListener。
後者だとMVCできれい。


14 名前:デフォルトの名無しさん[sage]:04/02/08 22:07
>>13
ありがとうございます。
なんとか上手くいきそうです。
実は、これ宿題じゃなくて仕事なんです、スレ違いですいません。
でも、大変感謝しています。
もし、このシステムが稼動したら名簿に「13」と書かせて頂きます。


15 名前:デフォルトの名無しさん[sage]:04/02/08 23:51
>>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("* ");
}
}
}
}
}

17 名前:デフォルトの名無しさん[sage]:04/02/09 18:16
>>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
*
**
***
****
これはできたのか?

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

_の部分の数を段数から計算で求めればいい。

19 名前:18 []:04/02/09 18:18
ガ━━ΣΣ(゚Д゚;)━━ン

20 名前:デフォルトの名無しさん[sage]:04/02/09 18:19
>>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言語関連にスルーお願いしまつ。

24 名前:デフォルトの名無しさん[sage]:04/02/16 18:44
文字列を数値に変換してそれをint型の変数に入れたいのですが
例えば
char buf[] = "23456";
int num;

こんな形だった場合、numに数値の23456を入れるにはどのようにするんでしょうか?
bufに入るのは数字のみです。

宿題なのに質問スレに書いてしまった_| ̄|○lll スマソ

25 名前:デフォルトの名無しさん[sage]:04/02/16 18:55
>>24
num = Integer.parseInt( new String(buf) );

26 名前:デフォルトの名無しさん []:04/02/19 15:56
学校でテキストファイルを読み込んでhtml形式で保存するってのが出ました。
BufferedWriterを使うんだとは思うのですがうまくいきません。
どなたか助けてください。

27 名前:デフォルトの名無しさん[sage]:04/02/19 16:04
どううまくいかんの?
HTML形式への変換はうまくいったけど出力がだめなんかな?

28 名前:デフォルトの名無しさん[sage]:04/02/19 16:04
>>26
html形式で保存するって…

ファイルの頭とケツに適当に tag つけるだけでいいの?

29 名前:デフォルトの名無しさん[sage]:04/02/19 16:06
>>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();


30 名前:デフォルトの名無しさん[sage]:04/02/19 16:07
>>28
あと改行を<br>にするとかかな

31 名前:デフォルトの名無しさん []:04/02/19 16:08
不等号を < 等に置き換えるとか

32 名前:デフォルトの名無しさん[sage]:04/02/19 16:09
しまった &lt のことね

33 名前:デフォルトの名無しさん []:04/02/19 16:12
>>27
コンパイルだけは通るのですが、出来たhtmlが空ファイルになってしまいます。

>>28
ソース中にプレーンテキストファイルを指定して、その内容がそのままhtmlとして作成されればOKです。

34 名前:29[sage]:04/02/19 16:18
>>31-32
ああ、そこら辺のリプレースやってねーや。
まあ、いいか。
1.4以降ならreplaceAll使えば簡単だしな。
1.3以前でもORO使えばいいしな。

35 名前:26[sage]:04/02/19 17:11
遅くなりましたがみなさん、ありがとうございました。

36 名前:デフォルトの名無しさん []:04/02/19 18:01
26さんのに似てると思うけど、javaを使ってcsvファイルを表としてhtmlに変換するにはどうすりゃいいの?

枠線とかも入れなきゃいけないんだけど、htmlの知識に乏しいのでおながいします。

37 名前:デフォルトの名無しさん[sage]:04/02/19 18:04
HTML知らないでTABLE使うのは無謀かと思うが・・

38 名前:デフォルトの名無しさん []:04/02/19 18:10
>>37
javaもhtmlも平行して習っている最中なんで、訳わからんのです。

39 名前:29[sage]: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>を書き込む。
書き込み先を閉じる。

40 名前:デフォルトの名無しさん[sage]:04/02/19 18:16
0文字の時は<br>埋めたり

41 名前:デフォルトの名無しさん []:04/02/19 18:24
>>39
お願いです。
ソースとして書いてもらえません?

42 名前:29 []:04/02/19 18:30
>>41
それくらい自分でやれ

43 名前:29[sage]:04/02/19 18:44
>>41
おいおい、あそこまで丁寧に書いてやったのにわからないのかよ。
回線切って、先生に土下座してこい。

44 名前:29[sage]:04/02/19 19:15
>>41
甘えるのもいい加減に汁

45 名前:9 []:04/02/19 19:28
ちょっと前にお題を出した9です。
>>11 さんありがとうございました。
後で、曜日をSUN MON...と直しました。
そして10以降の日付の位置も空文字で調整したのですが
最初の週の数値がうまくあるべき位置に出力されないのです。
うまくぴったり曜日の下に出力をできるように教えていただきたいです。
誰かお願いします。


46 名前:9 []: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");


47 名前:デフォルトの名無しさん[sage]:04/02/19 19:35
41 ではないが、ここは
 学校の宿題は俺にやらせてください
スレじゃないのか?それとも
 やり方を教えさせてください
スレなのか?

48 名前:29[sage]:04/02/19 19:37
>>47
よし、次スレからは「Javaの宿題がわからない私を調教してください」スレに。

49 名前:9 []: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();
}
}


50 名前:9 []:04/02/19 19:41
一回作ってもらったんですがうまくいかなかったんで…、
じゃあダメですかね?
dayofweekをifで条件つけて1-7まで分けて位置を調整しようとしたんですが
何か結局うまくいかなったんです。
駄目ならいいですが、っていいつつ乗せてるのも何なんですけど。

51 名前:デフォルトの名無しさん[sage]:04/02/19 20:03
>>50
オレ、それの回答のレスみて試して見たらずれてたんで
該当するところにスペース2つ入れて直したぞ
for (int i = 1; i < dayOfWeek; i++) System.out.print(" ");//<-ここのスペースを1つから3つに

自分で適当に変えたなら、元に戻して試せ

52 名前:51[sage]:04/02/19 20:05
多分元のやつも解答したときには3つあったんだろうけど、
ここに載るとつぶれるからな

53 名前:デフォルトの名無しさん[sage]:04/02/19 20:14
全部間隔あけるのか。適当にスペース増やして見たら。

10日未満なら1つ増やしてるのを2つにして、10日以降も1つ増やすところと、
行末に改行だけしてるところに、1つ追加するとこだけ気をつければ
あとは適当にやってれば合うと思うがな

54 名前:デフォルトの名無しさん[sage]:04/02/19 21:15
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);
}
}

どなたかお願いします。

56 名前:デフォルトの名無しさん[sage]:04/02/19 22:09
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();
}
}


57 名前:55[sage]:04/02/19 22:20
nameで表示できるんですね。p.nameにしてずっと考えてました。
あほでした。ありがとうございました。

58 名前:11[sage]:04/02/20 04:21
>>50
ごめん。半角スペースがつぶれてたみたいね。

>>51
さんくすこ。

59 名前:デフォルトの名無しさん[sage]:04/02/20 04:26
>>36
解決した?ソースいる?

60 名前:36 []:04/02/20 10:58
>>59
お願いいたします。

61 名前:59 []: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();
  }
}


62 名前:59[sage]:04/02/20 11:52
つか、StringTokenizerだと値が空だとずれるね。
カンマの数を数えるなりして、>>39のString#split(String, int)しないとダメか。
さらに、空行のチェックもしてないし、>>31>>40も考慮してないや。
まぁ、それを言い出すと""とか"エスケープとか、先頭行をカラム名にするとか、
色々出てくるし、宿題でそこまで要求されることも無いだろうけど、
対応しなきゃいけなさそうな要件があったら知らせて。


63 名前:デフォルトの名無しさん []:04/02/20 11:55
SQLも聞いて大丈夫でしょうか?


64 名前:デフォルトの名無しさん[sage]:04/02/20 11:59
SQL そのものは板違い

65 名前:デフォルトの名無しさん[sage]:04/02/20 12:07
CSVとCVSを良く書き間違えます。
書き間違えなくなるPGを教えて下さい。

66 名前:29[sage]:04/02/20 12:09
>>65
C・S・V!C・S・V!と連呼すると脱ぐ女の子と、C・V・S!C・V・S!と連呼すると脱ぐマッチョを用意しろ。

67 名前:デフォルトの名無しさん[sage]:04/02/20 12:12
いゃ〜ん、逆にして〜

68 名前:デフォルトの名無しさん[sage]:04/02/20 12:13
(comma-separated-values)

69 名前:デフォルトの名無しさん[sage]:04/02/20 12:21
>>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文に問題があるんでしょうか


71 名前:29[sage]:04/02/20 12:36
>>70
残念ながらPHP+SQLとなると話は別だ。
失せろ。

72 名前:デフォルトの名無しさん[sage]:04/02/20 12:38
大馬鹿者。






."$id" か .$id じゃないか?よく知らんけど。

73 名前:デフォルトの名無しさん []:04/02/20 12:38
そのJAVAをこよなく愛する貴方に惚れた!

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

もちろんsunの株主さまですよね

74 名前:デフォルトの名無しさん []:04/02/20 12:40
結合演算子なんてどこに入れたって同じに決まってんだろsun

75 名前:69[sage]:04/02/20 12:43
ごめん。そう来るとは思わなかった。あまりにも広義すぎてほぼ無関係な仲だよ。
多分>>72だけど、pg_result_error($result)でエラーメッセージ見るくらいしろよ。

76 名前:デフォルトの名無しさん[sage]:04/02/20 12:45
もう死んでいいよ
Java と全然関係ないことでやってきて
SQL と全然関係ないことで間違ってて
指摘されたことと全然違うところで逆切れしてて
救いようが無い

77 名前:デフォルトの名無しさん[sage]:04/02/20 12:46
しかも、宿題じゃないだろ、それ。

78 名前:デフォルトの名無しさん []:04/02/20 12:47
>>77
が真実

79 名前:デフォルトの名無しさん []:04/02/20 12:51
おまいらユーモアのかけらも無いな

何だかんだ言って笑ったんだろ、そーなんだろ

80 名前:デフォルトの名無しさん[sage]:04/02/20 12:53
>>77-78あたりにちょっと。

81 名前:デフォルトの名無しさん[sage]:04/02/20 12:58
>>79
で、解決したのか?

82 名前:デフォルトの名無しさん []:04/02/20 13:02
まぁ直らないんだけどな

ちなみにidはvarchar(2)NOTNULL

83 名前:デフォルトの名無しさん[sage]:04/02/20 13:06
flg の方も怪しいな
いいから PHP のスレに行けよ

84 名前:デフォルトの名無しさん[sage]:04/02/20 13:08
>>81
このスレ的には「解決」とは >>70 がPHPスレに行くことを言う。

85 名前:デフォルトの名無しさん []:04/02/20 13:13
もうこねぇよ、

86 名前:デフォルトの名無しさん[sage]:04/02/20 13:21
もう来ないならいいが、
$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
完成しました、おまいの脳内で

91 名前:36 []:04/02/20 15:15
>>59
ありがとうございます。
ちょっと今はコーディングできないので、後ほどまたレスさせてもらいます。

92 名前:デフォルトの名無しさん[sage]:04/02/20 15:22
3月半ばまでにJAVAで「ミスタードリラー」か「ボンバーマン」を作れなんていう
ろくでもない事を言い出した先生が出現しちまいました。

著作権って言葉を知らないんだろか?

93 名前:デフォルトの名無しさん[sage]:04/02/20 15:27
個人で楽しむなら自由です

94 名前:87 []:04/02/20 16:07
なんだ
このスレ、アルゴリズムはおろか
コーディングすらできない連中の集まりか。

95 名前:デフォルトの名無しさん[sage]:04/02/20 16:09
>>94
その通りです。
87さんが作ってくれるのを楽しみにして待つしか能がありません。
頑張って今までに誰も見たことの無い様なスクリーンセーバー作ってくださいね。

96 名前:デフォルトの名無しさん []:04/02/20 16:10
>>94
まだか、ゴルァ!!

97 名前:87 []:04/02/20 16:11
おいおい
なんで俺がつくらなきゃならんのだ?
根本的に意味不明

98 名前:デフォルトの名無しさん []:04/02/20 16:14
>>97
宿題やりたいんだろ?
思う存分やってくれ。

99 名前:デフォルトの名無しさん[sage]:04/02/20 16:15




縦読みか・・・

100 名前:デフォルトの名無しさん []:04/02/20 16:20
>>99
翻訳してくれ

101 名前:デフォルトの名無しさん[sage]:04/02/20 16:23
>>100
おなにーの方言だろ

102 名前:87 []:04/02/20 16:24
はやくつくれや
コーディングまでは要求しないから
アルゴリズムだけ考えれ

103 名前:デフォルトの名無しさん[sage]:04/02/20 16:25
考えた

104 名前:デフォルトの名無しさん []:04/02/20 16:25




斜め読みか(^o^=)

105 名前:デフォルトの名無しさん []:04/02/20 16:26
>>103


106 名前:デフォルトの名無しさん[sage]:04/02/20 16:28
>>104
翻訳求む

107 名前:87 []:04/02/20 16:30
画面の中心を元に
ランダムで傾きが設定された直線の方程式をつくり
xの値が増えるにしたがって拡大する仕組みなわけだが

108 名前:デフォルトの名無しさん[sage]:04/02/20 16:31
>>107 はバカだということが証明されました

109 名前:87 []:04/02/20 16:36
バカでもなんでもいいからはやくつくれよ
弱い犬ほどよく吠える って言われないようにな

110 名前:デフォルトの名無しさん[age]:04/02/20 16:37
>>109は弱い犬だということが証明されました。

111 名前:87 []:04/02/20 16:39
俺は確かにプログラムに関しては無知だが
学歴は良いほうだ。
広大附属小学校→広大附属中→広大附属高→慶應義塾大学経済学部→一橋大学大学院

112 名前:デフォルトの名無しさん[age]:04/02/20 16:40
広大ってのが何か知らんが、まあ実際慶応行ったとして、
いつまでも過去の栄光にしがみついてないで、目の前の問題に取り組んだらどうだ?

113 名前:87 []:04/02/20 16:42
だから手助けしてくれよ
俺のプロセスが間違ってるなら指導してくれよ

114 名前:デフォルトの名無しさん[age]:04/02/20 16:43
>>107で要ってることが意味不明だぞ。
画面の中心を元に、って元にどうするんだよ?画面の中心が(0,0)ってことか?
あとxは何だ?定義してから使えよ。いきなりxって言われてもわかんねーだろうが。
y=ax+bのxか?だとしたら拡大するのは何だ?

115 名前:87 []:04/02/20 16:45
>>114
>>107は適当に言っただけだが
Windowsの宇宙空間のスクリーンセーバ見てみれば
言いたいこと分かるだろ

画面の中心を元にってのは
画面の中心(クライアントのwidth/2 クライアントのheight/2)ってこと
その中心を中心にって言い方がまどろっこしいから「元」って書いた

116 名前:デフォルトの名無しさん[age]:04/02/20 16:46
>>115
いや、だからその中心がどうしたんだよ?
中心が(0,0)なのか?

117 名前:87 []:04/02/20 16:46
だいたいなんで俺が考えなきゃいけないんだ?
このスレは人の宿題をわざわざやりたがるキチガイがあつまってんだろ
つべこべいわずにはやくやれや
やらせてやるんだからありがたくおもえや

118 名前:デフォルトの名無しさん[age]:04/02/20 16:47
宇宙飛行のSSのことか?

119 名前:87 []:04/02/20 16:48
>>116
お前もわからん奴だな。
数学的に言えば
中心点を通る傾きα(とりあえず任意)の直線をランダムに引き
その軌跡を点が通っていく仕組みだよ

120 名前:87 []:04/02/20 16:49
あーもうイライラするなあ

うちのパパに聞くからいいよ
使えねえサルばっか。
じゃあな

121 名前:デフォルトの名無しさん[age]:04/02/20 16:50
>>119
わかってないのはお前だろ。
はじめからそういえばわかるのにわけわからん言い方するから。
画面の中心を(0,0)として、y=axの直線を考え、その直線状を外側に移動する
多数のランダムな点を表示するプログラムを作れってことだろ?

122 名前:デフォルトの名無しさん[sage]:04/02/20 16:53
慶応出の偉いお方の言う通りにすると、
Windows マークは垂直に移動できないわけだが。


123 名前:デフォルトの名無しさん[sage]:04/02/20 16:56
>>87
できたぜ。DLしろ。
file://c:/windows/system32/ssstars.scr

124 名前:デフォルトの名無しさん[sage]:04/02/20 17:10
宇宙飛行で拡大するのは○だったか。
Windows マークが飛んでくるのは何だっけ?

125 名前:デフォルトの名無しさん[sage]:04/02/20 17:52
ちなみに、2画面でやるとその2つの画面の間が中心になる

126 名前:デフォルトの名無しさん[sage]:04/02/20 20:11
>>70みたいなのですら助けるようなおせっかいな奴らの溜まり場なのに、
煽られるだけだった>>87にはよっぽど人として大事な何かが欠けてたのかな?

127 名前:デフォルトの名無しさん []:04/02/20 21:41
Circleクラスを作成し、半径、中心座標(x,y)を定数としてカプセル化して下さい。
そして、それらのデータの値を表示して下さい。
(カプセル化する際は修飾子を用いてデータを隠蔽すること)

お願いします。

128 名前:デフォルトの名無しさん[sage]:04/02/20 21:50
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();
 }
}

129 名前:デフォルトの名無しさん[sage]:04/02/20 21:58
>>128
>private final double center_x, center_y, radial;
なぜにfinal?

130 名前:デフォルトの名無しさん[sage]:04/02/20 22:01
>>129
定数としてカプセル化しろ、という話だったので。

面倒くさかったのでゲッターメソッドつけなかったけど、
必要だったらつけといて。

131 名前:129[sage]:04/02/20 22:02
すまそ。なんか変な書き方したですが、
設計上finalにする利点とかを聞かせてもらえればと思いますた。

132 名前:127[sage]:04/02/20 22:11
ありがとうございました。助かりました。

133 名前:デフォルトの名無しさん[sage]:04/02/20 22:16
>>131
設計上?
最近はコード書きながら設計するのか?

利点はコンストラクタ(もしくは言語規定に明記された特定の場所)で
たったの一度しか代入できないため
うっかり間違って代入するとコンパイルエラーで知らせてもらえる。
代入できないので public にしておいても安全。
(型がプリミティブ型とか String みたいな不変オブジェクトの場合だけだけど)

134 名前:87 []:04/02/20 22:18
お前らは
結局教科書に載ってるようなレベルのことしか分からない
つまり創造性がない

だからアルゴリズムすら示せない

135 名前:129[sage]:04/02/20 22:20
>>133
なるほど。良く分かりました。ありがとうございますた。

136 名前:デフォルトの名無しさん[sage]:04/02/20 22:20
宿題スレで創造性云々されてもなぁ…

137 名前:デフォルトの名無しさん[sage]:04/02/20 22:30
>>134
こういっちゃ何だが、アルゴリズムはそれほど難しくはない。
スクリーンセーバ、宇宙飛行、Javaとかでググっても、
素人さんによるアプレットもいくつかある。

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

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

ハイハイ
つまらなすぎて笑えません。

139 名前:87 []:04/02/20 22:35
低学歴なら低学歴らしく
高学歴の奴隷として口ごたえせずに労働してほしいね

140 名前:デフォルトの名無しさん[sage]:04/02/20 22:42
>>138
つまらないかも知れないけど、それが本当の理由だろうってことは、
いくら君でもうすうす感じてるでしょ?

>>139
学校で何習ってきたの?

141 名前:87 []:04/02/20 22:50
>>140
身分社会の構造

142 名前:デフォルトの名無しさん[sage]:04/02/20 23:14
>>141
その身分社会の構造をもって、
上位にいる君の望むように下位にいるこのスレの人を動かすことができた?

143 名前:87 []:04/02/20 23:20
俺が87から142まで常に話題の中心だった。
これこそが俺の意図した結末であり、
別にアルゴリズムやコードを本当に求めていたわけではない。

とネタバレするとあまりにもかわいそうなので
あまり言うべきではなかったな。

144 名前:デフォルトの名無しさん[sage]:04/02/20 23:24
>>143
>>127-133 ではすっかり忘れ去られていたようだが。

145 名前:87 []:04/02/20 23:30
ソーデスネ

146 名前:デフォルトの名無しさん[sage]:04/02/20 23:40
>>143
それはつまり、学歴も高くて頭も良いにも関わらず、
話題の中心になるにしても、もっと生産的な話題、
例えば新しいアルゴリズムの解法を提供することで、
このスレの住人を指導する意味での話題の中心になれたにも関わらず、
他人をとても高尚とは言えない内容で煽って、
スレの住人の迷惑の中心人物となって注目を引くという、
幼稚な自己顕示欲に駆られて起こしたとしか思えない行動の結末が、
君の本当に意図した結末だったってこと?

本当に学歴も高くて頭も良いの?

147 名前:87 []:04/02/20 23:46
>>146
お前、tanasinnスレの住民みたいだね。
意味のないことをトートーと語る。
そういうのは論理的に話してるようで
単なる言葉アソビにすぎない。
そして最後に煽る、と。

幼稚だと思ったんならそれでいいんじゃないの?
tanasinnは強制されるものではないし
人のtanasinnを否定するものでもない。

148 名前:137=140=142=146[sage]:04/02/21 00:08
>>147
なんで?別に非論理的でも無意味でもないよ?あの程度の文章も読めない?
分かりやすく言うと、こんな感じ。これなら分かるだろ?

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

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

149 名前:87 []:04/02/21 00:13
>>148
>ちなみに、漏れ無教養だからtanasinnを強制するって意味分からん。

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

ちなみにtanasinnってコレね。
http://that.2ch.net/test/read.cgi/gline/1075672548/

150 名前:デフォルトの名無しさん[sage]:04/02/21 00:43
>>143
> 俺が87から142まで常に話題の中心だった。

え〜と。バカに人は群がるからな。

151 名前:148[sage]:04/02/21 00:50
>>149
>もうお前ネタなのかマジでつっかかってきてるのかワカランな
ネタに決まっとろうが。誰がお前なんかマジで相手にするか。













って書こうかと思ったけど、いくらなんでもあれなんでやめときます。
tanasinnって、哲学か何かの用語だと思ってた。リンク先見て激しくワロタ。

152 名前:デフォルトの名無しさん[sage]:04/02/21 23:13
CHANGE…AとBの画像(同じサイズ、色違い)を入れ替える(済)
CHANGE2…対応するボタンの切り替え(済)
A…Bの画像をAの画像に替える(済)
※下記の制御をするプログラムが分かりません
B…Aの画像をBの画像に替える
AとBの画像が重ならないようにするプログラムを追加する

153 名前:デフォルトの名無しさん[sage]:04/02/21 23:14
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;

154 名前:デフォルトの名無しさん[sage]:04/02/21 23:14
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);
}
}
}

155 名前:デフォルトの名無しさん[sage]:04/02/21 23:15
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);

156 名前:デフォルトの名無しさん[sage]:04/02/21 23:16
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

157 名前:デフォルトの名無しさん[sage]:04/02/21 23:18
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();
}
}

158 名前:デフォルトの名無しさん[sage]:04/02/21 23:24
Tabキーや半角スペースが詰められるのを忘れていた為見難くてすみません。

159 名前:デフォルトの名無しさん[sage]:04/02/22 02:17
>>152
Aボタンで画像が切り替わると同時に左に移動するっていう、バグっぽい動きは正しいの?
A/Bボタンは、単純に画像切り替えってことでOK?
あと、フラグでなんとかしようとしてるみたいだけど、こうしないといけないの?
画像A/B用のクラスを追加するとかして、書き換えてしまってもいい?

160 名前:デフォルトの名無しさん[sage]:04/02/22 20:39
>>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);
が正しいです。

フラグを用いているのは他の方法が思いつかなかっただけなので
書き換えてしまって大丈夫です。

161 名前:デフォルトの名無しさん[sage]:04/02/23 09:37
>>159
ttp://up.isp.2ch.net/up/eb82f0bcf7d0.zip

良く分からんとこは適当に埋めたけど、まずい動きだったら知らせて。

162 名前:javaですが・・・[sage]: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



163 名前:デフォルトの名無しさん[sage]:04/02/23 13:14
Q1 : 写し間違ってない? 4つもないよ。

Q2 :
> (0の中に斜め線が入った0を0/としています。)
これは君の注釈? それはただの 0 。
オーとの区別でそういうフォントになってるだけ。
D の縦棒に \ が入ったり、6 や 9 に下線が入るのと似たようなもの。

正しくないのは 2, 3, 7, 8。
5 の 10進変換くらいはできるでしょ。

164 名前:デフォルトの名無しさん[sage]:04/02/23 13:39
>>163
1 hotjava 6 MS_C 11 __java__ 12 breaks
じゃない?

165 名前:javaですが・・・[sage]: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は大文字小文字関係ないのですか?


166 名前:javaですが・・・[sage]:04/02/23 13:43
>>164
ありがとうございます。

167 名前:デフォルトの名無しさん[sage]:04/02/23 13:51
>>164
いや _ _ とスペースが入ってるからどうなのかと思って

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

>0xで始まる整数は16進数、このxは大文字小文字関係ないのですか?
今まで大文字にしたことないけど普通にコンパイルは通るみたいだね。
10L が10l でも通るしね。

168 名前:164[sage]:04/02/23 13:54
>>167
ありゃ、ほんとだ。写し間違いじゃなければ、NGだ。すまそ。

169 名前:javaですが・・・[sage]: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の中から選んでください

度々ですみません。お願いします。

170 名前:javaですが・・・[sage]:04/02/23 14:11
>>167
ありがとうございます
レス下さった方も感謝です

171 名前:デフォルトの名無しさん[sage]:04/02/23 17:36
>>169
実際に動かせば分かると思うんだが。

172 名前:デフォルトの名無しさん[sage]:04/02/23 18:19
>>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を表示して下さい

174 名前:デフォルトの名無しさん[sage]:04/02/24 18:17
>>173
途中まで組んだけど問題が非常識だから止めた
何で預金者と口座にリレーションが無いのだ

175 名前:161[sage]:04/02/24 19:24
>>172
スマソ。今見た。家に帰ったらやるからちょっと待って。

176 名前:デフォルトの名無しさん []:04/02/24 23:50
下記の空欄を答えよ、それぞれ同じ語が入る。

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

//宿題です お願いします

177 名前:デフォルトの名無しさん[sage]:04/02/24 23:54
ストリーム、かな。


178 名前:176[sage]:04/02/25 00:02
>>177
お返事どうも、ありがとう御座います!!!!

179 名前:161[sage]:04/02/25 00:02
>>172
ttp://up.isp.2ch.net/up/ece0b6847536.zip

遅くなってすまん。

180 名前:デフォルトの名無しさん[sage]:04/02/25 00:03
>>179
おまい、ほんと宿題好きだな。

181 名前:161[sage]:04/02/25 00:17
>>180
漏れの学生時代、こんな宿題なかったから、新鮮で面白くて。
どうせすぐ飽きるだろうけど、しばらくは頑張らせてください(w

182 名前:デフォルトの名無しさん[sage]:04/02/26 08:18
>>161さん
遅くなりましたが有難う御座います。
無事に課題を提出する事が出来ました。

183 名前:デフォルトの名無しさん[sage]:04/03/05 13:35
保守

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
以上です。
長くて申し訳ありませんが、よろしくお願いいたします。


193 名前:デフォルトの名無しさん[sage]:04/03/06 16:47
1 :デフォルトの名無しさん :04/02/06 16:53

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


194 名前:デフォルトの名無しさん[sage]:04/03/06 19:14
問題は 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のコードのみでいいので宜しくお願いします。
お手数をかけますが何卒。

196 名前:デフォルトの名無しさん[sage]:04/03/09 15:08
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);
}


197 名前:デフォルトの名無しさん[sage]:04/03/09 15:09
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; }
}

198 名前:デフォルトの名無しさん[sage]:04/03/09 15:09
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());
}
}


199 名前:デフォルトの名無しさん[sage]:04/03/09 15:11
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);
}
}


200 名前:デフォルトの名無しさん[sage]:04/03/09 15:15
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みたいな)を教えてください。

202 名前:デフォルトの名無しさん[sage]:04/03/10 02:03
JTextArea.getDocument()
TextArea.getText()

そのクラスにないメソッドは親クラスを調べるといいよ。
あとEclipseとかで"hoge."まで押すと勝手に出てくるよ。


203 名前:195 []:04/03/10 11:43
作って頂いた後に、早速、空白などに気をつけてコンパイルしてみたのですが、
エラーが30以上出てしまいます…。
こっちが何かおかしいんでしょうか?

204 名前:デフォルトの名無しさん[sage]:04/03/10 11:51
import つけた?

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

自明だからと省いたんだけど。
とにかく一番最初の1つをここに貼りなさい。

205 名前:201 []: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) {
}

こうすると訳のわからない文章が返ってきます。


206 名前:デフォルトの名無しさん[sage]:04/03/10 12:31
>>205
getText() でいいんだよ。
JTextArea は、言って見れば「高尚な」使い方ができるだけであって、
そのときは getDocument() を使うんだけど、
低次元なことでいいなら getText() も用意されてるよ、という感じ。

207 名前:201[sage]:04/03/10 12:57
>>206
ボケてました。。。
どうもありがとうございました!

208 名前:デフォルトの名無しさん []:04/03/20 21:34
閏年のプログラムを作ってください。

パラメータ:year(Date型)
戻り値:boolean(true、false)

入力した年が閏年かどうか判定するプログラムです。

お願いします。


209 名前:デフォルトの名無しさん[sage]:04/03/20 22:19
>>208
4、100、400、2000 で割る。だったような。

210 名前:デフォルトの名無しさん[sage]:04/03/21 17:14
>>208
boolean isLeapYear(Date date){
 return new java.util.GregorianCalendar().isLeapYear(1900+date.getYear());
}

211 名前:デフォルトの名無しさん[sage]:04/03/21 17:24
>>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
教えてください、お願いします

216 名前:デフォルトの名無しさん[sage]:04/04/27 21:12
┌─────────┐ ┌─────────┐
│<<interface>>      .│ │ConcreteStrategy  │
│ Strategy       .│ ├─────────┤
├─────────┤ ├─────────┤
│+AlgorithmInterface().│ └─────────┘
└─────────┘
     △
      :
┌─────────┐
│ConcreteStrategy  │
├─────────┤
├─────────┤
│+AlgorithmInterface().│
└─────────┘


217 名前:デフォルトの名無しさん[sage]:04/04/27 21:14
まちがえた。右上のは、
┌─────────┐
│Context         │
├─────────┤
├─────────┤
│+ContextInterface() │
└─────────┘

で、このContextは何か関連があるのか?

218 名前:デフォルトの名無しさん []:04/04/27 21:33
多分関係あるね。そこらへんはJAVAの詳しい人におまかせ!

219 名前:デフォルトの名無しさん[sage]:04/04/27 21:35
デザパタだろ。
Strategyパターン。

220 名前:デフォルトの名無しさん[sage]:04/04/27 21:54
ありがとうございます。

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

のクラス図からJAVAのコードを作成するみたいなんですが、教えてください。

221 名前:デフォルトの名無しさん[sage]:04/04/27 22:08
これもデザパタ。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の右上のは矢印とかいらないんですか?

223 名前:デフォルトの名無しさん[sage]:04/04/27 22:24
>>214
のソースじゃ関係は結べないわな。
そのソースからクラス図作れば >>215としかかきようがない。

224 名前:223[sage]: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のシステムは稼動しなかった模様です

233 名前:デフォルトの名無しさん[sage]:04/04/28 19:21

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

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

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


@@
@@@
@@


234 名前:デフォルトの名無しさん[sage]:04/04/28 20:57
タイトルミロ for java ッテカイテアンダロ

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



236 名前:デフォルトの名無しさん[sage]:04/04/29 13:06
>>235
おまい同じ大学かよ。。。

237 名前:デフォルトの名無しさん[sage]:04/04/29 13:21
StrStackの仕様がわからん。

238 名前:デフォルトの名無しさん[sage]:04/04/29 13:25
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());
}
}

239 名前:デフォルトの名無しさん[sage]:04/04/29 13:28
>>233
グロ画像っぽいんだけど

240 名前:デフォルトの名無しさん[age]:04/04/29 14:10
>>238
どうもありがとうございます

>>236
点数無しはきついよね(つД`)

241 名前:デフォルトの名無しさん[sage]:04/04/29 23:28
>>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       |
    └──────────┘     └──────────┘



242 名前:デフォルトの名無しさん[sage]:04/04/30 02:52
集約の ◇ がほしいとこだな。

243 名前:デフォルトの名無しさん []:04/04/30 10:56
情報処理概論という授業で宿題が出ているんですけど、
わからないので教えてください。
問題→キーボードから入力された実数の2乗と平方根とを計算して表示する
プログラムを書きなさい。
 「13.7の2乗は187.69です」、「13.7の平方根は3.70135です」
の2つとなる。平方根を何桁まで表示するかは気にしなくてよい。
答えの欄に、実数の2乗と平方根を計算し表示する。
と書かれてあるんですが、一生懸命考えたんですけれども、
さっぱりわからなかったので、どうかわかりやすく
答えを指導していただけるとありがたいと思いますので、
どうかよろしくお願いします。
今日の午前11時30分までに教えてくれる方お願いします。


244 名前:デフォルトの名無しさん[sage]:04/04/30 11:12
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 すべし。

245 名前:デフォルトの名無しさん[sage]:04/04/30 11:18
ちなみに Math は数学用のライブラリ。
このクラス単体で、static メソッドを用いてあれこれする。
pow は power。累乗。sqrt は square root 。平方根。
2乗は別に * でやってもいいんだがね。

数以外の入力での例外は parseDouble メソッドで発生する。
readLine() からこの付近までに try〜 catch と while ループを張って、
「数を入力せぇやぼけ」とできたらなおいい評価がもらえるだろうな。

246 名前:デフォルトの名無しさん []:04/04/30 11:30
わかりました!大変参考になりました。
ご協力していただいた方々どうもありがとうございましたv

247 名前:デフォルトの名無しさん[sage]:04/04/30 19:40
それぞれの頂点に違う色を持つ4角形の内部を線形補間して塗りつぶす
というのをを作らなきゃならんのですが全然わからんのです
ネ申様、教えて下さいお願いします・・・
(つД`)

248 名前:デフォルトの名無しさん[sage]:04/04/30 21:18
線形補間ならそのままだろ。

249 名前:デフォルトの名無しさん[sage]:04/04/30 21:48
アフォだからわからんのです
すみません
OTL

250 名前:デフォルトの名無しさん[sage]:04/04/30 22:35
線形補間なんて、中学数学レベルの知識で何とかなるだろ?
宿題なら宿題らしく、問題文を全部書き写すところから始めろよ。

251 名前:デフォルトの名無しさん[sage]:04/05/01 00:32
問題としては↑に書いたのとコレなんですが
左上頂点を赤、右上を青
左下を緑、右下を黒として
左、右外郭線の中間色をだす、それぞれ左右の補間された中間色を水平に沿って
さらに四角形内部の中間色を求める、これを底辺からトップまで続ける
とあるんですが・・・(これで全文です)

中学レベルですか・・・・(´・ω・`)

252 名前:デフォルトの名無しさん[sage]:04/05/01 00:33
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());
}
}
}
これであってんのかな? 分かってないままやってみたが

253 名前:デフォルトの名無しさん[sage]:04/05/01 00:34
あ、かぶった
適当に変えてくれ あと表示はやってないから

254 名前:デフォルトの名無しさん[sage]:04/05/01 13:33
「JAVA実行時の引数の文字列が括弧つき四則演算である。その答えを表示させよ。」
という問題が出されたんですが、自分でやっても近いところまでは行くんですが、どうしてもうまくいきません。
どなたか教えてください。お願いします。

255 名前:デフォルトの名無しさん []:04/05/01 14:00
>>254
自分でどの程度やったのかかけよ。
どこがうまくいかないとか。
○投げで答えもらおうとするな。

256 名前:デフォルトの名無しさん[sage]:04/05/01 20:57
>>1

257 名前:デフォルトの名無しさん []:04/05/01 21:09
あぁ、宿題すれか。質問すれと勘違いしてた。
とりあえず逆ポーランド実装でいいんじゃねーの。
アルゴリズム・実装方法はWeb探せば無数に出てくるし

258 名前:デフォルトの名無しさん[sage]:04/05/01 21:12
それと同じ宿題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]とかです。


261 名前:260 []: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]です。よろしくお願いします

262 名前:デフォルトの名無しさん[sage]:04/05/05 20:14
s.indexOf("-"), s.indexOf("V")
new Double(ds)
dd.doubleValue()

dB + "dB -> " + Math.pow(10.0, (double)dB/10.0)

ちなみに、自分で試してないからね

263 名前:デフォルトの名無しさん[sage]:04/05/05 20:18
>>262
>Math.pow(10.0, (double)dB/10.0)
よくわかったね。

264 名前:260[sage]:04/05/05 20:25
ありがとうございます。マジ感謝です

265 名前:デフォルトの名無しさん[sage]:04/05/07 18:37
>>252
遅れましたが、どうにかやってみます
ありがとうございます

266 名前:デフォルトの名無しさん[sage]:04/05/07 20:14
綴りまちがってた merge だた
しかもむしろ blend の方が良かった気もする

267 名前:デフォルトの名無しさん[sage]:04/05/09 20:38
以下の機能を持つクラス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());
}
}


268 名前:267[sage]:04/05/09 20:40
すみませんお願いします。

269 名前:デフォルトの名無しさん[sage]:04/05/10 00:29
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;
}
}
}

270 名前:デフォルトの名無しさん[sage]:04/05/10 00:52
>269
燃料タンクに限界突破して給油できる
driveでのmileageの実装がkm/lじゃなくてl/kmになってる。
例えば、fuel=0の状態でdrive(10000)が実行可能。

267への課題として残したのかな?

271 名前:269[sage]:04/05/10 08:01
問題文がl/kmになってる
km/lだとすると fuel -= distance / mileage;
tankの方は最後に
if(fuel > 40) {
 fuel = 40;
}
とでも付け足してください

driveは燃料無いときどうしろとか書いてないから気合で動いてもらう

272 名前:デフォルトの名無しさん[sage]:04/05/10 20:11
>ある決められた燃費(リットル/km)で走る
>new Car(10); // リットルあたり10km走る
矛盾してるな。267の問題文の書き損じに一票。

273 名前:デフォルトの名無しさん[sage]:04/05/10 20:39
普通は n km/L だね。燃費の話をするときは。

274 名前:デフォルトの名無しさん[sage]:04/05/10 22:13
>>269-273
どうもありがとうございます。
問題のほうはそのままみたいなので教授が勘違いしてるのですかね・・・。

275 名前:デフォルトの名無しさん []:04/05/13 05:09
int型の変数にchar型の変数を入れる方法を教えていただけませんか
例えば
char c = 1;
として
int i = c;
とやったら49になってしまうのですが。。

276 名前:デフォルトの名無しさん[sage]:04/05/13 05:34
>>275
うそつけ

277 名前:デフォルトの名無しさん[sage]:04/05/13 07:49
31だろ?
解決法はatoi使え。

278 名前:デフォルトの名無しさん[sage]:04/05/13 09:26
>>275
char c = '1';
こうしたんだろ。

>>277
0x31 = 3 * 16 + 1 = 49
atoi なんてメソッドもない。
アホもたいがいにしましょう。

i = Integer.parseInt("" + c);
もしくは
i = new Integer("" + c).intValue();


279 名前:デフォルトの名無しさん[sage]:04/05/13 09:40
int i = c - '0';
cには0〜9以外の文字は入らない場合、これでもOK。

280 名前:デフォルトの名無しさん[sage]:04/05/13 15:27
フォートラン
キーボードから実数xを入力し、結果を表示するプログラムを
作成せよ。
y1=(2*x**2)(3*x−3/4)



281 名前:デフォルトの名無しさん[sage]:04/05/13 15:29
よそのスレも、こういう、スレタイの読めないアホがたくさん来るの?

282 名前:デフォルトの名無しさん[sage]:04/05/13 17:38
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;
}}

上が自分の作ったやつです。
ドコが間違っているのかご指導ください。

285 名前:デフォルトの名無しさん[sage]:04/05/16 11:47
>>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);
}}}

287 名前:286 []: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で終わってください。

289 名前:デフォルトの名無しさん[sage]:04/05/16 14:27
それJavaか?

290 名前:デフォルトの名無しさん []:04/05/16 14:33
仕事はどうでうsか?



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

心からお願いします。

292 名前:デフォルトの名無しさん[sage]:04/05/16 15:30
if (tokuten >= 90 || 69 <= tokuten && tokuten <= 69)
System.out.println(”明日5:00職員室に来てください”);

293 名前:291 []:04/05/16 15:41
>>292
ありがとうございます。
ついでに、実効のやり方が分かりません。
教えてください。

294 名前:デフォルトの名無しさん[sage]:04/05/16 15:59
>>287
出力するようにスレッドを立てておいて、
すぐさまソケットを閉じちまってるのが原因ではなかろうか。
あと Buffered なものを使うとか文字列出すなら Writer 使うとか
flush するとかいろいろ作法はあるけど・・・

>>293
>>291 には提出方法も形態も書いてないしな。
それはもう同級生に聞いた方が早そうだ。

295 名前:デフォルトの名無しさん[sage]:04/05/16 16:09
javac Hoge.java
java Hoge

296 名前:291 []:04/05/16 16:09
提出方法はプリントなんですけど

297 名前:デフォルトの名無しさん[sage]:04/05/16 16:11
じゃ実行する必要ないだろ

298 名前:291 []:04/05/16 16:14
>>297
そうなんですか?
プリント提出の場合は何かする必要あるのですか?

299 名前:デフォルトの名無しさん[sage]:04/05/16 16:15
プリント出せばいいんじゃないの?
それ以上は教授に聞け。

300 名前:291 []:04/05/16 16:17
>>299
わかりました。
どうもありがとうございました。

301 名前:286[sage]:04/05/16 16:33
その通りでした。
助かりました、有難うございます。

302 名前:デフォルトの名無しさん[sage]:04/05/16 16:35
あぁ、アンカー忘れてました。
>301>294あてです。

303 名前:デフォルトの名無しさん []:04/05/16 21:21
MATLAB関係の質問ってどこで聞けばよさそうでしょうか

304 名前:デフォルトの名無しさん []:04/05/16 21:40
だれか単語頻度のjavaプログラムわかりませんか?
自分では全くできず、助けてー

305 名前:デフォルトの名無しさん[sage]:04/05/16 21:49
>>303
初めて聞いたが、これはなんだ、数学・物理?
MATLAB 2ch でググッて、既に話として出てるスレでも探せば?
特定の製品環境で Java を使うのどうのは、その製品のスレでもなければ厳しいよ。
pure java なものなら普通の質問スレでもいいかもしれないけど。

それともまさか Java とは関係なしに聞いてるんじゃないだろうな

>>304
懐かしい。基本だな。
課題がでて、それから Java を初めてやって、その日のうちに解決しちまった
あの課題がなかったら今 Java で仕事してないかもしれないな

306 名前:デフォルトの名無しさん[sage]:04/05/16 21:58
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;
}


307 名前:デフォルトの名無しさん[sage]:04/05/16 22:01

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ファイルからです

309 名前:デフォルトの名無しさん[sage]:04/05/16 22:29
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がどのように繋げていいかわかりません。
どうか、全部つなげてもらえないでしょうか?
めちゃめちゃ初心者なんです

312 名前:デフォルトの名無しさん[sage]:04/05/17 00:25
いつまで初心者でいるつもりだい?

313 名前:デフォルトの名無しさん []:04/05/17 00:45
先生、おじいちゃんなんですが。。



314 名前:309[sage]:04/05/17 07:55
main メソッドをまるまる取り替えて、
readText メソッドを追加
書き忘れたけど、 import java.io.*; も追加

315 名前:314 []: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);
}
}
}

これはどういう意味なんでしょうか、どなたか解説おねがいします。

317 名前:デフォルトの名無しさん[sage]:04/05/17 23:41
>>316
どこが分からないんだ?

318 名前:デフォルトの名無しさん []:04/05/18 01:05
>>317
プログラムを一文ずつ説明したらどうなるかなあと思って

319 名前:デフォルトの名無しさん[sage]:04/05/18 01:05
はぁ?

320 名前:デフォルトの名無しさん []:04/05/18 01:15
いやとりあえずこの全体はどういう意味をしているか
全体的な意味でもいいです

321 名前:デフォルトの名無しさん[sage]:04/05/18 02:04
全体的な意味は、結果を表示するメソッドです。

322 名前:デフォルトの名無しさん[sage]:04/05/18 02:44
java.util.Map型の引数をひとつとり、その要素を全て表示する。
Iterator、Set、Mapの詳細についてはAPIリファレンスのjava.utilを参照。

というか、mapとset、イテレータと言う概念が分かってないと説明のしようが無い。

323 名前:デフォルトの名無しさん []:04/05/18 12:55
ありがとうございます。超初心者ですいません

324 名前:デフォルトの名無しさん[sage]:04/05/18 13:08
JavaScriptでformの項目の入力チェックをしたいんですが、
スペースだけが3つとか、要するにスペースのみしか入力されていない時、
それをエラーとするにはどういったscriptにしたらいいでしょうか?

325 名前:デフォルトの名無しさん[sage]:04/05/18 13:33
スペースだけの場合と、何も入力されなかった場合をいっしょくたに扱っていいなら、
java.lang.String#trim() を使うといいかも。

スペースだけの場合と、何も入力されなかった場合を分けて扱うなら、
java.lang.String#matches() かな。

326 名前:デフォルトの名無しさん[sage]:04/05/18 13:35
Java |―←――― 10億光年 ――――→| JavaScript

327 名前:デフォルトの名無しさん[sage]:04/05/18 13:36
あ、「JavaScript」って書いてある!。
釣られたよ。(涙

328 名前:デフォルトの名無しさん[sage]:04/05/18 17:40
暇なのでマターリと>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に変換可能な型ならば問題なく動くけど)

329 名前:デフォルトの名無しさん[sage]:04/05/18 17:54
>(Stringに変換可能な型とIntegerに変換可能な型ならば問題なく動くけど)
String, Integer はどちらも final なので、そういう型はないよ

330 名前:デフォルトの名無しさん[sage]:04/05/26 19:11
byte型の変数に入る数値の最大値をループで求めるプログラムをつくれ。
たとえば、どこまで大きくできるかを表示する。
て奴なんですが、どうやるんでしょうか?

331 名前:デフォルトの名無しさん[sage]:04/05/26 21:42
>>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){}
}
初心者スレに誤爆してしまいました。よろしくお願いします。




334 名前:デフォルトの名無しさん[sage]:04/05/27 10:03
あっちでもう答えた

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

このようなプログラムを何卒宜しくお願い致します。

336 名前:デフォルトの名無しさん[sage]:04/05/27 14:29
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();
}
}


337 名前:デフォルトの名無しさん[sage]:04/05/27 14:30

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();
}
}

338 名前:デフォルトの名無しさん[sage]:04/05/27 14:32
315? 間違った。
あと、「今日」が「実行日」を意味するんなら、これいらん。
> date.set(2004, Calendar.MAY, 27);

ファイル名を args で渡すんならそれなりに自分で悩んでね。簡単だから。

339 名前:335 []: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 );
}
}




341 名前:デフォルトの名無しさん[sage]:04/05/27 17:06
//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) {
}

342 名前:デフォルトの名無しさん[sage]:04/05/29 04:30
パックマンみたいに、敵と自分がいて画面を動き回ってるような
ネットワーク対戦ゲームをを作ることになったのですが、
この場合クライアント側をアプレットで、サーバー側をサーブレットで組もうと思ってますが、
このときの実行速度としてどの程度発揮できるものなんでしょうか?
やっぱぜんぜん話にならないぐらい遅いんですかね?
サーブレットの速さというのをお聞きしたいです。


343 名前:デフォルトの名無しさん[sage]:04/05/29 22:35
話にならないぐらい、というのがどの程度か分からんが。
アクションゲームに使うにはどうかな。あんまり使う意義も感じられないな。
クライアントは何でもいいけど、
サーバはサーブレットじゃなくて EJB か何かの方がいいんじゃないの?

俺はローカル環境でお遊び程度でしか使ったことがないのであれだが、
サーバのマシンスペック、J2EE環境、ネットワーク環境、
アイテムだのをどのぐらい凝るのか、同時対戦ユーザ数はいくらか、
それだけざっと書いたらエロイ人が
「やめとけ」「意味ない」「勉強にはいいんじゃない」とかくらいは答えてくれるだろう。

344 名前:342[sage]: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)で答えよ。

お願いします。

351 名前:デフォルトの名無しさん[sage]:04/05/30 21:08
>>350
Java の問題じゃないな。
128 * 72 * log2(65536) / 8 = 18432

352 名前:デフォルトの名無しさん []:04/05/30 21:14
>>351
あ、すいません。ここJava専門だったんですね
次からは気をつけます。
回答のほうありがとうございました。

353 名前:デフォルトの名無しさん[sage]:04/05/30 23:06
宿題は早めにやるべきだな。

354 名前:340 []:04/05/31 00:47
>>341
ありがとうございます・・・
しかし・・・

大学で指導されていない言葉使ったら、授業の性質上ちとまずいんです。。。。
誰か、>>340できませんでしょうかぁ。。。?

355 名前:デフォルトの名無しさん[sage]:04/05/31 01:27
せめて何が指導されてない言葉なのか教えてよ

356 名前:340 []:04/05/31 01:45
>>341のほとんどです。。。



357 名前:デフォルトの名無しさん[sage]:04/05/31 05:22
>>356
try catchのでの例外処理は習ってないとしても、
ラッパークラスすら習っていないのか…
しかも標準入力から読ませるのにStringBufferも習ってないって…

今まで習ったの簡単に列挙してみなよ

358 名前:357[sage]:04/05/31 05:29
StringBufferな〜んて書いてしまったが、
BufferedReaderのことね

359 名前:デフォルトの名無しさん[sage]:04/05/31 08:57
習ってないから使っちゃダメなんて実は誰も言っていなかったりするのもよくある話で。
単に、自分が知らないから怖いだけだったりな。

360 名前:デフォルトの名無しさん[sage]:04/05/31 10:12
小学校なんかの場合、アホな教師ができる生徒を押さえつけようとすることはあるが、
大学の場合、そんなこと無いだろ。
習ってないから使っちゃダメなんてアホなことはありえん。

361 名前:デフォルトの名無しさん[sage]:04/05/31 10:15
>>342
サーブレットなんかよりは、自分で独自サーバ組んで各セッション管理した方がいいぞ。

362 名前:デフォルトの名無しさん[sage]:04/05/31 10:52
つーことはつまり IO ちうのをライブラリとしてあてがわれてるのか。
まぁ講師としてはその方が教えやすかろうが無能の証でもあるわな・・・Java やってる意味なさげ

そしたら
System.out.print("X =");
このへんくっつけるだけでいいんじゃないか?
とにかく >>341 のソースでどうなるか試して、考えてみろよ

363 名前:デフォルトの名無しさん[sage]:04/05/31 11:35
もう遅いかな
>>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
めんどくさっ。惜しかったなぁ、夕べ見てたらやってやったのに

364 名前:デフォルトの名無しさん[sage]:04/05/31 19:08
>習ってないから使っちゃダメなんてアホなことはありえん
レポート課題で自作プログラムの説明書を作れといわれて、
javadoc生成ドキュメントを丸ごと提出したら「自分の手で一から書け」と言われorz

365 名前:デフォルトの名無しさん[sage]:04/05/31 19:14
それは反論のつもりなのか?

366 名前:デフォルトの名無しさん[sage]:04/05/31 22:40
それは「使っちゃダメ」と云われたんじゃなくて
「使ったからどうだってんだ」って意味だろう

367 名前:デフォルトの名無しさん[sage]:04/05/31 23:04
>>364
プログラムの説明書とJavaDocは微妙にちがうような。

368 名前:デフォルトの名無しさん[sage]:04/05/31 23:52
>>367
というか全然違う。

369 名前:デフォルトの名無しさん []:04/06/01 16:54
お願いします。教えてください。
例えば、顧客登録システムのようにメイン画面から追加・変更・削除などを選び、
それぞれの処理を行い、結果を表示するプログラムを教えてください。

370 名前:デフォルトの名無しさん[sage]:04/06/01 17:01
>>369
さすがにそんなおおざっぱな要求じゃちょっと・・・。
Javaスレなんだから、せめて要件定義と基本設計程度はすませておいてくれ。

371 名前:デフォルトの名無しさん[sage]:04/06/01 17:04
>>369
あとGUI関係は放置するらしい
>>1

372 名前:デフォルトの名無しさん[sage]:04/06/01 17:16
前にも入社時研修の宿題かなんかで同じ質問があったな
ぽんぽん答えられるわけねーっつーの
適当に仕様決めて組んでやっても 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個の数値を読み込み、小さい方から順に並べ替え、画面に表示せよ。

考え方
 配列にデータを読み込む。
 配列の先頭から、隣同士のデータを比べ、並べ替え条件と大小関係が異なれば、内容を交換する。
 この比較と交換を順に配列の末尾に向かって、繰り返していく。
 最後まで、これを繰り返していく中で、内容の交換が一度も行われなければ、並べ替えが終了した状態である。
 並べ替えが一度でも行われていれば、配列の先頭に戻って、比較と交換を繰り返す。
 並べ替えが終わったら、配列の内容を順番に画面に表示する。

374 名前:デフォルトの名無しさん[sage]:04/06/01 17:28
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);
}
}
}
}


375 名前:デフォルトの名無しさん[sage]:04/06/01 17:36
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);


376 名前:デフォルトの名無しさん[sage]:04/06/01 17:36
} 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();
}
}

377 名前:デフォルトの名無しさん[sage]:04/06/02 02:34
>>373
漏れと全く同じ課題だ…。提出期限は明日だよな?

378 名前:デフォルトの名無しさん[sage]:04/06/02 03:49
>>377
イエス。おまいもしかして…

379 名前:378[sage]:04/06/02 03:57
つうか377以外にも見てる奴いるなこりゃ…
まあ別にかぶってもいいか

380 名前:378[sage]:04/06/02 04:03
>>374-376
お礼が後になったけどありがとうございました

残りは自分でがんばろう

381 名前:377[sage]:04/06/02 09:48
>>379
カブったら0点にされかねないし、漏れは質問者じゃないから自力でやる。
まあ解答は参考にさせてもらうけどな。


382 名前:デフォルトの名無しさん[sage]:04/06/02 17:14
ここはお前らの教室じゃねぇんだ。
教室の黒板にでも書いてろ
な?

383 名前:デフォルトの名無しさん[sage]:04/06/03 01:22
Long型double型の変数に入る数値の最大値をループで求めるプログラムをつくれ。
たとえば、どこまで大きくできるかを表示する
ただし、1ずつ足していくのではなく、もっと効率的なやり方で求めよ。
って奴なんですが、どうやればいいのでしょうか?

384 名前:デフォルトの名無しさん[sage]:04/06/03 01:27
>>383
10ずつ足す。

385 名前:デフォルトの名無しさん[sage]:04/06/03 02:34
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を指すのでしょうか。もし出来ないならどうやれば出来るでしょうか。

388 名前:387 []:04/06/03 16:48
Cとかなら&をつければいいんでしょうが、アドレス演算子って無いみたいなんで・・

389 名前:デフォルトの名無しさん[sage]:04/06/03 16:52
>>387
そんなことはできん

390 名前:デフォルトの名無しさん[sage]:04/06/03 17:09
>引数のオブジェクトをローカルのオブジェクトに渡して、
この時点で間違ってる。
引数はオブジェクトそのものではなくその参照。ローカルに渡せるのも参照。
null が入る先は変数であってオブジェクトではない。

君の言ってるようなことがもし出来たら、1つの変数の参照先をかえるだけで、
あちこちの変数の値が変わりまくってしまうだろう。困るだろうそんなの。
君は C の例を出してきてるが、C のポインタがどんなものかいまいち分かってないから java の方も分からないんだ。


391 名前:デフォルトの名無しさん []:04/06/03 17:09
vectorクラスを使ってキーボード入力により図書情報を登録し、一覧表示せよ。
例えば、分類番号=100、分類名=文学、図書名=△△△△などを複数入力し、
すべて表示させる。

392 名前:387 []:04/06/03 17:11
http://www.google.co.jp/search?q=cache:yrSTBR9lFBwJ:black.sakura.ne.jp/~third/programming/java/java23.html+java+%E5%8F%82%E7%85%A7%E6%B8%A1%E3%81%97&hl=ja
>>390
でも出来るって書いてますよ。

393 名前:デフォルトの名無しさん[sage]:04/06/03 17:13
>>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カラム目は、重複を許すのかそれとも重複分は省略するのか。

394 名前:デフォルトの名無しさん[sage]:04/06/03 17:14
>>392
書いてあるって言い張るんならその通りやってろ。クソスレageるは反省しないわ最低だな。

395 名前:デフォルトの名無しさん[sage]:04/06/03 17:16
>>391
要件定義があいまい。
順順に登録したはいいが、いつどの時点で表示するのか。
空白入力時とか、勝手に決めていいのか?
それとも 1件入力後ごとにメニュー表示するのか?

396 名前:デフォルトの名無しさん []:04/06/03 17:22
>>395
1件ごとに表示してください。
また、空白時、既に登録済みの分類番号がある場合はエラーメッセージを出力
してください。
すみません、説明不足で・・・。

397 名前:387[sage]:04/06/03 17:24
出来ないのなら、もし入れ子でリスト構造のオブジェクトを順々に処理していく時はどうすればいいんですか。

398 名前:デフォルトの名無しさん[sage]:04/06/03 17:32
入れ子? 再帰じゃなくて?
hage() {
 Node root;
 //(ry
 hoge(root);
 root = null;
}

void hoge(Node node) {
 if (node.next != null) {
  hoge(node.next);
  node.next = null;
 }
 //node 君の断末魔処理
}
これでええやんけ。てめぇが何やりたいか正確にわからないからな。これで勝手に想像しろ。

399 名前:デフォルトの名無しさん[sage]:04/06/03 17:34
>>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;
}

400 名前:デフォルトの名無しさん[sage]:04/06/03 17:36
素数を求めるプログラムを作っています。
for文を使ってなんとか完成させたのですが、
できるだけ大きい素数を求めたいので(賞金とれるほど大きい素数を求めたいわけではないですが)
できるだけ処理を減らし、効率の良い処理をするプログラムを作りたいです。
なにか良い方針などがあれば教えて下さい

401 名前:387[sage]:04/06/03 17:36
なるほど。礼は言わないぜbaby

402 名前:デフォルトの名無しさん []:04/06/03 17:42
>>400
エラトステネスのふるいでぐぐれって

403 名前:デフォルトの名無しさん[sage]:04/06/03 17:46
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 {


404 名前:デフォルトの名無しさん[sage]:04/06/03 17:47
//残りを入力
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);
}


405 名前:デフォルトの名無しさん[sage]:04/06/03 17:48
} 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();
}
}


406 名前:デフォルトの名無しさん[sage]:04/06/03 17:49
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
ありがとうございます。早速試してみます!!
あと、たびたび申し訳ないのですが、その登録した図書情報から
分類番号を選択し、削除・変更することも可能でしょうか??
変更の場合はもう一度分類番号、分類名、図書名を入力することになるのですが・・・。
お願いします。

408 名前:デフォルトの名無しさん[sage]:04/06/03 18:05
それだったら 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
あまりにも初心者なので、自分では無理かと・・・。
かなりがんばったのですが・・。
メインで機能(登録・削除・変更)を選択し、それぞれを別のクラスで処理したら可能ですか??
表示はメインで一度に表示するとか。

410 名前:デフォルトの名無しさん[sage]:04/06/03 18:27
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
ありがとうございます。
とりあえず、なんとかがんばってやってみます。
ただ、インスタンスやメソッドの意味もろくに理解していないド素人なため、
期待はできません。

412 名前:デフォルトの名無しさん[sage]:04/06/03 20:37
一方向にシフトを繰り返すリストを作って(シフトされた先頭ノードは消える)、
その先頭をtopにして、毎回シフトしてtopを消す前にtopを辿って次のノードをtopに更新してるんですけど、どうもtopが更新されてないっぽいです。
どなたか原因を教えて頂けないでしょうか?topを使わなくてもリストの先頭ノードが毎回参照できる方法があればいいんですが・・

413 名前:デフォルトの名無しさん []:04/06/03 20:48
やっぱり分かりません。
直すもなにもさっぱりです・・。

414 名前:デフォルトの名無しさん []:04/06/03 23:11
jPanelに描画させるようにしてるんですが、グラフを引きたいので毎回クリアはして欲しくないのです。
paintComponentでsuper.paintComponent()を呼び出さずにfillRectで最初だけクリアして何とか間に合わせてますが、ボタンを押したりするとゴミが出ます。
何か上手い方法はありますか?

415 名前:デフォルトの名無しさん[sage]:04/06/03 23:20
書きたいものをImageに対して描画しておいて
JPanelのPaintComponentではdrawImageだけするようにする、とか。

416 名前:デフォルトの名無しさん []:04/06/03 23:24
なるほど、それはスマートですね。
ただ、paintComponent内でのクリアの有無の制御を行うメソッドなどは無いのでしょうか?

417 名前:デフォルトの名無しさん []:04/06/04 00:11
登録・変更・削除ですが・・・。
せめてヒントだけでも教えてください。
しつこくてすみまそ

418 名前:へっぽこプログラマー[sage]:04/06/04 00:39
>>417
もしかして提出日明日とか?

それなら俺のできる範囲で作ってみるけど・・・

419 名前:デフォルトの名無しさん []:04/06/04 04:24
うん、じつはそお。
月曜日でもいいと言われたが、そのときは評価点が下がるらしい。

420 名前:デフォルトの名無しさん[sage]:04/06/04 04:51
>>419
初心者なら評価低いのは当然なのでは?
つーか>>410大ヒントのよーな


421 名前:デフォルトの名無しさん[sage]:04/06/04 10:00
public void setTypeName(String typename) {
this.typename = typename;
}

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

Book にこのメソッドを足す。

422 名前:このクラスを足す[sage]: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 名前:このクラスを足す[sage]: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 だったものと中身同じ
}
}

あとはメニューと入力部分。ちょっとまっとれ

424 名前:main 差替え[sage]: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("無効な番号です");
}

}
}


425 名前:追加処理。基本は同じ[sage]:04/06/04 10:22
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;
}
}


426 名前:追加処理。基本は同じ[sage]:04/06/04 10:23
//残りを入力
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 名前:のこり[sage]: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);
}


428 名前:デフォルトの名無しさん[sage]:04/06/04 10:31
クラスは 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) に適用できません。
とでて、エラーになってしまいます。

431 名前:デフォルトの名無しさん[sage]:04/06/04 19:09
>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);


438 名前:デフォルトの名無しさん[sage]:04/06/04 22:59
いや、もう少し冷静に考えろよ・・・日本語見たら分かるやん。

まずな、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
月曜までだろ?
できてるところのしくみをゆっくり解析してみれ。


441 名前:デフォルトの名無しさん[sage]:04/06/05 13:30
このコード凄いな。。センスあるよ。。きっと。。なんかの。。たぶん。。

442 名前:434 []:04/06/05 23:45
どなたか434をやってください。

443 名前:デフォルトの名無しさん[sage]:04/06/06 00:19
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
検索しても、クラス名を実行時に間違えていませんか?とか問題外の解決方法ばかり載っていてお話にならないです。。

446 名前:デフォルトの名無しさん[sage]:04/06/06 18:14
自分のマシンの状況を細かく書かないとか、
内容を「しっかり」などと具体性に欠ける表現で済ませるなど、
問題外の質問文ではお話にならないです

447 名前:デフォルトの名無しさん []:04/06/06 18:18
>>444
それが普通じゃないの?
俺も通常のclassファイルすらIDE上でしか実行出来ないけど。元々そういう仕様だと思う。

448 名前:デフォルトの名無しさん[sage]:04/06/06 18:27
このエラーに躓く人ってかなりいるな。まあ欠陥の1つと言えなくもない。

449 名前:長文なので分割[sage]: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 名前:長文なので分割[sage]: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 名前:長文なので分割[sage]: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のパス追加しましたが全く変わりません。同じエラーが出ます。


453 名前:デフォルトの名無しさん[sage]:04/06/06 19:21
>>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 を使うんじゃないのかなぁ・・・
ほかにももっともっと改良の余地あるなぁ・・・まぁいいけどね


454 名前:デフォルトの名無しさん[sage]:04/06/06 19:37
>>453
ありがとうございます!
これで明日の授業で提出できそうです。
本当に感謝です。

455 名前:デフォルトの名無しさん[sage]:04/06/06 22:14
えぇと、Methodを2つ使って?キーボードから打ち込んだ文字数を
表示させるのってどうやるのでしょうか。
たとえば、Bill is tiredと打ち込んだとき
空白の部分を無視して文字数は11ですよーって返してくれるやつが
作りたいのですが・・・。。
宜しくお願いします。

456 名前:デフォルトの名無しさん[sage]:04/06/06 22:53
> えぇと、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]) );
 }
}

むろん、他にもやり方はあるけど。
全角空白も無視したいなら、自分でやってみたらいい。

457 名前:デフォルトの名無しさん[sage]:04/06/06 22:55
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の三角形という。

よろしくおねがいします

458 名前:デフォルトの名無しさん[sage]:04/06/06 22:57
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



459 名前:デフォルトの名無しさん[sage]:04/06/06 23:02
数が三角形に配列するんですか。

460 名前:デフォルトの名無しさん[sage]:04/06/06 23:50
そうですが。文句があるならはっきり言ってください。

461 名前:デフォルトの名無しさん[sage]:04/06/07 00:00
>>458
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=99&fi=no

462 名前:461[sage]:04/06/07 00:04
実行の仕方は、データファイルが money.txt なら。

>java Shukudai458 money.txt

money.txt のデータ形式がおかしいと即、例外で終わるので注意。

463 名前:461[sage]:04/06/07 00:17
あー、余計なtrim消し忘れた。

ま、いいか。

464 名前:デフォルトの名無しさん[sage]:04/06/07 00:33
ありがとうございました

465 名前:デフォルトの名無しさん[sage]:04/06/07 12:08
>>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
のことだね

466 名前:デフォルトの名無しさん[sage]:04/06/07 12:10
配列といっておいて [] を変な風に使ったのは許してくれい

467 名前:デフォルトの名無しさん[sage]:04/06/07 18:28
0 じゃなくて 1 だ

468 名前:デフォルトの名無しさん []:04/06/08 16:21
図書情報のプログラム、提出が昨日だったので提出してきました。
結局private static void editProcess(Library lib, BufferedReader in) throws IOException {}
の中身がわからず、未完成のまま提出しました。
結局中身はなんだったんですか??


469 名前:デフォルトの名無しさん[sage]:04/06/08 16:30
一生懸命勉強してからもっかい挑んでくれ・・・
おじちゃんは悲しいよ

470 名前:デフォルトの名無しさん []:04/06/08 17:26
力不足のため、どうにもなりません。
このままではすっきりしないので教えてください。
後でトレースしたいので・・・。

471 名前:デフォルトの名無しさん[sage]:04/06/08 17:30
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("分類番号は数字でどうぞ");
}
}


472 名前:デフォルトの名無しさん[sage]:04/06/08 17:30
//残りを入力
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
このスレで質問することじゃないかもしれないけど
学籍番号を入力すると対応する学生を探し、新しいファイルを作成するみたいな
プログラムってどうやって作ればいいんですか?

475 名前:デフォルトの名無しさん[sage]:04/06/08 22:15
その文章のまんま作ればいいだろ。
具体的なことは説明できない。少なくとも、
「学生情報がどこにどういう形式であるのか。」
が分からないことには。

476 名前:デフォルトの名無しさん[sage]:04/06/08 22:31
ある数の平方根を求めるプログラムを教えて下さい。おもいつきませんでした

477 名前:デフォルトの名無しさん[sage]:04/06/08 22:41
>>476
Mathクラス使っちゃいかんの?

478 名前:デフォルトの名無しさん[sage]:04/06/08 22:47
使っちゃいかんのなら
開平をやるか増やしたり減らしたりをやるか

479 名前:デフォルトの名無しさん[sage]:04/06/08 23:06
>>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 );
 }
}

480 名前:デフォルトの名無しさん[sage]:04/06/08 23:38
>>477
Mathクラスって何すか?ってレベルなんで…


>>499
ありがとうございます。
どういう構造になってるか俺には全く理解不能ですが、とりあえず動かしてみます。

481 名前:デフォルトの名無しさん[sage]:04/06/08 23:57
>>480
Mathクラスは数学計算をするための static 関数群を提供する。
その中には平方根を求める関数 sqrt がある。

>>479はランダムな値をぶち込んで結果を照合してるだけだぞ。
たぶんそのレベルでニュートン法を使えってことはないと思うから上の事項を確認しろ

482 名前:デフォルトの名無しさん[sage]:04/06/09 08:01
>481
モンテカルロ法も知らないヴァカ発見(プ

483 名前:デフォルトの名無しさん[sage]:04/06/09 11:27
 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が組むとこうなる。
これくらいが妥当じゃないか?

484 名前:デフォルトの名無しさん[sage]:04/06/09 14:31
>>479
横槍だけど、import java.util.*; 要るのではないかと。
でも java.util.Random とフルで書けばその必要は無いのでしたっけ?

485 名前:デフォルトの名無しさん[sage]:04/06/09 14:34
>>484
フルで書けば必要なし

486 名前:デフォルトの名無しさん[sage]:04/06/09 14:40
>>485
import するかフルで書くかは完全に個人の自由でいいのでしょうか?
クラスの構造が分かりやすいのでフルがよさげですが、
タイプミス、プログラムの見易さなど考慮するとimportがいいような・・・
自分はimportする派ですがどうでしょう?

487 名前:デフォルトの名無しさん[sage]:04/06/09 14:50
お好きにどうぞ。読みやすさだけ考えればいい。

488 名前:デフォルトの名無しさん[sage]:04/06/09 15:05
>>487
了解ですどうも

489 名前:デフォルトの名無しさん[sage]:04/06/09 16:50
ガッコの課題で、住所録作れといわれたのですが、ぜんぜんわかりません。
概要は↓
ttp://shinjuku.cool.ne.jp/javajava/kadai.txt

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

です。
何でもいいので教えてください。

490 名前:デフォルトの名無しさん[sage]:04/06/09 16:54
>>489
これ会社の課題だろ?
こんなところで聞いてると上司に怒られるよ。

491 名前:デフォルトの名無しさん[sage]:04/06/09 17:02
あのね、これみて。
>>403-406, >>421-427, >>471-472
これで一個の課題よ。で、君のはこれより数段難しくなるわけ。
ということはソースも数段長くなるわけ。たぶん、誰もやらないと思う。俺もやらないし。
期待して待つくらいなら、諦めるか、参考にして勉強しなさい。

492 名前:デフォルトの名無しさん []:04/06/09 20:03
年齢を入力したら、6歳未満か60歳以上なら「無料」
6歳以上12歳未満なら「子供料金」
それら以外なら「大人料金」
と書き出すプログラムお願いします
「if」とか「age>=6」とか使って

493 名前:デフォルトの名無しさん[sage]:04/06/09 20:08
>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));
 }
}

494 名前:デフォルトの名無しさん[sage]:04/06/09 20:16
>>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歳未満は既に排除されている
これもプログラムの一部ですか

496 名前:デフォルトの名無しさん[sage]:04/06/09 20:29
ネタはやめてね

497 名前:デフォルトの名無しさん []:04/06/09 21:13
文字列の検索と置換ができるエディタを作るプログラムを教えてください。
replace()メソッドを使ってはいけないって言われました

498 名前:デフォルトの名無しさん[sage]:04/06/09 21:19
@see >>1

499 名前:デフォルトの名無しさん[sage]:04/06/09 21:35
>>485
プログラミング上の注意のところの
>・ラベル、無限ループは禁止。
ラベル禁止ってどういうこと?


500 名前:デフォルトの名無しさん[sage]:04/06/09 21:41
>>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 変数を使えってことでしょう。

501 名前:デフォルトの名無しさん[sage]:04/06/09 21:45
>>496
ありがとう

502 名前:デフォルトの名無しさん[sage]:04/06/10 00:37
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つコードの間違いを指摘し修正しろというのなんですがどこが間違ってるのでしょうか?


503 名前:デフォルトの名無しさん[sage]:04/06/10 00:38
誤爆しますた、スミマセン

504 名前:デフォルトの名無しさん[sage]:04/06/10 11:11
ヒント:終端が・・・

505 名前:デフォルトの名無しさん[sage]:04/06/10 12:51



「銀行の預金金額を入力してください。」
345323
「その銀行の一年あたりの利子率を入力してください。」
0.01
「何年後まで出力しますか?」
3

1年目の預金合計額は 348776円です。
2年目の預金合計額は 352263円です。
3年目の預金合計額は 355786円です。

506 名前:デフォルトの名無しさん[sage]:04/06/10 12:59
やってもらう立場のクセしてそういうゾンザイな書き方する奴は存外ウマイ(違

507 名前:デフォルトの名無しさん[sage]:04/06/10 13:07
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つめは質的にとっても危ないバグ

508 名前:デフォルトの名無しさん[sage]:04/06/10 14:45
丸投げ歓迎って書いてあるじゃん

509 名前:デフォルトの名無しさん[sage]:04/06/10 15:46
>>507
単利なのなら「1年あたり」という質問はどうかと。。

510 名前:デフォルトの名無しさん[sage]:04/06/10 21:32
>>507
これ、ノーセーブでやる量か?
つーかそういう遊びなら漏れも次やってみようかな。

511 名前:デフォルトの名無しさん[sage]:04/06/10 21:50
>>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とする



ぜんぜんわかりません。よろしくおねがいします。

513 名前:512[sage]: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個の整数の最大値と最小値を求めるプログラムを
配列を使って作成してください。
お願いします。

516 名前:デフォルトの名無しさん[sage]:04/06/11 12:02
>>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};



520 名前:デフォルトの名無しさん[sage]:04/06/11 22:50
>>517
Q どういう処理が得意か。
A これといってない。

Qどういうプログラムが書けるか。
A どうとでも書ける。



521 名前:デフォルトの名無しさん[sage]:04/06/11 23:16
デジタル信号処理の課題ってやってもらえますか??

522 名前:518 []:04/06/11 23:26
誤爆m(;;)m

523 名前:デフォルトの名無しさん []:04/06/11 23:57
>>517
多分教授は大本営発表を待ってるはず。
http://jp.sun.com/products/software/javadesktopsystem/features.html

524 名前:デフォルトの名無しさん[sage]:04/06/12 00:38
>>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]);

525 名前:デフォルトの名無しさん[sage]:04/06/12 08:58
>>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;

}

どうやって入力すれば良いのでしょうか?
これだと一回目で終わってしまいます。

527 名前:デフォルトの名無しさん[sage]:04/06/12 16:45
Javaじゃねえ。

528 名前:デフォルトの名無しさん[sage]:04/06/12 17:48
前にも情報処理一般みたいな質問しにきた奴いたけど、
多分今度の夏休みは、英語ドリルがどうとかリトマス試験紙がどうとか、
硬筆とか毛筆とか7月の最初の週の天気とか聞きに来る奴が現れるな。
なんせ奴等はスレタイ読まないから。

529 名前:デフォルトの名無しさん []:04/06/12 20:38
プログラムを実行するとパソコンからテキストファイルを読み込んで表示するには
どうしたらいいんでしょうか?

530 名前:デフォルトの名無しさん []:04/06/12 20:47
ページ開くと勝手に新しいウインドウができて、
指定したURLに飛ぶっていうのはどーするんだ?


531 名前:デフォルトの名無しさん[sage]:04/06/12 20:47
実行するとパソコンからテキストファイルを読み込んで表示するプログラムはどう作るんですか?
だろ。日本語的には。

532 名前:デフォルトの名無しさん[sage]:04/06/12 21:09
>>529
パソコンからテキストファイルを読み込むプログラム
テキストを表示するプログラム
この二つを組み合わせると作れます。
>>530
複雑だね。ページを開くアプリケーションから作らないといけないし

533 名前:デフォルトの名無しさん[sage]:04/06/13 10:48
>528
絵日記なら代わりに書いてやれるぞ。
得ろ専門なので三日にいっぺんは濡れ場が入るが。

534 名前:デフォルトの名無しさん []:04/06/13 22:34
10行からなるStringAとStringBで行ごとに比較して違う場合はAの違う行を該当する
Bの行に置換するって言うプログラム作れって言われたけどどのように作成したらいいん
でしょうか?

535 名前:デフォルトの名無しさん []:04/06/13 22:40
HttpServletクラスをjavadocで調べたいんだけど、
どこに載っているのですか?

536 名前:デフォルトの名無しさん[sage]:04/06/13 22:49
http://java.sun.com/j2ee/1.4/download.html
↑ここの↓これ。
J2EE 1.4 Platform API Documentation

それか
All-In-One Bundle。

537 名前:デフォルトの名無しさん[sage]:04/06/13 23:24
>534
StringA=StringB

538 名前:デフォルトの名無しさん[sage]:04/06/14 06:09
>>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];
}
}
}

539 名前:デフォルトの名無しさん[sage]:04/06/14 09:48
>>537 で FA だろ

540 名前:デフォルトの名無しさん[sage]:04/06/14 11:45
>>537
';' がありません。

エラー 1 個

541 名前:デフォルトの名無しさん []:04/06/14 14:59
Client.javaおよび
Server.java
TCPにおけるソケット通信を用いる
ClientからJAVAという文字を送るとServerで
受け取った文字を標準出力へ表示する

お願いします。力を貸してください。



542 名前:デフォルトの名無しさん[sage]:04/06/14 15:19
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.*; しわすれ。

543 名前:デフォルトの名無しさん[sage]:04/06/14 15:20
>>541
ttp://www.hellohiro.com/socket.htm
これの文字列をJavaに書き換えれ

544 名前:デフォルトの名無しさん[sage]:04/06/14 15:20
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 を書き換える。

545 名前:デフォルトの名無しさん[sage]:04/06/14 15:22
ぐはぁあああ
サンプル指した方が早いよなぁ そりゃそうだ

546 名前:デフォルトの名無しさん []:04/06/14 15:23
ありがとうございます。
頑張ってみます。

547 名前:デフォルトの名無しさん[sage]:04/06/14 15:25
well known の綴りが違う、Server のコンストラクタ不要、など

548 名前:デフォルトの名無しさん[sage]:04/06/14 16:21
次は文字列と検索する文字を入力し,文字列の中に検索する文字があれば,それ以降(その
文字を含む)の文字列を表示するプログラムです.空欄を埋めてプログラムを完成してください.
#include <iostream.h>
#define STR_LENG 100
char *wherechar(char *p,char ch);
void main(void)
{
char str[STR_LENG+1], ch, *p;
cout << "文字列入力"; cin >> str;
cout << "検索文字?"; cin >> ch;
if((p=wherechar(str,ch)) == NULL){
cout <<"文字"<< ch << "は見つからない"<<endl;
}
else{
cout<<"文字"<<ch<<"の後ろの文字列は"<<p<<endl;
}
}
char *wherechar(char *p,char ch)
{
//埋めていただきたいところ
}

という問題です。よろしくお願いします。

549 名前:デフォルトの名無しさん[sage]:04/06/14 16:23
>>548
>>527 に回答があるよ。

550 名前:デフォルトの名無しさん[sage]:04/06/14 20:35
>>549
ごめんなさい、その527の辺りにヒントがあるということでしょうか?

551 名前:デフォルトの名無しさん[sage]:04/06/14 22:20
      ∧_∧ ウオラァ!              .'  , ..
     (    ) ,"⌒ヽ,         .∴ '      <⌒ヽゲブッ
   /"⌒ヽ 丶⌒"- ─ヽ,            .∴ ' ”,, ,,("⌒丶>>550
  丿 人     rー ─""     _ _ _,, _    ” (入   ヽ,ヽ
  (_  ソ \,   \彡-―""-――= ̄" ,,"" "`:      ヽ >  | )
       ",       '  ,,, __―__ _ー=_ ソ      ノ  丿 |
        (  入_,, ノ二三"ー ̄− _ =二__",,,   _,,(⌒ /  丿
        |  ”                ドゴッ!  (   ノヽノ  ,,.,ノ
        |   |                    /”  /   ,,/
        r⌒ )                  _|  /  ノ
        (   |                  (_ ,ノ  /
        |  |_ _,,               _ ,/ _ ノ
        (__ノ              (    /

552 名前:デフォルトの名無しさん[sage]:04/06/15 00:08
>>548
アナタノヤッテル言語はナニ言語アルカ?
そしてスレタイ読んで気づいテクダサイ

553 名前:デフォルトの名無しさん []:04/06/15 01:53
宿題がわかりません!
140*60pixelの長方形の中に半径15の円を描き、その円を上下左右移動できるようにする。
おしえてください。お願いします。


554 名前:デフォルトの名無しさん[sage]:04/06/15 04:12
>553
内容があいまいすぎ。
移動できるって、キーボードで移動するのか、マウスで移動するのか
はたまた勝手に円が動いてるのか。
あとマウス以外の方法使った場合、長方形の壁突き抜けて動けてしまうぞ。

paint(Graphics g){
g.drawOval(x,y,30,30);
}
で円を書いて、中心座標(x,y)を変化させた直後でrepaint()してやればいい。


555 名前:548[sage]:04/06/15 06:20
>>551 552
すみません、まったく気づけませんでした。

556 名前:デフォルトの名無しさん[sage]:04/06/15 10:31
>あとマウス以外の方法使った場合、長方形の壁突き抜けて動けてしまうぞ。
それは組み方次第だろ。マウスがどうとかどう関係があるんだ。

557 名前:デフォルトの名無しさん[sage]:04/06/15 14:32
「境界条件を意識しろ」という話題に、>>556のつっこみはセンスないな

558 名前:デフォルトの名無しさん[sage]:04/06/15 15:13
>>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);
}
}

560 名前:デフォルトの名無しさん[sage]:04/06/15 18:01
>>559
getAttribute "s"

561 名前:デフォルトの名無しさん[sage]:04/06/15 18:03
>>558
模範つっこみをしろとでも?

562 名前:デフォルトの名無しさん[sage]:04/06/15 18:10
ここはすごいインターネットですね

563 名前:デフォルトの名無しさん[sage]:04/06/15 18:27
そもそも
>>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にも対応せよ

このような課題なんですが、ご教授下さい

565 名前:デフォルトの名無しさん[sage]:04/06/15 20:38
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();
}
}


566 名前:デフォルトの名無しさん[sage]:04/06/15 20:39
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;
}
}
}


567 名前:デフォルトの名無しさん[sage]:04/06/15 20:40
今回のセーブ・コンパイル後の修正点:
 BufferedReader コンストラクタの ) の数
 再帰呼び出し時の引数 x 入れ忘れ(2つとも)

はっきり言って精度悪し。
入力チェックも無し。
ループ抜ける正しい方法も無し。
もらえるとすれば合格点中の最低点。


568 名前:デフォルトの名無しさん[sage]:04/06/15 21:11
配列に収められた
0 1 2 3 4 5 6 7 8 9
の数字をランダムに n 個 ( 0<n<10 ),
重複は認めずに取り出すにはどうした
らよろしいでしょうか.

よろしくお願いします.

569 名前:デフォルトの名無しさん[sage]:04/06/15 21:29
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();
}
}


570 名前:デフォルトの名無しさん[sage]:04/06/15 21:31
あ、読み間違った。
> 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
うお!早い!
ほんとに恐れ入ります。
ありがとうございます、助かりました

572 名前:デフォルトの名無しさん[sage]:04/06/15 22:13
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);
  }


573 名前:572[sage]:04/06/15 22:22
う、まちがえた、これじゃだめだ。

574 名前:デフォルトの名無しさん[sage]:04/06/15 22:30
//これで多分いい。ためしに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
の違いを教えて下さい

576 名前:デフォルトの名無しさん[sage]:04/06/15 22:43
int[] a
配列変数a

577 名前:568[sage]:04/06/16 00:15
はやい!
>>569,570
>>572-574
のみなさんありがとうございます!

578 名前:デフォルトの名無しさん []:04/06/16 01:11
2個もint型変数引数の内容を入れかえるための手続き型引数付きマクロ
iswap(a,b)を実現せよ

これがよくわかりません。よろしくお願いします

579 名前:デフォルトの名無しさん[sage]:04/06/16 01:22
>>578
2個も ではなく 2個の と読むのかな?

public void iswap(int a, int b) {
int num = a;
a = b;
b = num;
}

580 名前:デフォルトの名無しさん[hage]:04/06/16 01:45
Java にはマクロなんかありません
>>579
もそっと慎重に対応せぇよ

581 名前:デフォルトの名無しさん []:04/06/16 01:52
>>579,580
すみません、C言語でお願いします
2個も×
2個の○

>>579はjavaなんですか?
なにせ初心者なものでこの課題が難しいか簡単かもわからない始末、、

582 名前:デフォルトの名無しさん[sage]:04/06/16 02:05
>>548-552 の流れを読め。
読んだら首吊って死ね文盲

583 名前:デフォルトの名無しさん[sage]:04/06/16 02:09
>>581
スレタイ読んでくだされ…

学校の宿題は俺に…… for Java

584 名前:581 []:04/06/16 02:14
すみませんでした

585 名前:デフォルトの名無しさん[sage]:04/06/16 02:29
ぼるじょあがC/C++の宿題を片づけますYO! 24代目
http://pc5.2ch.net/test/read.cgi/tech/1086612317/


586 名前:デフォルトの名無しさん []:04/06/16 17:49
javaで電卓を作っています
小数点をつけるにはどうすれば

587 名前:デフォルトの名無しさん[sage]:04/06/16 17:56
>>586
もんのすごい抽象的な質問だな。何を知りたいかそれだけで分かれってか。おう。
・double 使え
・NumberFormat 使え
・+ "." しろ
他になんかあるかな。これ以上は無理。

588 名前:デフォルトの名無しさん[sage]:04/06/16 20:47
電気麻雀卓?

589 名前:デフォルトの名無しさん[sage]:04/06/16 22:03
>>588
だとするとバグ付きで出したら、
ヤクザ団体から物凄いフィードバックが来るんだろうな

590 名前:デフォルトの名無しさん[sage]:04/06/16 22:04
それにしてもjavaで動く全自動(点数計算付き)麻雀卓、高そうだな・・・

591 名前:デフォルトの名無しさん[sage]:04/06/17 13:25
電子式卓上計算機→電卓
げ、げ、原形がないんだな うん(山下

592 名前:マホロビャ []:04/06/17 13:36
もうすぐ 時間制限の宿題がでます!!591さん たすけて

593 名前:デフォルトの名無しさん[sage]:04/06/17 13:40
高いよ

594 名前:マホロビャ []:04/06/17 13:42
ゴクリ・・・

595 名前:デフォルトの名無しさん[sage]:04/06/17 13:44
時給 おにぎり5個だ

596 名前:マホロビャ []:04/06/17 13:48
(@3●)〜@コロ

や・・・やっすーーー!

597 名前:デフォルトの名無しさん[sage]:04/06/17 13:49
山下画伯だからな

598 名前:デフォルトの名無しさん[sage]:04/06/17 13:49
そうそう ただし具で飯を包んだやつな


・・・いいから宿題出たらそれだけ書けや 無駄レスすんな

599 名前:デフォルトの名無しさん[sage]:04/06/17 13:51
もうすぐっていつ?まだ?

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

602 名前:デフォルトの名無しさん[sage]:04/06/17 13:56
殺したい ネタでも殺したい
誰かもう一人連れてきて地獄のコンビネーションにかけたい

603 名前:デフォルトの名無しさん[sage]:04/06/17 13:58
最近多くなりましたね。
もう夏ですなぁ

604 名前:マホロビャ []:04/06/17 13:59
あの・・


605 名前:デフォルトの名無しさん[sage]:04/06/17 13:59
いやー、おもしろかった!
よくやった!

606 名前:デフォルトの名無しさん[sage]:04/06/17 17:15
line= new BasicStroke(4.0f,BasicStroke.CAP_BUTT,BasicStroke.JOIN_MITER,10.0f,10.0f,0.0f);
これでなぜかシンボルを解決できませんエラーが出るんですけど、なぜですか?

607 名前:マホロビャ []:04/06/17 17:29
結局理解出来ないという事でいいんですね?w

608 名前:デフォルトの名無しさん[sage]:04/06/17 17:52
>>607
CASLなんぞやったこと無いから理解できん。
っていうか、CASLの宿題スレ行けよ。
ここはJavaの宿題スレなので。
もしかして日本語理解できないとかじゃないよな?

609 名前:デフォルトの名無しさん []:04/06/17 18:28
>>607
いいです。だから死んでください。

610 名前:デフォルトの名無しさん[sage]:04/06/17 18:41
606です。お願いします。

611 名前:デフォルトの名無しさん[sage]:04/06/17 19:20
変数宣言してないっつ〜オチじゃなくて?

612 名前:デフォルトの名無しさん[sage]:04/06/17 19:24
そういうミスでは無いです。newで直接SetStrokeに渡してもダメでした。何ででしょうか。

613 名前:デフォルトの名無しさん[正解は不明のコンストラクタsage]:04/06/17 19:25
どのシンボルが解決できないか出てるだろう。そっから自分で考えたら?


614 名前:デフォルトの名無しさん[sage]:04/06/17 19:28
newの下に_がついてました。newがダメって一体・・

615 名前:デフォルトの名無しさん[sage]:04/06/17 19:44
もっちょい あと一歩

616 名前:デフォルトの名無しさん[sage]:04/06/17 19:56
でもimportもちゃんとしてますよ。

617 名前:デフォルトの名無しさん[正解は>>613のメール欄sage]:04/06/17 20:56
がんがれ>>616

618 名前:デフォルトの名無しさん[sage]:04/06/17 21:27
>>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を、配列のサイズを最初に入力し、それを用いて配列を生成するように修正しなさい
※なお各数字は適当で良い

620 名前:デフォルトの名無しさん[sage]:04/06/18 16:22
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];


621 名前:デフォルトの名無しさん[sage]:04/06/18 16:23
//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();
}
}
}


622 名前:デフォルトの名無しさん[sage]:04/06/18 16:25
課題2がちょっと曖昧。
本当なら配列の数を決めたら丁度その数だけ入力があっていいと思うんだが、
そこまで言及してない。だから適当にしちゃった。
思わず "データ数>" にしちゃったけど "配列サイズ>" が正しいかな。

623 名前:デフォルトの名無しさん []:04/06/18 16:33
どうもありがとうございます
助かりました

624 名前:名盤さん []:04/06/18 17:13
>>622
最後の}でclassまたはinterfaceが必要と出たんですが、どうすればいいんでしょう?

625 名前:デフォルトの名無しさん[sage]:04/06/18 18:04
どっかの { が足りないか、 } が多い。
インデントつけて、おかしいところを調べれ。
ちなみに //n) は全部同じ高さになるはず。

626 名前:デフォルトの名無しさん []:04/06/18 19:06
BufferedReader
って何?
うちの授業でコレ使ってるの見たことないんだけど

627 名前:デフォルトの名無しさん[sage]:04/06/18 21:56
バッファされた読む者

628 名前:デフォルトの名無しさん[sage]:04/06/18 22:14
そりゃ、授業程度じゃ見たことないものの方が圧倒的に多いだろう

629 名前:デフォルトの名無しさん[sage]:04/06/18 22:24
>>626
io の基本中の基本じゃないの?知っとけよ。

630 名前:デフォルトの名無しさん[sage]:04/06/18 23:03
講師が用意した変なユーティリティクラスを使わされてるのか?
前にもそれっぽいクラス書いてる奴がいたけど。
半ばウソ教えられてるようなもんだ かわいそうに

631 名前:デフォルトの名無しさん[sage]:04/06/18 23:34
バッファリングしなくても、読めるっちゃ読めるけどな。

632 名前:デフォルトの名無しさん []:04/06/19 21:07
学校のPCに入ってる
エディタ(xyzzy)
ってのと
DOSプロンプト
ってのを自分のPCにも入れたいんだけど
どこでDLできますか

633 名前:デフォルトの名無しさん[sage]:04/06/19 21:11
http://www.forest.impress.co.jp/lib/offc/document/txteditor/

スタート->すべてのプログラム->アクセサリ->コマンドプロンプト


634 名前:デフォルトの名無しさん[sage]:04/06/19 21:24
>>632
Meadowもイイ
じゃなくて、スレタイ嫁ゴルァ

635 名前:デフォルトの名無しさん[sage]:04/06/19 22:56
>>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);
}
}
}

637 名前:デフォルトの名無しさん[sage]:04/06/20 22:45
>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++;
 }
}

638 名前:637[sage]:04/06/20 22:47
System.out.println(findnum + "こ見つかりました");
を書き忘れた。ま、分かるだろ。

639 名前:636 []:04/06/20 23:24
>637=638さん
ありがとうございました。(TдT)
あとは考察。。(;´〜`)何とかします

640 名前:デフォルトの名無しさん[sage]:04/06/21 14:23
「マクローリン展開の応用として、円周率πを求めるプログラムを組め。
(300桁)」という課題がでました。
お力を貸してください。よろしくおねがいします。

641 名前:デフォルトの名無しさん[sage]:04/06/21 14:43
リストの全内容を反転するプログラムを作成せよ、という問題を教えてください。
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の使い方もよくわからないので、誰か教えてください。




642 名前:641[sage]:04/06/21 14:56
すいません追加でもうひとつ。
public void concat(IntList x)
意味:リストの連結
というプログラムを作れという問題です。
誰かお願いします。


643 名前:デフォルトの名無しさん[sage]:04/06/21 15:25
>>640
なんか「このクラスを使うこと」「使わないこと」とかシバリある?

>>641-642
その IntList とやらのソースなりインタフェースなりを教えてくれないことにはどうしようもない。

644 名前:641[sage]: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;
}

645 名前:641[sage]: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();
}

646 名前:641[sage]: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;
}
}
長くなってすいません。

647 名前:641[sage]: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 名前:デフォルトの名無しさん[sage]:04/06/21 16:24
一時間周期でデータを取得してファイル出力するプログラムを作っているんですが
一時間周期のやり方がわかりません。
お願いします

649 名前:デフォルトの名無しさん[sage]:04/06/21 16:30
>>648
Thread, Runnable, Timer あたりを調べてみよ。

ちなみにここは基本的に丸投げスレなので、
それならそう書いて、必要な仕様や中途なソースも挙げて欲しいし、
そうでないなら(レスの感じからそういう風にしかとれない)次回から質問スレにどうぞ。

650 名前:デフォルトの名無しさん[sage]:04/06/21 16:31
ファイルにデータに書き込む時に常に上に最新のデータを書き込むようにするのが分かりません。
例で言えば
最新データ
一つ前
二つ前
 ・
 ・
としていくときの処理はどうやればいいのでしょうか?
おねがいします_| ̄|○

651 名前:デフォルトの名無しさん[sage]:04/06/21 16:45
>>644
ほんとにそれだけ? IntCell クラスとか、IntList のメソッドが足りないじゃないか。
それでも想像で組めそうではあるけど、俺らも君も動作検証できんぞ。
それと、>>641 は一体どこまでが君の書いたソース? 全部?
その swap は一切何の役にも立たないメソッドのようだが。

>>650
1) 実行時に全部リストに取り出しちゃって、そのリストの一番最初に最新分をつっこんで、全部書き込む。
2) 保存先と同じディレクトリに別のファイルを作り、最新分を書き込み、
 古い方から一個づつ読み込んで新しいのに書き込み、
 最後にファイルを閉じて、古い方を捨て、新しい方の名前を変える。
こんなとこかね。


652 名前:641[sage]: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;
}


653 名前:641[sage]: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;
}
}
}


654 名前:デフォルトの名無しさん[sage]:04/06/21 17:15
IntList の nth (それと search) が無い。検証できないってば。
それに、検証用の main おかしくないか。
いきなり a.add(2, 10) って。
空のリストに 2 なんて index つけて渡しも、はじかれるんじゃないのかね。
それも nth の仕様が分からんとなんとも言えんがな。

655 名前:641[sage]: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;
}

656 名前:デフォルトの名無しさん[sage]:04/06/21 17:57
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();
}
}


657 名前:デフォルトの名無しさん[sage]:04/06/21 17:59
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;
}
}


658 名前:1/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() );

}

659 名前:2/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;
}

660 名前:3/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の三角形表示になるようなんですがこれもさっぱりでつ…

663 名前:デフォルトの名無しさん[sage]:04/06/21 19:23
なんかそれ前にもあったぞ。
このスレさらってみてみな。

664 名前:デフォルトの名無しさん[sage]:04/06/21 20:34
理屈は >>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];
}
(続く)

665 名前:デフォルトの名無しさん[sage]:04/06/21 20:35
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();
}
}
}


666 名前:デフォルトの名無しさん[sage]:04/06/21 20:38
>>661>>374 参照。

しかしのう。C++ の方でもかぶりまくってるのを見かけるが。
ネタ提供は嬉しいけど、どうかのう、この現状。

667 名前:デフォルトの名無しさん[sage]:04/06/21 20:40
ごめん、>>664 の package test; は要らない。

668 名前:デフォルトの名無しさん[sage]:04/06/21 21:44
>>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);
    }
  }
}

669 名前:668[sage]: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)

お願いします 

671 名前:デフォルトの名無しさん[sage]:04/06/21 22:57
そのくらいのレベルなら下手くそでもいいから自分でやれ。

672 名前:デフォルトの名無しさん []:04/06/21 23:11
頼むYO
そういうスレでしょ?

673 名前:デフォルトの名無しさん[sage]:04/06/21 23:55
>>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();
    }
  }
}

674 名前:641[sage]:04/06/22 01:16
できました!ありがとうございました。

675 名前:デフォルトの名無しさん[sage]:04/06/22 10:03
「じゃんけんゲームをします。」
「何勝先取ですか?」



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



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



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



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


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

676 名前:デフォルトの名無しさん[sage]:04/06/22 10:06
「あなたは西暦何年生まれですか?」

1980

「何月ですか?」



「何日ですか?」

45

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



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



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

(1)西暦年が四で割り切れる年
(2)そのうち百で割り切れる年はうるう年としない
(3)四でも百でも割り切れる年のうち、四百で割り切れる年はうるう年とする

の規則で設けられます。

677 名前:デフォルトの名無しさん[sage]:04/06/22 14:17
>>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;
}

679 名前:デフォルトの名無しさん[sage]:04/06/22 14:18
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;
}

680 名前:デフォルトの名無しさん[sage]:04/06/22 14:24
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;
}

681 名前:デフォルトの名無しさん[sage]:04/06/22 14:28
//役(?)を文字列に変える
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);
}
}

682 名前:677-681[sage]:04/06/22 14:31
少しだけ実験 (実行テスト) してみたけどちゃんと動いてる
これ以上はマンドイので自分でやってください
ソース汚いのは許してねw

683 名前:640[sage]:04/06/22 20:48
>>658
返事が遅れて申し訳ありませんでした。
大変参考になりました。
無事完成することができました。ありがとうございました。

684 名前:デフォルトの名無しさん[sage]:04/06/23 01:54
IEEE754の浮動小数点数同士の加減乗除のプログラムを教えてください

例えば
9.999×10の1乗+1.610×10の-1乗

入力は二つです。10進数で入力します。それを2進に変換して浮動小数点数にして、演算をします。。
出力結果も10進で表示します。

C言語でお願いします

685 名前:デフォルトの名無しさん[sage]:04/06/23 02:03
>>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;
}


686 名前:デフォルトの名無しさん[sage]:04/06/23 15:49
MIDI内に含まれる音程からキー(調)を抽出するアルゴリズムを教えて下さい

687 名前:デフォルトの名無しさん[sage]:04/06/23 21:24
>>686
・MIDIデータのピッチを半音階ごとに集計

・どうにかして7音に絞る
 頻度の上位とか、音価の低いものを除くとか、工夫する

・音程が全全半全全全半になっているところを探す
 マッチした先頭が長調、6度上が短調

これ以上は、和声学の知識が必要。

688 名前:デフォルトの名無しさん[sage]:04/06/24 10:45
>>687
それ厄介な方法じゃない?

689 名前:デフォルトの名無しさん[sage]:04/06/24 10:54
最初と最後の音でだいたい決まる。

690 名前:デフォルトの名無しさん[sage]:04/06/24 10:56
なんにしろ Java 関係ないし
宿題っぽくもないし

691 名前:きょんちゃん []:04/06/24 13:33
OUT命令で数値を16進数として表示するプログラムを作成してください!
お願いします〜


692 名前:デフォルトの名無しさん[sage]:04/06/24 13:59
OUT命令...
アセンブラでもやってんのか
それとも System.out フィールドのことか
微妙だ

693 名前:きょんちゃん []:04/06/24 14:08
アセンブラです!CASLでっす! おねがいしますうう><

694 名前:デフォルトの名無しさん[sage]:04/06/24 14:31
アセンブラは 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("入出力エラーです。");
}
}
}

697 名前:デフォルトの名無しさん[sage]:04/06/24 15:34
多分 DataInputStream の使い方が分かってない
ファイルがテキストで入ってるなら、BufferedReader とか StringTokenizer とか使って読み込むんだよ
ためしに、ファイルから入力せずに、ソース中に用意した数値を DataOutputStream で書き込んで、
結果ファイルをエディタで開いてごらん

>また、入力をファイルからではなくコマンドライン引数からにする場合にはどうすればいいのでしょうか?
コマンドラインから50個も指定するの?

698 名前:695[sage]:04/06/24 16:26
分かりました、BufferedReaderで試してみます。
どうもありがとうございました。
コマンドラインは「ファイルをコマンドライン引数によって読み込む」の間違いでした・・・

699 名前:デフォルトの名無しさん []:04/06/24 16:43
何で20分も書き込み来てないのよ?

700 名前:デフォルトの名無しさん[sage]:04/06/25 09:59
ax^2+bx+c=0の方程式を解くプログラム。a、b、cはコマンドラインパラメータで与える
これ頼んます

701 名前:デフォルトの名無しさん[sage]:04/06/25 13:58
簡単じゃねーか
数学的にできるところは自分でやってくれよ 頼むよボーイ

702 名前:デフォルトの名無しさん[sage]:04/06/25 16:53
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");
}
}

}
こんな簡単な問題はないよ。

703 名前:デフォルトの名無しさん[sage]:04/06/25 17:06
Double.parseDouble(args[0]);
これなに?

704 名前:デフォルトの名無しさん[sage]:04/06/25 17:32
>>703
http://java.sun.com/j2se/1.4/ja/docs/ja/api/

705 名前:デフォルトの名無しさん[sage]:04/06/25 21:50
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という
クラスメソッドを使う。

お願いします。

706 名前:デフォルトの名無しさん[sage]:04/06/25 23:10
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個のデータを得る方法を考えよ。

708 名前:デフォルトの名無しさん[sage]:04/06/26 04:45
>707
クイックソートのアルゴリズムをベースに改造してみると良いと思われ。

709 名前:デフォルトの名無しさん[sage]:04/06/26 10:51
サーチベースなら、最悪でもnkで終わりそうなもんだが。。

710 名前:デフォルトの名無しさん[sage]:04/06/26 13:56
>>706
ありがとうございました

711 名前:デフォルトの名無しさん[sage]:04/06/26 14:25
STL(C++)のnth_elementの実装真似すれば?

712 名前:デフォルトの名無しさん []:04/06/26 22:31
>>707
ソートなんかする必要ないじゃん。
配列全体一回舐めれば終わりでしょ。



713 名前:712 []: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とかを使おうと思ったのですが、
これだと最初に描画したらそのままで動かせません。
どうしたらいいでしょうか。
一応スレッドの使い方は勉強しました。


715 名前:714 []:04/06/27 01:13
今はJButtonを敷き詰めて
setBackgroundColorを変えることによるブロックが落ちるのを見せてます・・
それだとあまりにもダサイです。

716 名前:デフォルトの名無しさん[sage]:04/06/27 01:18
>>714
1.paint()内部で、インスタンス変数を元に描画位置を決めてドロー
するように実装する。
2.シーンの進行とともにインスタンス変数を変更する。

でいいじゃん。

717 名前:デフォルトの名無しさん[sage]:04/06/27 02:33
>>714
作ってみたが、拡張性とかあんまり考えていない。参考までに。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1064150088&res=131&fi=no

718 名前:714 []:04/06/27 03:28
>>716
あまりに焦っていてインスタンス変数の事を考えてませんでした。
恥ずかしい・・・
ありがとうございます。
>>717
わざわざGUIのソースまで書いてもらってすいません。
大変参考になります。
宿題はもちろん丸パクリではなく、参考にさせて頂いて作ります。
ありがとうございました。

719 名前:Name_Not_Found []:04/06/27 04:34
オレも>>714と同じ課題が出てる・・

720 名前:714 []:04/06/27 05:22
>>719
一緒に頑張ろうぜ
 今 日 の 23:59 ま で な !

721 名前:714 []:04/06/27 07:49
YOSHI!
おかげさまでテトリスというか、
テトリスのブロックがランダムで出て落下するものは出来ました。
回転、横移動も出来ました。
これも皆様のおかげです
ありがとうございました。


722 名前:714[sage]:04/06/27 07:51
聞き逃げのようですいませんが、
一応学校に提出するものなので
作ったソースをここに晒すことはできません。
予めご了承下さい。

723 名前:719 []:04/06/27 11:16
オレはまだ何もできてないぜ!

OTL

724 名前:719[sage]:04/06/27 11:18
714さんは2年の方ですか?
私は2年ですが、いきなりこんな課題出されても・・って感じです。
とりあえず教科書読んで勉強してます。

725 名前:デフォルトの名無しさん []:04/06/27 12:18
>>714
>ここの方ならサクっと出来ると思うので質問させて下さい。

俺らが楽に出来るかどうかなんて関係ねーんだよボケが。
簡単に出来るんだったら何でも無条件にやってもらえるつもりになってんじゃねーよ。死ね。


726 名前:714[sage]:04/06/27 12:32
ぐえー(絶命)

727 名前:デフォルトの名無しさん[sage]:04/06/27 12:32
>>725
ここは、そういうスレなわけだが

728 名前:デフォルトの名無しさん[sage]:04/06/27 13:00
オレに>>714の条件で作るテトリスを何からどう始めればいいのか一から教えてくれ

729 名前:デフォルトの名無しさん[sage]:04/06/27 13:09
>727
「サクっと出来るので」という所に「チャッチャッとやってくれよな」なニュアンスを感じたんだと思う

730 名前:デフォルトの名無しさん[sage]:04/06/27 13:14
>>728
とりあえず、717を解読することからはじめたら?


731 名前:デフォルトの名無しさん[sage]:04/06/27 13:27
>>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が固定していれば簡単ですよね・・・

733 名前:デフォルトの名無しさん[sage]:04/06/27 14:24
>>732
多重のforを動的にどう表現するかって問題ね。
面白そうだから、俺もちょっと考えてみよう。

734 名前:デフォルトの名無しさん []:04/06/27 14:25
よろしくお願いします。

735 名前:733[sage]: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はそれぞれ再帰関数を作れば出来るかと。

736 名前:デフォルトの名無しさん[sage]:04/06/27 14:43
arg.length-m-1 は arg.length-m でよかった。これはミス。


737 名前:初心者 []:04/06/27 14:45
GMT(グリニッジ標準時)からの時差を求めたいんですが、どのクラスを
使えばいいんでしょうか?そもそもその既存のクラスはあるのでしょうか。

738 名前:デフォルトの名無しさん []:04/06/27 14:45
(XX;

友達は5分くらいで作ってしまったのですが、
その横で私は1時間悩み、家に帰ってから3時間考えたのですが
わかりませんでした。
それくらい、私は馬鹿なので・・・

再帰ってなんでしょうか?
無知ですいません。

739 名前:デフォルトの名無しさん[sage]:04/06/27 14:46
俺もいっそ再帰で書いた方が楽だと思う
>>732 が習ってるかどうかによるが。
それと、引数の配列内には重複はない前提でいいのかな?

740 名前:デフォルトの名無しさん []:04/06/27 14:47
>>737
http://www.hellohiro.com/timezone.htm

741 名前:デフォルトの名無しさん[sage]:04/06/27 14:48
>>732
とりあえず、mが1の場合くらい自分で作ってみ。

742 名前:デフォルトの名無しさん[sage]:04/06/27 14:48
>>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が固定ならできました。

745 名前:デフォルトの名無しさん[sage]:04/06/27 14:50
あ、かぶった。
5分で考えたならそれは再帰だと思うがなあ。
メソッド内でそのメソッド自身を、引数を変えて呼ぶってのを習わなかった?

>>737
日本の時間なら常に 9時間、と決まってるわけだが。
>>740 の挙げてる、実行マシンの設定に対して、ということでいいの?

746 名前:デフォルトの名無しさん[sage]:04/06/27 14:50
あ、失礼・・それは作ってるのか。でも規則性とかあるやん・・

747 名前:デフォルトの名無しさん []:04/06/27 14:53
>>746
たぶん、君にはできないw

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

中2の宿題にしては難しいな。

748 名前:デフォルトの名無しさん []:04/06/27 14:55
>>745
>メソッド内でそのメソッド自身を、引数を変えて呼ぶってのを習わなかった?
習ったような習ってないような・・・
コンピューター実習の時間にゲームやってたりするので、
聞き逃したかもしれません。
ちょっとプリントを見直してみます。


749 名前:デフォルトの名無しさん[sage]:04/06/27 14:57
進学校なのかどうかは知らんが、それではおいてかれるぞw

750 名前:733[sage]:04/06/27 15:02
てか今時は1や2は省略してListとか使うよな
俺なんでJavaスレにいるんだろうw

751 名前:デフォルトの名無しさん []:04/06/27 15:04
プリントに載ってました。
再帰を使えばできるんですか。
ちょっと考えてきます。

>>749
はい、既においてかれました。
日本で一番の進学校ですが、東大には入れないと思いますので
慶応か早稲田にしようかと思ってます。
まあ、まだ先の話ですが。

752 名前:デフォルトの名無しさん[sage]:04/06/27 15:11
みょうなやりとりなんで、ちょっと笑った。

753 名前:デフォルトの名無しさん[sage]:04/06/27 15:16
でも組み合わせかあ。

{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}……とはやってないんだから。

754 名前:デフォルトの名無しさん[sage]:04/06/27 15:22
重複有りなの?何か問題としての意味がなさそうな・・・。


755 名前:デフォルトの名無しさん[sage]:04/06/27 15:22
>>753
冷静にどうぞ。添え字の組合せだけと思われる。
すなわち {0, 1}, {0, 2}, {1, 2} の 3通り。

再帰考えないでやってみようと思ったけど、クソ汚くてだめだ。
結局、スタックを自前で用意するか、それと同等の処理をすることになるからな。

756 名前:755 一応再帰無し[sage]: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("]");
}
}


757 名前:755 一応再帰無し[sage]: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++;
}
}


758 名前:755 一応再帰無し[sage]: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;
}
}
クソ汚い。人間が手書きでやるときと同じような方法。
同じ再帰なしでも、もう少しマシな方法がありそうだ。

759 名前:デフォルトの名無しさん[sage]:04/06/27 16:04
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 なら上限は増えるが、根本的な解決にはならない。

あるいはこれのアレンジで、任意サイズの配列に対応したものもできなくはないが、メンドクセ。

760 名前:デフォルトの名無しさん[sage]:04/06/27 16:18
>>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 なんか似たようなのを見たことあるな。
そういうの考えつく人ってのはえらいなぁ。

761 名前:デフォルトの名無しさん[sage]:04/06/27 19:07
中学でJAVAやるの?

762 名前:デフォルトの名無しさん[sage]:04/06/27 19:08
今は情報という教科でやるんだっけか?

763 名前:デフォルトの名無しさん []:04/06/27 19:17
なるほど、ビット演算で簡単に出来そうだね。ちょっと考えてみる。

764 名前:デフォルトの名無しさん[sage]:04/06/27 19:18
なかなかの英才教育だな。
でも情報工学ばっかりやってられないだろうから、
基礎が抜けて、結局技術者的にはカタワな育ち方すると思う。
大学あたりでのオプション能力としてしか役に立つまい。
それだってやらないよりはマシだけどね。

765 名前:デフォルトの名無しさん[sage]:04/06/27 19:24
中学でやる内容なのか?
受験とは違う学校独自の授業?

しかし中学でJavaか・・・
実はなんちゃって中学生?

俺の中学時代は勉強よりも部活に燃えてたな・・・

766 名前:デフォルトの名無しさん[sage]:04/06/27 20:32
正直、テトリスより難しい。

767 名前:714[sage]:04/06/27 20:37
正直、お前等が輝いて見えすぎです。

768 名前:デフォルトの名無しさん[sage]:04/06/27 20:37
ぷよぷよよりは簡単だな。

769 名前:デフォルトの名無しさん[sage]:04/06/27 21:13
こういう課題は燃えるな・・・。
純粋にアルゴリズムの問題。

知識あり(ほとんど定型だから、探せばいくらも既存のあり)、
工夫あり(自分で制限つけてやるもよし)、
楽しい。

770 名前:デフォルトの名無しさん[sage]:04/06/27 21:20
「工夫」の線で、木を作ってやってみようかと思ったが、冗長にもほどがあった。
どうも俺はそのへんを図る能力にかけているらしい。

771 名前:ビットフラグのセンでベタに書いてみた[sage]:04/06/27 22:16
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;
 }
}

772 名前:771[sage]:04/06/27 22:23
TRUE/FALSEを要素に持つ可変長リストと、次のリストの状態を導出するメソッド
があれば、可変長の処理できそうだね。

773 名前:759[sage]: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;
}


774 名前:759[sage]:04/06/27 23:04
うげ、まだちがってる。訂正。
×new _smallest
○new_smallest

スマソ

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

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

まだ私は見ていないのですが・・・

776 名前:714[sage]:04/06/27 23:11
>>775
 キ ボ ン ヌ 

さあ、大学2年の漏れに解けるかどうかッ!


777 名前:30過ぎのオヤジ[sage]: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
教科書の最後に載ってます。

780 名前:デフォルトの名無しさん[sage]:04/06/27 23:21
少なくともここで解答が発表されるのは8/31だな
いや深い意味は無いがw

781 名前:デフォルトの名無しさん[sage]:04/06/27 23:23
>>778
それって上の組み合わせの問題より簡単じゃないか?

782 名前:デフォルトの名無しさん[sage]:04/06/27 23:25
こうやって見ると、やっぱりプログラミングってターノスィーネ〜。

783 名前:中2 []:04/06/27 23:28
そうですか?
私にはさっぱりなんですが。
最短経路ってどうやって求めるんですか?
x^2+y^2=z^2
みたいなのを計算する?

784 名前:デフォルトの名無しさん[sage]:04/06/27 23:29
>>783
プログラムでやるんだから、手当たり次第という方法が使えるノデス。

785 名前:30過ぎのオヤジ[sage]:04/06/27 23:32
仕事でやるJSP/サーブレットでデータを右に左に移すだけのソースを書くより
よっぽど頭を使うというところが、なんだか情けなくなってきた…orz

786 名前:デフォルトの名無しさん[sage]:04/06/27 23:34
単純に入り口探して、出口探して、x-1〜+1とy-1〜+1とマッピングしながら進めばいいのでは?
こんなアナログな解決法だと笑われちまうかなw

787 名前:中2 []:04/06/27 23:37
すいません、書き忘れましたが
スタートは左上[0,0]でゴールは右下[n,m]です。


788 名前:デフォルトの名無しさん[sage]:04/06/27 23:43
いくつも候補をリスト化して、壁にぶち当たったら次の候補へ
あとは「輪状に繋がっている場所に踏み込むとあぼんする」からここはもう来たといマッピングも必要かな。


789 名前:デフォルトの名無しさん[sage]:04/06/27 23:51
1.迷路→通行可能な経路によるツリー構造に変換
2.ゴールにたどり着く経路だけを取り出して、その中で一番短い経路を返却

ってとこかな。ココにコード書こうとすると1レスじゃすまないな。

790 名前:デフォルトの名無しさん[sage]:04/06/27 23:59
循環サラリーマン問題ってやつ?違う?

791 名前:デフォルトの名無しさん[sage]:04/06/28 00:36
>>790
まったく違うw

792 名前:デフォルトの名無しさん[sage]:04/06/28 00:50
ダイキストラタンをもっとリスペクトしる!

793 名前:デフォルトの名無しさん []:04/06/28 00:52
中2の宿題の割には難しいな。
これができない本職プログラマーは多いだろう。
7割くらいができないとみた。

794 名前:デフォルトの名無しさん[sage]:04/06/28 00:58
>>793
んなバカな。多くて2割でしょ。

795 名前:デフォルトの名無しさん[sage]:04/06/28 01:49
結局テトリスは未提出になったオレ
再履修確定

796 名前:デフォルトの名無しさん[sage]:04/06/28 01:50
>>795
赤の他人に恨み節ですか。痛いですねあんた。

797 名前:デフォルトの名無しさん[sage]:04/06/28 02:38
おいおい被害妄想もいいとこだ

798 名前:デフォルトの名無しさん[sage]:04/06/28 07:26
本当に中2だと信じているやつはいるのか?

799 名前:デフォルトの名無しさん []:04/06/28 09:51
中2の宿題ができない人だ

800 名前:デフォルトの名無しさん[sage]:04/06/28 12:14
>>793
できない奴は本職といっちゃいけない
タクシーで言えば白タクみたいなもの

801 名前:デフォルトの名無しさん[sage]:04/06/28 12:40
>>778の課題は、まだ解答載せないほうがいいのか?

802 名前:デフォルトの名無しさん []:04/06/28 17:43
>>801
どっちでもいいような。
ググレばそこら辺に似たようなのはいっぱいあるけど。

803 名前:デフォルトの名無しさん[sage]:04/06/28 17:49
ダイクストラで60行くらい。
なんで java.awt.Point 使わせないのかね。equals 使えてちょっぴり楽なんだけどな。

804 名前:801[sage]:04/06/28 18:50
じゃあいいか(T△T) ソース汚いし。。
検索部分だけなら再帰で10数行だしな

805 名前:714[sage]:04/06/28 22:41
>>795=>>719か?
残念だったな
まあ、何だ。来年があるさ。

806 名前:デフォルトの名無しさん[sage]:04/06/29 06:53
>>805
来年、頑張りますよ

807 名前:デフォルトの名無しさん[sage]:04/06/29 11:06
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1060403548&res=100

このプログラムを改造して、正n角形の全ての頂点を結んでできる図形(ダイアモンドパターン)を描画する
アプレットを書け。(追加・変更部分にはコメントを記述すること)

808 名前:デフォルトの名無しさん[sage]:04/06/29 11:35
変数 i のとなりに j 追加
i の for の一段中に for(j=i+1; j<numPoints; j++) {} 追加
theta2 = Math.PI*2*j/numPoints; に変更

以上

809 名前:デフォルトの名無しさん[sage]:04/06/29 11:51
だれか>>676やってください

810 名前:デフォルトの名無しさん[sage]:04/06/29 12:38
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Q676 {
  public static void main(String[] args) throws IOException {
    int y, m, d;
    Calendar c = Calendar.getInstance();
    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("あなたは西暦何年生まれですか?");
    y = Integer.parseInt(in.readLine());
    for (;;) {
      System.out.println("何月ですか?");
      m = Integer.parseInt(in.readLine());
      if (m >= 1 && m <= 12)
        break;
      System.out.print("ありえません。");
    }
    for (;;) {
      System.out.println("何日ですか?");
      d = Integer.parseInt(in.readLine());
      c.set(y, m - 1, d);
      if (c.get(Calendar.DAY_OF_MONTH) == d)
        break;
      System.out.print("ありえません。");
    }
    SimpleDateFormat sdf = new SimpleDateFormat("あなたはEEEE生まれです。");
    System.out.println(sdf.format(c.getTime()));
  }
}

適当です、あまり動作チェックしてません。

811 名前:デフォルトの名無しさん[sage]:04/06/29 12:39
くそっタッチの差だった・・・・

812 名前:810[sage]:04/06/29 12:41
811さんのも気になるぞ〜

813 名前:811[sage]: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 してとか、
本当はそんなことをしなきゃならないと思う。


誰かやって。

814 名前:810[sage]:04/06/29 13:18
Zellar(?)の公式を使うとか(Calendar使うのとあまり変わらん気がするが)
まぁ、それは他の人にやってもらうとして…名無しに戻ります。

815 名前:デフォルトの名無しさん[sage]:04/06/29 23:34
中学生でJavaですかぁ…
私は高1なんですが
ttp://lecture.ecc.u-tokyo.ac.jp/~cichiji/cp-03/cp-03-04-3.html
これの演習ができないです…
回答もどこにもないし 教えてくれませんか?

816 名前:デフォルトの名無しさん[sage]:04/06/29 23:44
>>815
ひょっとしてこれはギャグで言ってるのか?
てか先生のギャグか?

817 名前:デフォルトの名無しさん[sage]:04/06/30 01:40
俺が始めてふぃぼなっちなる単語を聞いたのは、大学2年のときだったよ・・・

818 名前:デフォルトの名無しさん []:04/06/30 03:57
n以下の素数を全て見つけ出し、画面上に表示する
というプログラムを教えてください・・・・
どうか、お願いします・・・

819 名前:デフォルトの名無しさん[sage]:04/06/30 07:22
100 以下の素数を求めるやつがすでにある。
第一段階で10までもとめてるが、かわりにsqrt(n) をカバーすればいいはずだ

820 名前:デフォルトの名無しさん[sage]:04/06/30 08:53
素数は >>373-374 ね。
100 だの 101 だの 10 を、n だの n + 1 だの (int)Math.sqrt(n) だのに変えればいい。

821 名前:デフォルトの名無しさん[sage]:04/06/30 08:59
>>818
ほとんど答え書いてあるじゃない。
「階乗を求めるプログラム」ちょこっと変えればできるよ。

822 名前:818[sage でも無理かも・・・]:04/06/30 09:41
アドバイスありがとうございます
参考にして頑張ってみたいと思います



823 名前:デフォルトの名無しさん[sage]:04/06/30 09:48
エルトン・ジョンのふるいでも書いて提出すれば先生に一目置かれるぞ
「イヤミや奴」と。

824 名前:デフォルトの名無しさん[sage]:04/06/30 13:08
>>822>>815 への間違い。>>818 は分かってるだろうけれども。

825 名前:デフォルトの名無しさん[sage]:04/06/30 22:31
今度自由研究で簡単なゲームを作ることになって、
音ゲーを作ろうと思ってるんですが全然手が出ません。
誰か簡単でいいので作ってくれませんか?

826 名前:デフォルトの名無しさん[sage]:04/06/30 22:52
出来そうな物を作ろうと思えよ。
自由課題で全然手が出ないものを作ろうと思う神経が理解できない。

827 名前:デフォルトの名無しさん[sage]:04/06/30 22:59
俺も理解できない。
自分ができる最大限のことをやるのが自由研究じゃないの?
最低合格ラインはこのくらいです、って提示されたら作ってやらないでもないけど。
GUI ありじゃめんどくさくてどうかね。

828 名前:デフォルトの名無しさん[sage]:04/06/30 23:02
>>825
やねうらおで検索してみろ

829 名前:デフォルトの名無しさん[sage]:04/07/01 09:08
>>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
本日の宿題: 時:分:秒を表示する時計

832 名前:デフォルトの名無しさん[sage]:04/07/01 22:24
a = -1 * ( k * x + c * v ) / m;

833 名前:830[sage]:04/07/01 22:39
都会の人はうそつきだorz

834 名前:デフォルトの名無しさん []:04/07/01 22:48
Javaは知らんのだが
double型は小数を扱えるのか?

835 名前:デフォルトの名無しさん[sage]:04/07/01 22:49
>>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()));
    }
  }
}

836 名前:835[sage]:04/07/01 22:58
> Date date = new Date();
これいらなかった。消しといて。

837 名前:835[sage]:04/07/01 23:05
あ、いるか。ごめん。すれ汚しスマソ。

838 名前:デフォルトの名無しさん[sage]:04/07/02 09:09
>>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
円周率を求めるプログラムがわからないです。
どなたか教えてください。

840 名前:デフォルトの名無しさん[sage]:04/07/02 17:49
>>839
>>640 以降

841 名前:初心者 []:04/07/02 17:54
7/21(最終授業日) 試験: 最終課題の提出者には順次メールで成績を通知する(〜7/16)。最終課題が提出できない者は試験(テキスト持込可)にて成績決定。通知した成績に不満の人は試験を受けられたい(成績は試験の結果のみにより評価、不合格もあり得る)。


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

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

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

これができないと、単位を落としてしまいます。お願いできませんか?

842 名前:デフォルトの名無しさん[sage]:04/07/02 18:03
>最終課題が提出できない者は試験(テキスト持込可)にて成績決定。
って書いてあるだろうが。観念して試験をうけろ。

>>1 も読め。
>ただGUIかんけーはめんどクセーから、放置するぞ!


843 名前:デフォルトの名無しさん[sage]:04/07/02 18:05
「このくらいちょちょいとできる奴には試験の必要ないな。デキル奴は楽しくやってくれ」
という意味の課題だろ。それを人にやってもらって提出なんて、分不相応もいいとこ。

844 名前:デフォルトの名無しさん[sage]:04/07/02 18:07
http://ortros.den.rcast.u-tokyo.ac.jp/~mitani/Java/java3d/index.html
これ読みながらやってみるとか。

845 名前:デフォルトの名無しさん[sage]:04/07/02 18:10
そこのサンプルいいよね。
知識に乏しかったから、陰影の奴かなりびびった。
でも説明読むとかなり簡単なことを知って、さらに驚いた。

846 名前:デフォルトの名無しさん[sage]:04/07/02 18:12
陰影じゃなくて「手書き風」だった。
センスなんだなぁやっぱり。

847 名前:デフォルトの名無しさん[sage]:04/07/02 18:21
簡易エディタ付で10万の案件だな
格安だろ

848 名前:初心者 []:04/07/02 18:25
>>842
すいません。授業も教科書もサッパリで、「作れ」って言われても何もできないんです。
一般教養の授業なんですが、必要な単位なんです。
ですので真剣に取り組んだのですが、本当にさっぱりなんです。
教科書に書いてあることをどう組み合わせるの?という感じです。

>>844
ありがとうございます。参考にさせていただきます。

849 名前:超初心者 []:04/07/02 18:45
658〜660までに書かれているプログラムをもう少し簡単に(初心者でも理解できそうな感じ)に書き直せないでしょうか?
わがまま言って申し訳ありませんが、どなたかよろしくお願いします。

850 名前:デフォルトの名無しさん[sage]:04/07/02 18:49
じゃぁ精度はどうでもいいわけ?
つか、何を使って解けとか、前提条件がないとしんどいと思うんだけど。
マクローリン展開自体は初心者かどうかなんて関係なくて、
数学の知識や理解力があるかによるものだし。

851 名前:デフォルトの名無しさん[sage]:04/07/02 19:02
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;
}


852 名前:デフォルトの名無しさん[sage]:04/07/02 19:03
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
{

//ここに埋める


856 名前:デフォルトの名無しさん[sage]:04/07/04 21:00
>>853 それ俺なら問題文にCalendarクラス使うなって制限つけるな。

857 名前:デフォルトの名無しさん[sage]:04/07/04 23:04
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;
}

858 名前:857[sage]: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);
}
}
}


859 名前:857[sage]:04/07/04 23:07
継承に関する問題です。
1)IntStack をスーパークラスとして,次のメソッドを追加したクラス
NthStack を定義せよ.

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



860 名前:857[sage]: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 番目の値


861 名前:857[sage]:04/07/04 23:10
2)Intstack2の実装方法を配列を用いたものに変更せよ.
それにともなって,NthStack2の定義を変更する必要があるだろうか?
変更する必要があるのならば,NthStack2の定義を変更せよ.

以上のを誰かお願いします。

862 名前:デフォルトの名無しさん[sage]:04/07/05 02:52
>>857
その問題の作者に、お前は馬鹿かといってやれ。


863 名前:デフォルトの名無しさん[sage]:04/07/05 12:38
確かに。
特に >>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); //ふつー例外だろ
}


864 名前:デフォルトの名無しさん[sage]:04/07/05 12:39
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];
}

865 名前:デフォルトの名無しさん[sage]:04/07/05 12:42
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 はもう、やることは同じ。

866 名前:デフォルトの名無しさん[sage]:04/07/05 12:53
あー問題読み間違ってるかな。ちょっとなしなし今のなし。ごめそ。

867 名前:デフォルトの名無しさん[sage]:04/07/05 13:08
こうだね。>>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 の実装方法変更の必要はなさそうだ。

868 名前:デフォルトの名無しさん[sage]:04/07/05 13:16
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 と同じ実装にした方がいいのではないか。
問題としてこういうのはどうだろう。

あんまり検証してない。まだ勘違いしてるかも。
へんなとことかエレガントな方法があったら、諸兄らにお願いしたい。

869 名前:857[sage]: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倍にしていくのが良いだろう.


870 名前:857[sage]: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] + "です");
}}}

872 名前:デフォルトの名無しさん[sage]:04/07/05 17:36
>>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;
}


874 名前:デフォルトの名無しさん[sage]:04/07/05 21:48
これでいいのかな〜

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;
}

875 名前:830[sage]:04/07/05 21:56
>>838
ほんとたすかりました。どうもありがd(*´ωV)
答えが合わないのはなんとかします。どもでした。

876 名前:873 []:04/07/05 22:05
>>874
ありがとうございます。
プログラムのほうきちんと動作しました。

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

877 名前:デフォルトの名無しさん[sage]:04/07/05 22:22
>>876
論理和

一つ以上trueならtrue、全てfalseならfalseを返す。

878 名前:873[sage]: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
ありがとうございます。
これをもっと簡単な文法へ書き直すことはできるのでしょうか…?

879 名前:デフォルトの名無しさん[sage]:04/07/05 22:48
>>878
boolean bFindL = find(nd.l,target);
boolean bFindR = find(nd.r,target);
return (bFindL | bFinfR | result);


880 名前:873[sage]:04/07/05 22:53
>>879
ありがとうございます。
参考にさせていただいて課題を進めていきます。

教えてくださった方、本当にありがとうございました。

881 名前:デフォルトの名無しさん[sage]:04/07/06 00:10
>>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]);
}
}

882 名前:881[sage]: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を使って
あいうえお
かきくけこ
さしすせそ
なにぬねの
といった具合に表示させるんですがどうしたらいいでしょうか??

885 名前:デフォルトの名無しさん[sage]:04/07/06 01:38
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);
}
}


886 名前:884[sage]:04/07/06 01:48
>>885さん
早い対応、ありがとうございます。
初心者なので考え方のきっかけがつかめなくて
困っていたのでとても助かります。
自分なりにソースの内容をしっかり理解したいと思います。
ありがとうございました。

887 名前:デフォルトの名無しさん[sage]:04/07/06 02:36
>>853
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=240


888 名前:デフォルトの名無しさん[sage]:04/07/06 08:25
>>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 という変数はなんじゃ?

889 名前:デフォルトの名無しさん[sage]:04/07/06 09:20
互いに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を含まないことによる誤差を無視してよいとする。


どうか、おねがいします・・・・・・・・・・
さっぱり分かりませぬ・・・・・・・・

891 名前:デフォルトの名無しさん[sage]:04/07/06 09:49
>>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個の整数を入力し、それらの公約数を表示させるプログラムお願いします。


894 名前:1/3だわさ[sage]: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;
}

895 名前:2/3だわさ[sage]: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を入力してください。");
}
}

896 名前:3/3だわさ[sage]: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;
}
}

897 名前:デフォルトの名無しさん[sage]:04/07/06 11:42
>>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;
}
}

898 名前:デフォルトの名無しさん[sage]:04/07/06 13:05
つい最大公約数書いてしまったけど、
もしかしてこっち?

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);
}
}
}


899 名前:デフォルトの名無しさん[sage]:04/07/06 13:39
>>889
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=241
ゲームの設定を変えるためにはコンパイルが必要なのは問題かもしれないけど、
可能な拡張が全て入ってます。

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

別の課題?
これでゲームをするともてあそばれているのが分かるよw。

900 名前:899[sage]: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 と その派生クラスでは例外の処理が
要求される。
なぜ、一方では処理が不必要とされ一方では要求されるのか。

お願いします。


902 名前:デフォルトの名無しさん[sage]:04/07/06 16:41
ここを読むと。
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
どうもありがと。
自分も読んでみます。


904 名前:デフォルトの名無しさん[sage]:04/07/07 08:10
これお願いします。

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ブローです。


905 名前:デフォルトの名無しさん[sage]:04/07/07 08:12
あいうえおさんの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ブローです。

906 名前:デフォルトの名無しさん[sage]:04/07/07 08:16
あいうえおさんの7回目:4ケタの数値を入力してください。

4065

2ヒット2ブローです。

あいうえおさんの8回目:4ケタの数値を入力してください。

4056

0ヒット4ブローです。

あいうえおさんの9回目:4ケタの数値を入力してください。

0465

正解です!あいうえおさんの記録は9回です!

かきくけこさんの1回目:4ケタの数値を入力してください。


正解です!かきくけこさんの記録は8回です!

あいうえおさん:9回

かきくけこさん:8回

従って、この勝負はかきくけこさんの勝利です。

かきくけこさん、おめでとうございます!

907 名前:デフォルトの名無しさん[sage]:04/07/07 08:37
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();
}


908 名前:デフォルトの名無しさん[sage]:04/07/07 08:37
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] + "さん、おめでとうございます!");

}


909 名前:デフォルトの名無しさん[sage]:04/07/07 08:37
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);


910 名前:デフォルトの名無しさん[sage]:04/07/07 08:38
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点のでき。

911 名前:デフォルトの名無しさん[sage]:04/07/07 08:48
あらら先越されちゃいましたか。
おつかれさまです。

でも自分がやりたかったことは、
おまけで対 CPU の試行ルーチンをつくって、
どのくらい強くなるかを試したかったので、
私もこのソースを借用させていただきます。


912 名前:デフォルトの名無しさん[sage]:04/07/07 09:01
>>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 );
}
}


917 名前:デフォルトの名無しさん[sage]:04/07/07 11:33
>>916
実行すりゃすぐわかる。
どうしてここで聞くのかがわからん。

918 名前:911[sage]: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ボタンを押すと回答が表示されるようにしたいのですが。



922 名前:デフォルトの名無しさん[sage]:04/07/07 17:30
>>921

ttp://black.sakura.ne.jp/~third/system/java/Gjava20.html
とりあえず、ここらへんが参考になると思う
これに書き足して作ってみては。

923 名前:デフォルトの名無しさん[sage]:04/07/07 20:38
>914
実はもう一個誤りがあったり。。。
3. getInstanceで同期とってないのでタイミングによっては複数インスタンスが作れる

924 名前:デフォルトの名無しさん []:04/07/07 22:20
>>922
どうも921です。でもなんかそのサイトにアクセスできない...。
時間もあまりないので誰か教えて下さい。
お願いします。

925 名前:デフォルトの名無しさん[sage]:04/07/07 22:46
イメージアイコン使うのが一番楽

926 名前:921 []:04/07/07 23:01
イメージアイコンですか。使ってますけど、上手くできないんですよね。
できたら上の部分のプログラムだけでも実際に書いて貰えるとかなり
助かります。ほんと申し訳ないです。

927 名前:初心者 []:04/07/08 01:48
http://www.h5.dion.ne.jp/~nnempire/gate/Gate.html
において、ソースをコンパイルするとエラーが出るのですが、解決の方法をどなたか教えていただけないでしょうか?

928 名前:デフォルトの名無しさん[sage]:04/07/08 01:49
>>927
どんなエラーかくらい書けや

929 名前:初心者 []:04/07/08 01:53
2つあって、両方とも「シンボルを解決できない」と出ます。
8行目と223行目で、
クラス:ViewPort
場所:Gateのクラス
で、両方ともViewPortの「V」のところにチェックが付いています。


930 名前:初心者 []:04/07/08 01:55

誤)クラス:ViewPort
正)シンボル:クラス ViewPort
です。助けて下さい・・・


931 名前:デフォルトの名無しさん[sage]:04/07/08 07:14
ViewPortが無いよ
動かすだけでよいのならViewPort.classをもらってくれば?

932 名前:デフォルトの名無しさん[sage]:04/07/08 07:14
>>930
シンボルを解決してみ

933 名前:デフォルトの名無しさん []:04/07/08 09:48
>>923
同期をとるとはなんでしょうか?

934 名前:デフォルトの名無しさん []:04/07/08 09:52
>>933
メソッドにsynchronizedを付けるがいい

935 名前:デフォルトの名無しさん[sage]:04/07/08 14:30
>>926
今君の書いてるプログラムにあわせたものでないと
何の参考にもならんと思う

936 名前:プログラミング大好き []:04/07/08 16:24
コマンドラインで指定した回数だけ、2つの乱数の組x、yを発生させ、その乱数を元に
円周率πを求めるプログラムPaiPai.javaを作成せよ。

ってヤツだけどさ、(x,y)の点を表示させて、その点が、円の範囲内に入ればいいんじゃないの??
学校の課題かな?
ちょっと、プログラム組んでみようか??

937 名前:デフォルトの名無しさん[sage]:04/07/08 16:39
どうぞご自由に

938 名前:親切大好き[sage]: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次元の(長方形を用いた平面の)補間の
プログラムはどうしたらよいのでしょう?

941 名前:デフォルトの名無しさん[sage]:04/07/08 19:58
>>939
int i = 0, sum = 0;
while (i < 8) {
 sum += //読み込む、とは? 何から読み込むの?
 i++;
}
System.out.println("合計:" + sum);

942 名前:939 []:04/07/08 20:38
8つダーっと数字を入力したら合計が出るようにするプログラムです

例えば








5(と入力したら)
合計は31です

ってなるような感じで

943 名前:デフォルトの名無しさん[sage]:04/07/08 20:42
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 名前:デフォルトの名無しさん[sage]:04/07/08 21:34
ここってよーするに、
宿題やってもらうスレ?

宿題やってくださいじゃ相手にされないから
こういうスレタイにしてんの?

946 名前:デフォルトの名無しさん[sage]:04/07/08 21:42
>>945
答えてるのは全部>>1さんですよ

947 名前:デフォルトの名無しさん[sage]:04/07/08 21:53
でも>>1は俺だよ?

948 名前:デフォルトの名無しさん[sage]:04/07/08 22:44
そろそろ新スレ?

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) ;
}
}



おしえてー

950 名前:デフォルトの名無しさん[sage]:04/07/09 20:43
順に
0
i--
*=


951 名前:デフォルトの名無しさん []:04/07/09 20:54
あーなるほどー
*= ってのがあったんですかー
ありがとうございましたー

952 名前:デフォルトの名無しさん []:04/07/09 21:58
Delphi使ったPascalの宿題があるのですが

やってもらってもええですか?

Javaじゃないとだめっすかね・・・

953 名前:デフォルトの名無しさん[sage]:04/07/09 22:53
「学校の宿題は俺にやらせてください for Pascal」スレがあるだろ

954 名前:デフォルトの名無しさん []:04/07/09 23:14
>>953
なかったですが・・・

955 名前:デフォルトの名無しさん[sage]:04/07/09 23:23
なければ自分で立てるんだ。人に頼るな!

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


958 名前:デフォルトの名無しさん[sage]:04/07/10 01:56
>>956

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

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

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


959 名前:デフォルトの名無しさん[sage]:04/07/10 06:57
Reference クラスをスーパークラスとして WebPage クラスを定義し,
それを含めたテストプログラム(多様性テストプログラム のようなもの)を作成せよ.
なお,WebPage クラスにどのような情報を含めるべきかは,各自適切なものを考えよ.
// 多相性テストプログラム
class Test {
public static void main(String[] args) {
Reference[] refs = {
new Book("Thompson", "Haskell", 1999, "Addison"),
new Article("Pachet", "Content Management",
2003, "CACM", 4),
new Book("Ritchey", "Java!", 1995, "New Riders")
};

for (int i = 0; i < refs.length; ++i) {
refs[i].print();
}
}
}


960 名前:デフォルトの名無しさん[sage]:04/07/10 06:58
class Reference {
private String author; // 著者名
private String title; // 文献タイトル
private int year; // 発行年

// コンストラクタ
public Reference(String author, String title, int year) {
this.author = author;
this.title = title;
this.year = year;
}

// アクセスメソッド
public String getAuthor() { return author; }
public String getTitle() { return title; }
public int getYear() { return year; }

// 表示メソッド
public void print() {
// 「\"」は,文字列リテラル中で二重引用符を表す.
System.out.println(getAuthor() + ":\"" + getTitle()
+ "\", " + getYear());
}

// テスト用メインメソッド
public static void main(String[] args) {
Reference ref = new Reference("Thompson", "Haskell", 1999);
ref.print();
}
}


961 名前:デフォルトの名無しさん[sage]:04/07/10 07:03
すいません>>959の問題文訂正です
「最近では,参考文献としてwebページを挙げることも増えてきた.
Reference クラスをスーパークラスとして〜」でした。
お願いします。

962 名前:デフォルトの名無しさん[sage]:04/07/10 07:27
>961 一部めんどくさいので略している。あと、テストプログラムは自分で作れ。

import java.net.*;

public class WebPage extends Reference {
private final URL url;

static private Object getPage( URL url ) {
try{ return url.getContent( ); }
catch( Exception ex ){ return null; }
}
static private String getAuthor( URL url ) {
Object o = getPage( url );
// 略。とってきたページから著者を抽出
}
static private String getTitle( URL url ) {
Object o = getPage( url );
// 略。とってきたページから題名を抽出
}
static private String getYear( URL url ) {
Object o = getPage( url );
// 略。とってきたページから作成年を抽出
}
protected URL getURL() { return url; }
public WebPage( URL url ) {
super( getAuthor(url), getTitle(url), getYear(url) );
this.url = url;
}
public void print( ) { System.out.println(getAuthor() + ":\"" + getTitle() + "\", " + getURL( ) + ", " + getYear()); }
}

963 名前:デフォルトの名無しさん[sage]:04/07/10 07:40
抽出のヒント。
・題名は(X)HTMLならtitle要素から取り出せる
・著者/作成年は(X)HTMLならまずmeta要素をチェック
・見つからなければcopyright表記を探してみるべし
・URLで指定されたページが(X)HTMLであるとは限らない点に注意しよう

964 名前:デフォルトの名無しさん []:04/07/10 08:22
>>958
ありがとうございます!

ちなみに情報系です
しかもこれ課題です
ぶっちゃけプログラミング歴3ヶ月の自分にはついていけません・・・

965 名前:デフォルトの名無しさん[sage]:04/07/10 10:10
以下のような問題をプログラム化してください。voterRule.java

20人の投票者が独立に、両端の人の意見(0 or 1)を聞いて多数に従う。
2人の意見が分かれているときには自分の意見は変えない。
これを5回繰り返す。ただし端は周期的とする。
たとえば最初に
1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0

だとする。一回ごとのこれらの数値の変化を表示せよ。



966 名前:デフォルトの名無しさん[sage]:04/07/10 10:11


すいません。お願いします <(_ _)>

967 名前:デフォルトの名無しさん[sage]:04/07/10 14:29
public class Q965 {

public static void main(String[] args) {
int[] init = {
1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0
};

print("最初", init);

int[] state = init;
for (int i=0; i<5; i++) {
int[] next = change(state);
print((i + 1) + "回目", next);
state = next;
}
}

private static void print(String name, int[] state) {
System.out.println(name + ":");
for (int i=0; i<state.length; i++) {
System.out.print(state[i]);
if (i + 1 < state.length) {
System.out.print(", ");
}
}
System.out.println();
}

968 名前:デフォルトの名無しさん[sage]:04/07/10 14:31
private static int[] change(int[] state) {
int[] next = new int[state.length];
for (int i=0; i<state.length; i++) {
int j = (i - 1 + state.length)%state.length;
int k = (i + 1)%state.length;

if (state[j] == state[k]) {
next[i] = state[j];
} else {
next[i] = state[i];
}
}
return next;
}
}
次状態を表す配列に、現状態から判断して値を書き込むとこさえうまくやればできる
% なんとかというのは、割り算の余りの処理。環状になってるところを処理するためにやってる
こんなことせずに両端だけ特別な計算をしてもいい

969 名前:デフォルトの名無しさん[sage]:04/07/10 15:26
ライフゲームの一次元版だな。

970 名前:965[sage]:04/07/10 17:14
>>967,968
ありがとうございます。助かりますた(´∀`)

971 名前:デフォルトの名無しさん[sage]:04/07/10 19:00
961のテストプログラムもお願いします。できれば略してあるとこのヒントも
もう少し・・・。

972 名前:デフォルトの名無しさん[sage]:04/07/10 22:36
出題者がどの程度のレベルを求めているかによるが、
何にしてもこのスレで聞くには少々ヘビィだな


973 名前:デフォルトの名無しさん[sage]:04/07/10 22:40
あるいはいちいち抽出せんでも、
Bookみたいに、
同じ引き数取って super コンストラクタ呼んでもいいのかもしれない

974 名前:デフォルトの名無しさん []:04/07/11 00:23
以下のプログラムを作ってください、お願いします!

キーボードから、年(西暦)と月を整数で入力すると、その月のカレンダーを表示するプログラムを作成せよ。

 閏年は、

西暦の年号が4で割り切れる年は閏年とする
4で割り切れる年でも、100で割り切れる年は平年とする
100で割り切れる年でも、400で割り切れる年は閏年とする
西暦1年の1月は月曜日から始まる。



975 名前:THE 初心者 []:04/07/11 00:26
プログラミングの初心者です。
最終的にはPS2みたいなゲームを作れるようになりたい!と思ってプログラミングの勉強を始めたのですが、まったく何をやったらいいのかわかりません。
プログラミングにはいろんな言語があるってわかったんですが、どの言語から勉強するべきでしょうか?

976 名前:デフォルトの名無しさん[sage]:04/07/11 00:41
>>975
日本語

977 名前:デフォルトの名無しさん[sage マジレスですよw]:04/07/11 00:45
>975
どの言語から勉強するべきかを勉強しる。

978 名前:デフォルトの名無しさん[sage]:04/07/11 01:37
>>974
>>853,887
853 とは同じ授業かな?
全過去ログとは言わないけど、
現在のスレッドくらい読んだ方がいいよ。


979 名前:961[sage]:04/07/11 03:34
出題者はそこまで高いレベルまでは求めてないと思うんですが、
できれば抽出を使ってプログラムを書いてみたいです。
titleだけでも抽出の仕方を教えていただけないでしょうか?
参考とするwebは(X)HTMLであるという設定でお願いします。

980 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 09:33
import java.io.*;
import java.net.*;
import java.util.regex.*;

public class GetTitleTest {
public static void main(String[] args) {
try {
System.out.println(getTitle(new URL("http://pc5.2ch.net/test/read.cgi/tech/1076054000/l50")));
} catch (MalformedURLException ex) {
}
}

static private Object getPage( URL url ) {
try { return url.getContent( ); }
catch( Exception ex ){ return null; }
}


981 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 09:35
static private String getTitle( URL url ) {
Object o = getPage(url);
if (o instanceof InputStream) {
try {
//byte 列から Unicode 文字列を生成
BufferedReader br = new BufferedReader(new InputStreamReader((InputStream)o));
StringBuffer buf = new StringBuffer();
while (true) {
String line = br.readLine();
if (line == null) break;
buf.append(line);
buf.append("\n");
}
String html = buf.toString();
// ましな方法
Pattern p = Pattern.compile("<(Title|TITLE|title)>([^<]+)</(Title|TITLE|title)>");
Matcher m = p.matcher(html);
m.find();
return m.group(2);
// 初歩的な方法
//String totag = html.toLowerCase();
//int titleindex = totag.indexOf("<title>") + 7;
//int titleendindex = totag.indexOf("</title>");
//return html.substring(titleindex, titleendindex);
} catch (IOException ex) {
return "取得失敗";
}
} else {
return "不明";
}
}
}

982 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 09:38
「ましな方法」は正規表現を使っている。
どんな言語の利用者でも、この方法を知っておくとかなり役に立つ。
これについて勉強してるのとしてないのとでは雲泥の差。
俺は普段あまり使う機会がないので、ちとお粗末な判定になってるかもしれん。

「初歩的な方法」は、indexOf メソッドを知っていれば誰でも思いつく。
toLowerCase を使って totag なる文字列を作っている(アルファベット部分が全部小文字になる)のは、
タグの場所の判定を一回で終えるためで、効率はすこぶる悪い。

983 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 09:44
<pre>タグも関係ないし、各行 trim して buf.append("\n"); なしでもいいかな・・・
あるいは return 直前で trim するか。などなど、html の解釈はいろいろめんどくさい。
XHTML ならタグ閉じもしっかりしている(はず)ので、諸々の不安なくそれぞれの判定をかけられるし、
他のもっと高級な方法(xml 関連のクラス群)も使える。ちうかその方がいい。
卒研レベルなら当然のように要求されるが、そこまではいかないのであろう。

984 名前:961[sage]:04/07/11 12:56
980~983、ありがとうございます、かなり難しいですね・・・。
自分なりに消化してみたいと思います。

985 名前:名無しさん@そうだ選挙に行こう []:04/07/11 13:21
Jframeをリアルタイムに作ったり消したりってどうやるの?

986 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 14:20
>>985 こういうこと?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FrameTest extends JFrame implements ActionListener{
  public static void main(String[] args){new FrameTest();}
  FrameTest(){
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    JButton btn = new JButton("Frame");
    btn.addActionListener(this);
    Container container = getContentPane();
    container.setLayout(new FlowLayout());
    container.add(btn);
    pack();
    setVisible(true);
  }
  JFrame subFrame = null;
  public void actionPerformed(ActionEvent e){
    if(subFrame == null){
      subFrame = new JFrame();
      subFrame.setBounds(300,0,300,300);
      subFrame.setVisible(true);
    }
    else{
      subFrame.setVisible(false);
      subFrame = null;
    }
  }
}

987 名前:ダメ学生 []:04/07/11 14:39
学校の課題たまっちゃったのですが
やっていただける方いませんか?
お礼します
詳しくはメールorメッセで
akitaka824@hotmail.com

988 名前:きむ []:04/07/11 14:39
2重振り子のシミュレートをルンゲ・クッタ法を用いて作成せよ

989 名前:名無しさん@そうだ選挙に行こう []:04/07/11 14:50
ある表示ボタンを押したらパネルが1つ開いて、もう一度押したらもう一個増える感じです(閉じるボタンでそれぞれ別個閉じられる)。

990 名前:985 []:04/07/11 14:55
豆でSwingで作ってるんですけど、その他コンポーネントはフォームエディタで作ってるんですが、
JFrameの動的生成が分かりません。そしてGraphicsの新規作成されたJFrameへの割り振り方法も・・いろいろ探したんですけどorz

991 名前:985 []:04/07/11 14:57
>>989は私です。
ちなみに989のパネル=JFrameのことです。分かりにくくて申し訳ないです。

992 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 15:08
public void actionPerformed(ActionEvent ev) {
 JFrame f = new JFrame();
 f.getContextPane().add(ほげほげ);
 f.setVisible(true);
}
インスタンス作って visible にするだけ。
豆=NetBeans? 俺はろくに使ったこと無いがね。
便利なものを使うのもいいけど、基本抑えとかないとずっとワケワカランままだよ。

>そしてGraphicsの新規作成されたJFrameへの割り振り方法
これも意味分からん。"豆" 使ってたら分かるのか? それにしても誤解してるんだろうな。
「Graphics を割り振る」のは VM の仕事だし。
Graphics はフツー JComponent とかの paintComponent あたりをオーバーライドして使うべきだし。

993 名前:985 []:04/07/11 15:10
新しく作ったJFrameに描画するにはどうすれば?
今までは最初から作ってあるJFrame内の描画パネルにpaintComponentを使ってましたが・・

994 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 15:18
>>993
新しく作ったJFrame内に配置した "描画パネル" の paintComponent で描画されるだけでしょ。

ちと乱暴だがこういうことだ。
void hoge() {
 JFrame f = new JFrame();
 f.getContentPane().add(new MyPanel("うし"));
 f.setVisible(true);
 JFrame f = new JFrame();
 f.getContentPane().add(new MyPanel("うま"));
 f.setVisible(true);
}

class MyPanel extends JComponent { //なんのことはない、JLabel みたいなもんだが
 private String name;
 public MyPanel(String name) {
  this.name = name;
 }
 public void paintComponent(Graphics g) {
  g.drawString(name, 100, 100);
 }
}

一回、手で書いてるサンプルコード読んで勉強してみたら?

995 名前:985 []:04/07/11 15:26
それくらい分かってましたよ∩(^д^)∩バンジャーイ

996 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 15:34
タイトルミスったけど別にいいよな。選挙だし。
http://pc5.2ch.net/test/read.cgi/tech/1089527630/

997 名前:名無しさん@そうだ選挙に行こう []:04/07/11 16:22
なんか新スレ?ぼろじょあだらけなんでこっちにカキコ
1000寸前ですが、スレたてていいのか分からなかったので。

パズルつくりたいんですけどどうやっていいのかさっぱり判りません。
ピースがくっついてて、ずらして絵を合わせるやつです。
提出期限あと三日…タスケテクダサイorz


998 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 16:26
>ただGUIかんけーはめんどクセーから、放置するぞ!
諦めれ

999 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 17:11
>>1000は童貞

1000 名前:名無しさん@そうだ選挙に行こう[sage]:04/07/11 17:12
馬鹿言うな 一回だけしたことあるわ ヴォケ

1001 名前:1001 []:Over 1000 Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。

360 KB
全部 最新50
DAT2HTML 0.33dp Converted.
inserted by FC2 system