★★ Java の宿題ここで答えます Part 52 ★★
1 :
小島露観(伯魔壬旭) :
2005/06/21(火) 21:25:53 【Java宿題スレッド基本ルール・五箇条の御誓文】
1. 投稿の前に自助努力しましょう。少なくとも回答をコンパイル・実行
できる程度にはJava に習熟しておきましょう。
2. また、キーワード検索を行なうなどして、少なくとも問題文の意味を
理解したうえで投稿しましょう。それが無理なら、問題文は自己省略せずに、
直接全部貼り付けてください。最悪の場合、宿題&課題をそのまま丸投げ
するのが一番好ましい提示法です。
3. 数学問題は「○×法でせよ」だけでなく、その解を出す為の数式や
前提条件などを具体的かつ詳細に説明してください。
4. もし自分の提示課題への回答プログラムが返って来たら、
動いた動かなかった位の報告をお願いします。
5. 宿題&課題とその回答プログラムに対する質問はOK ですが、
一般的な質問は質問スレで行なってください。また、多言語の課題は
原則としてスルーされますので、ご了承願います。
【回答プログラムの掲載場所】
Java質問スレWiki
http://www.wikiroom.com/java/ ソースポストネット
http://sourcepost.sytes.net/ 【前スレ】
★★ Java の宿題ここで答えます part51 ★★
http://pc8.2ch.net/test/read.cgi/tech/1112154540/l50
2 :
イリュミナートX「軍帥」・伯魔壬旭 :2005/06/21(火) 21:29:35
先月から、週刊誌に掲載されたり、日刊紙で報道されたりで 大変でした。 今スレでは、また頑張って出来るだけ回答したいと思います。 皆さんも課題提示とプログラム回答をお願いします。
3 :
メリ :2005/06/21(火) 22:09:17
作文課題:「学力低下について」 近年「学力低下」が懸念されていることに関して貴方自身の考えを600字以内で述べなさい。 よろしくお願いしますm(_ _)m
4 :
デフォルトの名無しさん :2005/06/21(火) 22:18:15
//メニューバーの生成 JMenuBar mb = new JMenuBar(); this.setJMenuBar(mb); //親メニューの生成と追加 JMenu menu = new JMenu("メニュー"); mb.add(menu); //子メニューの生成と追加 JMenuItem reset, exit; menu.add(reset = new JMenuItem("リセット")); menu.addSeparator(); menu.add(exit = new JMenuItem("終了")); こう書くとthis.setJMenuBar(mb);がシンボルを解決できません と出るんですが、どうしてでしょうか?
>>5 ちゃんとJFrameを継承してますか?
というか、それは宿題ですか?
7 :
5 :2005/06/21(火) 23:04:46
はい、宿題です。 JFrameは継承してます。見本と同じように作ったのですが・・・。
8 :
5 :2005/06/21(火) 23:05:34
と思ったらJPanelしか継承してませんでした・・・。
9 :
デフォルトの名無しさん :2005/06/21(火) 23:30:14
>>3 「学力低下について」
現在まで延々と受け継がれてきた「詰め込み教育」の弊害がついに
限界点に達したとの事でしょう。
自由な発想を奪い過度の知識を文字通り叩き込む教育の犠牲と
なっているのが現代の子供達です。歪んだ教育がなされている以上
学力低下は当然の結果です。
子供達には自由な学習時間を与えねばなりません。大人達の勝手な発想で
子供達を縛ってはなりません。それは、子供達に多大な苦痛を
与えるだけでなく、本来持っている独創性まで奪ってしまいます。
知識を無理矢理教え込む従来の授業を減らし、子供達の好奇心と独自性に
まかせた「自由学習」「総合学習」こそが必要です。
これによって子供達は学ぶ楽しさを知り、真の学力を獲得できます。
さらに、自分で考え自分で行動する事により独立心が芽生え人間的にも
成長するでしょう。日本の将来の為にもゆとりある教育を推進すべきなのです。
質問者用テンプレ 【Java 歴】 経験年(月、日)数を書く(必須)。 【 種別 】 丸投げ/質問のどちらかを選ぶ(必須)。 【 課題 】 与えられた課題をそのまま書く(なるべく書く)。 【不明点 】 分からないところ、聞きたいことを書く。 【 用語 】 数学用語などのフォローを書く(あれば必須)。 【 期限 】 提出期限や解答希望日を書く。 【 備考 】 何かあれば。
11 :
デフォルトの名無しさん :2005/06/22(水) 00:57:36
【Java 歴】3週間 【 種別 】 質問 【 課題 】 640×800のフレームを開き、複数枚(100枚以上とする)の画像を重ならないように表示させる 画像は縦長と横長の2種類、フレームの大きさは固定、つまりワクから画像がハミでるのでそこを何とかする 格画像のサイズは変えてもいいが比は変えてはいけない フォルダの中に縦長と横長がバラバラに入っている 【不明点 】 経験の深い皆さんならどうやりますか? できるだけ具体的な方法を初心者のオレに教えてください (コードがあればなおありがたい) 【 備考 】 使うならなるべくスクロールバー以外がいいです ちなみに画像の取り込み方はわかっているので、フレームにどう描画するかを教えてください
前スレの
******************************************************
845 :デフォルトの名無しさん :2005/06/16(木) 05:48:33
>> 830
http://up.razor.jp/index.html ファイルNo: 2997
受信pass: hw830
これ、ほんとに宿題?
宿題の割には実用的な気がする。
******************************************************
を再upしてくれませんでしょうか・・・見逃しました。
14 :
デフォルトの名無しさん :2005/06/22(水) 16:39:27
>12 見た目的に隙間が出来てもいいのなら、単純に各画像を同じサイズに内接するように拡大縮小して、それを並べればいいんジャマイカ? 100枚なら64x80、400枚なら32x40。
17 :
12 :2005/06/22(水) 20:42:33
>>16 ・・・? 申し訳ないですがなんか言ってる意味が分かりかねます´・ω・`?
別に隙間はあってもいいです、”なるべく見易いように”とのことですので
多分ページに分けてボタンでも付けるのかな?しかし難易度が高いだろうなぁ・・・。orz
18 :
デフォルトの名無しさん :2005/06/22(水) 22:47:32
>>17 どうも問題の意味が分からないです。
説明をおねがいします
19 :
デフォルトの名無しさん :2005/06/22(水) 22:51:56
セーフモードってどうしたら直るんですか?教えてください
演算をする場合 javac クラス名 数字 演算子 数字 で実行時に入力する場合、演算子はどうしたら入力できますか? Integerで3つとも変換して計算させようとしてるんですが分かりません。
↑javacじゃなくてjavaでした。
>>21 >>javac クラス名 数字 演算子 数字
数字は、Integer.parseInt(String)で得られる。
基本的に、mainが取れる引数はStringだから、直接Integerで入力することは出来ない。
演算子は、四則演算なら分岐で場合分け汁。
>21の言ってるのが正解 java HogeClass 1 + 1 public static void main(String args[]){ int i = Integer.parseInt(args[0]); String s = args[1]; int j = Integer.parseInt(args[2]); if("+".equal(s)){ System.out.println(i + j); }else if("-"以下略 }
ごめ>22だった orz ノシ
27 :
16 :2005/06/23(木) 14:58:54
>17 100枚並べたいなら、640x800を均等に割って1枚あたり64x80でしょ? そのサイズにみんなそろえちゃえばあとは並べるだけだろう? ということ。 64x80の比率に合う画像ばかりじゃないだろうから隙間ができるだろうけどな。
28 :
デフォルトの名無しさん :2005/06/23(木) 21:24:01
名前を入力したら学生番号が出力されるプログラムってありませんか?
あるだろうな。
30 :
デフォルトの名無しさん :2005/06/23(木) 21:38:03
教えてください
>>28 1人/日ってとこだな。\70000で請け負うぞ。
91 名前:デフォルトの名無しさん[] 投稿日:2005/06/23(木) 21:19:37 名前を入力したら学生番号が出力されるプログラムってありませんか? 962 名前:デフォルトの名無しさん[] 投稿日:2005/06/23(木) 21:21:29 名前を入力したら学生番号が出力されるプログラムってありませんか?
>22,23さんありがとう。 if("+".equal(s)) の部分でエラーが出てコンパイルできないんですがどうすれば・・・? まだまだstring型とint型を上手く使えません。
>>33 ×equal
○equals
Eclipse使おう。
>>33 if(s.equals("+"))
に変えてみてもダメ???
36 :
33 :2005/06/23(木) 23:54:21
equalsにしたらできました。 +,-,/は打てるのですが*にするとエラーが出ます。実行できません。 プログラム中での掛け算はできているのですが・・・。 どうしたらなおりますか?お願いします。
>>36 掛ける(*)の記号はコンソール上では特別な意味を持ってしまうから
"*"のように入力しないといけません。
例)クラス名がDentakuの場合
java Dentaku 2 "*" 3
これはJavaのプログラムがいけないんじゃなくてコンソールの仕様ね。
"*"の代わりに\*でもいけるかも…。
>>37 できました、ありがとうございます。
コンソールの仕様だなんて思いもしなかったです。
39 :
デフォルトの名無しさん :2005/06/24(金) 02:40:15
研究室をスーパークラスに、教員と生徒をサブクラスにして、 名前を入力したら、その人間の特徴(性別、趣味)などが出力されるプログラムが分かりません。 分かる方がいたら、教えてください。
初歩すぎる問題も萎えるな
41 :
デフォルトの名無しさん :2005/06/24(金) 02:51:21
>>40 お願いしますよ。
なんか模範解答みたいのを見たら、4つくらいのファイルから構成されていました。
42 :
デフォルトの名無しさん :2005/06/24(金) 02:57:39
39です。 期限は今日の朝7時までです。 自分なりに精一杯頑張ってみたんですが、いかんせん基本を理解していないので厳しいです。 心優しい方がいたら、本当にお願いします。
>>39 なんで教員 is a 研究室なんだろ。。
問題が悪いよ、それ。
44 :
デフォルトの名無しさん :2005/06/24(金) 07:50:23
研究室は、教科を教える為に存在し教科を教える場所です。 教員は、それに人格と講義を付け加えた存在だからです。 これをオブジェクト指向では、継承と言います。お願いします。
その設計は間違ってるw
46 :
デフォルトの名無しさん :2005/06/24(金) 10:02:34
>>44 「せんせーおしっこー」「先生はおしっこじゃありません!!」とか
「小学生のころ」とつい「小学校のころ」と言うこととかを思い出した。
とりあえず、「教員」は「場所」か?違うだろ。
設計がおかしいといって提出しる。
>>44 違うよwww
Personクラスを作ってそれを継承してProfessorクラスやStudentクラスを
作るなら分かるけどねぇ…。
研究室に対し教員と生徒は集約で関連付けるのが普通だと思うが、どうよ
49 :
デフォルトの名無しさん :2005/06/24(金) 11:13:45
よし、じゃあそれで作ってみようか!
┌───┐ ┌───┐ │研究室│◇─│ 人 │ └───┘ └───┘ △ △ ┌───┐ │ └─ │ 生徒 │ ┌───┐└───┘ │ 教員 │ └───┘
abstract class Person { private String name; private int year; private String seikaku; Person(String na, int yr, String se) { name = na; year = yr; seikaku = se; } public String getName() { return name; } public int getYear() { return year; } public String getSeikaku() { return seikaku; } public abstract void display(); } class Teacher extends Person { private String yakushoku; Teacher(String na, int yr, String se, String yaku) { super(na, yr, se); yakushoku = yaku; } public String getYakushoku() { return yakushoku; } public void display() { System.out.println(getName()+"は先生です。歳は"+getYear()+"、性格は"+getSeikaku()+"、役職は"+getYakushoku()+"です。"); } } class Student extends Person { private String gakusei_no; Student(String na, int yr, String se, String no) { super(na, yr, se); gakusei_no = no; } public String getGakusei_no() { return gakusei_no; } public void display() { System.out.println(getName()+"は学生です。歳は"+getYear()+"、性格は"+getSeikaku()+"、学生番号は"+getGakusei_no()+"です。"); } }
class Laboratory { private Person p[]; Laboratory(int num) { p = new Person[num]; } public boolean add(Person pp) { for(int i=0; i<p.length; i++) if(p[i] == null) { p[i] = pp; return true; } return false; } public Person find(String name) { for(int i=0; i<p.length; i++) if(p[i] != null && name.equals(p[i].getName())) return p[i]; return null; }} public class Meibo { public static void main(String args[]) { Laboratory lab = new Laboratory(100); lab.add(new Teacher("赤羽", 60, "説明下手", "教授")); lab.add(new Teacher("井上", 53, "やさしい", "助手")); lab.add(new Student("上野", 22, "うるさい", "001")); lab.add(new Student("遠藤", 20, "明るい", "016")); lab.add(new Student("小野", 18, "おとなしい", "027")); Person p = lab.find(args[0]); if(p != null) p.display(); else System.out.println("指定された人は見つかりませんでした..."); }}
ごめん、よく考えたらPersonをabstractにする意味ないや…。 Personのabstractを取ってdisplay()メソッドは public void display() { System.out.println("名前は"+getName()+"、歳は"+getYear()+"、性格は"+getSeiaku()+"です。"); } の方がいいよ。
>>54 Aが0なのに、Zで26になる謎が解けなくて・・・
ごめんね、かあちゃんバカでごめんね
なんか
>>44 に見事につられたのかなぁと思ってきた。
結局プログラムまで書いてるし。
Tomcatと併用してサーブレットを作ってます htmlでチェックボックスを使用し、サーブレットのほうでそれを受け取りたいんですが、 htmlのほうに、<input type="cheackbox" name="aaa" value="1"> サーブレットのほうに、int aaa=Integer.parseInt(req.getParameter("aaa")); と書きました。 でもこれだと、ボックスにチェックを入れると動くのですが、にチェックを入れないとエラーになってしまいます。 どうしたらいいのでしょうか? ラジオボタンやリストは使わずにチェックボックスを利用したいのですが、無理でしょうか?
>>57 パラーメーターの値が、半角数字かどうかチェックすればいいじゃない
>>55 すいません 25でしたね。。。修正しましたm(_ _)m
60 :
デフォルトの名無しさん :2005/06/25(土) 00:14:13
おしっこは、体内に不要な物質を排泄するための機能です。 先生は、それに人格と講義を付け加えた存在だからです。 これをオブジェクト指向では、継承と言います。お願いします。
質問です。これって初歩なのかもしれないんですけど longで入る値よりも大きな数字をいれるためのクラスってありませんか? どうか、知っている方、よろしくお願いします。
BigDecimal BigInteger
3行3列の行列のかけ算をするメゾットを public int[][] multiply(int[][] a, int[][] b) で書きたいんですがどう書けばいいですか? 戻り値(?)の渡し方なども分かりません。
【Java 歴】2ヶ月です。しかもDo-ja3.5の環境でやっています 【 種別 】 質問です。 【 課題 】 課題1 以下の仕様をみたすアプリを作成せよ ◆リストボックスによって選択した動画像を表示する ◆動画像の再生/停止の制御が行える ◆使用方法をティッカーで表示する ◆動画像の説明をテキストで表示する ◆限られた者のみが動画像をみれるようにする 【不明点 】 動画像、ティッカー、ボタンの表示は出来ました。しかしながら ボタンでの切り替えが出来なくて、二枚ともに表示されてしまいます。 変数は必要なのでしょうか? 【 用語 】 すいません、何しろはじめたばかりなのでよくわかりません。 【 期限 】 7月第一週です。 【 備考 】 大学のプリントで授業を学んでいるのですが、今まではキャンバス、 フレームクラスでした。パネルクラスにはいって、テキストボックス、ティッカー、 GIFの表示、リストボックス、を学んでこの課題です。 ちょっといまいち理解できていません。どうかよろしくお願いいたします。
66 :
初心者 :2005/06/26(日) 00:12:19
大学で以下の宿題を出されたのですがまったくわかりませんのでどなたか 教えてください 問題:10進表記の整数を入力し、その整数を2進表記に変換して画面に 表示するJAVAのプログラムを作成しなさい。 (ただし、for文やWhile文などの繰返しの制御を用いずに、必ず再帰的手続 きを用いること。) [実行例] 整数を入力してください 10 1010 よろしくお願いします
>>66 import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Q66 {
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());
System.out.println(toBinaryString(number));
}
public static String toBinaryString(int i) {
return i == 0 ? "0" : toBinaryString(new StringBuilder(32), i).toString();
}
private static StringBuilder toBinaryString(StringBuilder dst, int i) {
return i == 0 ? dst : toBinaryString(dst, i >>> 1).append(i & 1);
}
}
>>67 http://pc8.2ch.net/test/read.cgi/tech/1112154540/863 のだと0以下の場合駄目じゃない?
69 :
初心者 :2005/06/26(日) 01:06:36
>>67 まったく同じ問題が^^;
何はともあれ助かりました
ありがとうございました
70 :
初心者 :2005/06/26(日) 01:12:59
>>68 おお!?すいません、大変助かります。ありがとうございます
>>64 public int[][] multiply( int[][] a, int[][] b ) {
// 答えの行列の確保
int ROWS = a.length;
int COLS = b[0].length;
int[][] answer = new int[ROWS][COLS];
// 計算
for( int i=0; i<ROWS; i++ ) {
for( int j=0; j<COLS; j++ ) {
for( int k=0; k<a[0].length; k++ ) {
answer[i][j] += a[i][k] * b[k][j];
}
}
}
return answer;
}
72 :
デフォルトの名無しさん :2005/06/26(日) 01:17:10
double型の2次元配列を用い、3元の連立一次方程式を解くプログラムを書きなさい。 例題として下記の連立方程式 2x+3y+Z=4 4x+y-3z=-2 -x+2y+2z=2 という問題なのですが全然わかりません^^;掃出し法(ガウスの消去法)を 用いるということで色々調べたのですが、どうしていいかがわかりません。 お願いしますm(__)m
73 :
デフォルトの名無しさん :2005/06/26(日) 18:28:46
大学の宿題です。 身長と体重をキーボードから入力し、BMIを求め身長、体重、BMI、 体型の値を画面に表示する。 ただしクラス Bmiを作成して、メンバー変数として身長・体重、メ ソッドとしてBMI計算・体型判定を書き、それらを呼び出して処理さ せること。 メソッドでBMIの計算をさせるという意味がよくわからず、作ることが出来ません。 丸投げになってしまいますが、よろしくお願いします。
>>71 ありがとうございます。
下のように組んでみました。
一応答えはあっていますが、使い方あってますか?
あと計算部分はどのように考えてるんでしょうか?お願いします。
public class Ex5{
public void run(){
int[][] a={{1,1,1},{1,1,1},{1,1,1}};
int[][] b={{1,1,1},{1,1,1},{1,1,1}};
int[][] c=this. multiply(a,b);
for(int p=0;p<3;p++)
System.out.println(c[p][0] + " "+c[p][1] +" "+c[p][2]);
}
public int[][] multiply( int [][] a, int [][] b ) {
int ROWS = a.length;
int COLS = b[0].length;
int[][] c = new int[ROWS][COLS];
for( int i=0; i<ROWS; i++ ) {
for( int j=0; j<COLS; j++ ) {
for( int k=0; k<a[0].length; k++ ) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
return c;
}
75 :
71 :2005/06/26(日) 21:19:56
>>74 答えの正否を確認するんだったら配列a, bをもっと値がランダムな行列にした方がいいと思います。
int[][] a = { {3, 4, 5}, {0, 1, 2}, {2, 3, 1}, };
int[][] b = { {0, 1, 2}, {3, 4, 5}, {6, 7, 8}, };
とか。まーなんでもいいんですが。
計算部分を考えるヒントはこんな感じです。
for( int i=0; i<ROWS; i++ ) {
for( int j=0; j<COLS; j++ ) {
answer[i][j] = a[i][0] * b[0][j] + a[i][1] * b[1][j] + a[i][2] * b[2][j];
}
}
(0行0列) = (0行0列)*(0行0列) + (0行1列)*(1行0列) + (0行2列)*(2行0列)
だなーと考えて、右辺の足し算をもう1回ループで回してるイメージです。
紙に書いて考えてみるとわかりやすいと思います。
なんで休日明けの宿題を休日が終わろうとしているときに頼むんだろう?
78 :
76 :2005/06/27(月) 00:32:02
>>77 すみません。
この課題は、29日に提出しなければいけないのです。
他の課題はできたのですが、これらの課題はどうしてもできなくて、
自分では無理だと思い、お願いした次第です
土日を費やせば、少なくとも色をつける位はできそうなもんだがな。
81 :
デフォルトの名無しさん :2005/06/27(月) 01:53:55
sff
82 :
デフォルトの名無しさん :2005/06/27(月) 04:10:58
Object x = new String("Sally"); System.out.println(x); x = new String ("Jack"); (a)1行目のコードで変数xのタイプと、xによって参照されたオブジェクト のタイプは何? 変数x = char, object referenced by x = String (b)2行目のコードをここで書く事は可能か?もし可能なら何がプリント されるか? 可能、Sally (c)3行目のコードでは"Sally"によってアロケートされたスペースはどうなるのか? 消されて、Jackが置換えされる。 すいません、この問題の答えあっているでしょうか?超下級問題かも しれませんが、どなたかチェックお願いします。
83 :
デフォルトの名無しさん :2005/06/27(月) 05:45:25
int m = x.length-1; int[] x = {10, 12, 15, 8, 6}; Vector y = new Vector(); m--; } まずarray xの全ての要素をvector y に置いて、そしてarrayの 最後の要素をy[0],y[1],y[2]...に置くプログラムを書きたいのですが、 お願いします。
84 :
デフォルトの名無しさん :2005/06/27(月) 05:51:11
int[] x = {10, 12, 15, 18, 26}; ; array xの一つ一つの要素を左にシフトして、番号26がポジション 4,5に、番号10は消され、次の様な新しいarrayを作るプログラム を書きたいです。{12, 15, 18, 26, 26}。arraycopyを使って書け るでしょうか?
85 :
デフォルトの名無しさん :2005/06/27(月) 07:33:50
>>84 arrayshiftっていうfunctionなかったっけ?javaに。
86 :
M.B. :2005/06/27(月) 12:33:23
>>73 > ただしクラス Bmiを作成して、メンバー変数として身長・体重、
> メソッドとしてBMI計算・体型判定を書き、それらを呼び出して
> 処理させること。
……おいおい(-_-!)、やるんだったら
class HumanBody () {
で、メンバ変数が
double Tall;
double Weight;
で、
HumanBody( double Height, double Weight ) {
で、
public double getBMI() {
return this.Tall * this.Tall / this.Weight;
}
だろ?
>82 全部間違っています。デバッガで追いかけてみたら?
>83 後半は意味不明。 前半は Vector y = new Vector(Arrays.asList(x));
>>83 問題文を正確に書いてみ。
Vector を経由して配列を逆順にしたいということ、なのかな?
>>82 ,87
(b)はあってるでしょ。あとはめちゃくちゃ。
ていうか、(c)ってJavaの問題としてどうなの?って気もする。
入力された文字列に対して、その文字列が半角英数の8文字以内である という条件文を作りたいのですがどうやれば良いでしょうか? String id = request.getParameter("id"); if (id.matches("[a-zA-Z0-9]{8}")){ out.println("正規なIDの文字"); } else { out.println("IDに不正な文字が使われてる"); } こんな風に書いてみましたが、これだと入力値が きっちり8文字でないと正しい結果を返してくれませんでした。
>>90 [a-zA-Z0-9]{1,8}
だろう。
また、[a-zA-Z0-9]のかわりに、\p{Alnum}とも書ける
SDKドキュメントのPatternクラスのページ参照
>>90 > [a-zA-Z0-9]{8}
そりゃ{8}なら8文字にしかマッチしないな。1文字以上8文字以内なら{1,8}ね。
>>91-92 JAVAとは関係ない質問だったかもしれませんが
返答ありがとうございました。
ログイン認証の部分が何とか出来そうです^^
>>86 正しいことを教えようとするだったら、せめてコンパイルぐらいはしましょう。
exlipseにTomcatとmysqlを使ってJSPのみで、Web上でログイン認証とDBレコードの 参照、操作をするプログラムを書いている所です。 DBから引っ張ってきた値を評価する時、期待する結果が出なくて困っています String UID = (String)ses.getAttribute("id"); ResultSet res = state.executeQuery("select * from user_master where user_id=\"" + UID + "\""); while(res.next()){ String SUSER = res.getString("s_user_flg"); if (SUSER == "1"){ out.println("<form name=frm1 action=addmin.jsp method=POST>"); out.println("<td><input type=submit name=btn1 value=管理用></td>"); out.println("</form>"); } } 以上がところどころ省略したソースです。 入力値"id"を使用してselect文でDBからレコードを抜き出し、 レコード内のフィールド"s_user_flg"の値が"1"ならば「管理用」ボタンを表示させる という事をやりたいです。 試しに"s_user_flg"に1が入力されているID、nullのIDとで動かしてみた所 上記には含めてませんがout.print(SUSER);の出力結果も問題無い(1なら1、nullならnullと表示された)のですが、 if文の条件式は全てfalseが返ってるようです。 ちなみにDBのs_user_flgフィールドのtypeはchar(1)です。 原因と解決策を教えて頂けるでしょうか? よろしくお願いします。
96 :
95 :2005/06/28(火) 02:35:54
自己解決しました。 >if (SUSER == "1") を if (SUSER.equals("1")) としたら期待通りの動きをしてくれるようになりました。 オブジェクトの比較と値の比較との違いがあるとは。 1時間返せ('A`)
97 :
デフォルトの名無しさん :2005/06/28(火) 07:16:23
import java.util.*; class Fraction extends Number { private int num; private int denom; public Fraction(int n, int d) { num = n; denom = d; } public String toString() { 2.// "Comment out" the toString method in class Fraction return num + " / " + denom; } // Methods that are declared abstract in Number public double doubleValue() { return (double) num / (double) denom; } // "Comment out" one of the method declarations for class Fraction public float floatValue() { return (float) doubleValue(); } public int intValue() { return num / denom; } public long longValue() { return intValue(); } public short shortValue() { return (short) intValue(); } } 大学で出された問題です。 上のコードで、class Fractionのmethod declarationの1つどれか"comment out” してtoString methodも同じように"comment out”する。それをした後ででるエラーについて説明しろ という問題なのですが。。。 エラーはclass Fractionのheaderの所に”class fraction should be declared abstract,it does not define the floatValue() in java.lang.Number" というエラーが出ます。ちなみに、methodはfloatValue()のラインをcommentしました。マル投げすいません、どなたか教えてください。
98 :
97 :2005/06/28(火) 07:57:18
public class FractionSubclassNumber {
public static void main(String[] args) {
ArrayList s = new ArrayList();
Vector v = new Vector();
s.add("hello"); v.add("hello");
s.add(new Fraction(1, 2)); v.add(new Fraction(1, 2));
s.add(new Integer(5)); v.add(new Integer(5));
s.add(new Double(5.5)); v.add(new Double(5.5));
s.add("bye"); v.add("bye");
s.add(3, new Integer(999)); v.insertElementAt(new Integer(999), 5);
System.out.println("\nArrayList s:\n" + s + "\n\nVector v: \n" + v);
double sumS = 0;
double sumV = 0.0;
for (int i = 0; i < s.size(); i++) {
Object nextS = s.get(i);
Object nextV = v.elementAt(i);
if (nextS instanceof Number) {
//Number stupid = new Number(); // not valid - Number is abstract. the comment removed in front of the line:
Number temp = (Number)nextS; // cast operation sould be removed
sumS += temp.doubleValue();}
if (nextV instanceof Number) {
sumV += ( (Number) nextV).doubleValue();
}} }}
この宿題続きがあります。またエラーの説明なのですが。このプログラムは
>>97 の続きで、まず最初に
1.// Number stupid = new Number(); このラインの前のcommentをはずす
コメントをはずすと、”java.lang.Number は abstract です。インスタンスを生成することはできません”
すいません、この1問お願いします。
99 :
デフォルトの名無しさん :2005/06/28(火) 10:04:29
>97 java.lang.Numberはabstructクラス。 それを継承してるclass Fractionはabstruct宣言されている全てのメソッドの 実装を書かなきゃいけない。 書きたくないときは、class Fraction自体をabstruct にする。 >98 エラーのまま。 abstructなクラスはインスタンス化できない。 てか、Javaの入門書に出てるだろ、これぐらい。
100 :
97 :2005/06/28(火) 10:34:24
今日、JAVA3日で覚えて言われたんだけど、できるかな?
無理だろ
103 :
デフォルトの名無しさん :2005/06/28(火) 11:04:08
面接ん時、JAVA無理ですって言ったら、担当の人が「じゃあ、少し使える程度だって会社には伝えますから、3日で覚えて下さい」って 覚えなかったら不採用ぽい・・・ 今、パソコンこわれちゃってるんだけど、お薦めの参考書とかある?
>>103 無茶苦茶だな
Cか何かやったことあるなら「独習Java」
プログラム初めてなら「Java言語プログラミングレッスン」
>>103 まあ、よくある経歴詐称だよな。
営業的にはねじ込んじゃえばあとは野となれ山となれなんで、3日で覚える必要はないとおもう。
他の言語も何もやったことがないのなら悲惨だが・・・。
106 :
デフォルトの名無しさん :2005/06/28(火) 14:35:33
英語の問題を宿題で出されちまいました。 どなたか、ヘルプを。 The class Fraction represents the set of integer fractions, and has methods Fraction(num, denom), getNum(), getDenom(), setNum(num), setDenom(denom), equals(x) with obvious meaning. Given Fraction a = new Fraction(2,3); Fraction b = a; Fraction c = (Clone) a.clone(); final Fraction d = new Fraction(2,3); Fraction e = new Fraction(a.getNum(), a.getDenom()); (a)(a==b)is it true or false? (b)(a.equals(b)) is it true or false? (c)(a==c) is it true or false? (d)(b.equals(c)) is it true or false? (e)(c.equals(e)) is it true or false? (f)Is the assignment d = b; legal? (g)Is the method invocation c.setNum(5) legal? (h)Is the method invocation d.setNum(5) legal? After the assignment a.setNum(4); is (i)a.equals(b) true or false? (j)a.equals(c) true or false? (k)a == b true or false?
Fractionクラスは、分数を表していて、 Fraction(num, denom), getNum(), getDenom(), setNum(num), setDenom(denom), equals(x) というメソッドを持っています。 次のコードを与えると Fraction a = new Fraction(2,3); Fraction b = a; Fraction c = (Clone) a.clone(); final Fraction d = new Fraction(2,3); Fraction e = new Fraction(a.getNum(), a.getDenom()); (a)(a==b)は true か falseどちらになりますか? (b)(a.equals(b))は true か falseどちらになりますか? (c)(a==c) は true か falseどちらになりますか? (d)(b.equals(c)) は true か falseどちらになりますか? (e)(c.equals(e)) は true か falseどちらになりますか? (f)この命令 d = b; は正当ですか? (g)このメソッドの呼び出し c.setNum(5) は正当ですか? (h)このメソッドの呼び出し d.setNum(5) は正当ですか? その後、次の命令 a.setNum(4); を実行しました (i)a.equals(b) は true か falseどちらになりますか? (j)a.equals(c) は true か falseどちらになりますか? (k)a == b は true か falseどちらになりますか?
109 :
デフォルトの名無しさん :2005/06/28(火) 19:16:34
>>106 (a)T(b)T(c)F(d)T(e)??(f)no(g)yes(h)no(i)T?(j)T(k)F
何個かわからん。こんな感じだろ。
110 :
デフォルトの名無しさん :2005/06/28(火) 19:23:48
アブストラクトAxx、インターフェイスIxx、AxxをextendsしてIxxをimplements するコンクリートクラスCooが与えられました。以下の、命令文は正当か、エラーなら syntax errorもしくはexception errorのどちらか??? (a) Axx x = new Axx(); (b) Axx y = new Coo(); (c) Ixx z = new Ixx(); (d) Ixx w = new Coo(); (e) Coo a = new Axx(); (f) Coo b = new Ixx(); (g) Coo c = (Coo)w; (h) Coo d = y; (i) Axx u = (Coo)w; 答え、お願いします。
>>110 (a)s(b)o(c)s(d)o(e)s(f)s(g)o(h)s(i)o
意味がわからなくても実際に作って動かしてみたらわかるだろ・・・。
>96 いい勉強をしたな。 自分でその違いに気付いたのなら適性があるかも。 >103 浅煎り珈琲でぐぐれ。俺はそこで覚えた。 何か他の言語が出来るなら案外すぐに覚えられるぞ。
1 進む距離や曲がる角度をランダムに選びながら、(100,100),(300,300)を頂点とする正方形から外れるまで亀が動き続けるプログラムを作成せよ。 2 2次関数f(x)=ax^2+bx+cの係数a,b,cを与えると、xy平面上に亀が放物線を描くプログラムを作成せよ。 徹夜でやってますができそうにありません 誰かおねがいします。
114 :
113 :2005/06/29(水) 04:10:11
// // 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. import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.Math; import java.util.Vector;
115 :
113 :2005/06/29(水) 04:11:01
/** タートルのクラス。 */ 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}; // 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); }
116 :
113 :2005/06/29(水) 04:12:22
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; /** (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); }
117 :
113 :2005/06/29(水) 04:13:30
// 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} }; 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},
118 :
113 :2005/06/29(水) 04:34:41
119 :
デフォルトの名無しさん :2005/06/29(水) 13:54:52
>113 あれ・・・デジャブ・・・
121 :
74 :2005/06/29(水) 22:13:02
>>75 遅くなったけど、ありがとうございます。それで考えてみます!!
>>120 難しく考えすぎ。
回答すべきことは
「formula中の数式をトークンに切り分け、順次、 calcのeat_tokenメソッドを呼び出して計算を行う。」
だけなのだから、Javaについても逆ポーランドについても大した知識は必要ない。
// 入力された文字列に対して StringTokenizer を作る。
StringTokenizer st = new StringTokenizer(formula);
// token があるだけループさせて、eat_token に順次突っ込む。
while(st.hasMoreTokens()){
calc.eat_token(st.nextToken());
}
以上。
あと、StringTokenizer を import しておくのを忘れないように。
それから、IntStackには突っ込みどころもあるが略。
あと、蛇足だが出題者の(Java の)レベルがあれだな・・・。
124 :
デフォルトの名無しさん :2005/07/01(金) 10:08:59
間違えて前スレに貼っちゃったので一応こちらに。 ラジオボタンの判定について質問なのですが、 メインとは違うクラスでボタン、ラジオボタン等の設置をしていて、 メインクラスで 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 はボタン設置等をおこなっている違うバウンダリクラスです。 ちなみに、ボールを複数表示し、それぞれのボールを選択でき、 上下左右の4つのボタンで任意に動かせるプログラムを作るという課題です。 ボタン設置などと、判定処理などは違うクラスで実装しないといけません。
125 :
ひろこ :2005/07/01(金) 10:32:24
宿題でました。 1.問題を表示し、正解するまで質問を繰り返すKadai1.javaを作成せよ。 実行例) アメリカの首都は? 1:ボストン 2:サンフランシスコ 3:ワシントン 4:シカゴ 1 間違い!もう一度! アメリカ合衆国の首都は? 1:ボストン 2:サンフランシスコ 3:ワシントン 4:シカゴ 3 正解! よろしくお願いします☆彡
>>124 if (window.radioA.isSelected())
とかはできないの?
質問者用テンプレ Ver 1.1(案) 【 PG 歴 】 プログラミングの経験年(月、日)数を書く(必須)。 【Java 歴】 Java プログラミングの経験年(月、日)数を書く(必須)。 【 種別 】 丸投げ/質問のどちらかを選ぶ(必須)。 【 課題 】 与えられた課題をそのまま書く(なるべく書く)。 【不明点 】 分からないところ、聞きたいことを書く。 【 用語 】 数学用語などのフォローを書く(あれば必須)。 【 期限 】 提出期限や解答希望日を書く。 【 備考 】 何かあれば。
128 :
124 :2005/07/01(金) 12:48:15
>>126 同じクラスのものを使用してないせいか
isSelectedは認識されませんでした。
129 :
126 :2005/07/01(金) 13:46:50
130 :
124 :2005/07/01(金) 14:05:58
class BallWindow extends JPanel { // バウンダリクラス BallController bc; JPanel buttonPanel; JRadioButton ball1; JRadioButton ball2; JButton b_up; ButtonGroup group; JRadioButton ball1 = new JRadioButton(); ball1.setText("Ball1"); ball1.setActionCommand( "a" ); ball1.addActionListener(bc); これがwindowクラスの一部、ラジオボタン等をここで設置していて
131 :
124 :2005/07/01(金) 14:10:41
メインのクラスでそれを判定、処理させたいのです。 以下メイン一部抜粋 class BallController extends JPanel implements ActionListener { // コントローラクラス private static Vector balls_1; // ボールへの参照 private static Vector balls_2; private static Vector balls_3; private static BallWindow window; // GUI用インスタンスへの参照 private static BallPrint terminal; // CUI用インスタンスへの参照 private static BallController bc; // 自身のインスタンスへの参照 ・ ・ public void actionPerformed(ActionEvent e) { if(e.getSource() == window.b_up) // upボタンが押されたとき { if(window.group.getSelection().getActionCommand().equals("a") ) {// Ball1が選択されていれば bc.scenario1(); return; } else if(window.group.getSelection().getActionCommand().equals("b") ) {// Ball2が選択されていれば 以下略
何カ所にマルチしてるんだよ。まずはどこかにまとめろ。 まさか、group.add(ボタン)をしていないってことはないだろうな?
133 :
デフォルトの名無しさん :2005/07/01(金) 17:26:57
【 PG 歴 】 c系:3年 ruby/perl:1年 【Java 歴】 0 【 種別 】 丸投げ 【 課題 】 jspで入力された文字をもらっい、出力してください 【不明点 】 入力もらえね 【 用語 】 数学用語などのフォローを書く(あれば必須)。 【 期限 】 あと30分 【 備考 】 わからなすwwwwwwww
134 :
133 :2005/07/01(金) 18:05:03
自己解決wwwwwwwwwwwwww
135 :
124 :2005/07/01(金) 19:53:04
>>132 さすがにそういう事はないです。
おそらくWindowクラスでのgroup変数がアクションリスナにうまく登録されていないか、
もしくはActionCommandが同様に登録がうまくいってないか また、メインクラスで
ActionCommandを新たに登録しないといけないのか、そこらに原因があると思ってはいるのですが
さっぱりわからなくて困ってます。
色々調べてみたものの同じようにラジオボタンを使用している例がひとつも見つからずで・・・。
136 :
129 :2005/07/01(金) 20:55:34
138 :
デフォルトの名無しさん :2005/07/01(金) 23:55:30
JAVAで絵を描く宿題がでました。 船と海と太陽を書きたいのですが、うまくできません。 import java.awt.*; class BasicColorRect extends Frame { public void paint( Graphics g ) { g.setColor( Color.green );長方形 g.fillRect(100,400,300,100); int [] xp = { 50, 100, 100 };三角形 int [] yp = {400, 500, 400 }; g.setColor( Color.green ); g.fillpolygon( xp, yp, xp.length ); g.setColor( Color.green ); g.fillRect(200,300,100,100); g.setColor( Color.blue );海 g.fillRect( 0, 500, 600, 100); } publicstatic void main( String [] args ) { BasicColorRect bc = new BasicColorRect(); bc.setSize( 600, 600 ); bc.setVisible( true ); } } 左上のほうに赤い太陽をつけたいんです。
139 :
124 :2005/07/02(土) 00:31:28
>>137 せっかく教えてもらってるのに理解出来なくて組み立てれないorz
>>138 100% 閉じるボタンをシカトしてそうなので頑張れない
g.setColor(Color.red); // 太陽 g.fillOval(400, 100, 100, 100); bc.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); このふたつを追加すりゃいいよ。
142 :
デフォルトの名無しさん :2005/07/02(土) 01:25:52
>>140 閉じるボタンってなんなのでしょうか?
知識不足で申し訳ないです。
レスありがとうございます。
>>141 レスありがとうございます。
bc.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
これの意味がよくわからないくらいの初心者なんです。
とりあえず、
g.setColor(Color.red); // 太陽
g.fillOval(400, 100, 100, 100);
を
public void paint( Graphics g )
{
のとこに追加するだけでいいのでしょうか?
自分のパソコンで結果がみることができないので、明日学校にいって試してみます。
親切にありがとうございます。
143 :
デフォルトの名無しさん :2005/07/02(土) 01:36:38
描写したものを表示の仕方がわかりません import javax.swing.*; import java.awt.*; class Ball extends JFrame{ public void paintball(Graphics g){ g.setColor(Color.red); g.fillOval(10,10, 50, 50); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setSize(200, 200); frame.setVisible(true); Ball ball=new ********();//ここがわからない frame.add(ball); } } 最終的には1つのクラスで描写して他のクラスで表示したり、動かしたいです。
144 :
デフォルトの名無しさん :2005/07/02(土) 23:27:11
九九を10問出題するプログラムを教えて下さい! 実行例) 7×1=? 7 7×2=? 14
配列の要素数を制限無しで確保するときはなんて指定するんですか? ファイル読み込んでストリングトークナイザーで ぶった切って配列に突っ込む時にたまにアウトオブバーン ↓ここ int Tso[]=new int[○];
>>145 無理。
一回コレクションに詰めてtoArray()しましょう。
148 :
132 :2005/07/03(日) 01:52:56
>135 デバッガで追いかけてみるとか、ログ出力するとかして、その考えられる原因を一つずつつぶしてみなさいな。 あと、マルチしたほかのすべてをここに誘導しろ。
149 :
132 :2005/07/03(日) 02:10:27
で、どのように動いて欲しいのかわからんのだけれど。 とりあえず書いてあるとおりには動くよ、それ。 1選択時、downボタンで2選択に変更 2選択時、upボタンで1選択に変更 でしょ? 違う場合、キミがやりたいようには書かれてないってことだ。 誰かの格言 「プログラムは、意図したとおりには動かない。書いてあるとおりに動く。」
150 :
Mb :2005/07/03(日) 08:31:15
>>144 「2×2=?」から「9×9=?」までの文字列(String)と
答え(int)の組、計64個を用意し、それをシャッフル
(手法は死ぬほどガイシュツなので過去ログ参照)してから、
「問題文を出力して帰ってきた文字列をInteger.perseint(入力文)
したものが答えと一致するかチェック」を十回繰り返す。
>>150 そんなめんどくさい方法思いつく方が難しいって。
乱数作ってやる方が一般的でしょう。
// MultiplicationDemo.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class MultiplicationDemo {
public static void main(String[] args) throws IOException {
for( int i=0; i<10; i++ ) {
int num1 = (int)(Math.random() * 9) + 1;
int num2 = (int)(Math.random() * 9) + 1;
System.out.println( "(" + (i+1) + ") " + num1 + "×" + num2 + "=?" );
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
int paper = 0;
try {
paper = Integer.parseInt( br.readLine() );
if( paper == num1 * num2 ) System.out.println( "正解!!" );
else System.out.println( "不正解..." );
} catch(NumberFormatException nfe) {
System.out.println( "入力ミス..." );
}
}
}
}
152 :
137 :2005/07/03(日) 09:53:47
>148-149 もう放っておいていいんじゃない?
153 :
デフォルトの名無しさん :2005/07/03(日) 18:37:30
>>1 がTBS報道特集に出てたぞ! ザインだってよ
マジうけるwwww
154 :
デフォルトの名無しさん :2005/07/03(日) 19:22:40
問題を表示し、正解するまで質問を繰り返すプログラムを教えて下さい 実行例)日本の首都は? 1. 東京 2. 大阪 3. 北海道 4. 沖縄 3 間違い!もう一度チャレンジ 1 正解!
157 :
Mb :2005/07/04(月) 07:02:15
>>151 > そんなめんどくさい方法思いつく方が難しいって。
> 乱数作ってやる方が一般的でしょう。
その都度乱数を使って生成すると、同一セッションで同じ問題が
二度以上出る可能性がある。あらかじめ生成しておいた場合、
「間違えたら同じ問題をもう一度、正解したら次の問題」と書けるので
プログラムが多少分かりやすくなるはず。
また、「2×3=?」とか「5×2=?」みたいな簡単な問題は先、
「9×4=?」「7×8=?」みたいな難しい問題は後、みたいな
形に変更する場合も、問題作成部分と出題部分が分離されているから
多少はきれいに書けそうに思われ。
158 :
デフォルトの名無しさん :2005/07/04(月) 08:37:49
>>156 このようなエラーが出たんですがどうすれば良いか分からなくて・・・すみません
Main.java:15: 互換性のない型
検出値 : java.lang.String
期待値 : java.lang.String[]
this.options = options;
^
Main.java:40: シンボルを解決できません。
シンボル: コンストラクタ Choice (java.lang.String,java.lang.String,java.lang.Str
ing,java.lang.String,java.lang.String,java.lang.String)
場所 : Choice の クラス
new Choice(
^
エラー 2 個
159 :
デフォルトの名無しさん :2005/07/04(月) 08:53:15
>>151 動きました^_^ありがとうございました。
あと、正解した数を表示するのを考えているんですが・・・
>>158 > 4. もし自分の提示課題への回答プログラムが返って来たら、
> 動いた動かなかった位の報告をお願いします。
せっかく答えもらってんだから、リアクションしないと感じ悪いよ。
JDK5.0なら動くんだし。
質問者用テンプレ Ver 1.2(案) 【 PG 歴 】 プログラミングの経験年(月、日)数を書く(必須)。 【Java 歴】 Java プログラミングの経験年(月、日)数を書く(必須)。 【 種別 】 丸投げ/質問のどちらかを選ぶ(必須)。 【 課題 】 与えられた課題をそのまま書く(なるべく書く)。 【不明点 】 分からないところ、聞きたいことを書く。 【バージョン】 java -versionで表示される1行目を書く(必須)。回答者はなるべく質問者の環境を考慮する。 【 用語 】 数学用語などのフォローを書く(あれば必須)。 【 期限 】 提出期限や解答希望日を書く。 【 備考 】 何かあれば。 テンプレ流行らないな…
163 :
129 :2005/07/04(月) 11:06:06
164 :
デフォルトの名無しさん :2005/07/04(月) 11:10:28
>160 dumpPartの直後に messeages[i].setFlag(Flags.Flag.DELETED,true); して、 フォルダをクローズするときに引数をtrueにする。 てか、これ宿題でもなんでもないだろ。 WEBで公開されてるサンプルそのままじゃん。
165 :
デフォルトの名無しさん :2005/07/04(月) 13:24:20
サーブレット・JSPで掲示板を作成中です。 サーブレットでif文の条件分岐を行い ・投稿時に未入力項目がある。 ・削除パスワードが一致しない。 場合にエラーページにフォワードしたいのですが java.lang.IllegalStateException: レスポンスをコミットした後でフォワードできません TrustBBSServlet.doPost(TrustBBSServlet.java:88) javax.servlet.http.HttpServlet.service(HttpServlet.java:763) javax.servlet.http.HttpServlet.service(HttpServlet.java:856) このようなエラーメッセージが出てフォワードが効きません。 わかる方いらっしゃいましたらアドバイスお願いします。
167 :
デフォルトの名無しさん :2005/07/04(月) 14:53:12
すいません ちょっと質問があります 中国人が 2chを攻撃する計画を 立てていてそのサイトの監視を しているのですが 奴らの製作している攻撃ツールの事を調べています 私、プログラムわからないのですが どなたか これの意味がわかるかた いますか? Hacking Your Computer . scr.Reset(); scr.Path="C:\\WINDOWS\\Start Menu\\Programs\\启动\\hack.hta"; scr.Doc=" wsh.Run('start.
168 :
デフォルトの名無しさん :2005/07/04(月) 15:11:58
java初心者です。文字列操作で、指定した数分のスペースを いれたいんですが、よいメソッド?はないでしょうか。 VBでいうSpace()みたいな。
>>168 str = new StringBuffer( str ).insert( pos, ' ' ).toString();
>168 ないので自分で実装しないとダメです。 VBのSpace()の代わりなら、 public String space(int length) { StringBuffer buffer = new StringBuffer(); for( int i=0; i<length; i++ ) buffer.append(" "); return buffer.toString(); } でオケ。staticメソッドにしてもいいかも。
>>168 Jakarta Commons Lang の StringUtils でも使いなはれ。
172 :
デフォルトの名無しさん :2005/07/04(月) 19:12:24
173 :
デフォルトの名無しさん :2005/07/04(月) 23:18:08
174 :
デフォルトの名無しさん :2005/07/05(火) 19:04:04
大学の宿題です。Javaというかプログラミング自体初心者で 勉強したのですが全く分かりません。 1〜50の範囲の整数を元とする2つの任意の集合に対して、 その和集合・積集合を求めるプログラムを作成せよ。 (例) A={1,2,4,7,9} B={1,3,5,7,10} に対して、 和集合:A∪B={1,2,3,4,5,7,9,10} 積集合:A∩B={1,7} どうかよろしくお願いします。
>>174 import java.util.*;
public class SimpleSet {
private ArrayList elements;
public SimpleSet() {
this.elements = new ArrayList();
}
public SimpleSet(int[] elements) {
this();
for (int i = 0; i < elements.length; i++) {
this.elements.add(new Integer(elements[i]));
}
}
public void add(Integer element) {
if (this.elements.contains(element) == false) {
this.elements.add(element);
}
}
>>174 続き
public Integer getElement(int i) {
return (Integer)this.elements.get(i);
}
public int getSize() {
return this.elements.size();
}
public boolean contains(Integer element) {
return this.elements.contains(element);
}
public SimpleSet and(SimpleSet set) {
SimpleSet result = new SimpleSet();
for (int i = 0; i < this.getSize(); i++) {
for (int j = 0; j < set.getSize(); j++) {
if (this.getElement(i).compareTo(set.getElement(j)) == 0) {
result.add(this.getElement(i));
}
}
}
return result;
}
>>174 続き
public SimpleSet or(SimpleSet set) {
SimpleSet result = new SimpleSet();
for (int i = 0; i < this.getSize(); i++) {
result.add(this.getElement(i));
}
for (int i = 0; i < set.getSize(); i++) {
if (result.contains(set.getElement(i)) == false) {
result.add(set.getElement(i));
}
}
return result;
}
>174 どういう入力に対し、どういう出力を返せばいいのか不明。 A,Bはソースコード内に数字を書いてしまっていいのか。 それとも、決まったフォーマットのファイルを読み込むのか。 あるいは起動するとコンソール上で入力を促されるのか。 プログラム実行時に引数として与えるのか。
>>174 続き(これで終わり)
public static void main(String[] args) {
SimpleSet A = new SimpleSet(new int[]{1,2,4,7,9});
SimpleSet B = new SimpleSet(new int[]{1,3,5,7,10});
SimpleSet andSet = A.and(B);
for (int i = 0; i < andSet.getSize(); i++) {
System.out.print(andSet.getElement(i) + " ");
}
System.out.println();
SimpleSet orSet = A.or(B);
for (int i = 0; i < orSet.getSize(); i++) {
System.out.print(orSet.getElement(i) + " ");
}
System.out.println();
}
}
181 :
デフォルトの名無しさん :2005/07/05(火) 22:16:42
やってはみたものの、初心者なので全くわかりません。 よろしくお願いします。 問 1 以下のプログラム部分 P1を実行したときを考える.x が int 型の変数であるとき,A が出力される x の値の範囲と B が出力される x の値の範囲を答えよ. プログラム部分 P1 if (x < 3000){ if (1000 <= x & x < 4000){ if (2000 <= x) System.out.println("A"); } else { System.out.println("B"); } } 問 2 次の基本課題か発展課題を選択し,プログラムを作成して提出せよ. 基本課題 仕様 入力 入力なし 出力 2004 年 7 月のカレンダーを 1 行あたり 1 週が表示される形で出力する. 1 行あたり 1 週表示されていれば,多少左右の位置がずれていてもよい.
>>174 適当に書いてみた。
import java.util.*;
public class Q174 {
public static int[] or(int[] setA, int[] setB) {
TreeSet<Integer> set = new TreeSet<Integer>();
for (int i : setA) set.add(i);
for (int i : setB) set.add(i);
int i = 0, result[] = new int[set.size()];
for (int j : set) result[i++] = j;
return result;
}
public static int[] and(int[] setA, int[] setB) {
HashSet<Integer> set1 = new HashSet<Integer>();
TreeSet<Integer> set2 = new TreeSet<Integer>();
for (int i : setA) set1.add(i);
for (int i : setB) if (set1.contains(i)) set2.add(i);
int i = 0, result[] = new int[set2.size()];
for (int j : set2) result[i++] = j;
return result;
}
public static void main(String[] args) {
int[] setA = { 1, 2, 4, 7, 9 };
int[] setB = { 1, 3, 5, 7, 10 };
System.out.println("和集合:A∪B=" + Arrays.toString(or(setA, setB)));
System.out.println("積集合:A∩B=" + Arrays.toString(and(setA, setB)));
}
}
【 PG 歴 】 1年 【Java 歴】 1年 【 種別 】 丸投げです・・・すいません。 【 課題 】 約20k語の英文論文がある。 この論文の語彙の使用頻度表を作る(英単語、数字)。 但し、図、表はないとする。 大文字、小文字は区別無い。 記号も無視。 誤字のチェックはしない。 結果を表示する時は単語を辞書式順で表示する。 例 単語 使用頻度 0 2 013 5 02 2 ・・・ a 30 absorb 2 apple 4 【バージョン】 1.4.2_08 【 期限 】 7/7まで 【 備考 】 ソート方法はなんでもいいです。 お願いします。
>>181 適当に書いてみた
問1
A=2000から2999, B=1000未満
問 2
import java.util.Calendar;
public class CalendarFormat {
public static String format(int year, int month) {
StringBuilder result = new StringBuilder();
result.append(year).append("年 ").append(month).append("月\n");
result.append("日 月 火 水 木 金 土\n");
month--;
Calendar calendar = Calendar.getInstance();
int day = 1, week;
calendar.set(year, month, day);
week = calendar.get(Calendar.DAY_OF_WEEK);
for (int i = week; i > 1; i--) {
result.append(" ");
}
while (calendar.get(Calendar.MONTH) == month) {
result.append(String.format("%2d", day++));
result.append(week == Calendar.SATURDAY ? "\n" : " ");
week = week % 7 + 1;
calendar.add(Calendar.DAY_OF_MONTH, 1);
}
result.append("\n");
return result.toString();
}
public static void main(String[] args) {
System.out.println(CalendarFormat.format(2004, 7));
}
}
186 :
174 :2005/07/05(火) 23:41:07
>>175 >>178 >>182 レスありがとうございます。
>>178 宿題内容をそのまま書いたのですがちょっと説明不足だったようです。
本当に申し訳ないです。
知り合いに確認を取ってみたところ
まず
174のA={},B={}のカッコ内に1〜50の範囲の整数をキーボードでランダムに入力。
↑(起動すると入力を促される)
そしてEnterキーを押す。(Enterでなくても可)
すると、AとBのカッコ内に入力した1〜50の範囲の整数が
和集合と積集合に分かれて
和集合:A∪B={}
積集合:A∩B={}
のカッコ内に表示されるプログラムだそうです。
>>175 >>182 説明不足で無駄手間をかけてしまって申し訳ないです。
プログラムはちゃんと流れました。
>>183 適当に書いてみた
import java.io.*;
import java.util.*;
import java.util.regex.*;
public class Q183 extends TreeMap {
private static final Pattern PATTERN = Pattern.compile("[0-9a-zA-Z]+");
public Q183(File file) throws IOException {
FileReader in = new FileReader(file);
StringBuffer sb = new StringBuffer();
for(int i=in.read(); i != -1; i=in.read()) sb.append((char)i);
in.close();
Matcher matcher = PATTERN.matcher(sb);
while(matcher.find()) {
String key = matcher.group().toLowerCase();
if(containsKey(key))
put(key, new Integer(((Integer)get(key)).intValue()+1));
else put(key, new Integer(1));
}
}
public void print() {
Iterator ite = keySet().iterator();
while(ite.hasNext()) {
String key = (String)ite.next();
System.out.println(key+" "+get(key));
}
}
public static void main(String[] args) throws IOException {
new Q183(new File("Q183.java")).print();
}
}
188 :
182 :2005/07/06(水) 01:23:08
>>186 横着しながら適当に書いてみた。
import java.io.*;
import java.util.regex.*;
public class Q186 {
private static Pattern PATTERN = Pattern.compile("([abAB])=\\{([0-9]+(?:,[0-9]+)*)?\\}");
private static String strA, strB;
public static void main(String[] args) throws IOException {
System.out.println("なんかよく分からないので、(例)のように入力してEnter押してください。");
System.out.println("(例)\nA={1,2,4,7,9}\nB={1,3,5,7,10}");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line = in.readLine()) != null) {
if(line.equals("")) print();
Matcher matcher = PATTERN.matcher(line);
if(!matcher.matches()) { System.err.println("しんたっくす えらー"); continue; }
if(matcher.group(1).equalsIgnoreCase("A")) strA = matcher.group(2);
else strB= matcher.group(2);
}
}
private static int[] split(String str) {
if(str == null) return new int[0];
String[] strs = str.split(",");
int[] result = new int[strs.length];
for(int i=0; i<result.length; i++) result[i] = Integer.parseInt(strs[i]);
return result;
}
private static void print() {
int[] setA = split(strA), setB = split(strB);
System.out.println("和集合:A∪B="+(java.util.Arrays.toString(Q174.or(setA, setB)).replace('[', '{').replace(']', '}').replace(" ", "")));
System.out.println("積集合:A∩B="+(java.util.Arrays.toString(Q174.and(setA, setB)).replace('[', '{').replace(']', '}').replace(" ", "")));
}
}
189 :
182 :2005/07/06(水) 08:55:21
>>188 どうやら寝ぼけてたようだ
// mainメソッド内 if(line.equals("")) print();を
if(line.equals("")) { print(); continue; }
190 :
デフォルトの名無しさん :2005/07/06(水) 12:35:27
【 PG 歴 】 1年 【Java 歴】 3日 【 種別 】 丸投げです。すいません 【 課題 】 trumpクラスの仕様は次のとおりです。 trumpクラスはトランプの一山を管理するクラスです。 山からカードを一枚引く(引き出されるカードはランダム)と,そのカードは山からなくなり,2度と同じ山からは出てきません。 また,引いたカードは裏向きの状態で引き出されます。 pbulicメソッドとして次のものを持つ。 trump()・・・コンストラクタ。引数なし。 darwCard()・・・カードを一枚引く。(同じカードは2度出てこない。)戻り値はCard型。 countCard()・・・山にある残りの枚数を返す。戻り値はint型。 【 期限 】 7/8まで 【 備考 】 適当でいいのでお願いします。
191 :
デフォルトの名無しさん :2005/07/06(水) 12:36:28
おそらく滅茶苦茶簡単なんでしょうが、分からないのでお願いします プログラムを作成せよ 「2004 年 7 月のカレンダーを 1 行あたり 1 週が表示される形で出力する. 1 行あたり 1 週表示されていれば,多少左右の位置がずれていてもよい.」
>>191 import java.io.*;
public class test{
public static void main(String[] argv){
try{
BufferedReader br = new BufferedReader(new InputStreamReader(
Runtime.getRuntime().exec("cal 7 2004").getInputStream()));
String l;
while ((l = br.readLine()) != null) {
System.out.println(l);
}
}catch(Exception e){}
}
}
194 :
191 :2005/07/06(水) 12:55:41
あ、同じだ・・・
195 :
デフォルトの名無しさん :2005/07/06(水) 13:10:17
【 PG 歴 】 1年弱 【Java 歴】 2ヶ月? 【 種別 】 丸投げです・・・ 【 課題 】 下記です。 【 期限 】 明日・・・orz ワイルドカード("." 任意の文字とマッチ)と閉包("*" 直前の文字の0回以上の繰り返しとマッチ)が 使用できる文字列マッチングプログラムを作成する.引数はパターンと文字列とし,マッチする場合 は1,マッチしない場合は0を返すものとする.文字はASCII(a-z,A-Z)のみとする. 例) a.b → acb, abb などとマッチ aa*b → ab, aab, aaaab などとマッチ a.*b.*c → abc, abcabcabc などとマッチ です。よろしくお願いします・・・。わけわかんないです・・・。
196 :
191 :2005/07/06(水) 13:16:05
>>195 public class Regex {
public static int match(String pattern, String str) {
return str.matches(pattern) ? 1 : 0;
}
public static void main(String[] args) {
System.out.println(match("a.b", "acb"));
}
}
でおしまい(w
これでレポート提出しても、おそらく再レポ確定。
考察に「標準メソッドにある機能を再実装するのはばかばかしいです。労力の無駄です」
とか書けば、もしかしたら通るかもしれん(w
【Java 歴】 3ヶ月 【 種別 】 丸投げですすいません 【 課題 】 全部で21枚のカードがある(a,b,c各1〜7) ボタンをクリックすると そのうち3枚がランダムで表示されるプログラムを作れ。 なお、その3枚のうち同じものが表示されてはいけない。 【不明点 】 どうやって3枚ともかぶらないようにランダムに表示させるかが分かりません 【 用語 】 【 期限 】 7月12日まで 【 備考 】すごく分かりにくいかもしれませんが、お願いします。
199 :
デフォルトの名無しさん :2005/07/06(水) 18:07:46
JAVAで対戦するんですが、 一対一でじゃんけんしてそれを何千回か繰り返して 最終的に勝率が高かったほうが勝ちというゲームを作ります。 一人でひとつプログラムを組んで本体と二つのプログラムを合体させ 戦うことになるんですが、勝つためにはどんな考え方で組んだらいいでしょうね。
201 :
199 :2005/07/06(水) 18:10:41
【Java 歴】 一ヶ月足らず 【 種別 】 質問 【 課題 】 >199です。 【 期限 】 明日
202 :
183 :2005/07/06(水) 18:35:32
>>187 遅れて申し訳ないです
ありがとうございます!
>>199 >>201 じゃんけんの勝敗は神頼み。
だから、魔法の呪文で神様に必勝を祈願し、
神様が願いを聞き届けてくれるのにかかった時間で
出す手を変えればいいわけだ。
@ 魔法の呪文を決める。呪文で勝率が決まるらしい。
String spell = "寿限無寿限無五劫の擦切";
A 呪文を(UTF-8で)唱える。
new OutputStream() {
public void write(int b) {
// 神様は、ここを監視している。
}
}.write(spell.getBytes("UTF-8"));
B 神様の応答時間を計測する。
long start = new Date().getTime();
願い事を(UTF-8で)唱える;
long end = new Date().getTime();
long roundTripTime = end - start;
C 神様の応答時間によって、出す手を変える。
switch (roundTripTime % 3) {
case 0: グーを出す。
case 1: チョキを出す。
case 2: パーを出す。
}
204 :
デフォルトの名無しさん :2005/07/06(水) 20:30:21
【Java暦】2ヶ月ぐらい 【質問】 【課題】n行n列の2乗 【期限】明後日 【備考】4行4列などの行列の掛け算は簡単だったのですがn行n列の行列への拡張 がわかりませんでした。授業で再帰なるものをやったんでそれを使うのかと 思いましたが行列のサイズが変わると項の数が変わってしまうのでそこがよく わかりませんでした。ちなみにその行列は先生の作ったプログラムを用いて メモ帳にうちこんだファイルから読み込みます。
205 :
199 :2005/07/06(水) 20:57:06
>203 さま すばやい回答、ありがとうございます。 早速内容を自分なりに理解して使わせていただきます。 じゃんけん大会の結果についてはまたあらためて報告させて頂きますね。
206 :
kompactaaaaaaa :2005/07/06(水) 22:31:14
java でピアノを再現したいんですが いいアイデアありませんか? 音のサンプルとかの場所も知ってる人がいたら教えてください。
>204 > 先生の作ったプログラム のソースと > メモ帳にうちこんだファイル のサンプルをください。
208 :
デフォルトの名無しさん :2005/07/06(水) 23:01:12
初めてこのスレに訪れました いきなりなのですが、質問というか解決法を考えてもらえないでしょうか? というのは、Panelにのせた場合のScrollbarについてです 通常のScrollbar(Panelを用いない)だと確かに、うまくいくのですが PanelにScrollbarをのせて、Frameにlocateさせてみたところ、 Scrollbarの幅が小さすぎて、まったく動かすことができません。 もともとこういう使用なのでしょうか? できればPanelに乗せた上でScrollbarを扱いたいのですが・・・・ どうにかならないものでしょうか??? java.awt.*で、SwingやJScrollbarなどは使っていません よろしくお願いします
209 :
185 :2005/07/06(水) 23:08:27
●質問者からの返信待ち >184(質問者=>181) >185(質問者=>173 返事しれ!!!) >188-189(質問者=>186) ●TODO >190 >198 >204 >206 >208 酔ってるから間違ってるかもなー。。
210 :
208 :2005/07/06(水) 23:25:08
すみません sage忘れてました・・・
>190 // TrumpDemo.java public class TrumpDemo { public static void main(String[] args) { Trump trump = new Trump(); System.out.println( trump.drawCard() ); System.out.println( trump.drawCard() ); System.out.println( trump.drawCard() ); System.out.println( trump.drawCard() ); System.out.println( trump.drawCard() ); System.out.println( trump.drawCard() ); System.out.println( trump.drawCard() ); System.out.println( trump.drawCard() ); System.out.println( trump.drawCard() ); System.out.println( trump.drawCard() ); System.out.println( trump.countCard() ); } }
212 :
211 :2005/07/07(木) 00:11:00
>190 // Trump.java import java.util.ArrayList; import java.util.Collections; public class Trump { private ArrayList<Card> cards = new ArrayList<Card>(); public Trump() { for( int i=0; i<52; i++ ) { Card card = new Card(i); cards.add(card); } Collections.shuffle(cards); } public Card drawCard() { if( cards.size() != 0 ) return cards.remove(0); else return null; } public int countCard() { return cards.size(); } }
public class Card { char mark; int number; public Card(int i) { switch( i/13 ) { case 0:// スペード mark = 's'; break; case 1: // ダイヤ mark = 'd'; break; case 2: // ダイヤ mark = 'h'; break; case 3:// クラブ mark = 'c'; break; } number = i%13 + 1; } public String toString() { StringBuffer message = new StringBuffer(); switch( mark ) { case 's': message.append("スペードの"); break; case 'd': message.append("ダイヤの"); break; case 'h': message.append("ハートの"); break; case 'c': message.append("クラブの"); break; } message.append( number + "です。" ); return message.toString(); } }
>>190 適当に作ってみた
import java.util.*;
public class trump {
private LinkedList<Card> cardList = new LinkedList<Card>();
public trump() {
for(int type=0; type<4; type++)
for(int num=0; num<13; num++)
cardList.add(new Card(type, num));
Collections.shuffle(cardList);
}
public Card drawCard() { return cardList.remove(); }
public int countCard() { return cardList.size(); }
public static void main(String[] args) {
trump t = new trump();
while(t.countCard()>0) System.out.println(t.drawCard());
}
}
class Card {
private static final String[] TYPE_STR = {"Spade","Heart","Diamond","Club"};
private static final String[] NUMBER_STR = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
private int type;
private int number;
public Card(int type, int num) {
this.type = type;
this.number = num;
}
public String toString() { return TYPE_STR[type]+"["+NUMBER_STR[number]+"]"; }
public int getType() { return type; }
public int getNumber() { return number; }
}
>>198 適当に作ってみた…基本は上と同じ。
全パターン作って混ぜて取り出す。
import java.util.*;
public class Q198 {
private static final String[] TYPE = {"a","b","c"};
String name;
Q198(int type, int num) {
name = TYPE[type]+num;
}
public String toString() {
return name;
}
public static void main(String[] args) {
LinkedList<Q198> list = new LinkedList<Q198>();
// カード山を作って混ぜる。
for(int type=0; type<3; type++)
for(int num=1; num<8; num++)
list.add(new Q198(type, num));
Collections.shuffle(list);
// 3枚表示
for(int i=0; i<3; i++) { System.out.println(list.remove());}
}
}
>>204 http://www.google.co.jp/search?lr=lang_ja&q=java+midi+%E5%86%8D%E7%94%9F MIDI使うのは駄目かの?
216 :
215 :2005/07/07(木) 00:19:41
>>198 >>215 は
> どうやって3枚ともかぶらないようにランダムに表示させるかが分かりません
の部分だけです。
> ボタンをクリックすると
> そのうち3枚がランダムで表示されるプログラムを作れ。
> なお、その3枚のうち同じものが表示されてはいけない。
ではありません。
217 :
215 :2005/07/07(木) 00:22:23
218 :
186 :2005/07/07(木) 00:40:07
>>185 レス遅れてすいません。先ほど帰宅しました。
188-189のプログラム本当にありがとうございます。
起動して流れたのですが、思っていたのと少々違うみたいなんです。
どうも174の自分で書いた例が悪かったみたいです。
長々とプログラムを書いていただいたのに本当に申し訳ないです。
もう一度最初から書いてみたいと思います。
課題内容
「1〜50の範囲の整数を元とする2つの任意の集合(A,B)に対して
その和集合・積集合を求めるプログラムを作成せよ」
このプログラムを起動すると、
A[]←このカッコの中に数字を入力するように促される(1〜50の範囲の整数)。
そしてAのカッコ内に数字を入力し、Enterを押す。続いて、
B[]←このカッコの中に数字を入力するように促される(1〜50の範囲の整数)。
そしてBのカッコ内に数字を入力し、Enterを押す。
(AとBのカッコ内の数字の入力はコンソール上?(コマンドプロンプト上)でキーボードで入力する)
すると、AとBのカッコ内に入力した数字の集合が、下のように和集合と積集合に分かれて表示される。
和集合:A∪B=[
積集合:A∩B=[
つまり、A[]に入力した数字の集合とB[]に入力した数字の集合をもとにして
和集合と積集合を表示させるプログラムです。
174のA[]とB[]のカッコ内に書いてある数字1,2,4,7,9,1,3,5,7,10などは
例えばこのような数字をA[]とB[]のカッコ内に入力してみたとしたら
和集合:A∪B={1,2,3,4,5,7,9,10}
積集合:A∩B={1,7}
と出力されるということです。
長文になってしまってすいません。
何度も申し訳ありませんがどうかよろしくお願いします。
>>215 ありがとうございます
後はなんとかしてやってみます!
220 :
>>173 その1 :2005/07/07(木) 10:31:12
package hw94; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class HW94 { static double value; static boolean initFlag = true; static char opeFlag; static JPanel panel = new JPanel(); static JLabel label = new JLabel(); static JButton[] btn = new JButton[17]; static ActionListener numEvent = new Number(), opeEvent = new Operator(), equalEvent = new Equal(), clearEvent = new Clear();
221 :
:>>173 その2 :2005/07/07(木) 10:31:46
public static void main(String[] args) { ActionListener[] als = new ActionListener[] { numEvent, numEvent, numEvent, opeEvent, numEvent, numEvent, numEvent, opeEvent, numEvent, numEvent, numEvent, opeEvent, numEvent, clearEvent, equalEvent, opeEvent, clearEvent }; String[] btnLabel = { "7", "8", "9", "/", "6", "5", "4", "*", "3", "2", "1", "−", "0", "C", "=", "+", "AC" }; for (int i = 0; i < btnLabel.length; ++i) { btn[i] = new JButton(btnLabel[i]); btn[i].addActionListener(als[i]); btn[i].setFont(new Font("Dialog", 1, 20)); panel.add(btn[i]); } label.setText("0"); label.setFont(new Font("Dialog", 1, 30)); label.setOpaque(true); label.setBackground(Color.white); label.setBorder(BorderFactory.createLoweredBevelBorder()); panel.setOpaque(false); panel.setLayout(new GridLayout(5, 4, 4, 4)); JFrame frame = new JFrame(); JComponent cp = (JComponent) frame.getContentPane(); cp.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); cp.setBackground(new Color(230, 230, 230)); cp.setLayout(new BorderLayout(4, 4)); cp.add(label, BorderLayout.NORTH); cp.add(panel); frame.setSize(new Dimension(300, 400)); frame.setResizable(false); frame.setVisible(true); }
222 :
>>173 その3 :2005/07/07(木) 10:32:19
static void error(String text) { value = 0; opeFlag = 0; initFlag = true; label.setText(text); Component[] cs = panel.getComponents(); for (int i = 0; i < cs.length - 1; ++i) { cs[i].setEnabled(false); } } static class Number implements ActionListener { public void actionPerformed(ActionEvent e) { if (opeFlag == 0) { value = 0; } String text = null; if (initFlag) { text = ""; initFlag = false; } else { text = label.getText(); } text += (((JButton) e.getSource()).getText()).toString(); if (text.length() > 16) { error("エラー(桁溢れ)"); return; } label.setText(text); } }
223 :
:>>173 その4 :2005/07/07(木) 10:33:58
static class Operator implements ActionListener { public void actionPerformed(ActionEvent e) { if (opeFlag != 0) { equalEvent.actionPerformed(e); } if (label.getText().startsWith("エラー")) { return; } opeFlag = ((JButton) e.getSource()).getText().charAt(0); value = Double.parseDouble(label.getText()); initFlag = true; } } static class Equal implements ActionListener { public void actionPerformed(ActionEvent e) { if (initFlag || opeFlag == 0) { return; } double num = Double.parseDouble(label.getText()); switch (opeFlag) { case '+': value += num; break; case '−': value -= num; break; case '*': value *= num; break; case '/': value /= num; }
224 :
>>173 その5 :2005/07/07(木) 10:34:34
if (Double.isNaN(value)) { error("エラー(非数)"); return; } if (Double.isInfinite(value)) { error("エラー(無限数)"); return; } if (String.valueOf(value).length() > 16) { error("エラー(桁溢れ)"); return; } if (value % 1 != 0) { label.setText(String.valueOf(value)); } else { label.setText(String.valueOf((int) value)); } initFlag = true; opeFlag = 0; } }
225 :
:>>173 その6 :2005/07/07(木) 11:12:05
static class Clear implements ActionListener { public void actionPerformed(ActionEvent e) { if (((JButton) e.getSource()).getText().equals("C")) { if (initFlag) { return; } } else { opeFlag = 0; value = 0; Component[] cs = panel.getComponents(); for (int i = 0; i < cs.length; ++i) { cs[i].setEnabled(true); } } initFlag = true; label.setText("0"); } } }
226 :
199 :2005/07/07(木) 18:26:53
>203 さま 本日、人に質問したり自分でいろいろ考えたりと悪戦苦闘しましたが、 バグの嵐から逃れることができせんでした。 残念です。
227 :
190 :2005/07/08(金) 10:14:12
228 :
デフォルトの名無しさん :2005/07/08(金) 10:54:12
【 PG 歴 】 1年 【Java 歴】 1ヶ月 【 種別 】 丸投げです。ごめんなさい 【 課題 】 カップ・缶ジュースの両方を販売する自動販売機のクラスkancupjihankiを作成してください。 また、熱いジュースはは45℃、それ以外は5℃とする。 ブラックコーヒーを買う際は、砂糖かミルクを入れるかを聞く。 自分が、この自動販売機でジュースを買うイメージで自由に作成してください。 実際に動作させる動作チェック用のクラスも作成してください。 作成の大まかな流れ 1、お金を入れる 2、商品を選びボタンを押す 3、買った物とお釣りをとる 缶ジュースの種類 コーラ 120円(炭酸飲料水) 350cc オレンジ 120円 350cc コーヒー 120円(熱い物) 250cc カップジュースの種類 ファンタ 90円(炭酸飲料水) 200cc イチゴ牛乳 90円 200cc ブラックコーヒー 90円(熱い物) 200cc 提出クラス kannjihankiクラス cupjihankiクラス kancupjihankiクラス 動作チェック用クラス 【期限】明後日 【備考】すいませんが、よろしくお願いします。
229 :
デフォルトの名無しさん :2005/07/08(金) 15:12:45
自由に作成、とあるのに提出クラスが決まってるの?
230 :
デフォルトの名無しさん :2005/07/08(金) 20:44:22
【Java 歴】 3ヶ月 【期限】4日後 【課題】下記に示された4×4の格子において(1,1)から始まり(4,4)で 終わる最小累積距離を求めよ。各格子点の数字は局所的距離を表している。 y 4|3 2 1 1 3|1 2 2 2 2|2 2 1 1 1|1 1 2 3 ――――――――― |1 2 3 4 x 【備考】配列を使うみたいです。すいませんが、よろしくお願いします。
>230 テンプレの【 用語 】欄を作った意味がないぢゃないか。。 それとも「最小累積距離」とか「局所的距離」とか知らないの俺だけ??
232 :
230 :2005/07/08(金) 23:26:37
>>231 すいません。上手く説明できないのですが
まず、上、右上、右方向のみ移動できます。
例えば(1,1)から(4,4)へ
右上、右上、右上、右上、と移動すると
1+2+2+1=6(累積距離)となります。
局所的距離を足していき累積距離を求めます。
もうおねむの時間なのでアルゴリズムだけ。 ・その時点で、そこまでの累計距離の最も短い点から一歩進んでみる ・ただし、既に行った事のある点には行かない、無駄だから 第一ターン。とりあえず(1,1)から(2,1)(2,2)(1,2)に進んでみる。 第二ターン。(2,1)(2,2)(1,2)の累計距離を見て、一番短い2の(2,1)から上、右上、右にそれぞれ進む。 …が、(2,1)の上(2,2)は訪問済みなのでこれはスキップ。 第三ターン。(2,2)(1,2)(3,1)(3,2)の累計距離を見る。一番小さいのは3の(1,2)(2,2)(3,2)。 それぞれから上、右上、右に(訪問済の点は除いて)進む。 第四ターン。累計距離4の点は(3,1)(4,2)(1,3)。これらから進んでみる。以下同様。 この方法で、累計距離を配列に格納していく。ちなみに(4,4)には6が入る。 この配列の要素は、スタートからその点までの最小の累計距離に必ず等しくなる。 配列ができたら後ろ向きに進んでルートを求める。 (4,4)の値6から(4,4)の局所距離1を引けば5、(4,4)に接続する点で累計距離5の点2つが最短コースの可能性がある。 あとはひたすら可能性のある点全てから同様に進んでいけばいい。
あるファイルがあって、最初の部分は文字と数字で書かれていて その部分の文字&数字を読んだ後、その結果に合わせて 次のバイナリ部分を読むというプログラムを作りたいのですが、 read()でバイナリ部分の1バイト読んでreadLine()で1行読んで、と使い分けようとする場合 どうしたらいいですか? 同じファイルポインタを使ってるせいか競合を起こして すでに読み取った文字部分をバイナリとして再び読んでずれたりします あと、同様にデータをファイルに出力する際に out.printで文字を出力した後、bout.writeByteでバイナリ出力しようとすると 出力したのが上書きされたりで競合起こします 同じファイルで文字、数字とバイナリを使い分けるのは どうすればいいですか?
235 :
デフォルトの名無しさん :2005/07/09(土) 12:56:01
【Java 歴】 1ヶ月 【 種別 】 丸投げ すみません 【 課題 】 「今後(2005年1月1日以降)100年間は、13日が金曜日であることが(他の曜日であることよりも)多い」か どうかを調べるJavaプログラムを書き、真偽の結論を根拠とともに示してください。 「13日の金曜日が多い」というためには、「13日の木曜日よりも金曜日となる場合の方が多い」、 そして、他の金曜日以外の曜日に関しても同じことが言えなくてはなりません。 【不明点 】 正直どこから手をつけていいやらわかりません。 【期限】3日後
236 :
197 :2005/07/09(土) 13:56:59
>>235 import java.util.*;
public class DayOfWeek {
public static void main(String[] args) {
int[] histgram = new int[7];
String[] dayOfWeekName = new String[]{
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
Calendar cal = Calendar.getInstance();
for (int year = 2005; year < 2105; year ++) {
cal.set(Calendar.YEAR, year);
for (int month = 1; month <= 12; month ++) {
cal.set(Calendar.MONTH, month - 1);
cal.set(Calendar.DATE, 13);
++ histgram[cal.get(Calendar.DAY_OF_WEEK) - 1];
}
}
for (int i = 0; i < 7; i++) {
System.out.println(dayOfWeekName[i] + ": " + histgram[i]);
}
}
}
237 :
デフォルトの名無しさん :2005/07/09(土) 19:14:57
DoubleクラスのparseDoubleを使うと小数点以下5位くらいで 四捨五入されるんだけど四捨五入する位置を指定することは 可能でしょうか?10進数の数を扱っているのですが。
238 :
デフォルトの名無しさん :2005/07/09(土) 19:17:50
とんちんかんな質問かもしれませんが悩んでるので教えてください。 class Account{ String number; int amount; String secretNumber; void setNumber(String number){ this.number=number; } String getNumber(){ return this.number; } int getAmount(){ return this.amount; } void setSecretNumber(String secretNumber){ this.secretNumber=secretNumber; } } 以上のようなクラスがテキストであったのですが privateつけてないのにset、getってする必要はあるんですか?
>>238 Java Beans で検索するべし。
setterとgetterを使う場合は、まぁ普通はprivateかprotectedだけどな。
>237
import java.math.BigDecimal;
/**
* 四捨五入デモ
* @see
ttp://www.kab-studio.biz/Programing/JavaA2Z/Word/00000201.html */
public class ParseDoubleDemo {
public static void main(String[] args) {
String string = "32322.393000000000003902392378237283";
System.out.println( "Double.parseDouble(): " + Double.parseDouble(string) );// 桁落ち
BigDecimal bigDecimal = new BigDecimal(string);
// BigDecimalクラスのsetScale()メソッドで切り上げ、切り捨て、四捨五入を行うことができ、
// このメソッドの第1引数に「四捨五入を行う桁」
// 第2引数にBigDecimalクラスのROUND_HALF_UPフィールドを渡すことで四捨五入をすることができる。
BigDecimal newBigDecimal = bigDecimal.setScale( 1, BigDecimal.ROUND_HALF_UP );
System.out.println( "BigDecimal#setScale( 1桁): " + newBigDecimal.toString() );
BigDecimal newBigDecimal2 = bigDecimal.setScale( 15, BigDecimal.ROUND_HALF_UP );
System.out.println( "BigDecimal#setScale(15桁): " + newBigDecimal2.toString() );
}
}
> DoubleクラスのparseDoubleを使うと小数点以下5位くらいで
> 四捨五入される
の意味が分かりません。
241 :
230 :2005/07/09(土) 22:30:54
>>233 ありがとうございます。
プログラム考えてみます。
242 :
237 :2005/07/10(日) 00:24:16
string配列の中1つに例えば0.1299999と入っている場合0.13 となったりしてしまうのです。勝手に四捨五入されてしまうのです。
243 :
240 :2005/07/10(日) 00:30:16
>242 俺の環境じゃDouble.parseDouble()したあとも0.1299999って出るけど(JDK1.5.0_04)。 まあどうでもいいから>240みたいにBigDecimal#setScale()使ってくれ。
244 :
デフォルトの名無しさん :2005/07/10(日) 00:37:02
public static String gets(){ try{ InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String input = new String(); input = br.readLine(); isr.close(); return input; } catch(Exception e){ System.out.println("受け付けられない文字です。指定の文字を入力してください。" + e ); return "error"; } } と言うメソッドを作って、mainで例えば、 String s1 = Get.gets(); String s2 = Get.gets(); とすると、 受け付けられない文字です。指定の文字を入力してください。java.io.IOException: Str eam closed と、例外処理が起こってしまうのは何故でしょう? また、どう直せばいいのでしょうか? お願いします。
245 :
デフォルトの名無しさん :2005/07/10(日) 01:57:13
<<185 ↑どなたかよろしくお願いします。
246 :
デフォルトの名無しさん :2005/07/10(日) 07:06:02
【Java 歴】 6ヶ月 【 種別 】 丸投げです すみません 【 課題 】 あるテキストファイル(英文)を読み込んで、語彙の使用頻度表を作れという 課題です。大文字、小文字の区別はありません。よろしくお願いします
247 :
185 :2005/07/10(日) 08:25:38
>245 >185は俺だけど。。 >246 >183,187
画像処理用プログラム作りたいんですが、入出力部分がわかりません 画像を読み込んで画素値を二次元配列に入れて 再び同じ形式の別の名前で出力するというプログラムを作りたいのですが そういう関数とかすでに用意されてますか?
249 :
245 :2005/07/10(日) 13:26:22
<<247 うわ!すいません間違えました。 218の方どうかお願いします。
>218 >218を読んでも具体的な仕様が見えてきません。 そのような状態で答案書いても>188-189の時の二の舞になりかねない。 仕様の確認すると、プログラムを実行したら、 (出力) 配列Aの要素(1〜50の整数)を入力してください(キー入力なしEnter押下で入力完了) (入力) 6[Enter] (入力) 6[Enter] (入力) 5[Enter] (入力) 4[Enter] (入力) 3[Enter] (入力) 2[Enter] (入力) [Enter] (出力) 配列Bの要素(1〜50の整数)を入力してください(キー入力なしEnter押下で入力完了) (入力) 2[Enter] (入力) 4[Enter] (入力) 6[Enter] (入力) 7[Enter] (入力) 9[Enter] (入力) [Enter] (出力) A={2,3,4,5,6} (出力) B={2,4,6,7,9} (出力) A∪B={2,3,4,5,6,7,9} (出力) A∩B={2,4,6} ってな感じでOK? まーでも、>188-189まで書いてもらってるんだから自分で何とかしてみた方が早いよ。
251 :
249 :2005/07/10(日) 18:08:23
>>250 レスありがとうございます。
250で書いていただいたようなプログラムでオーケーです。
A,Bに入力する数字は1〜50までの整数なら
(入力) 4[Enter]
(入力) 16[Enter]
(入力) 23[Enter]
(入力) 49[Enter]
(入力) 50[Enter]
のようにどんな数字でも入力できるような感じです。
プログラミング自体初心者なもので勉強したのですが分からなかったもので・・
どうかよろしくお願いします。
252 :
デフォルトの名無しさん :2005/07/10(日) 19:47:08
文字列に"\u"を付与して16進(ユニコード)と して扱おうとしているのですがうまくいきません。 String str = "3042"; //あ String hoge = "\u" + str; ↑ エスケープシーケンスが無効です エラーが発生。 何か他に方法があれば教えてください。 お願いします。
254 :
デフォルトの名無しさん :2005/07/10(日) 20:46:36
>>253 なるほど。
文字列をバイナリにして、
そのままファイルなどに書きこめばよかったんですね。
ありがとうございました。
>254 やりたいことが分からんから勝手に納得されても…。
256 :
251 :2005/07/10(日) 21:17:32
>>253 プログラム流れました。
大変助かります。
本当にありがとうございました。
257 :
デフォルトの名無しさん :2005/07/10(日) 21:48:50
はじめまして。 javaで、 int[] array = new int[1000000]; といった配列を作り、この中に1〜1000000の数をランダムで、重複なしに入れたいのですが どうしたら良いですか? お手数ですが教えてください。お願いします。
258 :
デフォルトの名無しさん :2005/07/10(日) 22:09:19
プログラムの一部分の実行時間を計りたいときはどうすればいいんですか? 具体的には (タイマースタート) (for文、while文など) (タイマー停止) (かかった時間表示) みたいにしたいんですが・・・
>>258 import java.util.GregorianCalendar;
(途中略)
GregorianCalendar gc1,gc2;
gc1 = new GregorianCalendar();
// ----- ここに処理を記述する ----- //
gc2 = new GregorianCalendar();
System.out.println(gc2.getTimeInMillis() - gc1.getTimeInMillis() + "ミリ秒かかりました...");
260 :
258 :2005/07/10(日) 22:31:01
>>259 サンクスコ!
GregorianCalendarというのを使えばいいんですね
助かりました。
>>259 System.currentTimeMillisの方がよくないか?
使える環境だったらSystem.nanoTime()で。
>>257 import java.util.*;
public class UniqArraySample {
public static void main(String[] args) {
int[] array = new int[1000000];
// 最初は順番に入れちゃう
for (int i = 0; i < 1000000; i++) {
array[i] = i + 1;
}
// かき混ぜる
Random random = new Random();
for (int i = 0; i < 1000000; i++) {
int pos1 = random.nextInt(1000000) % 1000000;
int pos2 = random.nextInt(1000000) % 1000000;
int tmp = array[pos2];
array[pos2] = array[pos1];
array[pos1] = tmp;
}
}
}
キーボードから入力した文字列をコマンドライン引数で与えられたファイル名に書き出すプログラムを作成する。 入力する行数に制限を与えず、ファイルの末尾はピリオド(.)だけの行が入力されることによって判定する。 こういうプログラムを作りたいのですが、ピリオドが入力されたらプログラムを終了する というところができません。 String str; while((str=br.readLine())!=".") { pw.println(str); } pw.close(); これでできるかと思ったのですが、できませんでした。 解決法をよろしくお願いします。
264 :
デフォルトの名無しさん :2005/07/10(日) 23:42:03
色々な顔文字をファイル入力しておいて、ファイル出力した時に 例えば右クリックしたらランダムでそれが描写されるっていうプログラムを書きたいんですが どうすればいいんでしょうか?
>>263 メーラーでも作るのかな?
!=じゃなくてequals(".")
266 :
263 :2005/07/10(日) 23:54:08
すいません。 compareToメソッドを使ったら解決しました。
267 :
257 :2005/07/10(日) 23:55:07
257です。
>>262 なるほど、順番に入れてからバラバラにすれば良いのですね。
しかし自分ひとりではバラバラにするアルゴリズムも思いつきませんでした。
ありがとうございました。
>>264 言ってる意味がよくわからんが
javaは左クリック、右クリックの区別をしないから無理
>>268 をいをい
java.awt.event.MouseEvent#getButton()
271 :
264 :2005/07/11(月) 00:51:32
入力と出力を逆に書いてしまった・・・orz
272 :
ppp :2005/07/11(月) 01:36:48
第一引数で指定したファイル名を第二引数で指定したファイル名に 変更するプログラムをお願いします。
Runtime.exe("REN " + p2 + " " + p1); かな
>>272 import java.io.*;
public class Rename {
public static void main(String[] args) {
File src = new File(args[0]);
File dest = new File(args[1]);
src.renameTo(dest);
}
}
275 :
デフォルトの名無しさん :2005/07/11(月) 13:15:15
<<233 ↑どなたかよろしくお願いします。
276 :
デフォルトの名無しさん :2005/07/11(月) 13:55:36
public static void main(String[] args) { double x= 3.45; double w = x/2; char ch = 'a'+'b'; if(x=y){ double z=x++; else int z = y++; } System.out.println(z+"***" + sqrt(z)); } エラー探しの宿題が出たのですが、このif文と最後のsystem.out.println はどのようになっているべきですか? お願いします。
>>276 ・変数yが定義されていない
・if文の中はx==y
・zはif文の中で定義されてるので、外のSystem.out.println文のところでは参照できない
・変数chが意味無い
278 :
デフォルトの名無しさん :2005/07/11(月) 14:07:05
>>277 ありがとう。
変数wも意味無い
280 :
246 :2005/07/11(月) 14:19:20
246です。お願い致します
語彙は、半角スペースかピリオドのみで区切られると考えていいのか?
282 :
デフォルトの名無しさん :2005/07/11(月) 14:43:54
すいません丸投げです。よろしくお願いします。 【課題】 私たちの体内には「体内時計」とか「生物時計」などと呼ばれる一定の周期をもつリズムがあるらしい。 その中の身体・感情・知性の状態をグラフにあらわしたチャートをバイオリズムと呼んでいる。 バイオリズムがどのくらい信頼できるものかはわからないが、バイオリズムを表示するプログラムを作成 しなさい。 周期は身体23日、感情28日、知性33日。 ここで使うのは三角関数sin。角度が0の時、値は0で、90度の時値は1、180度で0に戻り、270度で−1、 一周して360度でまた0と変化する。 身体ならば、生まれてから現在までの日数を23で割った余りを調べ、360度の23分の割った余りを計算すれば、 現在の値が得られる。つまり、23で360度を一周すればよいのだから、3日目なら360度の23分の3の時の sin関数の値を計算すれば、値が得られる。23/23になると0に戻る。 360度はラジアンで2πと表すようになっている。 sin(2π×誕生日から調べる日までの日数%23/23) とすれば、その日の値が求まる。sinの値は−1から1の実数になるので、これにかけ算をして利用すればいい。例えば、 グラフの縦軸が400ドットならば、sinの値を200倍する(−200〜200)。 値が正なら好調、負なら不調。ゼロならば好不調の変わり目の要注意日らしい。 下記メソッドを自作して利用しなさい。 @西暦1年1月1日からの日数を計算するメソッド public int calDaysAD(int year, int month, int day) A月の日数を返すメソッド public int DaysOfMonth(int year, int month) Bうるう年チェックメソッド public boolean LeapCheck(int year) Cバイオリズムの値を計算するメソッド public double[][] calBiorhythm(int birthYear,int birthMonth,int birthDay,int noeYear,int nowMonth,int nowDay,int days) 以上です。 正直何が何やら。 よろしくお願いします。期限は1ヶ月です。
>>246 import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.Iterator;
import java.util.TreeMap;
public class WordCounter {
public static void main(String[] args) {
WordCounter self = new WordCounter();
if ( args.length < 1 ) {
System.out.println( "java WordCounter [filename]" );
return;
}
try {
self.execute( args[0] );
} catch (Exception e) {
e.printStackTrace();
}
}
public void execute( String file_name ) throws Exception {
File file = new File( file_name );
if ( !file.exists() ) {
System.out.println( "ファイル「"+ file_name +"」が存在しません。" );
return;
} else if ( !file.isFile() ) {
System.out.println( "「"+ file_name +"」はファイルではありません。" );
return;
}
TreeMap map = new TreeMap();
BufferedReader reader = new BufferedReader( new FileReader( file_name ) );
String line = null;
while ( ( line = reader.readLine() ) != null ) {
String[] words = line.split( "( |\\.)" ); for ( int i = 0; i < words.length; i++ ) { String key = words[i].toLowerCase(); if ( key.length() == 0 ) { continue; } Counter counter = (Counter)map.get( key ); if ( counter == null ) { counter = new Counter(); map.put( key, counter ); } counter.count(); } } for ( Iterator ite = map.keySet().iterator(); ite.hasNext(); ) { String key = (String)ite.next(); Counter counter = (Counter)map.get( key ); System.out.println( key + ":" + counter.getCount() ); } } private class Counter { int count = 0; public int getCount() { return count; } public void count() { count++; } } }
>>246 しょぼいから、自分で手を入れて直してくれ
286 :
デフォルトの名無しさん :2005/07/11(月) 15:09:32
287 :
デフォルトの名無しさん :2005/07/11(月) 17:15:02
public static int readInt(String prompt, int minN, int maxN){ if (minN>MaxN){ throw new IllegalArgumentException( "In readInt,minN" + minN + " not <= maxN" + maxN);} boolean inRange = false; int n = 0; while(!inRAnge){ try{ String line = JOptionPane.showInputDialog( prompt + "\n Enter an integer between" + minN = " and " + maxN); n = Intege.parseInt(line); inRange = (minN <= n && n <= maxN); } catch (NumberFormatException ex){ JOptionPane.showMessageDialog( null, "Try again"); }} return n } 上のプログラムでホワイトボックステストとブラックボックステストをしろ という問題がです。 マル投げです。
>>287 ・成果物(提出物)の形式が分からん。
・readInt なるメソッドの期待する結果(仕様)が分からんとブラックボックステストが出来ん。
ので答えられんと思う。
sin波とcos波を同時に出力させXが0〜10までの範囲で表示させる と言う課題が出たのでが、どなたか御享受願えませんでしょうか。 よろしくお願いいたします。
>289,290 使うなら最新版の>162で。
292 :
デフォルトの名無しさん :2005/07/11(月) 21:18:33
235です。
>>236 様ありがとうございました。
ただ、うまくコンパイルすることができませんでした…。すみませんでした…。
これは別の課題なのですがどなたかよろしくお願いします。
【 種別 】 丸投げです すいません
【 課題 】
今後100年間(2005年1月1日から2104年12月31日まで)のために、1年間カレンダー(1枚に12ヶ月のカレンダーを印刷したもの)を
印刷しようと考えました。年号を印刷しなければ、ある年のカレンダーは他の年のカレンダーと全く同じになるため、
100枚のカレンダーを印刷しなくても良い以上、最低何枚のカレンダーを印刷すればよいでしょうか?
また、それぞれのカレンダーを合計何年間使用することになるでしょうか?
Javaプログラムを書き、結論を根拠とともに示してください。
【備考】 Zellerの公式を使え、といわれたのですが…。
293 :
Mb :2005/07/11(月) 21:57:53
>292 それって二十年くらい昔の日立の新人研修で出た記憶がある。 春分の日を考慮しなければ(西洋だったらイースターを 考慮しなければ)、曜日のパターンが七通りに閏年のあるなしで 二通り、単純計算だと14枚用意すれば足りる。 2000年(四百で割れる)を過ぎてしまったので、 2100年(百で割れる)より前とそれより後では 二十八年周期で同じカレンダーが使える。 とりあえず二十八年分のカレンダーを生成することを 考えれ。 なお、前の年の大晦日を一月ゼロ日として計算すると、 計算が楽。
>>292 元日と大晦日で曜日が同じ年は、まとめれるんじゃね?って適当な考えで、適当に書いてみた。
import java.util.ArrayList;
public class Q292 {
private static final String[] WEEK_STR = {"日", "月", "火", "水", "木", "金", "土"};
public static int zeller(int year, int month, int day) {
if (month == 1 || month == 2) { month += 12; year--; }
return (year + year/4 - year/100 + year/400 + (13*month+8)/5 + day) % 7;
}
public static void main(String[] args) {
ArrayList[][] use = new ArrayList[7][7];
for (int dayOfNewYearsDay = 0; dayOfNewYearsDay < 7; dayOfNewYearsDay++)
for (int dayOfNewYearsEve = 0; dayOfNewYearsEve < 7; dayOfNewYearsEve++)
use[dayOfNewYearsDay][dayOfNewYearsEve] = new ArrayList();
for (int year = 2005; year <= 2104; year++)
use[zeller(year, 1, 1)][zeller(year, 12, 31)].add(new Integer(year));
int total = 0;
for (int dayOfNewYearsDay = 0; dayOfNewYearsDay < 7; dayOfNewYearsDay++) {
for (int dayOfNewYearsEve = 0; dayOfNewYearsEve < 7; dayOfNewYearsEve++) {
ArrayList al = use[dayOfNewYearsDay][dayOfNewYearsEve];
if (!al.isEmpty()) {
System.out.println("1月1日の曜日: "+WEEK_STR[dayOfNewYearsDay]+"曜日");
System.out.println("12月31日の曜日: "+WEEK_STR[dayOfNewYearsEve]+"曜日");
System.out.print("使用年数: "+al.size()+"年 ( ");
for(int i=0; i<al.size(); i++) System.out.print(al.get(i)+" ");
System.out.println(")\n");
total++;
}
}
}
System.out.println("合計: "+total+"枚必要");
}
}
【 種別 】 丸投げです・・・ 【 課題 】 情報源から出力されるアルファベットとして {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f} の16 文字を考え,符号語は{0, 1} の系列を考えるものとする.情報源からの出力系列を与えると,各文字の出力確率を計算する. file 名は“prob. 拡張子” とすること.各文字の出力確率を与えると,符号語を生成する.符号化方法としては, Fano 符号,Shannon-Fano 符号,Shannon-Fano-Elias 符号,Huffman符号のいずれを用いても良い. file 名は“codeword *. 拡張子” とすること.なお“*” には符号化法を示すためf, sf, sfe, h のいずれかを用いること. 符号語と情報源からの出力系列を与えると,符号化された系列を出力する. file 名は“encode. 拡張子” とすること.符号語と符号化された系列を与えると,力系列に復号する. file 名は“decode. 拡張子” とすること. プログラムの使い方の説明の例UNIX のcommand line 上での使用を考えた場合, 次のような一連の操作によって,符号語の生成および符号化/復号化が行うことができる. > prob data.txt prob.tbl > codeword prob.tbl code.tbl > encode code.tbl data.txt encode.txt > decode code.tbl encode.txt decode.txt ただし,各ファイルは以下のようなものである. (ここでは簡単のためアルファベットが{0, 1, 2, 3} の4 文字の場合の例を記述する) data.txt 出力系列のファイルで, 1023112201010230..... のような文字列が入っている. prob.tbl 出力確率のファイルで,各出力文字の出現確率がアルファベットの順に{0.55,0.25,0.15,0.05}のように行毎に記述されている. code.tbl 符号語のファイルで,各出力文字に対する符号語がアルファベットの順に{0,10,110,111}のように行毎に記述されている. encode.txt 符号化された系列のファイルで,{10011011110101101100...}のような符号語の系列が入っている. decode.txt 復号化された系列のファイルで,{102311220.....}のような文字列が入っている. 【期限】 7月15日23時59分 どうかよろしくお願いします。
【 種別 】 丸投げです。よろしくお願いします 【 課題 】 放物線:y=-x*x-2*xのグラフがある。 この放物線とx軸とで囲まれた図形の面積を計算するプログラムを作れ。 (1)オイラーの台形公式を使え。 (2)区分を4等分、8等分、12等分、16等分、20等分、24等分、28等分、32等分、36等分した場合の 面積を、tableにして出力せよ。 (3)自分で作る関数を必ず使え <ヒント> ・区間は[0,2]である。 ・36等分のときの面積は、1,33・・・である。 ・正解は4/3であるが。
297 :
296 :2005/07/12(火) 10:19:09
すみません、書き忘れたのですが上のプログラムはJavaスクリプトで書くのだそうです。 お願いします。
Javaじゃねーじゃねーか。失せろハゲ
>>297 あのね。JavaとJavaスプリクトはまったく別のものって分かってるの?
300 :
デフォルトの名無しさん :2005/07/12(火) 11:18:21
ゲーム等をやって、その得点を表示するサーブレットの作り方を教えてくだされ
ゲーム等のプログラムから、点数をhttpでServletに送るんだ。 Servletでは受け取った点数をHTMLに整形して出力するんだ。
303 :
デフォルトの名無しさん :2005/07/12(火) 18:59:38
>>233 DP(ダイナミックプログラム)マッチングの
プログラム
きぼん!
>295 すまんが問題を100回読んでも理解できんかった。 それから、 > prob data.txt prob.tbl > codeword prob.tbl code.tbl > encode code.tbl data.txt encode.txt > decode code.tbl encode.txt decode.txt って明らかにJavaの実行方法じゃないよね??
>>304 Javaというか、使用する言語は何でも良い、という課題なんですが・・・
【Java 歴】 1ヶ月。 【 種別 】 質問です 【 課題 】 JSP、サーブレット、JavaBeansでWebアプリケーションを開発しています。 環境はJビルダー2005です。 プロジェクトファイルをビルドすると最終的に 同じ名前のClassファイルがプロジェクト内に2個出来上がります。 フォルダは別々です。 このClassファイルが2個ある「理由」をぜひ教えてほしいです。 変な宿題ですんません 【 期限 】 明日です。
307 :
ikaikaikajika :2005/07/13(水) 00:45:12
JABAで GUIを用いて、メロディーをつくっていける プログラムを書きたいんですが、 できれば GUI 画面に 8小節分の5線譜をかいて その上にマウスで4分音符と 8分音符と4分休符、8分休符をおいていき、PLAYボタンを押すと 自動演奏するような プログラムはできないでしょうか? わかる人がいれば教えてください。
308 :
デフォルトの名無しさん :2005/07/13(水) 01:19:24
意味 ワカ ラン カラ オシ ERO♪ ∧_∧ ∧_∧ ∧_∧ ∧_∧ ∧_∧ (⌒)(⌒) ( ・∀・) ( ・∀・) ( ・∀・) ( ・∀) (∀・ ) 彡│ || | ⊂ ⊂ ) ( U つ ⊂__へ つ ( ○ つ ⊂ ○ ) (∧_∧⊃ < < < ) ) ) (_)| \\ \ / // ( ・∀・) (_(_) (__)_) 彡(__) (_(__) (_(_) ∪
>>307 できるかできないかでいいんなら、できる
>>307 どう書けばイイかはイメージできるが、激しく面倒くさそうだ。
特に五線譜と、音符の描画、小節の判定、半音(シャープ・フラット)の処理とか。
音を出すために、音素をauフォーマットとかで用意しておくとしても、再生も面倒だな〜。
311 :
デフォルトの名無しさん :2005/07/13(水) 12:35:50
JABAで?スレ違いだろ
>>230 >>233 見てやってみた
class GridPoint {
private int x;
private int y;
GridPoint(int x, int y){
this.x = x ;
this.y = y ;
}
public int getPointX(){
return this.x;
}
public int getPointY(){
return this.y;
}
}
class GridElement {
private int distance = Integer.MAX_VALUE;
private boolean linked = false;
private boolean visited = false;
private GridPoint previous = null;
GridElement (int distance){
this.distance = distance;
}
public void cutLink(){
this.linked = true;
}
public boolean isVisited(){
return visited;
} public int getDistance(){ return distance; } public GridPoint getPrevious(){ return previous; } public boolean isLink(){ return linked; } public void updateDistance(int x, int y,int distance){ if (!visited){ this.distance += distance; visited = true; this.previous = new GridPoint(x,y); } } } public class Q230ShortestPath{ private void output( GridElement[][] matrix, GridPoint start, GridPoint end) { GridPoint next = null; int x = end.getPointX(); int y = end.getPointY(); int end_x = start.getPointX(); int end_y = start.getPointY(); System.out.print("最小累積経路数:"); System.out.println( matrix[end.getPointX()][end.getPointY()].getDistance()); System.out.print("最短経路:");
System.out.print("("+(x+1)+","+(y+1)+")"); while (x != end_x || y != end_y){ next = matrix[x][y].getPrevious(); x = next.getPointX(); y = next.getPointY(); System.out.print("("+(x+1)+","+(y+1)+")"); } } private GridElement[][] search( GridElement[][] matrix, GridPoint start, GridPoint end) { int distance = 0; int min_distance; int x = start.getPointX(); int y = start.getPointY(); int end_x = end.getPointX(); int end_y = end.getPointY(); matrix[x][y].updateDistance(x, y, 0); while (!matrix[end_x][end_y].isVisited()) { min_distance = Integer.MAX_VALUE; distance = matrix[x][y].getDistance(); matrix[x][y].cutLink(); //距離の更新 if (x < end_x) { matrix[x + 1][y].updateDistance(x, y, distance); } if (x < end_x && y < end_y) { matrix[x + 1][y + 1].updateDistance(x, y, distance); }
if (y < end_y) { matrix[x][y + 1].updateDistance(x, y, distance); } //最小距離を探す for (int i = start.getPointX(); i <= end_x; i++) { for (int j = start.getPointY(); j <= end_y; j++) { if (matrix[i][j].isVisited() && !matrix[i][j].isLink() && matrix[i][j].getDistance() < min_distance) { min_distance = matrix[i][j].getDistance(); //次の座標 x = i; y = j; } } } } return matrix; } public static void main(String[] args){ int[][] grid = { {1,1,2,3}, {2,2,1,1}, {1,2,2,2}, {3,2,1,1}, }; Q230ShortestPath sp = new Q230ShortestPath(); GridPoint start = new GridPoint(1-1,1-1); GridPoint end = new GridPoint(4-1,4-1); int max_x = grid.length; int max_y = grid[max_x - 1].length ;
GridElement[][] matrix = new GridElement[max_x][max_y]; //条件がまだ怪しい if (start.getPointX() < end.getPointX() && start.getPointY() < end.getPointY() && start.getPointX() >= 0 && start.getPointY() >= 0 && end.getPointX() < max_x && end.getPointY() < max_y) { //初期化 for (int x = start.getPointX(); x < max_x; x++) { for (int y = start.getPointY(); y < max_y; y++) { matrix[x][y] = new GridElement(grid[x][y]); } } sp.search(matrix, start, end); sp.output(matrix, start, end); }else{ System.out.println("指定された座標が正しくありません"); } } }
JAVA歴:数日 種別:丸投げ 問題:複数の乱数を発生させて 出てきた乱数を比較して同じ数字があるか判断するには どのようなかたちのコードがありますか? 備考:自分ではJAVAの本からよくわかっていないコードを引き剥がして組み合わせて 以下のようにして乱数を出すところまでしかできません・・・。 public class nyanko { public static void main(String[] args) { int kari[]; kari = new int[20]; for(int i=1;i<=kari.length;i++) { double ransuu1; ransuu1 = Math.random(); System.out.println(i + "番目の数字は" + ransuu1); } } }
319 :
デフォルトの名無しさん :2005/07/13(水) 23:38:32
>>228 期限はすぎてしまいましたが、今後の勉強の
参考にもしたいので、よろしくお願いします。
形だけでもいいので。
320 :
デフォルトの名無しさん :2005/07/14(木) 00:33:41
>>318 ・乱数として欲しいのは整数か実数か
・同じ数字があるかないかの判断だけでよいのか
・発生させる乱数の個数は引数で渡すのかプログラム内に決め打ちなのか
などによって回答は変わると思う。
321 :
320 :2005/07/14(木) 01:03:30
>>318 とりあえず0〜100のintを20個生成して同じ数字があるかないかだけ判断するものはこんな感じか?
public class Main {
public static void main(String[] args) {
int numRandom = 20;
int randomNumbers[] = new int[numRandom];
for (int i=0 ; i < numRandom ; ++i) {
randomNumbers[i] = (int)(101*Math.random());
System.out.println(randomNumbers[i]);
}
boolean exists=false;
outerloop:
for (int i=0 ; i < numRandom-1 ; ++i) {
for (int j=i+1 ; j < numRandom ; ++j) {
if (randomNumbers[i]==randomNumbers[j]) {
exists=true;
break outerloop;
}
}
}
if (exists) {
System.out.println("同じ数字がある");
} else {
System.out.println("同じ数字はない");
}
}
}
二重ループ回すくらいなら、生成時にチェックした方が速い。 大きさ100の配列でチェックリストを作ってガイシュツの数字かチェック。
確かに
324 :
318 :2005/07/14(木) 12:30:01
>>320 どうもです。
何か本で見つからないような英字とかありますが
いろいろ試して参考にさせていただきます。
おねがいします 誰かといてくださいませんかJAVAです 問題1 x=0°から 360°まで 10°きざみで y = sin(x) とを計算し、x と y の値を以下のように ファイル(test.dat)へ保存せよ。 プログラムにより作成された test.dat の内容: 0 0.0 10 0.17364817766693033 20 0.3420201433256687 30 0.49999999999999994 40 0.6427876096865393 50 0.766044443118978 60 0.8660254037844386 ... ...
326 :
デフォルトの名無しさん :2005/07/14(木) 16:13:37
すいません、英語の問題です。お願いします。 Indicate where in the hirachy you want to add data fields for the following and the kind of data field you would add. ・Cost ・The battery identification ・Time before battery discharges ・Number of expansion slots ・Wireless Internet available
hierarchy を提示しろよ。 (hierarchyの綴りがまちがっているぞ) Javaの宿題なのか?
328 :
デフォルトの名無しさん :2005/07/14(木) 17:40:09
javaの宿題です。
>>325 180度と360度できっちり0にならんがそれは自分で何とかしてくれ
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
public class sintest {
public static void main(String[] argv){
try {
BufferedOutputStream bo=new BufferedOutputStream(new FileOutputStream("test.dat"));
String s="";
for(int i=0;i<=360;i+=10){
s=String.valueOf(i)+" "+String.valueOf(Math.sin(Math.PI*(double)i/180.0))+"\n";
bo.write(s.getBytes());
}
bo.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
>328 だから、クラス階層を示せってんだよ。 おそらく、PCやノートPCあたりなんだろうが。
331 :
230 :2005/07/14(木) 20:12:58
332 :
デフォルトの名無しさん :2005/07/14(木) 20:39:19
JAVA歴:1ヶ月 種別:質問 問題:データベース(mysql)とswingをつかって、 swing上で操作しデータベースのデータの削除をしたいのですが、 ComboBoxで選択した、データベースのデータを削除したいのですが、 どうしたらよいでしょうか??コンパイルして実行してもエラーで ません。根本的なやりかた自体間違っているのでしょうか? private JPanel createPanel2(){ JPanel p2 = new JPanel(); p2.add(ComboBox); try{Connection con = connect(); Statement stmt = con.createStatement(); String sql ="select name from shop"; ResultSet rs = stmt.executeQuery(sql); while(rs.next()){String name = rs.getString("name"); ComboBox.addItem(name);}con.close();} catch(Exception ex) { System.out.println(ex);}return p2;} public void actionPerformed(ActionEvent e){ try{Connection con = connect(); Statement stmt = con.createStatement(); String sql ="delete * from shop where name ='" + ComboBox.getSelectedItem() + "'"; ResultSet rs = stmt.executeQuery(sql); int id = rs.getInt("id"); String name = rs.getString("name"); DefaultListModel listModel2 = new DefaultListModel(); while(rs.next()){listModel2.addElement(rs.getString("name")); } JList list2 = new JList(listModel2); JScrollPane scrollPane3 = new JScrollPane(); 〜〜〜〜 con.close();
>>282 「バイオリズムの値を計算するメソッド」の戻り値の詳細を教えてください。
具体的に何を返せばいいですか。
334 :
デフォルトの名無しさん :2005/07/14(木) 23:00:35
>330 fuck you
【Java 歴】 1ヶ月強 【 種別 】 丸投げ 【 課題 】 1.乱数を発生させる。 2.それらを表示 3.それらを合計して「合計は〜」と表示する 4.それらを比較し、同じ数字を「〜〜〜これらが同じ数字です」と表示する 5.それらの中で「一番大きいのは〜〜〜です」と表示する 【備考】HelloWorldの表示から基本的な計算くらいまでしかできません
336 :
335 :2005/07/14(木) 23:38:49
×1.乱数を発生させる。 ○1.乱数を発生させて配列に格納する。
337 :
デフォルトの名無しさん :2005/07/14(木) 23:40:21
>335 math.function=JOptionPane("Generate random Numbers"); You are very welcome!
338 :
デフォルトの名無しさん :2005/07/14(木) 23:44:12
【 種別 】 丸投げです。どなたかお願いします。 【 課題 】 デジタル時計を作りアラームの機能(ビープ音)をつけること ラジオボタンかチェックボタンで○○時間後など を指定し指定時間が経過するとアラームがなるように する。その他、デジタル時計もシンプルな表示でも いいがなるべく、かっこいい時計を作れ。 以上が出された課題です 【備考】アプレットではなくswingとawtを使うことだそうです。。。
【Java 歴】 1月ほど 【 種別 】 丸投げ 【 課題 】 プロキシ経由でIPアドレス先に接続する 【不明点 】 普通のURL入力などはともかくここまでくるとお手上げです
>339 宿題なのか? とりあえず、プロキシサーバってのがどんなリクエストに対しどんなデータを返すかを調べてみろ。 案外簡単だぞ。
342 :
デフォルトの名無しさん :2005/07/15(金) 01:13:11
課題が出たのですが全然わかりません
助けて下さい泣
【Java 歴】 3ヶ月
【 種別 】 丸投げ
【 課題 】 BrackJackゲームを設計せよ
【 期限 】 7/19まで
・プレーヤーは親と子の2名
・カードの数字を合計して、大きい方が勝ち
・Playでゲーム開始、Exitでゲーム終了
・最初は2枚からスタート
・Hit(カードを貰う)とStand(カードを貰わない)でカードを集める
・親のカードは子がStandするまで見えない
・子の行動の直後に親も行動する
・親は自動的に進行する
・21を越えるまでカードを追加していくことができる
・カードの数字は、2〜10はそのまま点として数えるが、絵札は10点として計算する
・エース(A)は1点または11点のどちらに数える
・合計数値は21点が最高で、22点以上になってしまうとその時点で負け
・最初の2枚が(A)と(絵札)でBJになれば相手が3枚以上で 21点を作ったとしても勝ち
・所持金は両者とも100で、1ゲームにつき負けた方が勝ったほうに10点与える
・子がBJで勝った場合には15点が支払われる
・親がBJで勝っても10点没収されるだけで、追加徴収はない。
・どちらかの所持金が0点になればゲーム終了
・出力はGUIを使って実現する
いちおう一部途中まで?のプログラムがありますのでアップします
たぶん違うところが多いと思いますので、改変してください
ご指導お願いします
http://uppp.dip.jp/src/uppp5527.zip
【Java 歴】 少しだけ本を読んで勉強した程度です 【 種別 】 丸投げ 【 課題 】 ArrayListを使ってランダムに数字を出力し大きな順番に並べる 【不明点 】 ArrayListを使おうとあれこれ調べますが取得メソッドだとかと出てきてわからなくなります 【 用語 】 って何ですか? 【 期限 】 今週末 【 備考 】 ないです
344 :
デフォルトの名無しさん :2005/07/15(金) 02:41:18
>342 public arraylist[] blackjack( String parent, String child){ yes! baby: }
345 :
デフォルトの名無しさん :2005/07/15(金) 03:08:13
【Java 歴】数週間 【 種別 】投げ 【 課題 】nkfコマンドを作る(文字コード変換ツール)、また、第一引数で読み取るパスを指定、第二で書き込み先 第二がないときは第一に上書き 【 不明点 】プラットフォーム依存のエンコードを出力したい 【 期限 】今朝には・・・
346 :
デフォルトの名無しさん :2005/07/15(金) 07:33:46
public class HourlyEmployee { private String name; private double hoursWorked; private double hourlyRate; private int numDepends; public HourlyEmployee(){ name = "no name"; hoursWorked = 0.0; hourlyRate = 0.0; numDepends = 0; } public HourlyEmployee(String n, double w, double r, int d) { name = n; hoursWorked = w; hourlyRate = r; numDepends = d;} public double calcWeeklyPay(){ return hoursWorked * hourlyRate;} public double calcDeductions(){ if(numDepends <= 3){ return 0.1 * calcWeeklyPay();} if(numDepends > 1) { return .2 * calcWeeklyPay();} if(numDepends == 1) return 0.25 * calcWeeklyPay(); else return 0.0;}
347 :
デフォルトの名無しさん :2005/07/15(金) 07:35:34
public double calcNetPay(){ return calcWeeklyPay() - calcDeductions();} public void sethoursWorked(double w){ hoursWorked = w;} public double gethoursworked(){ return hoursWorked;} public void sethourlyRate(double r){ hourlyRate = r;} public double gethourlyRate(){ return hourlyRate;} public void setname(String n){ name = n;} public String getname(){ return name;} public void setnumdepends(int d){ numDepends = d;} public int getdependents(){ return numDepends;} public String toString(){ return "name is " + name + " Number of Dependets is " + numDepends;} } これのメインクラス(単純にStringを呼ぶ)を書きたいんですが、どなたか 書いてもらえませんか?
,.,,..::;;:::;;;::,.、, ,:r'^ `ヽ /:: :::\ ./::: ,,,-;;;;;;...,.....,...;;-;;;;...,.::::::i ヽ人人人/ i;;/'|i<_O_ヽ二( <O`゙iヽ;::::! ノ ジ ゝ l;′ヽ二/⌒ミ、二ニノ ヽ::l ヽ | ( _,,l; / ^` ^´ヾ、 :::l、 丿 ン (_ i │ / ,r――-、 i i" )  ̄ヽ ギ (_ ゝ .l l i.j" ̄ ̄`jl l l゙ ;/ ) | ( `'''; l |.l-='''''=‐/ ,r''''" 丿 ス ゝ ヽ ヽ,`'-―-" / ,/l ヽ カ ( ヽ ゝ  ̄ / .| ) | ( ,r| ヽ、ヽ::,,;;::: ゙,/ l,, 丿 ン (
>>335 import java.util.*;
public class RandomNumber {
public static void main(String[] args) {
int[] randomNumbers = new int[10];
ArrayList sameNumbers = new ArrayList();
Random rand = new Random();
for (int i = 0; i < 10; i ++) {
randomNumbers[i] = rand.nextInt() % 10;
System.out.print(randomNumbers[i] + " ");
}
System.out.println();
int max = Integer.MIN_VALUE;
for (int i = 0; i < 10; i ++) {
if (max < randomNumbers[i]) { max = randomNumbers[i]; }
for (int j = i + 1; j < 10; j ++) {
if (randomNumbers[i] == randomNumbers[j] &&
sameNumbers.contains(new Integer(randomNumbers[i])) == false) {
sameNumbers.add(new Integer(randomNumbers[i]));
}
}
}
if (sameNumbers.size() != 0) {
for (int i = 0; i < sameNumbers.size(); i++) {
System.out.print(sameNumbers.get(i) + " ");
}
System.out.println(" が同じ数字です");
}
System.out.println("最大値は " + max + " です");
}
}
>>343 import java.util.*;
public class RandomNumber {
public static void main(String[] args) {
ArrayList randNums = new ArrayList();
Random rand = new Random();
for (int i = 0; i < 10; i ++) {
randNums.add(new Integer(rand.nextInt() % 10));
}
Collections.sort(randNums);
Iterator iter = randNums.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
}
}
>>345 import java.io.*;
public class Nkf {
public static void main(String[] args) {
String outFileName;
int c;
if (args.length == 2) {
outFileName = args[1];
} else {
outFileName = args[0] + Math.random();
}
try {
InputStreamReader reader = new InputStreamReader(new FileInputStream(args[0]), "JISAutoDetect");
FileWriter writer = new FileWriter(outFileName);
while ((c = reader.read()) != -1) {
writer.write(c);
}
reader.close();
writer.close();
if (args.length < 2) {
(new File(args[0])).delete();
(new File(outFileName)).renameTo(new File(args[0]));
}
} catch (IOException e) { e.printStackTrace(); }
}
}
352 :
デフォルトの名無しさん :2005/07/15(金) 11:46:49
【Java 歴】 6週間 【 種類 】 丸投げ 【 期限 】 明日 【 課題 】 1.vector objectを作る. 2.文章を読み込む(JOptionPaneを使う). 3. 単語の間のスペースを除いて、単語と単語をくっつける。 4.全ての文字を小文字にする 5.一つ一つの文字の数をLetterCount objectでカウントする 6.LetterCount object をdataにアルファベット順に加える 7. 文章を付加する。文字とstatisticsをexternalファイルの"letters.txt"に付加する・ 例)1. The fat cat sat on the mat. 2. Thefatcatsatonthemat 3. thefatcatsatonthemat 6. The fat cat sat on the mat. letter freq t 6 a 4 e 2 こんな感じなんですが、よろしくお願いします。
353 :
352 :2005/07/15(金) 11:50:08
途中まで書きました。これは、小文字にするところまでしか出来て いません。お願いします。 import javax.swing.JOptionPane; import java.util.*; public class TestLetterCount { public static void main(String[] args) { Vector data = new Vector(); String ltrStr = JOptionPane.showInputDialog("Enter sentence"); JOptionPane.showMessageDialog(null, ltrStr.toLowerCase()); } }
私たちの体内には「体内時計」とか「生物時計」などと呼ばれる一定の周期を持つ リズムがあるらしい。その中の身体・感情・知性の状態をグラフにあらわしたチャートを バイオリズムと読んでいる。バイオリズムがどのくらい信頼できるものかはわからないが、 ここまでのまとめ課題としてバイオリズムを表示するプログラムを作成しなさい。 周期は身体23日、感情28日、知性33日。ここで使うのは三角関数sin。 角度が0の時、値は0で、90度の時値は1、180度で0に戻り、270度でー1、一周して360度でまた0と変化する。 身体ならば、生まれてから現在までの日数を23で割った余りを調べ、 360度の23分の割った余りを計算すれば、現在の値が得られる。つまり、23で360度を 一周すればよいのだから、3日目なら360度の23分の3の時のsin関数の値を計算すれば、 値が得られる。23/23になると0に戻る。360度はラジアン2πと表すようになっている。 sin(2π*誕生日から調べる日までの日数%23/23) とすれば、その日の値が求まる。sinの値は−1から1の実数になるので、これに掛け算をして利用すればいい。 例えば。グラフの縦軸が400ドットならば、sinの値を200倍する(−200〜200)。 値が正なら好調、負なら不調。ゼロならば好不調の変わり目の要注意日らしい。 下記メソッドを自作して利用しなさい。 @西暦1年1月1日からの日数を計算するメソッド public int calDays(int year, int month, int day) A月の日数を返すメソッド public int DaysOfMonth(int year, int month) B閏年チェックメソッド public boolean LeapCheck(int year) オプションC バイオリズムの値を計算するメソッド public double[][] calBiorhythm(int birthYear, int birthMonth, int birthDay, int nowYear, int nowMonth, int nowDay, int days) 期限7月22日(金) Java2 1.4.0 俺には無理だから誰かやってくれ
>>352 LetterCount っていうクラスの定義は与えられているんか?
357 :
352 :2005/07/15(金) 13:32:59
>>356 はい。すいません、忘れてました。 public class LetterCount { private char letter; private int count; /** Creates a new instance of LetterCount */ public LetterCount(char ltr, int cnt) { letter = ltr; count = cnt; } public void setLetter(char ltr){ letter = ltr; } public void setCount(int cnt){ count = cnt; } public char getLetter(){ return letter; } public int getCount(){ return count; } public String toString(){ return "Letter:" + letter + "\nCount:" + count; } }
359 :
デフォルトの名無しさん :2005/07/15(金) 16:02:44
>>338 【 期限 】 明日までなんです
おっお願いします! 時刻の表示まではできたんですが。
GUI物は面倒くさいだけなので、食いつき悪いよ。 時刻の表示が敵他のであれば、あとは指定時刻と比較して、 javax.sound.sampled にあるクラスを使って音出すとかすればOK。
Look&Feelで、外観をWindowsにしたいのですが どのように書けばイマイチよくわかりません。 ソースは以下です。 import javax.swing.*; public class HelloWorldSwing { public static void main(String[] args) { JFrame frame = new JFrame("HelloWorldSwing"); final JLabel label = new JLabel("Hello World"); frame.getContentPane().add(label); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setVisible(true); } } よろしくお願いします。
>>359 適当に作ってみた
かっこよくは自分でなんとかしてくれ
import java.awt.*;
import java.awt.event.*;
import java.util.Calendar;
import javax.swing.*;
public class DigitalClock extends JPanel {
int hour, minute, second;
int beepH, beepM, beepS;
boolean alarm = false;
JComponent canvas;
JRadioButton[] rb = new JRadioButton[4];
public DigitalClock() { super(new BorderLayout()); updateTime(); canvas = new JComponent() { protected void paintComponent(Graphics g) { super.paintComponent(g); g.setColor(Color.red); g.setFont(new Font("SansSerif", Font.BOLD, 20)); FontMetrics fm = g.getFontMetrics(); String time = hour + " 時 " + minute + " 分 " + second + " 秒"; int strWidth = fm.stringWidth(time); g.drawString(time, (getWidth() - strWidth) / 2, getHeight() / 2); } }; Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); canvas.setPreferredSize(new Dimension(d.width / 3, d.height / 3)); add(canvas, BorderLayout.CENTER);
rb[0] = new JRadioButton("off", true); rb[1] = new JRadioButton("30分後"); rb[2] = new JRadioButton("1時間後"); rb[3] = new JRadioButton("2時間後"); rb[0].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { alarm = false; } }); rb[1].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { alarm = true; updateBeepTime(0, 0, 10); } }); rb[2].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { alarm = true; updateBeepTime(0, 0, 20); } }); rb[3].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { alarm = true; updateBeepTime(0, 0, 30); } });
ButtonGroup bg = new ButtonGroup(); JPanel panel = new JPanel(); for (int i = 0; i < rb.length; i++) { bg.add(rb[i]); panel.add(rb[i]); } add(panel, BorderLayout.SOUTH); BorderFactory.createEmptyBorder(20, 20, 20, 20); new Timer(100, new ActionListener() { public void actionPerformed(ActionEvent e) { updateTime(); canvas.repaint(); if (alarm && hour == beepH && minute == beepM && second == beepS) { Toolkit.getDefaultToolkit().beep(); alarm = false; rb[0].setSelected(true); } } }).start(); }
public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { public void run() { createAndShowGUI(); } }); } private static void createAndShowGUI() { JFrame frame = new JFrame("DigitalClock"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel cp = new DigitalClock(); cp.setOpaque(true); frame.setContentPane(cp); frame.pack(); frame.setVisible(true); }
367 :
最後 :2005/07/15(金) 19:40:05
private void updateTime() { Calendar calendar = Calendar.getInstance(); hour = calendar.get(Calendar.HOUR_OF_DAY); minute = calendar.get(Calendar.MINUTE); second = calendar.get(Calendar.SECOND); } private void updateBeepTime(int bh, int bm, int bs) { Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.HOUR_OF_DAY, bh); calendar.add(Calendar.MINUTE, bm); calendar.add(Calendar.SECOND, bs); beepH = calendar.get(Calendar.HOUR_OF_DAY); beepM = calendar.get(Calendar.MINUTE); beepS = calendar.get(Calendar.SECOND); } }
すまん、訂正。 updateBeepTime(0, 0, 10) → updateBeepTime(0, 30, 0) updateBeepTime(0, 0, 20) → updateBeepTime(1, 0, 0) updateBeepTime(0, 0, 30) → updateBeepTime(2, 0, 0)
>>361 main()の最初に
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (Exception e) {
// Do Nothing
}
と書いておけばOK。ただし J2SE1.4.2以降。
>346 // HourlyEmployeeDemo.java public class HourlyEmployeeDemo { public static void main(String[] args) { HourlyEmployee employee1 = new HourlyEmployee(); HourlyEmployee employee2 = new HourlyEmployee("346", 20.0, 1.2, 3); System.out.println( employee1 ); System.out.println( employee2 ); } }
>>370 import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.io.*;
public class Biorhythm extends Frame{
static int birthYear, birthMonth, birthDay;
static int nowYear, nowMonth, nowDay;
public Biorhythm(){
this.setSize(400,300);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
public void paint(Graphics g){
GregorianCalendar date =
new GregorianCalendar();
nowYear = date.get(Calendar.YEAR);
nowMonth = date.get(Calendar.MONTH)+1;
nowDay = date.get(Calendar.DATE);
calBiorhythm(birthYear, birthMonth, birthDay, nowYear, nowMonth, nowDay,
System.out.println("今日までの生存日数: "+ (calDaysAD(nowYear ,nowMonth, nowDay) - calDaysAD(birthYear,birthMonth,birthDay)));
}
public int calDaysAD(int year, int month, int day){ int ni = (year-1)*365+(year-1)/4-(year-1)/100+(year-1)/400+day; for(int i = 1; i < month; i++){ day = DaysofMonth(year,(month-i)); ni += day; } return ni; } public int DaysofMonth(int year, int month){ int[] days = {31,28,31,30,31,30,31,31,30,31,30,31}; if(month == 2) if(LeapCheck(year))days[month-1] = 29; return days[month-1]; } public boolean LeapCheck(int year){ if((year % 4 ==0) && (year % 100 != 0) || (year % 400 == 0)) return true; else return false; } public static void main(String[] args){ birthYear = Integer.parseInt(args[0]); birthMonth = Integer.parseInt(args[1]); birthDay = Integer.parseInt(args[2]); new Biorhythm().show(); } } 後オプションCができね
375 :
352 :2005/07/15(金) 20:44:48
>>358 どうもありがとうございました。あなたは恩人です。
謝謝!!
>>372 これはちょっと難しいから別スレでも聞いてみたら?
377 :
352 :2005/07/15(金) 20:53:40
>>358 すいません、もう1つだけ聞きたいんですが アウトプットを出すJOptionPane.showMessageDialog(null, ltrStr);は 一番下に書けばいいのでしょうか?
378 :
デフォルトの名無しさん :2005/07/15(金) 21:02:44
>>362 ありがとうございます!!
あきらめて自分でやってたんですが、つまずいて
いて、早速コードを確認してみます!!
>>369 ありがとうございます。無事WindowsのLook&Feelになりました。
コメントアウトされてるDoNothingですが、「何もしないという表記」ということですか?
381 :
質問人 ◆I7GOHmYc7o :2005/07/15(金) 21:16:59
【Java 歴】1年ぐらい 【 種別 】質問 【 課題 】ソケットによる文字の送受信 【 不明点 】受信が上手くいかず、その原因と解決方法をしりたい 【 期限 】土曜23:59まで 【詳しく】 ソケットによるサーバーとクライアント間通信で 文字を送っているのですが上手くいきません そうやらデータを受ける方に問題があるようなのですが どこ改善すれば上手くいくか知恵を貸してください!! プログラムはサーバーがクライアントの接続を感知すると 文字を出力仕組みになっています この文字をクライアントが上手くこの文字を受け取れないでいるのです またサーバーは複数のクライアントからの要求にも大丈夫なように出来ています(マルチスレッド化) このサーバー、2つのクラスで作っているのですが 一方を内部クラスに出来ないので1つのファイルに別々に作っています(*) のでここら辺が原因かもしれません・・・コンパイルは及び実行は問題なし 以下にプログラムの概略を書きます
382 :
質問人 ◆I7GOHmYc7o :2005/07/15(金) 21:22:02
サーバー側 public class MultiThreadServer { public static void main(String[] args) throws IOException { ServerSocket serverS = null; boolean end = true; try { serverS = new ServerSocket(1214); } catch (IOException e) { 略 } while(end){ Socket s = serverS.accept(); new Thread(new MultiEchoThread(s)).start();/**こっから下のMultiEchoThreadへ行く**/ } 略 }//MultiThreadServerの終わり
383 :
質問人 ◆I7GOHmYc7o :2005/07/15(金) 21:22:40
サーバー側(続き) //クラスは別だが同じファイル内 class MultiEchoThread implements Runnable { static int num=0; static String NUM="0"; Socket socket = null; BufferedReader in = null; PrintWriter out = null; 略 public MultiEchoThread(Socket s) { socket = s; 略 } public void run() { try{ OutputStream os = socket.getOutputStream(); out = new PrintWriter( new OutputStreamWriter(os, "Shift_JIS")); in = new BufferedReader( new InputStreamReader(socket.getInputStream())); NUM=Integer.toString(num);/**int→String***/ out.println(NUM);/**"0"を発射!!**/ /**ここから先に進めず 上の発射した文字があっちで受け取れずあっちからの発射がない***/ while ((NUM= in.readLine())!=null) { 略 }//MultiEchoThreadの終わり
384 :
質問人 ◆I7GOHmYc7o :2005/07/15(金) 21:23:29
クライアント側 class LastClient extends JApplet{ MyJPanel myJPanel; MyJPanelList myJPanelList; String s; static int num=0; static String NUM="0"; static Socket echoS = null; static BufferedReader in = null; static PrintWriter out = null; 略 LastClient(){ try { echoS = new Socket("localhost", 1214); in = new BufferedReader( new InputStreamReader(echoS.getInputStream())); OutputStream os = echoS.getOutputStream(); out = new PrintWriter( new OutputStreamWriter(os, "Shift_JIS")); } 略 } public static void main(String args[]) throws IOException { 略 try{ /***ここから先に進めず、 サーバーから発射された"0"を受け取るはずなのだが***/ NUM=in.readLine(); num=Integer.parseInt(NUM); }catch(Exception en){} 略 }
385 :
質問人 ◆I7GOHmYc7o :2005/07/15(金) 21:29:59
略の部分は一切、影響を与えない部分です 基本的にはソケット通信受信での問題を聞いているのですが 原因がサーバー内の2つのクラスの一方が内部クラスになっているのではないかと サーバーの形容について述べています 原因がここになかったのならサーバーに関してはスルーしてもらって結構です 【サーバーの形容】 サーバーはこうなっている↓(なんか説明しづらいんで) =====MultiThreadServer.javaはここから======== public class MultiThreadServer { 略 } class MultiEchoThread implements Runnable { 略 } ======ここまで========
386 :
質問人 ◆I7GOHmYc7o :2005/07/15(金) 21:30:50
387 :
358 :2005/07/15(金) 21:31:47
>>377 一番下でもOK。出したい場所に書けばいい。
388 :
369 :2005/07/15(金) 21:32:55
>>379 ここには何も書く必要はないのだけれど { } は間抜けなので、
コメント入れてあるだけ。
>>388 なるほど、重ね重ねありがとうございました。
>>381 out = new PrintWriter( new OutputStreamWriter(os, "Shift_JIS"), true);
もしくは、
out.println(NUM);
out.flush();
391 :
質問人 ◆I7GOHmYc7o :2005/07/15(金) 22:17:16
392 :
>>295 ハフマン その1 :2005/07/15(金) 23:21:33
import java.io.*; import java.util.*; public class HW95 { public static void main(String[] args) { try { if (args[0].equals("prob")) { createProbFile(args[1], args[2]); } else if (args[0].equals("codeword")) { createCodewordFile(args[1], args[2]); } else if (args[0].equals("encode")) { createEncodeFile(args[1], args[2], args[3]); } else if (args[0].equals("decode")) { createDecodeFile(args[1], args[2], args[3]); } else { throw new Exception("不正なコマンドが指定されました"); } } catch (ArrayIndexOutOfBoundsException ex) { System.out.println("引数の指定に誤りがあります"); } catch (Exception ex) { System.out.println(ex.getMessage()); } }
393 :
:>>295 ハフマン その2 :2005/07/15(金) 23:22:02
static void createProbFile(String dataFile, String probFile) throws Exception { BufferedReader dataR = new BufferedReader(new FileReader(dataFile)); Map charToRatio = new TreeMap(); int ch = 0; int totalCount = 0; while ((ch = dataR.read()) != -1) { if (ch == '\n' || ch == '\r') { continue; } Integer chKey = new Integer(ch); if (charToRatio.containsKey(chKey)) { int count = ((Integer) charToRatio.get(chKey)).intValue() + 1; charToRatio.put(chKey, new Integer(count)); } else { charToRatio.put(chKey, new Integer(1)); } ++totalCount; } List crList = new ArrayList(charToRatio.entrySet()); Collections.sort(crList, new Comparator() { public int compare(Object o1, Object o2) { Map.Entry e1 = (Map.Entry) o1; Map.Entry e2 = (Map.Entry) o2; return -(((Integer) e1.getValue()).compareTo(e2.getValue())); } });
394 :
>>295 ハフマン その3 :2005/07/15(金) 23:22:37
StringBuffer code = new StringBuffer("0"), text = new StringBuffer(); for (int i = 0; i < crList.size(); i++) { Map.Entry entry = (Map.Entry) crList.get(i); double ratio = (double) ((Integer) entry.getValue()).intValue() / totalCount; String number = String.valueOf(ratio); if (number.length() > 4) { number = number.substring(0, 4); } String line = String.valueOf( (char) ((Integer) entry.getKey()).intValue()) + "," + number + "\r\n"; text.append(line); } BufferedWriter w = new BufferedWriter(new FileWriter(probFile)); w.write(text.toString()); w.close(); }
395 :
>>295 ハフマン その4 :2005/07/15(金) 23:23:06
static void createCodewordFile(String probFile, String codewordFile) throws Exception { BufferedReader probR = new BufferedReader(new FileReader(probFile)); List charList = new ArrayList(); String line = null; while ((line = probR.readLine()) != null) { String[] token = line.split(","); if (token.length != 2) { throw new Exception("指定されたprobファイルが不正です"); } charList.add(token[0]); } StringBuffer code = new StringBuffer("0"), text = new StringBuffer(); for (int i = 0; i < charList.size(); i++) { String ch = (String) charList.get(i); String codeline = ch + "," + code.toString() + "\r\n"; text.append(codeline); code.replace(code.length() - 1, code.length(), "1"); if (i + 2 < charList.size()) { code.append("0"); } } BufferedWriter w = new BufferedWriter(new FileWriter(codewordFile)); w.write(text.toString()); w.close(); }
396 :
>>295 ハフマン その5 :2005/07/15(金) 23:23:43
static void createEncodeFile(String codewordFile, String dataFile, String encodeFile) throws Exception { BufferedReader codewordR = new BufferedReader(new FileReader(codewordFile)); Map charToCode = new TreeMap(); String line = null; while ((line = codewordR.readLine()) != null) { String[] token = line.split(","); if (token.length != 2) { throw new Exception("指定されたcodewordファイルが不正です"); } charToCode.put(token[0], token[1]); } BufferedReader dataR = new BufferedReader(new FileReader(dataFile)); StringBuffer text = new StringBuffer(); int ch = 0; while ((ch = dataR.read()) != -1) { if (ch == '\n' || ch == '\r') { text.append((char) ch); continue; } if (charToCode.containsKey(String.valueOf((char) ch))) { text.append(charToCode.get(String.valueOf((char) ch))); } } BufferedWriter w = new BufferedWriter(new FileWriter(encodeFile)); w.write(text.toString()); w.close(); }
397 :
>>295 ハフマン その6 :2005/07/15(金) 23:38:38
static void createDecodeFile(String codewordFile, String encodeFile, String decodeFile) throws Exception { BufferedReader codewordR = new BufferedReader(new FileReader(codewordFile)); Map codeToChar = new TreeMap(); String line = null; while ((line = codewordR.readLine()) != null) { String[] token = line.split(","); if (token.length != 2) { throw new Exception("指定されたencodeファイルが不正です"); } codeToChar.put(token[1], token[0]); } BufferedReader encodeR = new BufferedReader(new FileReader(encodeFile)); StringBuffer text = new StringBuffer(), code = new StringBuffer(); int ch = 0;
398 :
:>>295 ハフマン その7 :2005/07/15(金) 23:39:12
while ((ch = encodeR.read()) != -1) { if (ch == '\n' || ch == '\r') { text.append((char) ch); continue; } if (ch != '0' && ch != '1') { throw new Exception(); } code.append((char) ch); if (ch == '0' || code.length() >= codeToChar.size() - 1) { String word = (String) codeToChar.get(code.toString()); text.append(word); code.delete(0, code.length()); } } BufferedWriter w = new BufferedWriter(new FileWriter(decodeFile)); w.write(text.toString()); w.close(); } }
>>295 プログラム引数は課題文の通りです。
> prob data.txt prob.tbl
> codeword prob.tbl code.tbl
> encode code.tbl data.txt encode.txt
> decode code.tbl encode.txt decode.txt
400 :
デフォルトの名無しさん :2005/07/15(金) 23:55:57
【 種別 】丸投げ 【 課題 】 ブラウザーに『進む』と『戻る』の機能を 付けたいのですがどうしたらよいかわかりません。 お願いします! public class Browser extends JFrame implements ActionListener , ItemListener , HyperlinkListener { public static void main(String args[]) { Browser frame = new Browser(); } JToolBar tb = new JToolBar(); private JTabbedPane tabPane = new JTabbedPane(JTabbedPane.TOP , JTabbedPane.SCROLL_TAB_LAYOUT); JEditorPane html = new JEditorPane(); } private void openFile(File file) { long length = file.length(); if (length == 0L) return; String text = ""; try { InputStream stream = new FileInputStream(file); BufferedReader reader = new BufferedReader( new InputStreamReader(stream) );
401 :
デフォルトの名無しさん :2005/07/15(金) 23:56:29
while(true) { String temp = reader.readLine(); if (temp == null) break; else text += temp; }} catch(Exception err) { //IO 例外をここに記述する。 System.out.println(err); } addDocument(text , "text/html" , file.getName());} public void addDocument(String text, String type, String title) { JEditorPane html = new JEditorPane(type , text); html.setEditable(false); html.addHyperlinkListener(this); JScrollPane pane = new JScrollPane(html); tabPane.addTab(title, null , pane); } public void addDocument(URL url) { JEditorPane html = new JEditorPane(); html.setContentType("text/html "); html.setEditable(false); html.addHyperlinkListener(this); try { html.setPage(url);} catch(Exception err) { System.out.println(err);} JScrollPane pane = new JScrollPane(html); tabPane.addTab(url.toString() , null , pane); }
402 :
デフォルトの名無しさん :2005/07/15(金) 23:57:04
public void itemStateChanged(ItemEvent e) { switch (e.getID()) { case ItemEvent.ITEM_STATE_CHANGED: if (e.getStateChange() == ItemEvent.DESELECTED) break; try { String addr = urlComboBox.getSelectedItem().toString(); URL url = new URL(addr); addDocument(url); } catch(Exception err) { System.out.println(err); } }} public void hyperlinkUpdate(HyperlinkEvent e) { HyperlinkEvent.EventType type = e.getEventType(); if (type == HyperlinkEvent.EventType.ACTIVATED) { urlComboBox.setSelectedItem(e.getURL().toString()); }}
つーかソースで流れすぎてやる気が萎えた('A`)
>>403 検索してみたんですがこの機能を使ったサンプル見つからなくて、
このソースを利用して質問してみたんですが申し訳ありませんでした。
>400-402 ソース貼るならせめてコンパイルぐらいは通してください。 ・変な位置に閉じ括弧が書いてある箇所がある。 ・actionPerformed(ActionEvent)が未実装。 ・urlComboBoxが解決できない。 でもって、今回のケースは「丸投げ」じゃなくて「質問」ね。
確かにせめてどれがどのソースか名前欄に記してくれないと どれがどれかわからなくなるな・・
407 :
407 :2005/07/16(土) 12:28:41
【種別】質問
>>405 何度も沢山書き込むことになってすみません!改めて質問させてください
ブラウザーに『進む』と『戻る』の機能を
付けたいのですが、今現在リンク先を押すと次々と新しいタブで
開かれるのですが、そうではなく一つのタブの中で
リンクページを表示させ『進む』と『戻る』の機能を付けたいのですが、
もしよろしければ教えていただけませんか?お願いします。
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class Browser extends JFrame
implements ActionListener,ItemListener,HyperlinkListener {
public static void main(String args[]) {
Browser frame = new Browser();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);}
private DefaultComboBoxModel urlList = new DefaultComboBoxModel(
new String[] {"
http://www.2ch.net/ ",
"
http://www.forest.impress.co.jp/ ",});
private JToolBar tb = new JToolBar();
private JComboBox urlComboBox = new JComboBox();
private JMenuBar menuBar = new JMenuBar();
408 :
407 :2005/07/16(土) 12:29:17
private JMenu mn1 = new JMenu("ファイル(F)"); private JMenu mn2 = new JMenu("編集(E)"); private JMenuItem fileOpen = new JMenuItem("開く"); private JMenuItem fileClose = new JMenuItem("タブを閉じる"); private JMenuItem fileAllClose = new JMenuItem("すべてのタブを閉じる"); private JMenuItem fileExit = new JMenuItem("閉じる"); private JMenuItem editCut = new JMenuItem("切り抜き"); private JMenuItem editSelect = new JMenuItem("すべて選択"); private JTabbedPane tabPane = new JTabbedPane(JTabbedPane.TOP , JTabbedPane.SCROLL_TAB_LAYOUT); private JEditorPane html = new JEditorPane(); private JFileChooser openFileChooser = new JFileChooser(); private Vector editorPanes = new Vector(); private JPanel statusBar = new JPanel(); private JLabel statusLabel = new JLabel(); public Browser(){openFileChooser.setMultiSelectionEnabled(true); tb.setFloatable(false); menuBar.add(mn1); menuBar.add(mn2); mn1.add(fileOpen); mn1.addSeparator(); mn1.add(fileClose); mn1.add(fileAllClose); mn1.addSeparator(); mn1.add(fileExit); mn2.add(editCut); mn2.add(editSelect);
409 :
407 :2005/07/16(土) 12:29:46
fileOpen.addActionListener(this); fileAllClose.addActionListener(this); fileClose.addActionListener(this); fileExit.addActionListener(this); editCut.addActionListener(this); editSelect.addActionListener(this); setJMenuBar(menuBar); urlComboBox.setModel(urlList); urlComboBox.setEditable(true); urlComboBox.addItemListener(this); getContentPane().add(tb, BorderLayout.NORTH); JPanel panel1 = new JPanel(); panel1.add(urlComboBox); panel1.setLayout(new FlowLayout(FlowLayout.LEFT)); tb.add(panel1); getContentPane().add(tabPane, BorderLayout.CENTER);} private void openFile(File file) { long length = file.length(); if (length == 0L) return; String text = ""; try {InputStream stream = new FileInputStream(file); BufferedReader reader = new BufferedReader( new InputStreamReader(stream));
410 :
407 :2005/07/16(土) 12:30:13
while(true) {String temp = reader.readLine(); if (temp == null) break; else text += temp;}} catch(Exception err) {System.out.println(err); }addDocument(text , "text/html" , file.getName());} public void addDocument(String text, String type, String title) { JEditorPane html = new JEditorPane(type , text); html.setEditable(false); html.addHyperlinkListener(this); JScrollPane pane = new JScrollPane(html); tabPane.addTab(title, null , pane);} public void addDocument(URL url) { JEditorPane html = new JEditorPane(); html.setContentType("text/html "); html.setEditable(false); html.addHyperlinkListener(this); try {html.setPage(url);} catch(Exception err) {System.out.println(err);} JScrollPane pane = new JScrollPane(html); tabPane.addTab(url.toString() , null , pane);} public void closeDocument(int index) { editorPanes.remove(tabPane.getSelectedIndex()); tabPane.removeTabAt(index);} public void closeAllDocument() { editorPanes.clear(); tabPane.removeAll();}
411 :
407 :2005/07/16(土) 12:30:38
public void cut() { if (editorPanes.size() == 0) return; int index = tabPane.getSelectedIndex(); JEditorPane pane = (JEditorPane)editorPanes.elementAt(index); pane.cut();} public void selectAll() { if (editorPanes.size() == 0) return; int index = tabPane.getSelectedIndex(); JEditorPane pane = (JEditorPane)editorPanes.elementAt(index); pane.selectAll();} public void actionPerformed(ActionEvent e) { Object src = e.getSource(); if (src == fileOpen) { if (openFileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { File files[] = openFileChooser.getSelectedFiles(); for(int i = 0 ; i < files.length ; i++) { openFile(files[i]);}}} else if (src == fileClose) { int index = tabPane.getSelectedIndex(); if (index >= 0) closeDocument(index);} else if (src == fileAllClose) { closeAllDocument();}
412 :
407最後です :2005/07/16(土) 12:41:28
else if (src == fileExit) { dispose(); } else if (src == editCut) { cut(); } else if (src == editSelect) { selectAll(); }} public void itemStateChanged(ItemEvent e) { switch (e.getID()) { case ItemEvent.ITEM_STATE_CHANGED: if (e.getStateChange() == ItemEvent.DESELECTED) break; try { String addr = urlComboBox.getSelectedItem().toString(); URL url = new URL(addr); addDocument(url);} catch(Exception err) { System.out.println(err); }}} public void hyperlinkUpdate(HyperlinkEvent e) { HyperlinkEvent.EventType type = e.getEventType(); if (type == HyperlinkEvent.EventType.ACTIVATED) { urlComboBox.setSelectedItem(e.getURL().toString());}}}
413 :
デフォルトの名無しさん :2005/07/16(土) 14:50:36
五箇条の御誓文の2は、完全に間違ってる。
はっきり言って、「丸投げ」が一番好ましい提示法なのです。
ソースコードを読んで理解するのは、非常に骨が折れるのです。
1から書いた方が早いのです。
故に、
>>407 の質問も「進む、戻るのボタン付きブラウザーを
作ってくれ」の方が回答率が高いのです。
ソースを読んで理解し、それを改変する形でプログラムを書くのは
最も面倒なのです。
414 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/16(土) 17:09:04
415 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/16(土) 17:17:40
>>342 すいません。一部間違えがありました。動作上は全く問題ないのですが。
上から40行目辺りにある
playerScore = 30;
dealerScore = 30;
を
playerScore = 100;
dealerScore = 100;
にしてください。
持ち点が30で始まってしまいます。。。
416 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/16(土) 17:21:05
ちなみにまた団体名が変わりました。 先月までの「イリュミナートX」から「Z(ザイン)帝國」に改称しました。 尊称は引き続き「軍帥(ぐんすい)」です。 軍の総帥という意味です。よろしくお願いします。
417 :
Mb :2005/07/16(土) 18:16:53
>>413 > 五箇条の御誓文の2は、完全に間違ってる。
> はっきり言って、「丸投げ」が一番好ましい提示法なのです。
> ソースコードを読んで理解するのは、非常に骨が折れるのです。
> 1から書いた方が早いのです。
読んで理解するのに非常に骨が折れるようなソースに対しては、
「ここの部分のコーディングがこのように糞だから、
いっそこれこれの方針に基づいて一から書き直せ」と
助言してやるのが教育的配慮というもの。
418 :
デフォルトの名無しさん :2005/07/16(土) 20:12:38
どなたか助けてください・・・。
下のサイトのプログラムに、double型の値を扱う機能を追加せよと言われました。(今はintしか扱えない?)
ttp://www.ohmsha.co.jp/data/link/4-274-13308-7/index.htm この課題がでた授業はjavaプログラミングを習うものではないので、いきなりプログラムを
作れと言われてもどうしてよいのかわかりません。どなたか教えていただけませんでしょうか。
お願いいたします。
ちなみに、コンパイルはソースコードを配置したディレクトリ内で
javac -encoding SJIS Chavac.java
javac -encoding SJIS Chava.java
らしいです。
サンプルプログラム(hello.chv)
void main(){ println(1); }
コンパイルは
java Chavac hello.chv
実行は
java Chava A です。
Chavaというプログラミング言語のコンパイラChavacの改造をしてほしいみたいです。
変更部分だけでいいので、どうかよろしくお願いします。
正直人のソースコードは自分で1から組むより骨が折れる
課題でお絵かきソフトを作ったのですが、図形を描画した際に図形が重なると 色が変色してしまいます。それと図形描画の際のマウスをドラッグした時の ちらつきを試行錯誤して問題解消したのですが、課題を発表する際に質問を されるんです。色の変化はいったい何が原因だったのかよくわかりませんでした。 ちらつき解消のためにダブルバッファをしたら色の変化が起こらなくなったような気がします。 いったい何が原因だったのか教えて下さい。質問スレか迷ってちょっとスレ違いっぽい んですが、よかったらお願いします。
>>420 うまく誘導して答えられる質問にだけ答えればいいよ。
422 :
420 :2005/07/17(日) 09:52:53
すいません自己解決しました!
java質問スレから誘導されてきました。よろしくお願いします。 【Java 歴】 一ヶ月 【 種別 】 質問 【 課題 】 JTextPaneに入力された特定の文字の色を変えたい。(要はテキストエディタの様なモノを作りたい) 【不明点 】 上記を実現するにはどのコンポーネントやクラスを利用したらいいのでしょうか? 【 期限 】 なし 【 備考 】 2、3冊の初心者用のjavaの本を目を通したのですが物足りなくて、結局はJavadocを参考に 勉強していたのですが、上記の事を実現するために関わる項目がなかなか見つからなくて困ってます。
424 :
デフォルトの名無しさん :2005/07/17(日) 13:44:20
>>424 JTextPane と javax.swing.text パッケージのクラス群を使えば、
簡単に、様々な属性の文字からなるテキスト表示を実現する事ができます。
思いっきり質問スレの守備範囲に思えるんだが、何だかなぁ… まあ質問者に非は無いが。
質問なら424で完結なんだけど、サンプルを書いてくれなら このスレの範囲内になる。 しかし、423は質問の様なので、424でFA。
>>415 ありがとうございました!
仕上がりのレベルが高いですね
間違いなくバレちゃいます^^;
【Java 歴】 1ヶ月 【 種別 】 質問 【不明点 】 トランプ52枚の山をRandomを使って作りたいのですが 0が入ってしまいます。解決方法を教えて下さい
429 :
デフォルトの名無しさん :2005/07/17(日) 15:03:35
>>428 int cardNumber = (int) (Math.random() * 13) + 1
冗談みたいな案件だなw
432 :
デフォルトの名無しさん :2005/07/17(日) 22:17:48
>>418 恒例のコンパイラ作成か。
まだその講義やってるんだね。今の実戦じゃ何も役立たないのに。(地力はつくけど)
残念だけど、この課題はあまりに規模が大きすぎて回答不可能だ。
433 :
Mb :2005/07/17(日) 22:39:31
>>419 > 正直人のソースコードは自分で1から組むより骨が折れる
正直漏れも業務だったら捨てて一から書き直す
その方が早いし質も高い
コーディングの基準も実行環境が変わったり
言語仕様が拡張されたりして年々変わってゆくので、
捨てられる場合でも後から見た奴の参考になるように、
とりあえず全体の構造が分かりやすく、何をやっているのかが
明快なコードを心がけている。
434 :
デフォルトの名無しさん :2005/07/17(日) 22:53:58
Mbタン。(;´Д`)ハァハァ
【Java 歴】 3ヶ月 【 種別 】 丸投げ 【 課題 】 342と同じ物です どなたか俺のソースコードを読んでくれる神はいませんでしょうか? ソースはメールで送ります
>435 何をしてほしいの? 作ってみたけど動かないから添削してほしいとか?
>>436 はい、そうです
お願いできませでしょうか?
それにしても今日暑かったな36度だってさ
439 :
デフォルトの名無しさん :2005/07/18(月) 01:08:01
読むも何も肝心の342のソースコードが消えてる。。。 読めない。。。 ブラックジャックなら、前レスで誰かが答えてたような。。。
440 :
352,353 :2005/07/18(月) 01:28:05
>358さん、 すいません、書いてもらったプログラムを走らせたんですが、一つ一つの 文字数をカウントしないんですよね。なんとかなるでしょうか??
441 :
435 :2005/07/18(月) 01:34:08
あのソースはまだ未完でしたので・・・ 一応実装、動作確認は済ませましたが 思い通りに動いてくれなかったので どなたか出来る人に見て頂きたくて メールしていただければこちらから添付し送信ます こんなに面倒なことをしてくれる神のような人は いないとは思いますが、助けて欲しいのでどなたかお願いします 汚いソースで恥ずかしいし、もしかしたら同級生の人が 見てるかもしれないので、直upするのは抵抗があるので こんな面倒なことしてます。すいません。
【Java 歴】 1ヶ月 【 種別 】 質問です。 【 課題 】 do { c = inFile.nextChar(); } while (c == ' ' || c == '\t' || c == '\n'); 字句解析プログラムで、これは空白をスキップする部分ですが /* で始まり*/で終わる文字列をコメントとして読み飛ばすには どのように書けばいいんでしょうか 馬鹿らしい質問ですが、お願いします。 【 期限 】 明日まで
>>442 1文字ずつ読むのなら状態を覚えておいて
normal 通常 ('/'が出たらslash状態へ)
slash /が出てきた ('*'が出たらcomment状態へ、それ以外ならnormal状態へ)
comment slashモードの時に*が出てきた ('*'が出たらstar状態へ)
star commentモードの時に*が出てきた ('/'が出たらnormal状態へ、それ以外ならcomment状態へ)
というような感じでやってみてはどうか
444 :
Mb :2005/07/18(月) 14:40:38
>>442 /**
* 空白とコメントをスキップする。
*/
private int skipBlanc( int spos, Iterator iter ) {
int pos = spos;
boolean commentp = false;
for (;;) {
if (pos >= buffer.length()) {
if (!iter.hasNext()) return -1;
buffer = (String) iter.next();
lineNumber += 1;
pos = 0;
continue;
}
if (!commentp) {
if ((buffer.charAt(pos) == ' ' ) ||
(buffer.charAt(pos) == '\t' )) {
pos += 1;
continue;
}
if (buffer.regionMatches(pos, "/*", 0, 2)) {
commentp = true;
pos += 2;
continue;
}
if (buffer.regionMatches(pos, "//", 0, 2)) {
pos = buffer.length();
continue;
}
} else {
445 :
Mb :2005/07/18(月) 14:43:50
if (buffer.regionMatches(pos, "*/", 0, 2)) { commentp = false; pos += 2; } else { pos += 1; } continue; } break; } return pos; } なにせ昔書いたものなので屑なコードでスマソ。 イテレータ iter は今ソースを取ってきてる List<String> から 取ってきたもの。勝手にbuffer の中身を書き換えて、 コメントの終了位置を返す。-1 だったらテキストの終わり。
446 :
>>407 ブラウザ その1 :2005/07/18(月) 14:54:04
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import java.util.List;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.ChangedCharSetException;
import javax.swing.text.html.*;
public class HW97 extends JFrame implements ActionListener, HyperlinkListener {
public static void main(String args[]) {
HW97 frame = new HW97();
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
}
private JToolBar tb = new JToolBar();
private JButton nextBtn = new JButton("次のページ");
private JButton prevBtn = new JButton("前のページ");
private JButton moveBtn = new JButton("移動する");
private JComboBox urlCbox = new JComboBox(new DefaultComboBoxModel(
new String[] { "
http://www.2ch.net/ ", "
http://www.forest.impress.co.jp/ "}
));
447 :
:>>407 ブラウザ その2 :2005/07/18(月) 14:54:36
private JMenuBar menuBar = new JMenuBar(); private JMenu mn1 = new JMenu("ファイル(F)"); private JMenu mn2 = new JMenu("編集(E)"); private JMenuItem fileOpen = new JMenuItem("開く"); private JMenuItem fileClose = new JMenuItem("タブを閉じる"); private JMenuItem fileAllClose = new JMenuItem("すべてのタブを閉じる"); private JMenuItem fileExit = new JMenuItem("閉じる"); private JMenuItem editCut = new JMenuItem("切り抜き"); private JMenuItem editSelect = new JMenuItem("すべて選択"); private JEditorPane html = new JEditorPane(); private List pageList = new ArrayList(); private int pageIndex; private JLabel statusBar = new JLabel(); private JFileChooser openFileChooser = new JFileChooser(); public HW97() { fileOpen.addActionListener(this); fileAllClose.addActionListener(this); fileClose.addActionListener(this); fileExit.addActionListener(this); editCut.addActionListener(this); editSelect.addActionListener(this);
448 :
>>407 ブラウザ その3 :2005/07/18(月) 14:55:16
menuBar.setBackground(new Color(240, 240, 255)); mn1.setOpaque(false); mn2.setOpaque(false); menuBar.add(mn1); menuBar.add(mn2); mn1.add(fileOpen); mn1.addSeparator(); mn1.add(fileClose); mn1.add(fileAllClose); mn1.addSeparator(); mn1.add(fileExit); mn2.add(editCut); mn2.add(editSelect); ActionListener al = new ActionListener() { public void actionPerformed(ActionEvent e) { if (e.getSource().equals(nextBtn)) { if (pageIndex >= pageList.size()) { return; } ++pageIndex; } else { if (pageIndex <= 0) { return; } --pageIndex; } String path = pageList.get(pageIndex).toString(); addDocument(path, false);
449 :
:>>407 ブラウザ その4 :2005/07/18(月) 14:56:01
if (pageIndex > 0) { prevBtn.setEnabled(true); } else { prevBtn.setEnabled(false); } if (pageIndex < pageList.size() - 1) { nextBtn.setEnabled(true); } else { nextBtn.setEnabled(false); } } }; prevBtn.addActionListener(al); prevBtn.setEnabled(false); nextBtn.addActionListener(al); nextBtn.setEnabled(false); moveBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (urlCbox.getSelectedItem() != null) { addDocument(urlCbox.getSelectedItem().toString(), true); } } });
450 :
>>407 ブラウザ その5 :2005/07/18(月) 14:56:58
urlCbox.setEditable(true); JPanel panel1 = new JPanel(new BorderLayout()); panel1.setOpaque(false); panel1.add(urlCbox); panel1.add(moveBtn, BorderLayout.EAST); tb.setFloatable(false); tb.setBorder(BorderFactory.createEtchedBorder()); tb.setBackground(new Color(210, 210, 240)); tb.add(prevBtn); tb.add(nextBtn); tb.add(panel1); html.setContentType("text/html"); html.setEditable(false); html.addHyperlinkListener(this); JScrollPane scroll = new JScrollPane(html); scroll.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createLineBorder(new Color(160, 160, 200), 4), BorderFactory.createEtchedBorder())); statusBar.setPreferredSize(new Dimension(0, 28)); statusBar.setBorder(BorderFactory.createLineBorder(Color.black)); statusBar.setOpaque(true); statusBar.setBackground(new Color(230, 230, 250)); setJMenuBar(menuBar); getContentPane().add(tb, BorderLayout.NORTH); getContentPane().add(scroll, BorderLayout.CENTER); getContentPane().add(statusBar, BorderLayout.SOUTH); pageList.add(urlCbox.getSelectedItem().toString()); addDocument(urlCbox.getSelectedItem().toString(), false); }
451 :
>>407 ブラウザ その6 :2005/07/18(月) 15:14:56
public void addDocument(String path, boolean isNew) { try { try { URL url = new URL(path); html.setPage(url); } catch (MalformedURLException ex) { File file = new File(path); InputStream in = new FileInputStream(file); HTMLDocument hdoc = new HTMLDocument(); html.read(in, hdoc); html.setDocument(hdoc); } } catch (ChangedCharSetException ex) { html.setText("キャラクターセット不適合により\n" + "このドキュメントの表示に失敗しました"); System.out.println(ex); } catch (Exception ex) { html.setText("読み込み中にエラーが発生しました"); System.out.println(ex); } setTitle(path); urlCbox.setSelectedItem(path); if (!isNew) { return; }
452 :
>>407 ブラウザ その7 :2005/07/18(月) 15:15:29
++pageIndex; if (pageIndex >= pageList.size()) { pageList.add(path); } else { pageList.set(pageIndex, path); if (pageIndex < pageList.size() - 1) { pageList.subList(pageIndex + 1, pageList.size()).clear(); } } prevBtn.setEnabled(true); nextBtn.setEnabled(false); addURLToComboBox(path); } public void addURLToComboBox(String url) { for (int i = 0; i < urlCbox.getModel().getSize(); i++) { if (urlCbox.getModel().getElementAt(i).equals(url)) { return; } } urlCbox.addItem(url); } public void closeDocument(int index) { // no operation }
453 :
:>>407 ブラウザ その8 :2005/07/18(月) 15:16:02
public void closeAllDocument() { // no operation } public void cut() { html.cut(); } public void selectAll() { html.selectAll(); } public void actionPerformed(ActionEvent e) { Object src = e.getSource(); if (src == fileOpen) { if (openFileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) { String path = openFileChooser.getSelectedFile().getPath(); addDocument(path, true); } } else if (src == fileClose) { closeDocument(0); } else if (src == fileAllClose) { closeAllDocument(); } else if (src == fileExit) { dispose(); } else if (src == editCut) { cut(); } else if (src == editSelect) { selectAll(); } }
454 :
>>407 ブラウザ その9 :2005/07/18(月) 15:16:33
public void hyperlinkUpdate(HyperlinkEvent e) { HyperlinkEvent.EventType type = e.getEventType(); if (type.equals(HyperlinkEvent.EventType.ACTIVATED)) { addDocument(e.getDescription(), true); } else if (type.equals(HyperlinkEvent.EventType.ENTERED)){ statusBar.setText(e.getDescription()); } else { statusBar.setText(""); } } }
455 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/18(月) 15:17:57
456 :
442 :2005/07/18(月) 16:59:30
457 :
435 :2005/07/18(月) 18:00:46
458 :
>>440 LetterCount その1 :2005/07/18(月) 18:18:05
import java.io.*; import java.util.*; import java.util.List; import javax.swing.*; public class HW98 { public static void main(String[] args) { String text = JOptionPane.showInputDialog(null, "文字を入力してください", "文字の入力", JOptionPane.INFORMATION_MESSAGE); text = text.replaceAll(" +", ""); Map map = new TreeMap(); for (int i = 0; i < text.length(); i++) { Character ch = new Character(text.charAt(i)); if (map.containsKey(ch)) { int count = ((Integer) map.get(ch)).intValue(); map.put(ch, new Integer(count + 1)); } else { map.put(ch, new Integer(1)); } }
459 :
:>>440 LetterCount その2 :2005/07/18(月) 18:18:36
List list = new Vector(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); char ch = ((Character) entry.getKey()).charValue(); int count = ((Integer) entry.getValue()).intValue(); LetterCount lc = new LetterCount(ch, count); list.add(lc); } Collections.sort(list, new Comparator() { public int compare(Object src, Object dst) { LetterCount lc1 = (LetterCount) src; LetterCount lc2 = (LetterCount) dst; if (lc1.getCount() < lc2.getCount()) { return +1; } else if (lc1.getCount() > lc2.getCount()) { return -1; } else { return 0; } } });
460 :
>>440 LetterCount その3 :2005/07/18(月) 18:19:10
StringBuffer sb = new StringBuffer("letter freq\n"); for (int i = 0; i < list.size(); i++) { LetterCount lc = (LetterCount) list.get(i); sb.append(lc.getLetter() + " " + lc.getCount() + "\n"); } try { FileWriter fw = new FileWriter("letter.txt"); BufferedWriter bw = new BufferedWriter(fw); fw.write(sb.toString()); fw.close(); JOptionPane.showMessageDialog(null, "以下のテキストをletter.txtに書き込みました\n" + sb.toString()); } catch (Exception e) { JOptionPane.showMessageDialog(null, "ファイルエラーが発生しました"); } } }
461 :
:>>440 LetterCount その4 :2005/07/18(月) 18:19:35
class LetterCount { private char letter; private int count; public LetterCount(char ltr, int cnt) { letter = ltr; count = cnt; } public void setLetter(char ltr){ letter = ltr; } public void setCount(int cnt){ count = cnt; } public char getLetter(){ return letter; } public int getCount(){ return count; } public String toString(){ return "Letter:" + letter + "\nCount:" + count; } }
462 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/18(月) 18:22:43
>>440 文字入力後は、
letter freq
a 5
b 3
c 1
と、結果メッセージが表示され、このメッセージがletter.txtに
書き込まれます
すみません、質問ですがjavaのVSMコマンドはwindowsでも実行できますか?
>463 質問スレ行ってください。
465 :
418 :2005/07/18(月) 20:49:21
>>418 の問題はやはり無理&めんどくさいのでしょうか・・・。
なんとか自力でやろうとしても何やってんのか全然わからないのですが・・・。
466 :
デフォルトの名無しさん :2005/07/18(月) 20:55:02
いや、ちょっとあまりにソースコードの規模が大きいですね。。。 読んで理解するのも一苦労です。。。 これは、一冊の参考書のサンプルソースですから、本があれば理解も早いですけど 流石にそこまでは・・・
>467 >77
469 :
デフォルトの名無しさん :2005/07/19(火) 00:18:11
>>467 あるプログラムコードを、オリジナルマシン語コードに変換するコンパイラ
のプログラムという事は分かりますが、
そのマシン語の仕様と、Operators、Symbol、Type の定数インターフェス
も示してくれないと回答できかねます。。。
470 :
デフォルトの名無しさん :2005/07/19(火) 00:20:27
>>467 あるプログラムコードを、あるアセンブラコードに変換するコンパイラ
のソースという事は分かりますが、
そのアセンブラの仕様と、Operators、Symbol、Type の定数インターフェス
も示してくれないと回答できかねます。。。
最近、字句解析とかコンパイラ作成とかの課題をよく見るけど、流行ってるのかなあ?
472 :
デフォルトの名無しさん :2005/07/19(火) 00:26:09
いや、コンパイラの作成は、大昔からある大学恒例の授業なんだよ。 しかし、もう現在の現場ではさほど役立たない。 基礎力を付けるにはいいのだけど
>472 ふーん。でもJavaでやる意味あるのかなあ。
javaは勉強にはいいんじゃないかな?
475 :
デフォルトの名無しさん :2005/07/19(火) 02:33:34
【Java 歴】 3週間 【 種別 】 丸投げです 【 備考 】 java1.4 【 課題 】 データベース(MYSQL)を操作するGUIを作れと言われたんですが、 下のようなSQL文を作りデータベースに登録しているのですが、 これをSWINGの画面上でデータを表示し(nameのデータを表示)、 自由にコンポーネントを使いデータを追加したり削除したり できるようにしろと課題を出されました。 お願いします!!!!!! create table Data( idint auto_increment primary key, name varchar(500), address varchar(500) ); insert into Data values(null,'??????','?????'); 【 期限 】 水曜夜まで
477 :
デフォルトの名無しさん :2005/07/19(火) 10:32:26
課題なんですがまったくわかりません・・・。 助けてください>< 第1のコマンド引数(1文字とする)で与えられた文字が、第2のコマンド引数に何個含まれているかを求めるアプリケーション CountCharを作成しなさい。 例)以下のように、実行すると "baabaa"の中には、四つの a が含まれているので、4を表示する。 Q:\> java CountChar a baabaa 4 Q:\>
>>477 /**
* 学校で与えられた課題.
* @version わかんない
*/
public final class CountChar {
/**
* コンストラクタは使っちゃだめ.
* @since わかんない
*/
private CountChar{}
/**
* 第一引数の文字数を表示する.
* @param 第一引数に文字一つ、第二引数に適当な文字列
* @since わかんない
*/
public static void main(final String[] 2ちゃんねるで質問しました){
char c = 2ちゃんねるで質問しました[0].charAt(0);
String str = 2ちゃんねるで質問しました[1];
int counter = 0;
for(int i = 0; i < str.length(); i++){
if(c == str.charAt(i)){
counter++;
}
}
System.out.println(counter);
}
}
//これをそのままコピーして大学にそのまま提出しなさい。
//そうすればあなたは正直者として高く評価されるでしょう。
>>475 難易度高いぞ。
INSERT, DELETE, UPDATEのほかに
SELECTも必要か?
SELECTはただSELECT * FROM DATA;
とするだけでよろしいか?
まず、MYSQLのドライバはインストールしたか?
JDBCってなんだかわかるか?
Swingってなんだかわかるか?
>>473 JavaCCのスレッドがあったと思ったけど、スレ主によれば
JavaCCは従来のコンパイラコンパイラに比べ非常に高機能で優れものなんだそうだ。
481 :
デフォルトの名無しさん :2005/07/19(火) 10:51:34
482 :
デフォルトの名無しさん :2005/07/19(火) 10:59:26
>>479 MYSQLからデータを取得してJlistに表示するところまでいきました。
でもここから死にました。追加や削除ができなくて。
難易度高いんですか?? やっやばい!でもお願いします!!
>>482 なんだ、できるんじゃないか。
つーことはJDBCも使いこなせるってことだな。
おまいのレベルでもどうにかなるかと思われ。
INSERTやDELETEができない?
意味がわからん。エラーが出たのか?
それともやりかたがわからないのか、どっちだ?
>>481 ほんとにそのまま出したのか?
相手はホントに大学教員か?
486 :
デフォルトの名無しさん :2005/07/19(火) 11:16:46
>>485 相手は教員です。
しかし、プログラムをコンパイルできなかったので
やり直しなさいと返事が返ってきました・・・。
487 :
デフォルトの名無しさん :2005/07/19(火) 11:28:40
はじめまして。質問です。 JSPファイルで、JavaScriptの関数で得た戻り値(JavaScriptの変数値)を Javaの変数( <% int appnum; %> )に代入したいのですがうまく いきません。知っておられる方がいましたら教えて下さい。 よろしくお願いします。
>>487 順番をよく考えろ。
1 jspがコンパイルされたあと実行されて出力される。
2 HTMLとしてブラウザに表示
3. ブラウザがJavaScriptを実行して値が決まる
489 :
デフォルトの名無しさん :2005/07/19(火) 11:54:16
>>484 連休中やってたんですが、自分がSWINGで間違っているのか?
MYSQLで間違っている(たぶん二つとも間違っているはず)
のかすら、表示までは少し考えればできたんですが、
解からなくなってしまいもうここは神さまに
助けてもらう以外ないと思い書き込みました!助けてください(泣)
490 :
デフォルトの名無しさん :2005/07/19(火) 12:12:44
閉じるボタンを作って、窓を閉じるアプリケーションってどうやって つくればいいんでしょうか・・・ 教えてください
491 :
デフォルトの名無しさん :2005/07/19(火) 12:34:15
円(Circle)や正方形(Square)クラスを参考にして、三角形(Triangle)とひし形(Diamond)といった図形のクラスを、Figureクラスの子クラス(サブクラス)として、作りなさい。 また、それらを適当に描画するように、アプレットも作成すること。
492 :
デフォルトの名無しさん :2005/07/19(火) 12:58:25
mport java.awt.*; public class Mado4 extends Panel{ public void paint(Graphics g){ g.drawString("Mado Mado", 50, 80); } public void init(){ Button b = new Button("EXIT"); add(b); } public void start(){ } static public void main(String args[]){ Frame f =new Frame("Mado4's window"); Mado4 m =new Mado4(); m.init(); f.add(m, "Center"); f.setSize(200,150); f.setVisible(true); m.start(); } } に閉じる機能をつけるにはどうすればいいんでしょう?
493 :
>>476 アルバム その1 :2005/07/19(火) 13:10:38
import java.awt.*; import java.io.*; import java.util.*; import java.util.List; import java.awt.event.*; import javax.swing.*; import javax.swing.border.Border; import java.awt.image.*; public class HW100 extends JFrame { static final int TW = 120, TH = 120; public static void main(String args[]) { JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { new HW100(fc.getSelectedFile()); } } HW100(File imgDir) { File[] filelist = readfile(imgDir.getPath()); //画像リスト読み込み Toolkit tk = Toolkit.getDefaultToolkit(); ImageObserver obs = new ImageObserver() { public synchronized boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) { if (infoflags == ImageObserver.ALLBITS) { this.notifyAll(); } return true; } }; List iconList = new ArrayList();
494 :
>>476 アルバム その2 :2005/07/19(火) 13:11:12
for (int i = 0; i < filelist.length; i++) { Image img = tk.createImage(filelist[i].getPath()); img.getWidth(obs); synchronized (obs) { try { obs.wait(); } catch (InterruptedException e) { // no operation } } int w = img.getWidth(null); int h = img.getHeight(null); int nw = 0, nh = 0; if (w >= h) { nw = TW; nh = (int) (((double) h / w) * TH); } else { nh = TH; nw = (int) (((double) w / h) * TW); } ImageFilter filter = new ReplicateScaleFilter(nw, nh); ImageProducer pdc = new FilteredImageSource(img.getSource(), filter); ImageIcon ic = new ImageIcon(tk.createImage(pdc)); ic.setDescription(filelist[i].getPath()); iconList.add(ic); System.out.println(filelist.length + "枚中" + i + "枚目の画像をロードしました"); }
495 :
:>>476 アルバム その3 :2005/07/19(火) 13:11:47
final JList jlist = new JList(iconList.toArray()); jlist.setLayoutOrientation(JList.HORIZONTAL_WRAP); jlist.setVisibleRowCount(0); jlist.setFixedCellWidth(TW + 16); jlist.setFixedCellHeight(TH + 16); jlist.setCellRenderer(new DefaultListCellRenderer() { JLabel label = new JLabel(); Border bd = BorderFactory.createEmptyBorder(16, 16, 16, 16); Border selbd = BorderFactory.createCompoundBorder( BorderFactory.createLineBorder(Color.blue, 4), BorderFactory.createEmptyBorder(12, 12, 12, 12)); { label.setHorizontalAlignment(JLabel.CENTER); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { label.setIcon((ImageIcon) value); if (isSelected) { label.setBorder(selbd); } else { label.setBorder(bd); } return label; } });
496 :
>>476 アルバム その4 :2005/07/19(火) 13:12:26
final JDialog imgWnd = new JDialog(this); final JLabel imgLabel = new JLabel(); imgWnd.getContentPane().add(new JScrollPane(imgLabel)); imgWnd.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); jlist.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() <= 1 || jlist.getSelectedValue() == null) { return; } ImageIcon icon = (ImageIcon) jlist.getSelectedValue(); String imgfile = icon.getDescription(); Image image = Toolkit.getDefaultToolkit().createImage(imgfile); imgLabel.setIcon(new ImageIcon(image)); imgWnd.pack(); imgWnd.validate(); imgWnd.setVisible(true); } }); getContentPane().add(new JScrollPane(jlist)); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setExtendedState(JFrame.MAXIMIZED_BOTH); setVisible(true); }
497 :
:>>476 アルバム その5 :2005/07/19(火) 13:12:56
File[] readfile(String dirname) { ArrayList imgfileList = new ArrayList(); File[] imgfile; File dir = new File(dirname); imgfile = dir.listFiles(); for (int i = 0; i < imgfile.length; i++) { String name = imgfile[i].getName(); if (name.toLowerCase().endsWith(".jpg") || name.toLowerCase().endsWith(".gif") || name.toLowerCase().endsWith(".jpeg")) { imgfileList.add(imgfile[i]); } } return (File[]) imgfileList.toArray(new File[0]); } }
498 :
342 :2005/07/19(火) 13:34:40
すいません、どなたか手助けしていただけませんでしょうか?
499 :
342 :2005/07/19(火) 13:38:35
名前ミスしました
500 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/19(火) 13:39:05
>>476 初めにファイルダイアログが出るので、それで画像ファイル群のフォルダを
選んでください。選ぶと、そのフォルダの画像を全部ロードします。
ロードには時間がかかります。画像のサムネイルを表示します。
サムネイルをダブルクリックうすろt拡大表示されます。
501 :
457 :2005/07/19(火) 13:40:56
342
502 :
457 :2005/07/19(火) 13:44:01
スレ汚しすみません(T-T) 342、435、457は同一人物です
503 :
476 :2005/07/19(火) 14:35:10
>>493-497 >>500 コンパイルしようとしたらこんなエラーが出てしまいます(´;ω;`)
なにぶん初心者なんでエラーの意味が分からんです お助けください。
C:\myjava>javac 2ch.java
2ch.java:9: クラス HW100 は public であり、ファイル HW100.java で宣言しなければ
なりません。
public class HW100 extends JFrame {
^
エラー 1 個
504 :
デフォルトの名無しさん :2005/07/19(火) 14:48:30
>>503 ImageViewer.java のファイル名を HW100.java に変えてください。
又は
ソースコード内の「HW100」を全部「ImageViewer」に変えてください。
ええと・・・今度はこんな文字が出て停止します C:\myjava>java HW100 104枚中0枚目の画像をロードしました 104枚中1枚目の画像をロードしました [停止] 全部ロードしきれてません、なにか画像にでも問題があるのでしょうか? ちなみに全部jpegで104枚程でサイズは2KB〜10KBです
506 :
デフォルトの名無しさん :2005/07/19(火) 15:55:29
フォルダ内の画像の数を減らしてみてください。 おそらくメモリ不足です。 フォルダ内の画像が何枚でも良いバージョンが必要なら、 言ってください
(^^;)あ、じゃぁそのバージョンでお願いします ホント度々申し訳ありません [追加です] ためしに画像を3枚程にして実行してみたら実行はできました しかし画像をダブルクリックしても拡大しません 煤i゜ω゜;) あとフレームは800×640のサイズにして画像がうまく揃って並び、 拡大も800×640のフレームに収まるちょうど良いサイズに拡大するようにお願いしますですm(__m
508 :
デフォルトの名無しさん :2005/07/19(火) 16:29:44
>>507 拡大ってのは、つまりサムネイルを元の画像サイズで表示する事ですよね。
別ウィンドウに元画像が出るはずなのですが・・・
これが出ない訳はないのですが・・・
あと30枚くらいで試してみてください。
そちらのメモリ容量は幾らなのですか?
あぁ、違います、拡大ってのは大きくするって意味です フレームいっぱいに
510 :
デフォルトの名無しさん :2005/07/19(火) 16:52:53
30枚くらいの画像は表示できますか?
あ〜…スイマセン (--;) 講義が始まってしまいまして(今はケータイで書き込んてます) 確認できるのは7時か8時くらいになっちゃいます 本当スイマセンm(__;)m
確認イタシマシタ・・・・。
(゜д゜;)ウォォ!正直凄ぇ!自分の中の完成イメージとクリソツです!!
・・・あ、でも拡大がうまくいってなかった
>>509 のように動作するよう改良お願いします!
因みにちゃんと画像100枚読み込めました。
ってありゃ?(´・ω・`)?
もう一度実行したら
>>505 のようなエラーでまた停止・・・
全てのアプリを終了してやり直しても停止・・・
そんなにメモリを喰うプログラムなんですかねぇ・・・。
515 :
>>509 ブラウザ その1 :2005/07/19(火) 20:21:21
import java.awt.*; import java.awt.image.*; import java.io.*; import java.util.*; import java.util.List; import java.awt.event.*; import javax.swing.*; import javax.swing.border.Border; public class HW100 extends JFrame { static final int THUMB_WIDTH = 140, THUMB_HEIGHT = 140, IMAGE_WIDTH = 800, IMAGE_HEIGHT = 600; public static void main(String args[]) { JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if (fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { fc.setVisible(false); new HW100(fc.getSelectedFile()); } } HW100(File imgDir) { File[] files = readfile(imgDir.getPath()); List iconList = new ArrayList(); for (int i = 0; i < files.length; i++) { Image img = getScaledImage(files[i].getPath(), THUMB_WIDTH, THUMB_HEIGHT); ImageIcon ic = new ImageIcon(img, files[i].getPath()); iconList.add(ic); System.out.println(files.length + "枚中" + i + "枚目の画像をロードしました"); }
516 :
:>>509 ブラウザ その2 :2005/07/19(火) 20:22:07
final JList jlist = new JList(iconList.toArray()); jlist.setLayoutOrientation(JList.HORIZONTAL_WRAP); jlist.setVisibleRowCount(0); jlist.setFixedCellWidth(THUMB_WIDTH + 16); jlist.setFixedCellHeight(THUMB_HEIGHT + 16); jlist.setCellRenderer(new DefaultListCellRenderer() { JLabel label = new JLabel(); Border bd = BorderFactory.createEmptyBorder(16, 16, 16, 16); Border selbd = BorderFactory.createCompoundBorder( BorderFactory.createLineBorder(Color.blue, 4), BorderFactory.createEmptyBorder(12, 12, 12, 12)); { label.setHorizontalAlignment(JLabel.CENTER); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { label.setIcon((ImageIcon) value); if (isSelected) { label.setBorder(selbd); } else { label.setBorder(bd); } return label; } });
517 :
>>509 ブラウザ その3 :2005/07/19(火) 20:22:50
final CardLayout cardL = new CardLayout(); final JPanel baseP = new JPanel(cardL); baseP.setPreferredSize(new Dimension(800, 600)); JScrollPane thumbP = new JScrollPane(jlist); final JLabel imageP = new JLabel(); imageP.setHorizontalAlignment(JLabel.CENTER); baseP.add(thumbP, "thumb"); baseP.add(imageP, "image"); cardL.show(baseP, "thumb"); jlist.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() <= 1 || jlist.getSelectedValue() == null) { return; } ImageIcon icon = (ImageIcon) jlist.getSelectedValue(); String filename = icon.getDescription(); Image img = getScaledImage(filename, IMAGE_WIDTH, IMAGE_HEIGHT); ImageIcon ic = new ImageIcon(img); imageP.setIcon(ic); cardL.show(baseP, "image"); } }); imageP.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { cardL.show(baseP, "thumb"); } });
518 :
:>>509 ブラウザ その4 :2005/07/19(火) 20:23:19
getContentPane().add(baseP); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setResizable(false); setVisible(true); } File[] readfile(String dirname) { ArrayList imgfileList = new ArrayList(); File[] imgfile; File dir = new File(dirname); imgfile = dir.listFiles(); for (int i = 0; i < imgfile.length; i++) { String name = imgfile[i].getName(); if (name.toLowerCase().endsWith(".jpg") || name.toLowerCase().endsWith(".gif") || name.toLowerCase().endsWith(".jpeg")) { imgfileList.add(imgfile[i]); } } return (File[]) imgfileList.toArray(new File[0]); }
519 :
::>>509 ブラウザ その5 :2005/07/19(火) 20:24:45
Image getScaledImage(String filename, int width, int height) { ImageObserver obs = new ImageObserver() { public synchronized boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h) { if (infoflags == ImageObserver.ALLBITS) { this.notifyAll(); } return true; } }; Image img = Toolkit.getDefaultToolkit().createImage(filename); img.getWidth(obs); synchronized (obs) { try { obs.wait(); } catch (InterruptedException e) { } } int w = img.getWidth(null); int h = img.getHeight(null); int nw = 0, nh = 0; if (w >= h) { nw = width; nh = (int) (((double) h / w) * height); } else { nh = height; nw = (int) (((double) w / h) * width); } return img.getScaledInstance(nw, nh, Image.SCALE_FAST); } }
520 :
デフォルトの名無しさん :2005/07/19(火) 20:32:16
ワタクシの環境では一応動くのですが・・・ 画像のロードに ToolKit を使ってる関係かもしれません。 元のコードが、ToolKit を使ってたので、そのまま ToolKit にしました。 一からなら素直に ImageIO クラスを使ったのですが・・・
>>515-519 うはぁ!完璧っス!エラーも出ないっス!
orz 心から感謝致します ありがとうございました
今日は回転早いなー。チャット状態じゃん。 以下俺様用メモ TODO >435=>457=>512(!=>342) // 神待ち >475 // 状況が読み取れません。。 >477 >490 質問が曖昧です。。 >491
>477 今度からテンプレ(>162)使ってくれい。 // CountChar.java public class CountChar { public static void main(String[] args) { char c = args[0].charAt(0); String s = args[1]; int count = 0; for( int i=0; i<s.length(); i++ ) { if( c == s.charAt(i) ) count++; } System.out.println( count ); } } 入力エラーなどは全く考慮してません。
>490 今度からテンプレ(>162)使ってくれい。 // CloseFrame.java import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; public class CloseFrame extends JFrame implements ActionListener { private JButton closeButton; public static void main(String[] args) { CloseFrame self = new CloseFrame(); self.setSize( 200, 200 ); self.setVisible(true); } public CloseFrame() { closeButton = new JButton("閉じる"); closeButton.addActionListener(this); getContentPane().add(closeButton); } public void actionPerformed(ActionEvent ae) { if( ae.getSource() == closeButton ) { System.exit(0); } } }
526 :
475 :2005/07/19(火) 22:03:31
>>522 すみません!!一から作っていただきたいんですが(泣)
527 :
デフォルトの名無しさん :2005/07/19(火) 22:10:52
>458->461 thank you so much.
528 :
512 :2005/07/20(水) 00:16:14
誰かHELP!
529 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/20(水) 00:28:33
どなたかデザインパターンわかる方、1から作っていただきたいのですが。アドバイス、参考ソースでもかまいません。メールお願いします。
531 :
デフォルトの名無しさん :2005/07/20(水) 00:38:55
何を作れというのか・・・
>>531 メールいただけたら光栄です。すいません。
533 :
369 :2005/07/20(水) 01:19:56
>>532 テンプレ準拠でここで問題晒せ。
話はそれからだ。
【Java 歴】 2ヶ月 【 種別 】 丸投げですすいません 【 課題 】 ブラックジャック 【不明点 】 すべて 【 用語 】 JAVA 【 期限 】 できるだけ早めに 【 備考 】独学で勉強中です。Cしかやったことないので全くわかりません。
535 :
デフォルトの名無しさん :2005/07/20(水) 01:58:12
String変数に2005/12/10、2005/7/3などの日付の値が入っています。 2005/7/3などの値は2005-07-03みたく形をYYYY-MM-DDと変換したいのですが どうしたらいいのでしょうか? 当然、日付として不正なものはエラーとさせたいのですが。
>>535 import java.text.*;
public class Q535 {
public static void main(String[] args) {
SimpleDateFormat parser = new SimpleDateFormat("yyyy/M/d");
parser.setLenient(false); // 厳密な解析を行う
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
String date1 = "2005/12/10";
String date2 = "2005/7/3";
String date3 = "2005/2/31"; // 不正な日付
try {
System.out.println(formatter.format(parser.parse(date1)));
System.out.println(formatter.format(parser.parse(date2)));
System.out.println(formatter.format(parser.parse(date3))); // ここでParseException
} catch (ParseException e) {
e.printStackTrace();
}
}
}
>>529 ありがとうございます。動作確認もしました!!
出来がすごいです、コードもしっかり拝見させていただきます(泣)
539 :
デフォルトの名無しさん :2005/07/20(水) 08:15:06
>>536 ありがとうございます。たすかりました。
540 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/20(水) 10:25:57
541 :
課題 :2005/07/20(水) 11:39:46
542 :
課題 :2005/07/20(水) 12:30:22
import java.io.*; public class ReadExample { public static boolean readWord(BufferedReader reader, StringTree tree) throws IOException{ int c; StringTree currentTree = tree; do{ c = reader.read(); if(c < 0) return false; }while(!StringTree.isLetter((char)c)); do{ currentTree = StringTree.append(currentTree, (char)c); c = reader.read(); }while(c >= 0 && StringTree.isLetter((char)c)); return true; } public static void main(String[] args) throws IOException { String fileName = "words.txt"; BufferedReader reader = new BufferedReader(new FileReader(fileName)); StringTree tree = new StringTree(' '); while (readWord(reader, tree)) ; reader.close(); String input = javax.swing.JOptionPane.showInputDialog("Word:"); String result; if (tree.find(input)) result = "found"; else result = "not found"; javax.swing.JOptionPane.showMessageDialog(null, result); System.exit(0); } }
543 :
??U^?e`?Q :2005/07/20(水) 12:35:36
>>542 のつづきです
public class StringTree {
private char letter;
private StringTree[] children;
public StringTree(char c) { letter = c;
children = new StringTree[26]; }
public static int getIndex(char c) {
return toCapital(c) - 'A'; }
public static char toCapital(char c) { if (c >= 'a')
return (char)(c - 'a' + 'A');
else return c; }
public static boolean isLetter(char c) {
return 'A' <= c && c <= 'Z' || 'a' <= c && c <= 'z'; }
public boolean find(String word){
int a = word.length();
int[] b = new int[a];
int[] c = new int[a];
for(int i = 0;i < a;i++){
b[i] = word.charAt(i) - 'A';
if(0 < b[i] && b[i] < 25){ c[i] =b[i]; }
else c[i] = b[i] - 'a' + 'A'; }
StringTree tree = this;
for(int i = 0;i < a;i++){ if(tree.children[c[i]] == null){ return false; }
tree = tree.children[c[i]]; } return true; }
public static StringTree append(StringTree a , char c){
StringTree child = a.children [getIndex(c)];
if(child == null) { a.children[getIndex(c)] = new StringTree(c);
child = a.children [getIndex(c)]; } return child; } }
すみません課題が後一歩のところで詰まってるので教えてください。今上の二つのクラスで英単語の辞書データーを読み込んで、
その後に単語をうち込むとあるかないか答えてくれるようにはなってます。しかし課題は無かった場合は辞書的に一番近い単語を表示させたいという事なんで
findメソッドあたりの変更が必要なのかなと思うんですが詰まってます。皆さん教えてくださいお願いします。
544 :
>>541 バイオリズム その1 :2005/07/20(水) 14:10:03
import java.util.*; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import javax.swing.*; public class HW102 extends JApplet { static final int rithm23[]={ 0, 26, 51, 73, 88, 97, 99, 94, 81, 63, 39, 13,-13,-39,-63,-81,-94,-99,-97,-88,-73,-51,-26}; static final int rithm28[]={ 0, 22, 43, 62, 78, 90, 97,100, 97, 90, 78, 62, 43, 22, 0,-22,-43,-62,-78,-90, -97,-100,-97,-90,-78,-62,-43,-22}; static final int rithm33[]={ 0, 18, 37, 54, 69, 81, 90, 97, 99, 98, 94, 86, 75, 61, 45, 28, 9, -9,-28,-45, -61,-75,-86,-94,-98,-99,-97,-90,-81,-69,-54,-37,-18}; BufferedImage img = new BufferedImage(400, 380, BufferedImage.TYPE_INT_ARGB); Graphics2D g = img.createGraphics(); public void init() { final JLabel graph = new JLabel(new ImageIcon(img)); graph.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4)); graph.setHorizontalTextPosition(JLabel.CENTER); graph.setHorizontalAlignment(JLabel.CENTER); graph.setFont(new Font("Dialog", 1, 20));
545 :
>>541 バイオリズム その2 :2005/07/20(水) 14:10:41
JPanel box = new JPanel(); box.setLayout(new BoxLayout(box, BoxLayout.Y_AXIS)); box.setOpaque(true); box.setBackground(new Color(220, 220, 250)); box.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(16, 16, 16, 16))); final JTextField[] tfd = new JTextField[6]; String[] name = { "(birth year) y", "(birth month) m", "(birth day) d", "(now year) yy", "(now month) mm", "(now day) dd" }; for (int i = 0; i < tfd.length; i++) { tfd[i] = new JTextField(4); tfd[i].setFont(new Font("Dialog", 0, 15)); JLabel lab = new JLabel(name[i]); lab.setPreferredSize(new Dimension(100, 20)); JPanel pal = new JPanel(); pal.setOpaque(false); pal.add(lab); pal.add(tfd[i]); box.add(pal); box.add(Box.createGlue()); }
546 :
:>>541 バイオリズム その3 :2005/07/20(水) 14:11:14
JButton button = new JButton("OK"); button.setAlignmentX(0.5F); box.add(button); button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { int y = Integer.parseInt(tfd[0].getText()); int m = Integer.parseInt(tfd[1].getText()); int d = Integer.parseInt(tfd[2].getText()); int yy = Integer.parseInt(tfd[3].getText()); int mm = Integer.parseInt(tfd[4].getText()); int dd = Integer.parseInt(tfd[5].getText()); int total = calcDay(y, m, d, yy, mm, dd); drawGraph(50, 150, total, yy, mm, dd); drawLine(50, 150, total); } catch (Exception ex) { drawGraph(50, 150, 0, 0, 0, 0); graph.setText("入力数値が不正です"); graph.repaint(); return; } graph.setText(""); graph.repaint(); } });
547 :
>>541 バイオリズム その4 :2005/07/20(水) 14:11:57
getContentPane().setBackground(new Color(240, 240, 250)); getContentPane().add(box, BorderLayout.WEST); getContentPane().add(graph); ((JComponent) getContentPane()).setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); drawGraph(50, 150, 0, 0, 0, 0); } int calcDay(int y, int m, int d, int yy, int mm, int dd) throws Exception { GregorianCalendar src = new GregorianCalendar(y, m - 1, d); GregorianCalendar dst = new GregorianCalendar(yy, mm - 1, dd); if (src.getTime().compareTo(dst.getTime()) > 0) { throw new Exception(); } int total = 0; while (!src.equals(dst)) { src.add(Calendar.DATE, 1); ++total; } return total; }
548 :
:>>541 バイオリズム その5 :2005/07/20(水) 14:12:35
void drawGraph(int x0, int y0, int total, int yy, int mm, int dd) { g.setColor(Color.white); g.fillRect(0, 0, img.getWidth(), img.getHeight()); g.setColor(Color.black); g.drawLine(x0, y0, x0 + 300, y0); g.drawLine(x0, y0 + 100, x0 + 5, y0 + 100); g.drawString("+100", x0 - 30, y0 - 95); g.drawLine(x0, y0 - 100, x0 + 5, y0 - 100); g.drawString("-100", x0 - 30, y0 + 105); g.drawString(" 0", x0 - 30, y0 + 5); g.drawLine(x0, y0 - 120, x0, y0 + 120); g.drawString(yy + "/" + mm + "/" + dd, x0 + 2, y0 + 20); g.drawString("(+" + total + ")", x0 + 2, y0 + 40); for (int i = 1; i <= 30; i++) { if (i % 10 == 0) { g.drawLine(x0 + i * 10, y0 - 120, x0 + i * 10, y0 + 120); g.drawString("+" + i, x0 + i * 10 + 2, y0 + 20); g.drawString("(+" + (total+i) + ")", x0 + i * 10 + 2, y0 + 40); } else { g.drawLine(x0 + i * 10, y0 - 2, x0 + i * 10, y0); } }
549 :
まんちょ :2005/07/20(水) 14:20:37
テキストファイルに書かれている文字を1行づつEnterキーを押しながら 読み込んでいきたいのですが、JAVAで可能ですか?可能な場合は やり方などどんなことでもいいので是非教えて下さい。お願いします。
550 :
>>541 バイオリズム その6 :2005/07/20(水) 14:30:32
g.setColor(Color.black); g.drawString("BIORHYTHM", x0 + 110, y0 + 140); g.setColor(Color.red); g.drawString("Physical Cycle", x0 + 20, y0 + 160); g.setColor(Color.green); g.drawString("Emotional Cycle", x0 + 20, y0 + 180); g.setColor(Color.blue); g.drawString("Intellectual Cycle", x0 + 20,y0 + 200); } void drawLine(int x0, int y0, int total) { int xnow, ynow; g.setColor(Color.black); g.drawString("Total Days: " + total, x0 + 20,y0 + 220); g.setColor(Color.red); xnow = x0; ynow = y0 - rithm23[total % 23]; g.fillRect(xnow, ynow, 5, 5); for (int i = 1; i <= 30; i++) { xnow = x0 + i * 10; ynow = y0 - rithm23[(total + i) % 23]; g.fillRect(xnow, ynow, 5, 5); }
551 :
:>>541 バイオリズム その7 :2005/07/20(水) 14:31:04
g.setColor(Color.green); xnow = x0; ynow = y0 - rithm28[total % 28]; g.fillRect(xnow, ynow, 5, 5); for (int i = 1; i <= 30; i++) { xnow = x0 + i * 10; ynow = y0-rithm28[(total + i) % 28]; g.fillRect(xnow, ynow, 5, 5); } g.setColor(Color.blue); xnow = x0; ynow = y0 - rithm33[total % 33]; g.fillRect(xnow, ynow, 5, 5); for (int i = 1; i <= 30; i++) { xnow = x0 + i * 10; ynow = y0-rithm33[(total + i) % 33]; g.fillRect(xnow, ynow, 5, 5); } } }
552 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/20(水) 14:31:47
>>541 アプレットサイズは「640×400」にしてください
ザイン帝國軍帥さん、ありがとうございます。デザインパターンでイクリプスを使ってブラックジャックをつくれるのですか?もしもできるのならば今後の勉強のために参考にしたいのですが。
554 :
デフォルトの名無しさん :2005/07/20(水) 15:30:18
553ですが、自分でやってみます。たびたびすいません。
556 :
デフォルトの名無しさん :2005/07/20(水) 17:17:38
見落としたぜ
558 :
490 :2005/07/20(水) 18:37:21
>>525 助かりました!ほんとに感謝してますm(_)m
>556
そういう時は
>>542-543 と書くといい。
動作の違いはhtmlもしくは2chビューアのポップアップの仕方を参照。
560 :
>>543 辞書 その1 :2005/07/20(水) 22:01:49
import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; public class HW99 { static Set dic = new TreeSet(); public static void main(String[] args) { try { String fileName = "words.txt"; BufferedReader reader = new BufferedReader(new FileReader(fileName)); String line = null; while ((line = reader.readLine()) != null) { if (line.length() == 0) { continue; } dic.add(line.toLowerCase()); } reader.close(); } catch (Exception e) { System.out.println("辞書フィアル words.txt のロードに失敗しました"); System.exit(0); }
561 :
:>>543 辞書 その2 :2005/07/20(水) 22:04:34
JPanel panel = new JPanel(new BorderLayout()); panel.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(4, 4, 4, 4))); final JTextField tfd = new JTextField(20); tfd.setFont(new Font("Dialog", 0, 15)); tfd.setBorder(BorderFactory.createLineBorder(Color.black)); JButton btn = new JButton("検索する"); panel.add(tfd); panel.add(btn, BorderLayout.EAST); final JTextArea tarea = new JTextArea(8,1); tarea.setFont(new Font("Dialog", 0, 15)); tarea.setEditable(false); tarea.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createLineBorder(Color.lightGray, 8), BorderFactory.createLoweredBevelBorder())); btn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (tfd.getText() == null || tfd.getText().length() == 0) { return; } String text = find(tfd.getText()); tarea.setText(text); } });
562 :
>>543 辞書 その3 :2005/07/20(水) 22:05:05
JFrame frame = new JFrame(); frame.getContentPane().add(tarea); frame.getContentPane().add(panel, BorderLayout.NORTH); frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } static String find(String input) { if (dic.contains(input.toLowerCase())) { return "単語" + input + "は辞書に存在します"; } class EditDist implements Comparable { String word; int cost; EditDist(String word, int cost) { this.word = word; this.cost = cost; } public int compareTo(Object o) { return new Integer(cost).compareTo(new Integer(((EditDist) o).cost)); } } Set edSet = new TreeSet(); Iterator it = dic.iterator();
563 :
:>>543 辞書 その4 :2005/07/20(水) 22:05:35
while (it.hasNext()) { String word = (String) it.next(); int cost = getEditDistance(input, word); if (cost != -1) { edSet.add(new EditDist(word, cost)); } } if (edSet.isEmpty()) { return "単語" + input + "は辞書に存在しません\n" + "それに近い単語も存在しません"; } StringBuffer sb = new StringBuffer( "単語" + input + "は辞書に存在しません\n" + "それに最も近い単語群を表示します\n\n"); it = edSet.iterator(); int count = 0; while (it.hasNext() && count < 5) { EditDist ec = (EditDist) it.next(); sb.append((count + 1) + "位:" + ec.word + ":編集距離:" + ec.cost + "\n"); ++count; } return sb.toString(); }
564 :
デフォルトの名無しさん :2005/07/20(水) 22:06:07
>>549 import java.io.*;
import java.util.*;
class sample1{
ArrayList data;
public static void main(String arge[]){
if(arge[0].length()>0){
sample1 sm = new sample1();
sm.reader(arge[0]);
if(sm.data != null){
for(int i = 0;i<sm.data.size();){
try{
if(System.in.read() != 13) continue;
System.out.print((String)sm.data.get(i++));
}catch(IOException e){}
}}}}
void reader(String filename){
try{
BufferedReader r = new BufferedReader(new FileReader(filename));
data = new ArrayList();
String s ;
while((s = r.readLine())!=null){
data.add(s);
}
r.close();
}catch(IOException e){
System.out.println("Error:" + e);
}}}
565 :
::>>543 辞書 その5 :2005/07/20(水) 22:06:07
static int getEditDistance(String src, String dest) { int[][] map = new int[src.length()][dest.length()]; char[] srcC = src.toCharArray(); char[] destC = dest.toCharArray(); int max = (src.length() >= dest.length()) ? src.length() : dest.length(); for (int x = 0; x < map.length; x++) { for (int y = 0; y < map[x].length; y++) { if (x == 0 && y == 0) { map[x][y] = (srcC[x] == destC[y]) ? 0 : 1; continue; } int cost = Integer.MAX_VALUE; if (x - 1 >= 0 && y - 1 >= 0) { cost = map[x - 1][y - 1]; } if (x - 1 >= 0) { cost = (map[x - 1][y] < cost) ? map[x - 1][y] : cost; } if (y - 1 >= 0) { cost = (map[x][y - 1] < cost) ? map[x][y - 1] : cost; } map[x][y] = (srcC[x] == destC[y]) ? cost + 0 : cost + 1; } } if (map[src.length() - 1][dest.length() - 1] >= max) { return -1; } return map[src.length() - 1][dest.length() - 1]; } }
566 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/20(水) 22:12:31
>>543 課題の規模から考えると、単語の照合はコレクションクラスで行い、
最も近い単語を求めるのは、二次元配列を用いたマップ法による
編集距離の解法でするのが、一番適してると思われます。
words.txt には、
pen
desk
button
みたいに、単語を改行して記入してください。
それぞれの単語が辞書に登録されます。
>560-565 イチャモンつけるようで申し訳ないが、 課題は一から書くんじゃなくて>542-543のソースを「修正」することじゃないか? あと「辞書ファイル」って言ってるぐらいだから words.txtの単語は辞書順に並んでると想定していいんでないかい?
568 :
543 :2005/07/20(水) 23:06:56
皆さんありがとうございます。一から書いていただいてもぜんぜん結構です。 一応自分でかなり努力したんでそれを使ってもらえたらうれしかったですが… ちゃんと見直してちゃんと理解して提出したいと思います。
569 :
デフォルトの名無しさん :2005/07/21(木) 00:32:59
分からないので質問です。 まず、次のプログラムはどのようにプリントされるでしょうか。 public class ToStringTest { public static void main(String argv[]) { A a = new A(); System.out.println(a); } } class A { } また、次のプログラムはどのようにプリントされるでしょうか。 public class ToStringTest { public static void main(String argv[]) { A a = new A(); System.out.println(a); } } class A { public String toString() { return "Hey, I'm class A"; } } 変更したのはクラスAのプログラムです。 System.out.printlnのプログラムはまったく変更していないのに、 System.out.printlnの動作が変わりました。これはなぜでしょうか? System.out.println にオブジェクトを渡すと、そのオブジェクトのtoStringメソッドを呼び出して、文字列に直してプリントします。 toStringはObjectクラスで定義されているので、どのオブジェクトでも使えます。
>>569 前半は自分で実行してみろ。AのスーパークラスであるObjectのtoString()が呼ばれている。
後半はSystem.out.println(Object)が行っている処理は何も変わっていない。
オーバーライドされてAのtoString()が返す値が変わったから出力が変わっただけだろ。
何がわからないのかがわからないのだが・・・・
>>567-568 言い訳するようですが、StringTree による文字列木(というのか知りませんが)
の構築は、「最も近い単語を見つける」機能のケースには適当でないと
思いました。
自分も、LZ法系の圧縮プログラム作成時にこの文字列木を使いました。
現在のポインタ以降の文字列が、今までの文字列列内のどこかの部分と
一致するかを調べるケースです。
こういう単語の照合では有効ですが、最近似単語を求めるケースで
文字列木を使うのは適当でないと思ったので(自分はそのアルゴリズムを
知らない)、仕方なく全面的に変えてしまう事にしました。
【Java 歴】 3ヶ月 【 種別 】 丸投げです、すいません。 【 課題 】 3枚の手札でミニポーカーゲームを作る。カードは全部で18枚とする。 カードはイメージファイルで表示させる(赤・青・黄の背景色に1〜6まで) 表示された各手札の下にチェックボックスを設定し、ボタンを押した時チェックを入れたカードが入れ替わるようにする ボタンを押した後同じ数字が2枚そろえば1点、3枚そろえば3点、すべてが同じ色のカードなら2点というふうな点数を表示させる。 【不明点 】 情けなくもすべてが不明('A`)いちおうカードだけは作りました。r,b,yそれぞれ数字.jpgというファイル名にしてます なにをどう組み合わせればいいのか皆目検討がつきません・・・。 【 用語 】 【 期限 】 ついに明日提出期限orz 【 備考 】 助けて神様
>569 試験前の時点でこれが理解できないなら単位は絶対来ないと保証してやる、安心しろ。
>>569 今の時点でこれが理解できないならどう考えてもおまえはプログラムには向いてないことを保証してやる、安心しろ。
煽りじゃないよ。
575 :
まんちょ :2005/07/21(木) 14:00:11
>>564 回答ありがとうございました。しかし、うまく動きませんでした。
実行すると、例外処理が起こったとのことです。
576 :
デフォルトの名無しさん :2005/07/21(木) 14:01:22
下記の図に、1〜10までの数値を一個ずつ入れ、条件を満たすプログラムを作成しなければなりません。(;;) ○ ○ ○ ○ ○ ○ ○ ○ ○ ○ 条件1.下の段の○にはすぐ上にある2つの○の差(絶対値)とする。 (大きな値-小さな値) 条件2.おなじ数値は2度使えない。 どのようなステートメントを使えばいいか全然わかりませんでした。(>▲<) お願いします。m(__)m
577 :
デフォルトの名無しさん :2005/07/21(木) 15:23:08
ピタゴラスの定理を書けといわれました。 どなたかよろしくお願いできますか?
578 :
回答者 :2005/07/21(木) 15:35:55
ピタゴラスの定理
579 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/21(木) 15:44:50
>>579 迅速な仕事どうもありがとうございます!
ちょっと僕にしてはうまくできすぎてるのであやしまれそうですが^^;
581 :
デフォルトの名無しさん :2005/07/21(木) 19:49:19
黄色にすべきところを緑色にしていたので、579のプログラムを修正しました。
582 :
デフォルトの名無しさん :2005/07/21(木) 21:19:03
>>576 その問題、純粋にパズルとしてやってみたけど、絶対に解けない気が・・・
1〜10の数字で本当に当てはまるのか?
パズルマニアの人教えてくれ〜。
583 :
デフォルトの名無しさん :2005/07/21(木) 21:52:30
パズルマニアじゃなくプログラマだが 6 1 10 8 5 9 2 4 7 3 6 10 1 8 4 9 7 5 2 3 8 3 10 9 5 7 1 2 6 4 8 10 3 9 2 7 6 5 1 4
584 :
>>576 10個の○ その1 :2005/07/22(金) 03:03:53
import java.util.*; public class HW104 { static int[] nodeNumbers = { 0, 1, 3, 6 }; public static void main(String[] args) { List ans = new ArrayList(); for (int i = 1; i <= 10; i++) { Node node = new Node(); node.number[0] = i; node.usedNums.add(new Integer(i)); ans.add(node); } int max = ans.size(); for (int i = 0; i < max; i++) { level((Node) ans.remove(0), ans, 1, 0, new ArrayList()); } max = ans.size(); for (int i = 0; i < max; i++) { level((Node) ans.remove(0), ans, 2, 0, new ArrayList()); } max = ans.size(); for (int i = 0; i < max; i++) { level((Node) ans.remove(0), ans, 3, 0, new ArrayList()); }
585 :
>>576 10個の○ その2 :2005/07/22(金) 03:05:00
System.out.println("見つかった答え:" + ans.size() + "個\n"); for (int i = 0; i < ans.size(); i++) { Node node = (Node) ans.get(i); System.out.println(node.number[6] + " " + node.number[7] + " " + node.number[8] + " " + node.number[9]); System.out.println("" + node.number[3] + " " + node.number[4] + " " + node.number[5]); System.out.println("" + node.number[1] + " " + node.number[2]); System.out.println("" + node.number[0]); System.out.println(); } } static void level(Node node, List ans, int max, int lev, List pmNums) { loop: for (int a = 1; a <= 10; a++) { if (node.usedNums.contains(new Integer(a))) { continue; } if (pmNums.contains(new Integer(a))) { continue; } List nums = new ArrayList(pmNums); nums.add(new Integer(a)); if (lev >= max) { int nodeNum = nodeNumbers[lev - 1]; for (int i = 0; i < max; i++) { int val1 = ((Integer) nums.get(i)).intValue(); int val2 = ((Integer) nums.get(i + 1)).intValue(); if (node.number[nodeNum + i] != Math.abs(val1 - val2)) { continue loop; } }
586 :
>>576 10個の○ その3 :2005/07/22(金) 03:06:27
nodeNum = nodeNumbers[lev]; Node obj = (Node) node.clone(); for (int i = 0; i <= max; i++) { int num = ((Integer) nums.get(i)).intValue(); obj.number[nodeNum + i] = num; obj.usedNums.add(new Integer(num)); } ans.add(obj); } else { level(node, ans, max, lev + 1, nums); } } } } class Node implements Cloneable { int[] number = new int[10]; Set usedNums = new TreeSet(); public Object clone() { Node node = new Node(); System.arraycopy(number, 0, node.number, 0, number.length); node.usedNums = new TreeSet(usedNums); return node; } }
587 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/22(金) 03:07:58
>>576 総当りの単純で非効率的なアルゴリズムですが・・・
588 :
デフォルトの名無しさん :2005/07/22(金) 08:06:30
今まで使ったことのあるクラスで例外を発生させるクラスを述べよって宿題なんだけど、どうやって調べればいいの?
590 :
デフォルトの名無しさん :2005/07/22(金) 09:47:17
おーい、質問・相談スレが1000逝ったのに次スレたてられてないよ。 うちのホストからはたてられなかったので誰か立ててください。 スレタイは 【初心者】Java質問・相談スレッド69【大歓迎】 以下テンプレ↓
591 :
デフォルトの名無しさん :2005/07/22(金) 09:48:19
592 :
関連スレ :2005/07/22(金) 09:49:28
>>592 はそっちで張っておいてくれるとありがたい。
夏休み期間中は宿題スレを1に入れてもいいかもね。
どんだけ宿題丸投げな奴が相談スレに来るかだけど。
595 :
590 :2005/07/22(金) 10:46:36
>>593 乙です。
>>592 は改めて質問スレに貼っておきました。
名前欄「テンプレ1」「テンプレ2」とかにすればよかったですね。失礼しました。
また、あのソースコードコピペ野朗が現れたのか。。。
597 :
デフォルトの名無しさん :2005/07/22(金) 11:00:54
576 フローチャートわかりますか?
598 :
?543 :2005/07/22(金) 13:12:09
>>543 ですが、動くのは確認できましたがいくつか問題が。。。一つは我々には読み込むべきtextが指定されているのですが、
どうもひと単語一行という訳ではなくスペース一つあけてひたすらランダムに羅列されており、どうもこのプログラムだと一行ごとか、いくつかの単語ごとに区切れてる気がします。
あと始めに以下のような分がありここにある単語は省かなければなりません。申し訳ありませんがこの辺の事をどうかえたらよいかアドバイスいただけませんか??
599 :
543 :2005/07/22(金) 13:13:17
すみません。。。以下のような事を書き忘れました。
# [RESTRICTED USE ONLY]
# THIS FILE IS FOR THE EXAMPLE DATA FOR THE REPORT PROGRAM OF
# ALGORITHM AND DATA STRUCTURE, DEPT. OF INFO. SCI., TOKYO INST. OF TECH.
# [SOURCE]
# THIS DATA IS CREATED BY PERMUTING RANDOMLY WORDS IN THE WORD LIST AT
#
http://www.eigozai.com/WORD/WORDDOWN.htm # [REMARKS]
# ABOUT 1500 WORDS. ONLY LOWER CASE LETTERS (MAYBE!!).
# SOME WORDS MAY APPEAR MORE THAN ONCE.
600 :
デフォルトの名無しさん :2005/07/22(金) 14:01:28
>>598 どうも、意味が分からないのですが・・・
できれば、words.txt のフォーマットと、仕様を書いてください・・・
601 :
デフォルトの名無しさん :2005/07/22(金) 15:48:35
【Java 歴】1週間 【 種別 】マル投げ 【 期限 】日曜0:00 【内容】 In a new computer-assisted board game moves are determined by selecting a random number. However, players can influence their moves by taking a risk. The plater selects a number n from 1 to 10. The computer then generates a random integer r from 1 to 10. The plater's move is then(r-n+1)*n. A cautious player selects 1 and always moves forward. The ambitious plater selects higher numbers and may move more forward or may move backward. Write a program to determine one move in the game. Display the computer's integer selection and the move. すいません、英語なんですがよろしくお願いします。
辞書引けよ
603 :
デフォルトの名無しさん :2005/07/22(金) 17:22:52
>>601 とても単純。ユーザーに1から10の整数をインプットさせる。 それで
与えられてる公式をtoString()にぶち込めばよろしい。
604 :
デフォルトの名無しさん :2005/07/22(金) 17:44:18
【Java 歴】 3ヶ月 【 課題 】 キーボードから一行で入力した数字を一桁ずつ表示する 【 期限 】 日曜 一行で一桁ずつ記憶させる方法が全くわかりません。 よろしくお願いします。
605 :
デフォルトの名無しさん :2005/07/22(金) 19:05:44
584 エラーでましたがなんとか大丈夫でした。どうもありがとうございました。
>604 こんなんでいいのか? public class Main { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader( System.in)); String inputLine=null; try { inputLine = reader.readLine() ; } catch (IOException ioe){ ioe.printStackTrace(); } for (int i=0 ; i<inputLine.length() ;++i){ System.out.println(inputLine.charAt(i)); } } }
【種別】○投げ同然です、まことに申し訳ありません
【課題】
ttp://gameboyz.ddo.jp/file/up0059.zip (passはjava)
【期限】7月一杯
文字列クラスと日付クラスの二つを課題として提示されました
自力でここまでやってきましたが、期限が迫っているにもかかわらず
文字列クラスの後半で行き詰るという醜態を晒して困窮しております
書庫ファイルに、課題内容と現時点までに自分が製作したものを格納してあります
恥を忍んでお願いします
608 :
デフォルトの名無しさん :2005/07/22(金) 22:47:47
大学の前期が終わる時期だな。まさに駆け込み寺。
610 :
デフォルトの名無しさん :2005/07/23(土) 07:21:49
611 :
>>601 ボードG その1 :2005/07/23(土) 13:33:07
import java.awt.*; import java.awt.event.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.swing.*; public class HW105 { static final byte[][] map = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { 1, 0, 1, 1, 1, 1, 1, 1, 0, 1 }, { 1, 0, 1, 0, 0, 0, 0, 1, 0, 1 }, { 1, 0, 1, 0, 0, 3, 0, 1, 0, 1 }, { 1, 0, 1, 1, 1, 1, 0, 1, 0, 1 }, { 1, 0, 0, 0, 0, 0, 0, 1, 0, 1 }, { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }, { 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 }, }; static final int NONE = 0, CELL = 1, START = 2, GOAL = 3; static class Piece { Point pt = new Point(); List prevPtList = new ArrayList(); } static Piece player = new Piece(); static Piece enemy = new Piece(); static EventDispatcher dpt = new EventDispatcher(); volatile static int slotNum = 1; volatile static boolean slotStopFlag;
612 :
:>>601 ボードG その2 :2005/07/23(土) 13:34:13
static int buttonNum; static boolean waitFlag; static final String CHARA = "●"; static JLabel[][] cell = new JLabel[10][10]; static JButton[] numBtn = new JButton[10]; static JButton nextBtn = new JButton("Next"); static JLabel slot = new JLabel(); static JLabel msg = new JLabel(); public static void main(String[] args) { createFrame(); start(); System.exit(0); } static void start() { setComponentStatus(false, true); msg.setText("ゲームを開始します。Nextボタンを押してください"); waitFlag = true; while (waitFlag) { // no operation } initialize(); while (true) { setComponentStatus(true, false); msg.setText("番号ボタンを押してください"); startSlot(10); synchronized (HW105.class) { try { HW105.class.wait(); } catch (Exception ex) { // no operation
613 :
::>>601 ボードG その3 :2005/07/23(土) 13:34:51
} } int move = (slotNum - buttonNum + 1) * buttonNum; if (move >= 0) { msg.setText("プレイヤーが" + move + "マス進みました"); } else { msg.setText("プレイヤーが" + Math.abs(move) + "マス戻りました"); } movePiece(move, player); if (map[player.pt.y][player.pt.x] == GOAL) { msg.setText("プレイヤーの勝利です。"); break; } setComponentStatus(false, false); msg.setText("敵がスロットを決めます"); startSlot(15); int time = (int) (Math.random() * 2000); try { Thread.sleep(time); } catch (Exception ex) { // no operation } slotStopFlag = true; synchronized (HW105.class) { try { HW105.class.wait(); } catch (Exception ex) { // no operation } }
614 :
>>601 ボードG その4 :2005/07/23(土) 13:35:29
msg.setText("敵が" + slotNum + "マス進みました"); movePiece(slotNum, enemy); if (map[enemy.pt.y][enemy.pt.x] == GOAL) { msg.setText("プレイヤーの敗北です"); break; } } setComponentStatus(false, true); waitFlag = true; while (waitFlag) { // no operation } } static void initialize() { for (int y = 0; y < cell.length; y++) { for (int x = 0; x < cell[y].length; x++) { cell[y][x].setText(""); } } player.pt.setLocation(0, 9); player.prevPtList.clear(); enemy.pt.setLocation(0, 9); enemy.prevPtList.clear(); cell[player.pt.y][player.pt.x].setForeground(Color.magenta); cell[player.pt.y][player.pt.x].setText(CHARA); } static Color inspeceCell(Point point) { if (player.pt.equals(point) && enemy.pt.equals(point)) { return Color.magenta; } else if (player.pt.equals(point)) {
615 :
:>>601 ボードG その5 :2005/07/23(土) 13:36:04
return Color.blue; } else if (enemy.pt.equals(point)) { return Color.red; } else { return Color.black; } } static void drawCell(Color color, Point point) { if (color.equals(Color.black)) { cell[point.y][point.x].setText(""); return; } cell[point.y][point.x].setText(CHARA); cell[point.y][point.x].setForeground(color); } static void setComponentStatus(boolean num, boolean next) { for (int i = 0; i < numBtn.length; i++) { numBtn[i].setEnabled(num); } nextBtn.setEnabled(next); } static void movePiece(int move, final Piece piece) { while (move != 0) { final Point prevPt = new Point(piece.pt.x, piece.pt.y); boolean flag = false; if (move >= 0) { flag = moveOneCell(true, piece); --move; } else { flag = moveOneCell(false, piece);
616 :
::>>601 ボードG その6 :2005/07/23(土) 13:54:48
++move; } if (!flag) { break; } final Point crtPt = new Point(piece.pt.x, piece.pt.y); final Color prevCol = inspeceCell(prevPt); final Color crtCol = inspeceCell(crtPt); dpt.addEvent(new Runnable() { public void run() { drawCell(prevCol, prevPt); drawCell(crtCol, crtPt); } }); dpt.addWaitEvent(100); } dpt.runEventsAndWait(); } static boolean moveOneCell(boolean front, Piece piece) { if (front) { Point[] around = { new Point(0, -1), new Point(-1, 0), new Point(0, 1), new Point(1, 0) }; for (int i = 0; i < around.length; i++) { int x = piece.pt.x + around[i].x; int y = piece.pt.y + around[i].y; if (x < 0 || x >= 10 || y < 0 || y >= 10) { continue; } if (piece.prevPtList.contains(new Point(x, y))) { continue;
617 :
>>601 ボードG その7 :2005/07/23(土) 13:55:21
} if (map[y][x] == NONE) { continue; } piece.prevPtList.add(new Point(piece.pt.x, piece.pt.y)); piece.pt.setLocation(x, y); return true; } } else { if (!piece.prevPtList.isEmpty()) { Point prevPt = (Point) piece.prevPtList.remove( piece.prevPtList.size() - 1); piece.pt.x = prevPt.x; piece.pt.y = prevPt.y; return true; } } return false; } static void startSlot(final int maxNum) { new Thread() { public void run() { List list = new ArrayList(); for (int i = 1; i <= maxNum; i++) { list.add(new Integer(i)); } Collections.shuffle(list); int idx = 0; slot.setForeground(Color.black); slotStopFlag = false;
618 :
:>>601 ボードG その8 :2005/07/23(土) 13:55:58
int waitTime = 40; while (waitTime < 1000) { if (++idx == list.size()) { idx = 0; } slotNum = ((Integer) list.get(idx)).intValue(); slot.setText("" + slotNum); if (slotStopFlag) { waitTime += 250; } try { Thread.sleep(waitTime); } catch (Exception ex) { // no operation } } slot.setForeground(Color.red); synchronized (HW105.class) { HW105.class.notifyAll(); } } }.start(); } static void createFrame() { JPanel board = new JPanel(new GridLayout(10, 10)); board.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(32, 32, 32, 32))); board.setBackground(new Color(245, 245, 255)); for (int y = 0; y < map.length; y++) {
619 :
::>>601 ボードG その9 :2005/07/23(土) 13:56:35
for (int x = 0; x < map.length; x++) { cell[y][x] = new JLabel(); cell[y][x].setHorizontalAlignment(JLabel.CENTER); cell[y][x].setPreferredSize(new Dimension(32, 32)); cell[y][x].setFont(new Font("Dialog", 1, 20)); if (map[y][x] != NONE) { cell[y][x].setOpaque(true); cell[y][x].setBorder(BorderFactory.createLineBorder(Color.black)); } switch (map[y][x]) { case CELL: cell[y][x].setBackground(new Color(220, 220, 250)); break; case START: cell[y][x].setBackground(new Color(220, 250, 220)); break; case GOAL: cell[y][x].setBackground(new Color(250, 220, 220)); } board.add(cell[y][x]); } } JPanel ctrl = new JPanel(); ctrl.setLayout(new BoxLayout(ctrl, BoxLayout.X_AXIS)); ctrl.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(8, 8, 8, 8))); ctrl.setBackground(new Color(200, 200, 220)); slot.setPreferredSize(new Dimension(48, 48)); slot.setMaximumSize(new Dimension(48, 48));
620 :
>>601 ボードG その10 :2005/07/23(土) 13:57:28
slot.setBorder(BorderFactory.createLoweredBevelBorder()); slot.setOpaque(true); slot.setBackground(Color.white); slot.setHorizontalAlignment(JLabel.CENTER); slot.setFont(new Font("Dialog", 1, 20)); ctrl.add(slot); ctrl.add(Box.createHorizontalStrut(8)); for (int i = 0; i < numBtn.length; i++) { numBtn[i] = new JButton("" + (i + 1)); numBtn[i].setActionCommand("" + (i + 1)); numBtn[i].setMargin(new Insets(4, 8, 4, 8)); numBtn[i].addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { buttonNum = Integer.parseInt(e.getActionCommand()); slotStopFlag = true; } }); ctrl.add(numBtn[i]); } nextBtn.setMargin(new Insets(4, 8, 4, 8)); nextBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { waitFlag = false; } }); ctrl.add(Box.createHorizontalStrut(8)); ctrl.add(nextBtn); msg.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createEtchedBorder(), BorderFactory.createEmptyBorder(8, 8, 8, 8)));
621 :
:>>601 ボードG その11 :2005/07/23(土) 14:07:13
msg.setOpaque(true); msg.setBackground(new Color(230, 230, 255)); msg.setPreferredSize(new Dimension(0, 28)); msg.setFont(new Font("Dialog", 0, 15)); msg.setHorizontalAlignment(JLabel.CENTER); JFrame frame = new JFrame(); frame.getContentPane().add(msg, BorderLayout.NORTH); frame.getContentPane().add(board); frame.getContentPane().add(ctrl, BorderLayout.SOUTH); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.pack(); frame.setResizable(false); frame.setVisible(true); } } class EventDispatcher { private List eventList = Collections.synchronizedList(new ArrayList()); void addEvent(final Runnable event) { eventList.add(new Runnable() { public void run() { event.run(); if (!eventList.isEmpty()) { EventQueue.invokeLater((Runnable) eventList.remove(0)); } } }); } void addWaitEvent(final int time) { eventList.add(new Runnable() { public void run() {
622 :
::>>601 ボードG その12 :2005/07/23(土) 14:07:44
try { Thread.sleep(time); } catch (InterruptedException e1) { // no operation } if (!eventList.isEmpty()) { EventQueue.invokeLater((Runnable) eventList.remove(0)); } } }); } synchronized void runEventsAndWait() { eventList.add(new Runnable() { public void run() { synchronized (EventDispatcher.this) { EventDispatcher.this.notifyAll(); eventList.clear(); } } }); EventQueue.invokeLater((Runnable) eventList.remove(0)); try { wait(); } catch (InterruptedException e) { // no operation } } }
623 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/23(土) 14:09:36
>>601 全部コピペしてコンパイルしてください。
↑ 氏ね
相変わらずのクソコードだなw
626 :
デフォルトの名無しさん :2005/07/23(土) 15:55:33
>>606 助かりました。
ありがとうございました。
お願いだから大量のコードを貼るのはやめて下さい。 多くなるならうぷろだ使うのが(ry
628 :
607 :2005/07/23(土) 19:29:25
629 :
デフォルトの名無しさん :2005/07/23(土) 20:03:30
すみませんが、もう少しプログラムの仕様を詳しく書いてください。 あと、エクセルのファイルは怖くて開けません。。。
630 :
607 :2005/07/23(土) 21:09:36
631 :
Mb :2005/07/23(土) 21:43:39
>>627 > お願いだから大量のコードを貼るのはやめて下さい。
> 多くなるならうぷろだ使うのが(ry
厭でも見られると思うからコードに緊張感が出る。
うpされたコードはひとつひとつじっくり読んで、
できれば「俺ならこう書く」というコードをうpしる。
それでこそ漢。
>631 答える側の人間は 答えさえ出していれば何をしてもイイってことにはならないでしょ。 スレが読みにくくなるって言ってる人が多いんだし うぷろだも提供されてるわけだから、長々とこのスレにソース貼るのはやっぱマズいよ。 正直なところ、 「俺ならこう書く」という意見を出すような人間は、 うぷろだに載せたソースであってもちゃんとコメントすると思われ。
633 :
627 :2005/07/23(土) 22:53:14
あれが緊張感のあるソースですかorz このスレは書いたソースの発表会をする場所ではないです。 発表会がしたいならどこかよそでやって下さい。
634 :
デフォルトの名無しさん :2005/07/23(土) 23:14:28
blowfishを使って暗号化をしようと思っているのですが、 NoSuchAlgorithmExceptionが出てしまいます。 1.4以降のJ2SEには標準装備されていると聞いたのですが、何か設定が必要なんでしょうか?
635 :
Mb :2005/07/23(土) 23:23:56
>>632 > 答える側の人間は
> 答えさえ出していれば何をしてもイイってことにはならないでしょ。
とりあえず答えてもらう側の人間は、
答えさえ出してもらえば何だっていいという側面はあると思われ。
>>633 > あれが緊張感のあるソースですかorz
それを言うなら藻前がうpしる(w
「うpしてる」と言うならコテハンで証明しる。
屑コードでも、答えてもらった人間にとっては、
晒したくれたもんが神。
636 :
632 :2005/07/23(土) 23:29:22
>635 ・質問者と解答者のマンツーマンのやりとり も ・コテハン使った書き込み も、匿名掲示板という形式では相応しいやり方とは思えない。
ともかく、問題の根源は小島露観な訳だが‥ まあ、7〜8レスまでのコピペは大目に見るが、 10レス以上にもなると、やや問題がある。
>634 >464
640 :
Mb :2005/07/24(日) 06:06:02
>>636 > ・コテハン使った書き込み
> も、匿名掲示板という形式では相応しいやり方とは思えない。
意味がようわからん。
コテハンを使っても匿名は匿名だと思うのだが。
それとも「小島露観」つー実名っぽいハンドルが問題なのか?
>>637 > まあ、7〜8レスまでのコピペは大目に見るが、
2ちゃんで「コピペ」というと、他人の文章をギッてくることを
言うのが普通なので、自分で書いたコードを貼るのは(2ちゃんでいう)
コピペの内には入らんように思うが。
> 10レス以上にもなると、やや問題がある。
それはread.cgi の行数制限がきつすぎるところに問題があるのか?
それとも「もっと短く書け」ということなのか?
641 :
627 :2005/07/24(日) 12:13:11
これ以上レスをするとスレの妨げになるのでこれを最後にします。
・質問者はどのような形であれ答えてもらえれば構わない。(=うぷろだ使わない理由にはならない)
・大量のソースを貼るとスレが見にくくなり回答者が質問を見落としやすくなる。(=うぷろだ使うべき理由1)
・大量のソースが貼られる事を好ましく思わない人が複数いる。(=うぷろだ使うべき理由2)
・このスレはソースの発表会をする場所ではない。(
>>631 に対する否定)
これだけ理由が揃っていて何故ソース直貼りにこだわるのかわかりません。
匿名掲示板でわざわざコテを使うほど自己顕示欲強くないので私はコテを使う事はしませんが、
他人にコテを強要する様な
>>635 の発言は匿名掲示板にはふさわしくないと考えます。
特定の発言に複数発言にわたる長文レスが書き込まれたら、どう思います?
ソースという性質上多少は大目に見るにしても12レスはやりすぎです。
思うに、批判的意見は(私含め)主に回答者から出ているのではないかと思いますが。
ソース貼り用のウプロダが用意されるとお互いに幸せかも? インデントの悩みも消えてなくなるし、行数制限も気にしなくて済む。 それに、回答が蓄積されるとデータベースとしての効果が期待できる。
643 :
デフォルトの名無しさん :2005/07/24(日) 13:43:30
>>608 ここの課題どなたかよろしくお願いします。
難しすぎて、近くにこの問題を解ける人がいないので困っています。
わかりにくい所があればなんでも答えますので、
面倒かもしれませんがよろしくお願いします。
644 :
デフォルトの名無しさん :2005/07/24(日) 13:54:23
>>643 GUIはSwingがいい
携帯からだからXMLは見れないがアルゴリズムは多分そう難しくないぞ。
646 :
607 :2005/07/24(日) 21:46:19
>>639 有難う御座います。完成した分のメソッドまで頂きました。
ただ、31番と32番はこちらの環境では動作させることが出来ませんでした。
あと、28番については完全にこちらの説明不足でありました。大変申し訳ありません。
aAa[スペース]bbB▽CCc[スペース]ddD亜eee○FFF という文章があった場合
Aaa[スペース]Bbb▽Ccc[スペース]Ddd亜Eee○Fff このように単語ごとに先頭の文字を大文字にするということです。
日付クラスも必要不可欠です。何方か何卒お願いします。
647 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/07/24(日) 22:25:48
javaとCの違いは?といったらオブジェクト指向のことになりよね!? javaとCとの違いをプログラムを用いて示すならどんなプログラムを作れば いいんでしょうか?オーバーライドとオーバーロードはCのどのような 問題点を解決できるんでしょうか?お願いします。
649 :
639 :2005/07/25(月) 02:33:55
>>646 31番, 32番:
試しに、
strRet += (char)(strWide.charAt(intRoop) - ('A' - 'A'));
を、
int intDiff = 0xFEE0;// 'A' - 'A'
strRet += (char)(strWide.charAt(intRoop) - intDiff);
に換えてみて。
あと、動かない状況をもう少し詳しく。
コンパイル失敗なのか、例外発生なのか、結果だけおかしいのか。
参考までに、java -version の実行結果も。
650 :
639 :2005/07/25(月) 02:34:31
>>646 28番:
おっ、よく見たら「単語の先頭を大文字」だったか。
めんどくさいので、正規表現を使わせてもらった。
ソース冒頭にある string 〜 char 以外の使用が禁じられているなら別途相談。
java -version の結果が 1.5.0 代でない場合も別途相談。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public String toProper(String strArrange)
{
String strRegex = "([^\\p{Alpha}]*)(\\p{Alpha})(\\p{Alpha}*)";
Matcher matcher = Pattern.compile(strRegex).matcher(strArrange);
StringBuffer buffer = new StringBuffer();
while (matcher.find()) {
String strTop = matcher.group(2).toUpperCase();
String strLatter = matcher.group(3).toLowerCase();
matcher.appendReplacement(buffer, "$1" + strTop + strLatter);
}
matcher.appendTail(buffer);
return buffer.toString();
}
651 :
デフォルトの名無しさん :2005/07/25(月) 03:50:14
ここは天国ですか?
652 :
デフォルトの名無しさん :2005/07/25(月) 08:28:06
宿題、課題は7月中に済ませてしまおう! 将来プログラマを目指さない人は、ここで丸投げしてしまおう! 出来たコードを適当にちょこちょこ直せば、バレる事もなく 時間が空くよ。 空いた時間を、遊びなり他の勉強なりに使うがいい!
653 :
デフォルトの名無しさん :2005/07/25(月) 08:29:56
最近はよっぽど規模が大きいか面倒でない限り、回答率が高いぞ! 今の内だー!
見てくれるかたいませんか? テキストコピーしました。 HTMLファイルで背景色を指定する場合には, <body bgcolor="#ffffff"> のように,赤,緑,青の値を16進でそれぞれ2桁ずつ,合計6桁で指定します.この色の指定をサポートするツールを作りましょう. 具体的には次のようなツールを考えます. スライダー(もしくはスクロールバー)を3本用意し,赤,緑,青に対応させます. スライダー(もしくはスクロールバー)を動かすと,赤,緑,青の値を0から255まで変化させることができます. 赤,緑,青の値を変化させると, それに応じて,表示される色と16進で表示される赤,緑,青の値が変化します. 以下,このプログラムを作るのに必要になることを説明します. Swingでは,色はAWTの Colorクラスのオブジェクトを利用して表します. Colorオブジェクトは,赤,緑,青の3原色の強さを 0から255の整数で指定して作ります.例えば,赤を表すColorオブジェクトは, Color red = new Color(255,0,0); で作ります.コンストラクタの引数は,赤,緑,青の順です. また,いくつかの代表的な色については,すでに定数としてColorオブジェクトが用意されています.の先頭の方の Field Summaryというところにリストアップされている色です.これらの色は,Colorクラスのクラス変数に代入され ているので,クラス名とクラス変数名を指定して,次のようにして使うことができます. Color c = Color.pink;
655 :
654 :2005/07/25(月) 14:19:05
いろいろな色を表示するPanelを次のように作ってみました. class ColorPanel extends JPanel { public ColorPanel() { this(Color.white); } public ColorPanel(Color c) { setColor(c); setPreferredSize(new Dimension(200,150)); } public void setColor(Color c) { setBackground(c); } public Color getColor() { return getBackground(); } }
656 :
654 :2005/07/25(月) 14:22:09
ColorPanelは, JPanelを継承して作ってあります.指定された色を背景色にしています. ColorPanelを次のように使ってみました. class TestColor { public static void main(String argv[]) { Color initColor = Color.pink; JFrame f = new JFrame("TestColor"); ColorPanel c = new ColorPanel(initColor); f.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0); } }); f.getContentPane().add(c,BorderLayout.CENTER); f.pack(); f.show(); } } これを実行すると,ピンクが表示されます. 16進の表示は,JTextFieldを使いました.
657 :
654 :2005/07/25(月) 14:25:49
↓問題文一部 残るはスライダー(またはスクロールバー)ですが, JSlider という部品を使います. スクロールバー(JScrollBar)もありますので,こちらを使ってもかまいません. スライダーを動かすと, ChangeListenerのstateChanged メソッドが呼び出されます. これは,swingであたらしく追加されたイベントなので, import javax.swing.event.*; をプログラムの最初に書く必要があります. 例によって, ChangeListenerインターフェイスをimplementsしたクラスを作り, そのオブジェクトをJSliberに登録します.そうすると,スライダーを動かした時に, stateChangedが呼び出されるので,そのメソッドの中で,現在のスライダーの位置に応じて, ColorPanelの色,および16進の表示を変更するようにします.現在の値,値のセットを行うには, それぞれ,getValue(), setValue()メソッドを利用します. Scrollbarは,作るときに,最大値,最小値を指定できるので,赤,緑,青の値の範囲に合わせて, 0から255に指定しておくと簡単です. JSlider sl=new JSlider(JSlider.HORIZONTAL,0,255,0); sl.setPaintTicks(true); sl.setMajorTickSpacing(50); sl.setMinorTickSpacing(10); sl.setLabelTable(sl.createStandardLabels(50)); sl.setPaintLabels(true); とすれば10毎にしるし(tick)や50毎に数値ラベルを付けることができます. 分かりにくい貼り付け方ですみませんが、出来る方いればよろしくお願いしますm(_ _)m
658 :
デフォルトの名無しさん :2005/07/25(月) 14:38:40
、変数num1に記憶されている値に1を足した値を、変数num1に改めて 記憶する、という命令です。つまり、Javaのソースコードの中で表れる"="は、普通の意 味の、「右辺と左辺が等しい」という意味ではなく、「右辺の値を左辺に代入する」とい う意味です。 ------------------------------------------------------------------------------------------------------------------------- お願いします
659 :
デフォルトの名無しさん :2005/07/25(月) 14:46:58
num2=num1; どういう命令ですか?
660 :
デフォルトの名無しさん :2005/07/25(月) 15:22:34
ボタンを押して、それによってリモートコンピューターのイベントを起こすには どうすればいいですか?
>659 変数num2の内容を、変数num1の内容で置き換える。 変数num1の内容は変化しない。 実行前にnum1に数字の1が、num2には数字の2が入っていたとすると、実行後にはnum1は1、num2も1になる。 >658 うん、それは分かった。で、何を聞きたいの? >660 ボタンを押したらネットワークを通じて何らかのメッセージをリモートコンピュータに送るようなクライアントプログラムを用意する。 同時に、リモートコンピュータ側にもメッセージを受け取ったら何らかの処理を行なうようなサーバプログラムを用意し、動作させておく。
662 :
デフォルトの名無しさん :2005/07/25(月) 16:28:40
>661 ありがとうございます!!!!!!!! for(int i=0;i<5;i++){ System.out.println((i+1)+"番目の人の点数は"+ test[i]+"です"); } もお願いします。すいません、お願いします!
663 :
デフォルトの名無しさん :2005/07/25(月) 17:05:23
iアプリのプログラムの課題はここでO.K?
664 :
607 :2005/07/25(月) 19:22:00
>>649-650 当初は結果が反映されなかったのですが、ご指導にあった部分を変更したところ
myString.java:512: シンボルを解決できません。
シンボル: 変数 strWide
場所 : myString の クラス
strRet += (char)(strWide.charAt(intRoop) - intDiff);
とコンパイルエラーが表示されてしまいました。
また、冒頭に明記されている型以外の型を使用することは出来ません。
当方、Verは1.5.0シリーズではなく、1.4.2です。
665 :
デフォルトの名無しさん :2005/07/25(月) 21:04:51
int num[][]; ---(1) num=new int[5][5]; ---(2) (1)(2)は何を行う命令かをおしえてください。 for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ System.out.print(num[i][j]+""); } System.out.println(""); 何を行う命令か教えてください。お願いします。
666 :
639 :2005/07/25(月) 21:55:38
667 :
Mb :2005/07/25(月) 21:57:46
>>648 > javaとCの違いは?といったらオブジェクト指向のことになりよね!?
そうとも言えん。Java でも関数型に近いコーディングはできる。
C は「やろうと思えばなんでもできる」という自己責任言語。
Java は「ヤバそうなことをやろうとするとコンパイラが通さない」
というお砂場言語。
> javaとCとの違いをプログラムを用いて示すならどんな
> プログラムを作ればいいんでしょうか?
とりあえず「キャスト」と「ジェネリック」について調べてみそ。
> オーバーライドとオーバーロードはCのどのような
> 問題点を解決できるんでしょうか?
質問する前に「オーバーライド」と「オーバーロード」について
理解しる。
669 :
デフォルトの名無しさん :2005/07/25(月) 22:27:59
7月中は回答率が高いよ!
670 :
kompactaaaaaaa :2005/07/25(月) 23:41:04
java で 画面に五線譜を書いて その上に♪(音符)を置いて 再生ボタンを押すと 音楽を楽譜どうりに再生するプログラムがかきたいんですが、 だれか できる人がいたら やってくれませんか?お願いします。
671 :
デフォルトの名無しさん :2005/07/25(月) 23:58:05
>>670 前から、しょっちゅうネタの課題ばかり出しやがって。
分かってるんだよ。いつもの奴だろ。
誰かが苦労してプログラム書いても、いつもシカトして遊んでるだろが。
いい加減にしろ。バカが。
672 :
デフォルトの名無しさん :2005/07/26(火) 00:03:47
670のクサレ厨房が二度と悪ふざけ出来なくなるプログラムを書きたいんですが、 だれか できる人がいたら やってくれませんか?お願いします。
673 :
デフォルトの名無しさん :2005/07/26(火) 00:08:27
>>670 お前はいい加減にしろよ。何度、ネタの課題を出して
人を振り回せば気が済むんだ? もう我慢の限度を超えてるんだよ。
真面目にやってる人間の気持ちを踏み躙って、何が楽しいんだ?
そんなネクラな楽しみしかないのか? 正に人間のクズだな。
お前のおかげで、どれだけの人間がやる気を無くしたと思ってるんだ。
お前の罪がどれだけ大きいかよく考えてみるといい。
674 :
661 :2005/07/26(火) 00:32:49
>662 この時期にそれが理解できない奴に、単位は死んでも来ない。 つーわけで答えるだけ無駄。 >670 そんなオープンソースソフトウェアを以前見かけたことがある。 言語がJavaだったかどうかは自信ないが。
【Java 歴】 3ヶ月 【 種別 】 丸投げぎみな質問です。 【 課題 】 画像をグレイスケールに変換したあとにラプラシアンフィルターを使って表示させなさい。 |0 1 0| L=|1 −4 1| |0 1 0| 【不明点 】 ラプラシアンの使い方 【 期限 】 7月29日 【 備考 】 ラプラシアンのところだけ表示されず、不明なので抜粋しました。 public void laplace(){ int width, height; int pixels[]; int op[][]={{-1,-1,-1,},{-1,8,-1,},{-1,-1,-1,}}; int[][] pixels2=new int[height][width]; for(int y=0; y<height; y++){ for(int x=0; x<width; x++){ int value=0; for(int i=-1; i<=1; i++){ for(int j=-1; j<=1; j++){ int y2=y+i; int x2=x+j; if(y2>=0 && y2<height && x2>=0 && x2<width){ value=value+(pixels2[y2][x2] & 0xFF)*op[i+1][j+1]; }}} if(value<0){value=0;} else if(value>255){value=255;} pixels2[y][x]=0xFF000000 | (value<<16) | (value<<8) | value; }}} よろしくお願いします。
676 :
デフォルトの名無しさん :2005/07/26(火) 02:27:10
もう何が何だか わけがワカラン
677 :
675 :2005/07/26(火) 08:51:42
この問題のどの辺がわからないんでしょうか?
678 :
デフォルトの名無しさん :2005/07/26(火) 09:07:00
pixels2 のデータをイメージにしても表示されないのですか?
679 :
675 :2005/07/26(火) 13:44:08
>>679 (>675)
int width, height; の代入忘れに一票。
681 :
675 :2005/07/26(火) 14:17:02
>>680 int width, height;は元々フィールドにあって
代入してなくてもグレイスケールは表示されました。
なので、代入忘れじゃないっぽいです。
682 :
680 :2005/07/26(火) 15:55:18
>>681 まあ、そういわずにやってみる。
@下準備として、メソッドの最後にデバッグ文を追加する。
System.out.println(pixels2.length);
これで、pixels2 の、y 方向のサイズが出力される。0 になってるはず。
Aローカル変数に、インスタンス変数(フィールド)を代入する。
int width = this.width, height = this.height;
y 方向のサイズが予期した値に変わるはず。
B実は、そもそもインスタンス変数のコピー自体不要なので、
@のデバッグ文共々Aを削除する。
C「スコープ(別のスコープで同じ変数名を使うとどうなるか)」や、
キーワード「this」についてもう少しお勉強!
この分だと、pixels2 もフィールドにあったりするんだろうな・・・
683 :
675 :2005/07/26(火) 16:32:03
>>682 ありがとうございます。やってみます!
ばっちりpixels2もフィールドにあります…
685 :
648 :2005/07/26(火) 19:07:42
>>667 ありがとうございます。
もっと考えて見ます。
686 :
657 :2005/07/27(水) 00:27:14
>>684 ありがとうございます。参考にさせてもらいます!
プログラムを分けて書いたとこ辺り難しそうでしたが、実行した結果は
このようなものであっているのでとても参考になりそうです。
わざわざアップロードまでしていただいてありがとうございましたm(_ _)m
687 :
657 :2005/07/27(水) 00:27:52
>>684 ありがとうございます。参考にさせてもらいます!
プログラムを分けて書いたとこ辺り難しそうでしたが、実行した結果は
このようなものであっているのでとても参考になりそうです。
わざわざアップロードまでしていただいてありがとうございましたm(_ _)m
688 :
654 :2005/07/27(水) 00:28:29
>>684 ありがとうございます。参考にさせてもらいます!
プログラムを分けて書いたとこ辺り難しそうでしたが、実行した結果は
このようなものであっているのでとても参考になりそうです。
わざわざアップロードまでしていただいてありがとうございましたm(_ _)m
689 :
654 :2005/07/27(水) 00:29:02
>>684 ありがとうございます。参考にさせてもらいます!
プログラムを分けて書いたとこ辺り難しそうでしたが、実行した結果は
このようなものであっているのでとても参考になりそうです。
わざわざアップロードまでしていただいてありがとうございましたm(_ _)m
690 :
654 :2005/07/27(水) 00:30:04
>>684 ありがとうございます。参考にさせてもらいます!
プログラムを分けて書いたとこ辺り難しそうでしたが、実行した結果は
このようなものであっているのでとても参考になりそうです。
わざわざアップロードまでしていただいてありがとうございましたm(_ _)m
691 :
657 :2005/07/27(水) 01:50:12
すみません。 書き込みするとエラーがでて何回も書き込みボタン押したもので・・・
public class En2{ public int x; public int y; public void swap(int s){ int x=s*y; y=s*x; this.x=x; } public void swap2(int s){ int x=s*y; System.out.println(this.x); y=s*this.x; this.x=x; } public static void main(String[] args){ En2 pt =new En2(); pt.x=3; pt.y=4; pt.swap(2); //System.out.println(pt.x + " " + pt.y); pt.swap2(3); //System.out.println(pt.x + " " + pt.y); } } これを実行するとthis.xのプリントは8になります。 自分の考えでいくと上のxの値になって48な気がするんですけど。 sawpでそのように考えてswap2だとその考えが通りません。 どう考えればいいのでしょうか?お願いします。
693 :
692 :2005/07/27(水) 02:31:46
↑訂正 this.xっていうのはここの時点でのxの値って考えて、 swapでthis.xをxの値8にしてあるからswap2でもthis.x=x;と置きなおすまでは this.xは8のままという考えでいいのでしょうか? 混乱してしまってすみません。
>692 落ち着け。まずは日本語の文法からだ。
結論から言うと、どちらもメンバのx,yをs倍して入れ替える処理になる。 swap2で出力されるのは、入れ替わりもs倍もされていないx。 int xと宣言した場合、「x」といったらthis.xではなく変数xを指す。 二つは別物で、xの方はブロックを抜けたとき(メソッド終了時)破棄される。 int xという宣言が無い場合、「x」とはthis.xを指す。 つーか混乱する位ならメンバと同名の変数なんぞ使うな。 あと、メソッドの作り方が気持ち悪い。 swapというメソッド名ならば、入れ替える操作だけにしておいた方がいい。 俺なら両方の変数をn倍するメソッドを別に作る。
696 :
607 :2005/07/27(水) 07:54:06
>>666 28番の方、有難う御座います。たびたびお手数をおかけして申し訳ありません。
ただ、31番と32番は、コンパイルエラーがなくなっても実行結果において期待する結果が反映されないようです。
697 :
639 :2005/07/27(水) 08:14:17
>>696 どんな引数でどんな結果になるかが分からないと、なんともいえない。
ちなみに、xls ファイルどおり、
31 全角を半角に変換 → toWide(strStr)
32 半角を全角に変換 → toNarrow(strStr)
で作ったけど、その辺を勘違いしてない?
698 :
デフォルトの名無しさん :2005/07/27(水) 14:01:07
【Java 歴】 2ヶ月
【 種別 】 丸投げです.すいません。
【 課題 】 ドライバークラス
【 用語 】 JAVA
【 期限 】 7/28/2005
/* 与えられたプログラムに次のメソッドを加えて、テストプログラムを書けという課題が出ました。
一応メソッドは付け加えたのですが、テストプログラムを書く事ができません。お願いします。
*/
* Check with
http://java.sun.com/j2se/1.4.2/docs/api/ for more details.
* public void removeFirst();
* throws a NoSuchElementException if the list is empty
* public void removeLast();
* throws a NoSuchElementException if the list is empty
* public void clear();
* removes all the elements from the list
* public int indexOf(Object obj);
* public int lastIndexOf(Object obj);
* public Object remove(int index);
* returns the Object previously at the specified position
* throws an IndexOutOfBoundsException-if the index is out of range
* public set(int index, Object obj);
* returns the Object previously at the specified position
* throws an IndexOutOfBoundsException-if the index is out of range
* public Object[] toArray();
* returns an array containning all the elemens in this list
* in the correct order
* public Object clone();
*/
699 :
デフォルトの名無しさん :2005/07/27(水) 14:02:40
import java.util.Iterator; public class LinkedList2 { // Data Fields Node head; // reference to the first node of the list Node tail; // reference to the last node of the list int length; // number of entries Object[] data; private class Node { // Data Fields Object data; // entry Node next; // link to next node // Constructors private Node(Object element) { data = element; next = null; } private Node(Object element, Node nextNode) { data = element; next = nextNode; } } // Node
700 :
698コードその2 :2005/07/27(水) 14:04:16
private class MyIterator implements Iterator { private Node nextItem; // reference to next node private Node priorItem; // reference to prior node private boolean canRemoveItem = false; public MyIterator() { nextItem = head; priorItem = null; } public boolean hasNext() { return (nextItem != null); } public Object next() { Object element; if(!hasNext()) throw new java.util.NoSuchElementException("The list is empty"); else { element = nextItem.data; priorItem = nextItem; nextItem = nextItem.next; canRemoveItem = true; // ok to call remove() return element; } }
701 :
698コードその3 :2005/07/27(水) 14:05:49
public void remove() { if (canRemoveItem = false) // need to call next() first throw new IllegalStateException(); else { // code length--; canRemoveItem = false; // cannot call remove() twice in a row } } } // MyIterator // Constructors /** Creates a new instance of LinkedList2 */ public LinkedList2() { head = null; length = 0; }
702 :
698コードその4 :2005/07/27(水) 14:06:52
public void add(int index, Object entry) { if ( index < 0 || index > size()) throw new IndexOutOfBoundsException(); else if (index == 0) addFirst(entry); else if (index == size()) addLast(entry); else { Node pos = head; // pos = this[0] for( int k = 1; k <= index-1; k++) pos = pos.next; // loop invariant: pos = this[k] // place new node between // pos = this[index-1] and pos.next = this[index] Node newNode = new Node(entry, pos.next); // newNode -> this[index] pos.next = newNode; // pos = this[index-1] -> newNode } length++; } public void addFirst(Object element) { if (length == 0) // empty list head = new Node(element); else head = new Node(element, head); length++; }
703 :
607 :2005/07/27(水) 20:51:47
>>697 申し訳ありません。全く関係の無いところでマヌケな失敗をしでかしていたようです。
31番と32番、指定どおりに動きました。たいへんご迷惑をおかけしました。
704 :
デフォルトの名無しさん :2005/07/27(水) 21:18:05
サーブレットでのFormオブジェクトの取得について質問です。 @サーブレットでrequest.getParameterNamesを使ってフォームのオブジェクト名を取得 Aその値とrequest.getParameterで取得した値をHashMapに格納 BBeanUtilsのBeanUtils.populateでBeanに名前を意識せずに格納 ってな感じでプログラムを作ってます。 オブジェクト名とかサーブレットで意識しなくてよくて便利〜って思ってたらチェックボックスを 一度オンにするとリロードしても外れなくなりました。 チェックボックスってチェックされないとrequest.getParameterNamesで取れないんですね。 何とか回避する方法ないでしょうか?
707 :
698です。 :2005/07/28(木) 05:06:30
>704-705 徹夜明けで脳がうまく動かん。 java.util.Date使わずに現在時刻取得する方法ってなんかあったっけ? 現在日時の取得が不要ならば余裕。単純にツェラーの公式で曜日算出。
710 :
704です :2005/07/28(木) 12:24:23
711 :
デフォルトの名無しさん :2005/07/28(木) 13:26:40
java.util をつかってはダメなのですか?
>>704 ,710
とりあえず落ち着いて、「課題そのもの」をうぷすることをお勧めする。
【Java 歴】 暦だけで言うなら数ヶ月、でもちっとも理解出来てない状態 【 種別 】 質問です 【 課題 】 if( ){ } else if( ){ } else{ }を使って 80点以上なら進級、80点未満で欠席率が30未満なら再試、80点未満で欠席率が30以上なら留年 というようなプログラムを作りたいのです。 (前の方は略) int hyouka; if(tensu>=80){ hyouka="進級"; } else if(kesseki<30){ hyouka="再試"; } else{ hyouka="留年"; } System.out.println( "点数:"+tensu+"\t欠席率:"+kesseki+"\t評価:"+hyouka+); 【不明点 】 こうすると、最後の行に、「')'がありません」と出ます 似た問題がいっぱいあって、やってみると何故か全部に同じエラーが出ます あと、これの場合は同じく最後の行に「式の開始が不正です」とも出ます 正しいプログラムを教えてもらえると嬉しいです 【 期限 】 今日中
714 :
デフォルトの名無しさん :2005/07/28(木) 19:02:18
さあ、皆の者作るがいい!
>>713 System.out.println( "点数:"+tensu+"\t欠席率:"+kesseki+"\t評価:"+hyouka);
最後の + は必要ない。
716 :
713 :2005/07/28(木) 20:35:49
>>715 有難うございます!
しかし今度は、hyoukaの3つに「互換性のない型」と出てきました
一応書いてみます
検出値 : java.lang.String
期待値 : int
hyouka="進級";
^
あれから、1つも解けなくてヤバイ状態です(つД`)
>716 > 検出値 : java.lang.String > 期待値 : int このエラーメッセージを読んで>713の > int hyouka; を修正しる。
718 :
713 :2005/07/28(木) 21:21:27
>>717 String hyouka;
に変えてみたら、javacが出来ました!有難うございます!
しかしjavaをやろうとしたら、今度は
>Exception in thread "main" java.lang.NoClassDefFoundError:
と…。色々やってみましたが、分らないので諦めるしかなさそうです
分らない問題が山積みで、連続で申し訳ないのですが、もう1つだけ質問させてください
【 PG 歴 】 【Java 歴】 ド級初心者
【 種別 】 丸投げです
【 課題 】 {3,1,5,4,0,5,-1}というような整数の配列を宣言、初期化し、それらの数値を繰り返し構文(while)を使って印刷。
フローチャートも書くこと。
【不明点 】 全てが意味不明な状態です
【バージョン】 java version "1.5.0_02"
【 期限 】 今日中ですが、明日の明るいうちなら…
>718 Javaのプログラムを動かした経験がない、とか言わないよな? Hello, worldでも何でもいいけど、一度は動かした事があるんだよな? ファイル名とクラス名が一致してないといけないとか、その程度は分かってるよな? public class ArrayTest { public static void main(String[] args){ int[] array = {3,1,5,4,0,5,-1}; //宣言、初期化 int i = 0; //繰り返し回数のカウント用変数 while(i<array.length) { System.out.println(array[i]); i = i + 1; } } } 全角スペースで整形してるので、全角スペース全部消してからコンパイル。
フローチャート。各文は決まった形状の枠で囲む必要がある。 ()で括ってあるのは丸で、[]は四角で、<>は菱形で囲むべし。 (Start) ↓ [ array←{3,1,5,4,0,5,-1} ] ↓ [i←0] ↓ < i<array.lengthか? > ←──────┐ ↓No ↓Yes │ (End) [array[i]を表示] . │ ↓ │ [i←i+1] │ └─────────┘
721 :
713 :2005/07/28(木) 23:50:29
>>719 本当に有難うございます!
arrayとかは習ってないので、案の定チンプンカンプンです
でも助かりました
これを機会に、もっと勉強してきます
ちなみに、どこのサイトを見ても難しくて理解できないのですが、それが普通なんでしょうか
俺はプログラムなんて100%習ってないが、普通に使ってます。
723 :
デフォルトの名無しさん :2005/07/29(金) 00:06:57
問題 ・int型の配列a[]は、任意の長さで、互いに異なる正の整数が大→小の順に並んでい るとする。このときa[i-1]とa[i]の間を「第i区間」と呼ぶ。例えばa[]が「12 9 6 4 3」という並びのとき、12と9の間は第1区間、6と4の間は第3区間である。 ・コマンドラインから正の整数(Nとする)を一つ入力して、Nがa[]のどの区間に属するか(どの区間にも属さない場合はエラー)を表示する下記のプログラムを完成させよ。 public static void main(String[] args){ int N= ; /* コマンドライン引数を整数に変換 */ int a[]= ; /* 初期値を与える */ if( ){ System.out.println("区間外エラー"); } else { int i; for(i ; ; ){ if(a[ ] ){ /* ↓Nが属する区間の表示 */ System.out.println( ); break; } } } } ・a[]の初期値は、上記の条件を満たすように各自で適当に与えること。また、Nがa[]のいずれかの要素(=区間の切れ目)に等しい場合は、小さい方(左側)の区間に属するものとする。 お願いします。
724 :
707 :2005/07/29(金) 02:16:40
>>709 遅くなりましたが、ありがとうございました。
725 :
707 :2005/07/29(金) 02:19:53
>>709 さん。
アップしてもらった、ファイル消されてしまってて見れないんですが、
すいません、もう一度アップしてもらえませんでしょうか?
726 :
709 :2005/07/29(金) 05:10:43
728 :
デフォルトの名無しさん :2005/07/29(金) 07:16:35
さあ、早く回答するがいい
729 :
719 :2005/07/29(金) 08:10:33
>721 arrayは単なる変数名、名前なんで、それ自体に意味は無い。 別に int[] chinko = { 3, 1, …}; (中略) while(i<chinko.length) { System.out.println(chinko[i]); (後略) とかでも問題ない。 プログラミングの勉強のうち、本当に入口の部分は人に聞いて覚えた方が間違いなく早いと思う。 ちゃんと講義に出て、先生なり友達なりに聞くべきだったと思うね。 とっかかりさえ掴んでしまえば後は自力でいくらでも勉強できるけど。 プログラミングは結局書いて覚えるしかない。 サンプルを眺めるだけじゃなく、実際自力で打ち込んで実行させないと。
730 :
デフォルトの名無しさん :2005/07/29(金) 10:08:08
そうだ、さあ学ぶがよい!
731 :
713 :2005/07/29(金) 11:28:30
>>729 ご丁寧に有難うございます!
arrayじゃなくても良いんですか、でも省略してはだめなんですよね?
>>723 public static void main(String[] args)
{
int N = Integer.parseInt(args[0]); /* コマンドライン引数を整数に変換 */
int a[] = { 20, 15, 10, 5, 1 }; /* 初期値を与える */
if (N >= a[0] || a[a.length-1] > N)
{
System.out.println("区間外エラー");
}else
{
int i;
for (i = 1; i < a.length-1; i++)
{
if (a[i-1] > N && N >= a[i])
{ /* ↓Nが属する区間の表示 */
System.out.println("Nは第"+i+"区間に属している");
break;
}
}
}
}
733 :
デフォルトの名無しさん :2005/07/29(金) 11:52:25
頼む。このスレは常時ageてくれ。。。
734 :
707 :2005/07/29(金) 12:03:06
>>709 -san
thank you so much.
735 :
713 :2005/07/29(金) 15:10:19
【不明点】エラーの原因
Exception in thread "main" java.lang.NoClassDefFoundError: xxx (wrong name:xxx)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
>>719 さんに教えてもらったものも、javacは出来ましたがjavaを実行しようとするとこんなエラーが出ます
前にやった.javaを同じフォルダに持ってきてやってみましたが、ちゃんと出来ました
(set pathとset classpathは同じフォルダのバッチファイルに入ってます)
しつこくてすいませんが、エラーの原因がわかる方教えてください
Exception in thread "main" java.lang.NoClassDefFoundError: xxx (wrong name:xxx) ここは本当に「wrong name:xxx」って出てるのか?
737 :
713 :2005/07/29(金) 15:39:27
>>736 xxxのところはorz3みたいな普通のファイル名です
それ以外は同じです
738 :
デフォルトの名無しさん :2005/07/29(金) 16:57:11
早く誰か教えるがいい!
739 :
デフォルトの名無しさん :2005/07/29(金) 17:22:00
なにを
740 :
デフォルトの名無しさん :2005/07/29(金) 17:27:48
どなたかバケットソートのソース教えてください
母さん、
>>719 の4行目を料理してくれんかのぉ…。
これを食べれば長生きできる気がするんじゃよ。
バケットソートってどんなのだ?
>731 名前の無い変数には、後から値を代入したり値を読み出したりすることが出来ない。 「どの」変数に値を代入するかとか、「どの」変数を読む込むかを指定する手段がないからな。 名前が無い人を呼ぶことが出来ないのと同じ理屈だ。 省略できない、というか、省略できたとしてもその後その変数を使う手段が無くなるので意味が無い。 状況によっては無名の変数(のようなもの)を使う場合もあるが、それはずっと先のお話。 >741 publicがどうとかmainがどうとか説明するのが面倒だったので「一致させろ」と思わず言ってしまった。 別に問題は発生しないし、無駄に長い説明をしても混乱するだけだろうと思った。 今は反省していない。
745 :
741 :2005/07/29(金) 23:38:29
>>744 すまん、漏れはただ713に対して「719の4行目を読んでファイル名修正すれば幸せになるんじゃね?」
と言いたかっただけなんだ。
今は反省している。
746 :
デフォルトの名無しさん :2005/07/30(土) 17:23:25
【Java 歴】 4ヶ月 【 種別 】 丸投げ 【 課題 】 信号機の機能を持つ Signalクラスを作成してください。 Signalクラスはフィールドに String型で名前がstrの 信号の状態を持ち,"赤" "青" "黄"のいずれかを持つ。 メソッドには setRed() setBlue() setYellow() show() を持つ それぞれ,赤色,青色,黄色に変更と現在の信号の色を表示する。
>>746 public class Signal {
private String state;
public void setRed() { this.state = "赤"; }
public void setBlue() { this.state = "青"; }
public void setYellow() { this.state = "黄"; }
public void show() { System.out.println(this.state); }
}
748 :
デフォルトの名無しさん :2005/07/30(土) 18:06:10
たわけ
stateじゃなくてstrだろ。4万点減点。 それ以前にこのクラスの設計がマイナス53万点。
すいません。javaのBeanって比較できないですか? 更新前と更新後を比較して違ってれば更新または登録ってしようようとすると 100個のGet、Setがあれば全部取り出して 比較するしかないんですか? クローンまでは調べてわかったんですけど・・・。 変更されたかどうかとか知りたいこと多いと思うんですけど。 一般的なJavaな人はどうしてるんでしょう?
>750 equals()とかで出来ないか? (実装されてる事が前提だが)
752 :
707 :2005/07/31(日) 03:46:06
>>752 1.2.3. での入力例を具体的に。
4. の readBoolean() とは java.io.DataInput#readBoolean() のことか?
754 :
752 :2005/07/31(日) 06:41:27
すいません、上のリンクの具体的な入力例を加えました。 よろしくお願いします。
755 :
752 :2005/07/31(日) 06:46:38
>752 >もし、焼き方がマニュアルならパンのドウをloaf shapingの後で動かすように指示する パンのドウってなに? rtf開くのマンドクセ('A`)
757 :
デフォルトの名無しさん :2005/07/31(日) 10:02:15
ドウはパンの元になるコネコネしたものだとおもうんですが。。 ユザーにパンのドウを動かす指示のメッセージを出すだけなのであまり 気にしなくていいと思います。 rtfすいません。
759 :
デフォルトの名無しさん :2005/07/31(日) 13:52:18
コンパイルしないよ=
>759 JDK5.0使え。
>>751 遅レスですんません。
「実装されている」っていうのがよくわかりません。
equalsはふつうにdatabean.equals(databen2);
とかやったらクローンしたばっかでも
falseが返ってきたからだめかなぁと思ってたんですが・・・。
Javaな人からすれば基本的なことなのかもしれませんが
このJava歴1月にはちょっと難しくて・・
Vector a; a = new Vector(); a.addElement("abc"); a.addElement("bcd"); a.addElement("cde"); for (int i = 0; i < a.size(); i++) { char c = a.elementAt(i).charAt(0); System.out.println(c); } ただ配列に文字列を入れてプリントするプログラムですが、このプログラムをコンパイルするとエラーが出ます。 キャストを使って直したいのですが教えてくださいお願いします。
>762 char c = a.elementAt(i).charAt(0); を char c = ((String)a.elementAt(i)).charAt(0); に。
764 :
デフォルトの名無しさん :2005/08/01(月) 01:05:37
765 :
デフォルトの名無しさん :2005/08/01(月) 01:17:24
javaプログラム作ってください ■英単語をカウントするプログラム■ 引数に○○.txtを指定(テキストにはスペース区切りで英単語が書いてある) もしテキストに「I I you you you she she he」と書いてあったら Sortして you 3 I 2 she 2 he 1 と表示したいのですが、2つのクラスを用いて作ってください!!お願いします I I you you you she she he と、スペースごとに改行はできたのですが・・・そこからどう、進めていいのかわかりません
766 :
デフォルトの名無しさん :2005/08/01(月) 02:29:49
結果表をSortするプログラム。 下記の表で2の項目を選択すると、 1 | 2 -------- A | 24 B | 36 C | 8 ↓ 1 | 2 -------- B | 36 A | 24 C | 8 に並び変わるプログラム。 javascriptでもいいです。 ご存知の方お願いします。
>>765 Q52_765.java
使い方: java Q52_765 file.txt
import java.io.*;
import java.util.*;
public class Q52_765 {
public static void main(String[] args) {
String fileName = args[0];
Map map = new HashMap();
try {
WordReader wr = new WordReader(new FileReader(fileName));
String word;
while ((word = wr.nextWord()) != null) {
int count = map.containsKey(word) ? ((Integer)map.get(word)).intValue() : 0;
map.put(word, new Integer(count + 1));
}
wr.close();
Iterator it = map.keySet().iterator();
while (it.hasNext()) {
String key = (String) it.next();
System.out.println(key + " " + map.get(key));
}
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
768 :
767 :2005/08/01(月) 12:24:39
class WordReader extends FilterReader { public WordReader(Reader in) { super(in); } public String nextWord() throws IOException { StringBuffer sb = new StringBuffer(); int ch; while ((ch = read()) >= 0) { if (Character.isWhitespace((char) ch)) { if (sb.length() > 0) break; } else { sb.append((char) ch); } } String s = sb.toString(); return s.equals("") ? null : s; } }
769 :
デフォルトの名無しさん :2005/08/01(月) 15:12:07
javaでループを終わらしたい時につかうCで言うend ifみたいな表現方法 はないですか??
Cで言うend ifってなんですか? Cでは一度も見た記憶がないのですが
#endif のこと?
772 :
デフォルトの名無しさん :2005/08/01(月) 15:24:18
さあ、早く答えるがいい!
}
うむ、的確な回答だ。
775 :
デフォルトの名無しさん :2005/08/02(火) 02:24:31
今までに習った知識で何でもいいから、自分でプログラムを作るとかいう無茶な課題が出ました。 ここまでの知識で何かオススメのプログラムがあったら、教えてください。 1、 クラスとオブジェクト 2、 プリミティブと参照 3、 メソッドとインスタンス 4、 java API 5、 継承とポリモーフィズム 6、 インターフェースと抽象クラス 7、 コンストラクタとガーベージコレクション 8、 数値の扱いとスタティック変数、メソッド 9、 例外処理 10、GUIの基礎 11、Swing まで学びました。何かいいアドバイスをお願いします。
777 :
775 :2005/08/02(火) 04:02:19
>>776 アドバイスありがとうございます。
ソース分かります?
778 :
775 :2005/08/02(火) 04:22:56
あと、すいません。 できたら、結構複雑なのがいいです 10分くらいでそのプログラムについて、解説とかしなければいけないので
779 :
デフォルトの名無しさん :2005/08/02(火) 06:35:54
エッチゲームを作ろう!
>>755 ここまでやって何のアイデアも浮かばないんじゃおわっとる。
授業中の例題とか改造すればどうにでもなるだろ。
>>799 意外とお勧めだったりして(w
GUI、ファイル入出力、簡易スクリプト実行エンジンとか、いい発表ネタになりそうだ。
電卓は結構複雑だぞ
782 :
デフォルトの名無しさん :2005/08/02(火) 10:03:12
さあ、早く作るがいい!
783 :
デフォルトの名無しさん :2005/08/02(火) 13:10:03
一文字の文字をインプットして、それ相応のアウトを出したいんですが、 反応しません。何故でしょうか? コードは以下の通りです。 import javax.swing.JOptionPane; public class numSchoolApp { public static void main(String[] args) { int totalPaper =0; int paperOrder=10; int totalRibbon=0; int totalLabel; int labelOrder=10; String inventory = JOptionPane.showInputDialog("Enter a letter to select an operation"); //int nB = Integer.parseInt(number); if((inventory=="B")||(inventory=="C")) System.out.println(totalPaper =+ paperOrder); else if((inventory=="E")||(inventory=="F")||(inventory=="D")) System.out.println(totalRibbon++); else if((inventory=="A")||(inventory=="X")) System.out.println(totalLabel =+ labelOrder); else if(inventory=="M") System.out.println(" Do nothing"); } }
784 :
デフォルトの名無しさん :2005/08/02(火) 14:27:19
下のコードの中でどれがエラーになりますか? また何故、いつエラーになりますか? int [] x = new int[10]; int [] y = new int[10]; i = 1; x(i) = 7.5;
786 :
デフォルトの名無しさん :2005/08/02(火) 15:20:04
【Java 歴】 3週間 【 種別】 メソッド 【 課題】 以下の動きをするメソッドを書いてください。メソッドはarray argumentを 持っていて、arrayと同じタイプの"result"をreturnする(int [])。 そして、メソッドはarrayの要素を"result"に逆並びに コピーする。お願いします。
787 :
784 :2005/08/02(火) 15:23:44
>>785 動かし方があっているのか分からないのですが、
こんな感じであってるでしょうか?
int [] x = new int[10]; // OK
int [] y = new int[10]; // OK
i = 1; // エラー. iのタイプが定義されてない。
// コンパイル中にエラー発見される。
x(i) = 7.5; //エラー"x"が定義されてない。
//コンパイル中に発見される。
>>787 それでOK。
ただし、x(i) については、コンパイラがそれを x という名前のメソッドと
解釈するために「定義されてない」という趣旨のコンパイルエラーになるが
題意的には、一行目で宣言している配列 x の添え字指定を [] と間違えて
() としているために動かない、と答えさせたいのかもしれない。
789 :
デフォルトの名無しさん :2005/08/02(火) 17:33:18
>>786 メソッドがarray argumentを持つ?
引数に取るではなくて?
もしくはクラスが持つ?
791 :
デフォルトの名無しさん :2005/08/02(火) 18:20:58
そうだ悩むがよい!
>>783 inventory=="B" とかを、全部 inventory.equals("B") とかに変更。
ヒント: ==は同じオブジェクトかどうかを比較、.equals()は同じ内容の文字列かどうかを比較。
>>786 array argumentは配列の引数だよな。動作確認任せた【何】
public static int[] copyReverse(int[] a) {
int[] result = new int[a.length];
for (int i = 0; i < result.length; i++) {
result[i] = a[a.length - 1 - i];
}
return result;
}
>775 >780も言ってるが、知識としてはJavaでできる事の半分くらいは理解している事になる。 面接で「Javaなら使えます」と言っても支障ないレベル。 APIドキュメントの調べ方も分かってるのなら、大抵の事はできる。 スレッド関係を知らないのならアクションゲームとかは無理だけど。 あと、そんなに無茶な課題じゃないぞ。自由課題を出す教官は多い。 結局、自分で設計して書かないと力がつかないからな。 おまいさんの半分以下の知識で自由課題を出される奴がいる事を考えたら、じゅうぶん恵まれている。
795 :
デフォルトの名無しさん :2005/08/02(火) 21:49:11
796 :
デフォルトの名無しさん :2005/08/02(火) 22:24:17
(℃゜)ゞ
797 :
775 :2005/08/03(水) 04:06:30
>>794 そうですよね。
でも、自分の力では無理です。
自分はjavaを今後は使う必要が無いので、今回の課題だけクリアすればいいんですけど、それは厳しいです
電卓のソースお願いします。
798 :
775 :2005/08/03(水) 04:14:25
課題の期限が金曜までです。 このままじゃ留年しちゃいます。 本当にお願いします
799 :
デフォルトの名無しさん :2005/08/03(水) 04:18:57
【Java 歴】 8週間 【種別】 マル投げ 【期日】 8月4日 【課題】 ArrayList(またはLinkedList)使って、 StackIntインターフェースを実装しているStackプログラムを 書いてください。詳細は以下の通りです。 1.ユーザーによって入れられる接尾辞表現を読んで、それを 評価するプログラムを開発してください。 2.結果はディスプレイして下さい。 3.JOptionPaneを使い、接尾辞表現を読んで出力をディスプレイ して下さい。 4.StringTokenizerを使って、表現を解析して下さい。 5.被演算子は、整数だけでなければなりません。 6.演算のセットは {+, -, *, /, %}。 7.表現が無効ならば(例.3 4 + +5)、exceptionを投げて、 エラーメッセージをディスプレイして下さい。 すいません、よろしくお願いします。
800 :
デフォルトの名無しさん :2005/08/03(水) 04:31:52
おお、課題が来ておる さあ、はやく回答するがよい!
801 :
デフォルトの名無しさん :2005/08/03(水) 04:35:45
>>798 留年など恐れてはならぬ!
自らの思うままに進むが良い!
802 :
775 :2005/08/03(水) 05:03:20
>>801 そんな冷たいこと言わないで下さい
マジで助けて
803 :
>>797 その1 :2005/08/03(水) 09:13:01
import java.awt.*; import java.awt.event.*; import javax.swing.*; public class HW94 { static double value; static boolean initFlag = true; static char opeFlag; static JPanel panel = new JPanel(); static JLabel label = new JLabel(); static JButton[] btn = new JButton[17]; static ActionListener numEvent = new Number(), opeEvent = new Operator(), equalEvent = new Equal(), clearEvent = new Clear();
804 :
>>797 その2 :2005/08/03(水) 09:14:10
public static void main(String[] args) { ActionListener[] als = new ActionListener[] { numEvent, numEvent, numEvent, opeEvent, numEvent, numEvent, numEvent, opeEvent, numEvent, numEvent, numEvent, opeEvent, numEvent, clearEvent, equalEvent, opeEvent, clearEvent }; String[] btnLabel = { "7", "8", "9", "/", "6", "5", "4", "*", "3", "2", "1", "−", "0", "C", "=", "+", "AC" }; for (int i = 0; i < btnLabel.length; ++i) { btn[i] = new JButton(btnLabel[i]); btn[i].addActionListener(als[i]); btn[i].setFont(new Font("Dialog", 1, 20)); panel.add(btn[i]); } label.setText("0"); label.setFont(new Font("Dialog", 1, 30)); label.setOpaque(true); label.setBackground(Color.white); label.setBorder(BorderFactory.createLoweredBevelBorder()); panel.setOpaque(false); panel.setLayout(new GridLayout(5, 4, 8, 8)); JFrame frame = new JFrame(); JComponent cp = (JComponent) frame.getContentPane(); cp.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8)); cp.setBackground(new Color(230, 230, 230)); cp.setLayout(new BorderLayout(8, 8)); cp.add(label, BorderLayout.NORTH); cp.add(panel); frame.setSize(new Dimension(300, 400)); frame.setResizable(false); frame.setVisible(true); }
805 :
:>>797 その3 :2005/08/03(水) 09:15:16
static void error(String text) { value = 0; opeFlag = 0; initFlag = true; label.setText(text); Component[] cs = panel.getComponents(); for (int i = 0; i < cs.length - 1; ++i) { cs[i].setEnabled(false); } } static class Number implements ActionListener { public void actionPerformed(ActionEvent e) { if (opeFlag == 0) { value = 0; } String text = null; if (initFlag) { text = ""; initFlag = false; } else { text = label.getText(); } text += (((JButton) e.getSource()).getText()).toString(); if (text.length() > 16) { error("エラー(桁溢れ)"); return; } label.setText(text); } }
806 :
>>797 その4 :2005/08/03(水) 09:16:07
static class Operator implements ActionListener { public void actionPerformed(ActionEvent e) { if (opeFlag != 0) { equalEvent.actionPerformed(e); } if (label.getText().startsWith("エラー")) { return; } opeFlag = ((JButton) e.getSource()).getText().charAt(0); value = Double.parseDouble(label.getText()); initFlag = true; } } static class Equal implements ActionListener { public void actionPerformed(ActionEvent e) { if (initFlag || opeFlag == 0) { return; } double num = Double.parseDouble(label.getText()); switch (opeFlag) { case '+': value += num; break; case '−': value -= num; break; case '*': value *= num; break; case '/': value /= num; }
807 :
:>>797 その5 :2005/08/03(水) 09:16:57
if (Double.isNaN(value)) { error("エラー(非数)"); return; } if (Double.isInfinite(value)) { error("エラー(無限数)"); return; } if (String.valueOf(value).length() > 16) { error("エラー(桁溢れ)"); return; } if (value % 1 != 0) { label.setText(String.valueOf(value)); } else { label.setText(String.valueOf((int) value)); } initFlag = true; opeFlag = 0; } }
だからUPロダ使えっつーの
809 :
::>>797 その6 :2005/08/03(水) 09:32:06
static class Clear implements ActionListener { public void actionPerformed(ActionEvent e) { if (((JButton) e.getSource()).getText().equals("C")) { if (initFlag) { return; } } else { opeFlag = 0; value = 0; Component[] cs = panel.getComponents(); for (int i = 0; i < cs.length; ++i) { cs[i].setEnabled(true); } } initFlag = true; label.setText("0"); } } }
810 :
デフォルトの名無しさん :2005/08/03(水) 10:23:45
そうだ、もっとソースコードを貼るがよい! このスレを埋め尽くすのだ!
811 :
デフォルトの名無しさん :2005/08/03(水) 10:26:44
【Java 歴】 3ヶ月 【 種別 】 丸投げ。 【 課題 】 信号機の機能を持つ Signalクラスを作成してください。 Signalクラスはフィールドに String型で名前がstrの 信号の状態を持ち,"赤" "青" "黄"のいずれかを持つ。 メソッドには setRed() setBlue() setYellow() show() を持つ それぞれ,赤色,青色,黄色に変更と現在の信号の色を表示する。 お願いします
814 :
デフォルトの名無しさん :2005/08/03(水) 12:21:16
信号機課題を作るのだ! さすれば、交通事故も減るだろう!
815 :
デフォルトの名無しさん :2005/08/03(水) 12:34:34
すいません、よかったら
>>799 もよろしくお願いします。
816 :
デフォルトの名無しさん :2005/08/03(水) 12:39:04
そうだ、799も答えるのだ。 Javaプログラマよ。立ち上がれ!
817 :
775 :2005/08/03(水) 16:56:34
818 :
>>799 その1 :2005/08/03(水) 18:32:37
import java.util.*; import javax.swing.*; public class HW107 implements StackInt { static final int ADD = 0, SUB = 1, MUL = 2, DIV = 3, MOD = 4, HEAD = 5, TAIL = 6; static final int EQU = 0, HIG = 1, LOW = 2; static final char[][] map = { // + - * / % h t /* + */ { EQU, EQU, LOW, LOW, LOW, HIG, HIG }, /* - */ { EQU, EQU, LOW, LOW, LOW, HIG, HIG }, /* * */ { HIG, HIG, EQU, EQU, EQU, HIG, HIG }, /* / */ { HIG, HIG, EQU, EQU, EQU, HIG, HIG }, /* % */ { HIG, HIG, EQU, EQU, EQU, HIG, HIG }, /* h */ { LOW, LOW, LOW, LOW, LOW, EQU, LOW }, /* t */ { LOW, LOW, LOW, LOW, LOW, HIG, EQU }, }; public static void main(String[] args) { while (true) { String line = JOptionPane.showInputDialog(null, "", "式の入力", JOptionPane.QUESTION_MESSAGE); if (line == null || line.trim().length() == 0) { break; } try { int result = calculate(line); JOptionPane.showMessageDialog(null, "解答は " + result + " です", "エラー", JOptionPane.INFORMATION_MESSAGE); } catch (Exception ex) { JOptionPane.showMessageDialog(null, ex.getMessage(), "エラー", JOptionPane.WARNING_MESSAGE); } } }
819 :
:>>799 その2 :2005/08/03(水) 18:33:11
static int calculate(String line) throws Exception { StringTokenizer st = new StringTokenizer(line, "+-*/%", true); LinkedList numList = new LinkedList(); LinkedList opeList = new LinkedList(); opeList.addLast(new Integer(HEAD)); int sign = 0; boolean endFlag = false; while (!endFlag) { if (!st.hasMoreTokens()) { endFlag = true; sign = TAIL; } else { String token = st.nextToken().trim(); if (token.matches("\\d+")) { numList.addLast(new Integer(Integer.parseInt(token))); continue; } else if (token.equals("+")) { sign = ADD; } else if (token.equals("-")) { sign = SUB; } else if (token.equals("*")) { sign = MUL; } else if (token.equals("/")) { sign = DIV; } else if (token.equals("%")) { sign = MOD; } else { throw new Exception("不正な文字が含まれてます"); } }
820 :
>>799 その3 :2005/08/03(水) 18:34:11
while (true) { int ope = ((Integer) opeList.getLast()).intValue(); int result = map[sign][ope]; if (result == HIG) { break; } if (numList.size() < 2) { throw new Exception("式の記述が不正です"); } opeList.removeLast(); int num2 = ((Integer) numList.removeLast()).intValue(); int num1 = ((Integer) numList.removeLast()).intValue(); switch (ope) { case ADD: numList.addLast(new Integer(num1 + num2)); break; case SUB: numList.addLast(new Integer(num1 - num2)); break; case MUL: numList.addLast(new Integer(num1 * num2)); break; case DIV: numList.addLast(new Integer(num1 / num2)); break; case MOD: numList.addLast(new Integer(num1 % num2)); } } opeList.addLast(new Integer(sign)); }
821 :
:>>799 その4 :2005/08/03(水) 18:34:46
if (numList.size() != 1 || opeList.size() != 2) { throw new Exception("式の記述が不正です"); } return ((Integer) numList.getLast()).intValue(); } } interface StackInt { // empty }
長々とソース貼り付けんな馬鹿
いつもの小島露観だろ。 ソースコードがうざいんだよ。氏ね。バカ。
824 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/08/03(水) 18:49:50
>>799 StackInt インターフェースが何なのかよく分からないので、
単純にダイアログに入力された式の解答を表示するプログラムに
しました。
てめー、この状況で平然とカキコしてんじゃねー うざいって言ってんだよ。返答しろ。
826 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/08/03(水) 19:06:02
私がナポレオン・ボナパルトだ!
827 :
Mb :2005/08/03(水) 19:30:00
厨房大杉でアクセスしにくくて埒が明かん。 これだから夏休みは……
828 :
799 :2005/08/03(水) 20:59:54
【Java 歴】 3ヶ月 【 種別 】 質問 【 課題 】 AppletとJButtonを利用して、ボタンを押したらランダムな大きさの●を描画しなさい。 【不明点 】 アプレットにボタンを貼り付けたいのですが上手く行きません。 なぜかpaint()メソッドを入れるとボタンが表示されなくなってしまいます。 JPanelを用意してそこにボタンを貼り付けたのですが、それでもpaint()を書くとボタンが消えてしまいます。 どうすればアプレットの描画パネルとボタンのあるパネルを共存させられるのでしょうか? 【 期限 】 8/8までです。 よろしくお願いします。
830 :
デフォルトの名無しさん :2005/08/03(水) 21:52:52
描画パネルとボタンが共存できないとは、何とも深刻なテーマだ! 日本人と在日コリアンの共存問題にもつながるな! 差別意識をなくせ! さすれば異なるもの同士共存できるであろう!
>829 import java.applet.Applet; import java.awt.Graphics; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JPanel; public class AppletDemo extends Applet implements ActionListener { private JButton button; private JPanel panel; public AppletDemo() { panel = new JPanel(); button = new JButton("push"); button.addActionListener(this); panel.add(button); add(panel); } public void actionPerformed(ActionEvent ae) { Graphics g = getGraphics(); g.fillOval( (int)(Math.random()*100), (int)(Math.random()*100), (int)(Math.random()*100), (int)(Math.random()*100) ); } } >830 邪魔。
832 :
829 :2005/08/03(水) 23:01:42
>>831 ありがとうございます。
自分でごちゃごちゃやってたのに対しすっきりと書かれていて勉強になります。
ここから勉強のために更にいろいろと改変してみます。
本当にありがとうございました。
833 :
799 :2005/08/04(木) 02:37:51
小島露観sama アルゴリズム書いてください。
834 :
デフォルトの名無しさん :2005/08/04(木) 07:27:51
さあ、はやく書くがよい!
835 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/08/04(木) 08:51:38
1、map[現在の記号][前の記号]で、演算子の優先順位が得られる 二次元配列を用意する。 スタックリスト numList、opeList を用意する。 2、StringTokenizer でトークンを切り出す 3、トークンが数字なら、numList の末尾に加える。 記号なら、その記号と opeList の末尾の記号によって map から優先順位を得る。 4、優先順位が HIGH なら、何もせずに opeList の末尾にその記号を加える。 LOW、EQU なら、opeList の末尾の記号を取り出して、 numList の末尾から二つの数字を取り出して計算する。 計算結果の数字を numList の末尾に加える。 これを繰り返す。 5、opeList の末尾に現在の記号を加える。 〜ループ〜
836 :
デフォルトの名無しさん :2005/08/04(木) 11:47:28
【Java 歴】 4週間 【 種別 】 マル投げ(Array) 【 期限 】 8月4日 午前0時 【 課題 】 地域での集合住宅での調査の結果は一般的な検査に有効です。各々の記録は4桁整数のID番号、 各家庭の年収、家族の数を含みます。調査結果を3つの配列に読ん込んで、 以下の分析を実行するプログラムを書いてください。 1.調査に含められる地域の家庭の数を数えて、データをディスプレイする3段のテーブルを プリントして下さい。(調査を受ける家庭は最高で25です。) 2.世帯収入の平均を計算して、平均を上回る各家庭のID番号と 収入をディスプレイしてください 3.貧困レベルの収入以下の家庭のパーセンテージを測定してください。 貧困レベルの収入を求める公式は p=$6500+$7500*(m-2). mは各家庭の家族の数です。この公式は、貧困レベルが家族の数(m)に依存し、 mが増えるにつれて貧困レベルの収入が増加することを示します。 すいません、よろしくお願いします。
837 :
709 :2005/08/04(木) 12:16:18
小島露観様 有難うございました。 ちょっと気になる事が、あなたはいったい何者ですか?
838 :
デフォルトの名無しさん :2005/08/04(木) 12:42:31
おお、課題が来ておる! はやく回答するがよい!
840 :
デフォルトの名無しさん :2005/08/04(木) 12:53:04
何を言うか! 現在のスレは、アクセス規制で、2チャンネルビューア所持者以外は 見れないのだ! 故に、朕は一般閲覧者も見れる様に、上げておるのだ! 10スレ以下に下がったら、回答者がいなくなるではないか!
夏だねぇ…
>>836 Q836.java 元データがあるなら晒して。やってみたい。
アプロダってどこにあるの??
public class Q836 {
static final int[] ids = {1000, 1001, 1002, 1003};
static final int[] incomes = {1000000, 2000000, 3000000, 4000000};
static final int[] members = {3, 5, 4, 4};
static final int size = Math.min(Math.min(ids.length, incomes.length), members.length);
public static void main(String[] args) { q1(); q2(); q3(); }
static void q1() {
System.out.println("A1: 家庭の数は " + size + " 件です");
System.out.println("ID\tIncome\tMember");
for (int i = 0; i < size; i++) { System.out.println(ids[i]+"\t"+incomes[i]+"\t"+members[i]); }
}
static void q2() {
int avgIncome = 0;
for (int i = 0; i < size; i++) { avgIncome += incomes[i]; }
avgIncome /= size;
System.out.println("A2: 平均世帯収入は " + avgIncome + " 円です");
System.out.println("ID\tIncome\tMember");
for (int i = 0; i < size; i++) {
if (incomes[i] >= avgIncome) { System.out.println(ids[i]+"\t"+incomes[i]+"\t"+members[i]); }
}
}
static void q3() {
System.out.println("A3: 貧困世帯調査");
System.out.println("ID\tIncome\tMember");
for (int i = 0; i < size; i++) {
if (incomes[i] < (6500 + 7500 * (members[i] - 2))) { System.out.println(ids[i]+"\t"+incomes[i]+"\t"+members[i]); }
}
}
}
844 :
デフォルトの名無しさん :2005/08/04(木) 18:19:44
初心者です。大学の宿題で、調べたのですが、どうしてもわからなかったので、わかる方、よろしくお願いします。 以下のソースはコマンドラインからの入力の合計になっていますが、これを除算とした場合、どうすればいいのでしょうか? for文の変更だとは思うのですが…。あと、int r =1; と修正でしょうか。 ↓コマンドライン入力 c:\ java ArrayCount 100 50 10 2 …任意の数を入力 (1)100/50= 20 (2)20/10 = 2 (3)2/2 = 1 …除算の結果をまた除算というようにしたいのですが。 public class ArrayCount { public int result(int[] x){ int r = 0; for(int i = 0; i < x.length;){ r += x[i++]; } return r; } public static void main(String args[]){ ArrayCount ac = new ArrayCount(); int[] x = new int[args.length]; for(int i = 0; i < args.length; i++){ x[i] = Integer.parseInt(args[i]) ; } System.out.println(ac.result(x)); } }
845 :
デフォルトの名無しさん :2005/08/04(木) 18:31:17
さあ、はやく回答するのだ!
>>844 public int result(int[] x){
int r = x[0];
for(int i = 1; i < x.length;){
r /= x[i++];
}
return r;
}
847 :
デフォルトの名無しさん :2005/08/04(木) 18:43:09
ほんとうに助かりました。 ありがとうございました!!
848 :
デフォルトの名無しさん :2005/08/04(木) 20:09:06
このスレの回答率は高いですか? 回答が無い上に、ただ学校側に課題を丸投げしたのがバレるという リスクは避けたいのです。 まあ、学校側にバレる危険性はさほど高くないのですが、回答が来ずに ただリスクを負うのだけは避けたいです。
じゃやめとけ。
お前には聞いてない。どうぜプログラミングもできないだろ。 能力もないくせにいっぱしの口をきくな。
>848 とりあえず、このスレのログを全部読んで解答率を計算してみるところから始めようか。 回答者は単なるボランティアであって、テメェのリスクどうたらに興味なんぞない。
852 :
709 :2005/08/05(金) 03:11:45
>>848 回答率はともかく、Javaの教育・研修に関わっている人間でこのスレの存在を知らない奴はいないよ。
まぁ、いないというのは言いすぎかもしれないが、大学や専門なら出題者にはほぼバレると思って間違いない。
丸投げ回答検出ツールも出回ってるしね。
なにしろ日本で一番有名な掲示板の宿題スレ
企業研修の講師やってますが、ちゃんとチェックしてますよ
855 :
デフォルトの名無しさん :2005/08/05(金) 08:22:52
>>丸投げ回答検出ツール 妄想乙。やっぱり、ここの人達は、無知なオコチャマだな。 つーか、上のレス者は、レベル低すぎ。 本当の回答者常連の人たち来てください
>>855 問題がまだ投げられてないのにまともな回答者が出てくるわけないだろう。
ちょっと暇ができたので覗いてみたが、解答待ちの課題ないのか。
>>848 早く課題晒せよ。
ちなみに漏れは丸投げ回答検出ツール なるものは知らないが、
まともな講師ならこのスレ位はチェックしてると思う。
・・・・まともな講師ばかりじゃないのが現状だけどな。
回答者常連と言うと、あのムカツク男が第一に思い浮かぶので 激しく鬱・・・orz
オブジェクト指向のメリットってなんですか? クラスとメソッドの違いを答えよ。 という宿題が出ましたが意味が分からないです。
出題側が年寄りだと、2chなんて下賎な場所に近づこうだなんて思いもしない予感。 ム板住人でなかったら宿題スレの存在に思い当たりもしないだろうし。 教官が若かったりするとチェックしてる割合が上がるのかねぇ。 TAやってた知り合いは「うちの授業の課題キタ━━━━(゚∀゚)━━━━ッ!!」とか言って笑ってた。 別にメリットもないし、教官に上申はしなかったらしいが。
>>860 TAとはなんですか?
ターミナルアダプダーしか思いつかないです
862 :
デフォルトの名無しさん :2005/08/05(金) 14:40:13
Teacher's Assistant
院生とかか
>859
例えば自動車を考えよう。
自動車のエンジンはガソリンエンジンだったりディーゼルだったりハイブリッドだったりする。
メーカーもバラバラだし、当然パーツや機構は全く統一されていないため、機械としての共通点は殆どない。
だけどどれも「自動車」という同じカテゴリでくくられる。
ガソリンを消費して、ドアと椅子とタイヤがついてて…というという基本構成が同じなら、詳細が違っても「自動車」という同一のカテゴリでくくれるわけ。
「自動車」はとても便利なので、その仕組みが一般化され、多くの人が使うようになった。
また、トヨタの車しか運転した事のない人がニッサンの車を運転できるのは何故か?
踏むとスピードが上がるペダル、回すと方向転換ができるハンドル、のように、人が操作する部分(インターフェイス)が共通だから。
==============================
プログラミングをする際にも、自動車のように便利なものはパーツとして再利用可能なように切り出しておきたい。
この切り出された共用可能なパーツの事を「クラス」と言う。
ペダルを踏む、ハンドルを回す、のような操作は、このクラスに付属する関数という形で表現される。この関数を「メソッド」と呼ぶ。
利点。
空飛ぶ車を発明した時、操作系統を今の車と同じ(車のインターフェイスを使う)にしておくと、今の車のユーザーは迷わずにそれを操作する事ができる。
同様に、別々のクラスに対し同名で同じふるまいをするメソッドを用意しておくと、色々なクラスを同じように扱える。
また、ハンドルとペダルさえ共通なら、メーカーがこっそりエンジンをパワーアップさせてもユーザーは全く困らない。
つまり、プログラムを改良する際にはインターフェイスだけを気にすればいいので、プログラムの改良が容易になる。
ここまでの比喩で概念を掴んだ上で適当に用語辞典でも当たれ。
ttp://e-words.jp/w/E382AAE38396E382B8E382A7E382AFE38388E68C87E59091.html
>>859 > クラスとメソッドの違いを答えよ。
クラスとメソッドの関係は「違い」を論じられるようなものではないと思うけど。
866 :
デフォルトの名無しさん :2005/08/05(金) 15:48:59
まあね、クラスはメソッドの集合なんだしね。。
867 :
775 :2005/08/05(金) 17:30:23
すいません、前に電卓のプログラムをもらった者なんです。 本日、あのプログラムを発表したところ、他に2、3個機能を付け加えてくれと言われてしまいました。 申し訳ないのですが、またお願いします
自分でやれ
869 :
デフォルトの名無しさん :2005/08/05(金) 18:31:17
前の電卓プログラムとやらが、どんなのかは分からないが 2、3個を機能を付け加えろとは、よっぽどアレなやつ だったのかな?
870 :
775 :2005/08/05(金) 18:46:36
前のプログラムは優しい方が803-809に載せてくれました。 どなたかお願いします
871 :
デフォルトの名無しさん :2005/08/05(金) 18:48:10
せめて、どんな機能を付けたいのかくらい希望してくれ。。。。
>>865 すいません。宿題を写し間違えました。
クラスとメソッドの関係を述べよでした。
873 :
775 :2005/08/05(金) 19:22:03
別になんでもいいです。 ルートとべき乗とかできますか?
874 :
デフォルトの名無しさん :2005/08/05(金) 21:23:34
さあ、はやく作るが良い!
867の教官はこのスレで丸投げした事に気付いていて、 機能追加という課題を与えてみてこれも丸投げする様なら 落とそうと考えているなどと妄想してみる。 Math使えば関数電卓くらいまでの機能追加は難しくないから 自分でやってみたら?
あの小島露観のソースじゃ、手直しするのも大変だろう
877 :
デフォルトの名無しさん :2005/08/07(日) 08:56:56
【Java 歴】 4週間 【 種別 】 マル投げ(Array) 【 期限 】 8月6日 午前0時 【 課題 】 授業で与えられたtrue-falseの試験の結果はコード化されて、プログラムへ入力されました。 各学生から与えられるデータは、学生ID番号と10個のtrue-or-falseの答えが含まれます。 初めに、10個の正解(データとしてFTFFTFFTFTを使います)を読み込むプログラムを書いてください。 次に各学生のデータを読み込んで、その正解数を計算して1つの配列に保存してください。 そして、ID番号をその学生のデータの要素に対応する別の配列に保存してください。 最高点"best"を見つけてください。それから、各々の学生のID番号、 得点と成績を示す3つのコラムからなるテーブルをプリントして下さい。 成績のつけ方は、以下の通りです。得点がbestもしくはbest-1ならば"A" , best-2かbest-3なら"B"。それ以外は"F"を与えてください。
878 :
デフォルトの名無しさん :2005/08/07(日) 09:00:39
>877 もう期限過ぎてんじゃん。
880 :
デフォルトの名無しさん :2005/08/07(日) 10:50:21
さあ、はやく作るがよい!
881 :
デフォルトの名無しさん :2005/08/07(日) 13:14:06
【Java 歴】 3週間 【 種別 】 マル投げ 【 期限 】 8月8日 午前0時 【 課題 】 LANで接続されたPC2台間で通信を行い、何種類かの画像を表示、ボタンを押して画像を切り替え、 さらに、別のボタンでPC1に表示されている画像をPC2で表示させる。PC2でも同様のことをする。 グラフィカルなものを作成してください。
882 :
デフォルトの名無しさん :2005/08/07(日) 17:29:29
>>879 すいません、期限は8月9日です。まちがえました。
883 :
775 :2005/08/07(日) 21:36:01
何度もすいません。 どなたか電卓にルートとべき乗の計算機能を加えたものをお願いします 自分で頑張ってみたんですが、無理でした できたら、今日中にお願いします。人生がおわってしまいます
それがあなたの実力なんだから受け入れなさい
教師 「電卓作れるほどなら機能追加くらいできて当然。 できないのであれば誰かにやってもらったと判断して単位やらん」
887 :
775 :2005/08/07(日) 22:03:35
>>885 今がまさにその状況です。
助けてください
888 :
デフォルトの名無しさん :2005/08/07(日) 22:04:35
なんだと! 人生が終わってしまうだと!! それは大変だ! さあ、誰か早く775に救いの手を差し伸べるのだ! 急ぐがよい!
早く終わればいいのに・・・・・・
人生が終わった様子をレポしてください。
892 :
775 :2005/08/07(日) 22:27:11
冷たいこと言わないでください マジで時間ないっす。お願いします
マジレスすると、その状況はもう自力で頑張らない限り問題解決には至らんぞ。 いまここで、誰かが代わりにコードを書いてもお前はその説明ができんだろ?
この状況で小島が機能追加したコード載せたら萎えるな。
895 :
775 :2005/08/07(日) 23:00:28
>>893 とりあえず出せばなんとかなります。
前期のこの授業が終わったら、もう二度とJavaに触れることはないと思うんで、助けてください
896 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/08/07(日) 23:10:49
小島よ。お前はいったい・・・
>>895 目の前でそんな事言ったらぶんなぐってたところだ
10時間後以降にボタンを押すと、「2ちゃんで作ってもらいました」って ネタバレするプログラムとか渡せば面白いのに。
この空気の読めなさといい、小島露観は典型的なプログラムヲタだな。 先月からまた涌いて出て来たけど、夏休みと被るからやっぱり学生か? 職業マだったら、周囲から煙たがられてそう。
901 :
775 :2005/08/07(日) 23:32:37
>>896 どうもありがとうございます。
けど、リンク先が見れないんですが・・・
>900 > 先月からまた涌いて出て来たけど、 ずっといるんじゃないの? 平日の昼間とかにもレスってるから、少なくともまともな社会人じゃないとは思うけど。
>901 バカ!そんなこと書くな!! また小島がここに連レスするだろーが!!
904 :
デフォルトの名無しさん :2005/08/07(日) 23:37:17
>>900 >>先月からまた涌いて出て来たけど
香具師はウジ虫かw
905 :
775 :2005/08/07(日) 23:39:28
>>896 トップから見れました。
どうもありがとうございます。これから、実行してみます
906 :
デフォルトの名無しさん :2005/08/08(月) 01:07:52
ジェネリックを多用すると、やっぱりメモリコストは 高くつきますかね?
>>906 Javaに関して言えばコンパイラがgenericを使わない形にコンパイルするから変わらない
908 :
デフォルトの名無しさん :2005/08/08(月) 08:19:18
>
909 :
ザイン帝國軍帥・伯魔壬旭(小島露観) :2005/08/08(月) 08:25:16
すみません、どなたかTurtle.javaとTurtleFrame.javaとTurtlePanel.javaを 持っていませんでしょうか?
911 :
881 :2005/08/08(月) 13:24:40
912 :
デフォルトの名無しさん :2005/08/08(月) 15:26:59
877です。 よかったらよろしくお願いします。
【 種別 】 マル投げ(Array) 【 期限 】 8月10日 【 課題 】1〜1,000,000 の間の自然数約500 個の値を格納するハッシュ表を作りたい.オープンアドレス指 定法を用いてハッシュ表を構成し,ハッシュ関数の違いによって実行時間がどのように変わるのか, 性能を比較せよ.それぞれの値は乱数で発生させた自然数とし,ハッシュ表への挿入と探索のみを考え,削除は考 えなくてよい.
915 :
デフォルトの名無しさん :2005/08/08(月) 23:08:51
このスレは、必ず上げてください
916 :
デフォルトの名無しさん :2005/08/09(火) 00:30:44
※「全部読む」が表示されないのでリンクを張ってください 【 種別 】 マル投げ 【 期限 】 早めでお願いします 【 課題 】コンソールに1と押しエンターを押すと第一引数を第二引数にコピー、2と押すと第一引数を第二引数に移動,3を押すとexit。第二引数が既にある場合は上書き確認を行いたい。 インターフェースを使って実装したいです。 お願いします。。
918 :
デフォルトの名無しさん :2005/08/09(火) 11:46:16
919 :
デフォルトの名無しさん :2005/08/09(火) 11:50:53
すいません、最後の文章は "project4で使ったStringTokenizer objectを取り替えるために クライアントプログラムを使ってください”と言う事です。 よろしくお願いします。
>918-919 意味が分からないので教えてください。 ・[kW] PP309-315って何? ・ArrayQueueが微妙にコンパイルエラーになってるけど、これは>918が途中まで実装したという解釈でイイ? ・課題はproject4(postfixEvaluatorAppとpostfixEvaluator)でやってることをStringTokenizerを使わずに実装することなのか?
921 :
デフォルトの名無しさん :2005/08/09(火) 12:41:27
だから、ageてください。。。
いやだ
>>921 何をこだわってるのか知らんが、質問者がageればそれでいいじゃん。
924 :
デフォルトの名無しさん :2005/08/09(火) 13:16:56
<<920 返信遅くなりました. [kW]pp309-315と言うのは教科書のページ番号で、リンクの一番上に 張ってあるプログラムがそのページにのっているプログラムで、この課題は そのプログラムを実装するというものです。 project4でやっている事をStringTokenizerを使わずに,リンクの一番上の ArrayQueueを実装するということです。 わかりづらい、文章すいませんでした。よろしくお願いします。
925 :
918 :2005/08/09(火) 13:36:01
すいません、何度も。 一番上のリンク分かりやすい様にアップデートしました。 環状配列(circular Array)を使って、キューインターフェイスを実装して下さい。
926 :
920 :2005/08/09(火) 13:38:10
>918 なんか俺が見たときとArrayQueueのソースが変わってるんだけど…。 Queueってjava.util.Queueじゃないよね? JDK5.0で追加されたものがもう教科書に載っているとは思えないので…。
927 :
918 :2005/08/09(火) 13:40:12
はい、JDK5.0ではありません。
928 :
920 :2005/08/09(火) 13:40:24
かぶった…。 もしかしてQueueも作れって言ってる?
929 :
918 :2005/08/09(火) 13:53:32
Queueは作れとは課題には書いてないのですが、 "環状配列を使って、キューインターフェイスを実装する" これは、Queueを作れと言う事なのでしょうか?
930 :
920 :2005/08/09(火) 14:01:38
> public class ArrayQueue implements Queue { って書いてあるのにQueueがなかったらコンパイルできないよ。 インターフェース分かってないでしょ?きっと。
931 :
920 :2005/08/09(火) 14:06:42
そうですね implements Queue。と言う事はQueueを書くという 事ですね。お願いできるでしょうか?
932 :
920 :2005/08/09(火) 14:21:15
あのね…。
インターフェースってのは実装するクラスありきで書くものじゃないんです。
インターフェースを実装するクラスはインターフェースを見てどういうメソッドを実装すればいいのかが分かるんです。
ArrayQueueから推測して、
public interface Queue {
public abstract Object insert(Object obj);
public abstract Object peek();
public abstract Object remove();
public abstract boolean isEmpty();
}
とかって書くこともできるっちゃーできるけど、それだとなんでArrayQueueがQueueを実装してるのかが分かりません。
たぶん教科書の309ページより前にQueueに関する説明があると思うんだけどなあ。
ついで。
http://www.geocities.jp/drum2295/java_codes/project5.txt のArrayQueue#isEmpty()について。
・メソッド名isEmptlyに余計なl(エル)が入ってます。
・戻り値のbooleanの先頭「b」が全角になってます。
> "環状配列を使って、キューインターフェイスを実装する"
これは Queue というインターフェイスが既にあって
ArrayQueue で Queue を実装する、という意味だから
>>932 の指摘どおり既にどこかに Queue はあるはず。
なんかテンプレの必須の部分が抜けてたりして 質問者によって勝手にカスタマイズされているようなので、もう一度載せておこう。 PG歴、Java歴、種別、バージョン、用語は必須にしてあるので省略したらダメです。 「こうした方がいい」という意見があればよろしく。 質問者用テンプレ Ver 1.2 【 PG 歴 】 プログラミングの経験年(月、日)数を書く(必須)。 【Java 歴】 Java プログラミングの経験年(月、日)数を書く(必須)。 【 種別 】 丸投げ/質問のどちらかを選ぶ(必須)。 【 課題 】 与えられた課題をそのまま書く(なるべく書く)。 【不明点 】 分からないところ、聞きたいことを書く。 【バージョン】 java -versionで表示される1行目を書く(必須)。回答者はなるべく質問者の環境を考慮する。 【 用語 】 数学用語などのフォローを書く(あれば必須)。 【 期限 】 提出期限や解答希望日を書く。 【 備考 】 何かあれば。
935 :
デフォルトの名無しさん :2005/08/09(火) 16:47:08
>>934 自分としては、これでいいと思います。
あまり項目が多いと、やはり面倒でカスタマイズされる傾向が
ありますので・・・
【 課題 】与えられた課題文をそのまま書きます(必須)
【 用語 】数学用語、専門用語の意味、説明を書きます(あれば必須)
【 期限 】提出期限や解答希望日を書きます
【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。
丸投げでない場合は、途中までのソースとその経過報告、
質問点、疑問点を書きます。Javaバージョンの指定もここです。
>>934 どうでもいい事にこだわる奴だな
935くらいで十分だ
【 課題 】乱数で発生させた5つの数字が全て異なっている場合はYを、そうでなければNを表示させなさい ただし、発生させる乱数は0〜9までの範囲とする。 【 期限 】今日までですOTL 【 補足 】乱数の発生のさせ方はわかったのですが、条件文のところで悩んでいます。 幼稚な質問で申し訳ないのですが、知恵をかしていただけたら幸いです。
>>937 1つ確認するが、その0〜9の乱数ってのはintじゃなくてdoubleか?
今日までってのは23:59:59までって事?
940 :
デフォルトの名無しさん :2005/08/09(火) 17:50:17
さあ、はやく答えるがよい!
941 :
937 :2005/08/09(火) 17:51:51
>>937 書き忘れすみません。int型です。
一応、
double rnd;
int rnd2;
rnd = Math.random();
rnd2 = (int)Math.floor(rnd * 9);
こんな感じで書けるのかなぁとは思ったのですが・・・。
>>938 日付が変わるまでに教授にメールを送れたらセーフです。
942 :
デフォルトの名無しさん :2005/08/09(火) 17:53:36
943 :
デフォルトの名無しさん :2005/08/09(火) 17:54:33
>>937 import java.util.*;
public class Numbers {
public static void main(String[] args) {
Set set = new TreeSet();
for (int i = 0; i < 5; i++) {
int num = (int) (Math.random() * 10);
System.out.println((i + 1) + "回目の発生数:" + num);
set.add(new Integer(num));
}
if (set.size() == 5) {
System.out.println("Y");
} else {
System.out.println("N");
}
}
}
>937 // RandomCheckDemo.java public class RandomCheckDemo { public static void main(String[] args) { int[] is = new int[5]; // 乱数生成 for( int i=0; i<is.length; i++ ) { is[i] = (int)(Math.random()*9); System.out.println( is[i] ); } // 数字が全て異なっている場合はtrue boolean isAllDifferent = true; loop: for( int i=0; i<is.length-1; i++ ) { for( int j=i+1; j<is.length; j++ ) { //System.out.println( "i:" + i + " j:" + j ); if( is[i] == is[j] ) { isAllDifferent = false; break loop; } } } if( isAllDifferent ) System.out.println( "Y" ); else System.out.println( "N" ); } }
945 :
944 :2005/08/09(火) 17:58:03
|| Λ||Λ ( / ⌒ヽ | | | ∪ 亅| | | | ∪∪ : : ‐ニ三ニ‐ 遅かったか。。 is[i] = (int)(Math.random()*10); だな。
>>943 そんな卑劣なアルゴリズムじゃ駄目だと思うよ。。。
>>943 >>944 ありがとうございました!
0〜9の場合は10をかけなければいけないんですね・・・。
TreeSet をデータ重複の判定に使うなんてオカシイ。 パフォーマンス的にも沿わない。
別におかしくないだろ Setは重複させない入れ物だし パフォーマンスも悪くないだろ まあTreeSetだとソートされちゃうから出現順保つならLinkedHashSetか
ArrayListでよくね?
952 :
920 :2005/08/10(水) 00:06:13
>>937 Integer[] data = new Integer[]{1, 4, 3, 2, 2};
System.out.println(new HashSet<Integer>(Arrays.asList(data)).size() == data.length ? "Y" : "N");
Integer[] data = new Integer[5]; for (int i = 0; i < data.length; i++) System.out.println(data[i] = (int)(Math.random() * 10)); System.out.println(new HashSet<Integer>(Arrays.asList(data)).size() == data.length ? "Y" : "N");
955 :
デフォルトの名無しさん :2005/08/10(水) 02:43:28
【Java 歴】 4週間。 【 期日 】 8月11日 午前0時 【 課題 】 インターネット上でコンピューターを売る会社のための価格設定システムを作成します。 2種類のコンピュータ、ノートブックとデスクトップがあります。各コンピュータの オプションはプロセッサー(0.8、1、1.2または1.5ギガバイト)CDドライブ(CD-ROM、CD-RWまたはDVD)) を備えています。 ラップトップは、14-15インチのスクリーンを備えています。 デスクトップは15-,17-,19インチのモニター備えています。 オプションはモデム、networkカードとzip driveです。 このプログラムにはcomputer class(abstract class)とnotebook class, desktop class(sub-class)が含まれます。 各subclassにはコンピューター価格を計算するメソッドが含まれます。 (価格はそのコンピューターの基本価格+オプション価格) プログラムにはメモリ価格を計算するメソッド、ハードドライブを計算する メソッド等が含まれるべきです。また、輸送価格を計算するメソッドも 含まれるべきです。 よろしくお願いします。
957 :
デフォルトの名無しさん :2005/08/10(水) 07:57:47
>>955 これは、Webアプリとして開発するのですか?
【 課題 】 与えられた課題をそのまま書く(なるべく書く)。 【 期限 】 提出期限や解答希望日を書く。 【バージョン】 java -versionで表示される1行目を書く(必須)。回答者はなるべく質問者の環境を考慮する。 ↑最低限でもこれだけは必須だろう。 書かないヤツには回答しない旨を次スレのテンプレにお願いしたい。
959 :
デフォルトの名無しさん :2005/08/10(水) 10:56:57
そろそろ立てますが、「回答しない」との厳しい文言は
避けようと思います。
確かに、バージョンはテンプレ項目に入れるべきですね。
ただ必須でなく、書かなかったら全バージョンOKの
デフォルトとするのが良いと思います。
>>955 は、このスレにこれから回答します。
960 :
955 :2005/08/10(水) 12:15:52
すいません、バージョンはnetBeans3.6です。 よろしく、お願いします。
やっぱバージョンはオプショナルでいいのかも。
964 :
918 :2005/08/10(水) 14:03:21
一応、自分でそれなりに書いてみたのですが、まだまだエラーが出て、その
エラーがなんで出ているのかも理解できてないでいます。すいません、一度
見てもらってもよろしいでしょうか??? お願いします。期限過ぎてるけど、
減点もらって出す事にしました。
【 種別 】 エラーに関しての質問
【 期限 】 8月10日 12:00am
【バージョン】 java2 SDK 1.4.2
【 課題 】1.[kW] PP309-315で記述されている、ArrayQueueクラスを実装してください
2.クライアントprogam。
・JOptionPaneを使ってフレーズを読み取って下さい。
・一般的なString methodeを使って、フレーズをトークンに分類(解析)して下さい
(String Tokenizerは使用不可です)。
・ArrayQueueオブジェクトにトークンを入力してください。
・キューをプリントしてください。
・project4のStringTokenizer対象を取り替えるために、
クライアントプログラムを使用してください
http://www.geocities.jp/drum2295/java_codes/project5.txt http://www.geocities.jp/drum2295/java_codes/project5App.txt
965 :
デフォルトの名無しさん :2005/08/11(木) 00:30:41
@ 以下のように入力を促し、実行可能なコマンドを選択させる。 処理を選んでください。 1. 移動する(フォルダやファイルをMoveする) 2. コピーする(フォルダやファイルをCopyする) 3. exit 1〜3を選んでください○(←1〜3を入力してもらう) A 1,2 を選択した場合、src と dest と順に入力を求める。 src > ___ ← パスを入力してもらう dest > ___ ← パスを入力してもらう 実行が完了したら、@に戻る。 B 3 を選択した場合、処理を終了させる。 要件 ■1〜3 以外を入力された場合、再入力を求める ■src に該当するパスがない場合、src がない旨のメッセージを出力して、@ に戻る ■dest に該当するパスが存在する場合、上書き確認を行う…[Y/N]> ___ ← Y/N を入力してもらう お願いいたします。
966 :
デフォルトの名無しさん :2005/08/11(木) 01:51:11
>>955 す、すいません。急にやる事が出来てしまい、今日は手が付けられませんでした。。
宿題ってなによ? 最近じゃ高校とかでJavaやってるの? 進んでるなぁ。
これだから低学歴は。
969 :
デフォルトの名無しさん :2005/08/11(木) 01:56:18
よーし、答えちゃおうかな。 どれに答えればいい?
【 PG 歴 】 PASCALを3年ぐらい。CUIばかりです。 【Java 歴】 1ヶ月。 【 種別 】 ほぼ丸投げ(泣) 【 課題 】 JAVAを使ったGUIプログラムの作成(百ます計算) 【不明点 】 Eclipse3.1とVisual Editorを使っているのですが、GUIプログラミングの手法がまったくわからないです。 一応、Swingが一番やりやすいかなと思って、Swingを使ってやろうとしています。 百ますの入力部分にJTableを使うべきか、TextFieldを使うべきかなど数週間しらべているのですが、 なかなかいい手法が思いつきません。 後、FrameやPanelなどの組み合わせ方や、レイアウトの種類についてもよくわかりません。 (ボーダーレイアウトなど、なんであるのかよく分からないですし) 【バージョン】 java version "1.5.0_04" 【 用語 】 数学用語などのフォローを書く(あれば必須)。 【 期限 】 8月15日 【 備考 】 何かヒントみたいなものでもいいので教えてください;;お願いします;;
972 :
955 :2005/08/11(木) 02:50:58
>>966 12日まで大丈夫なので、時間がある時にお願いします。
>>970 何を作ればいいのかわからん。
縦軸と横軸の数値を入力して「計算」ボタンを押せば結果が全てでてくるみたいな感じ?
>>973 974の方が上げられたような感じのもので、別にタイマーとかの機能は必要ないです。
後は973さんのおっしゃるとおり、数値入力して計算結果出力みたいな感じです。
971さんのいうとおり、AWTのほうが少し簡単みたいですので、AWTで少しやってみます!
977 :
デフォルトの名無しさん :2005/08/11(木) 20:08:48
>>955 どうも課題の意味が分かりません。
値段も分かりませんし。。。
WebアプリなのかGUIを使うのかも不明ですし。。。
残念ながら。。。
978 :
デフォルトの名無しさん :2005/08/11(木) 20:16:26
>>955 すいません。やはり課題が漠然すぎて分かりません。
値段を計算すると言われても。。。
979 :
デフォルトの名無しさん :2005/08/11(木) 20:18:08
>>955 やはりアメリカの学校の課題なんでしょうか?
授業背景が分からないと、どう作るべきなのか
出力と入力が分からないと見当がつきません。
>>955 はクラス構成だけ考えてあげればいいんじゃないの?
UIなんか好きなように作ればいいんだし。
981 :
デフォルトの名無しさん :2005/08/12(金) 08:32:31
【 PG歴 】 Cを2ヶ月。Javaは3週間です。 【 種別 】 ほぼ丸投げ 【ヴァージョン】J2SE 1.42 【 期限 】8月13日午後12時 【 課題 】1.10進法から2進法にコンバートする再帰的(recursive)メソッド を書く。実際に、ユーザーからのインプットされた10進法の値を 二進法の値でアウトプットするテストプログラムを書く。 2.2進法から10進法にコンバートする再帰的(recursive)メソッド を書く。実際に、ユーザーからのインプットされた10進法の値を 二進法の値でアウトプットするテストプログラムを書く。 10進法から2進法に換えるアルゴリズム的な物はあります。これを 使って、プログラムを書いてもらいたいです。 よろしく、お願いします。 Public static String 二進法(int n){ String s; if (n%2 == 0) s=”0”; else s=“1”; if(n<2) { return s; return 二進法(n/2) +s; }}
982 :
デフォルトの名無しさん :2005/08/12(金) 08:34:26
すいません、2番目の問題は”実際に、ユーザーからのインプットされた2進法の値を 10進法の値でアウトプットするテストプログラムを書く”です。失礼 いたしました!
984 :
デフォルトの名無しさん :2005/08/12(金) 14:45:05
>>981 も何とぞお願いします。。。m(_ _)m
987 :
981 :2005/08/12(金) 15:34:26
988 :
981 :2005/08/12(金) 15:41:46
これユーザーにbinaryなりdecimalをインプットさせる事できますか?
989 :
デフォルトの名無しさん :
2005/08/12(金) 16:52:41