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


★★ Java の宿題ここで答えます part51 ★★
1 名前:Java []:2005/03/30(水) 12:49:00
【Java宿題スレッド基本ルール 五箇条の御誓文】

1. 投稿の前に自助努力しましょう。少なくとも回答をコンパイル・実行
 できる程度にはJava に習熟しておきましょう。

2. また、キーワード検索を行なうなどして、少なくとも問題文の意味を
 理解したうえで投稿しましょう。それが無理なら、問題文は自己省略せずに、
 直接全部貼り付けてください。最悪の場合、宿題&課題をそのまま丸投げ
 するのが一番好ましい提示法です。

3. 数学問題は「○×法でせよ」だけでなく、その解を出す為の数式や
 前提条件などを具体的かつ詳細に説明してください。

4. もし自分の提示課題への回答プログラムが返って来たら、
 動いた動かなかった位の報告をお願いします。

5. 宿題&課題とその回答プログラムに対する質問はOK ですが、
 一般的な質問は質問スレで行なってください。また、多言語の課題は
 原則としてスルーされますので、ご了承願います。

【回答プログラムの掲載場所】
Java質問スレWiki  http://www.wikiroom.com/java/
ソースポストネット http://sourcepost.sytes.net/

【前スレ】
【初心者】Java の宿題ここで答えます 5.0【歓迎】
http://pc8.2ch.net/test/read.cgi/tech/1107350368/l50

2 名前:デフォルトの名無しさん[sage]:2005/03/30(水) 12:59:30
>>1

3 名前:デフォルトの名無しさん[sage]:2005/03/31(木) 06:38:19
ファイルを読み込んで、キーボード入力から得た文字列を検索し、
見つかった行番号と、その一行を表示するというプログラムを完成させよ。

1.「ファイルの絶対パスを入力して下さい」というメッセージを表示する。
2.絶対パスは、存在していることを前提とすること。
3.「検索する文字列を入力してください」というメッセージを表示する。
4.絶対パスからファイルの内容を読み込む。
5.3で得られた文字列が一致する行を行番号と連結させVectorに格納。
6.そのVectorを画面に出力する。

メインクラスをMainOPfile,ファイル操作クラスをOperateIOクラスとすること。

ファイル内検索メソッド
引数:ファイルの絶対パス(String)、検索する文字列(String)
戻り値:Vector

よろしくお願いします。

4 名前:デフォルトの名無しさん[sage]:2005/03/31(木) 09:22:53
>>1

>>3 MainOPfile クラス

import java.io.*;
import java.util.*;

public class MainOPfile {
private static final String strAsk1 = "ファイルの絶対パスを入力して下さい。";
private static final String strAsk2 = "検索する文字列を入力してください。";

public static void main(String[] args) {
try {
OperateIO oprIO = new OperateIO();
String strLine, path, seek;
Vector vector;

System.out.println(strAsk1);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
path = br.readLine();
System.out.println(strAsk2);
seek = br.readLine();
vector = oprIO.seekLine(path, seek);
for (int i = 0; i < vector.size(); i++) {
System.out.println(vector.get(i));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

5 名前:デフォルトの名無しさん[sage]:2005/03/31(木) 09:23:17
OperateIO クラス

class OperateIO {

public Vector seekLine(String path, String seek) {
Vector vector = new Vector();
int intLine = 1;
int point;
String strLine;
FileReader fr;
try {
fr = new FileReader(path);
BufferedReader br = new BufferedReader(fr);
for ( ;(strLine = br.readLine()) != null; intLine++) {
point = strLine.indexOf(seek);
if(point >= 0)
vector.add(new String(intLine + ": " + strLine));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

return vector;
}
}

6 名前:仕様書無しさん[sage]:2005/03/31(木) 11:59:31
>>3
引数として 正規表現1 正規表現2 を与えておいて、
「実行したディレクトリの以下にあるすべてのファイルのうち、
ファイル名が1にマッチしたもののすべての中から、
2にマッチした行をファイル名とともに(標準出力に)出力する
(たとえば"java ff .*\.java .*System\..*"とかすると、
「*.java」の形のファイルから「System.」という文字列を含む行を
全部抽出する)」とかいったツールがあるのだが、なんなら晒そうか?


7 名前:デフォルトの名無しさん[sage]:2005/03/31(木) 17:53:49
>>4-5
無事動きました。ありがとうございました。

>>6
現在は必要なさそうです。
また機会がありましたらよろしくお願いします。

8 名前:M.B. []:2005/03/31(木) 21:15:03
保守あげ。

9 名前:デフォルトの名無しさん []:2005/03/31(木) 21:49:27
902 :901続き :2005/03/24(木) 10:45:30
上に追加した要素のほかに、
ArrayList, LinkedList, Vector, Stack, または Queue
を使って新要素を追加しなさい。

例えば、Queueを使ってパックマンの敵のようにステージのどこかで待機していて
ある一定時間たつと一匹ずつステージに出てきてパックマンを追い回すやつを作るとか。

上の例は本当にその通りじゃなくてもいいらしいです。
他の面白そうなものを自分で考えてもいいそうです。

903 :902続き :2005/03/24(木) 10:46:20
前回例で出た、パックマンの敵(Robot eater)を今回は必ず追加しなさい。
ハッシュテーブルを追加し、ロボット、robot eater、その他の動きのある
ものをハッシュテーブルにストアしなさい。
ハッシュテーブルにストアする物のタイプはIDを必要とします。
ハッシュテーブルに追加する際、物とIDが必要となります。
ハッシュテーブルから削除する際、IDを必要とします。
ハッシュテーブルから物を探すとき、IDを使って探します。
ハッシュテーブルは75%以上に物を含んではいけません。
もし、いっぱいになった場合、ハッシュテーブルは拡張されます。

以下は先生がくれた案です。
上の要求を満たして下の例と同じものを作れとのことです。
各robot eaterと彼の現在の位置を格納するrobot eaterに関するハッシュ表を使用することです。
ユーザが「キー」を拾ったら、robot eaterを攻撃して消すすことができます。
robot eaterはステージ上を移動できます。
様々なポイントでゲームでrobot eaterを加えることができます。

以上です。長くなって申し訳ないのですが、お願いいたします。
皆様、いつもありがとうございます。


10 名前:デフォルトの名無しさん []:2005/04/01(金) 00:14:35
指定したファイルの行数、文字数をカウントするプログラムを作成せよ。
第一引数にファイルを指定する。
です。よろしくお願いします。

11 名前:デフォルトの名無しさん[sage]:皇紀2665/04/01(金) 00:51:16
改行文字を、文字数としてカウントしないなら。
import java.io.*;
public class Count {
  static class Result {int lineCount; int charCount; }
  public static void main(String[] args) {
    if (args.length < 1) throw new IllegalArgumentException("ファイル名が指定されていません");
    File file = new File(args[0]);
    if (!file.exists() || file.isDirectory())
      throw new IllegalArgumentException("指定されたファイルは存在しないか、ディレクトリです。 ファイル名:" + file.getAbsolutePath());
    Result result = null; try { result = count(file);
    } catch (IOException e) {
      throw new RuntimeException("ファイルの読み取り中に例外が発生しました。発生した例外:", e);
    } System.out.println(result.lineCount + "行 " +result.charCount + "文字");
  }
  static Result count(File file) throws IOException {
    BufferedReader br = new BufferedReader(new FileReader(file));
    int lineCount = 0; int charCount = 0; String str;
    while ((str = br.readLine()) != null) { lineCount++; charCount += str.length(); }
    Result result = new Result(); result.lineCount = lineCount; result.charCount = charCount;
    return result;
  }
}

12 名前:デフォルトの名無しさん []:皇紀2665/04/01(金) 11:10:41
Javaの宿題で困っています。英文で恐縮なのですが…

ttp://www.geocities.jp/de991a/

本当に丸投げですいません。宜しくお願いします。

13 名前:デフォルトの名無しさん[sage]:皇紀2665/04/01(金) 13:19:52
>>12
英語苦手なんでチト時間掛かる
とりあえずStep1ができたところだ

14 名前:デフォルトの名無しさん[sage]:皇紀2665/04/01(金) 14:49:57
>>12
Step2終了
で、Step3なんだけど、generateStringってメソッドを
「書き直せ(rewrite)」って書いてあるんだけど
どっかに元ソースがあんのか?
つかそうじゃないと出来ない気が....って漏れの英語力がないだけ???

15 名前:デフォルトの名無しさん []:皇紀2665/04/01(金) 15:09:07
すいませんっ。

generateStringメソッドをStep3に追加しました。
本当に助かります。ありがとうございます。

16 名前:デフォルトの名無しさん[sage]:皇紀2665/04/01(金) 15:18:31
>>15
おk
もうちっと待ってね
ちなみに聞いておくけど、期限は?

17 名前:デフォルトの名無しさん []:皇紀2665/04/01(金) 15:41:17
期限は来週の月曜までなんですが、
恥ずかしながらVectorやHashMapをちゃんと理解してないので、
この宿題を参考にしてちゃんと理解したいと思います。

自分の為に時間を割いていただいて本当に感謝です。

18 名前:デフォルトの名無しさん[sage]:皇紀2665/04/01(金) 16:04:12
>>17
出来たよん、次レス以降に分割で貼り付けます

この問題、コレクション関連を勉強するにはなかないい問題だから
頑張って勉強してねん

でも、漏れのへぼコードが役に立つだろうか...
一応動いたので勘弁してください

19 名前:その1[sage]:皇紀2665/04/01(金) 16:05:06
>>12
import java.util.*;
import java.io.*;
class Generate {
 private static Map rules;

 // main (same as question)
 public static void main(String[] args){
  try {
   String fileName = "grammar.txt";
   if (args.length > 0) fileName = args[0];
   FileReader filr = new FileReader(fileName);
   BufferedReader bread = new BufferedReader(filr);
   Generate world = new Generate(bread);
  } catch (Exception e) { System.err.println("caught exception " + e); }
}

 // Step1
 public static LinkedList split(String line){
  StringTokenizer st = new StringTokenizer(line, " ");
  LinkedList list = new LinkedList();
  while(st.hasMoreTokens()){
   list.add(st.nextToken());
  }
  return list;
 }

20 名前:その2[sage]:皇紀2665/04/01(金) 16:05:45
>>12
 // Step2
 public Map readGrammar (BufferedReader f){
  HashMap grammarMap = new HashMap();

  try {
   String line;
   while((line = f.readLine()) != null){
    LinkedList words = split(line);
    if(words.isEmpty()) continue;
    String category = (String)words.removeFirst();
    if(grammarMap.containsKey((Object)category)){ // category exist
     Vector element = (Vector) grammarMap.get((Object)category);
     element.add(words);
    }
    else{ // category not exist
     Vector element = new Vector();
     element.add(words);
     grammarMap.put((Object)category, (Object)element);
    }
   }
  }catch(Exception e){
   System.err.println("caught exception " + e);
  }
  return grammarMap;
 }

21 名前:その3[sage]:皇紀2665/04/01(金) 16:06:49
>>12
 // Step3
 public static String generateString (String start) {
  if (rules.containsKey(start)) {
   Vector v = (Vector) rules.get(start);
   int i = (int) (v.size() * Math.random());

   // LinkedList rule = (LinkedList) v.elementAt(i);
   LinkedList rule = (LinkedList) v.get(i);

   String result = "";

   // Enumeration e = rule.elements();
   // while (e.hasMoreElements())
   // result = result + generateString(
   // (String) e.nextElement());
   // return result;
   Iterator ite = rule.iterator();
   while(ite.hasNext()){
    result = result + generateString((String) ite.next());
   }
   return result;
  }
  return start + " "; // add padding at end
 }

22 名前:その4(ラスト)[sage]:皇紀2665/04/01(金) 16:07:25
>>12
 // Step4
 public Generate(BufferedReader bread){
  rules = readGrammar(bread);
  for(int i = 0 ; i < 10 ; i++){
   System.out.println(generateString("SENTENCE"));
  }
 }
}

23 名前:デフォルトの名無しさん []:皇紀2665/04/01(金) 16:30:50
コードありがとうございます!動作も確認できました。
これを参考にさせていただいて、もっと勉強していこうと思います。

>>13さん、本当にありがとうございました。

24 名前:13[sage]:皇紀2665/04/01(金) 17:22:58
 _∧∧__   / ̄ ̄ ̄ ̄
 |( ゚д゚)| <  今日は英語を読んで疲れたからもう寝る!
 |\⌒~\  \____
 \ |⌒⌒|


25 名前:デフォルトの名無しさん[sage]:皇紀2665/04/01(金) 18:21:28


26 名前:M.B.[sage]:int 2ch =05/04/01(金) 20:12:38
>>18
> でも、漏れのへぼコードが役に立つだろうか……
> 一応動いたので勘弁してください
ちょっとヘボいほうが、思考過程が如実に現れているので
勉強になる。
プロだとパクってそれっきり、とかいうケースが多いので、
そのままパクれないほどめっきりヘボいか、ライブラリとして
そのまんま利用可能なほどクリアーなほうが望ましいかも
しれないが。

27 名前:イリュミナートX軍帥・伯魔壬旭 []:int 2ch =05/04/01(金) 22:19:15
前スレ>>903
現スレ>>9
今忙しくて・・・。
2〜3日の間に回答を載せるかもしれないので(未確定)
いましばらくお待ちください。

ちなみに団体名とその尊称が変わりました。

28 名前:デフォルトの名無しさん[sage]:int 2ch =05/04/01(金) 22:45:23
質問なんですが、>>1の「多言語」とは何ですか?


29 名前:デフォルトの名無しさん[sage]:int 2ch =05/04/01(金) 22:51:51
>>27
エイプリルフールだけあって神が戻ってきた!

30 名前:デフォルトの名無しさん[sage]:int 2ch =05/04/01(金) 22:52:49
もうミスしてばっかり。

31 名前:デフォルトの名無しさん[sage]:int 2ch =05/04/01(金) 23:49:42
前スレ>>982-
埋め立て乙。読み流してたら、多重ループを抜け出せなかった頃の思い出がよみがえってきた。
ほろ苦い記憶を抱えて寝ます。佳い夢を。

32 名前:デフォルトの名無しさん []:int 2ch =05/04/02(土) 03:17:44
このスレまだロボット馬鹿が粘着してるの?

33 名前:デフォルトの名無しさん[sage]:2005/04/03(日) 06:52:22
>>32
おまえはもう粘着しなくていいよ。

34 名前:デフォルトの名無しさん[sage]:2005/04/03(日) 16:26:51
前スレ
141 :>>137 その1:05/02/12 01:24:20
のマインスイーパ、バグがあったよ。

static ChoiceFormat cfOpen = new ChoiceFormat(
"0# |1#1|2#2|3#3|4#4|5#5|6#6|7#7|8#8|9#9|10#爆"
);
「5#6」になってた。5つで囲まれてるのに表示が6だった。
もしかしてここの人たちをためす意味でわざとバグって
たりして・・・

35 名前:デフォルトの名無しさん []:2005/04/03(日) 21:57:49
香具師の前スレからの叩かれっぷりにワラタ

36 名前:デフォルトの名無しさん []:2005/04/05(火) 00:25:04
11さん>ありがとうございます。
追加で文字列の長さ+ファイルの行数+絶対パスを表示するプログラムを教えてください。


37 名前:11[sage]:2005/04/05(火) 00:42:26
>>36
人のソースは見たくないし、自分のソースでも数日以上経っている
ものは見たくもない。

だから、追加とかじゃなくて、いちから要求を書いてほすぃ。

私以外の人ならなおさら、>>11 のソースを読んで、それに何かを
追加するなんてことは、やりたくないだろうと思う。

38 名前:デフォルトの名無しさん[sage]:2005/04/05(火) 01:03:59
>>32-33-35自作自演はみじめ

39 名前:36です[javaosietekudasai@hotmail.co.jp]:2005/04/05(火) 01:08:24
37さん色々聞きたいのでメールいただけませんか?


40 名前:M.B.[sage]:2005/04/05(火) 09:14:12
>>36
ファイルの行数
result.lineCount
絶対パス
file.getCanonicalPath()

41 名前:No.1[sage]:2005/04/06(水) 23:16:56
ゲームプログラミング Battleship

一般的なゲームとして知られているBattleshipを作成しなさい.
ゲームはネットワーク対戦型で,プレイヤーはホストとホストに接続する対戦相手である.
フィールドは基本設計が10*10マス,その中に配置される船のスペースは

Battleship 4マス
Destroyer 3マス
Submarine 2マス

と定義する.もし可能であれば10*10マス以外のグリッドの数を任意で決められるように
しなさい.その時の選択肢は10*10, 15*15, 20*20, 任意の数字をキーボードから入力(
このとき縦と横のグリッド数は同じでなければならない)を用意しなさい.

船の配置はコンピュータが適当な位置を割り振るRandomと各プレイヤーが配置を決める
Selfの2種類用意しなさい.また各船の配置数(例えばBattleship:2, Destroyer:3,
Submarine:2など)を決められるようにしなさい.各船ともに必ず1隻は配置すること.
船の配置は水平方向,垂直方向のみで対角線方向には配置しないこと.

42 名前:No.2[sage]:2005/04/06(水) 23:18:52
このプログラムはGUIであることが前提である.しかしGUIビルダーなどを用いず,
自分自身でコードを考えて書くこと.GUIアプリケーションを作成する上で一つ問
題となることがある.それは自分のコンピューターで正しく動作していても違う
コンピュータ,ディスプレーで正しく表示又はアプリケーションが実行できないこ
とである.絶対的な値をすでにプログラムに記述している場合はこのような現象が
起きる.このような問題が起きないようにしなさい.

コミュニケーションプロトコルについて.

次のコミュニケーションプロトコルを実装しなさい.

1.ゲーム開始時にhostは<START>を送ること
2.ホストが終了した場合には<END>を送ること
3.もし何か特別なメッセージを送る場合には<SUPPORTS>とそれに続けて送りたい文
字列を続けること.これに対しての返答は<YES>または<NO>で答えること.特別なメッ
セージとは,例えばゲーム終了後にplay again?というメッセージを送り返答が<YES>
であれば再戦するなど.その他の例は各自で考えよ.
4.先行,後攻はランダムに決めること.そのときクライアントに<FIRSTGO>を送りど
ちらが先行であるか表示する.
5.船の配置をselfで行った場合に,船の配置が終了したら<READY>を送ること.双方
が<READY>を送りゲーム開始とする.
6.対戦相手とチャットができるように<TALK>を実装すること.
7.プレイヤーがマスを選んだ時に<FIRE>を送ること.
8.その時のレスポンス<MISS>,<HIT>,<SUNK>,<ILOSE>のいずれかを送ること.
9.<ILOSE>が送られるとゲーム終了である.ゲーム終了まで7−9を繰り返す.

43 名前:No.3[sage]:2005/04/06(水) 23:20:32
メッセージのタイプを定義すると
<START> ::= 'START'
<SUPPORTS> ::= 'SUPPORTS' string
<YES> ::= 'YES'
<NO> ::= 'NO'
<END> ::= 'END'
<FIRSTGO> ::= 'FIRSTGO' ('YOU' | 'ME')
<READY> ::= 'READY'
<TALK> ::= 'TALK' string
<FIRE> ::= 'FIRE' integer integer
<MISS> ::= 'MISS'
<HIT> ::= 'HIT' <SHIP>
<SUNK> ::= 'SUNK' <SHIP>
<ILOSE> ::= 'ILOSE'
<SHIP> ::= 'BATTLESHIP' | 'DESTROYER' | 'SUBMARINE'

その他の拡張について

上記の基本設計ができていればどのように拡張しても構わない.例えば船や海を表
すグラフィックを表示させたり,FIREやSUNKの時に効果音を入れるなど.リアルタ
イムチャット機能などを盛り込んでもおもしろいであろう.またBattleshipが実行
できるサイトを参考にして違うルールを取り入れても良い.その時は通常のルール
で行うNormalと特殊ルールで行うAdvanceを選択できるようにすると良い.もし時間
があり可能であれば,コンピュータとの対戦ができるようにしなさい.簡易AIを搭
載できればさらにボーナス点を与える.独創性のある拡張にはさらにボーナス点を
与える.GUIデザインも重要である.ユーザーフレンドリーなインターフェースを設
計しなさい.疑問点は各自で調べ問題文の意図がつかめなければ自分なりに解釈を
せよ.レポートに解説があれば多少問題の主旨から離れていても問題ない.



44 名前:No.4[sage]:2005/04/06(水) 23:22:08
グラフィックの例
ttp://www.jsmadeeasy.com/javascripts/DHTML%20Games/Battleship/battleship.zip

実行コマンドは java Battleship -host PORTとする.クライアントは,java Battleship
-join MACHINE PORTでゲームを開始する(例えば.java Battleship -join sakura 12000).
ホストのマシン名はuname -aで確認せよ.

宿題が長文で申し訳ありません.基本設計ができていれば何をやってもOKらしいの
ですが.基本設計部分ですら未知の領域です.よろしくお願いします.

45 名前:デフォルトの名無しさん[sage]:2005/04/07(木) 00:25:20
「一般的なゲームとして知られているBattleship」

そもそもどういうゲームよ?

46 名前:M.B.[sage]:2005/04/07(木) 09:16:56
>>45
↓これじゃねぇの?
ttp://scv.bu.edu/~aarondf/java/armada.html

47 名前:デフォルトの名無しさん []:2005/04/08(金) 19:54:18
また4月か。

48 名前:まゆみ☆ []:2005/04/08(金) 22:04:55
たすけてください!!
言語 ASP & javascript + vbs
CREATEOBJECTにてExcel起動を行っているのですが,
Windows 2000 server IIS5だと問題なく動作するのですが、
Windows 2003 server IIS6だとそのページさえいきません。。。

現象としてはグループで分類し240件を超えてしまうと
まったく動作しなくなってしまいます。
それ以下だとプリントできます。
どなたかお知恵をお貸しください
どうぞよろしくお願いいたします。

以下にリンクスクリプトを記載いたします。
長文失礼いたします。
//リンクを行う
parent.menu2.location.href = "TanPrint.asp";


49 名前:デフォルトの名無しさん[sage]:2005/04/08(金) 22:12:59
スレ違い。

50 名前:デフォルトの名無しさん[sage]:2005/04/08(金) 22:13:47
>>48
http://pc8.2ch.net/test/read.cgi?bbs=tech&key=1112154540&st=1&to=1&nofirst=true" target="_blank">>>>1
>> JavaScriptの質問は、ここでは受け付けていません。
>> Web製作板をご利用ください。http://pc5.2ch.net/hp/
とのことです。複数のスレッドに同様の質問を書き込むのはご遠慮ください。

51 名前:デフォルトの名無しさん []:2005/04/10(日) 06:24:07
>>12です。
またJavaの宿題で困ってます。力を貸してください。

ttp://www.geocities.jp/de991a/

宜しくお願いします。


52 名前:デフォルトの名無しさん[sage]:2005/04/10(日) 07:25:23
2ちゃんねらに声をかけたところ
およそ700人の猛者がチャレンジしたブラインドタッチ選手権!
驚異のハイスコア現在1位の1057.2点を越えることが出来るか!
まだまだ2ちゃんねるの猛者達のチャレンジを待っている
それがブラインドタッチクオリティ

↓からいけます
ttp://freegame.sytes.net/~take/cgi-bin/typecreate/index.html


53 名前:デフォルトの名無しさん []:2005/04/10(日) 19:08:58
ageてみよう・・・。

54 名前:デフォルトの名無しさん[sage]:2005/04/11(月) 12:09:18
ぶらくら?

55 名前:デフォルトの名無しさん []:2005/04/11(月) 17:00:35
>>12です。
またJavaの宿題で困ってます。ホント困ってます。

ttp://www.geocities.jp/de991a/

宜しくお願いします。

56 名前:仕様書無しさん[sage]:2005/04/12(火) 12:58:16
>>55
英語が不得意なので出題者に質問したいのだが、
なぜ問題文の文章が過去形なのだ?
問題文というのはそういうふうに書くものなのか?
Implemented a silly sentence generator.
You should build the program on 〜
とかなら分かるのだが。

57 名前:55[sage]:2005/04/12(火) 13:45:17
>>56
文頭が欠けてました…すいません。
"In programming assignement1,
you implemented a silly sentence generator."
が正しい文章です。


58 名前:ぽて []:2005/04/13(水) 12:27:36
さっそく課題出されました。お願いします。

□ 問題:
一定の幅と高さをもつボードがある。図のようにボード上には左上隅を原点とする座標
系(x 座標、y 座標)が定義されているとする。この時、つぎの条件を満たすように二
辺の長さとボード左上の位置を表す座標をもつ長方形をボード上に配置するプログラ
ムを作成せよ。
(1) 配置に関する機能とそのメソッド名は以下の通りである。
• 幅、高さ、位置(x座標、y座標)を与えて長方形を作成する。create
• 長方形を指定して指定したx方向、y方向へ指定した距離分移動する。move
• 長方形を指定して、指定した倍率で幅と高さを拡大する。expand
• 長方形を指定して、指定した倍率で幅と高さを縮小する。shrink
• 長方形を指定して削除する。delete
• ボード上の長方形をすべて削除する。deleteAll
• 2 つの長方形の重なり部分を抽出し、長方形として配置する。Intersect
(2) その他に次の機能をもつ
• ボードの状態を表示する。displayBoard
• 操作を終了する。 exit
(3) ユーザはキーボードから(1)の機能に対応するコマンドと必要なデータを入力し、
結果のボード上のデータ(どの位置にどの長方形が配置されているか)を標準出
力に出力する。
(4) ボード上で同じ幅、高さ、位置をもつ長方形は同一の長方形とみなす。
(5) 長方形とは面積をもつものとし、点および線分は長方形とはみなさない。
(6) ボードの大きさを設定できる。

59 名前:ぽて[sage]:2005/04/13(水) 12:28:02
続きです。
<注意>
• ある操作によって、ボードから長方形がはみ出す場合には、その入力の値を無効と
して、操作をやり直すこととします。
• 拡大と縮小の倍率は幅と高さそれぞれ別に指定するものとします。
• このプログラムの使い方はつぎのとおりです。
− 起動すると、コマンド一覧が表示される。
− ユーザはコマンドを選択し、要求されるパラメータを入力する。
− コマンドの実行が終了すると、コマンド一覧に戻り、exit が実行されるまで操
作を選択することができる。
• ボード上に配置できる長方形の数の上限を10 個に設けることにします。
• 「ボードの状態を表示する」とはボード上にあるすべての長方形の属性(幅、高さ、
x 座標、y 座標)を表示するということです。
• 「ボード上のデータ(どの位置にどの長方形が配置されているか)」ということで
すが、長方形は上記の属性がすべて等しい値の場合は同じとみなすので、ここでは
これら4つの属性でボード上の長方形を識別できるものと考えます。識別子が必要
かどうかは考えてください。
• これらの属性(幅、高さ、x 座標、y 座標)のデータ型を何にするかも考察してく
ださい。

60 名前:デフォルトの名無しさん []:2005/04/13(水) 14:06:57
お願いします。丸投げします。
セッションオブジェクトを使って、前回の計算結果を用いて
足し算を行うサーブレットを作成してください。

実行結果

1回目のアクセス 0+1=1
2回目のアクセス 1+2=3
3回目のアクセス 3+3=6
4回目のアクセス 6+4=10

61 名前:デフォルトの名無しさん[sage]:2005/04/14(木) 15:11:16
乱数を発生させて結果を出力するプログラムを作っています。
乱数を発生させる所まではうまくいったのですが、ファイルへの出力部分で手間取っています。以下のように組んだのですが、エラーとして
『RandomTest.java:12: シンボルを解決できません。
シンボル: メソッド write (double)
場所 : java.io.FileWriter の クラス
writer.write(rnd);』
と出てしまいます。色々と試みてみたのですがうまくいきません。
Double型の変数は、このメソッドでは出力することができないのでしょうか?
大変初心者の質問で申し訳ありません。

import java.io.*;

class RandomTest{
public static void main(String[] args){
try{
int i;
FileWriter writer = new FileWriter("./test.txt");
for( i=0 ; i<10 ; i++){
rnd=Math.random();
System.out.println(rnd);
writer.write(rnd); // 出力
}
writer.close(); // 出力ファイルを閉じる
}catch(Exception e){
System.err.println(e);
System.exit(0);
}
}
}

62 名前:デフォルトの名無しさん []:2005/04/14(木) 15:29:42
age

63 名前:デフォルトの名無しさん[sage]:2005/04/14(木) 16:33:58
お前が選んだのは

「9」

だな

64 名前:Java超初心者[sage]:2005/04/14(木) 19:57:23
>>61
writer.write(rnd); を
writer.write(String.valueOf(rnd)); に変えればとりあえずの目的は達成できます。
その上で、効率の良い出力をするために
FileWriter writer = new FileWriter("./test.txt"); を
BufferedWriter writer = new BufferedWriter(new FileWriter("./test.txt")); に変えた方が良いです。
あと、これは質問スレに書き込むほうが適切だと思われます。

65 名前:M.B.[sage]:2005/04/14(木) 22:05:40
>>64
同じコテハン主義者としてひとこと言わせてもらうと、
それだけJava について語っておいて、
「Java超初心者」というハンドルは厭味だと思うぞ。
ついでながら、文字出力で効率を考えるような頭があったら、
StringBuffer に詰め込んでおいて一気に吐く、とかいった
方法を考えたほうが、もっと人生を有効に使える気がするが。

66 名前:デフォルトの名無しさん[sage]:2005/04/15(金) 00:38:39
>>65
> StringBuffer に詰め込んでおいて一気に吐く、とかいった
> 方法を考えたほうが、もっと人生を有効に使える気がするが。

StringBuffer を使うと、それをメモリにためておくことになるわけですよね。
大量のデータを出力する場合、ある程度のところで StringBuffer の中身
を吐き出す処理をしないと、プログラム自体が食うメモリの大きさに影響し
てきちゃうんじゃないかなぁ。

BufferedWriter を使うことによっても、内部的な Buffer を使うことになる
わけだけど、それは適当なところで実際のストリーム(今回の場合ファイル)
に書き込んでくれるので、メモリのことは考えなくて済む。

StringBuffer を使う方法は、どこまでメモリにため込んでおくかをプログラマが
考えないといけないので、人生を有効に使うのには役立たず、逆に考慮すべき
事項が増えてしまうんじゃないか、という気がしますがいかがでしょう。

67 名前:M.B. []:2005/04/15(金) 12:56:30
>>66
文字というのはテキスト処理の一部として使われることが
ほとんどだろうから(当たり前か(-_-;))文書という
カタマリ単位で処理したほうがナイスなような気がする。
BufferedWriter は、むしろプログラム間(あるいはデバイス間)で
同期を取ったりするときに便利なんじゃなかろうか。

68 名前:デフォルトの名無しさん[sage]:2005/04/15(金) 13:18:10
>>67
反論されてるんだからワケワカランこといわずに
きちんと>>66に答えたら?w

69 名前:デフォルトの名無しさん[sage]:2005/04/15(金) 14:01:46
5. 宿題&課題とその回答プログラムに対する質問はOK ですが、
 一般的な質問は質問スレで行なってください。また、多言語の課題は
 原則としてスルーされますので、ご了承願います。

70 名前:デフォルトの名無しさん[sage]:2005/04/15(金) 18:28:45
課題は乱数を出力するプログラム。どう考えても文章と組み合わせるとは思えない。
加えて、ファイルアクセスがボトルネックなら実行速度に差はない。
むしろロードとかで速度が低下する事すら考えられる。

何より、BufferedWriterは取り扱いが非常に簡潔、プログラムの見通しも立ちやすい。
(StringBufferを使ったコードって、何行増えるよ?)
Keep It Simple, Stupid.

ついでに、65の書き込みで質問者に通じると思うか?
質問者はBufferの概念すら理解してないと思うが。
質問者の立場になって答えられん奴は質問スレにいるべきではない。

71 名前:Java超初心者[sage]:2005/04/15(金) 21:34:35
>>58-59
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=23188
課題をやってみました。
前半の(6)の意図が不明だったので、コンストラクタに引数を渡して、
ボードの大きさを指定できるようにしました。
上の意味が良く分からない場合は、249行目のカッコ内の数字を変えれば
ボードの大きさが変えられると考えておいてください。
汚いソースではありますが、一応動くと思いますのでおそらく評定はつきます。

>>65-
コテハン主義というより、上の恥ずかしいスパゲッティコードを作成するような
正真正銘の超初心者なので、こんな名前欄を設定してしまいました。
そして名乗っておいて、ソースの提示が1日遅れるこの有様…。
なんだか私のせいでスレが荒れてしまったようで本当に申し訳ありませんでした。

72 名前:デフォルトの名無しさん[sage]:2005/04/15(金) 22:24:02
>>70
残念だがここは質問スレではないわけだが。

73 名前:デフォルトの名無しさん[sage]:2005/04/15(金) 22:37:11
>>60
// IncrementalServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class IncrementalServlet extends HttpServlet {
private int counter;
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
HttpSession session = req.getSession();
int data;
Object dataInteger = session.getAttribute( "data" );
if( dataInteger == null ) data = 0;
else data = ( (Integer)dataInteger ).intValue();
res.setContentType( "text/html; charset=Shift_JIS" );
PrintWriter out = res.getWriter();
out.println( "<html><head>" );
out.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">");
out.println("</head><body>");
counter++;
int old_data = data;
data += counter;
out.println( counter + "回目のアクセス " + old_data + "+" + counter + "=" + data + "<br>" );
out.println( "</body></html>" );
session.setAttribute( "data", new Integer(data) );
}
}

74 名前:デフォルトの名無しさん []:2005/04/16(土) 18:12:48
お世話になります。

ビッグオー記法の課題です。
O(n)とO(logn)処理回数の違いを表すプログラムを作成してください。

よろしくお願いします。

75 名前:74[sage]:2005/04/16(土) 18:16:21
すいません。処理回数ではなく、処理時間です。

76 名前:M.B.[sage]:2005/04/16(土) 22:33:50
>>74
System.out.println(" 1 10 100 1000 10000");
System.out.println(" 1 2 3 4 5");

馬鹿サーチ(O(n))と二分探索(O(log2n))で
同じことをやって、データサイズと処理時間の関係を
表示するというのも一つの手だが。

77 名前:ぽて[sage]:2005/04/16(土) 22:36:34
>>70 Java超初心者サマ
こんな長いプログラム作って頂いてありがとうございました

ただline.spirit(とCharacter.toString(
でコンパイルエラーとなってしまいます;
Javaのバージョンが古いせいでしょーか

78 名前:Java超初心者[sage]:2005/04/16(土) 23:14:38
>>77
Javaのバージョンが1.3以下であるならば、おそらくそうです。
1.3以下の環境でしか作成してはいけないという条件で、かつどうしても書き直して欲しいという場合はそのように書き込んでください。
そうでない場合は、これを機会にJava 5.0 を導入することをお勧めします。

79 名前:ぽて[sage]:2005/04/17(日) 01:13:18
ウチのは1.3でした。
そうですね、これを機に新しいの導入してみます。

ありがとうございました

80 名前:74[sage]:2005/04/17(日) 11:04:28
>>76
馬鹿サーチ(O(n))と二分探索(O(log2n))で
同じことをやって、データサイズと処理時間の関係を
表示するというのも一つの手だが。

教えてもらえませんか?お願いします。

81 名前:デフォルトの名無しさん []:2005/04/17(日) 12:37:40
age

82 名前:Java超初心者[sage]:2005/04/17(日) 13:26:42
>かつどうしても書き直して欲しいという場合は
読み返してみたら、大変傲慢な書き込みをしておりました。すみません。
お詫びというか、バグフィックスです。
>>71のメソッド intersect() を以下のように書き換えてください。よろしくお願いします。

83 名前:Java超初心者[sage]:2005/04/17(日) 13:29:47
private void intersect() {
Object[] obj = rectArray.toArray();
Rect[] rects = new Rect[obj.length];
for(int i = 0; i < obj.length; i++)
rects[i] = (Rect)obj[i];
if(rects.length > 1) {
for(int i = 0; i < rects.length - 1; i++) {
Rect rectA = rects[i];
int al = rectA.getPosition().width; int at = rectA.getPosition().height;
int ar = rectA.getPosition().width + rectA.getSize().width;
int ab = rectA.getPosition().height + rectA.getSize().height;
for(int j = i + 1; j < rects.length; j++) {
boolean blnCreate = false;
Rect rectB = rects[j];
int bl = rectB.getPosition().width; int bt = rectB.getPosition().height;
int br = rectB.getPosition().width + rectB.getSize().width;
int bb = rectB.getPosition().height + rectB.getSize().height;
if((al <= bl && bl < ar) && ((bt < at && at <= bb) || (at <= bt && bt < ab)))
blnCreate = true;
else if ((bl <= al && al < br) && ((at < bt && bt <= ab) || (bt <= at && at < bb)))
blnCreate = true;
if(blnCreate) {
int rl, rt, rr, rb;
if(al < bl) rl = bl;else rl = al;
if(at < bt) rt = bt;else rt = at;
if(ar < br) rr = ar;else rr = br;
if(ab < bb) rb = ab;else rb = bb;
create(rl, rt, rr - rl, rb - rt);
}}}}}

84 名前:デフォルトの名無しさん[sage]:2005/04/17(日) 20:09:06
>>74
情報処理試験が終わってようやく時間ができたのでやってみた。
// SearchAlgorithm.java
public class SearchAlgorithm {
long n;
public static void main(String[] args) {
new SearchAlgorithm().start();
}
private void start() {
for( n=1; n<1000000000000000000L; n*=10 ) {
System.out.println( "n = " + n );
// 0〜nのちょうど真ん中の位置にある値を見つけるとする。
long find = n / 2;
// 線形探索
if( n < 10000000000L ) linearSearch( find );
// 二分探索
binarySearch( find );
System.out.println();
}
}
/** 線形探索。O(n)の例。*/
private void linearSearch( long find ) {
System.out.println( "Start Linear Search..." );
long start = System.currentTimeMillis();
for( long i=0; i<n; i++ ) {
if( i == find ) {
System.out.println( "Found!! value: " + find );
break;
}
}
long end = System.currentTimeMillis();
System.out.println( "End Linear Search..." );

85 名前:84[sage]:2005/04/17(日) 20:11:19
つづき
System.out.println("Time: " + (end-start) + "msecs." );
}
/** 二分探索。O(log(2)n)の例。*/
private void binarySearch( long find ) {
System.out.println( "Start Binary Search..." );
long start = System.currentTimeMillis();
long lowerBound = 0;
long upperBound = n - 1;
long cursor = -1;
while( lowerBound <= upperBound && lowerBound != cursor ) {
cursor = (lowerBound + upperBound) / 2;
if( cursor >= find ) upperBound = cursor;
else lowerBound = cursor + 1;
}
if( cursor >= 0 && cursor == find ) {
System.out.println( "Found!! value: " + find );
long end = System.currentTimeMillis();
System.out.println( "End Binary Search..." );
System.out.println("Time: " + (end-start) + "msecs." );
}
}
}

数字はマシンスペックにあわせて調整してください。
二分探索はうちの環境だと綺麗に倍になりません。出力上は全て0msecです。

>>83
そのコテハンやめなさいって。荒れる元だから。

86 名前:60 []:2005/04/17(日) 21:19:05
>73 様
解答ありがとうございます。しかし、書き込んだその日に解けました。
僕はtry,catch文でつくりましたので、73様の解答も今後の参考にしたいと思います。
下にソースを晒しときます。
import javax.servlet.*;
import javax.servlet.http.*;
public class Training8_2Servlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html; charset=Windows-31J");
java.io.PrintWriter out = response.getWriter();
out.println("<HTML><HEAD><TITLE>Session Test"+ "</TITLE></HEAD><BODY>");
HttpSession session = request.getSession(true);
int sum=0;
int count=1;
int result;
try { count = Integer.parseInt((String)session.getAttribute("yourCount") );
} catch (Exception ex) { count = 0; }
count++;
session.setAttribute("yourCount",Integer.toString(count));
try {sum =Integer.parseInt(
(String)session.getAttribute("yourResult"));
} catch (Exception ex) {sum =0;}
result=(sum+count);
session.setAttribute("yourResult",Integer.toString(result));
out.println("<h1>"+sum+"+"+count+"="+result+"</h1>");
out.println("<A href=\""
+ response.encodeURL("http://localhost:8080/no08/servlet/sample08.Training8_2Servlet")
+ "\">次の計算</A>");
out.println("</BODY></HTML>");
out.close(); }}

87 名前:74[sage]:2005/04/18(月) 09:39:34
>>84
早速の解答ありがとうございました。
とても助かりました。

また何かありましたらよろしくお願いします。

88 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 19:10:37
sage

89 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 19:11:33
保守

90 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 20:35:36
保守

91 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 20:39:45
(・д・)

92 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 20:41:23
(・д・)


93 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 20:44:19
(・д・)


94 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 20:46:02
うぜえな

95 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 20:46:07
(・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・)
(・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・)
(・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・) (・д・)

96 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 21:48:04
どなたかBattleship(>>41->>44)をお願いできませんか.

ゲームの詳細は,>>46でレスを頂いたものです.
ttp://www.jsmadeeasy.com/javascripts/DHTML%20Games/Battleship/

下記のサイトにソースがあったので,ネットワーク対戦型と>>41->>44に書いた
リクエストに変えて頂いくという方法でも構いません.
ttp://www.programmersheaven.com/articles/userarticles/mark/tut4/tut4.htm

battleship基本部分のソースコード
ttp://www.programmersheaven.com/articles/userarticles/mark/tut4/battleship_4.zip

よろしくお願いします.

97 名前:デフォルトの名無しさん[sage]:2005/04/18(月) 22:00:47
サーブレットでフォームを作ってください。
フォームに入力されたデータをセッションに登録し、次の入力画面に
そこまでたまったデータに入力されたデータを追加し、入力欄と一緒に表示
するものです。お願いします

98 名前:74 []:2005/04/19(火) 12:36:51
たびたびすいません。
>>84で得た値をグラフ化することはできないでしょうか?

99 名前:デフォルトの名無しさん[sage]:2005/04/20(水) 00:19:43
>98
可能です。
Excelに値を貼り付けてグラフボタンをクリックしましょう。

Javaで実現したいのなら、一番普通なのは、AWTを使ってウィンドウこさえてそこにお絵描きする方法。
AWTってのはJavaアプレットなんかに使われるGUIのためのパッケージな。
アプレットで図形を描画するサンプルはぐぐれば腐るほど出てくるので、それに時間測定ルーチン組み込むのが一番早いと思う。

あるいは、得た値を使ってprint文でアスキーアートのグラフを書くという手もある。
技術的にはショボいが、非常にお手軽。

100 名前:デフォルトの名無しさん[sage]:2005/04/20(水) 13:59:09
>>74 には処理時間ではなく「回数」と書いてあるようだが。
どこまでを回数にすればいいのかな
break するまでの for(の中の if)の回数と、
while の回数(trueの回数+false 1回分)かな

101 名前:デフォルトの名無しさん[sage]:2005/04/20(水) 15:11:29
>>100
>>75

102 名前:デフォルトの名無しさん[sage]:2005/04/20(水) 17:02:04
死ぬ

103 名前:デフォルトの名無しさん []:2005/04/20(水) 17:18:05
ハフマン符号の符号化・複合化プログラムを
お願いします・・・。

104 名前:デフォルトの名無しさん[sage]:2005/04/20(水) 19:09:53
>>97
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class FormServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
doAction(req, res);
}
public void doPost(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
doAction(req, res);
}
public void doAction(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException {
HttpSession session = req.getSession();
Enumeration enumeration = session.getAttributeNames();
int elements = 0;
// セッションオブジェクトに格納されている要素数を数える。
while( enumeration.hasMoreElements() ) {
enumeration.nextElement();
elements++;
}
req.setCharacterEncoding( "UTF-8" );
if( req.getParameter("inputtext") != null && req.getParameter("inputtext").length() > 0 ) {
String inputtext = (String)req.getParameter("inputtext");
// セッションオブジェクトに連番のキーで値を格納。
session.setAttribute( "" + (elements++), inputtext );
}
res.setContentType( "text/html; charset=UTF-8" );
PrintWriter out = res.getWriter();
out.println( "<html><head>" );
out.println("<META http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");
out.println("</head><body>");

105 名前:104[sage]:2005/04/20(水) 19:10:16
つづき
// セッションオブジェクトの要素を出力
for( int i=0; i<elements; i++ ) {
out.println( session.getAttribute( "" + i ) + "<br>" );
}
out.println( "<form method=\"POST\" action=\"./FormServlet\">" );
out.println( "<input type=\"text\" name=\"inputtext\">" );
out.println( "<input type=\"submit\" value=\"push me\">" );
out.println( "</form>" );
out.println( "</body></html>" );
}
}

106 名前:デフォルトの名無しさん []:2005/04/20(水) 19:58:15
コンパイルエラーが多すぎて…困ってます。
自己責任とわかってますが、力を貸してもらえないでしょうか?

http://www.geocities.jp/de991a/

お願いします。

107 名前:デフォルトの名無しさん[sage]:2005/04/20(水) 20:02:47
>>106
スレ違いです。

108 名前:デフォルトの名無しさん []:2005/04/21(木) 14:02:42
どなたか教えていただけないでしょうか?お願いします。
>>58-59に対する回答が>>71>>83にありますが、これに下の機能を追加していただけないでしょうか?

(1)長方形とボードに色をつける。
・ボードの色はwhiteとする。
・長方形の色として指定できる色は以下の通りである。
-red
-blue
-yellow
-gray
(2)長方形に対する配置の機能のうち、intersectを以下のように拡張する。
・重なり部分の色を以下の規則でマージして、色を決定する。
-色の組み合わせが同じであればgrayとする。
-色の組み合わせがyellowとblueならば、greenとする。
-色の組み合わせがredとyellowならば、orangeとする。
-色の組み合わせがredとblueならば、magentaとする。
-その他の場合はcyanとする。
(3)長方形は色が異なってもボード上で同じ幅、高さ、位置を持つ場合は同一の長方形とみなす。
(4)ファイル名を指定してボードの状態をファイルに出力する機能を追加する。
コマンドはsaveとする。

お願いいたします。

109 名前:デフォルトの名無しさん[sage]:2005/04/22(金) 00:04:44
2枚のグレースケールjpeg画像の諧調値を単純に引き算してできる差分画像を描画したいのですが
わかる方教えていただけないでしょうか。お願いいたします。

110 名前:デフォルトの名無しさん[sage]:2005/04/22(金) 01:45:28
>>109
手抜きです。
普通はPixelGrabberとMemoryImageSource使うのかな。

import java.awt.*;
import java.awt.image.*;
import java.net.URL;
import javax.imageio.ImageIO;
public class Q109 extends Applet
{
BufferedImage out_image;
public void init()
{
try
{
BufferedImage in_image = ImageIO.read(new URL(getCodeBase(), "src.jpg"));
BufferedImage sub_image = ImageIO.read(new URL(getCodeBase(), "sub.jpg"));
out_image = new BufferedImage(in_image.getWidth(), in_image.getHeight(),BufferedImage.TYPE_BYTE_GRAY);
byte[] inbuf = ((DataBufferByte) in_image.getRaster().getDataBuffer()).getData();
byte[] subbuf = ((DataBufferByte) sub_image.getRaster().getDataBuffer()).getData();
byte[] outbuf = ((DataBufferByte) out_image.getRaster().getDataBuffer()).getData();
for (int i = 0; i < inbuf.length; i++)
{
outbuf[i] = (byte) (inbuf[i] - subbuf[i]);
//if ((outbuf[i] & 0xFF) > (inbuf[i] & 0xFF)) {outbuf[i] = 0};
}
}
catch (Exception e){e.printStackTrace();}
}
public void update(Graphics g){paint(g);}
public void paint(Graphics g){if(out_image != null)g.drawImage(out_image, 0, 0, null);}
}

111 名前:109[sage]:2005/04/22(金) 17:24:25
>>110さん
こんなに早く答えていただいて本当にありがとうございます。
無事表示できました。

>普通はPixelGrabberとMemoryImageSource使うのかな。
さらに機能を拡張していこうとする場合、
これらを用いて書いておいた方がいいのでしょうか。
ネットワークで送られてきた画像に対してリアルタイム処理で
差分画像を表示させるのが目的です。

112 名前:71[sage コテハン荒らし、すまんかった]:2005/04/23(土) 21:52:14
>>108
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=23403
疲れててデバッグを十分にしていないので、動作確認してバグがあったら言って下さい。
なんだか無性に嫌な予感がしますが、最終的にはGUIアプリになるのですか?

113 名前:デフォルトの名無しさん []:2005/04/25(月) 18:02:41
>>112さん ありがとうございます!助かりました。
察しのとおり、次からGUIになる悪寒です。

114 名前:デフォルトの名無しさん []:2005/04/25(月) 18:12:03
アプレットビューアではちゃんと動くのにWEBブラウザでとつでん読み込めなくなったんだけど・・・こんなことって普通ないですよね?
あと画像がフルパスでは表示できるのに相対パスでは表示できない(取得できない?)んですけど関係ありますかね?
eclipse使ってます。

115 名前:デフォルトの名無しさん[sage]:2005/04/25(月) 19:03:04
>>114
スレ違いです。

116 名前:デフォルトの名無しさん []:2005/04/26(火) 17:30:07
三桁の数字を当てるゲームを作ってください。
乱数で3桁別々の数字を決め、キー入力された数字を桁ごとにチェックし、
入力した数字が乱数と比べて桁は違うが、どこかにその値を使っていたらパー、
値と桁が合っていたらイーグル、とし、
パー数とイーグル数を表示します。
HTMLは使わずに、1つのJSPで作ってください。

117 名前:デフォルトの名無しさん[sage]:2005/04/26(火) 20:23:00
ちなみに、そのゲームは、hit & blow と呼ぶのが普通。
ある有名なゲーム内のミニゲームで「コードブレイカー」と呼ばれてたので、そう呼ぶ人もいるけど。

118 名前:デフォルトの名無しさん[sage]:2005/04/26(火) 21:21:08
マスターマインドという名前で商品化もされてるね。


119 名前:デフォルトの名無しさん []:2005/04/26(火) 23:42:36
2つの数字を入力して、
最大公倍数と、最小公約数を表示させる。というものを作りたいのですが、
わかる方よければおしえていただけませんか?よろしくお願いします。

120 名前:デフォルトの名無しさん[sage]:2005/04/26(火) 23:55:52
最大公倍数は無限大で、最小公約数は1だなぁ。と、酒の勢いに任せて揚げ足を取ってみる。

121 名前:119 []:2005/04/27(水) 00:16:01
しまった・・・。
最大公約数と、最小公倍数でした;;
どうか、よろしくお願いします。

122 名前:デフォルトの名無しさん []:2005/04/27(水) 00:53:51
自宅(下宿)から大学までの途中にある「もの」(店、ポスト、桜の木...)
を順に並べて(Vectorクラスを使って)リストを作り、一番気に入っているものがリストの何番目にあるか
を調べて表示するJavaのプログラムを作れ。

途中にあるものは公園、小学校、プール、銀行で気に入ってるのは公園でお願いします。

123 名前:M.B. []:2005/04/27(水) 09:02:27
>>116
電算業界ではMOO という名前で呼ばれること多し。
有沢誠さんの『プログラミング・レクリエーション』
(近代科学社)に出てたはず(うろおぼえ)。

124 名前:M.B. []:2005/04/27(水) 09:04:02
>>121
前スレに「Euclid の互除法」によるGCM(最大公約数)を
求めるルーチンがあったはず。
最小公倍数は二つの数の積をGCM で割れば出る。

125 名前:デフォルトの名無しさん []:2005/04/27(水) 10:34:06
ねえねえ
最小公倍数って0じゃないの?

126 名前:デフォルトの名無しさん[sage]:2005/04/27(水) 11:24:55
最小公女セイラ

127 名前:質問君[sage]:2005/04/27(水) 12:50:51
うが〜。どなたかご教授くださいまし。

Javaでプロクシサーバーのプログラムを書いています。

あるポートで待ち受けて、ブラウザ(クライアント)からの
リクエストを取得し、それを外部へ代理で送信し、レスポンスを
代理で受信して、それをそのままクライアントへ返すプログラム
です。

この一連の処理はうまくいっているのですが、HTMLページ内の
画像だけ表示されません。GETホニャララで送ったリクエストの
レスポンスが、どうやら複数返ってきているようなのですが…。
そのうちのHTMLだけ受け取っているようでして。

もしかして、代理で受信した時にバイナリかテキストか判別しないと
いけないのでしょうか。難しくてもう泣きそうです。っうえっうえwwww

128 名前:初心者です []:2005/04/27(水) 14:22:22
どなたか助けてください。。

0〜9の整数の乱数を30個出力する問題です。
Java.until.Randomクラスを使って作成したいのですが
どなたかお願いします。

129 名前:デフォルトの名無しさん []:2005/04/27(水) 17:06:43
Java って 右トリム 左トリムってないの????
教えてくだせい

130 名前:U ◆CZtFsGiu0c [sage]:2005/04/27(水) 17:31:18
>>127
HTML内にimgタグで画像が入っていた場合、別途クライアントからその画像
に対するHTTPリクエストが出ます。なので、そのリクエストをハンドリング
すればいいはずですが。

>>128
nextIntで取得した数を10で割った余りを乱数とする。
それを30回繰り返せばいい。

>>129
どちらかの空白だけ取るってのはないね。

131 名前:デフォルトの名無しさん[sage]:2005/04/27(水) 21:19:39
>>128 回答例
import java.util.Random;
public class Sample01 {
public static void main(String[] args) {
Random rnd = new Random();
for(int i = 0; i < 30; i++)
System.out.println(rnd.nextInt(10));
}
}

132 名前:120[sage]:2005/04/27(水) 22:00:11
>>119 酒の勢いで揚げ足を取ったので、今宵は酒のツマミにソースを貼ってみる。
酒のツマミなのでエラー処理がおざなり。適当に改良しておくれ。
import java.io.BufferedReader; import java.io.InputStreamReader;
public class Sample01 {
public Sample01() {
int i1, i2, igcd; long llcm;
System.out.println("二つの引数を入力して下さい。");
i1 = getInt("引数1:"); i2 = getInt("引数2:");
igcd = getGCD(i1, i2); llcm = i1 * i2 / igcd;
System.out.println(i1 + " と " + i2 + " の最大公約数は " + igcd + "です。");
System.out.println(i1 + " と " + i2 + " の最小公倍数は " + llcm + "です。");
}
public static void main(String[] args) { new Sample01(); }
public int getInt(String strMsg) {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print(strMsg);
String line = reader.readLine();
return (Integer.parseInt(line));
} catch(Exception e) {
e.printStackTrace();
System.exit(1);
} return 0;
}
public int getGCD(int i1, int i2) {
int i3;
while(i2 != 0){
i3 = i1%i2; i1 = i2; i2 = i3;
}
return i1;
}
}

133 名前:デフォルトの名無しさん[sage]:2005/04/27(水) 22:50:42
>>122 泥酔状態で作ってみた。「もの」だから、小粋にインスタンスにした。
今日は私しかコードを晒してないけど、ひょっとして察してないのは私?だとしたらごめんなさい。
import java.util.Vector;
public class Sample01 {
private Vector list = new Vector();
public Sample01() {
Item park = new Item("公園", true); list.add(park);
Item school = new Item("小学校"); list.add(school);
Item pool = new Item("プール"); list.add(pool);
Item bank = new Item("銀行"); list.add(bank);
String strExp = "何もかもが気に入りません";
outer:
for (int i = 0; i < list.size(); i++) {
Item item = (Item)list.get(i);
if(item.isFavorite()) {
strExp = "私のお気に入りの" + item.getName() + "は、\n" +
"自宅(下宿)から大学までの途中にある目印っぽい建物の中で、\n" +
(i + 1) + "度目に通り過ぎます。";
break outer;
}
}
System.out.println(strExp);
}
public static void main(String[] args) { new Sample01(); }
}
class Item {
private String name; private boolean favorite;
public Item(String name, boolean favorite) { this.name = name; this.favorite = favorite; }
public Item(String name) { this(name, false); }
public String getName() { return name; }
public boolean isFavorite() { return favorite; }
}

134 名前:質問君[sage]:2005/04/28(木) 13:26:08
>>130
自己解決しました。ありがとうございました。

1.クライアントからの要求をいったんテキストデータをBufferedReader
で受けて、接続先を解析

2.リクエストをテキストデータで接続先へ送る(BufferedWriter)

3.接続先から受けとったデータはInputStreamで受けて、そのまま
くらいあんとへOutputStreamで送る

これでできました。HTTP 1.xプロトコルだと接続要求が複数発生します
ので、すべて個別のスレッドを生成して送受信しました。3のように
受け取ったデータをReaderやWriterでラップせずに送ったらうまく
いきました^^

ただ、いくつかソケットで例外が出たり、HTTPSのサイトは見れなかったり、
CGIにPOSTできませんが…

135 名前:デフォルトの名無しさん[sage]:2005/04/29(金) 00:51:33
>>134
URLConnectionを使ってみたら?httpsもキャストするだけで対応してくれるし楽だよ。
URL url = new URL("接続先");でURLのインスタンスを作ってgetProtocol()の戻り値で分岐、
httpsならHttpsURLConnection uc = (HttpsURLConnection)url.openConnection();
httpならHttpURLConnection uc = (HttpURLConnection)url.openConnection();
ってな感じでいけるはず。

POSTする時は、こんな感じでOutputStreamを取ってリクエストボディを流せばおk。
uc.setRequestMethod("POST");
uc.setDoOutput(true);
OutputStream out=uc.getOutputStream();

余裕があったら触ってみそ。

136 名前:デフォルトの名無しさん[sage]:2005/04/30(土) 00:14:59
リストの中からレコードを探し出すプログラムを作れ、と言う問題がでました。
配列の中からレコードを探し出すプログラムはできたのですが、リストはどうしてもできません。
どうぞお力を貸してくださいお願いします…m(_ _)m

137 名前:デフォルトの名無しさん[sage]:2005/04/30(土) 05:03:02
ありがちなのは、Object型で返されたのを欲しい型にキャストしてない、とかか。
情報が少なすぎて回答は厳しい。つーか何を回答して欲しいのかも分からん。
どこまでは出来てどこで躓いたのかも分からんし。

自力で調べるならイテレータ(反復子)あたりをキーワードに調べるとカコイイのが書ける。
配列同様に長さ分のループを回してget()で値を抜き出すと配列同様に書けるけど、速度は落ちるし美しくない。

138 名前:136[sage]:2005/04/30(土) 11:20:11
あとで読み直したら、137さんの言うとおり何を回答したらいいか分からないですね。
すいませんでした。
問題は、リストと配列でそれぞれ検索のプログラムを書いて、リストの便利さを理解するというものです。
リストのプログラムの方はさっぱり分からないです…。
条件は

リストで線形検索をする。
リストの先頭と終わりに1個づつ余分な要素(ダミー)を追加する。終わりの1個は番兵である。
先頭の方は番兵と違って効率をよくすることにはつながらないが、場合分けを減らしてプログラムを
簡単にするために役立つ。

です。
どうぞよろしくおねがいします

139 名前:デフォルトの名無しさん[sage]:2005/04/30(土) 22:22:50
ファイルの内容を読み込んで出力という内容のプログラムを
作っているのですが質問です。ソースが

import java.io.*;
public class yomikomi {

public static void main(String[] args) throws Exception{
BufferedReader reader=new BufferedReader(new FileReader("input.txt"));
String line;
while((line=reader.readLine())!=null){
System.out.println(line);
}
}
}

で、input.txt中身が

a
b
c
d
e

だとすると、aが出力されずにb,c,d,eのみ出力されます

reader.ready()を使えばいいとアドバイスをもらったのですが
ライブラリを見ても使い方がわかりませんでした。
レベルが低いですがお願いします

140 名前:デフォルトの名無しさん []:2005/05/01(日) 15:33:49
乱数をつかってコンピューターに1〜100までに範囲にある整数を一つだけ
決めさせて、それをユーザーが当てる「数当てゲーム」を作成する。

乱数>入力した値 → "もっと大きい値です"
乱数<入力した値 → "もっと小さい値です"
乱数== 入力した値 → "当たり" (終了する)

どなたか解答おねがいします

141 名前:デフォルトの名無しさん[sage]:2005/05/01(日) 16:35:20
それ、TOMCATのサンプルだろ?w
<%@ page import = "num.NumberGuessBean" %>
<jsp:useBean id="numguess" class="num.NumberGuessBean" scope="session"/>
<jsp:setProperty name="numguess" property="*"/>
<html>
<head><title>Number Guess</title></head>
<body bgcolor="white">
<font size=4>
<% if (numguess.getSuccess()) { %>
Congratulations! You got it
And after just <%= numguess.getNumGuesses() %> tries.<p>
<% numguess.reset(); %>
Care to <a href="numguess.jsp">try again</a>?
<% } else if (numguess.getNumGuesses() == 0) { %>
Welcome to the Number Guess game.<p>
I'm thinking of a number between 1 and 100.<p>
<form method=get>
What's your guess? <input type=text name=guess>
<input type=submit value="Submit">
</form>
<% } else { %>
Good guess, but nope. Try <b><%= numguess.getHint() %></b>.
You have made <%= numguess.getNumGuesses() %> guesses.<p>
I'm thinking of a number between 1 and 100.<p>
<form method=get>
What's your guess? <input type=text name=guess>
<input type=submit value="Submit">
</form>
<% } %>
</font>
</body>
</html>

142 名前:デフォルトの名無しさん[sage]:2005/05/01(日) 18:31:54
>>138
番兵というのはなにかね。

143 名前:デフォルトの名無しさん[sage]:2005/05/01(日) 18:42:10
>>138
適当ですが

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=23649

にpostしました。レコードへの拡張は宿題ということで。

144 名前:デフォルトの名無しさん[sage]:2005/05/01(日) 19:22:05
>>142
138じゃないけど
番兵ってアルゴリズムの話するときは必須の単語だと思うよ

ある処理していって最後にそれにぶつかったら処理を終わる目印みたいなもの
番兵が無いときは自分で定義したりする場合もある

145 名前:デフォルトの名無しさん[sage]:2005/05/01(日) 20:33:16
>144
具体的にどんなデータを入れるのか指示はされてるのか、という事だと思う。

146 名前:デフォルトの名無しさん[sage]:2005/05/01(日) 20:51:14
きちんと番兵を実装してるのに無視される>143が哀れ

147 名前:136[sage]:2005/05/01(日) 22:43:25
>>138さん
番兵の意味は144さんの通りみたいです。
もし、145さんの言っている意味であればすいません。
入れるデータの種類は特に言われなかったのですが、
ストリングができれば大丈夫だと思います。
>>143さん
大変参考になります。ありがとうございます。
リストは扱ったことが無かったので、かなり苦戦してました。
ソースみて勉強したいと思います。

148 名前:136[sage]:2005/05/01(日) 22:44:36
うう アンカーミスです・・・
>>138>>143
です。

149 名前:136[sage]:2005/05/01(日) 22:45:33
ぐは ミスのミスです・・・恥ずかしい・・・
>>143>>142

150 名前:デフォルトの名無しさん[age]:2005/05/02(月) 01:13:49
0からnまでの非負整数(0, 1, 2, 3, …,n-1, n)を、以下の順に表示する
プログラムを作りたいです。例えばn=3の場合は、以下の様になります。
0 1 2 3
0 1 3 2
0 2 1 3
0 2 3 1

3 2 0 1
3 2 1 0
また、これに加えて、「指定した数を含まないものを表示する」という条件
を加えた場合、どのようなアルゴリズムになるのでしょうか?
例えばn=3で、2を指定すると、
0 1 3
0 3 1
1 0 3
1 3 0
3 0 1
3 1 0
と表示するものです。お願いします。

151 名前:デフォルトの名無しさん[sage]:2005/05/02(月) 01:21:48
>>150
アホかお前は。Cスレと同じ質問ここにも貼りやがって。

152 名前:150[sage]:2005/05/02(月) 01:27:22
>>151
質問をする立場で何なのですが、Cスレで「スレ違い」だと言われたので
向こうでは謝罪し、Javaスレで改めて質問しています。
いわば、誘導されたものと見なされると思うのですが、どうでしょうか。

153 名前:デフォルトの名無しさん[sage]:2005/05/02(月) 01:34:16
>>152
あちらのCのコードをJavaで書くと云々なら話はわかるが、
ここしか読んでない人は無駄な思考を強いる事になるな。
お前は何も考えないからなんとも思わないんだろうけど。

154 名前:デフォルトの名無しさん[sage]:2005/05/02(月) 01:37:10
たかが自動回答装置ふぜいが

155 名前:150[age]:2005/05/02(月) 01:42:50
>>153
申し訳ありませんが、>>151からは>>153のような意は取れません。
しかし、>>153の通りです。申し訳ありませんでした。
改めてお願いをします。以下のCで書かれたコードを、Javaではどう書けば
よろしいのでしょうか?これは、Cスレで別の方が質問したものへの解答で
あり、>>150の前半を実現したものです。


改行多すぎで送信不可でしたので、ソースは次のレスに貼ります。

156 名前:150[sage]:2005/05/02(月) 01:43:12
#include <stdio.h>
#include <stdbool.h>
void swap(int* x, int* y) {int temp = *x; *x = *y; *y = temp;}
void reverse(int* first, int* last) {
for(; ; ) if (first == last || first == --last) return; else swap(first++, last);
}
bool next_permutation(int* first, int* last) {
int* i = last - 1, *j, *k;
if (first == last || first + 1 == last) return false;
for(; ; ) {
j = i--;
if (*i < *j) {
k = last;
while (!(*i < *--k));
swap(i, k);
reverse(j, last);
return true;
}
if (i == first) {
reverse(first, last);
return false;
}
}
}
int main() {
int i, a[] = {0, 1, 2, 3};
do {
for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) printf("%d", a[i]);
printf("\n");
} while (next_permutation(a, a + sizeof(a) / sizeof(a[0])));
return 0;
}

157 名前:デフォルトの名無しさん[sage]:2005/05/02(月) 08:46:35
>>150
適当ですが

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=23703

にpostしました。

158 名前:デフォルトの名無しさん[sage]:2005/05/02(月) 08:48:14
ただし、↑は転載いただいたCのソースに基づいていません。すみません。

159 名前:デフォルトの名無しさん[sage]:2005/05/02(月) 09:00:09
indentがおかしくなってしまっていたのでやり直しました。

http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=23705

です。何度も申し訳ない。

160 名前:M.B. []:2005/05/02(月) 09:17:14
>>147
「番兵(sentinel)」はfor 文(FORTRANならDO文)の場合には
有効な手だが、Iterater を使うとhasNext()があるので
ほとんど不要(リストの内容をカンマで区切って表示する
場合を考えるとわかりやすい。最後のカンマを出さないように
する部分が簡単になる)。
先頭に一個ダミーを置く「生贄」はどっちでも使える(データに
ヘッダがついていて、空のデータセットがある場合を
考えるとわかりやすい)。

161 名前:116 []:2005/05/02(月) 12:25:01
hit&blowを作ってほしいのですが、だめですか?

162 名前:M.B. []:2005/05/02(月) 13:01:59
>>161
十五分で作ったので死ぬほどいいかげん。
x の中身をセットする部分と入力のチェックは適宜改良せよ。
import java.io.*;
public class HB {
  public static void main(String [] args) throws Exception {
    String x = "1234", y;
    BufferedReader in =
        new BufferedReader(new InputStreamReader(System.in));
    System.out.println("4 桁の数字を入力");System.out.flush();
    do {
      System.out.print("");System.out.flush();
      y = in.readLine();
      int Hit = 0, Blow = 0;
      for (int hcnt = 0;hcnt < 4;hcnt += 1) {
        if (x.charAt(hcnt) == y.charAt(hcnt)) Hit += 1;
        for (int bcnt = 0;bcnt < 4;bcnt += 1) {
          if ((x.charAt(bcnt) == y.charAt(hcnt)) && (bcnt != hcnt))
              Blow += 1;
        }
      }
      System.out.println(Hit + " Hit, " + Blow + " Blow.");
    } while (!x.equals(y));
    System.out.println("正解です。");
  }
}

163 名前:デフォルトの名無しさん[sage]:2005/05/02(月) 15:10:28
>>155
全然 C のソースに基づいてないけど、再帰使ってこんな感じどう?
public class
Q51_150 {
static int[]
Insert( int[] p, int pPos ) {
int[] v = new int[ p.length + 1 ];
for ( int i = 0; i < pPos; i++ ) v[ i ] = p[ i ];
v[ pPos ] = p.length;
for ( int i = pPos; i < p.length; i++ ) v[ i + 1 ] = p[ i ];
return v;
}
static int[][]
Permutation( int p ) {
if ( p == 1 ) {
int[][] v = {{0}};
return v;
} else {
int[][] w = Permutation( p - 1 );
int[][] v = new int[ w.length * p ][];
for ( int i = 0; i < w.length; i++ ) {
for ( int j = 0; j < p; j++ ) {
v[ i * p + j ] = Insert( w[ i ], j );
}
}
return v;
}
}


164 名前:デフォルトの名無しさん[sage]:2005/05/02(月) 15:11:17
>>163
public static void
Body( int[] p ) {
int[][] w = Permutation( p.length );
for ( int i = 0; i < w.length; i++ ) {
for ( int j = 0; j < w[ i ].length; j++ ) {
System.out.print( "," + p[ w[ i ][ j ] ] );
}
System.out.println();
}
}
public static void
main( String[] p ) {
int[] w = { 0, 2, 3 };
Body( w );
}
}

165 名前:150[sage]:2005/05/02(月) 19:41:10
>>157
>>163
>>164
ありがとうございます。頑張って解析してみます。

166 名前:デフォルトの名無しさん[age]:2005/05/03(火) 16:09:55
LinkedListクラスの要素(数字を入れている)をint型変数に格納することは
できないのでしょうか?
例えば LinkedList lk = new LinkedList();
lk.addFirst(1);
int i = lk.getFirst();
とすると、当然怒られます。
get(int index)やget First()などはObjectを返すことは分かっているのですが、
要素が数値の場合、要素をint型変数に入れることは出来るのでしょうか?
キャストやInteger.parseInt等は駄目でした。
ご教授お願いします。

167 名前:デフォルトの名無しさん[sage]:2005/05/03(火) 16:37:56
どうしてもintっていうのなら
自作でそういうクラス作るしかない

あと いわゆるオブジェクト指向らしい方法は
オブジェクトコンポジションでIntArrayクラスの中にCollectionのクラス持って
addFirst(int i)
int getFirst()
とかのインターフェース作れば外見上int出し入れできる



168 名前:デフォルトの名無しさん[sage]:2005/05/03(火) 16:39:14
lk.addFirst(new Integer(1));
int i = ((Integer)lk.getFirst()).intValue();

169 名前:166[sage]:2005/05/03(火) 16:46:41
>>167
レスありがとうございます。ええっと、自己解決しました。
以下のようにすると、int型変数に入れることができました。

int i = ((Integer)(lk.getFirst())).intValue();

では、失礼します。

170 名前:166[sage]:2005/05/03(火) 16:47:26
>>168
あぁぁ、更新してから書き込むべきでした。
ありがとうございました。

171 名前:デフォルトの名無しさん []:2005/05/03(火) 21:57:34
あの〜、JAVAでプログラミングの課題をしてるんですが、簡単な動画を作れとあるのですが・・・
あのパラパラ漫画みたいなのまではマルチスレッドとかつかってできたんですが、前の絵が消えず、
残像(?)が残ってしまいます・・・これどうやったら消えますか?どなたか教えてください。

172 名前:デフォルトの名無しさん[sage]:2005/05/03(火) 22:03:03
paint()
では無くて
update()
使う

173 名前:デフォルトの名無しさん[sage]:2005/05/03(火) 22:04:01
でもってそうなるとこんどは、「ちらつき」の質問かなぁ

174 名前:デフォルトの名無しさん[sage]:2005/05/03(火) 22:04:50
super.paint(g)呼び出していない

175 名前:デフォルトの名無しさん[javaosietekudasai@hotmail.co.jp]:2005/05/03(火) 23:27:07
perlを使って「a」「c」を「c」「d」に置換する方法を教えてください。

176 名前:デフォルトの名無しさん[sage]:2005/05/03(火) 23:43:12
s/a/c/g
s/c/d/g

177 名前:デフォルトの名無しさん[sage]:2005/05/04(水) 00:38:28
アホだな

178 名前:デフォルトの名無しさん[sage]:2005/05/04(水) 08:56:35
>>175
tr/ac/cd/g

tr使ったこと無いからどうなるか分からん。

179 名前:デフォルトの名無しさん[sage]:2005/05/04(水) 10:03:27
cをdに置換してからaをcに置換しないと、とかマジレス。

180 名前:デフォルトの名無しさん[sage]:2005/05/04(水) 15:58:12
simula言語での記述
_r=/a/c/


181 名前:デフォルトの名無しさん []:2005/05/04(水) 20:49:58
すみません、どなたか助けてください・・・。
>>112さんが作ってくれたプログラムをGUI化しろと言われてしまいました。悪寒的中です。
条件は、
-入力は標準入力のままでよい。
-コマンドの入力毎に表示を更新する。
-作成された順番に表示する。
です。
どなたかお願いいたします。

182 名前:デフォルトの名無しさん[sage]:2005/05/04(水) 21:23:24
客というのはそういうものだ

183 名前:デフォルトの名無しさん[sage UTF8じゃないと文字化けするのかorz]:2005/05/04(水) 22:09:38
>>181
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=23767
>>112さんのソースに少し足しただけです。
チェックは殆どしてないのでちゃんとチェックしてくださいね。

184 名前:デフォルトの名無しさん []:2005/05/04(水) 23:36:17
誰か助けてください・・・
画面に現在の時刻をリアルタイムで表示する、
キーボードで時間が合わせられる、
時計プログラム(アナログ+デジタル両方)を作れといわれました。
リアルタイムって・・・どうするんだ〜
初心者ですいませんm(_)m

185 名前:デフォルトの名無しさん[sage]:2005/05/04(水) 23:45:59
>>184
入門書買って来い。

186 名前:デフォルトの名無しさん[sage]:2005/05/04(水) 23:50:22
Observer パターンでググったらそのまま
サンプルがヒットしそうな課題だな

187 名前:デフォルトの名無しさん[sage]:2005/05/04(水) 23:56:46
>>184
作ってもいいけど
ちょっと機能が多いな・・・

188 名前:184 []:2005/05/05(木) 00:02:17
>187
追記で申し訳ないのですが、
デジタルとアナログはまた別々に作れとのことでした。
デジタルなんかはただの文字だけでいいみたいなんですが・・・
あとアプレット形式です。

189 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 00:04:14
>>188
アナログは極座標使うと簡単だよ。
針の長さと針の角度を与えれば線が引けるので。

190 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 00:04:37
後付は解いてもらってる人に大変失礼やっちゅーねん・・・

191 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 00:06:33
>>190
赤の他人に宿題頼んでる時点でそいつがまともな神経だとは思わないことだ。


192 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 00:09:22
>>189
いや、184にとってはもっと難解な部分があるよ

193 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 00:11:46
>>192
ハードリアルタイムはちょっと・・・じゃないな。
awtしばりならTimer使えないからスレッド作らんといかんと。
こういう話か。



194 名前:184 []:2005/05/05(木) 00:11:48
後付してすいませんm(_)m
書き込みしてから友人にアドバイスをもらったもので・・・


195 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 00:13:43
>キーボードで時間が合わせられる、
ココの部分詳しく教えてください

なんかテキストボックス用意して値入れてOKボタン押せば
「アプレットの表示」が変わるとか言う事だよね

OSの時間かえるという意味じゃないよね
そういうことはおれ出来ないから

196 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 00:15:44
>>193
まぁ、Timer使うにしろスレッド使うにしろ悩みそうだよな

ちなみにJApplet使っていいの(Swingベース)
それならjavax.swing.Timerつかえるんだが・・・


197 名前:184 []:2005/05/05(木) 00:25:45
>>193
ハードリアルタイムでない場合は点数が下がってしまうらしいです^^;

>>195
それが僕も迷っているのですが、
こういう方法で変えなさいというのがありません。
多分そのやり方で問題ないと思います。

198 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 01:26:35
import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;
import javax.swing.*;
public class Clock extends JApplet {
private JComboBox bH = new JComboBox(),bM = new JComboBox(),bS = new JComboBox();
private JLabel oH = new JLabel("--"),oM = new JLabel("--"),oS = new JLabel("--");
private JButton r = new JButton("RESET");
private Calendar cal = Calendar.getInstance();
public void init() {
Container c = this.getContentPane();
JPanel t = new JPanel();
t.add(this.oH);
t.add(this.oM);
t.add(this.oS);
JPanel i = new JPanel();
for (int h = 0; h < 24; h++)
this.bH.addItem(String.valueOf(h));
for (int m = 0; m < 60; m++)
this.bM.addItem(String.valueOf(m));
for (int s = 0; s < 60; s++)
this.bS.addItem(String.valueOf(s));
i.add(this.bH);
i.add(this.bM);
i.add(this.bS);
i.add(this.r);
JPanel base=new JPanel();
base.add(t);
base.add(i);
c.add(base, BorderLayout.CENTER);

199 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 01:27:31
this.r.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Clock.this.cal.set(Calendar.HOUR_OF_DAY, Integer.parseInt((String) Clock.this.bH.getSelectedItem()));
Clock.this.cal.set(Calendar.MINUTE, Integer.parseInt((String) Clock.this.bM.getSelectedItem()));
Clock.this.cal.set(Calendar.SECOND, Integer.parseInt((String) Clock.this.bS.getSelectedItem()));
Clock.this.oH.setText(String.valueOf(Clock.this.cal.get(Calendar.HOUR_OF_DAY)));
Clock.this.oM.setText(String.valueOf(Clock.this.cal.get(Calendar.MINUTE)));
Clock.this.oS.setText(String.valueOf(Clock.this.cal.get(Calendar.SECOND)));
}
});
}
public void start() {
int delay = 1000;
ActionListener taskPerformer = new ActionListener() {
public void actionPerformed(ActionEvent e) {
Clock.this.oH.setText(String.valueOf(Clock.this.cal.get(Calendar.HOUR_OF_DAY)));
Clock.this.oM.setText(String.valueOf(Clock.this.cal.get(Calendar.MINUTE)));
Clock.this.oS.setText(String.valueOf(Clock.this.cal.get(Calendar.SECOND)));
Clock.this.cal.add(Calendar.SECOND, 1);
}
};
new Timer(delay, taskPerformer).start();
}
}
//以上
//一回で収めようと短く書いたが無理だった
//入力チェックメンドイのでコンボボックスにした


200 名前:184 []:2005/05/05(木) 02:18:27
>>198-199
動作確認しました、ありがとうございます。
早くこんなプログラムかけるようになりたいです。

201 名前:デフォルトの名無しさん[sage]:2005/05/05(木) 22:36:22
暇だ
なんか問題出してください
今なら解いて見たい気がする

202 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 11:19:17
じゃあ、上で解けて無いhit&blowをJSPでつくってください

203 名前:M.B. []:2005/05/06(金) 13:06:57
>>202
JSP ではなくてアプレットじゃないか?
JSP だと、クッキーかなんかでアクセスした人間を
区別してアクセスした人間ごとに別の解を生成する
必要がありそうに思うが。

204 名前:デフォルトの名無しさん []:2005/05/06(金) 13:15:39
http://i60-35-230-188.s02.a043.ap.plala.or.jp/
うぇwwwwwwwwwwっうぇおkwwwうはっwww
wうはっwww
wwwwwwwwwwwwwww

うぇwwwおkwwwおkwwwwwwwwwwwwwww

205 名前:デフォルトの名無しさん []:2005/05/06(金) 14:22:22
Y=X1^2-4X2+5X3

この2次方程式のX1,X2,X3にどのような値が入ってもyを自動的に算出するメソッドを考えてもらえませんか?



206 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 14:28:19
int f(int x1, int x2, int x3){
  return x1*x1+x2+x2+x2+x2+x3+x3+x3+x3+x3;
}

207 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 14:44:01
>>204
-4X2+5X3って-4x^2+5x^3ではないだろうか

208 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 14:46:59
勘違いしてたつってくる

209 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 15:33:26
>>206
どうでもいいがx2は足すんじゃなくて引くんだろ

210 名前:205 []:2005/05/06(金) 16:00:25
Y=X1^2-4X2+(1/3)X3

でした。

211 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 17:08:53
>>210 右のように使ってください。ちなみに動作確認はしてません。 Y = f(X1, X2, X3);
int f(int x1, int x2, int x3){
  return (int)(x1 * x1 - 4 * x2 + x3 / 3);
}

212 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 18:13:02
ホントに int でいいのかよ

213 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 23:13:50
>>212
んじゃlonglongで。

214 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 23:43:51
ホントに longlong でいいのかよ

215 名前:181 []:2005/05/06(金) 23:48:32
>>183さん、ありがとうございます!
無事、動きました。

216 名前:116 []:2005/05/06(金) 23:50:31
>>M.B.さん
参考になるものをつっくて頂きありがとうございます。
せっかく作ってもらったのですが、当方、初心者にてJSPに転用できませんでした。

みなさんお願いします。JSPでhit&blow作ってもらえないでしょうか?
途中までは作ってあるんですが、hitとblowを判定、表示が出来なくて
困ってます。本当にお願いします。
途中までのソースを晒しますので、それをもとにお願いします。



217 名前:デフォルトの名無しさん[sage]:2005/05/06(金) 23:54:21
>>216
>hitとblowを判定、表示が出来なくて
アプレット版にロジックがあるはずだが。


次スレはJavaの宿題に有料で答えます。だな。

218 名前:デフォルトの名無しさん []:2005/05/06(金) 23:54:52
http://FLA1Abd122.iba.mesh.ad.jp/
wwwwwwwwwwwwっうぇwwwっうぇおkwww
っwww
wwwwwwwwwwwwっwwwwww

wうはっwwwwwwっうぇwwwっ
wwwおkwww

219 名前:116 []:2005/05/07(土) 00:11:34
<%@ page contentType="text/html;charset=Shift_JIS" %>
<% int num1,num2,num3,num4,hit; //num4が正解の数字
boolean isRight;
Integer num4Int=(Integer)session.getAttribute("num4");
Boolean isRightBoo=(Boolean)session.getAttribute("isRight");
if(num4Int==null || isRightBoo==null){
isRight=true;}else{isRight=isRightBoo.booleanValue();}

if(isRight){
do{num1=(int)(Math.random()*10);}
while(num1==0);

do{num2=(int)(Math.random()*10);}
while(num2==num1);

do{num3=(int)(Math.random()*10);}
while(num3==num1 || num3==num2);
num4=num1*100+num2*10+num3;

isRight=false;
session.setAttribute("num4",new Integer(num4));
session.setAttribute("isRight",new Boolean(isRight));
}else{

num4=num4Int.intValue();}%>

220 名前:116 []:2005/05/07(土) 00:15:49
上の続きです
<html><head><title>hit&blow</title></head>
<body><h1>hit&blow</h1><br><%
int ans;
String s=request.getParameter("answer");
if(s!=null){try{
ans=Integer.parseInt(s);
if(num4==ans){isRight=true;
HttpSession hs = request.getSession(true);
out.println("<p>正解!</p>");
}else if(num4>ans&&ans>=1){
out.println("<p>もっと上の数字です</p>");
}else if(num4<ans&&ans<=999){
//解答が正解より大きい
out.println("<p>もっと下の数字です</p>");
}else{out.println("<p>3桁の数字を入力してください</p>");}
}catch(NumberFormatException e){
out.println("<p>数字は整数で入力してください</p>");
}}%><hr>
<%String NextPage="hitandblow.jsp";
NextPage=response.encodeURL(NextPage);
if(!isRight){%>
3桁の数字を当ててください。<br>
(3桁の中に同じ数字はありません。)<br>
数字を入力してください。<br>
<form action="<%=NextPage%>">
<input type="text"name="answer">
<input type="submit">
</form><%}else{%>
<a href="<%=NextPage%>">もう一度する</a>
<%}%></body></html>

221 名前:sage []:2005/05/07(土) 03:39:59
アルゴリズムの質問をさせてください。
傾いている長方形があります。
/\
/  \
/   /
\  / ・点A
\/
4頂点にはそれぞれ(X,Y)の値があります。
この長方形内に点Aがあるかどうかを判定させるにはどうすればよいでしょうか?
・・・ちなみに作成しているのはシューティングの当たり判定です。。。
どうか、よろしくお願いします。

222 名前:221[sage]:2005/05/07(土) 03:43:04
↑いろいろ失敗してしまいました。。。
  /\
 /  \
/   /
\  / ・点A
 \/
です。

223 名前:デフォルトの名無しさん []:2005/05/07(土) 04:40:00
四角形を三角形に分割して判定

(面状にあるかどうかを判定したい点をGとする)
三角形ABCがあり、辺ABの法線をN(AB)とすると、
N(AB)と点Gとの内積の符号が、N(AB)と点Cとの
内積の符号に等しければ点Gは辺ABの内側にある。
まとめると、(N(AB)・G)(N(AB)・C)>=0⇒点GはABの内側。

点Gが辺AB, BC, CA の内側にある(すなわち三角形の面上にある)
⇔(N(AB)・G)(N(AB)・C)>=0 かつ (N(BC)・G)(N(BC)・A)>=0 かつ (N(CA)・G)(N(CA)・B)>=0

これを使って判定。

224 名前:デフォルトの名無しさん[sage]:2005/05/07(土) 12:27:25
>>233
スゲー!頭良い!

225 名前:デフォルトの名無しさん[sage]:2005/05/07(土) 15:37:48
>>223
すばらしい解だ
俺には到底導き出せないが
それは理論であって
それを、どのようにPGで組むかがアルゴリズムなのだが・・・

226 名前:デフォルトの名無しさん[sage]:2005/05/07(土) 15:40:26
>>221

GeneralPath 使って領域を定義してそいつに判定させる方法もあるよ。

領域の作成
java.awt.geom.GeneralPath w = new java.awt.geom.GeneralPath();
w.moveTo( x0, y0 );
w.lineTo( x1, y1 );
w.lineTo( x2, y2 );
w.lineTo( x3, y3 );
w.closePath();

判定するには
w.contains( x, y );


227 名前:デフォルトの名無しさん []:2005/05/08(日) 00:08:51
>>223
流し読みして即レス。
普通こういう場合って外積使わね?

228 名前:デフォルトの名無しさん[javaosietekudasai@hotmail.co.jp]:2005/05/08(日) 00:54:44
javaでお願いしたい課題があるのですが、優しい方メールください。

229 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:02:33
メールで個人的なやりとりなんてせんで、ネット上から参考になる
サイトを探すとか、ちょっとした質問はここで聞くとか

230 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:09:51
質問です。おねがいします。
100/8 の 商を 変数syo に
      余りを 変数amariに

100/8=12 あまり 4 と表示させるにはどうすればいいのでしょうか?

余りの入力の仕方がよくわからないのですが、
おねがいします

231 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:14:48
>>230
100 % 8

232 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:16:29
>>230 ファイル名:amari_sho.java

class amari_sho {
public static void main(String args[]) {
int amari;
int sho;
sho = 100/8;
amari = 100%8;
System.out.println("100/8=" + sho + " 余り " + amari);
}
}


233 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:18:26
>>231
>>232
わかりました!!ありがとうございます!

234 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:30:14
>>232はint型にそのまま100/8を入れているから、厳密にはそれだと
他の数値を入れた場合不備が出る可能性もあるから
例えばマイナスの演算とか、その辺は注意しといてね

235 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:38:12
すいません度々質問おねがいします。

割り算の時に小数点まで表示させるにはどうすればいいのでしょうか?

たとえば
5%3=1.66・・・・・・・・6のようにです

236 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:40:01
%は、余りだが・・・
細かい突っ込みは置いといて

double d=(double)5/(double)3;
にしとけばイイ

237 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:40:27
>>227
外積でどうやるの?

238 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:41:16
>>237
もうその人は 寝ました

239 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 01:58:38
>>236
それをやってみたのですが1.66・・・67となるのですが、いいのでしょうか?

240 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 02:00:55
>>238
トンカチで叩いてきて

241 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 02:09:20
>>239
桁を無限にってわけにもいかんし、性質上最後の桁が四捨五入されているからでしょ
そういうもんだと割り切って問題ないならそれで行くべし

242 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 02:10:54
>>241
>四捨五入されているからでしょ

丸め誤差だと思うが。。。

243 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 02:19:19
>>241
ふむふむ。ありがとうございました!

244 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 02:26:10
>>242
ようわからんけど、四捨五入じゃないみたいだね
ためしに7/3でやったら 2.333・・・5 だったっけ

245 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 02:31:34
>>244
整数は2のn乗の組み合わせで表現できるのと同様に、浮動小数点数では2の-n乗で数字を表現する。
しかしながら、これには問題があってどうあがいても表現できない数字がある。

0.9 ≒ 0.5 + 0.25 + 0.125 + ...




246 名前:デフォルトの名無しさん []:2005/05/08(日) 11:39:27
アプレットで表示されるカラーイメージのRとGを入れ替えて、カラーイメージを表示させるには
どうしたらよいですか?

247 名前:デフォルトの名無しさん []:2005/05/08(日) 18:27:54
第一引数で指定したディレクトリの配下のファイルをファイルの配列で返すプログラムを教えてください。

248 名前:デフォルトの名無しさん[sage]:2005/05/08(日) 19:17:57
>>246
そのままの方法取るしかないと思う
RGB要素取得するメソッドあったはずなので
取り出しておいてRとG入替えて再セットすればいい

>>247
APIにそのままのメソッド載ってるよ

249 名前:デフォルトの名無しさん []:2005/05/11(水) 04:00:22
問題はまず画像を取り込んで以下の作業をした画像を表示するというものです
1.垂直方向に向きを変える
2.水平方向に向きを変える
3.時計回りに90度、反時計回りに90度回転させる

1と2はできたのですが3がどうしてもうまく出来ません。
たぶん配列の操作がうまく出来ていないからだと思います。
分かる方は教えてください。


250 名前:デフォルトの名無しさん[sage]:2005/05/11(水) 05:02:05
>>249 参考にしてみて
public class
Q51_249 {
static void
Show( int[][] p ) {
for ( int y = 0; y < p.length; y++ ) {
int[] w = p[ y ];
for ( int x = 0; x < w.length; x++ ) System.out.print( "\t" + w[ x ] );
System.out.println();
}
}
public static void
main( String[] p ) {
int wSH = 2;
int wSW = 3;
int[] wS[] = { { 11, 12, 13 }, { 21, 22, 23 } };
Show( wS );
int[] wD[] = { { 0, 0 }, { 0, 0 }, { 0, 0 } };
for ( int y = 0; y < wSH; y++ ) {
for ( int x = 0; x < wSW; x++ ) wD[ x ][ - y + wSH - 1 ] = wS[ y ][ x ];
}
Show( wD );
}
}



251 名前:デフォルトの名無しさん []:2005/05/12(木) 11:44:20
ttp://lecture.ecc.u-tokyo.ac.jp/~yamaguch/cp2-11/kadai2.html
一晩考えたのですがお手上げです。どうかお助けください。

252 名前:デフォルトの名無しさん[sage]:2005/05/12(木) 19:09:18
>>251
こんな親切な出題はじめてみた。もう一晩考えなさい。

253 名前:名前は開発中のものです。[sage]:2005/05/13(金) 18:06:45
クラス変数で
int randtbl[] = new int[100];

で、プログラム中に
int i=0;
while(true)
{
randtbl[i] = (int)(Math.random()*100);
i++;
if(i>100)break;
}
があるとプログラムが停止しちゃうんだけどどうして?
Math.random()のところで停止してるようなんだけど、
いまいちわからないんです。

254 名前:デフォルトの名無しさん[sage]:2005/05/13(金) 18:43:33
>>253
配列の長さと添え字についてよく考えてみろ

255 名前:デフォルトの名無しさん[sage]:2005/05/13(金) 18:53:07
>>253
どこを突っ込んだらいいのか悩むが

> if(i>100)break;
i == 100 のときどうなるか考えてみ。

ていうか、for 使わないのは何かわけでもあるんかいな?

256 名前:デフォルトの名無しさん []:2005/05/14(土) 16:33:43
すみません、どなたか教えてください。
>>183さんが作ってくれたプログラムに、最後の仕様変更が来ました・・・。

仕様変更
コマンドはボタンとしてアプレット上に表示されている。
以下のように必要なパラメータの入力とマウスクリックによる長方形の
指定を行ってからコマンドを選択する。
・create
-幅、高さ、x座標、y座標、色をテキストボックスに入力する。
・move
-マウスクリックで対象の長方形を指定する。
-x方向の移動距離をテキストボックスに入力する。
-y方向の移動距離をテキストボックスに入力する。
・expand
-マウスクリックで対象の長方形を指定する。
-x方向の倍率をテキストボックスに入力する。
-y方向の倍率をテキストボックスに入力する。
・shrink
-マウスクリックで対象の長方形を指定する。
-x方向の倍率をテキストボックスに入力する。
-y方向の倍率をテキストボックスに入力する。
・delete
-マウスクリックで対象の長方形を指定する。
・deleteAll
・intersect
-マウスクリックで対象の長方形を2つ指定する。
以下のコマンドは実装しない。
・displayBoard
・save
・exit
どうか、お願いいたします。

257 名前:デフォルトの名無しさん[sage]:2005/05/14(土) 16:49:29
>>256
学校辞めればいいだろ。金の無駄だ。

258 名前:デフォルトの名無しさん []:2005/05/14(土) 16:52:23
点数の分布をヒストグラムとして表示するプログラムを作りなさい。
0〜100の整数をキーボードから繰り返し読み込み(-1が入力されたら
終わり),0点台(0〜9点),10点台(10〜19点),...,90点台, 100点の
人がそれぞれ何人いるかをヒストグラムで表示しなさい。

って問題が分からないとですorg
配列、if、for文でできそうなのですが・・・。


259 名前:デフォルトの名無しさん []:2005/05/14(土) 17:31:36
配列をlistで返したいのですがどうやればいいのですか?

260 名前:デフォルトの名無しさん []:2005/05/14(土) 17:59:11
>>258 オブジェクト指向でないバージョン
import java.io.*;
public class Q258 {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int[] histgram = new int[11];

try {
String line = null;
while ((line = in.readLine()) != null) {
try {
int value = Integer.parseInt(line);
if (value == -1) {
break;
}
if (value < 0 || 100 < value) {
throw new NumberFormatException();
}
histgram[(value/10)]++;
} catch (NumberFormatException e) {
System.out.println("0〜100の整数値を入れろゴラ");
}
}
} finally {
in.close();
}

for (int i = 0; i < histgram.length; i++) {
System.out.println((i*10) + "点台\t" + histgram[i]);
}
}
}

261 名前:デフォルトの名無しさん []:2005/05/14(土) 18:05:05
>>259
オブジェクトの配列をList化するならArraysクラスのasListメソッドを利用する。
primitive型の配列の各要素をList化したいのであれば、
標準のAPIにはないので自作するか、
Jakarta Commons LangのArrayUtilsクラスを利用する。

使用しているJDKが5.0以上であれば、AutoBoxingが実装されているので
Primitive型の配列でもArrays.asListメソッドで変換できる。

262 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/14(土) 22:18:53
javaでタートルグラフィックスのアプレットを作っています
http://www.geocities.jp/htbgr132/osiete/sitsumonx.zip
正方形を画面上に表示させるアプレットを作っています。

 上のファイルにはTurtle.javaとTurtleapplet.javaの2つのク
ラスファイルがあります。
Turtleappret.javaを2sdk1.4.2_08でコンパイルするとimport
Turtleの部分で「"."がありません」というエラーメッセージ
が表示されます。これを解決するのはどうしたらよいので
しょうか?

できればTurtleappretクラスにTurtleクラスをimportするよ
うにして、正方形が描画出来る状態までを教えてくれると
助かります。

正方形ではないんですが参考になりそうな場所をいいます
と、ttp://homepage1.nifty.com/mstak/Program/applet.html
等があります。


263 名前:デフォルトの名無しさん []:2005/05/15(日) 02:24:04
>>262
TurtleappletクラスとTurtleクラスは同一パッケージ内なのでimportする必要なし。

これってキャベツの絵が描いてある(お世辞にも良書とは言えない)本のサンプルじゃないのけ?


264 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/15(日) 08:38:22

>>263
 importする必要なしというのはTurtleappletクラスにおいて「import Turtle」
を消しても大丈夫と言うことでしょうか?そうだと思ってこれを消してコンパイルしたところいくつかエラーが起こ
りました。後、言い忘れましたが課題が提示されているページはttp://www.ed.noda.tus.ac.jp/j-takeda/java-2005-2.html
です。


>これってキャベツの絵が描いてある(お世辞にも良書とは言えない)本の
サンプルじゃないのけ?

 そうなんですか?知りませんでした。有難う御座います。


265 名前:デフォルトの名無しさん []:2005/05/15(日) 11:09:19
>>260
ありがとうございます!!
ただ、俺のレベルで260さんの文を書くとバレると思うので、
try 、catch、finally(まだ習っていないので)抜きでオブジェクト指向
バージョンもお願いできますか?それとどのような勉強をすれば260さんの
ようにプログラミングできるようになるのかも教えて下さい。
この参考書使えばいいとかでも構わないので。

266 名前:デフォルトの名無しさん []:2005/05/15(日) 11:16:55
宿題スレで聞けと言われたのでここで質問させてください。
今配列について勉強してますが、ある問題が分かりません。
「一連の整数(1〜100まで)を5つ入力し,その中の最大値と最小値を表示する
プログラムを作る.」
これってif文やfor文もつかうんですよね?私が考えたのは
public class hairetu {

public static void main(String[] args) {
double[]x = new double[5];
最初の値と次の値を比較(小さいほう又は大きいほうを覚える)
     その値と次の値を比較 (``)
     

}
}
ってかんじで、細かい文の構成が浮かびませんor2
できる人にとっては簡単かもしれませんがよかったら教えてください。
それとKeyboardValueをインストールしたのですが、使い方が分かりません。
classを作るのですか?


267 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/15(日) 11:52:39
>>266
最大値は
ttp://www.wakhok.ac.jp/~tatsuo/prog2004/15shuu/max.html
が最も参考になると思います。逆に最小値を計算する部分は
double min=0;

/*最小値を数える部分*/

min=a[0];
for(int i=1<i<a.length;i++)
{
if(min<a[i])
min=a[i];
}
間違っているかも知れませんが、最大値の逆にやれば良いと思いま
す。KeyboardValueについては分かりません。すみません。

268 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 13:19:44
>>262 下のURLに傲慢な添削と解答例を載せました。参考程度にどうぞ。
ttp://www.uplo.net/dl.html
ファイル:244
パスワード:answer

ちなみに、リコンパイルするときはコマンドプロンプトで
..\解答例>javac main\Turtleapplet.java
と入力してください。

269 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/15(日) 13:42:48
>>268 ありがとうございます。添削までしてくれて本当に助かります。
是非とも復習と今後の勉強の参考にさせて頂きます。又この課題や
別の課題でなんかあったら質問するので宜しくお願いします。

270 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 14:14:50
課題が出ましたが、ちょっと解けそうにありません。
どなたかよろしくお願いします。
[MyArray.java:昇順配列の定義]
package binarySearch;
// 配列と格納されているデータの数を記憶するクラス
public class MyArray {
int[] array = null;
int count;
// @param n 格納するデータの数の上限。1以上であること
public MyArray( int n ) {
array = new int[n];
count = 0;
}


271 名前:270(続き)[sage]:2005/05/15(日) 14:15:33
/ 配列内に昇順にデータを格納するメソッド
@param x 新たに格納する整数値/
public void ascendingInsert( int x ) {
if( count == array.length-1) {
System.out.println("これ以上データを挿入できません");
return;
}
array[count] = x;
if( count > 0 ) {
for(int i=0; i<count; i++) {
if( array[i] == array[count] ) {
count--;
break;
} else if( array[i] > array[count] ) {
int work = array[i];
array[i] = array[count];
array[count] = work;
}
}
}
count++;
}




272 名前:270(続き)[sage]:2005/05/15(日) 14:16:42
/2分探索メソッド @param x 探索する整数
@return 配列 array 内の値 x の位置を返す。存在しない場合は -1 を返す/
public int bSearch( int x ) {
int first = 0;
int last = count-1;
while( first <= last ) {
int m = (first+last)/2;
System.out.println( x+"と"+array[m]+"を比較" );
if( array[m] == x ) {
return m;
} else if( array[m] < x ) {
first = m+1;
} else {
last = m-1;
}
}
return -1;
}
//配列内のデータを標準出力に出力
public void show() {
for(int i=0; i<count; i++) {
System.out.print (array[i]+" ");
}
System.out.println();
}
}

273 名前:270(続き)[sage]:2005/05/15(日) 14:19:19
以上のプログラムに、データ削除メソッドを追加せよ、というものです。
作成手順が挙げられていたので記しておきます。
・x を MyArray.bSearch( x ) を用いて探索し、存在しない場合は削除できないことをメッセージで返し終了
・x の後ろにも他のデータがあるなら、後ろのデータをすべて1つずつ前に詰める( x が最後尾ならこの操作はいらない)。
 このとき、x は1つ後ろのデータによって重ね書きされて消える
・データの個数 count を1つ減らす
です。
お願いします。

274 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 14:57:25
>>266
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24110
↑のソースコードのsort(int[] intArray) メソッドを↓のリンク先のお好きなソートメソッドで上書きすると良いのではないでしょうか。
ttp://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/

275 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 15:13:29
>>270
メソッドdelete()をクラスMyArrayに追加してください。
/**
* 配列から指定された値を削除
* @param x 削除する値
*/
public void delete( int x ) {
// 探索して配列の何番目にあるかを取得。
int pos = bSearch( x );
// 配列内に消去する値が存在しない場合
if( pos == -1 ) {
System.out.println( "値 " + x + " は配列内に存在しないので削除できません。" );
return;
// 配列内に消去する値が存在する場合
} else {
for( int i=pos; i<count; i++ ) {
array[i] = array[i+1];
}
count--;
System.out.println( "配列から値 " + x + " を削除しました。" );
}
}

276 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 16:37:44
274さん、275さんありがとうございます!
自宅に帰ったらやってみます。

277 名前:デフォルトの名無しさん []:2005/05/15(日) 17:38:57
>>267,274さん
ありがとうございます!!早速やってみます。

278 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 17:42:00
報告は試してからにしろよボケども

279 名前:デフォルトの名無しさん []:2005/05/15(日) 18:05:45
>>260
コンパイルには成功したのですが、実行結果が表示されません。
Enterキーを押したら
「0〜100の整数値を入れろゴラ」
とだけでました。試しに整数とか適当にいれましたが何も起こりません。
どうすれば結果が出るのですか?

280 名前:デフォルトの名無しさん []:2005/05/15(日) 18:23:27
お、いるな。自分よりレベルが低い人を見るとケチつけずにはいられないケツの穴の小さい香具師w

281 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 18:23:47
>>279
それだと、永久にwhileループおわらない
問題見ていないけど
"Q"か"q"押せばおわるように
whileループの先頭に↓いれてみれば?

if(line.equalsIgnoreCase("q")){
break;
}

282 名前:260 []:2005/05/15(日) 18:44:00
>>279
>>281

問題文に-1を入力したら終了って書いてあるんだが・・
出題者って問題すら読んでないのか。

283 名前:260 []:2005/05/15(日) 18:48:17
追記すると、
Readerがnullを返す条件はEOFを入力された場合。
EOFはWindowsはCtrl+Z
Linuxの場合はCTRL+D

284 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 18:51:02
>>260
ところで
in.close();は必要なのか?

285 名前:274[sage]:2005/05/15(日) 18:51:30
>>266
すみません、要求された用件を満たしていませんでした。ソースを直しておきましたので下のものを参考にして下さい。
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24113

最小値と最大値を求めるだけでしたら、上の25-27行目を消して、以下のようなコードを差し込んでも大丈夫です。
//とても乱暴なコードここから
int max = Math.max(Math.max(Math.max(Math.max(intArray[0], intArray[1]), intArray[2]), intArray[3]), intArray[4]);
int min = Math.min(Math.min(Math.min(Math.min(intArray[0], intArray[1]), intArray[2]), intArray[3]), intArray[4]);
System.out.println("最小値: " + min);
System.out.println("最大値: " + max);
//ここまで

286 名前:260 []:2005/05/15(日) 19:02:53
>>265
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24117
なんで学生って「まだ習っていないこと」は使用禁止だと思うの?



サザエさん家は昼間っからビールか・・・

287 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 19:12:05
標準入出力に対してはcloseしてはいけないけど、
ラッパークラスに対してはcloseしないとまずいんじゃないの?
ストリームをインスタンス化してるわけだし。


288 名前:デフォルトの名無しさん []:2005/05/15(日) 19:13:44
オセロゲームを作っています。
ポインタがマス目の上にのっかったら
四角い枠がでるようにしたいのですが
うまい方法が思いつきません。
マスからポインタをはずすと枠も消えるようにしたいです。
だれかご教授ねがいますm(_)m

289 名前:デフォルトの名無しさん []:2005/05/15(日) 19:17:52
>>287
なるほどね
でも、ラッパークラスも中で子のストリームを
public void close() {
child.close();
}

していると思うんだ


290 名前:260[sage]:2005/05/15(日) 19:42:30
>>289
closeしちゃまずいですね(^-^; ごめんなさい。
ラッパークラスのcloseメソッドはコンストラクタで指定したストリームをcloseする実装になっているので、
System.inも閉じちゃうようです。

orz

291 名前:デフォルトの名無しさん[sage]:2005/05/15(日) 20:48:59
>>288
それ宿題なのか?という突っ込みはさておき、
MouseMotionListenerのmouseMoved()でマウス座標からどのマスにポインタがあるかを求めて、
それが前回と違っていたらそのマスに枠を描画するようにフラグ立てて再描画すればいい。


292 名前:288 []:2005/05/15(日) 21:45:24
>>291さん
あほみたいにmouseEnteredでやろうとしてました・・・
どーもです

293 名前:288 []:2005/05/15(日) 21:48:06
ちなみに自由課題の宿題でした。
今はコンピュータ対戦機能の実装でつまってます。

294 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/15(日) 22:37:53

>>268さんに書いててもらったプログラムは無事にエラー無く動きました。
色々な形を作ってコンパイルしても問題無しです。本当に有難う御座いま
す。又>>1さんのルールをしっかり読んでいなくてすみません。今度から気
をつけます。

295 名前:Now_loading...774KB[sage]:2005/05/16(月) 00:58:54
1.int型の配列data「500×300」がある。
このデータの配列を逆(上下・左右)にするプログラムをclass arrayの下に作り、
class ex1(メイン)から起動するようなプログラムを作れ。

2.1で反転したdataに対して、以下の演算を施した結果の配列EDGE[500×300]を求めて、
data+EDGE(加算)を行った結果をdata配列に入れるプログラムを作れ。
      2 2
data[i][j]= Σ  Σdata[i+k][j+l]*W[R][l]
      k=0 l=0
考え方はW[3×3]のラプラシアンフィルターを使う。

よろしくお願いします。

296 名前:258,266 []:2005/05/16(月) 02:04:02
>>281,282,274
みなさんありがとうございます。
おかげさまで無事できました。感謝してます☆

297 名前:デフォルトの名無しさん []:2005/05/16(月) 02:05:37
コンパイルするときに「')'がありません」というエラーメッセージが出るのですが、
()の数は合っています・・・。
どのような原因が考えられますか?

298 名前:291[sage]:2005/05/16(月) 04:35:09
>>293
なるほど自由課題ね。
コンピュータ対戦だけど、どのレベルで作るつもり?

簡単な作りで良ければ、打てるマスをリストアップし、それぞれのマスに打った場合の石の数の数の変化を
数値にして評価する評価関数に渡して結果の最も大きいマスに打たせればおけ。
とりあえず全く先を考えずにその手番に取れる石の数が最も大きいマスに打つ1手読みCPUでも作って動かしてみるといい。
そのあとはその評価をスタックさせて、n手読みの評価を行って比較するとか、
評価関数を石の数だけでなく、それぞれの石の価値を考慮した物にするとか・・・

スタック数が多くなると調べるループの数が膨大になるので、枝切りを考える必要がある。
この辺の話はググると無数に出てくるので探してみ。

299 名前:288 []:2005/05/16(月) 06:47:27
>>291さん
まったくその通りなんですが、
ためしにググって出てきたソースを自分のに絡めてみたんですがうまく実行できず・・・
とりあえずはどこでもいいから置くような、園児並みの知能からはじめようかと思ってます。
最悪、人対人のゲームになりますが・・・藁
一日あるのでやってみようかと思います。

300 名前:デフォルトの名無しさん []:2005/05/16(月) 17:07:10
>>256の問題なんですが、教わった内容より遥かに難しくてかなり参っています。
どなたか是非教えて頂けませんでしょうかorz

301 名前:デフォルトの名無しさん[sage]:2005/05/16(月) 20:31:00
何方か、定期的にあるメソッドを呼び出す、又はそれを解除する、といった処理方法を教えて頂けないでしょうか?
例えば、5000ミリ秒毎にReadTbl(DBのテーブルを検索してA値を取得する既存のもの)
という名前のメソッドを呼び出し、Aの値を見て5000ミリ秒毎の監視を続けるor解除を決定する、といった感じです。
よろしくお願いします。

302 名前:デフォルトの名無しさん[sage]:2005/05/16(月) 20:46:46
いつからここは質問スレッドになったんだ

303 名前:デフォルトの名無しさん []:2005/05/16(月) 21:00:13
ttp://hp.vector.co.jp/authors/VA012735/
のサイトの古いほうの花火みたいなんをクリックした地点で爆発させたいのだが、どうすればいいでしょうか?
ソースみてもどこをコピればいいかわかりません。今クリックしたとこに絵なら(四角とか)ならだせるのは作れたのですが。。。花火そのもののグラフィックがどのようにすればいいかわかりません。
自由課題です。
教えてください。

304 名前:デフォルトの名無しさん []:2005/05/16(月) 21:30:07
>>301
一度解除したらそれ以降はそのメソッドを呼び出さなくても良いのであれば、次のでいいのでは?

while(true){
 Object A = ReadTbl();
 //Aのチェック後、
 //監視を続ける場合
 Thread.sleep(5000);
 //解除する場合
 break;
}

305 名前:デフォルトの名無しさん[sage]:2005/05/16(月) 21:35:21
>>303
見た感じ、パーティクルで処理してるっぽいね。
「パーティクル」でぐぐればサンプル沢山出てきそうだ。

306 名前:デフォルトの名無しさん []:2005/05/16(月) 22:04:46
パーティクルむづいです。あきらめます。。。。
ありがとうございました。

307 名前:デフォルトの名無しさん[sage]:2005/05/16(月) 22:56:45
質問スレッドで無視された・・・申し訳ないけどこっちにマルチさせてもらいますつД`)

Swing jtableの中にボタンを配置する方法がわかりません。
googleで検索したら、
tablemodelを実装した別クラスを用意しなければならないって書いてるけど、上手くできません。
誰かサンプルのコードを書いてくれませんか。お願いします。

308 名前:デフォルトの名無しさん []:2005/05/16(月) 23:01:50
>>307
それ、非常に難しかったのを覚えています
つーか、結局それできなかったし俺
SunのCoreJava2っていうでかい本があって
それに載っているのはわかっているけど・・・
Amazonで「Core Java」で検索してください いくつか種類あるけど 赤いやつです
参考にしてください
今となっては内容古いけど、かなりいい情報がある

309 名前:307[sage]:2005/05/16(月) 23:10:29
>>308
情報ありがとう。でも、本を買ってたら間に合わないんです( ´Д`)

310 名前:デフォルトの名無しさん []:2005/05/16(月) 23:31:23
>>309
しょうがない、俺はまったく理解できていないけど
多分ここだろうというソースを載せる

JButton b=new JButton("OK");
TableColumnModel tcm=table.getColumnModel();
TableColumn tc=tcm.getColumn(3);//3番目のカラム
tc.setCellEditor(new DefaultCellEditor(b));

てな感じになってた

311 名前:デフォルトの名無しさん []:2005/05/16(月) 23:34:39
アプレットでButtonを押してTextFieldに入力した文字を比較して
同じならtrue、間違っていたらfalseを表示させたいんですが
コンパイルは通るんですけどButtonを押すとNullPointerが出てきます。
違う話題中すみませんが教えていだけないでしょうか。

import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class Game extends Applet implements ActionListener{
Button bt;
TextField tf1,tf2;
Graphics g;
String str;
public void init(){
setBackground(Color.yellow);

tf1 = new TextField(apple,12);
tf2 = new TextField(12);
bt = new Button("判定");
add(bt);
add(tf1);
add(tf2);
bt.addActionListener(this);
}




312 名前:デフォルトの名無しさん[sage]:2005/05/16(月) 23:34:59
public void actionPerformed(ActionEvent ae){
String b = ((TextField)tf2).getText();//文字を読み込む
if(str.equalsIgnoreCase(b))
{
g.setColor(Color.blue);
g.drawString("true",100,150);
}else{
g.setColor(Color.red);
g.drawString("false",100,150);
}
}
}

313 名前:デフォルトの名無しさん []:2005/05/16(月) 23:37:12
public void actionPerformed(ActionEvent ae){
String a = ((TextField)tf1).getText(); //←間違ってました訂正です
String b = ((TextField)tf2).getText();//文字を読み込む
if(a..equalsIgnoreCase(b)) //←間違ってました訂正です
{
g.setColor(Color.blue);
g.drawString("true",100,150);
}else{
g.setColor(Color.red);
g.drawString("false",100,150);
}
}
}

314 名前:311 []:2005/05/16(月) 23:38:57
>>313の4行目「.」が一つ多いです…orz

315 名前:デフォルトの名無しさん []:2005/05/16(月) 23:39:15
>>312
>if(str.equalsIgnoreCase(b))

String a = ((TextField)tf1).getText();//文字を読み込む ←これがない?
String b = ((TextField)tf2).getText();//文字を読み込む
if(a.equalsIgnoreCase(b)) ←strじゃなくてaじゃない?

316 名前:デフォルトの名無しさん[sage]:2005/05/16(月) 23:40:30
>>315
その通りです。お手数掛けます…orz

317 名前:デフォルトの名無しさん []:2005/05/16(月) 23:41:40
あーgがNULLだとおもう

318 名前:デフォルトの名無しさん []:2005/05/16(月) 23:45:07
つうか g引っ張ってくる対象 つまり 絵を書く対象が そもそもこの中にないよ
CanvasとかJPanel画面に貼り付けないと

319 名前:デフォルトの名無しさん []:2005/05/16(月) 23:51:09
>>318
Canvasですか。分かりました勉強してきます。
本当ありがとうございました。

320 名前:295[sage]:2005/05/16(月) 23:52:04
1を自分なりに途中までやったんですが、さっぱりわかりません。

class ex1{
public static void main (stcing[],arg){
arry f = new array();
f=process();
}
}
class array{
int data[500][300];
int i,j,temp;
int array(int[][],data){
for(i = 1; i <= 500; i++){
for(j = 1; j <= 300; j++){
temp = data[i][j];
data[i][j] = data[500-i][300-j];
data[500-i][300-j] = temp;
}
}
retrun array;
}
}
void process(){
array(data);
sxstem.out.print|n("逆配列="+data);
}

2のほうはマジでお手上げなのでお願いします。

321 名前:295[sage]:2005/05/16(月) 23:53:08
>>320
3行目のarryはarrayの間違え。

322 名前:デフォルトの名無しさん []:2005/05/16(月) 23:55:04
>>319
すまんそれAppletだったな・・・
public void paint(Graphics g) {
g.drawString("false",100,150);
}
でいける

323 名前:311 []:2005/05/17(火) 00:13:51
>>322
その文をどこにどのように入れるといいんですか?


324 名前:311 []:2005/05/17(火) 00:16:11
すいません自己解決しました。
今日は本当にありがとうございました。

325 名前:デフォルトの名無しさん []:2005/05/17(火) 00:25:01
>>311
あんまAppletくわしくないけど
String result="";
public void paint(Graphics g) {
g.drawString(result, 100, 150);
}
public void actionPerformed(ActionEvent ae) {
Graphics g = this.getGraphics();
String a = ((TextField) tf1).getText();
String b = ((TextField) tf2).getText();
if (a.equalsIgnoreCase(b)) {
g.setColor(Color.blue);
result = "true";
this.update(g);
}
else {
g.setColor(Color.red);
result = "false";
this.update(g);
}
g.dispose();
}

326 名前:311 []:2005/05/17(火) 00:55:03
>>325
すいませんわざわざありがとうございました。

327 名前:デフォルトの名無しさん []:2005/05/17(火) 01:33:41
ユーザーよりHTMLファイル名を入力させて、その中からイタリック体と太字を検索するアプリケーションを作成してください!


328 名前:デフォルトの名無しさん []:2005/05/17(火) 01:59:38
配列のHighArrayで配列の中で一番大きな値または空の場合は−1をかえすget(Max)
を追加する問題を教えてください。以下ソースです。
class HighArray
{
private double[] a;
private int nElems;
public HighArray(int max)
{
a = new double[max];
nElems=0;
}
public boolean find(double searchKey)
{
int j;
for(j=0;j<nElems;j++)
if(a[j]==searchKey)
break;
if(j==nElems)
return false;
else
return true;
}
public void insert(double value)
{
a[nElems] = value;
nElems++;
}


329 名前:デフォルトの名無しさん []:2005/05/17(火) 02:02:24
>>328 続きです
public boolean delete(double value) {
int j;
for(j=0;j<nElems;j++)
if(value==a[j])
break;
if(j==nElems)
return false;
else {
for(int k=j;k<nElems;k++)
a[k]=a[k+1];
nElems--;
return true; } }
public void display() {
for(int j=0; j<nElems; j++)
System.out.print(a[j]+" ");
System.out.println(""); }}
class HighArrayApp{
public static void main(String[] args){
int maxSize=100;
HighArray arr;
arr = new HighArray(maxSize);
arr.insert(77);arr.insert(99);arr.insert(44);arr.insert(55);arr.insert(22);arr.insert(88);arr.insert(11);arr.insert(00);arr.insert(66);
arr.insert(33);arr.display();int searchKey=35;
if(arr.find(searchKey))
System.out.println("Found"+searchKey);
else
System.out.println("Can't find" + searchKey);
arr.delete(00);arr.delete(55);arr.delete(99);arr.display();
} }



330 名前:デフォルトの名無しさん []:2005/05/17(火) 04:38:06
もしよろしければ最大値をメソッドを返すと同時に削除するような
プログラムもお願いします


331 名前:301[sage]:2005/05/17(火) 10:35:10
>>304
ありがとうございます。何とかいけそうです。どもでしたm(_ _)m

332 名前:デフォルトの名無しさん[sage]:2005/05/17(火) 12:25:43
>>328 HighArrayに以下のメソッドを追加してください。max(true); とすると、最大値を返してその最大値を消します。

public double getMax(boolean delete) {
double max;
int maxElement;
if(nElems <= 0)
max = -1;
else if(nElems == 1)
max = a[0];
else
max = Math.max(a[0], a[1]);
if(nElems > 2) {
for(int i = 1; i < nElems - 1; i++) {
max = Math.max(max, a[i]);
}
}
if(delete == true && max != -1)
delete(max);
return max;
}

public double getMax() {
return getMax(false);
}

333 名前:デフォルトの名無しさん []:2005/05/17(火) 19:15:27
>>332
ありがとうございました


334 名前:デフォルトの名無しさん[sage]:2005/05/17(火) 20:44:22
問題
整数を入れて菱形を表示させるプログラムを作りなさい
for文を用いること

実行例
整数(奇数)を入れてください:3
-*-
***
-*-

整数(奇数)を入れてください:5
--*--
-***-
*****
-***-
--*--

整数(奇数)を入れてください:7
---*---
--***--
-*****-
*******
-*****-
--***--
---*---


お願いします

335 名前:デフォルトの名無しさん []:2005/05/17(火) 23:36:38
どなたか>>256をお願いします・・・。
もうここだけが頼りなのです・・・。
これが最後なのでぜひともご慈悲を・・・。

336 名前:デフォルトの名無しさん[sage]:2005/05/18(水) 00:06:59
>>256
大してデバッグと整形をしてませんが、なんだか急いでるようなのであげておきます。
操作はほぼ従来どおり。focusOff ボタンで全ての長方形の選択を解除します。
色は英単語で入力してください。
ex)"20 20 100 100 red"と入力してcreate ボタンを押すなど。

ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24181

#しかし毎回微妙に使い勝手の悪い設計を要求するのはいかがなものか。

337 名前:336[sage]:2005/05/18(水) 00:23:25
>>336 の作成に当たって >>183 さんのソースを利用させていただきました。
遅ればせながらお礼申し上げます。ありがとうございました。

338 名前:デフォルトの名無しさん []:2005/05/18(水) 00:46:22
327と重複しますが、宜しくお願いします。
ユーザーよりHTMLファイル名を入力させて、ファイルを読み込み、その中からイタリック体と太字を検索するアプリケーションを作成してください!
実行画面は、こんな感じになると思います。
HTML名を入力ください:________
イタリック体は:____________
太字は:_____________



339 名前:デフォルトの名無しさん[sage]:2005/05/18(水) 02:33:55
>>338
javax.swing.text.html.parserあたりのAPI調べてみ
出先から携帯で書いているのでソースまでは作ってやれんが勘弁してくれ。
↑のパッケージ名もうろ覚えなのでスペル間違っていたらスマソ。

340 名前:デフォルトの名無しさん []:2005/05/18(水) 02:56:05
↑有難う御座います。スペルは、あっています。利用の仕方が分かりませんでした。
お時間のある時に助けてください。

341 名前:デフォルトの名無しさん[sage]:2005/05/18(水) 10:00:29
>>334
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24188

342 名前:デフォルトの名無しさん[sage]:2005/05/18(水) 10:27:34
800×640のウィンドゥ上に100枚程度の画像をランダムに描画するプログラムがある
↓その描画部分
public void paint(Graphics g){ //描画部
Random rnd=new Random();
for(int i=0;i<image.length;i++){
int x=(int)(rnd.nextDouble()*(getSize().width-image[i].getWidth(this)));
int y=(int)(rnd.nextDouble()*(getSize().height-image[i].getHeight(this)));
g.drawImage(image[i],x,y,this);
}
}
実行すると画像が多く重なり合っているが、これを見やすいように
整理して表示できる プログラムを作成せよ。
・ウィンドゥのサイズは変更しないこと ・できるだけ全体が見渡せること。

これをどう変更すればいいのか教えてくださいm(__)m

343 名前:デフォルトの名無しさん []:2005/05/18(水) 13:24:49
public class hoge {
public hoge(){}     
void process() throws IOException{
while(true){
System.out.println("整数(奇数)を入力してください:");                 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String num = br.readLine();
int i = Integer.parseInt(num);
if(i < 1 || i % 2 == 0){
System.out.println("エラー");
} else {
int space = i / 2;
for(int j = 1; j < i; j+=2,space--){
System.out.println(createString(j,space));
}
for(int k = i; k > 0; k = k-2,space++){
System.out.println(createString(k,space));
}}}}
private String createString(int num,int space){
StringBuffer sb = new StringBuffer();
for(int i = 0;i<space;i++){
sb.append("-");
}
for(int j = 0;j < num;j++){
sb.append("*");
}
for(int i = 0;i<space;i++){
sb.append("-");
}
return sb.toString();
}}

344 名前:デフォルトの名無しさん []:2005/05/18(水) 13:25:44
>>343
>>334へのコードね

345 名前:デフォルトの名無しさん []:2005/05/18(水) 14:43:42
この問題が解けなくて困っています。どうかよろしくお願いしますm(_ _)m

while文を用いて、キーボードから99が入力されるまで繰り返す処理を完成させてください。

キーボードからの入力は以下のとおりです。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in), 1);
String s = br.readLine(); // 文字列の入力
int a = Integer.parseInt(s);// String型をint型にする場合

346 名前:デフォルトの名無しさん []:2005/05/18(水) 14:43:53
コマンドシェルから入力した文字列を出力するプログラムを作成しなさい。
ソースコードファイルはprog2.javaとします。
例 コマンドシェルからjava prog1 data1 data2と入力すると実行結果は
data1
data2
となります。
という問題で

import java.io.*;

public class prog2
{
public static void main(String[] args)
{
for(int i=0;i>2;i++)
{
System.out.println(args,i.length);
}
}
}

とし、prog1.classのソースファイルパラメータに data1 data2 と記入しました。
結果
JAVA\prog2.java:9: int は間接参照できません。
System.out.println(args,i.length);
と出ました。
よくわからないので修正、書き方の指導でも構いませんのでアドバイスお願いします。

347 名前:347[sage]:2005/05/18(水) 15:04:02
自己解決しました;汚して申し訳。
一応できたの貼っておきます(`・ω・´)

import java.io.*;

public class prog2
{
public static void main(String[] args)
{
for(int i=0; i<args.length; i++)
{
System.out.println(args[i]);
}
}
}

348 名前:デフォルトの名無しさん[sage]:2005/05/18(水) 15:32:52
>>341
>>343
確認しました、参考になります
どうもありがとうございました


349 名前:デフォルトの名無しさん []:2005/05/18(水) 16:16:15
>>345
意味がよくわからんけど・・・

public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in), 1);
String s;
while(true){
System.out.print("99を入れるまで終わらん:");
try {
s = br.readLine();
int a = Integer.parseInt(s);// String型をint型にする場合
if(a == 99)
break;

//以下なんらかの処理

} catch (Exception e) {
e.printStackTrace();
}}}

こういうことか?

350 名前:初心者 []:2005/05/18(水) 21:49:35
皆さん、ソース作成をヨロシクお願いします。
簡単な物で構いませんので、作成お願いします。

【問題】Javaアプリケーションを起動する時にコマンドラインに指定する
    2つの数値を、四則計算出来るプログラムを作成せよ。
【条件】・数値はint型を用いること。
    ・エラー表示にはtry-catchを用いること。
【実行結果表示例】演算結果:○○


351 名前:初心者 []:2005/05/18(水) 21:59:33
↑の350は
某大学のプログラミング入門講義の課題です。

352 名前:デフォルトの名無しさん []:2005/05/18(水) 22:06:40
演算子もコマンドで受け取るの?

353 名前:初心者 []:2005/05/18(水) 22:19:34
350の【実行例】
加算の場合(1234+7890)↓
>java Shisoku 1234 addi 7890

演算子もコマンドで受け取ります。
演算子は下の4つでお願いします。
加算は、addi
減産は、minu
乗算は、bai
除算は、divi

354 名前:デフォルトの名無しさん[sage]:2005/05/18(水) 22:24:20
逆ポーランドにしたい俺ガイル

355 名前:デフォルトの名無しさん []:2005/05/18(水) 22:35:09
じゃあ、今から作ります
>>353

356 名前:初心者 []:2005/05/18(水) 22:38:46
逆ポーランドの方が簡単そうですが、
try-catchの練習も兼ねてるらしいのです。
コマンドラインの引数が3つ以外の場合にエラーを表示させる等で、
try-catch文みたいです。

とにかく、よろしくお願いします。
参考にさせていただきます。

357 名前:デフォルトの名無しさん []:2005/05/18(水) 22:56:27
// 0 除算の結果はどうでもいい という方向性で・・・
public class Shisoku {
public static void main(String[] args) {
try {
if ((args == null) || (args.length != 3))
throw new Exception("入力内容を確認してください 整数 addi|munu|bai|divi 整数");

if (args[1].equals("addi"))
System.out.println("演算結果:" + (Long.parseLong(args[0]) + Long.parseLong(args[2])));
else if (args[1].equals("minu"))
System.out.println("演算結果:" + (Integer.parseInt(args[0]) - Integer.parseInt(args[2])));
else if (args[1].equals("bai"))
System.out.println("演算結果:" + (Long.parseLong(args[0]) * Long.parseLong(args[2])));
else if (args[1].equals("divi"))
System.out.println("演算結果:" + (Double.parseDouble(args[0]) / Double.parseDouble(args[2])));
else
throw new Exception("演算子を確認してください");
}
catch (NumberFormatException e) {
System.err.println("数値を入力してください");
}
catch (Exception e) {
System.err.println(e.getMessage());
}
}
}

358 名前:デフォルトの名無しさん []:2005/05/18(水) 22:59:26
>>357
しまった、入力値が整数の判定は自分で付け加えてくれ あれだと 小数点もいけてしまう

359 名前:初心者 []:2005/05/18(水) 23:04:29
>357、358
ありがとうございます。
最後に質問させてもらいたいのですが、
除算でDouble型を用いているんですよね?

360 名前:デフォルトの名無しさん []:2005/05/18(水) 23:37:02
>>359
だったらなに?

361 名前:デフォルトの名無しさん []:2005/05/18(水) 23:40:09
つうか、引き算もLongだな orz

362 名前:デフォルトの名無しさん[sage]:2005/05/18(水) 23:44:14
JTableの一つのセルにだけチェックボックスってできますか?

363 名前:デフォルトの名無しさん []:2005/05/18(水) 23:46:14
>>362
できるよ 戻り値をBooleanにすればいい

364 名前:デフォルトの名無しさん[sage]:2005/05/19(木) 00:45:34
>>363
すいません。ちょっとサンプルコードを書いてくれませんか?
TableCellEditorを実装したクラスを作るんですよね?

365 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/19(木) 07:57:27
>>264の続きなのですが、万華鏡に取り組んでいまして、
現在マウスドラッグで取得した座標をどのように亀に反映
させるのかが分かりません。聞いた話ではTurtleクラスの
可変長配列に対し、上のデータを対応させるというそうなの
ですが、それを実装する方法がよく分かりません。できれ
ばミスを指摘してくれると助かります。

ソースは:http://www.geocities.jp/htbgr132/oshiete/question2.zip
問題のページは:http://www.ed.noda.tus.ac.jp/j-takeda

366 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/19(木) 07:59:15
http://www.geocities.jp/htbgr132/osiete/question2.zip
URL間違えました。すみません。

367 名前:デフォルトの名無しさん []:2005/05/19(木) 22:08:42
アメリカの学校の宿題なのですが、ソースもしくは、サンプルがあるURL教えて下さい!
JFCを利用してグラフ化アプリケーションかアプレットを作成。(棒グラフ、折れ線グラフおよびデータを別々のタブとして作成)ユーザが棒グラフか折れ線グラフのどちらかを選んで切り替えを可能にする。


368 名前:デフォルトの名無しさん[sage]:2005/05/19(木) 23:42:15
問題
Dequeにもとづいてスタッククラスを作れ。
Stackクラスと同じメソッドと機能がなければならない。
以下Stackクラスのソースです。
public class StackX {
private int maxSize;
private long[] stackArray;
private int top;

public StackX(int s) {
maxSize = s;
stackArray = new long[maxSize];
top = -1;
}
//-----------------------------
public void push(long j) {stackArray[++top] = j;}
//-----------------------------
public long pop() {return stackArray[top--];}
//-----------------------------
public long peek() {return stackArray[top];}
//-----------------------------
public boolean isEmpty() {return (top == -1);}
//-----------------------------
public boolean isFull() {return (top == maxSize - 1);}
//-----------------------------
}
よろしくおねがいします。

369 名前:デフォルトの名無しさん []:2005/05/20(金) 12:27:49
LinkedList使えば、簡単に出来そう。
出先なんで、ソースは出せんけども。

370 名前:デフォルトの名無しさん []:2005/05/20(金) 13:22:38
階乗を見つけるプログラムを書きたいんですけど、教えてもらえますか?


371 名前:デフォルトの名無しさん[sage]:2005/05/20(金) 13:35:05
>>370
見つける?計算するじゃなくって?

long fuct( long a ) {

if ( a == 1 ) {
return a;
}

return a * fuct( a - 1 );

}

372 名前:デフォルトの名無しさん []:2005/05/20(金) 14:02:41
ありがとうございます。

373 名前:デフォルトの名無しさん []:2005/05/20(金) 14:23:28
>>368
Dequeって、頭からも尻からも出し入れできるって構造だっけ?

ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24252

こんな感じか?

374 名前:デフォルトの名無しさん[sage]:2005/05/20(金) 15:41:19
宿題ではないんですけど、すみません。
コンパイルした時に

警告: [unchecked] raw 型 java.util.Stack のメンバとしての push(E) への無検査呼び出しです。

stack.push(line);

って出ます。動作は問題ないんですけど、スタックをpushする前に検査するのは
どのようにしたらいいのでしょうか?

あと、Stack#pushとかっていう表記はどういう意味でしょうか?

375 名前:デフォルトの名無しさん []:2005/05/20(金) 15:53:55
J2SE5.0の話だと思うけど。

Genericsを使ってStackをインスタンス化すれば
出なくなるんじゃないかな。

>あと、Stack#pushとかっていう表記はどういう意味でしょうか?
Stackクラスのpushメソッド

376 名前:374[sage]:2005/05/20(金) 16:15:49
>>375さん、どもです。Genericsを使うっていうのやってみます。

377 名前:368[sage]:2005/05/20(金) 17:44:33
>>369 、>>373
ありがとうございます。
LinkedListという便利なものがあったんですね、勉強になりました。

378 名前:デフォルトの名無しさん []:2005/05/20(金) 23:55:13
第一引数で渡したディレクトリ配下のファイルを全て取得するプログラムを教えてください。

379 名前:デフォルトの名無しさん[sage]:2005/05/21(土) 00:00:23
やだ

380 名前:デフォルトの名無しさん []:2005/05/21(土) 00:06:48
File#list()で再帰すればほとんどできたも同然だ
でもJavaのlsは、遅いよ

一つ問題(Question)がある
Javaの場合、ファイルリストはキャッシュされるか否か
さてどっちでしょう?

381 名前:205 []:2005/05/21(土) 14:23:13
    入力
  
  名字: □
 
  名前: □

郵便番号: □-□ 検索

という風にjavaでプログラミングしたいのですが、どうしたらいいのでしょうか?お願いします。

382 名前:デフォルトの名無しさん[sage]:2005/05/21(土) 14:41:22
エスパーの登場をお待ちください。

383 名前:デフォルトの名無しさん[sage]:2005/05/21(土) 15:25:37
10個の数を入力して小さい順にソートし出力するプログラムを
教えてもらえないですか?
(バブルソートのプログラム)


384 名前:デフォルトの名無しさん []:2005/05/21(土) 15:40:20
>>383
入力方法は
一個入れたらEnterで、10個たまったら自動的に出力でいいの

385 名前:デフォルトの名無しさん []:2005/05/21(土) 15:54:16
>>383
情報系の学生さんなら
http://oku.edu.mie-u.ac.jp/~okumura/algo/
http://oku.edu.mie-u.ac.jp/~okumura/java-algo/
位は買って下さい。

386 名前:デフォルトの名無しさん []:2005/05/21(土) 16:12:50
>>383
//入力値 int バージョン
public class BS {private static final int MAX = 10;public static void main(String[] args) {System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);
try {int[] src = read();src = sort(src);print(src);}catch (IOException e) {e.printStackTrace();}}
public static int[] read() throws IOException {int[] src = new int[MAX];BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = null;int count = 0;while ((count < MAX) && ((line = br.readLine()) != null)) {try {int temp = Integer.parseInt(line);
src[count++] = temp;}catch (NumberFormatException e) {System.err.println("-2147483648〜2147483647の整数を入力してください整数を入力してください");
}}return src;}public static int[] sort(int[] src) {if (src == null || src.length < 2) {return src;}
for (int i = 0; i < (MAX - 1); i++) {for (int j = 0; j < (src.length - 1); j++) {if (src[j] > src[j + 1]) {
int temp = src[j];src[j] = src[j + 1];src[j + 1] = temp;}}}return src;}
public static void print(int[] src) {for (int i = 0; i < MAX; i++) {System.out.println((i + 1) + "\t" + src[i]);}}}

387 名前:デフォルトの名無しさん []:2005/05/21(土) 16:55:30
10進数の数字を入れると
3進数で表示するプログラムを作ってください
お願いします

388 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/21(土) 17:24:16

 ごめんなさい。作る事は出来ませんが...恐らくこうなるだろうって事だけを話します。

まず10進法から2進法にするとき、割ったあまりを並べて行きますよね?
 ここで出てきた商をどんどん割って同じようにやっていきます。ここで商を格納する
配列をp[i],余りをq[i]、余りの桁数をnとすると
q[n-i]=p[i]%3;//三進数なら
となるはずです。n-iとしたのは2進法の場合直す際、逆順に数字を格納していくから
です。桁数を任意に変えられるようにするのならばp[i],q[i]は可変長配列の方がいい
と思います。メゾッドについてはgoogle検索してsunのサイトを見て下さい。
私も>>365で困っているので、問題を見るだけでもいいのでお願いします。


389 名前:デフォルトの名無しさん[sage]:2005/05/21(土) 17:40:55
>>387
import java.io.*;
public class Radix {
public static void main(String[] args) throws IOException {
System.out.print( "10進数で数字を入力 > " );
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
String read = br.readLine();
int number = Integer.parseInt(read);
System.out.println( Integer.toString( number, 3 ) );
}
}

IntegerのAPI使っちゃだめですか。そうですか。

390 名前:デフォルトの名無しさん[sage]:2005/05/21(土) 22:06:39
三角形のそれぞれの頂点にx,yの座標値とr,g,bのカラー情報を定義し
内部を内挿補間法を用いて塗りつぶすというプログラムなんですが
教えてくださいお願いします

391 名前:デフォルトの名無しさん[sage]:2005/05/21(土) 22:16:09
>>384
はい、それでいいと思います。
>>385
その本はド素人にも理解しやすい内容ですか?
もしそうであれば買いますが・・・。
(現在いい参考書を探していますがなかなか見つからないので)
>>386
ありがとうございます。

392 名前:デフォルトの名無しさん []:2005/05/22(日) 00:31:18
   入力
  
  名字: □
 
  名前: □

郵便番号: □-□ 検索

という風にjavaでプログラミングしたいのですが、どうしたらいいのでしょうか?お願いします。

393 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 00:54:54
>>392
public class WhatAFoolIAm {
public static void main(String[] args) {
System.out.println("   入力\n" + "  名字: □\n" + "  名前: □\n" + "郵便番号: □-□ 検索");
}
}

394 名前:デフォルトの名無しさん []:2005/05/22(日) 04:56:24
ページ内にある画像を指定してプリントアウトさせるプログラムってないんですか?
┌─────┐
│ 画 像 │
└─────┘
(プリントアウト)←ボタン

画面全体ではなくて、画像を指定したいのです。
お願いします。


395 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 05:09:54
ページって何だよ。

プリントアウトのボタンを押したときに、画像を印刷するような機能を考えたら良いと思うよ。
というか、なんでもいいから印刷する機能自体は作れるのか?

396 名前:394 []:2005/05/22(日) 05:41:21
早く答えてください!急いでるんです!

397 名前:394 []:2005/05/22(日) 05:42:56
まだですか?
こんな質問も答えられないのですか?

398 名前:394[sage]:2005/05/22(日) 10:37:42
死ね

399 名前:392 []:2005/05/22(日) 12:09:09
>>393
ありがとうございます。
しかし□の部分はJtext Fieldで作りたいと思っていますので、よろしくお願いします。

400 名前:デフォルトの名無しさん []:2005/05/22(日) 13:09:51
ホームページ内の画像を指定して、画像のみをプリントアウトさせるための
Javaがあれば教えていただきたいです。
言葉足らずで申し訳ないです。

401 名前:デフォルトの名無しさん []:2005/05/22(日) 13:53:30
学校の課題でプログラミング組んでみたけど動かね〜!
プロフェッショナルなおまいら、俺のプログラムのどこを直せばいいか教えてくれYO!言語はJavaっす。
課題: double型の乱数データのソートに要する時間を計測することで、
    最小値選択法とクイックソートの比較をせよ。
    実際には、ソート対象のデータ個数をコマンド引数で入力し、
    Math.random()メソッドを用いて配列にデータをセットする。
    TIMES=10回のソート時間を計測して、平均値を計算する。
    System.currentTimeMillis()メソッドを用いること。

402 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 13:56:01
>>400
それ、宿題?

403 名前:へたれのプログラム []:2005/05/22(日) 13:57:46
public class TimeSimple {
final static int TIMES = 10;
static long t = 0;
public static void main( String[] args ) {
double[] p = new double[ Integer.parseInt( args[0] ) ];
System.out.println( "case1 : simple sort" );
sortmain( p, 1 );
System.out.println( "case2 : quick sort" );
sortmain( p, 2 );
}
static void sortmain( double[] p, int sortmethod ) {
for( int i = 0; i < TIMES; i++ ) {
for( int j = 0; j < p.length; j++ ) {
p[j] = Math.random();
}
System.out.println( "Start sorting #" + i + "..." );
switch( sortmethod ) {

404 名前:へたれのプログラム []:2005/05/22(日) 13:59:19
case 1:
t -= System.currentTimeMillis();
sort1(p);
t += System.currentTimeMillis();
break;
case 2:
t -= System.currentTimeMillis();
sort2(p);
t += System.currentTimeMillis();
break;
}
System.out.println( "... finished." );
}
System.out.println( "Average time for sorting " + p.length + "elements: " +
( t / TIMES ) + "[msec]" );
}
static boolean greaterThan( double p0, double p1 ) {
return p0 > p1;
}

405 名前:へたれのプログラム []:2005/05/22(日) 14:01:38
static void sort1( double[] p ) {
for( int i = 0; i < p.length-1; i++ ) {
int min = i;
for( int j = i + 1; j < p.length; j++ )
if( greaterThan( p[min], p[j] ) )
min = j;
double tmp = p[i];
p[i] = p[min];
p[min] = tmp;
}
}
static void sort2( double[] p ) {
qsort( p, 0, p.length-1 );
}
static void qsort( double[] p, int lower, int upper ) {
if( lower < upper ) {
double pm = ( lower + upper ) / 2;
int i = lower;
int j = upper;

406 名前:へたれのプログラムとエラーメッセージ []:2005/05/22(日) 14:04:57
連投スマソ。これで最後
   while( greaterThan( pm, p[i] ) ) i++;
while( greaterThan( p[j], pm ) ) j--;
if( i <= j ) {
double tmp = p[i]; p[i] = p[j]; p[j] = tmp;
i++; j--;
}
}
qsort( p, lower, j );
qsort( p, upper, i );
}
}
}
 エラーメッセージ
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 30
at TimeSimple.qsort(TimeSimple.java:59)
at TimeSimple.sort2(TimeSimple.java:51)
at TimeSimple.sortmain(TimeSimple.java:27)
at TimeSimple.main(TimeSimple.java:11)

407 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 14:39:13
>>399
多分、Eclipseでプログラミングしてるんでしょ?
Swing系の課題ならJBuilderを使ってみ。おどろくほど簡単にできるから。

408 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 15:14:48
>>401
いろいろおかしかったので直した。
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24314

409 名前:401 []:2005/05/22(日) 15:58:55
>>408
すげー!!!ばっちり動いたZE!俺6,7時間は苦しんだのにあっという間かよ!
 My Godに認定しますた。あと関係ないんだけどここに書き込んでる間
 Nortonが何回か反応してびびった。ウィルス流行ってるみたいだしみんなも気をつけろよ!
 バイビー!!

410 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 16:04:42
Nortonが反応するのは心配ない。

411 名前:401 []:2005/05/22(日) 16:16:28
バイビー!!とか書いといて戻ってくんの恥ずかしいんだけどさ・・・
// デバッグ用
//for(int i=0; i<p.length; i++) System.out.println( i + ": " + p[i] );
てちょくちょく書いてあんだけどどういう意味があるのか教えてくれまいか?
>>410
そうなの?んじゃとりあえず安心。  

412 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 18:23:31
単元名:プログラム演習
課題:太郎君と次郎君はお小遣いを浪費する癖があります。そこでお母さん
は以下の様な貯金箱を作りました。貯金箱はキーボード入力ができ、まず
始めにユーザID、貯金箱番号、パスワードを入力する。ユーザIDは太郎君
がANI、次郎君がOTOとする。プログラムの実行はコマンドライン引数で、
java CHOKINBAKO ユーザID 貯金箱番号 パスワード で実行する。
ユーザ認証に失敗したら強制終了とする。認証が成功したらログイン
ユーザの名前、貯金額を表示する。次に、キーボードから s 100 が入力され
たら100円を貯金、b 200が入力されたら貯金箱から200円引き出す。
貯金額の上限は無いが、引出しがマイナスになってはならない。
それぞれの操作が終了したら現在のログインユーザの名前、貯金額を画面
に表示する(太郎君の場合、tarou 2100 と表示)。
また、q が入力されたらプログラムを終了すること。
太郎君と次郎君の、ユーザID,貯金箱番号,パスワード,貯金箱所有者名,現在の貯金額
はcoinbank.txtに以下の様に書き込まれているとする。

尚、最低限以下の関数を作成すること。
ユーザID、貯金箱番号から、貯金箱所有者名を取得するgetOwner関数、
ユーザID、貯金箱番号から、現在の貯金額を取得するgetAmount関数、
ユーザID、貯金箱番号、現在の貯金額から、ユーザ名の現在の貯金額を足す
(引く)setPrice関数をそれぞれ作成せよ。

--------coinbank.txt---------
ANI,0001,tarou,anitarou,2000
OTO,0002,jirou,otojirou,1500
--------coinbank.txt---------

提出期限:2005年5月23日

どなたかよろしくお願いします。



413 名前:412[sage]:2005/05/22(日) 18:26:04
すみません、提出期限は2005年5月25日でした。まちがえました。

414 名前:デフォルトの名無しさん []:2005/05/22(日) 18:42:39
>>現在の貯金額から、ユーザ名の現在の貯金額を足す (引く)setPrice関数をそれぞれ作成せよ。
addPriceにしたい・・・

415 名前:デフォルトの名無しさん []:2005/05/22(日) 18:43:36
>>412
これってトランザクション考える必要あるの?

416 名前:へたれ初心者 []:2005/05/22(日) 18:45:56
【お願いします】
2つの数値を四則演算出来るプログラムを大学の課題で作成しています。
以下のプログラムを作ってみましたが、
抽象クラス、Tasuクラス、Hikuクラス、Kakeruクラス、Waruクラス、メインクラス
を用いたプログラミングに変更していただけませんか?

// 0 除算の結果はどうでもいい という方向性で・・・
public class Shisoku {
public static void main(String[] args) {
try {
if ((args == null) || (args.length != 3))
throw new Exception("入力内容を確認してください 整数 addi|munu|bai|divi 整数");

if (args[1].equals("addi"))
System.out.println("演算結果:" + (Integer.parseInt(args[0]) + Integer.parseInt(args[2])));
else if (args[1].equals("minu"))
System.out.println("演算結果:" + (Integer.parseInt(args[0]) - Integer.parseInt(args[2])));
else if (args[1].equals("bai"))
System.out.println("演算結果:" + (Integer.parseInt(args[0]) * Integer.parseInt(args[2])));
else if (args[1].equals("divi"))
System.out.println("演算結果:" + (Integer.parseInt(args[0]) / Integer.parseInt(args[2])));
else
throw new Exception("演算子を確認してください");
}
catch (NumberFormatException e) {
System.err.println("数値を入力してください");
}
catch (Exception e) {
System.err.println(e.getMessage());
}
}
}

417 名前:412[sage]:2005/05/22(日) 19:18:33
>>414
すみません、指定がsetPrice関数なんです。

>>415
貯金(引き出し)したらその結果を画面に表示し、続けて貯金(引き出し)
した場合は前の操作の結果に対して足す(引く)を行いその結果を画面に
表示します。貯金(引き出し)操作を止め、プログラムを終了する際に
coinbank.txtに最後の結果を書き込みます。

よろしくお願いします。


418 名前:デフォルトの名無しさん []:2005/05/22(日) 19:49:33
>>416
そのまえに、なんでInteger.parseIntに書き直しているのか・・・・
入力される値の上限下限決まっているなら先に書けよ

419 名前:デフォルトの名無しさん []:2005/05/22(日) 19:51:57
>>417
2人同時に書き込んだらどうするの?
同じIDで複数の人がこのプログラム立ち上げたらどうすんの?


420 名前:デフォルトの名無しさん []:2005/05/22(日) 19:53:47
>>416
>以下のプログラムを作ってみましたが、

って、>>357が作った奴じゃないのか?
おまえが作ったわけではあるまい

421 名前:デフォルトの名無しさん []:2005/05/22(日) 19:56:51
//どうせユーティリティーなのだからstatic メソッドで・・・
if (args[1].equals("addi"))
System.out.println("演算結果:" + (Tasu.execute(args[0],args[2])));
else if (args[1].equals("minu"))
System.out.println("演算結果:" + (Hiku.execute(args[0],args[2]));
else if (args[1].equals("bai"))
System.out.println("演算結果:" + (Kakuru.execute(args[0],args[2]));
else if (args[1].equals("divi"))
System.out.println("演算結果:" + (Waru.execute(args[0],args[2]));
else
throw new Exception("演算子を確認してください");


422 名前:416です []:2005/05/22(日) 20:18:33
357さんに作っていただいた物です。
357さんありがとうございました。
int型に変更しています。
【課題】
スーパークラスとしてabstractを用いたクラスを作成し、
サブクラスとして、Tasuクラス、Hikuクラス、Kakeruクラス、
Waruクラスを作成しなさい。
その他は416を参照してください。

423 名前:412[sage]:2005/05/22(日) 20:20:13
>>419
すみません、説明不足でした。
このプログラムはローカルマシンにあるcoinbank.txtに対して行うプログラム
です。スレッドではないです。太郎君の処理が行われている時は次郎君の処理
は考えなくてよいです。よろしくお願いします。

424 名前:デフォルトの名無しさん []:2005/05/22(日) 20:21:34
intに変更したら答え変わっちゃうよね?わかってる?ちなみにminuもLongじゃないとダメだから・・・

>スーパークラスとしてabstractを用いたクラスを作成し、
>サブクラスとして、Tasuクラス、Hikuクラス、Kakeruクラス、 Waruクラスを作成しなさい。
って言うことは>>421のようなやりかただと回答としては×って言うことか


425 名前:デフォルトの名無しさん []:2005/05/22(日) 20:28:22
スーパクラスをOperationとして
Map map=new HashMap();
map.put("addi",new Tasu());
map.put("minu",new Hiku());
map.put("bai",new Kakeru());
map.put("divi",new Waru());
って初期化やっておいて

Object o=map.get(args[1]);
if(o!=null)
System.out.println(((Operation)o).execute(args[0],args[2]));
else
throw new Exception("演算子を確認してください");

かな?先生の意図しているやり方は


426 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 20:28:40
>>421の言いたい気持ちはよく分かるが
今回の問題だと
抽象クラス#execute()を抽象メソッドにして
それぞれの計算用クラス(Tasu, Hiku, …)をそのサブクラスにして
それらでexecute()を実装する
ということを求めているのだろう。

型は全部統一した方が楽だね。

427 名前:416です []:2005/05/22(日) 20:29:28
>424さん
Long型でもint型でもOKっす。
421のやり方だとダメなんです。
ヨロシクお願いします

428 名前:421 []:2005/05/22(日) 20:29:56
>>426
いやだから>>425にしたのだよ


429 名前:426[sage]:2005/05/22(日) 20:34:53
>>428の言いたい気持ちはよく分かるが
そういわれても>>425>>426はカキコが18秒しか離れていないのだよ。

つまり俺は425を読まずに426書いた。OK?

430 名前:デフォルトの名無しさん []:2005/05/22(日) 20:44:29
>Long型でもint型でもOKっす。
ほんとかよ?桁あふれわかっているのか

1000000 bai 1000000

ってやってみろよ そのintバージョンで

431 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 20:45:24
>>430
それを言ったらlongを溢れた場合のことも考えなきゃいけない。

432 名前:デフォルトの名無しさん []:2005/05/22(日) 20:51:04
>>431
いやだから>>425にしたのだよ


433 名前:デフォルトの名無しさん []:2005/05/22(日) 20:52:18
>>432の言いたい気持ちはよく分かるが
そういわれても>>430>>431はカキコが55秒しか離れていないのだよ。

つまり俺は430を読まずに431書いた。OK?

434 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 20:54:44
>>100
の人気に嫉妬

435 名前:へたれ初心者 []:2005/05/22(日) 22:46:30
これまでのカキコに漏れがありましたので、再度、問題を記載します。皆さんヨロシクお願いします。
【問題】
2つのint型数値を四則計算出来るプログラムを作成せよ。その際、スーパークラスとして抽象クラス、サブクラスとしてTasuクラス、
Hikuクラス、Kakeruクラス、Waruクラスを作成せよ。
プログラム実行形式は、
『>java Shisoku 数値 演算種別 数値』とし、加算の場合は「pl」、
減算の場合は「mn」、乗算の場合は「ba」、除算の場合は「dv」を
演算種別として用いること。

以前357さんにソースを作って頂いたのですが、
スーパークラスを用いたいのです。
皆さんヨロシクです

436 名前:デフォルトの名無しさん []:2005/05/22(日) 22:51:13
>>416
そのcoinbank.txtってのは、どういう書式で情報もってるんかね?

437 名前:デフォルトの名無しさん[sage]:2005/05/22(日) 22:55:37
>>435
('A`) モウー サイショカラモンダイダシテッテ イッテルデショー
コタエルノ マンドクセ

438 名前:412[sage]:2005/05/22(日) 23:06:29
>>436
もしかして>>416ではなく、>>417のcoinbank.txtですか?

ユーザID:char型、サイズ3
貯金箱番号:varchar2、サイズ20
パスワード:char型、サイズ20
貯金箱所有者名:varchar型、サイズ40
現在の貯金額:int型

です。また、それぞれnullはだめです。

439 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 00:12:12
>438
なんでcoinbank.txtの書式を聞かれてるのにプログラム内部のデータ構造を答えてるんだよ。
しかもデータ型決まってるなら先にいえよ。

440 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 00:35:31
もまえら落ち着け。>>412をよく嫁。

太郎君と次郎君の、ユーザID,貯金箱番号,パスワード,貯金箱所有者名,現在の貯金額
はcoinbank.txtに以下の様に書き込まれているとする。

--------coinbank.txt---------
ANI,0001,tarou,anitarou,2000
OTO,0002,jirou,otojirou,1500
--------coinbank.txt---------

そのままじゃね?

441 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 00:42:26
>>435
教官にせめて演算種別の元々の言葉を統一しろと言ってやれ
plus minusとdivはわかるがdivならaddとsubにしろって言いたいし
掛け算のbaって一体なんなんだよ・・・baiか?

442 名前:デフォルトの名無しさん []:2005/05/23(月) 00:56:51
ああ、書いてあったのね。スマソ

つか、charとかvarcharとかvarchar2とか・・・(;´Д`)

443 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 02:14:03
>>441
batsu(×) の ba ?


444 名前:デフォルトの名無しさん []:2005/05/23(月) 03:42:58
キュー(待ち行列)の問題なのですがclass Queueを書き換えて待ち行列の
内容を表示したいのですがよろしくお願いします。以下ソースです。待ち行列を
挿入するクラスは省略してます
import java.io.*;
class Queue{
private int maxSize;
private long[] queArray;
private int front;
private int rear;
private int nItems;
public Queue(int s){
maxSize=s;
queArray=new long[maxSize];
front=0;
rear=-1;
nItems=0;
}

public void insert(long j){
if(rear==maxSize-1)
rear=-1;
queArray[++rear]=j;
nItems++;
}


445 名前:444 []:2005/05/23(月) 03:43:51
続きです。
public long remove(){
long temp =queArray[front++];
if(front==maxSize)
front=0;
nItems--;
return temp;
}
public long peekFront()
{
return queArray[front];
}
public boolean isEmpty()
{
return(nItems==0);
}
public boolean isFull(){
return(nItems==maxSize);
}
public int size(){
return nItems;
}
}

446 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 06:50:00
800×640のウィンドゥ上に100枚程度の画像をランダムに描画するプログラムがある
public void paint(Graphics g){ //描画部分
Random rnd=new Random();
for(int i=0;i<image.length;i++){
int x=(int)(rnd.nextDouble()*(getSize().width-image[i].getWidth(this)));
int y=(int)(rnd.nextDouble()*(getSize().height-image[i].getHeight(this)));
g.drawImage(image[i],x,y,this);
}
}
実行すると画像が多く重なり合っているが、これを見やすいように
整理して表示できる プログラムを作成せよ。
・ウィンドゥのサイズは変更しないこと ・できるだけ全体が見渡せること。

どう変更すればいいのですか?

447 名前:390[sage]:2005/05/23(月) 09:22:27
どなたかよろしくお願いします

448 名前:M.B. []:2005/05/23(月) 12:06:20
>>390
> 内部を内挿補間法を用いて塗りつぶすというプログラムなんですが

>>1
> 3. 数学問題は「○×法でせよ」だけでなく、その解を出す為の数式や
>  前提条件などを具体的かつ詳細に説明してください。

 「内挿補間法」ってなんだ?

449 名前:デフォルトの名無しさん []:2005/05/23(月) 13:34:49
どなたかお願いします m(__)m

ランダムに7文字の文字列を20個出力するプログラムを作る。
その文字列はA,B,C,D,E,F,G,H、Iのいづれかとする。
コンパイル、実行する。
コマンドラインから引数を1つ指定して実行する。

例えばaaaを引数として、実行する。
>java Sample aaa
ランダムな7文字の文字列の先頭にaaaを結合した文字列を20個表示する。





450 名前:適当[sage]:2005/05/23(月) 14:03:28
public class Sample {
  public static void main(String[] args) {
    String argstr = "";

    if(args.length > 0) {
      argstr = args[0];
    }

    char chr[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I' };
    String str;

    for(int i = 0; i < 20; i++) {
      str = argstr;
      for(int j = 0; j < 7; j++) {
        int rnd = (int)(Math.random() * chr.length);
        str = str + chr[rnd];
      }
      System.out.println(str);
    }
  }
}

451 名前:デフォルトの名無しさん []:2005/05/23(月) 15:06:32
変数が2変数のときのコンストラクタとオブジェクトの作り方がわかりません
↓なんですがどうしたらいいの?



クラス
class AAA {
double x;
double y;

コンストラクタ
AAA(double ) {
this. = ;
}

public double zzz() {
return(x * y);
}
}
オブジェクト
AAA aaa = new AAA();

double ZZZ =aaa.zzz();
System.out.println("ZZZ" + ZZZ);

452 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 15:13:33
//コンストラクタ
AAA(double xx, double yy) {
  x = xx;
  y = yy;
}

//オブジェクト生成
AAA aaa = new AAA(xxx, yyy);


453 名前:デフォルトの名無しさん []:2005/05/23(月) 15:23:55
>>452
ありがとうございます


454 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 16:06:44
>446
画像の大きさと形は?
・全部同じ大きさと形だったりすると話は非常に簡単
・画像の大きさ*数が配置するスペースに対しじゅうぶん小さいなら割と適当に並べてもいいのでやはり簡単
・画像の大きさ*数がキャンパスの大きさに対しギリギリだったりすると配置をそれなりに最適化しないといけない
・画像の大きさ*数を考えるとどうやっても重なり合うようなら、どういう状態を「見やすい」とするかは個人の主観による

455 名前:444 []:2005/05/23(月) 16:26:42
444です。どなかたお願いします


456 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 16:27:53
ナップザック??

457 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 17:23:15
>>435
> その際、スーパークラスとして抽象クラス、サブクラスとしてTasuクラス、
Hikuクラス、Kakeruクラス、Waruクラスを作成せよ。

「設計に問題あり。」と答えてやれ。まじで。
その先生がどんな答えを想定してるのかがわからん・・・。

458 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 17:32:47
>>412
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24348
>>438 で示されたデータ型要求を満たしていませんし、デバッグも適当です。参考になるようでしたらどうぞ。
coinbank.txt をCHOKINBAKO.class と同じ階層においてから実行してください。
なお、ご利用になる場合は自己責任でお願いします。

459 名前:457[sage]:2005/05/23(月) 18:07:38
一応作ってみた。

class Shisoku{
 public static void main(String[] args){
  try{
   if(args.length != 3){
    throw new ArrayIndexOutOfBoundsException("引数の数は3だって");
   }
   String operator = args[1];
   int i1 = Integer.parseInt(args[0]); int i2 = Integer.parseInt(args[2]);
   AbstractShisoku as = null;
   if(operator.equals("pl")){
    as = new Tasu(i1, i2);
   }else if(operator.equals("mn")){
    as = new Hiku(i1, i2);
   }else if(operator.equals("ba")){
    as = new Kakeru(i1, i2);
   }else if(operator.equals("dv")){
    as = new Waru(i1, i2);
   }else{
    throw new IllegalArgumentException("そんなコマンドはないよ");
   }
   as.calc(); as.print();
  }catch(NumberFormatException nfe){
   System.err.println("int型つってんだろうがよ");
  }catch(Exception e){
   System.err.println(e.getMessage());
  }
 }
}

460 名前:457[sage]:2005/05/23(月) 18:08:26
abstract class AbstractShisoku{

 protected int i1;
 protected int i2;
 protected int answer;

 public AbstractShisoku(int i1, int i2){
  this.i1 = i1;
  this.i2 = i2;
  this.answer = 0;
 }

 abstract public void calc();

 public void print(){
  System.out.println("演算結果:" + answer);
 }

}

public class Tasu extends AbstractShisoku{
 public Tasu(int i1, int i2){
  super(i1, i2);
 }
 public void calc(){
  answer = i1 + i2;
 }
}


461 名前:457[sage]:2005/05/23(月) 18:13:07
問題点
・演算の結果が int をはみ出た場合を考慮してない。
 →出題が "int" とうたっているから内部的にもあえて int で持ってみた。
・題意に沿っているのかどうかわからない。
 →そもそも出題が(ry

あと、main メソッドは一部改行をケチって書いたので注意。

462 名前:こんな解答は?[sage]:2005/05/23(月) 21:32:51
>>435
出題者はこんな解答を求めてるんじゃねーの?
※エラー処理は適当。
それにしても出題者のレベルがxxxだよね。

import java.util.HashMap;
import java.util.Map;
public class Shisoku {
public static void main(String[] args) {
if (args.length < 3) {
throw new UnsupportedOperationException();
}
int result = new Calculator().calc(args[1], Integer.parseInt(args[0]), Integer.parseInt(args[2]));
System.out.println(result);
}
}


463 名前:462[sage]:2005/05/23(月) 21:33:11
class Calculator {
private Map opeMap = new HashMap();
public Calculator() {
setup(new Tasu());
setup(new Hiku());
setup(new Kakeru());
setup(new Waru());
}
private void setup(AbstractOperator op) {
opeMap.put(op.getOperator(), op);
}
public int calc(String op, int a, int b) {
AbstractOperator ope = (AbstractOperator) opeMap.get(op);
if (ope != null) {
return ope.calc(a, b);
}
throw new UnsupportedOperationException();
}
}

464 名前:462[sage]:2005/05/23(月) 21:34:02
abstract class AbstractOperator {
public abstract String getOperator();
public abstract int calc(int a, int b);
}
class Tasu extends AbstractOperator {
public String getOperator() {
return "pl";
}
public int calc(int a, int b) {
return a + b;
}
}
class Hiku extends AbstractOperator {
public String getOperator() {
return "mn";
}
public int calc(int a, int b) {
return a - b;
}
}



465 名前:462[sage]:2005/05/23(月) 21:34:22
class Kakeru extends AbstractOperator {
public String getOperator() {
return "ba";
}
public int calc(int a, int b) {
return a * b;
}
}
class Waru extends AbstractOperator {
public String getOperator() {
return "dv";
}
public int calc(int a, int b) {
return a / b;
}
}
// ここで終わり

466 名前:390[sage]:2005/05/23(月) 22:00:31
>>448
すいません、調べてみたんですが
ここに書かれてる線形補間というのを使えばいいって
のはわかるのですが、どう使えばいいのかわからなくて
ttp://www.geocities.co.jp/SiliconValley-Cupertino/3384/CG.html#liner

467 名前:デフォルトの名無しさん[sage]:2005/05/23(月) 23:00:28
Filechooserでセレクトファイルのパスを取得する方法はわかったのですが、
自分自身のファイル(hoge.class)のパスを取得する方法がわかりません。
何かオブジェクトを生成しないと自分自身のパスは取得できないのでしょうか?
よろしくお願いします。


468 名前:446[sage]:2005/05/24(火) 01:21:51
>>454
・画像の大きさ*数を考えるとどうやっても重なり合うようなら、どういう状態を「見やすい」とするかは個人の主観による

↑コレに当てはまります
個人の主観による、とありますが方法は自由なので何でもアリらしいです
スクロールバーとかページ切り替えボタン付けたりするのかしら?




469 名前:デフォルトの名無しさん []:2005/05/24(火) 11:13:06
>>450 ありがとうございます

470 名前:超初心者[sage]:2005/05/24(火) 15:55:18
ウィンドゥを出してページを切り替えるボタンとかをセッティングしたいんだ
どうするんディスカ?

471 名前:デフォルトの名無しさん[sage]:2005/05/24(火) 16:47:34
>>470
お前が気に食わないから教えない。

472 名前:デフォルトの名無しさん[sage]:2005/05/24(火) 17:47:48
meibo.txtを読み込み、名前、身長、年齢をフィールドに持つクラスを作る。
そして、コマンドライン引数で年齢を与えたときに、その年齢の人がいれば、名前と身長を表示する。
ただし、名前はHashSetで管理する。また、その年齢の人がいるかどうかを判断するメソッドage(int n)を実装すること。

meibo.txtの中身(名前、身長、年齢が半角スペースで区切ってある)
Aさん 178.4 56
Bさん 191.5 23

StringTokenizerで読み込めばいいのは分かるのですが、どうやってHashSetで管理すればいいのか分かりません。

473 名前:デフォルトの名無しさん[sage]:2005/05/24(火) 21:32:55
Java歴1週間の者ですが、質問させて下さい。

「2の10剰を計算するプログラムを作成」という問題で、
自分なりに一生懸命がんばってみた結果一応できたんですが、
自分で書いた癖にどうも理解できないところがありまして。

class test {
public static void main(String[] args) {
int x = 1, i = 1 ;
for (i = 1; i <= 10; i++) {

x =2 * x;
}

System.out.println(x);
}
}

これで一応コンパイルもでき、実行結果も正しく出力されたんですが、
xとiを関連付けるものがないのに何故これで上手くいったのか謎です。
どなたか教えて下さい。

474 名前:デフォルトの名無しさん[sage]:2005/05/24(火) 21:47:15
>>473
「変数iを用いているforループの中でxのかけ算を行っているからxとiは関連づけられている」と考えることはできると思います。

475 名前:デフォルトの名無しさん[sage]:2005/05/24(火) 21:54:26
ループなんてそんなもん。
ループカウンタなんてループの内容と
なんの関係もないし。
こういうものだと納得すれ

476 名前:Java初心者[sage]:2005/05/25(水) 06:56:18
>>472
ソース汚いですがどうぞ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.cgi?mode=thr&no=31
122 の 459.zip というファイルです。

コマンドライン引数は
[ファイルパス] [年齢]
という風にして、同じ年齢の人を全て表示するようにしてます (その動作テストはしてません)
コンパイラは 1.4.2_05 です。


477 名前:デフォルトの名無しさん[age]:2005/05/25(水) 14:29:53
簡単のため、例外処理は無いとします。
ファイルからデータを読み取り、スペース(" ")で区切られた塊ごとに文字列や値を取っていくことを
したいです。例えば、1行目が

aaaaa 123 cc 3

というファイルなら、String型変数にaaaaを、int型変数に123(百二十三)を、String型変数にccを、
int型変数に3を、というようにしたいです。
以下、データを読み取る部分を書きます。文字列なのか、数値なのかをどのように判定すればスマート
に収まるのか、ご教授お願いします。

*import java.lang.*;

...

String FileName = "filename.dat";
String line;
BufferedReader reader = new BufferedReader(new FileReader(FileName));
while((line = reader.readLine())!=null){
 StringTokenizer st = new StringTokenizer(line, " ");
 while(st.hasMoreTokens()){
  if( ??? ){
   Integer.parseInt(st.nextToken()) を適当なint型変数に入れる
  } else {
   残りは文字列として扱う
  }
 }
}
reader.close();

お願いします。

478 名前:デフォルトの名無しさん[sage]:2005/05/25(水) 15:23:24
ヒント:String#matches

479 名前:デフォルトの名無しさん[sage]:2005/05/25(水) 15:34:04
parseIntして、NumberFormatExceptionが発生したら文字列という風にするのはどうかと思ったが例外処理はつかったらダメなのか?

480 名前:477[sage]:2005/05/25(水) 15:49:02
>>478
出来ました。ありがとうございます。

>>479
ありがとうございます、それでもいけそうですね。
こちらのやり方にも挑戦してみます。

例外処理は勿論使っていますが、質問の内容とは関係が無かったので
ソースが見やすいようにと省略をしているだけです。


481 名前:472[sage]:2005/05/25(水) 18:12:35
>>476
ありがとうございます。無事動きました。

482 名前:473[sage]:2005/05/25(水) 22:23:03
そういうもんなんですかねぇ…
なんとなく理解はできました。

483 名前:M.B. []:2005/05/25(水) 23:12:40
なんつーかこのスレはマメな香具師が多いのだが、
このマメさ加減を異性に対して発揮したら(べつに同性に
発揮しても個人の自由だと思うが)、人生に新たな展開が
ありそうに思うのは漏れだけだろうか?(いや、漏れだけでは
ない。反語表現)
本稼動用のデータが当初の話よりめちゃくちゃ大きくて
JVM がヒープ領域喰いつくしてコケやがったぜ馬鹿野郎。
今夜はコードの大直しで残業だ畜生。

484 名前:デフォルトの名無しさん []:2005/05/25(水) 23:27:33
>>483
体言止め

485 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/25(水) 23:55:40
>>264の続きです。問題は
「4匹の亀を生成して,それらの亀に移動の指示を出すウサギ・オブジェクトを考える.

亀の現在位置が分かるように,例えば小さな四角形で亀を表示する.
「亀の1匹をマウスを用いてドラッグするとその亀がマウスに伴って移動するようにマウスド
ラッグのイベント処理プログラムを考えなさい.そして他の亀に対しては、向きは同じで距
離だけ異なる(2倍、半分など)ように移動するよう,ウサギが各亀に動きの指示を出すこ
とによって,万華鏡のような図形を描画するプログラムを作成しなさい. 」


 このときTurtleappletクラスにTurtleクラスのmoveやTurnに2点間の距離,角度等代入する
メゾッドを作って反映させろという課題が出されているのですがうまくいきませんので質問し
ます。期限は5/31日までとなっています。

作り途中のソースは:http://www.geocities.jp/htbgr132/oshiete/making.zip
問題のページは:ttp://www.ed.noda.tus.ac.jp/j-takeda/java-2005-2.html

 です。何度もすみませんが宜しくお願いします。





486 名前:デフォルトの名無しさん []:2005/05/26(木) 13:56:53
コマンド引数としてあたえられた1個以上の整数の和を
計算するアプリケーションを作成せよ。なお、文字列を
変換するにはIntegerクラスのparseIntメソッドを使って
次のようにすればよい。
int i;
i = Integer.parseInt("123");

お願いします

487 名前:デフォルトの名無しさん[sage]:2005/05/26(木) 14:46:20
int s=0;while(int i=0;i<args.length;++i)s+=Interger.parseInt(args[i]);


488 名前:デフォルトの名無しさん[sage]:2005/05/26(木) 16:44:46
>>487
いくらレベル低い質問だからって嘘教えるなよな。

>>486
ほれ。でもこの程度で他人に頼ってるようじゃ(ry
public static void main (String args[]) {
if(args.length==0){
System.out.println("引数がありません。");
System.exit(1);
}
int i=0;
int answer=0;
try{
for(;i<args.length;++i){
answer+=Integer.parseInt(args[i]);
}
System.out.println("引数の合計値は"+ answer+"です。");
}catch(NumberFormatException nfe){
System.out.println("与えられた第"+(i+1)+"引数は整数値として解釈出来ません。");
System.exit(1);
}
}


489 名前:デフォルトの名無しさん[sage]:2005/05/26(木) 16:51:12
>>488
どうでもいい事だがエラーメッセージは引数の位置よりその内容を表示したほうがいいような気がする

System.out.println(args[i] + "は整数値として解釈出来ません。");

490 名前:デフォルトの名無しさん[sage]:2005/05/26(木) 17:14:32
お、即レスが。
ふむ、確かにどこでどのような例外が発生したかが明確な方がいいな。
それじゃ、こんな感じでどうだ?
System.out.println("第"+i+"引数 "args[i] + " は整数値として解釈出来ません。");

491 名前:sage []:2005/05/26(木) 18:54:53
文字列に含まれる文字数のカウント第一のコマンド引数(1文字とする)で
与えられた文字が,第2のコマンド引数に何個含まれているかを求める
CountChar を作れ。
お願いします。

492 名前:デフォルトの名無しさん []:2005/05/26(木) 19:04:18

>>488,>>489,>>490
ありがとうございます

493 名前:デフォルトの名無しさん[sage]:2005/05/26(木) 21:21:20
>>491
java CountChar a abcaabc
だと「3」を出すって感じであってますか?
↓はそれを意識して作りました。

// CountChar.java
public class CountChar {
public static void main(String[] args) {
if( args.length != 2 ) {
System.err.println( "コマンドライン引数の数が不正." );
System.exit(1);
}
char[] chars1 = args[0].toCharArray();
char[] chars2 = args[1].toCharArray();
int count = 0;
if( chars1.length != 1 ) {
System.err.println( "第1引数は文字1文字にしてください." );
System.exit(1);
}
for( int i=0; i<chars2.length; i++ ) {
if( chars2[i] == chars1[0] ) count++;
}
System.out.println( args[1] + "の中に" + args[0] + "は" + count + "個あります." );
}
}

494 名前:デフォルトの名無しさん[sage]:2005/05/26(木) 21:54:23
>>492
ほれ。
class CountChar {
public static void main (String args[]) {
if(args.length!=2){
System.out.println("引数は 検索する文字 検索される文字列 の順で2つ与えて下さい。");
System.exit(1);
}else if(args.length<1){
System.out.println("第1引数に2文字以上の文字列("+args[0]+")が与えられています。\n1文字目を検索対象とし、2文字目以降は無視されます。");
}
char chr=args[0].charAt(0);
char[] targetChars=args[1].toCharArray() ;
int count=0;
for(int i=0;i<targetChars.length;i++){
if(targetChars[i]==chr)count++;
}
System.out.println(args[1]+"に含まれる"+chr+"の数は、"+count+"です。");
}
}


>>491
490は間違い、こっちが正しい。すまん。
System.out.println("第"+(i+1)+"引数 "args[i] + " は整数値として解釈出来ません。");


495 名前:デフォルトの名無しさん []:2005/05/26(木) 22:13:06
>>493>>494ありがとうございます。明日実行してみます

496 名前:デフォルトの名無しさん []:2005/05/27(金) 00:13:38
>>485
void move(double length){
x = x + length * Math.cos(3.14159/180*angle);
y = y - length * Math.sin(3.14159/180*angle);
line.addElement(new Point((int)x, (int)y));
}
void turn(double deg){
angle= angle+deg;
angle = angle-angle+(angle % 360);
}
void paint(Graphics g){
g.setColor(c);
for(int k = 0 ;k<line.size()-1;k++){
g.drawLine(((Point)line.elementAt(k)).x,((Point)line.elementAt(k)).y,
((Point)line.elementAt(k+1)).x,((Point)line.elementAt(k+1)).y);
}

}


497 名前:デフォルトの名無しさん []:2005/05/27(金) 02:15:26
ルートの計算、乗数の計算ってどうやるんですか?
^の演算子は使えないんですよね

498 名前:デフォルトの名無しさん[sage]:2005/05/27(金) 02:37:45
>>497
Math

499 名前:デフォルトの名無しさん []:2005/05/27(金) 02:49:17
>>498
!!!
d

500 名前:デフォルトの名無しさん[sage]:2005/05/27(金) 03:42:15
>>499
何だよその態度は

501 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/27(金) 08:59:09
>>496レス有難う御座います。それはTurtleクラスのmoveやturnのメゾッドですね。
 Vectorクラスを用いたTurtleクラスのプログラムを書いてくれて有難う御座います。
 私の現在の進行状況を話します。

まず一つの亀に対して、

マウスクリック時に取得した座標A(x1,y1),一つ前のマウスクリック時に得た座標をB(x2,y2)
とします。このmoveとturnに受け渡す値を現在考えています。

このとき
(2点間の距離)=(Turtleクラスのmoveに受け渡す距離)=Math.sqrt{(x1-x2)~2+(y1-y2)~2}
又,A,BをMath.atan2により極座標に変換した時の角度を各々r1,r2とします。この時

(BはAに対して動かす角度)=Math.abs(r2-r1);

となりますよね?この角度をturnに受け渡すプログラムは現在考えています。
以下の進行状況や問題はを:>>485,とtp://www.geocities.jp/htbgr132/oshiete/now1.zip
にまとめてあります。宜しくお願いします。

502 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/27(金) 09:00:58
http://www.geocities.jp/htbgr132/osiete/now1.zipでした。
又間違えてすみません。

503 名前:デフォルトの名無しさん[sage]:2005/05/27(金) 09:46:37
コマンド引数として与えられた1個以上の整数を、
小さい順に表示するアプリケーションを作成せよ。
お願いします。

504 名前:デフォルトの名無しさん[sage]:2005/05/27(金) 11:28:03
重複がないならTreeSetにいれてしまうとか
ソートしながら配列に詰め込んでいく方法は他に準備されてない?
全部入れた後ソートするならArraysとか
for (int i = 0; i < length; i++){
num[i] = Integer.parseInt(args[i]);
}
Arrays.sort(num);

505 名前:デフォルトの名無しさん[sage]:2005/05/27(金) 14:48:00
あるn次元のDoubleのList aと、同じくn次元のDoubleのListのList bListListを比較して、
aと全く同じ数値を持つListがbListListに含まれて"いない"か否かを返す
boolean isNotContain(List a, List bListList)を作りたいのですが
どういう風に書くべきでしょうか。なんかIteratorとネストがいっぱいでうまく書けんとデス

a = (1, 2, 3)
bListList = {(1, 2, 1), (1, 2, 2), (1, 2, 3)} これは含まれているのでfalse

a = (2, 2, 2)
bListList = {(1, 2, 1), (1, 2, 2), (1, 2, 3)} これは含まれていないのでtrue

506 名前:デフォルトの名無しさん[sage]:2005/05/27(金) 15:39:01
ListとDoubleならこんなあほな比較でIteratorを消す。
使うなよ
s = a.toString();
while(b.hasNext()){
if (s.equals(b.next().toString))return false;
}

507 名前:デフォルトの名無しさん[sage]:2005/05/27(金) 15:51:22
>>505のいう「次元」が size をさしている。
・size は n で固定。
と仮定して。

boolean isNotContain = false;
Iterator ite = bListList.iterator();
while(ite.hasNext()){
List list = (List)ite.next();
for(int i = 0; i < a.size(); i++){
if( ! (a.get(i)).equals(list.get(i)) ){
isNotContain = true;
break;
}else{
isNotContain = false;
}
}
}

こんな感じかなぁ


508 名前:507[sage]:2005/05/27(金) 16:02:44
ごめん。for のあとに

if( ! isNotContain ){
break;
}

を足しておいて。



といいつつ、実は

while( ite.hasNext() ){
if( a.equals( (List)ite.next() ) ){
isNotContain = false;
break;
}else{
isNotContain = true;
}
}

これでいけるわ。List#equals の仕様を確認しる。


509 名前:デフォルトの名無しさん[sage]:2005/05/27(金) 17:21:16
>>508
あれ?Listのequalsって要素同士の比較はObjectのequalsを使ってて
要素のDoubleが、数値は同じでもオブジェクトが別だから使えないと思ってたんですが…
ちょっとやってみます

510 名前:デフォルトの名無しさん []:2005/05/28(土) 00:33:10
だれか問題出して

511 名前:デフォルトの名無しさん []:2005/05/28(土) 01:03:06
args.lengthの数で場合分けしたいのですが、
一つしか値が入力されてない場合って
else if(args.length<1)
じゃダメなんですか?うまく動きません。

512 名前:デフォルトの名無しさん[sage]:2005/05/28(土) 01:05:00
>>511
ちゃんとソースを出せ。

513 名前:デフォルトの名無しさん []:2005/05/28(土) 01:07:00
>>511
else if(args.length==1)でいいのでは?
args.lengthは要素数
要素番号は[0]しかないので
0だと勘違いしているのかな?

514 名前:511 []:2005/05/28(土) 01:11:09
>>513
回答ありがとうございます。
0から数えるんじゃないんですか?
1こ、2こ、3こ以上で場合分けしたいんですが、3こ以上のときは
else if(args.length>2)でうまくいったんですが・・・

515 名前:511 []:2005/05/28(土) 01:12:54
あ、>だからこれでいいのか・・・スマソ

516 名前:511 []:2005/05/28(土) 01:32:32
できないので引き続き・・・

値を2つ代入する計算をするプログラムを作ってます。
コマンドプロント上で入力するのですが、一つもしくは三つ以上入力された場合に
独自のエラーメッセージを出したいのですが
int n=args.length;
if(n>2){System.out.println("値が三つ以上あります");}
else if(n<2){System.out.println("値が一つしかありません");}
else if(n==2){・・・以下計算式

と書いたら値を二つ入れた場合はちゃんと計算結果が表示されます。
3つ以上入れた場合も「値が三つ以上あります」と表示されます。
でも値を一つしか入れなかった場合、「値が一つしかありません」とは表示されず
javaのエラーメッセージが出ます。
どうしてだと思いますか?

517 名前:デフォルトの名無しさん[sage]:2005/05/28(土) 01:35:55
取りあえず、全部のソースを出せ。他の所が原因かもしれないだろ
あと、エラーメッセージ

518 名前:デフォルトの名無しさん []:2005/05/28(土) 01:39:13
int n=args.length;
のまえに
普通は
args!=nullで引っ掛ける必要がある

if(args==null) {
System.out.println("値がありません");
return;
}
int n=args.length;
if(n>2){System.out.println("値が三つ以上あります");}
else if(n<2){System.out.println("値が一つしかありません");}
else if(n==2){・・・以下計算式

519 名前:デフォルトの名無しさん []:2005/05/28(土) 01:40:54
>>517
>どうしてだと思いますか?
と、書かれているのだから
コレを「問い」と考えろ

520 名前:デフォルトの名無しさん[sage]:2005/05/28(土) 01:54:32
>>518
> int n=args.length;
> のまえに
> 普通は
> args!=nullで引っ掛ける必要がある

ねーよ。

要素数 0 の配列だ。

521 名前:デフォルトの名無しさん []:2005/05/28(土) 05:14:05
HTMLのファイル名を入力して、そのファイルの中からイタリック体の文字を探してリストにして出力するアプリケーションを作成しようと努力しましたが、まだ出来ません。宿題の締め切りが迫っています!助けてください。

522 名前:デフォルトの名無しさん[sage]:2005/05/28(土) 06:28:12
>>516
おまいさんのを例に簡単にだが作ってみた。

class Test{
  public static void main(String[] args){
    int n = args.length;
    if(n>2){System.out.println("値が三つ以上あります");}
    else if(n<2){System.out.println("値が一つしかありません");}
    else if(n==2){System.out.println(args[0]+args[1]);}
  }
}

少なくともこいつは動いた。
>>517のいうようにほかに原因があるんじゃね?

523 名前:デフォルトの名無しさん []:2005/05/28(土) 11:11:34
    else if(n<2){System.out.println("値が一つしかありません");}
↑値が0のときもコレに入るんじゃね?

524 名前:デフォルトの名無しさん []:2005/05/28(土) 13:41:27
入力
  
  名字: □
 
  名前: □

郵便番号: □-□

電話番号: □-□-□

という風にjavaでプログラミングしたいのですが、どうしたらいいのでしょうか? □の部分はJtextFieldでお願いします

525 名前:デフォルトの名無しさん[sage]:2005/05/28(土) 13:49:35
>>521
// FindItaric.java
import java.io.*;

public class FindItaric {
File htmlFile;
public static void main(String[] args) {
FindItaric self = new FindItaric();
self.print();
}
public FindItaric() {
System.out.print("htmlファイルのパスを入力 > ");
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
try {
htmlFile = new File( br.readLine() );
} catch( IOException ioe ) {
ioe.printStackTrace();
}
}
public void print() {
try {
BufferedReader br = new BufferedReader( new FileReader(htmlFile) );
StringBuffer buffer = new StringBuffer();
String line;
while( (line=br.readLine()) != null ) {
buffer.append(line);
}
System.out.println( htmlFile.getAbsolutePath() + "の斜字体部分を抜き出します...\n------" );
String string = buffer.toString();
for( int i=0; i<string.length(); ) {
int start = string.toLowerCase().indexOf("<i>", i);
if( start == -1 ) break;

526 名前:525[sage]:2005/05/28(土) 13:50:05
>>521
// つづき
int end = string.toLowerCase().indexOf("</i>", start);
String part = string.substring( start + 3, end );
System.out.println( part.trim() );
i = start+1;
}
System.out.println( "------\n正常終了." );
} catch( FileNotFoundException fnfe ) {
System.err.println( htmlFile.getAbsolutePath() + "が見つかりません.." );
} catch( IOException ioe ) {
ioe.printStackTrace();
}
}
}

527 名前:デフォルトの名無しさん[sage]:2005/05/28(土) 23:08:13
>>524
レイアウトマネージャの練習をさせる宿題か?
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24506


528 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 01:16:00
>>365
ttp://www.uplo.net/dl.html
ファイル:393 パスワード:answer

自由描画の課題は白紙にしておきましたので、日曜にでも適当に埋めて提出してください。
TurtleApplet.java 内の MainCanvas#showFreeShape が該当するメソッドです。
現在のまま提出すると蹴られますのでご注意下さい。

529 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 01:16:38
>>528
けんか売ってんのか?

530 名前:デフォルトの名無しさん []:2005/05/29(日) 02:52:37
>>528
綺麗だなコレ ツーかGUIなんだけど俺が5.0使っているからなのかな「メニュー」とかめちゃカッコイイ
おまえそれだけできるのであれば、自分でやれよまったく・・・

531 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 07:32:46
>>521
ほれ。
ttp://www.uplo.net/dl.html
ファイル:399 パスワード:italic

現状抜き出せるのは<i></i>タグだけ。
面倒なのでスタイルシートなどは考慮していない。好きに実装してくれ。
SwingのHTMLパーサー使ってるのでいじるのも比較的楽なはずだ。


532 名前:528[sage]:2005/05/29(日) 09:03:37
>>365 自由描画の例です。MainCanvas#showFreeShape を下のメソッドで置き換えて下さい。
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24529

>自分でやれよまったく・・・
一応弁解しておきますと、この課題は技術的な敷居が低く上下のコードからの転用が容易なこと、
質問内容が次の課題が主で、自由描画はupしていなくとも既に作成済みであろうこと、などを考慮し
すぐにでもコードを挿し直せると判断した上で書き込みました。
確かに、軽率で癇に障る言い方だったかも知れません。不快に思われた方には申し訳ありませんでした。

533 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 09:08:11
>>532
>すぐにでもコードを挿し直せると判断した上で書き込みました。

クリエイティブな部分は自分でやったから、実装は便所の書き込み掲示板のクズに投げればいいと。


534 名前:デフォルトの名無しさん []:2005/05/29(日) 09:14:33
>>532
おまえさぁ、教えられたことはできるけど
考えること創造力が足りないんじゃないの?
さすがAV世代だ

535 名前:句読点書けないバカをサマージャンボする俺 ◆9NQzQ21lx. [sage]:2005/05/29(日) 09:18:05
>>534


536 名前:デフォルトの名無しさん []:2005/05/29(日) 10:48:08
入力
  
  名字: □
 
  名前: □

郵便番号: □-□

電話番号: □-□-□

という風にjavaでプログラミングしたいのですが、どうしたらいいのでしょうか? □の部分はJtextFieldでお願いします。一回プログラム書いてもらえませんか?期限が明日までなのでお願いします。

537 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 11:58:35
>>536
なんか面白い話してくれたらいいよ。
と、いうかそれは見た目だけ作ればいいのか?

538 名前:デフォルトの名無しさん []:2005/05/29(日) 12:29:54
あるところにクマがいました
体も白けりゃ 尾も白い

539 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 12:33:53
>>537
>>536には言ってもムダだろうて。
他人のレス読まない人だから。

540 名前:537[sage]:2005/05/29(日) 13:08:53
>>539
そか。了解したわ

541 名前:538 []:2005/05/29(日) 13:15:19
がんばったんですがダメですか
>>527さんのコードは見ましたが
this.を利用していない点で信用できません
さらに
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
とかやっちゃってるし
部品貼り付けるときにSwingUtilities.invok系使ってないし・・・
結構皆さん、おみそなんですね

542 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 13:56:13
>>541
おまえにはプログラマは向いてない。やめたほうがいいかもしれない。
どうせthisとsuperの違いすらよくわかんないだろ?

543 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 14:00:50
>this.を利用していない点で信用できません
・・・・。(´・ω・`)

>setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);とかやっちゃってるし
・・・・。(´-`).。oO(ダメだこりゃ)

544 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 14:59:03

>>381=>>392=>>524=>>536



二 度 と 来 る な






545 名前:527[sage]:2005/05/29(日) 15:21:50
Javaの継承はis aの関係だからthisでも問題はないが、
なぜ親クラスのメソッドをわざわざ自分自身を示すthisと明示する必要があるのか。
教えてエロイ人(´・ω・`)

それと、DISPOSE_ON_CLOSEの何がダメなの?(´・ω・`)
リスナー登録すれば、DISPOSEイベントをキャッチできると思ってるんですけど。
SwingUtilitiesのinvoke系ってイベントの非同期化かなんかのメソッドだっけ?
イベント処理するクラスをきちんと用意しろってこと?
あの文面でイベント処理のスレッドを考慮して云々とは読み取れないんですけど。

つうか言い訳するとデスネ、
普段はフレームワークまわりを作ってるわけで、GUI詳しくないんですよ。゚(゚´Д`゚)゚。


あと、信用できないなら自分でヤッテクレ・・・(´-ω-`)

546 名前:538 []:2005/05/29(日) 18:43:26
thisっていうのは
super(title)
のことを言っているんではないのです
例えば
Container root = getContentPane();
txtLastname = new JTextField(20);の部分は
Container root = this.getContentPane();
this.txtLastname = new JTextField(20);と書いてくださいということです
SwingUtilitiesに付いては(厳密に言えば)部品を貼り付けるときにも使うべきなのです
>普段はフレームワークまわりを作ってるわけで、GUI詳しくないんですよ。
多分そうかなぁと思っていました、業務でSwingGUI使っている人いないだろうなと思いましたし
いくらプロでも知らないことはわからないだろうと思っていました
つーかこんだけ言う奴が元の質問者じゃないって事ぐらい早く気付いて そして句読点

547 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 19:49:38
servletの宿題もここでよろしいのですか?

548 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 20:07:12
>>547
(・∀・)イイ!!

549 名前:527 []:2005/05/29(日) 20:18:05
>>546
インスタンス変数にthisをつけるのはわかるけど、
(is aの関係でも)getContentPane()は親の機能なのでthisつけるのは賛成できないかな。
と、宗教チックな事を言ってみる。

>SwingUtilitiesに付いては(厳密に言えば)部品を貼り付けるときにも使うべきなのです
なぜ、使うべきなのか教えてください。
それがプログラムの構造的なものから来ているのか、使用しない場合の危険性としてどういう点が挙げられるのか等。
特に厳密にと念を押している点についてもお願いします。
説明が面倒であれば、それについて論じているページ(信頼性の高いサイト)でも。

ちなみに、業務でもSwing使っているところはありますよん。
わたしゃー携わってませんけど、某パッケージ製品とか。


550 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 20:36:06
>>549
http://homepage1.nifty.com/algafield/JavaGUIFaq19j.html

の「Q4.3 SwingのGUIを起動する正しいやり方は? 」によれば
”Swingのどこかにスレッド関連のバグがあるので、GUIの構築と始動はつねにEDTから行う必要がある”。
(EDTはイベントディスパッチスレッド)
だそうな

551 名前:550[sage]:2005/05/29(日) 20:38:25
http://homepage1.nifty.com/algafield/JavaGUIFaq19j.html#four3
度々スマソ、さっきのは↑だと直接いける

念のため>>538とは別の人でつ

552 名前:538 []:2005/05/29(日) 20:54:41
>>549
>なぜ、使うべきなのか教えてください。
僕のような学生でも知っていることです
いつもあなたたちが言っているように「API読め」とか言いたいです

>ちなみに、業務でもSwing使っているところはありますよん。
そういうときだけそうやって言うし・・
現状少ないのは事実

PGだけの実力は余り大差ないのね
別にその業界行くわけではないけど
「プログラミングできるの?キャー頭いいのね」とかいう女がバカに見えた
本人たちも気に入ってもらえると思って大げさにしている感があるが・・・

553 名前:550[ドキュメント嫁ならよく見かけるが]:2005/05/29(日) 21:01:32
「APIを読め」なんていったい誰が言ってたのか非常に興味があったりw

554 名前:M.B. []:2005/05/29(日) 21:17:46
>> ちなみに、業務でもSwing使っているところはありますよん。
> そういうときだけそうやって言うし……
> 現状少ないのは事実
「IE がSwing をサポートしてないから、Applet 化することを考えて
AWT を使え」みたいな話が通用してたりするから仕方がない部分もあるが、
そんな話に乗っかる香具師は、1.5 に乗り換えそこなって
絶滅すると思われ。

 ……show() で警告が出たときは正直焦った(^_^!)


555 名前:デフォルトの名無しさん[sage]:2005/05/29(日) 22:31:09
>>554
IEでサポートされないJavaも滅びかけてる気もします。

556 名前:527 []:2005/05/29(日) 22:44:00
確かにチュートリアルの方に載っていたわ。Sun推奨の方法なのね。
どんな障害が出るのかは書かれていないけど・・・。

あくまでも、「業務でSwingGUI使っている人いないだろうなと思った」に対して、
「そんなことはありませんよ」というだけなのですが、
>そういう時だけそうやって言う
・・・意味がわからないです。
その文面だと業務でSwingを使ってる事はないと読みとれたものですから・・・。
揚げ足取るなってこと?
確かにSwingの業務実績は少ないと思います。
そもそもJavaを採用する場合、WEBをターゲットとした案件が殆どですから。
リッチクライアントとしてWebStartから起動するなんて事もありますけど。

おっしゃる通り、デバドラやファーム書いてる人は別として、
Javaは業務アプリを対象とした場合が多いのでJavaのPGの能力なんてものは、
大半の人は趣味でやってる人と能力は変わらないと思うよ。
J2EEのインフラ系(フレームワーク、EJBとか)の実装をやってる人はまた別だと思うけど。

それに実装ってそんな時間かからないしね・・・。(ものによるけど)
それよりも、設計とかミーティングとかのが時間割かれるわけで、
予算・スケジュール管理やるようになると、業務に携わっても仕様決めたりレビューしたり(T-T)クスン

1.5はなかなかいい感じに仕様追加されてるけど、
AIXとかで動くVMってまだまだ出そうにないんだよね。
それよりも、Generics使ってフレームワーク作ったら死にそうだ・・。
コンヴァリアントとか考えると頭痛くなるよ。(’A`)ヴァー

557 名前:デフォルトの名無しさん []:2005/05/29(日) 23:13:20
>>502
Rabbit.class
---------------
import java.awt.Graphics;

class Rabbit{
private double prex, prey;
private double angle,damyangle;
private int spx = 200, spy = 200;
Turtle[] kamekichi = new Turtle[4];
Rabbit(int x, int y){
prex = x;
prey = y;
angle = 0;
damyangle = 0;
int[] pointx = {x,x + spx, x, x + spx};
int[] pointy = {y,y, y + spy, y + spy};
for(int i = 0;i<4;i++){
kamekichi[i] = new Turtle(pointx[i],pointy[i]);
}
}

558 名前:デフォルトの名無しさん []:2005/05/29(日) 23:14:06
>>557続き
void move(int x, int y, Graphics g){
damyangle = angle;
angle = (int)Math.toDegrees(Math.atan2((y-prey),(x-prex)));
double length = Math.sqrt(Math.pow((x-prex),2)+Math.pow((y-prey),2));
for(int i = 0;i<4;i++){
kamekichi[i].turn(angle-damyangle);
kamekichi[i].move(length*(i+1));
kamekichi[i].paint(g);
}
prex = x;
prey = y;
}
}
ーーーーーーーーー


559 名前:デフォルトの名無しさん []:2005/05/29(日) 23:15:43
>>558続き
TurtleApplet.class
----------------------
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class TurtleApplet extends Applet {
Rabbit rabit;
private int xx = 0, yy = 0;
private boolean f = true;
public void init() {
// アプレットの背景色を白に設定
this.setSize(new Dimension(800, 600));
setBackground(Color.white);
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
if(f){
repaint();
xx = e.getX();
yy = e.getY();
rabit = new Rabbit(xx,yy);
f = false;
}
}


560 名前:デフォルトの名無しさん []:2005/05/29(日) 23:16:31
>>559続き
public void mouseReleased(MouseEvent e){
if(!f){
f=true;
rabit = null;

}
}
});
addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
Graphics g = getGraphics();
rabit.move(e.getX(),e.getY(), getGraphics());
g.dispose();
}
});
}
public void paint(Graphics g) {
super.paint(g);
}
}


561 名前:547[sage]:2005/05/30(月) 00:19:57
htmlフォームより受けたパラメーターを、”サーブレットでXMLファイルに書き出す方法”(←ここ)が分からないので、誰か教えていただけると嬉しいのですが・・・。
こんな抽象的な質問じゃだめですよね・・・(汗

562 名前:547[sage]:2005/05/30(月) 00:29:36
注釈で「プリント文でファイルに書き出せばよい。」ともあります。。

563 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 00:45:07
>>561
XMLのDTDは指定されてないの?

564 名前:547[sage]:2005/05/30(月) 02:45:16
単純にテキストファイルとしてxmlのソースを書き出す感じっぽいです・・・。


追加質問なのですが・・・具体的な課題を書いたほうが質問しやすいでしょうか・・・。

履修申請のフォームを作るという課題なのですが
フォームで科目ごとにチェックボックスがあり、チェックされている科目のみ「科目名」「教員名」をxmlファイルとして出力するというモノです。
※最初に考えたのは、フォームで name="(科目コード)" value="1"
にして、サーブレットで科目ごとすべて値を受け取り もしvalueが1ならばprintするというものを描いたのですが、
それだと値がnullの場合(チェックされない場合)にエラーが出てしまうためダメでした・・・。

全然ダメダメな私に誰か力をください・・・。

565 名前:547[sage]:2005/05/30(月) 06:22:26
私なりに頑張って、すごく効率の悪いプログラムではありますが課題の要求するものは出来ました。
しかし、どう考えてもスマートではないので、もしやっていただける方がいましたらスマートなやり方を教えていただけると幸いです。

ちなみに私のやり方は・・・
上で書いたようにフォームで name="(科目コード)" value="1" にして、サーブレット側で
String s(科目コード) = req.getParameter("(科目コード)");
を科目数分書き(この時点でスマートじゃない・・・
if節で s(科目コード)がnullじゃなかったらxxx.write((XML文))を。というメソッドをまた科目数分・・・
これを.xml形式でBufferedWriterを使って出力。
ということで一応要求するものはできました。

566 名前:デフォルトの名無しさん []:2005/05/30(月) 12:56:02
2週間以上考えたんですが、出来ませんでした。どなたか教えて下さい。
入力した数字を棒グラフと折れ線グラフにするんですが、どちらのグラフかは
選べるようにします。(ボタンで選択化にする?)
入力する数字の数には制限を設けません。(X軸、Y軸とも)
アプレット、アプリケーションのどちらでも結構です。宜しくお願いします!

567 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 15:33:16
>>503おねがいします。

568 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 15:53:49
>>567(503)

>>504

569 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 15:54:25
>>568わかりませんでした。

570 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 16:01:09
>>569
いや、そのまんまなんだけどね・・・。

引数を int の配列に突っ込んで Arrays#sort かませばソートしてくれる。
で、それを表示すればよい。

↓エラーチェックとかしてないサンプル

import java.util.Arrays;

public class Test{
public static void main(String args[]){
int num[] = new int[args.length];
for (int i = 0; i < args.length; i++){
num[i] = Integer.parseInt(args[i]);
}
Arrays.sort(num);
for (int i = 0; i < num.length; i++){
System.out.println(num[i]);
}
}
}




571 名前:RyuichiXP[ryuichish@hotmail.com]:2005/05/30(月) 16:02:04
>>528
>>532
>>557
>>558
>>559
>>560
本当に皆さん有難うございます。rabbitクラスの読ませ方は私でも思いつきませんでした。あと一日
ですが参考にさせていただきます。未熟者の私にいろいろ教えていただき有難うございました。
 
 現在rabbit部分は実装していませんが、4匹の亀がうまく動いているので減点覚悟で提出しよう
と思っています。

572 名前:デフォルトの名無しさん []:2005/05/30(月) 16:34:54
>>570
java.util.Arraysでなく違うのをimportしてました汗

573 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 21:05:16
http://www.shonan-it.ac.jp/each_science/info/lecture/oo_java/OOprog-2.pdf
お願いします

574 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 21:05:39
>>547
全体の仕様が不鮮明なので得られる情報のみで。

checkboxのnameを全て同じ名前にします(例:kamoku)
valueは各科目の固有の値(科目id)を。

そんでもって科目を表すクラスを作る。
class KamokuConst {
String id;
String kamoku;
String teacher;
あとはゲッターセッター
}

科目を扱うクラスを作る。
class KamokuManager extends HashMap {
このクラスには科目(キーは科目id)を格納する。
ソースコードに直打ちはナンセンスなのでpropertiesファイルにでもして読み取りましょう。
}

JSPで書き出すときは、KamokuManagerをぶん回してinputタグをはき出す。
Servletで処理をする場合にはパラメータ名"kamoku"を取得する。
request.getParametersValueを使えば科目idのString配列が帰ってくる。
ただし、チェックが一つの場合にはgetParameterを使用する事になるので、そこは工夫してくれ。

getParametersValueがnullならgetParameterの取得を試みる。nullでなければそのまま返す。
getParameterもnullならチェックは無し。nullを返す。
getParameterがnullでなければ、サイズが1の文字列配列として返す。
こういうメソッド作っておけば、常に配列で受け取れる。


575 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 21:13:30
>>573
Circle2のようにってCircle2ってどこに出てくるんだよ

同じページに解答例あるんだからこれでいーんじゃねーの( ´,_ゝ`)
http://www.shonan-it.ac.jp/each_science/info/lecture/oo_java/KADAI-3.pdf


576 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 21:34:28
ある実行プログラムを終了させたいのですが、コマンドライン引数を

System.out.println("数字を入力してください。");
String inputValue = null; // inputValueに代入したい
inputValue = Io.stdin(); // Io.stdin()はキーボード入力を処理するメソッド

に入れて、inputValueの中身が数字と文字列のごちゃまぜの時に、
プログラムを終了させるにはどうすればいいのですか?

if(ここの条件式が分かりません。){
System.exit(-1);
}

577 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 22:23:21
>>576
if(inputValue.matches("\D")) {
  System.out.println("数字以外の文字も含まれているため終了します");
  System.exit(-1);
}

578 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 22:25:24
>>575解答あったんですね。ありがとうございました

579 名前:576 []:2005/05/30(月) 22:52:54
>>577
ありがとうございました。

580 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 23:05:09
Integer.parseInt()でNumberFormatException投げさせる方が一般的じゃないかナーと思った。
どうしてもif文じゃなきゃヤだという場合はしょうがないけど。。

581 名前:デフォルトの名無しさん[sage]:2005/05/30(月) 23:14:50
>>580
私は576さんではありませんが、その場合ですとどのように書くのでしょうか?
後学のために教えていただけると幸いです。

582 名前:580[sage]:2005/05/30(月) 23:22:32
>>576のIo.stdin()なるメソッドを使うとこうなると思います。

System.out.println("数字を入力してください.");
String inputValue = Io.stdin();
int i = 0;
try {
i = Integer.parseInt(inputValue);
// iを用いた処理...
} catch(NumberFormatException nfe) {
System.out.println("整数に変換できないため終了します.");
System.exit(-1);
}



583 名前:581[sage]:2005/05/30(月) 23:27:56
>>582
ありがとうございます。似たような問題で詰まっていたので助かりました。

584 名前:デフォルトの名無しさん []:2005/05/31(火) 20:39:27
宿題で出されたものと近いグラフみつけました。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24562
入力されたデータでグラフが出来るように変えたいです。
教えて下さい。


585 名前:デフォルトの名無しさん []:2005/06/01(水) 00:59:01
全然分からないので教えて下さい。
次のクラスを作成し、実行するプログラムを作って下さい。

1.次のように、在庫管理を表すZaikoクラスを作成して下さい。ただし、
個数は、非負の数にして下さい。
フィールド

private String name; // (名前)
private int count;// (個数)

メソッド
public void setName(Stringn); // (名前を設定)
public void setCount(int c); // (個数を設定)
public String getName(); // (名前を得る)
public int getCount(); // (個数を得る)
public void disp(String n, int c); // (在庫内容を表示する)

コンストラクタ
public Zaiko(); // (初期値を[noname],0とする)
public Zaiko(String n,int c); // (初期値を指定する)

586 名前:デフォルトの名無しさん []:2005/06/01(水) 01:24:05
コマンドフロンプトでjavaを使い

*
**
***
****
***
**
*

と表示させたいのですがどうすればいいのでしょうか?
星4個になるまでは

class Sample1
{
public static void main(String args[])
{
for(int a=1; a<=9; a++){
for(int b=0; b<a; b++){
System.out.print("*");
}
System.out.print("\n");
}
}
}

と言うことはわかってますがそれ以降のやり方がわかりません


587 名前:デフォルトの名無しさん []:2005/06/01(水) 01:29:48
訂正

class Sample1
{
   public static void main(String args[])
   {
     for(int a=1; a<=4; a++){
      for(int b=0; b<a; b++){
       System.out.print("*");
     }
      System.out.print("\n");
    }
   }
}


588 名前:521 []:2005/06/01(水) 01:50:37
525&531有難う御座いました。助かりました。

589 名前:デフォルトの名無しさん []:2005/06/01(水) 02:17:51
586 587 とけました

590 名前:デフォルトの名無しさん[sage]:2005/06/01(水) 09:43:46
>587

public static void main(String[] args){
System.out.println("*");
System.out.println("**");
System.out.println("***");
System.out.println("*****");
System.out.println("***");
System.out.println("**");
System.out.println("*");
}

591 名前:デフォルトの名無しさん[sage]:2005/06/01(水) 10:06:34
System.out.println("*\n**\n***\n*****\n***\n**\n*");


592 名前:デフォルトの名無しさん[sage]:2005/06/01(水) 17:56:38
>>590-591
アスタリスク5個ある

593 名前:デフォルトの名無しさん[sage]:2005/06/01(水) 18:05:13
なんかよーわからんが、

 int n = 4;
 for(int a=1; a<n*2; a++){
  int c = (a>n?n*2-a:a);
  for(int b=0; b<c; b++){
   System.out.print("*");
  }
  System.out.print("\n");
 }

こうしたい?

594 名前:591[sage]:2005/06/01(水) 18:20:13
on_

>>590をコピって書いたから・・・。


真面目に素直に書くとこんな感じかな?

int size = 4;

for(int i = 1; i < size; i++){
for(int j = 1; j <= i; j++){
System.out.print("*");
}
System.out.println();
}
for(int i = size; i > 0; i--){
for(int j = i; j > 0; j--){
System.out.print("*");
}
System.out.println();
}
}
}


595 名前:デフォルトの名無しさん[sage]:2005/06/01(水) 20:37:27
フレームを開く
その中に小さな画像が何枚かポツンポツンとある、どこでもいい
クリックするとクリックした画像がフレームいっぱいに等比拡大する
もう一度クリックすると元に戻る

そんなプログラムを作ってください orz

596 名前:デフォルトの名無しさん []:2005/06/01(水) 20:46:44
お忙しいところ申し訳ありませんが
ttp://www.ed.noda.tus.ac.jp/j-takeda/blob.html
↑のような宿題が出てしまいました。
僕にはちんぷんかんぷんですが、
特にしみの大きさを重複せずに数えるところができません。
できればプログラムをご教授いただければ助かりますが、
アルゴリズムでもかまいませんのでよろしくお願いいたします。

597 名前:584[sage]:2005/06/01(水) 21:19:37
>>584 ヨロシクお願いします!今週末、提出します。

598 名前:デフォルトの名無しさん []:2005/06/02(木) 00:26:19
宿題ってわけではないですが、次のようなのを作ってもらえませんか?

ミニロト、ロト6の当選チェックアプリ
コマンドラインでもGUIでも、どっちでもOK

入力は
 ミニロトorロト6の指定
 弟何回の指定か、抽選年月日指定のどっちかをサポート
 購入数字を空白区切りで記録したファイル名(1行に1組で組数は十分大きな数まで)

出力は
 当選した購入数字の組と、等数
 一組も当選してない場合は、当たりなしのメッセージ

抽選数字データは
http://www.takarakuji.mizuhobank.co.jp/index.html
などから自動取得する

こんな感じで、よろしく



599 名前:デフォルトの名無しさん[sage]:2005/06/02(木) 00:31:37
宿題以外はスレ違い

600 名前:デフォルトの名無しさん []:2005/06/02(木) 00:46:15
javaでツリーコマンドを表示するプログラムを教えてくり!

601 名前:547[sage]:2005/06/02(木) 00:54:25
>>574
遅くなって申し訳ないです。アドバイスありがとうございます!

提出は前の状態でしましたが、これからちょっと頑張って教えてくださった方法で作り直してみます。

602 名前:デフォルトの名無しさん []:2005/06/02(木) 01:27:06
585の者なんですけど、どなたか分かるかたいたら教えて下さい!!

603 名前:デフォルトの名無しさん []:2005/06/02(木) 03:19:47
javaでunixのツリーコマンドのようなプログラムを教えてくだされ。

604 名前:名前は開発中のものです。[sage]:2005/06/02(木) 03:56:41
javadoc?

605 名前:デフォルトの名無しさん []:2005/06/02(木) 14:46:27
readLineメソッドが改行を読み込んだ時、
戻り値として何が返ってくるのか教えてください。
期待する結果としては、改行を表すコードをコンソールに表示したいです。
それを実現するプログラムを是非教えてもらいたいです。
お願いします!

606 名前:デフォルトの名無しさん[sage]:2005/06/02(木) 14:54:10
1.3次元3角形のそれぞれの頂点にx、y、zの座標値、および法線Nと光源入射ベクトルLを、前回問題のr、g、bのカラー情報に代わって定義し、
3角形内部を、内挿補間法を用いて塗りつぶしを行う。3角形内部のカラーを内挿補間されたベクトルから Phongシェーディングによる輝度を求め表示すること。
2.上記問題でLのそれぞれの3成分をスクロールバーを用いて変化させ、3角形上で輝度が変化することを確認する。よって1の問題も当初からスクロールバーを用いても良い。
お願いします。

607 名前:デフォルトの名無しさん[sage]:2005/06/02(木) 15:05:05
>605
改行を読み込んだ時点でも糞も無い。
Java.io.BufferedReader.readLine()は改行までを一気に読み込み、改行文字を除いた読み込み内容を返す。
他のクラスの同名のメソッドも同じような動作をするはず。
従って、このメソッドを使って改行コードを返すコードを書くのは不可能。

BufferedReaderとかの使いたいクラスを継承してクラス作れ。
んで、read()を使って一文字ずつ読んでいって、改行が登場した時点で処理を分けるようなメソッド書け。

608 名前:605 []:2005/06/02(木) 15:21:50
>607
ありがとう!


609 名前:デフォルトの名無しさん []:2005/06/02(木) 19:28:39
すみません、ちょっとお伺いします。
Stackっていうクラスありますよね?
Stackでは格納できる要素数の上限は決められないのでしょうか。
どなたか分かる方教えていただけないでしょうか。
宜しくお願いします。

610 名前:デフォルトの名無しさん []:2005/06/02(木) 20:28:33
>>609
addメソッドあたりをオーバーライドしてやればよいかも知れんけど、
要素数の上限が決まっているなら、普通の配列を使ってやった方がええよ。
例えば上限100のスタックなら、たった↓だけのことだし。

Object[] array = new Object[100];
int pos = 0;

void push(Object o) {
array[pos++] = o;
}

Object pop() {
return array[--pos];
}

上限を超えればArrayIndexOutOfBoundsExceptionが飛ぶので検出できる。

611 名前:デフォルトの名無しさん []:2005/06/03(金) 00:13:18
>>596
class Blob{
private boolean[][] blob;
private int x, y;
private boolean[][] damydata;
private int serchcount;
public static void main(String args[]){
boolean[][] data = {{true,false,true,true,false},
{false,true,true,false,false},
{false,false,false,false,false},
{true,false,false,true,false},
{true,false,true,true,true}};


Blob blo = new Blob(5,5,data);
blo.mainSerch(3,2);
System.out.println(blo.mainSerch(1,2));
System.out.println(blo.maxblobcount());
}

612 名前:デフォルトの名無しさん []:2005/06/03(金) 00:14:01
>>611next
Blob(int x, int y, boolean[][] blob){
this.x = x;
this.y = y;
this.blob = blob;
damydata = new boolean[x][y];
}
int getserchcount(){
return serchcount;
}
int maxblobcount(){
serchcount = 0;
int max =0;
for(int i = 0;i<x;i++){
for(int j = 0;j<y; j++){
if(max<mainSerch(i,j)) max = serchcount;
}
}
return max;
}


613 名前:デフォルトの名無しさん []:2005/06/03(金) 00:14:35
>>612next
int mainSerch(int px, int py){
for(int i = 0;i<x;i++){
for(int j = 0;j<y;j++){
damydata[i][j]=false;
}
}
serchcount = 0;
serch(px+1,py+1);
return serchcount;

}
void serch(int px, int py){
if(px>=0 && py>=0 && px<x && py<y){
if(damydata[px][py]) return;
if(blob[px][py]){
serchcount++;
damydata[px][py]=true;
serch(px+1,py+1);
serch(px+1,py);
serch(px,py+1);
serch(px-1,py);
serch(px+1,py-1);
serch(px-1,py+1);
serch(px-1,py-1);
serch(px,py-1);
}
}
}
}


614 名前:デフォルトの名無しさん []:2005/06/03(金) 00:17:37
>>613です
考え方としてだけですが、
ダミーの配列をもって、ポイントを検索したかどうか、記入し
ていく方法です。
データの収得方法は、考えていません。
配列も、boolean型となっています。


615 名前:609 []:2005/06/03(金) 00:34:49
>>610
ありがとうございます!
解決できました!

616 名前:596 []:2005/06/03(金) 00:36:28
>611,612,613
ありがとうございます。
大変助かりました。
熟読して理解するようにがんばります。
本当にありがとうございました。

617 名前:デフォルトの名無しさん []:2005/06/03(金) 05:25:48
>>616さん
引数のx,y逆になってますので交換して与えて試してください。

618 名前:デフォルトの名無しさん[sage]:2005/06/03(金) 09:30:48
データを格納した順序と同じ順序で取り出すことができるデータ構造を
待ち行列という。整数型のデータを格納する待ち行列クラスを定義せよ。
お願いします。

619 名前:デフォルトの名無しさん []:2005/06/03(金) 10:53:42
>>618
シングルスレッドで、かつサイズ固定でいいなら、
↓が一番高速で簡単な実装かな

class Queue {
int[] array = new int[100];
int pos1 = 0,pos2 = 0;

void push(int a) {
if (pos1 - pos2 >= array.length) throw new ArrayIndexOutOfRangeException();
array[(pos1++ % array.length)] = a;
}

int pop() {
if (pos1 <= pos2) throw new ArrayIndexOutOfRangeException();
return array[(pos2++ % array.length)];
}
}

マルチスレッドなら各メソッドをsynchronized指定すればよい。
割り当てたサイズを超えるか、空の待ち行列からデータを取ろうとした場合、
例外を投げるのではなく、サイズを割り当てなおしたり、
別スレッドからpopが呼び出されて空きができるまで待ったり、
あるいはデータが追加されるまで待つという実装も考えられる。
その辺りを正確に説明すれば、もっとよい答えが返ってくるかも。

パフォーマンスを犠牲にしてもよいなら、プリミティブではなく、java.lang.Integerクラスを使うようにして、
Jakarta Commons辺りか、J2SE5でjava.utilパッケージに加わったQueueの多種多様な実装を使えばよい。
それでは宿題にならないと言うなら、ソースをダウソしてパクったらイイ(・∀・)!

620 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 07:35:44
>>618

public class JavaQueue extends ArrayBlockingQueue
{
}

621 名前:デフォルトの名無しさん []:2005/06/04(土) 15:42:11
>>618
LinkedListのオブジェクトコンポジションで解決たい


622 名前:デフォルトの名無しさん []:2005/06/04(土) 16:41:17
import java.io.*;

public class Kasa{
public static void main (String[] args)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("降水確率を入力してください。");
String line = reader.readLine();
int n =Integer.parseInt(line);
System.out.println("降水確率は"+n+"%です!");
if(n >= 50);
{System.out.println("傘を忘れないように!");}
else
{System.out.println("傘はたぶんいりませんね!");}

System.out.println("いってらっしゃい!");
}
catch(IOException e){
System.out.println(e);}
catch(NumberFormatException e){
System.out.println("数字の形式が正しくないよ");
}
}
}

こんにちは。
これで実行するとelseの部分でひっかかってしまいます。
elseを消去するとできるんですがなんでelseを入れるとできなくなってしまうんでしょうか?
お願いします(>.<)

623 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 16:42:40
;

624 名前:デフォルトの名無しさん []:2005/06/04(土) 16:45:59
>>623
すいません、わかりました、初歩的なミスですね・・。
ありがとうございます

625 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 16:55:08
readLine()を使って、コマンドライン引数として指定されたファイルを上から順にコマンドプロンプト上に表示するようにしているのですが。
その際読み込ませるテキストファイルで
10 4

テスト
・・・
とやってそれを実行するとコマンドプロンプト上では
10 4


テスト
・・・
のように間に改行が一行入ってしまいます。
これはなぜなのでしょうか?
テスト以降の文字列はちゃんと改行もそのままで読み込んでくれているのですが。
どなたかわかる方よろしくお願いします。

626 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 16:56:49
テキストをそのままコピーしたつもりなのにこれでも一行改行が多くなってしまっている・・・。
これは何か使用なのでしょうか・・・。

627 名前:デフォルトの名無しさん []:2005/06/04(土) 17:34:41
>>625
プログラムの書き方の問題だろう
ソース見せないと何もいえない・・・

628 名前:デフォルトの名無しさん []:2005/06/04(土) 17:49:17
int[ ] x[ ];  xの使い方はどうなるか、簡単な例をプログラムで。
また,なぜ,そうなのか理由をコメントで記述

お願いします

629 名前:デフォルトの名無しさん []:2005/06/04(土) 18:21:56
import java.io.*;
public class Kasa{
public static void main (String[] args)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("降水確率を入力してください。");
String line = reader.readLine();
int n =Integer.parseInt(line);
System.out.println("降水確率は"+n+"%です!");
if(n > 100)
{System.out.println("降水確率は100までで記入してください!");}

else if(n >= 50)
{
{System.out.println("傘を忘れないように!");}
else
{System.out.println("傘はたぶんいりませんね!");}

System.out.println("いってらっしゃい!");
}
}
catch(IOException e){
System.out.println(e);}
catch(NumberFormatException e){
System.out.println("数字の形式が正しくないよ");}

}
}
すいません、先ほどの続きです。降水確率を101以上だとするといってらっしゃいって文字が出ないようにしたくて
こうしたんですけど最後のelseでエラーがでます。なんでだかわかりません、お願いします

630 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 18:28:28
class Kasa{
public static void main (String[] args)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try{
System.out.println("降水確率を入力してください。");
String line = reader.readLine();
int n =Integer.parseInt(line);
System.out.println("降水確率は"+n+"%です!");
if(n > 100)
{System.out.println("降水確率は100までで記入してください!");}

else if(n >= 50)
{System.out.println("傘を忘れないように!");}
else
{System.out.println("傘はたぶんいりませんね!");}

System.out.println("いってらっしゃい!");
}

catch(IOException e){
System.out.println(e);}
catch(NumberFormatException e){
System.out.println("数字の形式が正しくないよ");}

}
}

お兄ちゃんが直してあげたぞ。
Javaに慣れてないなら、いきなり長いソースを書かずに、
一文づつ一文づつ書いてコンパイルするとよろし。


631 名前:デフォルトの名無しさん []:2005/06/04(土) 18:32:43
いや・・このやり方はできたんですけど、
これだと101以上を入力するといってらっしゃいって文字が出ちゃうんで出ないように
したいんですよ。
で、出ないようにしたくて上記のようにしたらelseでエラーになっちゃうんです

632 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 18:39:58
class Kasa {
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(
System.in));
try {
System.out.println("降水確率を入力してください。");
String line = reader.readLine();
int n = Integer.parseInt(line);
System.out.println("降水確率は" + n + "%です!");
if (n > 100) {
System.out.println("降水確率は100までで記入してください!");
}
else {
if (n >= 50) {
System.out.println("傘を忘れないように!");
} else {
System.out.println("傘はたぶんいりませんね!");
}
System.out.println("いってらっしゃい!");
}
} catch (IOException e) {
System.out.println(e);
} catch (NumberFormatException e) {
System.out.println("数字の形式が正しくないよ");
}
}
}
ほれ

633 名前:デフォルトの名無しさん []:2005/06/04(土) 18:50:33
>>632
あ、ありがとうございます。
なんか急にできるようになりました。
なんでさっきのでできなかったのが原因が不明です・・。


634 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 18:54:45
>>625
System.out.println("hoge");

hoge
と出力した後に改行するぞ。

635 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 20:43:52
うむ。
C++のprintfとは違うのだ

636 名前:デフォルトの名無しさん []:2005/06/04(土) 20:55:50
>>635
誰が一緒だと言った

637 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 20:57:12
(´-`).。oO(C++のprintf……)

638 名前:デフォルトの名無しさん[sage]:2005/06/04(土) 21:33:33
複数のボタンを作ってボタンによってそれぞれ異なる図形を表示させるプログラムを作りたいんですけど
どうしたらよいでしょうか?

639 名前:デフォルトの名無しさん []:2005/06/04(土) 21:41:26
button1.addActionListener(new ShikakuAction(canvas));
button1.addActionListener(new MaruAction(canvas));
button1.addActionListener(new SankakuAction(canvas));

640 名前:638[sage]:2005/06/05(日) 03:27:16
フレーム作ってボタン配置して図形を表示させるパネルを設置しているのですが
どうもよくわかりません。


641 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 03:34:21
ボタンを押した時に、どの関数が実行されるかはaddActionListenerで指定するだろ。
そこで別々の関数を指定してやればいいだけの話だ。

つーか、どこが分からないのかさっぱり分からん。
そもそもボタン1つでそれを押すと図形を表示するプログラムは書けるのか?

642 名前:デフォルトの名無しさん []:2005/06/05(日) 04:31:21
638 も 641 も
Java GUI の入門書を買って読んだ方がいいよ

643 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 07:38:38
>>642
人をバカにするしか脳がない僕と君。一緒に死ぬか。

644 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 10:22:55
1週間ほど悩んでいますが、どうしても自己解決できないので質問に来ました。

ウィンドウ内を、「20枚のgif画像によるアニメーション」が直線的に動き、
1.ウィンドウの端にぶつかると跳ね返る
2.ウィンドウの端にぶつかるとアニメーションの再生/停止が切り替わる
というものを作るという課題です。

1.はすぐに実現できたのですが、2.がどうも上手くいきません。
public void run()内のコメント文が、自分が考えたものなのですが、
コメント文を外してコンパイル、実行をすると、全く動作しないものとなって
しまいます。推敲お願いします。

ttp://www.uplo.net/
ステルス型
ファイル:538
パスワード:trap

645 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 10:31:51
int main()
{
/*これ*/
/*printf("fsa")*/
return 0;
}

646 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 10:40:21
>>645
一体誰へのレスなんだ?

647 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 11:44:29
>>644
>ウィンドウの端にぶつかるとアニメーションの再生/停止が切り替わる
というのは、gifのパラパラマンガが行われる/行われないってことであって、
兎の直線的な動作は常に発生するんですよね?


648 名前:644[sage]:2005/06/05(日) 12:13:17
>>647
はい、その通りです。
説明が不十分で申し訳ありません。

649 名前:デフォルトの名無しさん []:2005/06/05(日) 14:01:43
>>644
public void run() {
boolean flag = false;
while (true) {
if(flag) current_f = (current_f+1)%frames;

if((x<10)||(width-80<x)){
flag = !flag;
dx = -dx;
}
if((y<10)||(height-80<y)){
flag = !flag;
dy = -dy;
}

this.repaint();
try{
Thread.sleep(interval);
}catch (InterruptedException ie) {}
}
}
フラグをつけて、切り替える

650 名前:644[sage]:2005/06/05(日) 14:42:58
>>649
ありがとうございます。
それでも実現可能なのですが、(情報小出しすみません)Thread型のctrl
をフラグとして使い、gifアニメのコントロールはstartAnim、stopAnimで制御
をすることになっているのです。

・・・お願いします。

651 名前:デフォルトの名無しさん []:2005/06/05(日) 15:15:05
int[ ] x[ ];  xの使い方はどうなるか、簡単な例をプログラムで。
また,なぜ,そうなのか理由をコメントで記述

お願いします

652 名前:デフォルトの名無しさん []:2005/06/05(日) 19:38:52
>>651
意味が分からん

653 名前:デフォルトの名無しさん []:2005/06/05(日) 19:42:01
異次元配列の使い方教えて欲しいんだろ?

654 名前:デフォルトの名無しさん []:2005/06/05(日) 19:42:35
int[] x[];
なんて書いたらコンパイルが通らないので、xは使えません

655 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 19:49:24
>>654
通るって。

656 名前:651 []:2005/06/05(日) 19:56:35
課題: 配列の追加問題
インストラクション: int[ ] x[ ];  xの使い方はどうなる?簡単な例をプログラムで。また,なぜ,そうなのか理由をコメントで記述

課題のページには上記のこと以外は書かれていません

657 名前:654 []:2005/06/05(日) 20:05:59
あ、ほんとだ。2次元配列になった。
int[][] x;
って書け、まぎらわしい。


658 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 20:32:36
>>657
そう書いたら課題にならんだろ。

659 名前:デフォルトの名無しさん []:2005/06/05(日) 20:34:41
その書き方って
int[] x[],y;
ってやるとき意外積極的に使いたくないな

660 名前:655[sage]:2005/06/05(日) 20:55:17
まーなんにせよ良い課題ではない罠。
変数側に括弧つけるのはCの名残だからという、消極的な理由だったと思う。
Javaで推奨されている方法ではなかったはず。
659のような場合も、普通は2行に分けて書くでしょ。

661 名前:654 []:2005/06/05(日) 21:00:59
>>658
パズルか、クイズ大会じゃないんだから、
学生か研修生がやるような課題じゃないな...
汚いプログラムの読み方を練習したいなら、実務に入ってからでも遅くないぞ。

それはともかく、多分
for (int i = 0; i < height; ++i) {
for (int j = 0; j < width; ++j) {
...
}
}

というようなループを回して、碁盤のようなデータを格納するような
例が模範解答なんだろうけど、実務で多次元配列って使わないな。
Cとは違って、Javaの2次元配列の実態は1次元配列のオブジェクトを並べたもで、
あんまり効率がよくないので、1次元配列で書き換えて、
x[i * width +j]というようにアクセスすることが多い気がする。

662 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 21:16:05
>>661
実務実務って、それこそアプリ分やなんてそれこそ多岐に渡ってるんだからそんな言葉では片づけられんでしょう。

663 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 21:16:28
1つのgif画像と、1つのボタンをウィンドウに配置し、
ボタンを押す毎にgif画像が(ONの画像)⇔(OFFの画像)と交互に
変化するものを作るというものです。
以下のようにやっていますが、どうやらJLabelに画像をセットする
ところでエラーが起きているようです。どこが悪いのでしょうか?

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

class ImageSwitch extends JPanel implements ActionListener {

JLabel label;
JButton btn;

ImageSwitch() {
label = new JLabel(new ImageIcon("./test.gif"));
btn = new JButton("Switch");

    btn.addActionListener(this);

setLayout(new BorderLayout());
add(label, BorderLayout.NORTH);
add(btn, BorderLayout.SOUTH);
}

664 名前:663[sage]:2005/06/05(日) 21:17:08
//続き

public void actionPerformed(ActionEvent ev) {

boolean flag = true;
if (ev.getSource() == btn) {
if(flag){
label.setIcon(new ImageIcon("./test2.gif"));
} else {
label.setIcon(new ImageIcon("./test.gif"));
}
flag = (!flag);
}
}

public static void main(String args[]) {
ImageSwitch st = new ImageSwitch();
JFrame f = new JFrame("Switch");
f.getContentPane().add(st, BorderLayout.CENTER);

f.pack();
f.setVisible(true);
}

}

お願いします。

665 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 21:36:01
>661
効率を気にしなくていい場合、二次元配列の方が直感的。

人間が機械に歩み寄れば、機械が楽になり人間が大変になるのは当然。
だけど、それって最近の流行と反してないか?
理解のしやすさまで考えたら、二次元配列にすべきデータはそのままにしといた方がいい。

666 名前:デフォルトの名無しさん []:2005/06/05(日) 21:40:42
>>650
現状維持のままで行くなら、このような感じで、
コンストラクターに書き足し
Thread t = new Thread(this);メインスレッドをここで立ち上げ、
t.start();
run()内のコメントをはずし、
if(ctrl != null){
current_f = (current_f+1)%frames;
}
とする。
startAnim()内は、
if(ctrl == null){
ctrl = new Thread();//thisを外す
ctrl.start();
}
とする。
main(String args[])内を
//r.startAnim()これを外すということ

667 名前:デフォルトの名無しさん []:2005/06/05(日) 22:23:34
>>663
エラーの内容をコピペーしてみて。
多分、FileNotFoundExceptionが出てると予想

668 名前:663[sage]:2005/06/05(日) 22:29:10
>>667
レスありがとうございます。エラーはこんな感じです。
イメージソースに関するエラーなのでしょうか、よく分からない状態です。

D:\java>java ImageSwitch
java.lang.NullPointerException
at sun.java2d.pipe.DrawImage.copyImage(Unknown Source)
at sun.java2d.pipe.DrawImage.copyImage(Unknown Source)
at sun.java2d.SunGraphics2D.drawImage(Unknown Source)
at sun.awt.image.ImageRepresentation.drawToBufImage(Unknown Source)
at sun.java2d.pipe.DrawImage.copyImage(Unknown Source)
at sun.java2d.pipe.ValidatePipe.copyImage(Unknown Source)
at sun.java2d.SunGraphics2D.drawImage(Unknown Source)
at sun.java2d.SunGraphics2D.drawImage(Unknown Source)
at javax.swing.ImageIcon.paintIcon(Unknown Source)
at javax.swing.plaf.basic.BasicLabelUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)

669 名前:663[sage]:2005/06/05(日) 22:31:16
続きです

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


何行目がオカシイと言われれば直しようがあるのですが…。お願いします。

670 名前:デフォルトの名無しさん[sage]:2005/06/05(日) 22:38:50
JSP/サーブレットを使用しての、自動販売機システムを作成せよ
1.商品ボタン5つ
2.硬貨投入ボタン5つ
3.投入金額の表示
4.返却枚数の表示
5.釣り銭切れの表示

671 名前:663[sage]:2005/06/05(日) 22:44:26
>>667氏、また考えて頂いていた方
大変申し訳ありません。問題なのはソースではなく、GIFファイルの方でした。
大学のサーバからftpソフトを使ってファイルを持ってきたのですが、その時に
GIFファイルが正しく持ってこれていなかったようです。
スレ汚しスイマセンでした。

672 名前:デフォルトの名無しさん []:2005/06/05(日) 23:45:34
>>670
結構めんどくさそうだね〜
題意だけを考えると
商品の在庫は無限だけど
つり銭切れは、あるんだよね
ココで書くにはトラン処理はめんどくさい・・・

673 名前:デフォルトの名無しさん[age]:2005/06/06(月) 00:03:18
数値を引数にして実行をすると、その個数文 * を標準出力するものを作れ。
なお、* を複数個表示するときには、各 * を表示するごとに10[msec]のinterval
を置くこと。という宿題です。

引数の数値文 * を表示することは難なく出きるのですが、10[msec]のインターバルを置く
というところに詰まっています。

//引数があること前提で
int num = Integer.parseInt(args[0]);
for(int i=0; i<num; i++){
System.out.print("*");
}
System.out.println();

とすると、当然ですが一瞬でズバっと表示されてしまいます。
宜しくお願いします。

674 名前:デフォルトの名無しさん []:2005/06/06(月) 00:06:13
#include <stdio.h>

int main(){

int point;

do{
printf("テストの点数を入力してください[0〜100の整数]\n");
printf("点数 = ? --->");
scanf("%d" , &point);
}while(!(0 <= point && point <= 100));


if(point >= 80){
printf("あなたの評価はAです\n");
}else if(point >= 70 && point < 80){
printf("あなたの評価はBです\n");
}else if(point >= 60 && point < 70){
printf("あなたの評価はCです\n");
}else{
printf("不合格です\n");
}
return 0;
}



675 名前:デフォルトの名無しさん[sage]:2005/06/06(月) 00:17:23
>>673
int num = Integer.parseInt(args[0]);
for(int i=0; i<num; i++){
System.out.print("*");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
}
System.out.println();

676 名前:デフォルトの名無しさん[age]:2005/06/06(月) 00:57:40
お、何だか同じような宿題があるな。僕のはちょっと違うけど。
ボタンを押したときや、JTextFieldに何かを入力してEnterを押したときなど、
イベントが発生したときに行う処理は
public void actionPerformed(ActionEvent e){}
内に書きますよね。
このとき、たとえばJLabel型のlbに
3
2
1
発射
と表示させたい場合、どうすればよいのでしょう?
各文字表示の間には、口で言うときのように適当な間をおくようにしたいのです。
lb = setText("3");
Thread.sleep(1000);
lb = setText("2");
Thread.sleep(1000);
lb = setText("1");
Thread.sleep(1000);
lb = setText("発射");

とやってみましたが、イベントが発生してから3秒たった後に
発射
と表示されるだけでした。標準出力のようにはいかないんですかね。
どうしたらよいでしょう?

677 名前:673[sage]:2005/06/06(月) 01:05:42
>>675
レスが遅くなりました。
一番最初に作られるスレッドを制御する感じにするのですか。
このように書けるのですね。ありがとうございます。

678 名前:644[sage]:2005/06/06(月) 02:35:31
>>666
亀レススマソ
動作しました。やはり、startAnim無いのthisは外さないと
できませんよね。ありがとうございます。

679 名前:デフォルトの名無しさん []:2005/06/06(月) 10:18:00
>>676
イベントの処理と、ボタンの描画はEventDispatchThreadという
1つのスレッドが担当しているので、
イベント処理中は描画もできないから
もう1つスレッドを投げてやらないといけない。

Thread t;
public void actionPerformed(ActionEvent e) {
try{
if (t != null) t.join();
} catch (InterruptedException e) {}
t = new Thread() {
public void run() {
try{
lb = setText("3");
Thread.sleep(1000);
lb = setText("2");
Thread.sleep(1000);
lb = setText("1");
Thread.sleep(1000);
lb = setText("発射");
} catch (InterruptedException e) {}
}
};
t.start();
}

たぶん、これでいける

680 名前:676[sage]:2005/06/06(月) 12:35:46
>>679
いけました!
このようなスレッドの作り方が出来るのですね。
これは他にも応用がきかせられそうです。
ありがとうございます。

681 名前:デフォルトの名無しさん []:2005/06/06(月) 16:54:49
はじめまして。
考えて見たのですがどうしてもできなかったので、どなたか助けていただけませんか。

do〜while文を使って、

*
**
***
****
*****
******
*****
****
***
**
*

を作りたいのですが・・。よろしくお願いいたします。



682 名前:デフォルトの名無しさん[sage]:2005/06/06(月) 17:07:11
既視感・・・。

このスレ検索しろ。
forを使った例しか載ってなかったかもしれないが、とりあえず自分で置き換えてみ。

683 名前:681 []:2005/06/06(月) 17:16:27
検索してみましたが見当たりませんでした。
*を増やすときに数字ではないので、増えなかったです。
よろしくお願いします。


684 名前:デフォルトの名無しさん []:2005/06/06(月) 17:19:59
なんか、ひし形作る問題のソース流用できそう。
検索汁

685 名前:デフォルトの名無しさん[sage]:2005/06/06(月) 17:35:37
> *を増やすときに数字ではないので
意味がわからん。on_ 数字じゃなかったら何で増やすのか?
forで書かれているのをdo〜whileで置き換えればいいだけ。


お前のようなやつはこれで十分。
do{System.out.println("*\n**\n***\n****\n*****\n******\n*****\n****\n***\n**\n*\n");}while(false);


686 名前:681 []:2005/06/06(月) 17:49:33
class abc{
public static void main(String[] args){
int b,c;
do{
do{
b=("*");
b++;
System.out.println(b);
{while(b<=6);
}
c=("******");
c--;
System.out.println(c);
{while(c<=1);
}
}

菱形のを参考に作ってみましたが、何度やってもエラーになります。
本当にすみませんがよろしくお願いします。


687 名前:682=685[sage ちょっと変だけど]:2005/06/06(月) 17:56:52
>>685
どうぞ。とりあえず動くことは動く。

public class Test{
private static final int MAX = 6;
public static void main(String args[]){
boolean isForward = true;
int width = 1;
do{
int tmp = width;
do{
System.out.print("*");
tmp--;
}while(tmp > 0);
System.out.println();
if(isForward){
if(width >= MAX){
width--;
isForward = false;
}else{
width++;
}
}else{
width--;
}
}while(width > 0);
}
}

688 名前:デフォルトの名無しさん[sage]:2005/06/06(月) 17:58:19
×>>685→○>>686

ごめん。自分にレスしてしまった。on_

689 名前:681 []:2005/06/06(月) 18:04:10
ありがとうございます!!!動きました!!
参考になりました!!
本当にありがとうございます。

しかし、自分には難しかったので、これを参考に作ってみます。
本当にありがとうございました。



690 名前:681 []:2005/06/06(月) 18:19:12
class abc{
public static void main(String[] args){
int b,c;
do{
do{
b=("*");
b++;
System.out.println(b);
{while(b<=6);
}
c=("******");
c--;
System.out.println(c);
{while(c<=1);
}
}
先ほどのはやっぱり難しかったです。
失礼を承知で・・。
これでの間違いは何がありますか??
本当にすみません。
よろしくお願いします。


691 名前:デフォルトの名無しさん[sage]:2005/06/06(月) 18:43:32
基本的な文法・ルールを覚えなさい。話はそれからだ。


とりあえず・・・。

> b=("*");
これは何をしているつもりなのか?

> do{
> 中略
> {while(b<=6);
> }

do〜whileの構文は
do{
...
}while(条件);

692 名前:デフォルトの名無しさん[sage]:2005/06/06(月) 23:06:22
何がやりたいのかをまず考えろ。図形をパターン化しろ。
1行目には*が1つ。2行目には*が2つ。
3行目には*が3つ。4行目には*が4つ。
5行目には*が5つ。6行目には*が6つ。
n行目には*がいくつあればいいんだ?分かるかい?

分かったらfor(i=1;i<=6;i++)のループを書け。
その中で、System.out.print("*")を*の数だけ繰り返せばいい。
(printlnとprintの違いは改行の有無。自分で実行して確かめろ)
これで上半分は完成だ。

あとは同じように下半分もやりゃあいい。
とりあえず6までの階段を書け。
それが書ければ段数を指定できるプログラムへの修正は一瞬だ。

693 名前:681 []:2005/06/06(月) 23:28:43
親切にありがとうございます!!考えてみます!!



694 名前:デフォルトの名無しさん[sage]:2005/06/07(火) 01:14:10
代入文、ifやfor,whileといった制御構造は、日本語で言えばてにをはのレベルだ。
基礎の基礎であり、知らないと何も書けない。
名詞と動詞の違いに当たる、データ型の違いに関する理解も滅茶苦茶。
「int b」と宣言した以上、bは整数だ。「"*"」は文字列なので、絶対にbの中には入らない。
きつい言い方になるが、日本語の文を書けない奴には、作文は教えられない。
つまり、あなたはまだプログラムを教えられるレベルに達していない。

やり方は>692の考え方で分かるだろうが、分かったところで恐らく書けないでもどかしい思いをするだけだろうな。
構成を考えられたとしても、日本語が分からなければ文は書けないという事だ。

695 名前:681 []:2005/06/07(火) 10:59:39
>「int b」と宣言した以上、bは整数だ。「"*"」は文字列なので、絶対にbの中には入らない。
少し納得しました。「"*"」これをひとつ増やすという意味を作るということですか?本当に初心者ですみません。
今、一番最初から本を読み直しています。
本当にありがとうございます。



696 名前:681 []:2005/06/07(火) 11:18:46
1行目は1回繰り返して改行、2行目は2回繰り返して改行、3行目は3回繰り返して・・・という形ということですか??
連続投稿すみません。
少し分かってきた気がしました(まだ全然ですが・・・)



697 名前:デフォルトの名無しさん[sage マジレスだよ、念のため]:2005/06/07(火) 11:35:58
> 「"*"」これをひとつ増やすという意味を作るということですか?本当に初心者ですみません。

くどいようだけど、プログラム以前の問題。
まず日本語。人の発言を理解する能力と、自分の思考を伝える能力を身に着けないと
いつまで経っても無理。
それから、Javaの文法やルール、基本的な言語の構成を一から理解していく。

698 名前:681 []:2005/06/07(火) 11:42:50
分かりました。ありがとうございました。
基本から理解して、がんばってみます。

699 名前:デフォルトの名無しさん[sage]:2005/06/07(火) 16:07:19
GUIのTextFieldを右寄せで表示するにはどうしたらイイの?

700 名前:デフォルトの名無しさん[sage]:2005/06/07(火) 17:07:33
アラビア語で書く

701 名前:デフォルトの名無しさん[sage]:2005/06/08(水) 01:10:05
read API doc or 手作り

702 名前:デフォルトの名無しさん []:2005/06/08(水) 09:51:22
>>699
AWTでは手作りするよりないな。
SwingのJTextFieldならsetHorizontalAlignmentというのがある。

703 名前:デフォルトの名無しさん[age]:2005/06/08(水) 13:55:00
「直線」「矩形」「楕円」を描画するものを作る課題です。
プルダウンメニューを配置し、プルダウンメニューより選択した図形を、
ウィンドウ内でドラッグ&ドロップした範囲に描画するというものです。

一応カタチにはなっているのですが、1つ問題を発見しました。
例として、矩形を選択し、矩形を描きます。矩形が描かれた状態で、プルダウンメニュー
より、選択図形を変更します。ここで、直線を選択するとします。
もし、矩形がプルダウンメニューにかかる位置にあった場合、選択図形を直線に変更し
た時点で、プルダウンメニューがかかっていた場所のみが直線になってしまうのです。

矩形がプルダウンメニューにかからない位置にある場合でも、別のウィンドウを重ねた
りウィンドウ全体を最小化するなどすると、選択図形を変更しただけなのに、既に描かれ
た図形までも変化してしまいます。
おそらくは再描画に関する問題なのかとは思いますが、解決できません。
よろしくお願いします。

ttp://up.razor.jp/index.html
ファイルNo:2809
DLパス:drawtest

704 名前:デフォルトの名無しさん []:2005/06/08(水) 14:15:39
http://jwww.ed.noda.tus.ac.jp/j-takeda/blob.html
にあるものをお願いします。611にあったのですが、
こうでなく上のアドレスのとこに書いてあるような
出力形式になるようにしてもらいたいです。

705 名前:デフォルトの名無しさん[sage]:2005/06/08(水) 17:29:32
>>681
本気で基本文法だけは覚えろよ。
煽るだけじゃあれなんで、こんなやり方もあると言ってみる。
int size=6;
StringBuffer buffer=new StringBuffer();
while(str.length()<size){
buffer.append('*');
System.out.println(buffer);
}
while(buffer.length()>0){
buffer. deleteCharAt(0);
System.out.println(buffer);
}
>>703
以前に描画した図形の情報が保存されていないから、システムから再描画を呼ばれた時に
新しい情報で再描画してしまうんだな。描画にバッファ画像使ってみそ。
・ユーザーからの描画操作があった場合、バッファ画像に描く。
・paintなりpaintComponentなりでは、drawImageでバッファ画像を描画する。
あとは自分で出来るよな。頑張れ。

706 名前:703[sage]:2005/06/08(水) 19:16:11
>>705
解決できました!
ヒントの提示、ありがとうございました。

707 名前:705[sage]:2005/06/08(水) 22:19:19
>>706
解決したようで何より。
あんな簡単なアドバイスに礼なんか期待してなかったが、言われてみるとやはり気持ちいいな。
おかげでちょっといい気分になれた。ありがとう。

708 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 01:14:56
学校がらみで教えてください。

学校の環境で、MySQLとサーブレットとJSP、JAVABeansを利用して作ったものを
自宅に持ってきて動作させようと、TOMCATにそのまま入れたら

javax.servlet.ServletException: org/aspectj/lang/Signature
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
org.apache.jsp.AddForm_jsp._jspService(AddForm_jsp.java:139)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

というエラーが出ます。
何が原因でしょうか?これだけでは情報不足ですかね・・・。

709 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 15:29:35
「ルビンの盃と顔」
参考
ttp://www-karc.nict.go.jp/d333/kenkyu_in/image/rubin.gif

この図形を、配列を使った多角形として描きなさい。
ヒント:黒い顔の輪郭データを配列として作成し、これを用いて多角形の塗りつぶしを行う。

よろしくお願いします。

710 名前:デフォルトの名無しさん [sage]:2005/06/09(木) 15:48:24
以下の動作を行うプログラムを作りなさい。
画像の構成
ttp://www2.ranobe.com/test/src/up0430.jpg

プログラムは、2次関数の係数a,bを読み込んでグラフを表示するものである。
2次関数はf(x)=a*x^2+b*x+cとする。
グラフは横軸を[0,-b/a](符号によって逆の区間もある)を100等分して表示するものとする。
係数を入力して、「読込」ボタンを押すと係数を読み込み、グラフを表示する。
「消去」ボタンで係数のエリアをクリアし、グラフも消すものとする。
「終了」ボタンでプログラムを終了させるものとする。

参考
ttp://www2.ranobe.com/test/src/up0431.jpg
ttp://www2.ranobe.com/test/src/up0432.jpg

よろしくお願いします。

711 名前:デフォルトの名無しさん []:2005/06/09(木) 17:25:35
誘導されました。

授業聞いてなかったんで課題がわかりません。
わかる方、教えてください。

ttp://sunblade.kouku-dai.ac.jp/~take/kadai1.html

712 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 17:26:45
>>711
学籍番号教えてくれないとムリだよ。


713 名前:711 []:2005/06/09(木) 17:39:29
2104048です。お願いします。

714 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 17:40:27
ワロス

715 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 17:46:59
メールで担当教官に提出しておいたw

716 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 17:48:08
提出までやってくれるなんて!
ツーチャンネルは親切なインターネットですね。

717 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 17:54:32
ついでに通報もしておいた

718 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 17:58:40
あー、ちょっと前にいた壊滅的だった人もここの学校なのかな。
航空大学校レベルタカスwwwwww

719 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 18:01:15
2005年度 宮崎産業経営大学用と書いてあるから宮崎産業経営大学の講師をしてるんじゃない?

720 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 21:16:19
プログラムに独創性を求めてどーする。

721 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 21:58:51
JTableって列をドラッグ&ドロップできるようなんですけど、
これを無効にするにはどうしたらいいでしょうか?
setEnabledだと、列の編集する無効になってしまうようで・・・
お願いします。

722 名前:デフォルトの名無しさん[sage]:2005/06/09(木) 23:28:26
>721
JTableHeader header = table.getTableHeader();
header.setReorderingAllowed(false);

でどうでしょう?

723 名前:>>711 その1 []:2005/06/10(金) 12:15:20
import java.io.*;
import java.util.*;
public class HW91 {
public static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print("学籍番号を入力してください:");
int number = 0;
try {
String line = br.readLine();
number = Integer.parseInt(line);
} catch (NumberFormatException ex) {
System.out.println("不正な数値を入力しました");
System.exit(0);
} catch (Exception ex) {
System.out.println("入力エラーが発生しました");
System.exit(0);
}
System.out.println("学籍番号は" + number);
System.out.println("余りは" + number % 3);
int count = 1;
int num = +1;
char[] cs = null;

724 名前::>>711 その2 []:2005/06/10(金) 12:16:05
switch (number % 3) {
case 0:
do {
cs = new char[count];
Arrays.fill(cs, '*');
System.out.println(new String(cs));
if (count == 6) {
num = -num;
}
count += num;
} while (count > 0);
break;
case 1:
for ( ; count != 0; ) {
cs = new char[count];
Arrays.fill(cs, '*');
System.out.println(new String(cs));
if (count == 6) {
num = -num;
}
count += num;
}
break;

725 名前:>>711 その3 []:2005/06/10(金) 12:16:28
case 2:
while (count != 0) {
cs = new char[count];
Arrays.fill(cs, '*');
System.out.println(new String(cs));
if (count == 6) {
num = -num;
}
count += num;
}
}
}
}


726 名前:デフォルトの名無しさん[sage]:2005/06/10(金) 12:24:16
マインスイーパー(?)
っぽいプログラムを作成中なのですが

1000
1101
1001

という物が定義されていたとき

4000
4402
4002

みたいに縦横斜めの数を調べて書き換えるにはどーすればいいのでしょうか?

727 名前:デフォルトの名無しさん[sage]:2005/06/10(金) 13:03:00
>>726
数えればいいじゃないか

728 名前:デフォルトの名無しさん[sage]:2005/06/10(金) 14:08:10
>>726

#define SIZE 10
int data[SIZE][SIZE];

int check_bomb(int x, int y)
{
  int count = 0;
  if(data[x][y] == -1) return -1; /*爆弾*/

  if(x > 1 && data[x-1][y] == -1) count++;
  if(y > 1 && data[x][y-1] == -1) count++;
  if(x < SIZE-1 && data[x+1][y] == -1) count++;
  if(y < SIZE-1 && data[x][y+1] == -1) count++;
  if(x > 1 && y > 1 && data[x-1][y-1] == -1) count++;
  if(x < SIZE-1 && y < SIZE-1 && data[x+1][y+1] == -1) count++;
  if(x > 1 && y < SIZE-1 && data[x-1][y+1] == -1) count++;
  if(x < SIZE-1 && y > 0 && data[x+1][y-1] == -1) count++;

  return count;
}


729 名前:デフォルトの名無しさん[sage]:2005/06/10(金) 15:00:02
>728
何をやりたいんだか。


730 名前:デフォルトの名無しさん[sage]:2005/06/10(金) 15:04:15
C厨はどこにでもわきやがる

731 名前:デフォルトの名無しさん[sage]:2005/06/10(金) 15:13:59
>>729-730
勘違いしたスマソ。
お詫びにJava版。

class Mine {
  static final size = 10;
  int data[][] = new int[size][size];

  public int checkBomb(int x, int y) {
    int count = 0;
    if(data[x][y] == -1) return -1; //爆弾

    if(x > 1 && data[x-1][y] == -1) count++;
    if(y > 1 && data[x][y-1] == -1) count++;
    if(x < size-1 && data[x+1][y] == -1) count++;
    if(y < size-1 && data[x][y+1] == -1) count++;
    if(x > 1 && y > 1 && data[x-1][y-1] == -1) count++;
    if(x < size-1 && y < size-1 && data[x+1][y+1] == -1) count++;
    if(x > 1 && y < size-1 && data[x-1][y+1] == -1) count++;
    if(x < size-1 && y > 0 && data[x+1][y-1] == -1) count++;

    return count;
  }
}


732 名前:デフォルトの名無しさん[sage]:2005/06/10(金) 17:07:47
>>731
いや、言語だけでなく、内容も間違ごうとるんだよ。
マインスイーパーではなく、パインスーパー「っぽい」
というところがミソ。

733 名前:デフォルトの名無しさん []:2005/06/11(土) 03:46:17
「直線」「矩形」「楕円」を描画するものを作る課題です。
プルダウンメニューを配置し、プルダウンメニューより選択した図形を、
ウィンドウ内でドラッグ&ドロップした範囲に描画するというものです。
ttp://up.razor.jp/index.html
ファイルNo: 2874
DLパス: sage

プルダウンメニューで図形を選択し
その選択肢をマウスイベントのif分岐に反映させるところが
うまくいきません。
if文内にどのような関数なりをいれればいいでしょうか?
またその前に決定された選択肢を呼び出すには
どのようなに仕組めばいいのでしょうか?

お願いします

734 名前:>>710 その1 []:2005/06/11(土) 08:42:12
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import javax.swing.*;
public class HW92 {
static JFrame frm = new JFrame();
static JLabel graph = new JLabel();
static JTextField atf = new JTextField(8);
static JTextField btf = new JTextField(8);
static JTextField ctf = new JTextField(8);
static JButton read = new JButton("読込");
static JButton clear = new JButton("消去");
static JButton quit = new JButton("終了");
static BufferedImage img = new BufferedImage(400, 400,
BufferedImage.TYPE_INT_ARGB);
public static void main(String[] args) {
read.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
readExpression();
}
});
clear.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
clearGraph();
}
});
quit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.exit(0);
}
});

735 名前::>>710 その2 []:2005/06/11(土) 08:42:42
graph.setOpaque(true);
graph.setBackground(Color.white);
graph.setBorder(BorderFactory.createEtchedBorder());
graph.setHorizontalAlignment(SwingConstants.CENTER);
graph.setHorizontalTextPosition(SwingConstants.CENTER);
graph.setFont(new Font("Dialog", Font.BOLD, 20));
graph.setForeground(Color.red);
graph.setIcon(new ImageIcon(img));
clearGraph();
JPanel left1 = new JPanel();
left1.setOpaque(false);
left1.add(new JLabel("Aの係数"));
left1.add(atf);
JPanel left2 = new JPanel();
left2.setOpaque(false);
left2.add(new JLabel("Bの係数"));
left2.add(btf);
JPanel left3 = new JPanel();
left3.add(new JLabel("Cの係数"));
left3.setOpaque(false);
left3.add(ctf);
JPanel left = new JPanel(new GridLayout(3, 1));
left.setOpaque(false);
left.add(left1);
left.add(left2);
left.add(left3);

736 名前:::>>710 その3 []:2005/06/11(土) 08:43:09
JPanel bottom = new JPanel();
bottom.setOpaque(false);
bottom.add(read);
bottom.add(clear);
bottom.add(quit);
JPanel base = new JPanel(new BorderLayout(16, 16));
base.setBorder(BorderFactory.createEmptyBorder(16, 16, 16, 16));
base.setBackground(new Color(230, 230, 255));
base.add(graph);
base.add(left, BorderLayout.WEST);
base.add(bottom, BorderLayout.SOUTH);
frm.getContentPane().add(base);
frm.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frm.pack();
frm.setVisible(true);
}
static void readExpression() {
clearGraph();
double coeA = 0;
double coeB = 0;
double coeC = 0;

737 名前::::>>710 その4 []:2005/06/11(土) 08:43:41
try {
coeA = Integer.parseInt(atf.getText());
coeB = Integer.parseInt(btf.getText());
coeC = Integer.parseInt(ctf.getText());
} catch (Exception ex) {
graph.setText("数値の入力が不正です");
return;
}
double maxX = -coeB / coeA;
if (maxX == 0) {
graph.setText("数値の入力が不正です");
return;
}
double[] cdntXs = new double[100];
double[] cdntYs = new double[100];
double gradX = maxX / 100;
double maxY = 0;
for (int i = 0; i < 100; i++) {
cdntXs[i] = gradX * i;
cdntYs[i] = coeA * (cdntXs[i] * cdntXs[i]) + coeB * cdntXs[i] + coeC;
if (Math.abs(cdntYs[i]) > maxY) {
maxY = Math.abs(cdntYs[i]);
}
}
double gradY = maxY / 100;
Graphics g = img.getGraphics();
g.setColor(Color.blue);

738 名前:>>710 その5 []:2005/06/11(土) 08:44:10
for (int i = 0; i < 99; i++) {
double srcX = i * 4;
double srcY = -(cdntYs[i] / maxY * 200) + 200;
double dstX = (i + 1) * 4;
double dstY = -(cdntYs[i + 1] / maxY * 200) + 200;
g.drawLine((int) srcX, (int) srcY, (int) dstX, (int) dstY);
}
}
static void clearGraph() {
graph.setText(null);
Graphics g = img.getGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, img.getWidth(), img.getHeight());
g.setColor(Color.black);
g.drawLine(0, img.getHeight() / 2, img.getWidth(), img.getHeight() / 2);
graph.repaint();
}
}


739 名前:デフォルトの名無しさん []:2005/06/11(土) 13:41:29
クイックソートのプログラムなのですが、ところどころ何をしてるのかわからないところがあります。
一行ずつ解説つけてもらえませんか?
お願いします。

public static void quickSort(int[] arr, int left, int right){
if (left <= right) {
int p = arr[(left+right) / 2];
int l = left;
int r = right;

while(l <= r) {
while(arr[l] < p){ l++; }
while(arr[r] > p){ r--; }

if (l <= r) {
int tmp = arr[l];
arr[l] = arr[r];
arr[r] = tmp;
l++;
r--;
}
}

quickSort(arr, left, r);
quickSort(arr, l, right);
}
}


740 名前:デフォルトの名無しさん[sage]:2005/06/11(土) 14:59:10
>>739
解説サイト
ttp://www.soi.wide.ad.jp/class/97001/slides/04/023.html

741 名前:デフォルトの名無しさん[sage]:2005/06/11(土) 19:57:56
>>638
もう見ていないかもしれないが、もしかして俺と同じ授業を受けていない?
月曜日4限、教科書:JAVA2プログラミング講座、前期と後期で違う先生がやる授業じゃない?

742 名前:デフォルトの名無しさん[sage]:2005/06/11(土) 20:30:09
肝心の質問を書くのを忘れてた
俺も>>638>>640と同じ課題が出ていて、教科書を参考にしたらこんなのになった

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

public class Report{
public static void main(String[] args){
ReportFrame f = new ReportFrame("課題1");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

class ReportFrame extends JFrame{
private int index;
private JPanel panel;
private JButton[] b;
private Shape[] s;

public ReportFrame(String title){
setTitle(title);
b = new JButton[]{
new JButton("弧"),
new JButton("楕円"),
};
s = new Shape[]{
new Arc2D.Double(100.0, 70.0, 200.0, 180.0, 100.0, 260.0, Arc2D.PIE),
new Ellipse2D.Double(100.0, 70.0, 190.0, 140.0),
};

743 名前:デフォルトの名無しさん[sage]:2005/06/11(土) 20:32:09
JPanel bp= new JPanel();
ActionListener listener = new ActionListener(){
public void actionPerformed(ActionEvent e){
for(index=0; index<2; index++){
if(e.getSource() == b[index]){
break;
}
}
panel.repaint();
}
};
for(int i=0;i<2;i++){
b[i].addActionListener(listener);
bp.add(b[i]);
}
panel = new JPanel(){
public void paint(Graphics g){
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
setBackground(Color.WHITE);
g2.setPaint(new Color(100,230,100));
g2.setStroke(new BasicStroke(15F));
g2.draw(s[index]);
}
};
setSize(400,400);
panel.setSize(400,300);
getContentPane().add(bp,BorderLayout.SOUTH);
getContentPane().add(panel,BorderLayout.CENTER);
}
}

744 名前:デフォルトの名無しさん[sage]:2005/06/11(土) 20:44:55
これで private JPanel panel; はclass ReportFrameの先頭で宣言しているのに
JPanel bp ( >743の先頭 ) はコンストラクタ内で宣言している
この違いは一体何?

後、このソースってJAVAで書かれたものとしてはグチャグチャなの?
どうもカプセル化とかできている気がしないんだけど

745 名前:デフォルトの名無しさん[sage]:2005/06/11(土) 21:01:42
>>744
> これで private JPanel panel; はclass ReportFrameの先頭で宣言しているのに
> JPanel bp ( >743の先頭 ) はコンストラクタ内で宣言している
> この違いは一体何?
参考にした教科書が悪いかも。
今回のケースなら、区別する必要はないでしょう。
個人的にはコンストラクタ内で宣言すると思う(ReportFrameの属性にする必要がないと思うので)。

> どうもカプセル化とかできている気がしないんだけど
ReportFrameのフィールド4つはprivateで宣言されてるから
他クラスからこれらを変更することはできません。
と言う意味ではカプセル化はできてます。

746 名前:デフォルトの名無しさん[sage]:2005/06/11(土) 21:24:03
>>745
thx
panelの方は匿名内部クラスで使っているから外側で宣言する必要があるのかな?

もうちょっと勉強しなおして、次からは質問スレの方にでも行こうと思います

747 名前:デフォルトの名無しさん[sage]:2005/06/11(土) 23:47:37
プログラミング超初心者で授業の課題で困っています
10匹のタートルが順に六角形を描き競争するプログラムです
どのタートルが次の辺を描くかはランダムにきめ
いずれかのタートルが六角形を描き終わったら
プログラムを終了するものとします
public class T51 {
public static void main(String[] args){
TurtleFrame f = new TurtleFrame(600,300);
Turtle[] hm = new Turtle[10];
for(int i = 0 ; i < 10; i++){
hm[i] = new Turtle(i * 50 + 25,150,0);
f.add(hm[i]);
}
for(int i = 0; i < 10; i++){
for(int j = 0; j < 6; j++){
hm[i].fd(10);
hm[i].rt(360/6);
}
}
}
}
ここまでは分かったのですが乱数を発生させるための
(int)(Math.random()*10)の使い方がよく分かりません
期限は月曜までです。お願いします。

748 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 00:09:48
スプライン補完です  //design this method. のところをお願いします
 
package ncx.ex08;

import java.io.*;
import ncx.ex02.MathVector;
import ncx.ex02.MathMatrix;
import ncx.ex03.GaussElimination;
import ncx.ex07.Interpolation;


public class CubicSpline implements Interpolation {
private int N;
private MathVector x;
private MathVector y;
private double[][] c;
public CubicSpline(MathVector x, MathVector y){
setN(x.getLength());
setX(x);
setY(y);
init();
}

749 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 00:11:17
protected void setN(int N){
this.N = N;
}
public int getN(){
return N;
}
protected void setX(MathVector x){
this.x = new MathVector(x);
}
public double getX(int i){
return x.getElement(i);
}
public double getDX(int i){
return getX(i) - getX(i - 1);
}
protected void setY(MathVector y){
this.y = new MathVector(y);
}
public double getY(int i){
return y.getElement(i);
}

750 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 00:11:43
public double getDY(int i){
return getY(i) - getY(i - 1);
}
protected void setC(int i, int j, double c){
this.c[i][j] = c;
}
public double getC(int i, int j){
return c[i][j];
}
protected void init(){
c = new double[4][getN()];
MathMatrix A = new MathMatrix(getN(), getN());
MathVector Y = new MathVector(getN(), false);

//design this method.
}

public double f(double x) {
double r = 0.0;

//desing this method.

return r;
}

751 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 00:12:05
public static void main(String[] args) throws IOException{
if (args.length != 1){
System.err.println("usage: java ncx.ex08."
+ "CubicSpline n");
System.exit(1);
}

int n = Integer.parseInt(args[0]);
int N = n + 1;
MathVector x = new MathVector(N);
MathVector y = new MathVector(N);
for (int i = 0;i < N;i++){
x.setElement(i, -1.0 + 2.0*(double)i/(double)n);
y.setElement(i, 1/(1
+ 25.0*Math.pow(x.getElement(i), 2)));
}

752 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 00:12:20
CubicSpline cs = new CubicSpline(x, y);
PrintWriter pw =
new PrintWriter(new FileWriter("results"
+ n + ".dat"));
pw.println("# x f(x)");
for (double X = -1.0;X <= 1.0;X += 0.01){
pw.println(X + " " + cs.f(X));
}
pw.close();
System.out.println("The results have been stored in" +
"results" + n + ".dat");
}
}


753 名前:>>709ルビン その1 []:2005/06/12(日) 09:25:43
package hw93;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import java.util.*;
import javax.imageio.*;
import javax.swing.*;
import java.util.List;
public class HW93 {
//
static final int WIDTH = 300, HEIGHT = 300;
static final Color BACK = Color.blue, FORE = Color.green;
//
static List polygonPoints = new ArrayList(); //ポリゴン図形の配列
static JFrame frame = new JFrame();
static JLabel label = new JLabel();
static BufferedImage rubin;
static int[][] around = new int[][] {
{0, -1}, {1, -1}, {1, 0}, {1, 1},
{0, 1}, {-1, 1}, {-1, 0}, {-1, -1}
};
public static void main(String[] args) {
try {
InputStream in = ClassLoader.getSystemResourceAsStream("hw93/rubin.gif");
rubin = ImageIO.read(in);
} catch (Exception e) {
System.out.println("画像ファイル rubin.gif が見つかりません");
System.exit(0);
}

754 名前::>>709ルビン その2 []:2005/06/12(日) 09:26:15
makePolygonPoints();
frame.getContentPane().addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
drawPolygon();
}
});
frame.getContentPane().add(label);
frame.setSize(WIDTH, HEIGHT);
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}
static void makePolygonPoints() {
Point startPt = findStartPoint();
Point pt = startPt;
int returnIndex = 0;
loop:
while (true) {
polygonPoints.add(pt);
for (int i = 0; i < around.length; i++) {
Point nextPt = new Point(pt.x + around[i][0], pt.y + around[i][1]);
if (isBorder(nextPt.x, nextPt.y)
&& !polygonPoints.contains(nextPt)) {
pt = nextPt;
returnIndex = 0;
continue loop;
}
}

755 名前:::>>709ルビン その3 []:2005/06/12(日) 09:26:41
if (startPt.distance(pt) < 2) {
break;
}
++returnIndex;
pt = (Point) polygonPoints.get(polygonPoints.size() - returnIndex - 1);
}
}
static Point findStartPoint() {
for (int y = 0; y < rubin.getHeight(); y++) {
for (int x = 0; x < rubin.getWidth(); x++) {
if (isBorder(x, y)) {
return new Point(x, y);
}
}
}
return null;
}
static boolean isBorder(int x, int y) {
int rgb = rubin.getRGB(x, y);
if (rgb == Color.white.getRGB()) {
return false;
}

756 名前::::>>709ルビン その4 []:2005/06/12(日) 09:27:09
for (int i = 0; i < around.length; i++) {
try {
rgb = rubin.getRGB(x + around[i][0], y + around[i][1]);
} catch (Exception ex) {
continue;
}
if (rgb == Color.white.getRGB()) {
return true;
}
}
return false;
}
static void drawPolygon() {
int[] xs = new int[polygonPoints.size()];
int[] ys = new int[polygonPoints.size()];
for (int i = 0; i < polygonPoints.size(); i++) {
xs[i] = ((Point) polygonPoints.get(i)).x;
ys[i] = ((Point) polygonPoints.get(i)).y;
xs[i] = (int) (xs[i] * (frame.getContentPane().getWidth() / 200.0));
ys[i] = (int) (ys[i] * (frame.getContentPane().getHeight() / 200.0));
}
BufferedImage img = new BufferedImage(frame.getContentPane().getWidth(),
frame.getContentPane().getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics g = img.getGraphics();
g.setColor(BACK);
g.fillRect(0, 0, img.getWidth(), img.getHeight());
g.setColor(FORE);
g.fillPolygon(xs, ys, xs.length);
label.setIcon(new ImageIcon(img));
}
}


757 名前:デフォルトの名無しさん []:2005/06/12(日) 09:30:05
ウィンドウのサイズ変更に合わせて図形も拡大縮小します。

758 名前:デフォルトの名無しさん []:2005/06/12(日) 10:42:30
hw93というパッケージを作成し、それに HW93.class と rubin.gif
を含めないと実行できません

759 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 17:13:31
1から50までの数字を一行に10ずつ表示するプログラムを作成しなさい。

お願いします。

760 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 17:17:33
>>759
学校やめろ。

761 名前:デフォルトの名無しさん[お約束sage]:2005/06/12(日) 17:22:30
>>759
class Hoge{ public static void main(String[] args){System.out.println(" 1 2 3 4 5 6 7 8 9 10\n11 12 13 14 15 16 17 18 19 20\n21 22 23 24 25 26 27 28 29 30\n31 32 33 34 35 36 37 38 39 40\n41 42 43 44 45 46 47 48 49 50");}}

762 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 17:26:09
>>759

class Sample0003 {
  public static void main(String[] args) {
    for(int i=0; i < 50; i++) {
      System.out.print((i+1) + " ");
      if((i)%10==0)
        System.out.println();
    }
  }
}

763 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 17:26:56
>>759

class Sample0003 {
  public static void main(String[] args) {
    for(int i=0; i < 50; i++) {
      System.out.print((i+1) + " ");
      if((i+1)%10==0) System.out.println();
    }
  }
}

764 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 17:32:19
>>759
プログラマは無理だ

765 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 17:35:06
だれか>>747お願いします

766 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 17:57:52
プログラムの宿題で、7+14+21+・・・+994=
という表記をして結果を算出というのが出たんですけど、
for文でやるのですが
int (i = 0; i % 7 = 0 && i < 1000; i++)
system.out.print(i + "+")
のように書くと最後の994のあとにも+がついてしまうので、
それを何とか解決したいんですが、
アドバイスお願いできないでしょうか。
あるいはfor文を使った全く別のやり方でもいいので、
ぜひ解答例をお願いします。

767 名前:デフォルトの名無しさん []:2005/06/12(日) 17:59:55
(int)(Math.random()*10)は
整数0〜9までのいずれか発生させるから

int result=(int)(Math.random()*10);

でコレに該当する亀を動かすようにすればいい
//Turtle[] hm = new Turtle[10];なので
hm[result].move();
//おわったらまた int result=(int)(Math.random()*10);にもどる
これをどれかが6回呼ばれたら終わるように書けばいい


768 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 18:12:03
766です。
for (int i = 0 〜
の間違いでした。

769 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 18:17:54
自分が書いたものを全部コピペしてみなよ
>>768でもまだおかしいよ

770 名前:デフォルトの名無しさん []:2005/06/12(日) 18:18:26
>>766
System.out.print(i);
if(i!=994){
System.out.print("+");
}

こういうやり方でいいんでないの?


771 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 18:18:51
>>768 これでいいかな??

class Sample0004 {
public static void main(String[] args) {
int sum = 0;
for(int i=0; i < 1000; i++) {
if((i+1)%7==0) {
if(i>6) System.out.print(" + ");
sum+=i+1;
System.out.print((i+1));
}
}
System.out.println(" = " + sum);
}
}


772 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 18:26:22
どなたか >>748 お願いします;;

773 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 18:26:36
766です。
>>769 すいません、まだその先は深く考えてなかったもので・・・。
とりあえず、その問題が解決したら考えようと・・・、
やっぱあれじゃその先が無理なんですかね?
>>770,771
どうもありがとうございます。
ちなみに自分はほんと初心者でsumとかもよく理解できてないんですがw
まあ教科書でも見ながら理解してみようと。
どうもでした。

774 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 18:29:08
>>767
すみません。よく理解できないので
>>747のソースに付け加えてもらえますか?
お手数おかけしてすみません

775 名前:デフォルトの名無しさん []:2005/06/12(日) 18:55:35
ちょと待て
TurtleFrame
Turtle
↑このクラスの中身教えろ
勘で書いてもいいけど時間の無駄

776 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:02:49
クラスの中身?


777 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:06:11
予想:>>747までは先生が黒板に書いてくれた。それが何を意味しているのかさっぱり理解していない

778 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:08:33
>>777
当たりです。どうしようもないんです。
今更プログラミングの授業取ったこと後悔してます
自分には向いてない…。

779 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:18:28
766です。困ったことにsumはまだ習ってなく、
しかもこの課題が出るまでの教科書の範囲にも出てこないんですが、
この問題ってsum使わずに出来るんですかね?
最後の結果なんてのはまさか("7+14+21+・・・+994")と
書くわけにもいかないですし・・・。
ちなみに問題が『1から1000までの7の倍数のみの総和をとり、
結果を表示するプログラムの作成』なので、
できれば自分で考えた994という数字は使いたくないのですが。
実際sumも994も使わずに初歩の記号だけで出来るのかどうかは
よくわからないのですが、ぜひ初心者にもわかりやすい
解答方法がありましたらご指導お願いします。
あ、994はこの際使ってしまおうかとも考えてます。

780 名前:デフォルトの名無しさん []:2005/06/12(日) 19:22:20
>>778
いや、そうは言っても コレだけの情報じゃどうしようもないだろう
なんか適当に一匹亀作って6角形書いて終わりのプログラム作ってごまかせ
つーかいい事思いついた
なんか適当に俺らが未完成のプログラム書いてそれを提出すればいい

GUIなのか?
題意から考えると
10個の点のうちどれか一つが6マス動いたら止まればいい?
6マスが6角形を形成するように動けばいいのか?

781 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:22:43
OK、じゃあint sumをint aに変更だ

782 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:23:43
LISPの宿題の焼き直し?

783 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:31:09
>>780
>>747の時点では10匹の亀が一斉に六角形を描き始めるんです。
それを0〜9の乱数を発生させて出た数にの番号(添字)に相当する
亀に次の辺を描かせて、どの亀が一番早く六角形を描き終わるかを競争させる
とあるんですが…これでは説明不足ですか?

784 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:41:04
>>783
説明なんていらん。ソースをだせ。

785 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:41:54
>>784
public class T51 {
public static void main(String[] args){
TurtleFrame f = new TurtleFrame(600,300);
Turtle[] hm = new Turtle[10]; // 配列オブジェクトを生成
for(int i = 0 ; i < 10; i++){
hm[i] = new Turtle(i * 50 + 25,150,0); // タートルを生成,配列の各要素に代入
f.add(hm[i]);
}
for(int i = 0; i < 10; i++){
for(int j = 0; j < 6; j++){
hm[i].fd(10); // hm[i] に代入されている
hm[i].rt(360/6); // タートルに対するメソッド呼び出し
}
}
}
}


786 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:43:35
TurtleFrameのソースを出せと言っているんだ

787 名前:句読点書けないバカをサマージャンボする俺 ◆9NQzQ21lx. [sage]:2005/06/12(日) 19:44:27
>>786


788 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:48:51
その意味が解りません
ごめんなさい
いい加減スレ汚ししてそうなので消えます

789 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:57:06
すみません。もしかしてこれですか?
//
// Turtle Graphics Library extension for teaching OO concepts
// as a modification of Tatsuya Hagino's Turtle Graphics Library
// Copyright (C) 2000, Hideki Tsuiki, Kyoto University

// Turtle Graphics Library for Information Processing I
// Copyright (C) 1998, Tatsuya Hagino, Keio University
//
// Permission to use, copy, modify, and distribute this software
// for educational purpose only is hereby granted, provided that
// the above copyright notice appear in all copies and that both
// the copyright notice and this permission notice appear in
// supporting documentation. This software is provided "as is"
// with no warranty.


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.Math;
import java.util.Vector;


/** タートルを表示する枠のクラス。 */

790 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 19:59:40
public class TurtleFrame extends TurtlePanel implements ActionListener, ItemListener {
JFrame frame;
// menu
JRadioButtonMenuItem[] speedMenu;
static String[] speedMenuString = {"no kame", "fast", "normal", "slow"};

/** TurtlePanel を、width x height の大きさで作成する。 */
public TurtleFrame(int width, int height) {
super(width, height);
frame = new JFrame("Turtle");
JMenuBar menubar = new JMenuBar();
JMenu file = new JMenu("File", true);
menubar.add(file);
JMenuItem quit = new JMenuItem("Quit");
quit.addActionListener(this);
quit.setActionCommand("quit");
file.add(quit);


791 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:00:32
JMenu speed = new JMenu("Speed", true);
menubar.add(speed);
speedMenu = new JRadioButtonMenuItem[speedMenuString.length];
ButtonGroup bg = new ButtonGroup();
for (int i = 0; i < speedMenuString.length; i++) {
speedMenu[i] = new JRadioButtonMenuItem(speedMenuString[i], false);
speedMenu[i].addItemListener(this);
speed.add(speedMenu[i]);
bg.add(speedMenu[i]);
}
speedMenu[Turtle.speedNormal].doClick();
frame.setJMenuBar(menubar);
Container c = frame.getContentPane();
c.setLayout(new BoxLayout(c, BoxLayout.Y_AXIS));
setAlignmentX(JComponent.CENTER_ALIGNMENT);
c.add(this);
frame.pack();


792 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:01:53
frame.setDefaultCloseOperation(3); // EXIT_ON_CLOSE

frame.setVisible(true);
synchronized(mappedLock) {
if (!mapped) {
try {
mappedLock.wait();
}
catch (InterruptedException e) {
}
}
}

}

/** TurtleFrame を、デフォルトの大きさ(400x400) で作成する。 */
public TurtleFrame() {
this(400,400);
}

// exit
public void exit() {
System.exit(0);
}


793 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:02:58
// menu bar event handler
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (cmd.equals("quit")) System.exit(0);
else if (cmd.equals("restart")) /*restart()*/;
else if (cmd.equals("ps")) /*savePostscript()*/;
}

// menu event handler
public void itemStateChanged(ItemEvent e) {
JRadioButtonMenuItem s = (JRadioButtonMenuItem)e.getItem();
for (int i = 0; i < speedMenuString.length; i++) {
if (s == speedMenu[i]) {
Turtle.speedAll(i);
break;
}
}
}
}




794 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:10:28
Turtleのソースも。
それから問題文も一字一句間違わずに書いて。
丸投げしてもらった方が早いんで。

795 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:11:45
Turtleソース
//
// Turtle Graphics Library extension for teaching OO concepts
// by Hideki Tsuiki, Kyoto University
// as a modification of Tatsuya Hagino's Turtle Graphics Library
// Copyright (C) 2000, Hideki Tsuiki, Kyoto University

// Turtle Graphics Library for Information Processing I
// Copyright (C) 1998, Tatsuya Hagino, Keio University
//
// Permission to use, copy, modify, and distribute this software
// for educational purpose only is hereby granted, provided that
// the above copyright notice appear in all copies and that both
// the copyright notice and this permission notice appear in
// supporting documentation. This software is provided "as is"
// with no warranty.



796 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:12:36
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.lang.Math;
import java.util.Vector;

/** タートルのクラス。 */
public class Turtle{
/** もし、このフィールドの値が true なら、
* 亀を用いた描画を行う。false なら、亀を表示せず、高速な描画を行う。
* 初期値は true。*/
boolean withKame = true;

/** もし、false なら、個々のタートルの
* withKame の値に関わらず、全てのタートルに高速な描画を行う。
* 初期値は true。*/
public static boolean withKameAll = true;

public Color kameColor = Color.green;

// animation parameters
static double rotateStep = 5.0 *Math.PI/180.0 ;
static int moveStep = 5;
static int[] speedStep = {100000, 20, 5, 2};


797 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:15:26
// turtle animation speed constants
final static int speedNoKame = 0;
final static int speedFast = 1;
final static int speedNormal = 2;
final static int speedSlow = 3;

// set the menu
static void speedAll(int s) {
if (s < 0 || s >= speedStep.length) return;
rotateStep = speedStep[s] *Math.PI/180.0;
moveStep = speedStep[s];
withKameAll = (s > 0);
}


TurtlePanel f; // set by TurtlePanel
double angle;// turtle current angle
double x, y;// turtle current position
double dx, dy;// dx = sin(angle), dy = -cos(angle)
boolean penDown;// pen status (up or down)
Color c = Color.black; // pen color
int kameType = 0;
// turtle animation rubber line
int rx, ry;
boolean rubber = false;
int moveWait = 20;
int rotateWait = 20;

798 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:16:09
/** (x, y) という座標に angle の角度で、Turtle を作成。 */
public Turtle(int x,int y, int ia)
{
this.x = ((double)x + 0.5);
this.y = ((double)y + 0.5);
setangle((double)ia *Math.PI/180.0);
penDown = true;
}

/** (200,200) という座標に 0 度の角度で、Turtle を作成。 */
public Turtle()
{
this(200,200, 0);
}

// turtle
static final int kameFig[][] =
{ {-12,-6,-12,6,0,18,12,6,12,-6,0,-18,-12,-6},
{-18,-12,-12,-6},
{-6,-24,0,-18,6,-24},
{12,-6,18,-12},
{12,6,18,12},
{-6,24,0,18,6,24},
{-18,12,-12,6},
{-18,12,-18,-12,-6,-24,6,-24,18,-12,18,12,6,24,-6,24,-18,12},
{-15,-15,-18,-24,-9,-21},
{9,-21,18,-24,15,-15},
{15,15,18,24,9,21},
{-9,21,-18,24,-15,15},
{-3,24,0,30,3,24},
{-6,-24,-12,-36,-6,-48,6,-48,12,-36,6,-24}
};

799 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:16:38
static final int kameRFig[][] =
{ {-12,-6,-12,6,0,18,12,6,12,-6,0,-18,-12,-6},
{-18,-12,-12,-6},
{-6,-24,0,-18,6,-24},
{12,-6,18,-12},
{12,6,18,12},
{-6,24,0,18,6,24},
{-18,12,-12,6},
{-18,12,-18,-12,-6,-24,6,-24,18,-12,18,12,6,24,-6,24,-18,12},
{-15,-15,-24,-18,-9,-21},
{-9,21,-24,18,-15,15},
{-3,24,-3,30,3,24},
{-6,-24,-6,-36,0,-48,12,-48,18,-36,6,-24},
{9,-21,18,-30,15,-15},
{15,15,18,30,9,21}
};
static final int kameLFig[][] =
{ {-12,-6,-12,6,0,18,12,6,12,-6,0,-18,-12,-6},
{-18,-12,-12,-6},
{-6,-24,0,-18,6,-24},
{12,-6,18,-12},
{12,6,18,12},
{-6,24,0,18,6,24},
{-18,12,-12,6},
{-18,12,-18,-12,-6,-24,6,-24,18,-12,18,12,6,24,-6,24,-18,12},
{-15,-15,-18,-30,-9,-21},
{-9,21,-18,30,-15,15},
{-3,24,3,30,3,24},
{-6,-24,-18,-36,-12,-48,0,-48,6,-36,6,-24},
{9,-21,24,-18,15,-15},
{15,15,24,18,9,21}
};

800 名前:794[sage]:2005/06/12(日) 20:25:34
なんか依頼者のソース書き込みが途切れたので、途中で申し訳ないが書いておく。
TurtleFrameが継承してるTurtlePanelも載せといて。

…ってか唐突にあきらめた?

801 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:30:47
public double kameScale = 0.4;
public int kame[][] = kameFig;
public int kameR[][] = kameRFig;
public int kameL[][] = kameLFig;

// draw animation turtle
void kameDraw(Graphics g, int data[][]) {
int ix = (int)x, iy = (int)y;
g.setColor(kameColor);
for (int i = 0; i < data.length; i++) {
int px = 0, py = 0;
for (int j = 0; j < data[i].length; j += 2) {
int kx = data[i][j], ky = data[i][j+1];
int nx = (int)((kx*(-dy) + ky*(-dx)) * kameScale);
int ny = (int)((kx*dx+ ky*(-dy)) * kameScale);
if (j > 0) g.drawLine(ix + px, iy + py, ix + nx, iy + ny);
px = nx;
py = ny;
}
}
g.setColor(c);
g.fillOval(ix - 1, iy - 1, 2,2);
}


802 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:35:25
規制がかかってしまって…
ここまでコピペしてあれですが
ttp://bakkers.gr.jp/javabook/download.html
からダウンロードしてもらっていいですか?
TurtlePanelもはいっています。

803 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:36:43
問題文です

配列…六角形を描くタートルレース

T51は10匹のタートルが順に六角形を描くプログラムです。
これを六角形を描く競争をするプログラムに変更してください。
どのタートルが次の辺を描くかはランダムに決め、いずれかのタートルが
六角形を描き終わったらプログラムを終了するものとします。
具体的には0〜9の乱数を発生させ、出た数の番号(添字)に相当するタートルに次の辺を
描かせて、どのタートルが一番早く六角形を描き終わるかを競争するプログラムです。
0〜9の乱数を発生させる式は (int)(Math.random()*10)
ソースコードの要所には、何をしている部分かを示す注釈を書き入れなさ

804 名前:デフォルトの名無しさん []:2005/06/12(日) 20:40:46
LCpadをつかっているんですけど、
プログラム
#include <stdlib.h>
int heads()
{ return rand() < RAND_MAX/2; }
main(int argc, char *argv[])
{ int i, j, cnt;
int N = atoi(argv[1]), M = atoi(argv[2]);
int *f = malloc((N+1)*sizeof(int));
for (j = 0; j <= N; j++) f[j] = 0;
for (i = 0; i < M; i++, f[cnt]++)
for (cnt = 0, j = 0; j <= N; j++)
if (heads()) cnt++;
for (j = 0; j <= N; j++)
{
printf("%2d ", j);
for (i = 0; i < f[j]; i+=10) printf("*");
printf("\n");
}
}

これなんですけど、引数NMをかくためにはどうやってやるんですか?


805 名前:794[sage]:2005/06/12(日) 20:52:27
こんなんでいいっすか京大生。
public class T51 {
public static void main(String[] args) {
TurtleFrame f = new TurtleFrame(600, 300);
Turtle[] hm = new Turtle[10]; // 配列オブジェクトを生成
for( int i = 0; i < 10; i++ ) {
hm[i] = new Turtle(i * 50 + 25, 150, 0); // タートルを生成,配列の各要素に代入
f.add(hm[i]);
}
// i番目の亀がどこまで進んだのかを格納する変数。
int[] counts = new int[10];
// とりあえず無限ループ
for( ; ; ) {
// 0から9までの乱数決定→亀をランダムに指定
int random = (int)(Math.random()*10);
// 指定した亀を10歩動かす
hm[random].fd(10);
// 指定した亀を60度回す
hm[random].rt(360/6);
// random番目の亀が60度回ったことをcountsをインクリメントすることで表現
counts[random]++;
// 6回回れば六角形を書いたので終了
if( counts[random] == 6 ) break;
}
}
}

806 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 20:57:50
>>805
本当にありがとうございます。
実行できました。
お手数おかけしてすみませんでした。

807 名前:デフォルトの名無しさん []:2005/06/12(日) 21:01:11
double a,b,f;
a=5.123456 ;
b=6.123456 ;
f=a*b;
System.out.println("f="+f);

実数aとbの積fを出力します。このときに小数2桁目までを出力させるにはどうすればいいでしょうか?
↑のプログラムではf=31.37325・・・と表示されます。これをf=31.37と表示させたいのですが。


808 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 21:20:27
766です。>>781
ありがとうございました。
自分の問題提示の不注意でハプニングがありましたが、
(1000まで含むのであれだと1001まで計算してしまったw)
class Sample0004 {
public static void main(String[] args) {
int a = 0;
for(int i=0; i <= 1000; i++) {
if(i%7==0) {
if(i>7) System.out.print(" + ");
a+=i;
System.out.print(i);
}
}
System.out.println(" = " + a);
}
}

に変えたら上手くいきました。元となるものの提供どうもでした。
sumってただの変数に過ぎないってことなのかな・・・。
もう1個課題あるんでがんばろう。
そして、わからなければ再びアドバイスもらいにカキコw
なんにせよ助かりました〜。

809 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 21:29:55
すいません丸投げになりますがお願いします。
課題:以下のコードをFrameをつかってGUIに。

import java.io.*;
import java.util.Random;
import java.math.*;

public class Mazer {

public static void main(String[] args) throws IOException
{
String strMaze, strLocX, strLocY, strInput;
int intCheckMove, intCount, intMazeLength, intLocation, intMoves, intLocY,
intLocX;
intCheckMove = 0; intMoves = 0; intCount = 0;
String[] ArrView = new String[9];
BufferedReader intReader = new BufferedReader(new
InputStreamReader(System.in));
Random RandomGenerator = new Random();

strMaze = "0000000000";
strMaze = strMaze + "0111100110";
strMaze = strMaze + "0010011100";
strMaze = strMaze + "0011010110";
strMaze = strMaze + "0110100100";
strMaze = strMaze + "0011111100";
strMaze = strMaze + "0000009000";

intMazeLength = strMaze.length();
String[] ArrMaze = new String[intMazeLength];

810 名前:809[sage]:2005/06/12(日) 21:31:58
while (intCount < intMazeLength)
{
ArrMaze[intCount] = strMaze.substring(intCount,intCount +1);
intCount++;
}


do
{
intLocation = RandomGenerator.nextInt(intMazeLength);
}
while (!ArrMaze[intLocation].equals("1"));
do
{
intMoves++;
System.out.println("-------------------------------");
ArrView[0] = ArrMaze[intLocation -11];
ArrView[1] = ArrMaze[intLocation -10];
ArrView[2] = ArrMaze[intLocation -9];
ArrView[3] = ArrMaze[intLocation -1];
ArrView[4] = "*";
ArrView[5] = ArrMaze[intLocation +1];
ArrView[6] = ArrMaze[intLocation +9];
ArrView[7] = ArrMaze[intLocation +10];
ArrView[8] = ArrMaze[intLocation +11];

strLocX = String.valueOf(intLocation -11);

811 名前:809[sage]:2005/06/12(日) 21:33:30
if (strLocX.length() < 2)
{
strLocX = "0" + strLocX;
}
intLocX = Integer.parseInt(strLocX.substring(1,2));

strLocY = String.valueOf(intMazeLength - intLocation +10);

if (strLocY.length() < 2)
{
strLocY = "0" + strLocY;
}
intLocY = Integer.parseInt(strLocY.substring(0,1));

if (intCheckMove == 0)
{
System.out.println("That is an illegal move.");
intMoves--;
}
intCheckMove = 0;
intCount = 0;

while (intCount < intLocX)
{
System.out.print(" ");
intCount++;
}

812 名前:デフォルトの名無しさん []:2005/06/12(日) 21:36:55
>>807 お願いします

813 名前:809[sage]:2005/06/12(日) 21:37:16
intCount = 0;
while (intCount < 3)
{
System.out.print(ArrView[intCount]);
intCount++;
}
System.out.println();

intCount = 0;
while (intCount < intLocX)
{
System.out.print(" ");
intCount++;
}

intCount = 3;
while (intCount < 6)
{
System.out.print(ArrView[intCount]);
intCount++;
}

System.out.println();
intCount = 0;
while (intCount < intLocX)
{
System.out.print(" ");
intCount++;
}

814 名前:809[sage]:2005/06/12(日) 21:37:46
intCount = 6;
while(intCount < 9)
{
System.out.print(ArrView[intCount]);
intCount++;
}
intCount = 0;
while (intCount < intLocY)
{
System.out.print("\n");
intCount++;
}
System.out.println("which way would u like to move w a s d");
strInput = intReader.readLine();

if (strInput.equals ("w") && !(ArrMaze[intLocation-10]).equals("0"))
{intLocation = intLocation -10;intCheckMove=1;}

if (strInput.equals ("a") && !(ArrMaze[intLocation-1]).equals("0"))
{intLocation--;intCheckMove= 1;}

815 名前:809[sage]:2005/06/12(日) 21:38:05
if (strInput.equals ("s") && !(ArrMaze[intLocation+10]).equals("0"))
{intLocation = intLocation +10;intCheckMove= 1;}

if (strInput.equals ("d") && !(ArrMaze[intLocation+1]).equals("0"))
{intLocation++;intCheckMove= 1;}

} while (!(ArrMaze[intLocation]).equals("9"));

System.out.println("congratulations. "+intMoves+" moves.");
}
}

816 名前:809[sage]:2005/06/12(日) 21:48:19
見てのとおりの*マークがキーボードのWASDを駆使して
ゴールに辿り着く迷路です。
0が壁1が通路9がゴール。
少し長いのでうpろだにうpしたURLもあげておきます。リネームなり、
コードこぴぺでどうぞ。
ttp://uper.on.pc1.jp/upload/so/up2496.txt

宜しくお願いします。

817 名前:Java初心者[sage]:2005/06/12(日) 22:00:09
>>807

f=(double)((int)((a*b)*100))/100;

私にはこれしか思い浮かびませんでした Orz

818 名前:デフォルトの名無しさん[sage]:2005/06/12(日) 22:25:04
>>807
Double f = new Double(a*b);
String str = f.toString()
str = str.substring(0,str.indexOf(".") + 2);

819 名前:デフォルトの名無しさん[sage]:2005/06/13(月) 01:05:36
丸投げですみません。
ロト6は1〜43までの数字から異なる6つの数字を予想する宝くじである。
このロト6を購入する際の参考になるよう、6つの数字の組を乱数で
生成するプログラムを作成せよ。
ヒント:乱数は次のクラスとメソッドを利用せよ。(1〜9までの乱数発生例)
   int x = (int)(Math.random()*9) + 1
注意:同じ数字が2回以上出てはならない点に注意せよ。

同じ数字を防ぐいい方法がどうにも・・・。ぜひお願いします。

820 名前:デフォルトの名無しさん []:2005/06/13(月) 02:01:16
age

821 名前:デフォルトの名無しさん[sage]:2005/06/13(月) 02:02:15
>>819
import java.util.TreeSet;
public class Q819 {
public static void main(String[] args) {
TreeSet<Integer> number = new TreeSet<Integer>();
while(number.size()<6) number.add((int)(Math.random()*43)+1);
for(int x : number) System.out.print(x+" ");
}
}

822 名前:デフォルトの名無しさん []:2005/06/13(月) 02:24:23
>>819
Math以外は自作系
public class Q819 {
public static void main(String[] args) {
int[] loto = new int[6];
for(int i=0;i < loto.length; i++) {
i[i] = 0;//念のため何も入っていない意味の「0」入れておく
}
for(int i=0; i < loto.length; i++) {
while((i[i] = getNumber(loto,(int)(Math.random()*43) + 1 ))==0){}
}
for(int i=0; i < loto.length; i++) {
System.out.print(loto[i]);
if((i+1)<loto.length) {
System.out.print(",");
} else {
System.out.print("\n");
}}
}
public static int getNumber(int[] loto,int rand) {
for(int i; i < loto.length; i++) {
if(loto[i]==rand) {
return 0;
}
}
return rand;
}
}

823 名前:デフォルトの名無しさん []:2005/06/13(月) 02:27:56
訂正
public class Q819 {
public static void main(String[] args) {
int[] loto = new int[6];
for (int i = 0; i < loto.length; i++) {
loto[i] = 0;//念のため何も入っていない意味の「0」入れておく
}
for (int i = 0; i < loto.length; i++) {
while ((loto[i] = getNumber(loto, (int) (Math.random() * 43) + 1)) == 0) {
}
}
for (int i = 0; i < loto.length; i++) {
System.out.print(loto[i]);
if ((i + 1) < loto.length) {
System.out.print(",");
}
else {
System.out.print("\n");
}
}
}

public static int getNumber(int[] loto, int rand) {
for (int i = 0; i < loto.length; i++) {
if (loto[i] == rand) {
return 0;
}
}
return rand;
}
}

824 名前:デフォルトの名無しさん[sage]:2005/06/13(月) 02:32:39
>>821,>>822,823
どうもありがとうございました。せっかく書いていただいたので
理解してから自分らしくアレンジして打ち込もうと思います。
今日までの課題なもんで早速取り掛かります。どうも〜

825 名前:デフォルトの名無しさん[age]:2005/06/14(火) 00:10:31
簡単なchatを作るという課題です。
サーバとするChatServer.javaと、クライアントとするChatClient.javaを作ってあります。
先にChatServerを実行してから、ChatClientを実行します。
とりあえずchatみたいなものは作れているのですが、最後の一歩が出来ません。
以下、現状です。
1.1つのサーバに対し、2つのクライアントから接続をする。それぞれC1、C2とする。
2.C1がメッセージ「aaa」を送信すると、C1のウィンドウのみに「aaa」と表示される。
3.次に、C2がメッセージ「bbb」を送信すると、C2のウィンドウのみに「bbb」と表示される。
4.次に、C1がメッセージ「ccc」を送信すると、C1のウィンドウのみに「bbb」と追加される。

やりたいことは、「自分以外のクライアントが送信処理を行ったときに、自分のウィンドウも更新される」
ということです。上の例では、2.の時点で、C1、C2両方のウィンドウに「bbb」と出て欲しいのです。
↓にファイルをアップロードしました。添削をお願いします。

ttp://www.uplo.net/
ステルス型 DOWNLOAD
ファイル:716
パスワード:jchat

826 名前:デフォルトの名無しさん []:2005/06/14(火) 00:30:38
>>825
自分でやれ
ったく毎週毎週

827 名前:825[sage]:2005/06/14(火) 00:53:30
>>826
ここって宿題の質問をするスレじゃないんですか?
毎週毎週って、初めて書き込むんですけど…。

828 名前:デフォルトの名無しさん []:2005/06/14(火) 00:54:27
>>827
おーおー噛み付いてきおった
威勢のいいこと

829 名前:825[sage]:2005/06/14(火) 10:42:36
>>828
あなたは良い反面教師ですね・・・。と思っていましたが、何とか自己解決
出来ました。激励ども。

830 名前:デフォルトの名無しさん[sage]:2005/06/14(火) 14:53:44
フレームを開く
その中に小さな画像が何枚かポツンポツンとある、どこでもいい
クリックするとクリックした画像がフレームいっぱいに等比拡大する
もう一度クリックすると元に戻る

そんなプログラムを作ってください orz

831 名前:デフォルトの名無しさん[sage]:2005/06/14(火) 16:57:09
電気ポットの動きをつくると言う宿題なのですが
期限までに間に合いそうにありません
エクセルの設計図と、自分で書いた分をupしておきます

ttp://turibori.net/up/stored/syukudai.zip

どうかお願いします

832 名前:デフォルトの名無しさん[sage]:2005/06/14(火) 21:50:20
>>831
ざっと見て思ったことです。

宿題は「電気ポットの動きを作る」ということだけを言われているのか
(仕様を考えるところも含めて宿題になっているのか)?
あるいは、Excelの仕様は守らなければならない要件になっているのか?

Excelの仕様はSheet1じゃなくてSheet2を見てくれと言っているのか?

Excelの仕様には書かれていない、ソースコードの20行目から33行目は何か?

1秒間に与える熱量についての言及は必要ないか?

833 名前:デフォルトの名無しさん []:2005/06/14(火) 21:55:53
課題:自動販売機
インストラクション: 自動販売機クラスZihankiを作成(Zihanki.java)

フィールド
int js; 「ジュース保持個数」
int m; 「投入金額合計」

メソッド
void insertCoin(int c);「お金を入れる」
int ejectCoin();「投入金額を全部出す」
String Buy(); 「購入ボタン」(戻り値"オレンジジュース"か"お金が足りません"か"売り切れ"か"故障"他)
ジュース1種類のみで1本120とする


お願いします。

834 名前:デフォルトの名無しさん[sage]:2005/06/14(火) 23:10:36
>>832
Sheet2でお願いします。
一秒間に与える熱量については特に指定はありません
待機秒数を設定できれば有難いです。
20行目から33行目の奴は自分で実装したいと思って挫折した代物です。

835 名前:デフォルトの名無しさん[sage]:2005/06/15(水) 08:50:54
>>333
class Zihanki{
int m=0;
int js=10;
void insertCoin(int c){m+=c;}
int ejectCoin(){
int coin=m;
m=0;
return coin;
}
String Buy(){
if(((int)Math.randam()*20)==0){return "故障w";}
if(m<120){return "お金が足りません";}
if(js<1){return "売り切れ";}
js--;
m-=120;
return "オレンジジュース";
}
}

良くわからんがこんな感じか?
通勤中の電車内で書いたので動くかどうかはシラネ。

836 名前:デフォルトの名無しさん[age]:2005/06/15(水) 09:46:36
以下のような九九の表を出力するプログラムを作成しなさい
*U1 2 3 4 5 6 7 8 9
--+---------------------------------
1U 1 2 3 ・・・・・・・9
2U 2 4 6・・・・・・・18

(中略)
9U 9 18 27・・・・・・81

1 九九の答えは0付きの2桁の数
2 掛ける数はスペース付きの2桁の数
3 ループ処理できる箇所はループを使うこと 
substringsを使うらしいですがもうお手上げですorz


837 名前:デフォルトの名無しさん[sage]:2005/06/15(水) 11:44:43
>>831
ttp://turibori.net/up/stored/hw831.zip

仕様書はよく分からんところもあったので、仕様書は度外視し、
「多分こんなものを作りたいんだろう」と思われるものを作ってみた。
参考程度にどうぞ。

仕様書とは、変数名/メソッド名をはじめ色々異なるので、
これをたたき台にして提出するときは、注意して帳尻あわせをすること。


838 名前:デフォルトの名無しさん[sage]:2005/06/15(水) 15:27:55
あるObjectがどのようなバイト列から成っているのかを知るにはどうすれば良いのですか?

839 名前:838[sage]:2005/06/15(水) 15:34:41
質問変更です。
あるObjectを一度文字列に変換してから、再びObjectに戻すことは可能ですか?
可能ならどうするのでしょうか?

840 名前:デフォルトの名無しさん[sage]:2005/06/15(水) 15:48:18
>839
永続化、シリアライズ、Serializable などなどでググれ。

841 名前:838[sage]:2005/06/15(水) 15:51:15
>>840
おぉ、実現できそうです。
早速のレスありがとうございます。

842 名前:838[sage]:2005/06/15(水) 18:33:00
何度もすみません。これが最後の質問です。
ttp://www.wakhok.ac.jp/~maruyama/summer99/node9.html
を参考にして、オブジェクトを渡すものを作りたいのですが、
↑のサイトにある上から1つ目、2つ目のソースコードように Date型を渡すこと
は出来ました。しかし、Link型のものを渡しても、エラーこそ起こりませんが、
sizeが0で中身は当然空っぽのものしか渡されません。

Link型のものはSerializableインターフェースを実装しているので問題無いかと
考えたのですが、どうして出来ないんでしょうか?

843 名前:838[sage]:2005/06/15(水) 18:38:54
スレ汚しすいません。

>>842の「Link型」は「List型」の間違いです。 orz

844 名前:デフォルトの名無しさん[sage]:2005/06/15(水) 21:19:06
>>836

1 九九の答えは0付きの2桁の数
2 掛ける数はスペース付きの2桁の数
3 <略>
substringsを使うらしいですがもうお手上げですorz

たかだか2桁だし、これでいいんじゃない?
もちろん、 0<=n<=99 が大前提です。

private static String zeroFill2(int n) {
  return "" + ((n < 10) ? ("0" + n) : n);
}
private static String zeroSuppress2(int n) {
  return "" + ((n < 10) ? (" " + n) : n);
}


845 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 05:48:33

>> 830
http://up.razor.jp/index.html
ファイルNo: 2997
受信pass: hw830

これ、ほんとに宿題?
宿題の割には実用的な気がする。


846 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 08:02:54
>>837
非情に素早い対応、有難う御座いました。
おかげでなんとか間に合いました。

847 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 10:23:26
非情だと?

848 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 10:29:18
ゴルゴ13みたいな対応だと言うことだ

849 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 11:37:45
三角形のそれぞれの頂点にx,yの座標値とr,g,bのカラー情報を定義し
内部を内挿補間法を用いて塗りつぶすというプログラムなんですが
教えてくださいお願いします

850 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 11:37:47
ttp://sky.ipx.ne.jp/kougei/engineering/データ構造とアルゴリズム第1回レポート課題.pdf

半角空白でくぎりながら連続入力の仕方がわからなくて進みません
そこの部分だけでも教えてください

851 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 12:02:50
>半角空白でくぎりながら連続入力の仕方
あん?

852 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 12:41:08
>>850

●JDK1.4以上の場合:

 String str = "5 5 4 3 4";
 String[] answers = str.split(" ");

 で配列に分割するのがおすすめ。

●JDK1.3以下の場合:
 java.util.StringTokenizer を import 宣言した上で

 String str = "5 5 4 3 4";
 StringTokenizer tokenizer = new StringTokenizer(str, " ");
 String 設問1の回答 = tokenizer.nextToken();
 String 設問2の回答 = tokenizer.nextToken();
 ・・・・・・

 といった感じに、ひとつずつ処理するのがおすすめ。


853 名前:852[sage]:2005/06/16(木) 12:47:26
ん、いや、入力の仕方??

ようちえんからかえるとき、おともだちにきいてください。


854 名前:838[sage]:2005/06/16(木) 12:48:58
>>842-843
をおながいします

855 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 15:21:11
以下(>>856)のソースをベースにして、下記の改良を加えなさい。

・クラス Cat において、猫の年齢をint型で返す メソッドnenrei( )を作成して組み込みなさい
・クラス Pet のmainメソッドの末尾に、「クラスCatで定義されたメソッドnenrei( )を使って
 cat1,cat2の平均年齢を計算して表示するプログラム」を、追加しなさい。

ヒント:
メソッドnenrei( ) は、 クラスCatに用意された年齢変数ageの値を返すだけでよい
平均年齢は、クラスPetの側で、cat1,cat2の値の和を2で割り、System.out.println()命令で画面に出せばよい。

正直さっぱりわからないのでよろしくお願いします・・・_| ̄|○

856 名前:855[sage]:2005/06/16(木) 15:21:52
class Cat {
String name;
String place;
int age;
void setData(String n, String p, int a){
name = n;
place = p;
age = a;
}
void print(){
System.out.println(place + ":"+name+" "+age+"歳");
}
void print(String p, int a){
place = p;
System.out.println(place + ":ねこは"+a+" 匹です。");
}
void print(String variety){
System.out.println(place + ":"+name+" "+age+"歳"+variety);
}
}
class Pet {
public static void main(String[] args) {
Cat cat1 = new Cat();
Cat cat2 = new Cat();
Cat cat3 = new Cat();
cat1.setData("ロビン","う ち",10);
cat2.setData("ちび","となり",14);
cat1.print("雑種");
cat2.print();
cat3.print("う ら",0);
}
}

857 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 15:26:05
public int nenrei(){
return age;
}



System.out.println( (cat1.nenrei() + cat2.nenrei()) / 2 );


ろくな先生じゃなさそうだな。

858 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 15:37:48
>>857
ありがとうございます。
そんなちょっと追加するだけで出来るものだったのか・・・_| ̄|○
無事動きました。精進します

859 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 19:26:14
>836 >844
説明文の仕様とサンプルとして提示された出力例が矛盾してるのは…
まあ、このスレじゃ良くある事か('A`)

860 名前:デフォルトの名無しさん []:2005/06/16(木) 22:51:48
10進表記の整数を入力し、その整数を2進表記に変換して画面に表示する
プログラムをfor文やwhile文などを使わないで
「再起」を使ってやる方法を教えてください。お願いします

(実行例)
整数を入力してください
10
1010


861 名前:860 []:2005/06/16(木) 23:01:02
間違えました再起じゃなくて再帰でした

862 名前:デフォルトの名無しさん []:2005/06/16(木) 23:21:19
春・夏・冬休みあり
毎年確実にボーナスあり
老後をリッチに過ごすための共済年金あり
分厚すぎる退職金あり
残業ほぼ皆無
土日休日あり
性犯罪を犯しても転勤で継続
民間業者からの接待その他は大歓迎
休職してても給料・ボーナスは貰えます
昼食は栄養バランスの整った給食がタダ同然で食べられます
民間人には秘密の謎の調整金や手厚い住宅手当などの各種手当も豊富にあります

特殊教育諸学校 校長   :年収1260万円
    高等学校 校長   :年収1200万円
    小中学校 校長   :年収1150万円
特殊教育諸学校 教頭   :年収1120万円
    高等学校 教頭   :年収1100万円
    小中学校 教頭   :年収1060万円
特殊教育諸学校 教諭45歳:年収 960万円
    高等学校 教諭45歳:年収 920万円
    小中学校 教諭45歳:年収 900万円
特殊教育諸学校 教諭35歳:年収 800万円
    高等学校 教諭35歳:年収 760万円
    小中学校 教諭35歳:年収 760万円
教職員平均年収:850万円
教師夫婦平均年収:1700万円
教師夫婦30歳前半にて6000万円以上の
住居購入率70%以上
教師夫婦定年退職時平均貯蓄額=2億4000万円

http://www.2log.net/home/zk1/archives/blog36.html
彼らの恵まれた生活は皆様の税金で支えられています。

863 名前:デフォルトの名無しさん[sage]:2005/06/16(木) 23:21:45
>>860
こんなんでいいのかなー。。
// Binary.java
import java.io.*;
public class Binary {
StringBuffer buf = new StringBuffer();
public static void main(String[] args) throws IOException {
System.out.println("整数を入力してください");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int number = Integer.parseInt( br.readLine() );
Binary self = new Binary();
self.toBinary(number);
System.out.println( self.buf.reverse() );
}
public void toBinary(int number) {
if( number != 0 ) {
buf.append(number%2);
toBinary(number/2);
}
}
}

864 名前:デフォルトの名無しさん []:2005/06/16(木) 23:37:59
>>863
ありがとうございます。
ちょっと事情があって家ではできないので
明日学校でためしてみます。

865 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 05:30:49
自由課題で、ドラッグ&ドロップで木構造を変更できるJTree(のサブコンポーネント)が必要になったんですが、
なんとか自分で作ろうと一晩中ぐぐったりAPIドキュメントととにらめっこしたりてたんですが、
難しいのか自分が馬鹿なのかさっぱり理解できませんorz

どなたか簡単なサンプルを作っていただけませんか?
面倒なようならわかりやすい解説サイトでもかまいません。
誰か助けて下さい。

866 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 15:18:00
ある行列A(i×j型)とあるベクトルu(j×1)が存在して、この二つの積の計算を反復させる
(つまりA*uを計算して、それで出てきたベクトルをuに入れてまたA*uを計算というのを繰り返す)というプログラムを作りたいのですが、
うまくいきません。10回程度反復できればいいのですが.....。よろしくお願いします。




867 名前:840[sage]:2005/06/17(金) 18:25:10
>842
リストの中身がSerializableじゃないってことはないだろうな?

868 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 19:25:01
>>866
public static void main(String[] args) {
int[][] m;
int[] v;
//initialize
for (int i = 0; i < 10; i++) {
v = mu(m, v);
}
}
private int[] mu(int[][] m, int[] v) {
int[] r = new int[m.length];
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < v.length; j++) {
r[i] += m[i][j] * v[j];
}
}
return r;
}

869 名前:デフォルトの名無しさん []:2005/06/17(金) 19:29:40
jの宣言
iの宣言
for(int count = 0;count <10:count++){
j = A(i*j)*u(j);
}
>>866こうゆうことでっか。
それとも私は、ばかかな。

870 名前:デフォ[age]:2005/06/17(金) 20:24:19
drawImageとかメディアトラッカーにくっついてる
(パラメータで渡す)thisって何だ?
サブクラスのコンストラクタにContainerで渡してきて使う
ってやり方には切れた!クラスを深く切ってるとムカツク!

クラスに分けられねえじゃねえかよ、このクソ言語!
初学者はいつまでもメインのクラスにづらづらと
ドローイメージもなんもかんもぶっこんどくような
ものしか作れねえってことなのか?ちょっとこみいった
ことを知ろうとするとネットにもどこを探していいのか
わからねえし。
こんてなーって何なんだよこのバカ!そんなものゲーム作るのに
必要なのか?
ジェットエンジン渡してプラモデル作れみたいなこといいやがって。
それと、重要なことを知りたくなったら知れるようにしとけ日本語関係者!

むかつくやつらだ・・・!

871 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 20:25:24
(1)2次元平面上の点を表すクラスpointを作成せよ。
ただし、コンストラクタは必ず2つの引数取るものとし、
フィールドには直接アクセスできないようにすること。
(2) (1)で作成したpointクラスを継承して、2次元平面上の直線を表すクラス
segmentを作成せよ。フィールドには新たに方向ベクトルを加えるものとする。
コンストラクタは、2引数または4引数とする。
2引数の場合は、原点を通り、与えられた方向ベクトルを持つ直線を、
4引数の場合は、与えられた点を通り、与えられた方向ベクトルを持つ直線を表すものとする。
(3)別の直線との交点を求めるメソッドintersect()を定義せよ。
intersectの返り値はpoint クラスのオブジェクトである。

この問題が出たのですが、継承とか、javaの文法とかは分かるのですが、
この問題をどうやってjavaで表現すれば良いか分かりません。
とりあえず、途中まで組んでみたのを下に示します。
よろしくお願いします。

872 名前:871[sage]:2005/06/17(金) 20:28:02
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24931

873 名前:デフォルトの名無しさん []:2005/06/17(金) 21:48:42
質問です
C++ではVisual C++でコンパイルやソースを書いているのですが、
JavaではVisual C++のような感じで開発はできますか?

J2SDKをダウンロードしたのですが、
どう使えばいいかさっぱりわかりませんでした・・・

874 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 22:05:44
>>873
自分で調べてくれ。

875 名前:デフォルトの名無しさん []:2005/06/17(金) 22:13:55
そういわずに、是非お願いします・・・

あと、.jarのアイコンが不安定なので一般的なものに変えたいです。
ダブルクリックで起動させるにはどうすれば良いでしょうか?

876 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 22:15:34
>>873
IDE使いたけりゃ、EclipseかNetBeansでも落としな。

877 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 22:23:00
>>865
ttp://up.razor.jp/index.html
ファイルNo 3036
受信Pass hw865

-DragGestureRecognizer と DragSource
-DragGestureRecognizer/DropTarget と JTree
-DragGestureRecognizer/DragSource/DropTarget と 各リスナー
を関連付けるAPIにクセがあるので、
ここをうまく切り抜けるのがポイントかなって思った。

#さらに、DropTarget 自体が DropTargetListener だったり、
#でも DragSource は DragSourceListener ではなかったり、
#もう、わけ分からん。


878 名前:デフォルトの名無しさん []:2005/06/17(金) 22:40:16
また質問です
J2SDKをインストールする際に、
最後のほうのデータフォルダに関する所で
InternetExploreのチェックリストがあります。

これの意味がわかりません。
チェックははずすべきなのでしょうか?

879 名前:デフォルトの名無しさん []:2005/06/17(金) 22:48:29
>>878
入れとけ。IEでAppletがSun謹製のJREで動くようになる。

880 名前:866[sage]:2005/06/17(金) 23:03:14
>>868
>>869
ありがとうございます。なんかよくわかんないので自分で作ったんだけど最後のベクトルの値が手計算とうまく合わないプログラムを
載せてみます。間違えを指摘してもらえるとうれしいです。

public class houbutu{
public static void main (String[] args){
int N=5;
double [][]A=new double [N][N];
double []K=new double [N];
double []U={1.0/6.0,2.0/6.0,3.0/6.0,2.0/6.0,1.0/6.0};
int i,j;
double r=0.36;
double t;

for(i = 0; i < N ;i++){
for(j = 0; j < N ;j++){
A[i][j]=0;
if(i==j){
A[i][j]=1.0-2*r;
}
else if(i+1==j){
A[i][j]=r;
}
else if(i==j+1){
A[i][j]=r;
}
}
}//行列Aを定義//



881 名前:866[sage]:2005/06/17(金) 23:03:39
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
System.out.print(A[i][j] +"\t");
}
System.out.println("");
} //行列Aを表示//
for(i = 0 ; i < N ;i++){
System.out.println(U[i] +"\t");//最初のベクトルUを表示//
}

for(t=0;t<2;t++){
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
K[i]+=A[i][j]*U[j];
U[j]=K[i]
}
}
}

System.out.println("");

for( i = 0; i < N; i++){
System.out.println(K[i] +"\t");//最後のベクトルUを表示//
}
}
}

882 名前:デフォルトの名無しさん []:2005/06/17(金) 23:13:36
Java 2 Platform Standard Edition 5.0

Java 2 Platform, Standard Edition, v 1.4.2 (J2SE)

の違いがまったくわかりません。
どっちのダウンロードがお勧めですか?

883 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 23:14:20
いいかげんにしろ

884 名前:デフォルトの名無しさん []:2005/06/17(金) 23:16:59
そうゆう事を言わずに教えてください!
名前も似てるし、どっちが新しいバージョンなのかわかんないです・・・

885 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 23:19:29
5.0は、Genricsとか可変長引数とか色々言語仕様が拡張されているが、これからHello worldやるやつには関係ないから気にスンナ。

886 名前:デフォルトの名無しさん[sage]:2005/06/17(金) 23:20:20
5.0のが新しい

887 名前:デフォルトの名無しさん []:2005/06/17(金) 23:20:57
じゃあ5.0にするお

888 名前:デフォルトの名無しさん []:2005/06/18(土) 00:17:38
なぜか拡張子jarを右クリックすると
二つのJREが表示されて気持ち悪いので
Javaに関するプログラムを一度すべてさくじょしました。
今後はこのようなことがないようにしたいのですが

JDKとJREをそれぞれダウンロードして実行するのが良いでしょうか?
それともJDK付属のJREをインストールするべきでしょうか?

889 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 00:35:19
宿題以外は質問スレいけ

890 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 00:35:55
>>2-888
質問は質問スレへ

891 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 00:48:22
>>889
お前はVIPにいけ

892 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 02:47:23
>>871
スジはあってる。

19行目〜:
 double a1;
 a1=vx/vy;  →不要。
方向ベクトル(vx, vy)と等価なので、敢えてインスタンス変数で持つ必要はない。
もしインスタンス変数にするのなら、代入文はコンストラクタ内になるはず。

32行目〜:
 vx=v1/super.x;
 vy=v2/super.y;  →誤り。
(v1, v2)は方向ベクトルだから、そのまま(vx, vy)に代入する。

あとは、intersect() で、連立方程式
(x, y) = (a1, b1) + B1*(vx1, vy1)
(x, y) = (a2, b2) + B2*(vx2, vy2) (B1,B2は任意の実数)
つまり、
(x - a1) / vx1 = (y - b1) / vy1
(x - a2) / vx2 = (y - b2) / vy2
を解けばいい。


893 名前:838[sage]:2005/06/18(土) 02:52:28
>>867
お恥ずかしい、まさにそこが原因でした。
ありがとうございました。

894 名前:デフォルトの名無しさん []:2005/06/18(土) 12:59:15
JDK5.0とeclipseをインストールして使っています。

C++では拡張子がcのファイルをダブルクリックするとソースが表示できましたが、
eclipseで拡張子jarのファイルをダブルクリックで開くにはどのような設定が必要ですか?


895 名前:871[sage]:2005/06/18(土) 13:01:06
>>892
レスありがとうございます。
投稿した後、とりあえず自分でやってみて正しいと思われる値が出ました。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24943
で、指摘されたところを直すと、変な値が出てきました。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24944

896 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 13:20:41
>>894
質問は質問スレへ

897 名前:デフォルトの名無しさん []:2005/06/18(土) 13:24:58
おk

898 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 14:57:00
>>896
宿題なんです。

899 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 15:28:18
>>898
出題文を書いてごらん。

900 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 17:02:56
もはや>>894の質問は>>1の五箇条の御誓文5番の
> 宿題&課題とその回答プログラムに対する質問はOK ですが、
に当てはまっていないような気がする。

901 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 19:24:14
>>877
ログが流れた模様です。
>>865氏ではありませんが勉強のため再upお願いできませんでしょうか?

902 名前:デフォルトの名無しさん []:2005/06/18(土) 21:49:16
Javaの質問です
『あの芸能人のhpが大変です』
例の6匹の亀を操るウサギシリーズなんですがいいですか?


903 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 22:02:20
>>902
質問は質問スレへ

904 名前:デフォルトの名無しさん []:2005/06/18(土) 22:04:07
>>903
2年前です『あの芸能人のhpが大変です』

いいですか?

905 名前:デフォルトの名無しさん []:2005/06/18(土) 22:15:12
>>895
なんにせよ、Point のフィールドは、privateにして、
getX(),getY()メソッドは必要かと、
intersect の引数は、segumentでは、ないかと。

906 名前:デフォルトの名無しさん []:2005/06/18(土) 22:17:11
>なんにせよ、Point のフィールドは、privateにして、
なんで?

907 名前:デフォルトの名無しさん []:2005/06/18(土) 22:17:50
>>905
追加。疑問は、残ります。なぜ、point を継承しているのか。
なにかメリットはあるのかと。

908 名前:デフォルトの名無しさん []:2005/06/18(土) 22:20:22
オブジェクトコンポジションにしないと死ぬわけでも無かろうに

909 名前:デフォルトの名無しさん []:2005/06/18(土) 22:20:33
>>906
>>871の(1)
を見てそうおもいましたが。

910 名前:デフォルトの名無しさん []:2005/06/18(土) 22:21:35
>>908
メリットを考えてのことです。


911 名前:デフォルトの名無しさん []:2005/06/18(土) 22:23:56
>>910
中途半端に言うのであれば、(自分はさもしっているかのように)余計な事言うな
言うのであればなぜか理由明確にすれ

912 名前:デフォルトの名無しさん []:2005/06/18(土) 22:31:49
>>911
pointの継承を使うのであれば、
インスタンスを持って、操作する方がいいと思いました。
そう思ったのは、継承するからには、
フィールドあるいは、そのオブジェクト自身が、多重にわたって、
活用される、というわけでもないし。
メソッドを作っていて、継承もとのオブジェクトが、
何か、呼び出すわけでもないし。
メリットを思いつくことができなかったのですが、
何かこういうわけで、継承しているのです。
というのがあれば、おしえていただきたいのですが、

913 名前:デフォルトの名無しさん []:2005/06/18(土) 22:39:11
>>912つづき
私もこの問題を解いていて
どういう様にサブクラスを作るのか。あらこれ考えてのことです。
さも知っているかのように、言っているのではありません。

914 名前:デフォルトの名無しさん[sage]:2005/06/18(土) 22:42:30
え?ていうか課題が「pointを継承して〜」なんで継承してただけじゃないの?

915 名前:デフォルトの名無しさん []:2005/06/18(土) 22:47:39
うーん
継承したことによるデメリットを述べて、それをもって継承しない方法のメリットに変換しているような気が・・・

916 名前:デフォルトの名無しさん []:2005/06/18(土) 23:03:11
>>914-915
>>913です。
自分勝手で申し訳ないのですが、
もっか、オブジェクト指向の本を読んでいて、その勉強してますので、
自分勝手な意見になってしまい申し訳ありませんでした。
確かに必ずsegumentクラスを作るには、pointクラスを作るという法則
は成り立ちますが、(勝手にそのためかなと思っていますが、
先生は継承の学習にもなるかなと思って、こういう問題を出したのかな、
とかも考えたりして、かなり自分個人の今の状況で物事を言ってること
すみませんでした。

917 名前:デフォルトの名無しさん []:2005/06/18(土) 23:15:39
>>881
K[i]+=A[i][j]*U[j];
k配列も移動しているのに、+=です。これはおかしいかと

918 名前:871 []:2005/06/18(土) 23:50:55
えーと、様々な議論がなされていますが、
フィールドがprotectedなのは自分で作ってみた時点でpointクラスのx,yに
アクセスする必要があると思ったのでそうしただけですので、
自分のプログラムが間違っていたら別に変えても良いのですが、
後、引数にクラスを持ってくる方法とか、インスタンスとかの用語がまだ
しっかりと理解していないので、コードに示していただくと嬉しいです。


919 名前:デフォルトの名無しさん []:2005/06/18(土) 23:53:56
それはおかしい。
お前が意味調べりゃすむことだろ。

920 名前:901[sage]:2005/06/19(日) 00:41:41
自分で作ってみました。不完全部分もありますが。。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24956
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24957

921 名前:892[sage]:2005/06/19(日) 02:32:47
>>895

892です。
う、確かにこの指摘じゃ何を言いたいのか分からない。
こういうことが言いたかった。

交点座標を (X, Y) とし、

連立ベクトル方程式は
(X, Y) = (直線1.x, 直線1.y) + B1*(直線1.vx, 直線1.vy)
(X, Y) = (直線2.x, 直線2.y) + B2*(直線2.vx, 直線2.vy)
(B1,B2は任意の実数)

B1,B2を消した連立方程式が
(X - 直線1.x) / 直線1.vx = (Y - 直線1.y) / 直線1.vy
(X - 直線2.x) / 直線2.vx = (Y - 直線2.y) / 直線2.vy

で、こんな感じに書いてほしかった。
http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24958
激しくインデントがずれたので、
「Download as file」して見たほうがいいかも。


922 名前:892[sage]:2005/06/19(日) 02:34:28
ちなみに・・・

>>905
フィールドの件も引数型の件も、作成者の気持ち次第かと。
ただ、問題文を読むと、フィールドは private を指示しているようにも読める。
個人的には、private + segment の組合せがベストだと思う。

>>907
クラス設計の話はさておき、「継承」の理解度チェックのためにこうなったのかと。

>>912
>pointの継承を使うのであれば、
>インスタンスを持って、操作する方がいいと思いました。
そのとおりだと思います。

>>916
>先生は継承の学習にもなるかなと思って、こういう問題を出したのかな、
やはり、そこか!


ま、オブジェクト指向を論ずる前に、オブジェクト指向になってなくてもいいから
プログラム(アルゴリズム)を組めるようになるこった。
intersect() を見る限り、まだまだ力量不足。
>http://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=24943
というか、直線A,B,Cは、全部傾きが1だから、交わらないんじゃ・・・


923 名前:892[sage]:2005/06/19(日) 02:54:35
なんか、語弊があるな・・・

×個人的には、private + segment の組合せがベストだと思う。
○個人的には、おっしゃるとおり、private + segment の組合せがベストだと思う。

924 名前:デフォルトの名無しさん []:2005/06/19(日) 13:32:43
>>866
どういう答えを導き出したいのか分からないので答えようがない

925 名前:デフォルトの名無しさん[sage]:2005/06/19(日) 13:37:16
>>924
導かれる答えが分かっているのなら初めからプログラムなんて組まん

926 名前:デフォルトの名無しさん []:2005/06/19(日) 13:49:45
>>866
手計算で出た答えは何でしょう。

927 名前:デフォルトの名無しさん []:2005/06/19(日) 20:58:06
変数を入力させ、マイナス、小数点、半角数字以外はエラーとしたい。
どういうメソッドがよろしいですかね?

928 名前:デフォルトの名無しさん[sage]:2005/06/19(日) 21:11:51
言ってるとおりでいいなら
String.matches("[-\\.\\d]+")

929 名前:デフォルトの名無しさん []:2005/06/19(日) 21:48:41
どなたかご指導を!!
現在オラクル8IDB PL/SQL にてwebページを作成しています。
リンク先に値を渡したいのですがうまくいきません。
ソースです。 <script type="text/javascript"><!--function FC(WO) { switch(WO.FSGo.selectedIndex){
case 0:document.forms[0].action="192.168.0.90" break;case 1:
document.forms[0].action="http://10.195.0.1/pls/kintai/KN_YUU"
break; case 2: document.forms[0].action="http://10.195.0.1/pls/kintai/KN_FURI"
break; case 3: document.forms[0].action="http://10.195.0.1/pls/kintai/KN_DAI"
break; case 4: document.forms[0].action="http://10.195.0.1/pls/kintai/KN_TOKU"
break; }
document.forms[0].submit();
}
//-->
</script></head><body>
<form method="post" action="">
<select name="FSGo" onChange="FC(this.form)" >
<option> <option>有給 <option>振休 <option>代休 </select>
<input type="hidden" name="hidden1" value="'||SY||'">
</TD></form>');どなたか解る方お願い致します。




930 名前:デフォルトの名無しさん[sage]:2005/06/19(日) 22:15:43
>>929
JavaScriptはスレ違い。
あと、IPアドレス載っちゃってるけどいいの?

931 名前:デフォルトの名無しさん []:2005/06/19(日) 22:16:32
>>930
IPはダミーですのですれ違いなら他にいきます。
すみませんでした

932 名前:デフォルトの名無しさん []:2005/06/19(日) 22:40:03
ほぼ丸投げに近いのですが
例えば、java Find3 the < sample.txt を実行すると、sampleファイ
ル中に出現するtheの単語の数を数えてその数を画面上に表示する。
ただし、指定された文字列の大文字小文字は区別しないものとする。
つまり、theとTheは一致する。また、the とtheyは一致してはなら
ない。
標準入力から入力されるファイルは一般的な英文であるとし、指定
した文字列が正確に数えられるように工夫せよ。

大文字小文字の区別はできたのですが、文末や改行のところの単語、つまり
スペースに挟まれていない単語の検索方法がわかりません。
お願いします。



933 名前:932 []:2005/06/19(日) 22:41:32
プログラムはこんなかんじです。

import java.io.*;

public class Find2 {
public static void main (String[] args) {
if (args.length !=1) {
System.out.println("使用法:java Find2 検索文字列 < 検索対象ファイル");
System.out.println("例:java Find2 System < Find2.java");
}
String findstring = " "+args[0]+" ";
System.out.println("検索文字列は「" + findstring + "」です。");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int p = 0;


934 名前:933続き []:2005/06/19(日) 22:42:05
try {
String line;
int linenum = 0;
while((line = reader.readLine()) !=null) {
line = line.toLowerCase();
int n = line.indexOf(findstring);
while(n >= 0) {
p++;
line = line.substring(n+args.length);
n = line.indexOf(findstring);
}
linenum++;
}
}catch (IOException e) {
System.out.println(e);
}
System.out.println(findstring + "が出てきた回数は" + p + "回です。");
}
}




935 名前:927 []:2005/06/19(日) 23:51:29
すいません、訂正です。
0.0056とか.00065とか-2.3600などの数値はOKだが
それ以外はNGとしたいんです。全角とかもNGです。
お願いします。

936 名前:デフォルトの名無しさん[sage]:2005/06/19(日) 23:55:00
>>933
char c = args[0].charAt(0);
String w = "[" + Character.toLowerCase(c) + Character.toUpperCase(c) + "]" + args[0].substring(1, args[0].length());
Matcher m = Pattern.compile("\\s" + w + "\\s").matcher(text);
int i = 0;
while (m.find()) i++;

こういうのが欲しいんじゃないよね。

937 名前:デフォルトの名無しさん[sage]:2005/06/20(月) 00:02:13
>>935
try{
 double d = Double.parseDouble(string);
}catch(Exception e){
 System.out.println("だめ");
}


938 名前:デフォルトの名無しさん[sage]:2005/06/20(月) 00:38:47
0.--.....

こう言うのが通っちゃうのはいやん。

^-?\d*\.?\d*$

こんな感じ?

939 名前:877[sage]:2005/06/20(月) 01:40:49
>>901
>>920

あげ直しててみました。
ttp://www.uplo.net/
ステルス型
ファイル 851
pass hw865

ここにネタが上がってから付け焼刃でAPI調べて作ったので
参考になるかどうかは分かりませんが。


940 名前:デフォルトの名無しさん[sage]:2005/06/20(月) 01:42:57
現在学校で多分木に関する課題を行っています。
括弧表記法で入力された物をコンピューターに理解させるアルゴリズムの部分がまったく見当もつきません。
どなたか教えていただけないでしょうか?
よろしくお願いします。

941 名前:デフォルトの名無しさん[sage]:2005/06/20(月) 02:08:30
>>936
textをtoLowerCase()するならこれでいいじゃん。
Matcher m = Pattern.compile("\\s" + args[0].toLowerCase() + "\\s").matcher(text.toLowerCase());
int i = 0;
while (m.find()) i++;

>>940
もっと詳しく。

942 名前:940[sage]:2005/06/20(月) 10:53:57
コマンドライン引数として
"(AA (BA BB) (CA CB))"
このような形のものが与えられるので、それをコンピュータ内部に取り込ませて、そこから
括弧表記
後置表記
図表現
の3種類の方法で出力するということをやりたいのです。
がこの「コンピュータ内部に取り込ませて」の部分のアルゴリズムがまったくわかりません。
一応
class Node {
String word;
Node left, right;

Node(String str) {
word = str;
left = null;
right = null;
}
}
のような形で2分木の場合におけるクラスがヒントとして与えられているのですが・・・。
どなたかよろしくお願いします。


943 名前:デフォルトの名無しさん []:2005/06/20(月) 15:09:23
この課題では、多分木のノードと二分木のノードのどちらを作成するのですか?
ノードの内容となる文字列の区切りは、括弧とスペース(空白)でよいのですか?


944 名前:940[sage]:2005/06/20(月) 19:41:45
基本的に作成するのは2分木で、それの応用として多分木を作るそうです。
私はその最初の2分木のアルゴリズムすら理解できなくて・・・。
また区切りはそれでよいです。

945 名前:デフォルトの名無しさん []:2005/06/21(火) 08:53:36
しかし、これだと
AA (BA BB) (CA CB))
ルートの下に3つノードがあるのですが・・・
2分木ではムリです・・・


946 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 09:18:42
>>945
import java.util.Vector;
class Node {
 String word;
 Vector<Node> children; //いくつでもどーんと来やがれ!
}


947 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 09:44:03
>>946
あ、それです。
構文解析部分も作りなさい。
セパレータは先に述べた括弧と半角空白です。
お願いします。

948 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 11:29:58
2分木ではないね。
VectorはArrayListでいいんじゃない?

949 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 11:47:11
Vectorはマルチスレッドセーフだけど、ArrayListはそうじゃないから
拡張性からしたらVectorの使用の方が正しいね。
並列プログラミングも視点にいれないと駄目だよ。

950 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 11:49:08
マルチスレッドは難しいとはいえ、シングルスレッドプログラミング
だけのJavaでは、正に牛肉の無い牛丼と言った感じだ。

951 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 11:59:40
Vectorは古いから、ArrayListの方がいいんじゃないかと…。
スレッドセーフにも出来るし。

952 名前:M.B.[sage]:2005/06/21(火) 12:37:54
>>951
> Vectorは古いから
すると時代は StringBuffer より StringBuilder?

953 名前:デフォルトの名無しさん []:2005/06/21(火) 13:14:29
おお、M.Bたんが。懐かしい。
このスレってみんなどっか行っちゃうのだよな・・・

954 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 13:36:06
>>952
Enumeration より Iterator
Vector より ArrayList
Dictionary より Map
Hashtable より HashMap
Stream より Channel
StringBuffer より StringBuilder
が密かなトレンド。

>>953
俺も帰ってきたぞ。名無しだが。
2ch より @IT?

955 名前:デフォルトの名無しさん []:2005/06/21(火) 14:30:48
パッケージの作り方教えてください。

956 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 19:08:38
>>954
2ch より人間レベルが低いが Java House がいい。

957 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 21:32:36
次スレを立てました。

http://pc8.2ch.net/test/read.cgi/tech/1119356753/l50

現スレの回答は、このスレに書いてください。


958 名前:デフォルトの名無しさん[sage]:2005/06/21(火) 23:20:41
スレNo.はもうこのまま52, 53, 54, …となってしまうのだろうか。。。

959 名前:デフォルトの名無しさん[sage]:2005/06/23(木) 00:17:28
>>954
>Hashtable より HashMap
javadocによるとHashtableはスレッドセーフで、HashMapはそうじゃないみたいなことが
書いてあるけど、それでもHashMapのほうがいいのかな?

960 名前:デフォルトの名無しさん[sage]:2005/06/23(木) 00:57:33
>>959
Collections/ConcurrentHashMap

961 名前:デフォルトの名無しさん[sage]:2005/06/23(木) 04:28:42
>>959
synchronized されているからといって
スレッドセーフとは限らない。

当初考えられてたよりもスレッドセーフは微妙で、
長い?議論の末やっと 5.0 になって
メモリモデルが改善されたなどという微妙なところがあったりする。

Map の同期化については、いい題材で、
IBMの記事になってたりする。

でも、5.0 では標準ライブラリに
ダグリーのスレッドセーフなコレクションが載ってると思うから、
必要ならばそれを使うのが吉かと。

962 名前:デフォルトの名無しさん []:2005/06/23(木) 21:21:29
名前を入力したら学生番号が出力されるプログラムってありませんか?

963 名前:デフォルトの名無しさん[sage]:2005/06/23(木) 21:27:00
あるだろうな。

964 名前:デフォルトの名無しさん[sage]:2005/06/23(木) 21:33:13
>>962
1人/日ってとこだな。\70000で請け負うぞ。

965 名前:デフォルトの名無しさん []:2005/06/23(木) 21:39:47
留年しちゃいます。誰か作って下さい。
全く分かりません

966 名前:デフォルトの名無しさん[sage]:2005/06/23(木) 21:41:22
>>965
それが自分の実力じゃないか
留年しろよ

967 名前:デフォルトの名無しさん[sage]:2005/06/23(木) 23:35:20
>>965
///// 使い方
///// java Meibo [名前]
/////
class Meibo {
public static void main(String args[]) {
// ここに名前を入れておく
String storageName[] = {"Java", "C" , "Pascal"};
// ここに学生番号を入れておく
String storageNumber[] = {"001", "002", "003"};
// 当たり前だが名前と学生番号は対応する順序で無いと駄目

for(int i=0; i<storageName.length; i++)
if(storageName[i].equals(args[0])) {
System.out.println("学生番号は "+ storageNumber[i] +" です。");
System.exit(0); }
System.out.println("見つかりませんでした。");
}}

968 名前:デフォルトの名無しさん[sage]:2005/06/23(木) 23:41:11
>>967
あのねぇ。。。

969 名前:デフォルトの名無しさん []:2005/06/23(木) 23:55:51
>>967
ありがとうございます
これを実行すればいいんですか?

970 名前:デフォルトの名無しさん[sage]:2005/06/24(金) 00:08:24
>>969
仕様が分からないからなんともいえないけど
>>967の配列部分に自力で学生番号と名前を入力しておけば動くよ。

971 名前:デフォルトの名無しさん []:2005/06/24(金) 00:38:02
967さん、本当にありがとうございます。

972 名前:デフォルトの名無しさん[sage]:2005/06/24(金) 12:29:40
そんなのでいいのか?

973 名前:デフォルトの名無しさん[sage]:2005/06/24(金) 20:13:18
文句があるならもっといいものを貼り付ければいいのに

974 名前:デフォルトの名無しさん[sage]:2005/06/25(土) 00:32:51
RDBから実装してくれるんだろうな。楽しみだ。

975 名前:デフォルトの名無しさん []:2005/07/01(金) 10:01:16
ラジオボタンの判定について質問なのですが、
メインとは違うクラスでボタン、ラジオボタン等の設置をしていて、
メインクラスで

public void actionPerformed(ActionEvent e) {
if(ボタンを押されたとき){
if(ラジオボタンAが押されていれば){
処理1;
}
else if(ラジオボタンBが押されていれば) {
処理2;
}
else if(ボタンBを押したとき){
if(ラジオボタンAが押されていれば){
処理1;
}
else if(ラジオボタンBが押されていれば) {
処理2;
}
}

のような判定を行いたいのですが、ラジオボタンの判定だけどうも上手くいきません。
どなたかご教授お願いします(´・ω・`)

ちなみに ボタンAが押されたとき はif(e.getSource() == window.A)で上手く処理できています。
window はボタン設置等をおこなっている違うバウンダリクラスです。

976 名前:デフォルトの名無しさん []:2005/07/01(金) 10:04:48
ちなみに、ボールを複数表示し、それぞれのボールを選択でき、
上下左右の4つのボタンで任意に動かせるプログラムを作るという課題です。
ボタン設置などと、判定処理などは違うクラスで実装しないといけません。

977 名前:デフォルトの名無しさん[sage]:2005/07/08(金) 15:35:53
>708
激亀レスだが
MySQLのJDBCはAspectJのライブラリを要求されます。
AspectJをダウンロードしてインストール後、Tomcatの/common/lib
に格納すれば動きます

978 名前:デフォルトの名無しさん []:2005/07/11(月) 01:38:51
Color c[] = {Color.yellow, Color.blue, Color.red,
Color.orange, Color.green};
こう書いておいて、
ランダムでこの中から色が選ばれるようにするにはどうすればいいんでしょうか?

979 名前:デフォルトの名無しさん[sage]:2005/07/11(月) 23:56:16
>>978
int tmp = (int)(Math.random() * 10.0) % c.length;
Color random_color = c[tmp];

980 名前:デフォルトの名無しさん[sage]:2005/07/13(水) 03:09:06
.wavファイルの特定の周波数と周波数の間のみを再生(または新しくフィルタを通った結果の.wavファイルを出力する)
するバンドパスフィルタを作れ。
バンドパスフィルタとは特定の周波数の間のみを残して、他の周波数成分をカットしてしまうフィルタである。

・wavファイルを開く機能を実装
・周波数帯を指定する機能を実装
・指定された周波数帯のバンドパスフィルターとして機能する
・バンドパスフィルタを通った後の結果を再生、またはファイルへ出力する機能を実装

*1 演算速度は求めない。
*2 .wavファイルのフォーマットはモノラル16bit 44.1kHzに固定するが、長さは不定とする。


よろしくお願いします。

981 名前:デフォルトの名無しさん[sage]:2005/07/14(木) 00:57:53
>>980
while(1){
printf("現在データを解析中です。。。\n");
sleep(1000);
}

982 名前:デフォルトの名無しさん[sage]:2005/07/14(木) 18:48:25
>>981
Cじゃねえええええええええええええええええええええええええ。
Javaでだああああああああああああああああああああああ!!!!

983 名前:デフォルトの名無しさん[sage]:2005/07/14(木) 21:38:05
while(true){
  System.Console.WriteLine("現在データを解析中です。。。");
  Thread.Sleep(1000);
}

421 KB
全部 最新50
DAT2HTML 0.33dp Converted.
inserted by FC2 system