★★ Java の宿題ここで答えます Part 68 ★★
2 :
デフォルトの名無しさん :2009/07/19(日) 23:20:07
>>3 ノルムは計算結果さえ表示できれば
テキストファイルに出力する必要はないそうです
>>2 こんなか?
double [][]a = fileInMatrix(inputfolder,matrix_in); //行列用の読み込み
double []b = fileInVector(inputfolder,vector_in); //ベクトル用の読み込み
double []x = fileInVector(inputfolder,vector2_in); //ベクトル用の読み込み
double []solution=new double[a.length];
for(int i=0;i<a.length;i++){
solution[i]=0;
for(int j=0;j<x.length;j++){
solution[i]+=a[i][j]*x[j];
}
}
for(int i=0;i<solution.length;i++){
solution[i]-=b[i];
}
fileOutVector(outputfolder,vector_out,shutsuryoku,solution); //ベクトル用の書き込み
double euqlid=0;
for(double d :solution){
euqlid+=d*d;
}
System.out.println("e-norm:"+Math.sqrt(euqlid));
double max = solution[0];
for(int i=1;i<solution.length;i++){
if(max<solution[i]){
max=Math.abs(solution[i]);
}
}
System.out.println("max-norm:"+max);
>>前すれ998 自分で移植してこその理解だ
>>5 ありがとうございます
実行してみたところ、正しく動作しました
ユークリッドノルムの値をネット上で見つけたもの
stat.sm.u-tokai.ac.jp/~numa/Java/Vectornorm.java
で実行した場合は 215.56152395133645 となったのですが
今回の結果では 215.5615169227253 と若干誤差がでたのですが
このような誤差はなぜ起こったのでしょうか?
>>1 乙です
【 課題 】アクションゲームの基本を作る
@ 左右への移動
A ジャンプ
B 障害物(ブロック)との当たり判定
※キャラクターの画像は各自で用意すること。
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】8月1日まで
【 Ver 】1.6.0_13
【 補足 】@左右移動したときの画像の向きの変更
A当たり判定の大きさを変更できるようにしたい。
※「JAVAでゲーム作りますが何か?」のページでやってみましたが、
補足の@Aの部分が上手くいきませんでした…。
どなたかよろしくお願いします。
>>7 テキストファイルに出力している値は、少数以下5桁しか載ってないからじゃね?
10 :
デフォルトの名無しさん :2009/07/20(月) 20:37:02
前スレの975ですが答えてくれた方ありがとうございました。 質問してからレスしてないので答えてたのは自分じゃないです。 お騒がせしました。
>>10 用意した画像が「縦100横80」で画像の「x15,y1〜x50,y85」部分を
当たり判定にしたいのですが、キャラクターがブロックに触れると
画面外にすっ飛んだり、弾んだりして上手くいきませんでした。
14 :
デフォルトの名無しさん :2009/07/20(月) 23:07:26
>>13 public Point getTileCollision(Sprite sprite, double newX, double newY) {
newX = Math.ceil(newX);
newY = Math.ceil(newY);
double fromX = Math.min(sprite.getX(), newX);
double fromY = Math.min(sprite.getY(), newY);
double toX = Math.max(sprite.getX(), newX);
double toY = Math.max(sprite.getY(), newY);
int fromTileX = pixelsToTiles(fromX);
int fromTileY = pixelsToTiles(fromY);
int toTileX = pixelsToTiles(toX + sprite.getWidth() -1);
int toTileY = pixelsToTiles(toY + sprite.getHeight() -1);
for(int x=fromTileX;x<=toTileX;x++) {
for(int y=fromTileY;y<=toTileY;y++) {
//Outside the boundary
if(x<0 || x>=col) {
return new Point(x,y);
}
if(y<0 || y>=row) {
return new Point(x,y);
}
if(map[y][x] == '1') {
return new Point(x,y);
}
}
}
return null;
}
これの252ページにコードと解説が載っています。
http://books.google.com/books?id=rSs35Uw11okC&printsec=frontcover&dq=java+game
>>14 ありがとうございます!ブロックとの当たり判定はできました。
後は画像の方向だけなのですが。
用意した画像が@立ち(右左)A走り(左右)Bジャンプ(左右)
の6ファイルでそれぞれ別に用意しました。AとBはgifアニメーションです。
よろしくお願いします。
>>16 左右の動きをどう作り込んだか分かりませんが、キャラクタを実装しているクラスに方向フラグを追加して描画時にフラグで切り替える。方向フラグはキーが押された時にアップデートすればよいかな。
19 :
デフォルトの名無しさん :2009/07/21(火) 10:01:03
>>19 ありがとうございます。色々試していたらお返事が遅くなってしまいました。
向きの切り替えはできましたが、
ボタンを押したている間、走る画像に切り替えるのと
空中にいる間、ジャンプ画像に切り替えるというのが上手くいきませんでした…
何度も申し訳ありませんが…またお願いします。
>>20 左右の向きと同じようにジャンプしている状態を判断するフラグをひとつ追加して、
キャラクターの描画時にフラグを見て画像を切り替えればOK。
>>21 ジャンプもその方法でやったのですが…
ジャンプ中に左や右を押すと右や左の画像に切り替わってしまうんです
>>22 ジャンプ時は同じ方向しか向かない(途中で反対方向に移動しない)ような仕様でしょうか?
であれば、ジャンプ時は反対の方向を押されても移動させない。
ジャンプ時も反対方向に移動するのであれば、ジャンプ時用の画像を左右用意する。
細かい実装が分からないのですが、決めの問題かと思います。
24 :
デフォルトの名無しさん :2009/07/23(木) 17:04:43
【 課題 】 配布資料に記載されたプログラムを参考にして、画面にウインドウを 開き、以下の注意点に従い、任意の関数のグラフを描くプログラムを作成せよ。 出力結果の見やすさも採点対象とする。 (1)y=logxのグラフを表示せよ。 また、用いた関数式も表示させよ。 (2)表示したグラフに対してx軸、y軸を表示せよ。 (3) (1)、(2)に加えて、java.lang.Mathクラスを用いて sin関数を表示せよ。 【 形態 】1. Javaアプリケーション 【 期限 】7/24 午後12:30 【 Ver 】java version "1.5.0_05" 急で申し訳ありません よろしくお願いします。
26 :
デフォルトの名無しさん :2009/07/23(木) 18:16:38
配布資料は転記ミスです よろしくお願いします
任意の関数って書いてるけど注意点にある対数関数と正弦関数以外どういう関数をどういう風に与えるの?
ksk
>>26 だったらちゃんと転記しろよ。
(1)〜(3)はどう見ても課題そのもので、
任意の関数を描画するため注意点には見えんのだが。
何を注意すれば良いんだ?
先生、javaでlogのグラフを書く意味が分かりません
>>30 単純だし、ちゃんと描けているかどうかボンクラ学生でも分かるからじゃね?
>>24 java入門GUI編に答えが載ってるよ
たぶん学校の先生もこの本見たんだろうなぁと予想
34 :
デフォルトの名無しさん :2009/07/24(金) 22:17:52
>>32 ちょw出版社つぶれてるおw
俺は持ってるけどね
>>23 お返事が遅くなりましたが、
無事できました。ありがとうございました!
>>35 Str.classで描画している四角形と文字列とバックグラウンドの色を変えれば良いの?
っていうか、期限過ぎてるよね。
>>37 お疲れ。それをベースに敵とか作ってアイスクライマーみたいにすると結構遊べます。お試しあれ。
>>40 さんのを少し改良して、以下のようなif文を追加したいのですが、
上手く反応しません。
bの部分が違うのでしょうか?
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == b){
background = background.next();
rectangle = rectangle.next();
string = string.next();
}
repaint();
}
>>42 多分、やりたいのはこういう事かな?
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("change colors")){
background = background.next();
rectangle = rectangle.next();
string = string.next();
}
repaint();
}
>>43 さんのプログラムでif文の部分は上手く動くようになりましたが、
repaint();によってリアルタイムで時間を表示していたのですが、ボタンを押さないと時間が再描画されないようになってしまいました・・。
>>44 >>40 のStrExはActionEventのソースをコンポーネント自身が知らなくてもいいように分離されているので
特定のボタンをソースとするActionEventだけを色を変更するきっかけとしたいのなら
StrExの方で色を変更するメソッドをactionPerformedでなくchangeColorsとでも名前を変更して定義して
S02Exの方で
final StrEx s = new StrEx();
JButton b = new JButton("change colors");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s.changeColors();
}
});
frame.add(s);
のようにすればStrEx自身は色を変えるきっかけとなるイベントソースが何であるかを気にしなくてすむようになる
そうすれば時刻表示の更新のためのactionPerformedをそのまま使用できる
時刻表示の更新もこの色変更と同じ考え方で実装すればStrEx自体にActionListenerを実装する必要がなくなる
>>47 コンパイルエラーになる原因
1.BadGradeExceptionがStudent.javaで定義されている。
2.PersonクラスにprintGradeメソッドは定義されていない、よって型がPersonなgeorgeは使えない。
3.martinはPersonなのでStudentにキャストする必要がある。
修正箇所
1.BadGradeException.javaというファイルを作ってその中で定義。
2.georgeの型をStudentにするかキャストしてメソッドコール。((Student)george).printGrade();
3.martinの型をStudentにするかキャストするか、そもそもleader使ってないので行ごと消す。
>>47 BadGradeException を Student.java にってのは転載ミスだろ。
1.
16行目: george.printGrade();
george は Person クラスと宣言されているため、Person で宣言されているメソッドしか利用できない。
19行目: Student leader = martin;
leader は Student クラス、martin は Person クラスのオブジェクトであり、
Student は Person だが Person は Student ではないため。
2.
"Name: Jhon" <- 5行目 Person.print() が呼ばれ、名前を表示
"Age: 32" <- 6行目 Person.printAge() が呼ばれ、年齢を表示
"Name: Paul" <- 10行目 Student.print() から super.print() により Person.print() が呼ばれ、名前を表示
"Job: student" <- 10行目 Student.print() の super.print() の後、固定文字列を表示
"grade: 3" <- 11行目 Student.printGrade() が呼ばれ、学年を表示
"Age: 20" <- 12行目 Student.printAge() は無いが親クラスの Person.printAge() が呼ばれ、年齢を表示
"Name: George" <- 15行目 george は Person だが実体は Student のため、Student.print() が呼ばれ、名前を表示
"Job: student" <- 15行目 Student.print() の super.print() の後、固定文字列を表示
"5 is out of range." <- Student のコンストラクタ(10行目)で BadGradeException が発生し、25行目でキャッチされ、26行目で表示
※例外によりcatchに飛んだので、22行目の ringo.print()は実行されない。
51 :
50 :2009/07/27(月) 15:30:49
>>50 "n行目"というのは
1: /* PrintPersons.java に保存 */
2: public class PrintPersons {
:
と先頭にコメントが1行入った状態
すいません、返事が遅れました。
>>48 さん、
>>50 さん本当にありがとうございました!
53 :
デフォルトの名無しさん :2009/07/27(月) 20:07:28
import java.util.Scanner; import java.util.regex.*; public class KeywordExtractor{ public static void main(String [] args)throws Exception{ String keyword = "q=([^&]+)"; Pattern pattern = Pattern.compile(keyword); System.out.print("Input URL: "); Scanner scan = new Scanner(System.in); Matcher matcher; String line = ""; while(scan.hasNext()){ line = scan.nextLine(); matcher = pattern.matcher(line); if(matcher.find()){ String foundWord = matcher.group().replaceAll("q=", ""); System.out.println("Keyword: " + foundWord); }else{ System.out.println("Did not find any keyword in the text."); } matcher.reset(); System.out.print("Try other URL: "); } } }
58 :
54 :2009/07/28(火) 01:22:32
>>56 すまん。こっちでは動いたんだが…。
できれば「動かない」ってだけじゃなくて、「どう」動かないのか教えてくれるか。
コンパイルでこんなエラーになるとか、実行するとこんなエラーが表示されるとか…。
それとも 56 のように実行するとURLを入力する状態にならないといけなかったのか。
59 :
53 :2009/07/28(火) 11:06:33
>>54 >>55 完璧に動作したのを検証しました。
苦手な正規表現の勉強になりました。
先生ありがとうございます!!
53はお騒がせだな。
>>61 ToolInt を ToolDouble に名前を変えて、
内部の int value を double value に変えて、
Scanner.lexDigit() を小数点も取り込んで Double を返すようにして、
こまごまと int → double, Integer → Double にすりゃいいんじゃないか
>>62 実は両方使えるようにしたいんです、言葉が足らずに申し訳ありません。
>>63 double に変えたって整数は使えるだろ
正確さが欲しいなら BigDecimal でも使っとけ
>>64-65 書き込みが遅れてすみません.
ありがとうございました!
>>67 とりあえず、TurtleRectangle.javaがコンパイル通んないんだけど?
>>67 問題文の
> // 初期座標(100, 200), 速度 10, 長さ 15, 赤色
> remocons[3] = new TurtleHexagon(100, 200, 10, 15);
> remocons[3].setColor(java.awt.Color.BLACK);
の添え字は4の間違いだな。
>>67 TurtleHexagon.javaが六角形のはずが五角形を描くし
>>67 とりあえず、引数とループはこんな。
public static void drawFigures(TurtleRemoCon[]trcs ) {
while (true) { // 無限ループ
// 引数の配列を順番に操作し、
// step() メソッドを利用して図を書かせる
for(TurtleRemoCon t:trcs){
t.step();
}
}
}
72 :
67 :2009/07/30(木) 01:22:31
67です。 アップした課題ですが、先程自力で完成させることが出来ました。 レス下さったのにすみません&ありがとうございます! そしてたった今動作確認していて、六角形と書いたにも関わらず、 なぜか五角形の動きをしているのに気付いて、茶を吹いていた所です。 アップ前に見直したはずなのにこの有様は酷い…orz TurtleRectangle.javaは自分の方ではエラーは出なかったのですがなぜだろう…
>>72 そいつだけ文字コードがEUCになってたぞ。
ついでに、Turtle.java の 97行目で
java.util.ConcurrentModificationException が発生するぞぼけ
と講師に言っとけ。
いまどき
private Vector turtles; // must be atomic.
なんて書いてちゃあな。
すいません、
>>67 の課題の中にある問題3なんですが、
どういうことを書けばいいんでしょうか。
例外処理の説明?
>>76 とても大人が書いたとは思えない文章だな…
まじめに作ろうかと思ったけど、学生がつくったっぽさがあった方がいいのか そこは気付かなかった
>>74 このjavadoc通りの構成にして、どう実行したらどう出力されればいいんだ?
ここに出されてる宿題って成果物の仕様とかがあいまいでどこまでつくればいいのか 分からない
>>86 javaで入門レベルの宿題が出来ないやつが質問してるんだから・・・
>>88 少し自分で変えることで完璧なものができました。
どうもありがとうございました。
できましたら、学校の講師に見つかってしまうかもしれないので、
うpろだのファイルを削除してもらえたら嬉しいです。
勝手ではありますが、お願いします
本当にありがとうございました。
>>89 まだ時間はある。
「少し」と言わずあちこちをいじって動かしてみれば、それが「理解」することになるし、
プログラムが自分のモノになるぞ。
問題と回答を各所に無断転載しました
【 課題 】
RacingCar.javaとRaceManager.javaから成るカーレースゲームを作れ
車1台で走るバージョンのソースと,複数台を競走させるバージョンのクラスファイルを配付
車1台バージョンを複数台競走バージョンに改造せよ
【 形態 】
1. Javaアプリケーション(main()で開始)
【 GUI 】
4. 制限なし
【 期限 】
提出期限:8月4日23:59まで
【 Ver 】
1.6.0_11
【 用語 】
【 補足 】
添付ファイル
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/780.zip お願いします
>>93 import java.io.*;
// レーシングカーによるレースの管理
public class RaceManager{
public static void main(String args[]) throws IOException{
int goal = args.length>0?Integer.parseInt(args[0]):72;
RacingCar.setGoal(goal); // ゴールまでの距離の設定
final int ksize = 9;
RacingCar[] rcs = new RacingCar[ksize]; // レーシングカーの生成
for(int i=0;i<ksize;i++){
rcs[i]=new RacingCar();
}
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
boolean flag = true; // レース継続/終了フラグ
System.out.println("START!!");
while(flag){
br.readLine(); // キーボードからの入力を待つ
for(RacingCar rc:rcs){
flag = rc.run() & flag; // 車を走らせる。ゴールしたらfalseが返るので,flagもfalseになる rc.run() & flag
}
for(int i=0; i<goal; i++){
System.out.print("-");
} // 走行1回分の区切り線を表示
System.out.println();
}
System.out.println("FINISHED!!");
}
}
こんな?
>>94 ありがとうございます。間に合いました。
>>95 それは何ですか?
reflectorみたいなものですか?
99 :
98 :2009/08/06(木) 17:12:57
夏休み〜夏休みだよ〜
夏休みの宿題の駆け込みとかあったらイヤだな
jad知らないもんなんだな。もしかしたらeclipseも知らないのかね。 学生ってまぞいことやってるんだな。
>>102 学生に割り当てられるショボイPCだと、最新のeclipseはきついかも知れない。
>>102 昔Jadclipseってのがあったな。今もあるのか知らないけど。
>>103 eclipseはごちゃごちゃプラグイン入れなければ、
バージョン3の方が2の時より軽い気がするが、気のせいか。
10年程前か、始めて使いはじめた頃は正直遅くて使えなかったな。
>>102 つーか、学生にclassファイル渡してこれと同じのを作れって言う
講師ともどもってことだなw
106 :
デフォルトの名無しさん :2009/08/10(月) 16:59:12
わからないことが多すぎて もう自分に向いてない気がしてきた。 問題も全部英語だし、その意味すらもあやふやだし この科目の単位さえ取れればいいのに。
なんか、延々、オーストラリアかどこかの通信制大学の課題を投げてるやつがいたっけ。
109 :
デフォルトの名無しさん :2009/08/11(火) 21:03:20
abstract class Animal { private static int count; public static void increment() { count++; } public static int getCount() { return count; } abstract void noise(); } class Dog extends Animal { public Dog() {}; public void noise() { System.out.println("Woof"); increment(); } } class Cat extends Animal { public Cat() {}; public void noise() { System.out.println("Meow"); increment(); } } public class Counter{ public static void main(String[] args) { Animal[] a = {new Dog(), new Cat(), new Cat(), new Dog(), new Dog()}; for (int i = 0; i < a.length; i++) a[i].noise(); System.out.println(Dog.getCount() + " woofs and " + Cat.getCount() + " meow"); } } なんかおかしいところありますか?
>>109 おかしくはないが、思っているようには動かんだろうな。
暇だから弄るか
>>109 プログラムは書かれている通り動いたぞ
>Woof
>Meow
>Meow
>Woof
>Woof
>5 woofs and 5 meow
113 :
デフォルトの名無しさん :2009/08/12(水) 00:33:54
>>110-112 ありがとうございました。
どう変えれば
3Woofs and 2Meowになるのでしょうか?
【 課題 】3×3のマス目で行うマルバツゲームの作成。人対コンピュータで、難易度の選択が可能。 レベル1 だれでも勝てるようなレベル レベル2 人間と互角 レベル3 勝つことは不可能に近い 【 形態 】2. Applet 【 GUI 】4. 制限なし 【 期限 】8月22日 正午まで 【 Ver 】java version "1.6.0_13"
3x3のマルバツゲームなら最善手で引分けになる そして最善手で進めるのは普通の人間でも十分可能 つまり人間と互角のレベルと 勝つことは不可能に近い=引き分けになってしまうレベルは同じくらいだろう どんな人間を想定しているのか知らないがレベル1とレベル3だけでいいんでは? 人間と互角っていうのがあやふや過ぎる
>>119 「○×ゲームつくれ、あと、工夫したら加点」くらいの課題だったのでは?
>>116 レベル1:人間先手で、交互に置いて、最終的に多く置けたほうが勝ち
レベル2:特定のマスをランダムに決めておいて、そこに置いたほうが勝ち
レベル3:人間先手で、交互に置いて、最終的に少なく置いたほうが勝ち
それ既にマルバツゲームじゃなくね?w
そうか、仕様策定からはいるわけか。。。 うまいな
引き分けは後手勝ちにすればいんじゃね?
人間ってなんだろう?
>>125 それで、レベル1は人間が後手、レベル2はランダムで後手が決まり、
レベル3はコンピュータが後手ということですね。
期限まで時間がまだあるから難易度についての詳細か仕様変更の
>>116 のレス待ちだな
マルバツゲームをするときは、相手に揃えさせたら勝ちって風にすることがある
>>129 その場合でも先攻後攻ともに最善を尽くせば引き分けになる
先手が真ん中取れば相手の反対側に打っていけば絶対そろわないしな
引き分けたら乱数で決めちゃえ
【 課題 】JPEG圧縮データからBMP画像を生成するプログラム。 ただし、ハフマン復号化、逆量子化、逆DCT変換の処理は自ら作成する。 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】4. 制限なし 【 期限 】8月いっぱい 【 Ver 】java version "1.6.0_13"
135 :
134 :2009/08/16(日) 01:35:35
御免!!これも頼みます。 これは一応なんとなくはできてるんだけど、自信がないので。 【 課題 】BMP画像からJPEG圧縮データ生成するプログラム。 ただし、DCT変換、量子化、ハフマン符号化の処理は自ら作成する。 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】4. 制限なし 【 期限 】8月いっぱい 【 Ver 】java version "1.6.0_13"
>>135 自ら作成するというのが死ぬほど難しいな。
jpegに関する資料とかあればやってくれる人いるかも
138 :
134 :2009/08/16(日) 04:21:48
既にハードチップに組み込まれてるほど普及してるのになんでまたjavaで再生産するの? それよりjpegのアルゴリズムのコツをまとめたサイトを作るほうに時間使ったほうが断然いいんじゃないのか。
Palm用にアセンブラで JPEG デコーダ作ったことあったな・・・ その情熱はもう無いわ
141 :
デフォルトの名無しさん :2009/08/16(日) 17:09:04
【 課題 】ろだ2の783でうpしてあります。 【 形態 】1 【 GUI 】4 【 期限 】8月28日まで 事情があり授業にほとんど出れてないので、ほとんどわかりません。。 一応参考書は開いてみたのですが、自力でできる気がしないのでよろしくお願いします。
143 :
141 :2009/08/16(日) 17:57:08
>>142 すみません、やむを得ない事情がありまして。。
よろしくお願いします。
>>141 に限らずだが。
確かに
>>1 に添った書き方にはなってるがな。
もうちょっと、せめてどんなレベルなのか(じゃんけんなのか電卓なのかjpedCODECなのか程度)
一言でいいから書いといて貰えないか。
出来そうもないようなモノをわざわざダウンロードして中身みる手間をかけずにすむ。
学校も高校・高専・専門・大学一般・大学理工に分けてくれると判り易いな
サーブレットプログラミングに関する宿題の質問は受け付けていませんか?
プログラム中でどう使用されているかの説明を求められているわけでなく クラスやメソッドの機能の説明をせよってことなんだから APIドキュメントの記述をそのままコピーすればいいんじゃない?
>>153 すみません、具体的に教えてもらってもいいですか?
ほんと知識が0に等しいもので・・・
158 :
157 :2009/09/01(火) 15:50:39
>>157 参考リンクの逆反復法のソースを見たけど変なプログラムだな。
命名規則は置いておいても再描画のたびに数値計算を最初から繰り返すとか。
改造の大まかな方針としては、
paintの中のコードをそのままmainのコードとして置き換えて、
Drawで始まるメソッドやg.drawStringは数値計算ではなく出力するだけの部分なので、
drawStringについてはSystem.out.printlnでdrawStringの第一引数を与えるものに置き換える。
本来フレームのタイトルになるsetTitleについてもそのまま標準出力に出せばいい。
Drawで始まるメソッドについては与えられた行列やベクトルを表示するためのものなので、
例えばDrawMatVect(g, "*","=", 240, A, B, C, 4,4);なら、
A, B, Cという行列やベクトルの値をループを回して各要素ごとに標準出力に出力するようにする。
行列の要素を行単位で出力するコードくらいは書けるでしょ?
>>159 ありがとうございます。
自身はないですが、やってみます。
他にも回答を下さる方がいましたら、どうぞよろしくお願いします。
忘れてた。 paintの中身をmainに持ってくる場合、 MultMV等のインスタンスメソッドはクラスメソッドにしておかないと呼べなくなる。 メソッドにstaticを付けるのさえ面倒なら、 mainの中身をnew InvPower().calculate();とでもして、 InvPowerのコンストラクタを消して、 paint(Graphics g)をcalculate()と名前を変えてもいい。 extends Frameも要らない。
163 :
162 :2009/09/01(火) 17:27:02
課題そのものはその先があったのか まあ出力の改変方法が分からなくて改変し切れなかったということみたいだから参考程度にしてくれ
164 :
157 :2009/09/01(火) 20:13:08
皆さんありがとうございますm(_ _)m
参考にはなりましたが、
>>162 はLU分解を用いないものでした;
全部で多くても100行程、メソッド数も少なく済ませられるとのことなので、
課題
>>158 を引き続きお願いします。
【 課題 】20億個の数字が入っているファイル(約16GB)をソートし、結果をファイルに出力せよ 数字は32bit(Float)のバイナリフォーマットで記録されている 基準となる実行時間は15分(4 AMD Opteron 848 processors and 8 GB of RAM上) 【 形態 】コマンドプロンプト 【 期限 】9/5 15:00まで 【 Ver 】java version 1.6.0_14 【 補足 】よろしくお願いします
嫌です
>>165 動作確認する気にもならんし。遅くても知らん。つか絶対早くは無い。
import java.io.*;
import java.util.Arrays;
public class Floats {
public static void main(String[] args) throws IOException {
float[] datas = new float[2000000000];
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(args[0])));
try {
for(int i=0; i<datas.length; i++) datas[i] = dis.readFloat();
} finally {
dis.close();
}
Arrays.sort(datas);
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(args[1])));
try {
for(int i=0; i<datas.length; i++) dos.writeFloat(datas[i]);
} finally {
dos.close();
}}}
168 :
デフォルトの名無しさん :2009/09/02(水) 13:34:44
【 課題 】以下のようなコンソールアプリケーションを作成しなさい。 ・画像などのバイナリファイルをコピーする ・プログラムの第1引数でコピー元のファイル名を、第2引数でコピー先のファイル名を指定する ・コピーの際に、必ずバッファリングを行う 【 形態 】1. Javaアプリケーション(main()で開始)/ 【 期限 】本日 【 Ver 】1.6.0_13 よろしくお願いします
>>167 回答ありがとうございます
でも、ファイルが16GBの大きさなので、全部一度に読み込むとメモリが足りません
なんとか、メモリの消費を抑え、15分程度でソートを完了する方法はないでしょうか?
Merge sortで、2個のファイルに分割、その2つのファイルを入力とし、
Mergeしてファイルに書き込む(繰り返し)
というようなことを考えたのですが、いまいちよくわかりません。
170 :
デフォルトの名無しさん :2009/09/02(水) 14:11:15
【 課題 】以下のようなコンソールアプリケーションを作成しなさい。 ・HTMLなどのテキストファイルをウィンドウに表示する ・プログラムの第1引数で指定したファイルを、ウィンドウのJTextAreaで表示する ・読み込みの際、必ずバッファリングを行う 以下のようなコンソールアプリケーションを作成しなさい。 ・HTMLなどのテキストファイルを、別の文字コードに変換してコピーする ・コピー元のファイル名と文字コード、およびコピー先のファイル名と文字コードは、 プログラムの引数ではなく通話的にコンソールから入力する。 ・ファイル名や文字コードの指定ミスがあった場合、エラー内容を表示して再入力を促す。 ・コピーの際、必ずバッファリングを行う。 【 形態 】1. Javaアプリケーション(main()で開始)/ 【 期限 】できれば本日 【 Ver 】1.6.0_13 追加でよろしくお願いします。
そうか、自分でやるのか〜。 先生うれしいぞ〜
>>169 その考えで正解だと思うが、何がいまいち分からんの?
>165 4バイトデータが20億個入った16GBファイルの残り8GB以上は何が入ってるの? 頭から20億個データを読んであとは無視してソート後の出力ファイルは半分のサイズになっていいということ?
174 :
165 :2009/09/02(水) 23:10:18
>>173 本当だ、おかしいですね、混乱させてすみません
4バイトデータが16GB分あるということです だから出力ファイルも同じサイズになります
数字の数は気にしないでください
>>172 何がわからないのかさえもよくわからないというか…
すみません、自分の力不足です
スピードを求めるなら、Merge sortの前に、メモリに読み込める分を分割して読み込んで
Quick sortした方がいいのでしょうか?
>>174 クイックソートは意味ない。
単純に
1.ある範囲ごとに記録するファイルを変更する
2.各々のファイルに関して
2.1そのデータを丸ごとメモリに読めるなら、読んでクイックソート。
2.2丸ごと読めないならそのファイルに関して1に戻る。
3.全てのファイルでソートが終わったら
ソート済みのファイルを、記録範囲が小さい順番に結合する。
こんな感じじゃない?
速度を気にするなら、
1で元ファイルのデータ読み込みで1度に読む量を増やす。
(当然メモリ使用量は増える)
2.1で丸ごと読める上限を上げる。
位じゃないかな?
176 :
172 :2009/09/03(木) 00:19:04
>>174 >>175 に追記
マルチプロセッサなら、
2の処理を複数のスレッドに分配すれば、処理時間は短くなるかも知れん。
あと、メモリ8GB積んでいるってことは64bitOSなんだよな?
遅くていいなら
>>167 は動くはず。
64bitプロセスならデータがメモリに載らないことはない。
177 :
165 :2009/09/03(木) 01:09:18
>>176 すみません、あまり理解できていません…
3 5 4 1 9 8 7 2 15 を、まず一部分ごとにQuick sort して、
3 4 5 | 1 8 9 | 2 7 15 というようにして、このファイルを先頭から交互に2つのファイルに記録し、
その二つのファイルをmergeする(繰り返し)という意味だったのですが、
やはり、はじめのQuick sortは意味がないでしょうか?
学校のサーバで、OSはRedhat Enterprise Linux 5.3です。
もし
>>174 の通りfloatデータが16GB分あるのならデータ個数はintの範囲を超えるので、
たとえメモリが潤沢にあったとしてもデータ全体を収めるfloatの配列を作ることはできない。
また物理メモリサイズと同程度の大きさを確保してデータを収めるために使えば、
JVMやOSその他で使っているメモリが追いやられてしまうので速度的にとても不利になる。
もう少し小さめの例えば4GBくらいのfloat配列を確保して、
(1) 4GB分データをfloat配列に読み込む。
(2) float配列をソートする。クイックソートを使うArrays#sortでもいいし、他の好みのソートでもいいと思う。
(3) ソートされた配列の内容を一時ファイルに書き出す。
(4) (1)-(3)を4回繰り返して4つの一時ファイルを作成する。
ここまでが部分ごとにソートされたデータを作成する段階で、
(5) 1番目と2番目、3番目と4番目に作成した一時ファイルをそれぞれマージして新たなファイルを2個作成する。
(6) (5)で作成した2個のファイルをマージして全体がソートされた出力ファイルとする。
のように2つのファイルの先頭から小さい方(大きい方)を取り出して新しいファイルに出力することを繰り返す。
もちろんファイルの読み書きでは1個ずつとかでなくバッファを利用した読み書きにする。
FileChannelを利用し、バッファも大きいサイズのダイレクトバッファを予め用意して使い回せば、
ファイルの読み書きは少しは速くなるかもしれない。
ディスクの空き容量がそれなりに必要(上の例なら元データ+ソート済みデータ+2段階の一時ファイルで64GB分)なので、
空き容量次第で一時ファイルはマージ終了後にすぐに消さないといけないかもしれない。
それからJVMの最大ヒープサイズの初期設定は物理メモリの1/4か1GBの小さい方なので-Xmxで必要分を指定してやること。
初期ヒープサイズもついでに最初から大きく取っておいてもいいかも。
> たとえメモリが潤沢にあったとしても は余計でした。 メモリ容量のこととJavaの文法的に作れないこととは別の話なので。
181 :
165 :2009/09/03(木) 14:20:19
>>180 何から何までありがとうございます
これを参考にして、頑張ってみます
>>177 もう見てないかも知れんが。
3 5 4 1 9 8 7 2 15 を例にとると、
・データの範囲を0〜19とする。
・データは3つまでしか読めない。
という仮定で、簡略化のため、テンポラリファイルにも3つの値しか書きこまないとする。
テンポラリファイルは7つできる。それぞれ0.dat〜6.datとする。
最初に、3つ読み込む
メモリには「3,4,5」がある。
これを0.dat〜6.datに振り分ける。
この場合、1.datに3,4,5が書き込まれ、他のテンポラリファイルには何のデータもない。
次にもう3つ読む。
メモリには「1,9,8」がある。
これを振り分けると、1→0.dat、9→3.dat、8→2.datとなる。
最後に3つ読み振り分ける。7→2.dat、2→0.dat、15→5.datとなる。
この時点で振り分け終わり。各テンポラリファイルには、
0.dat:「2」、1.dat:「3,4,5」、2.dat:「8,7」、3.dat:「9」、4.dat:「」、5.dat:「」、6.dat:「15」
というデータが入っている。
次に各テンポラリファイルごとに読み込みなおして、クイックソート→書き戻しを行う。
これでテンポラリファイルの内容は
0.dat:「2」、1.dat:「3,4,5」、2.dat:「7,8」、3.dat:「9」、4.dat:「」、5.dat:「」、6.dat:「15」
となる。これを連結すれば
「2,3,4,5,7,8,9,15」
となって全体のソートが完了する。
こんな感じ。
>>182 float範囲内にどう分布しているか分からないのに振り分けてどうするんだよ。
ヘタしたら1ファイルに全部入るだろ。
184 :
182 :2009/09/04(金) 21:45:19
>>183 むしろ振り分けなくてどうやるつもりなんだ?
1ファイルに入ることは何の問題もないだろ。
そのファイルを再分割するだけじゃん。
>>184 狭い範囲に集中してた場合、時間が掛からんか?
186 :
182 :2009/09/05(土) 14:54:44
>>185 何を問題視しているかが良く分からん。
一体何と比較して時間がかかることを懸念しているんだ?
再帰が1段増えるだけじゃん。
再帰の深さもlogNのオーダだよな?
>>186 DataInputStreamがデータ一周なめるだけで15分の大半を消費しね?
ファイル処理の再帰が不用意に一段深くなるだけでアウトになりかねない。(時間制限的に)
バイナリレベルでファイル分割->ソート(一発メモリ上ソート)->マージ
上の流れならいけると思う。
DataInputStreamを最低2周させる必要がある。
ファイル分割以降の処理をCPUコア数で並行処理できても、
最後のマージを工夫しないと結構きついかな。
188 :
182 :2009/09/05(土) 18:57:22
>>187 >バイナリレベルでファイル分割->ソート(一発メモリ上ソート)->マージ
その場合マージの過程が大変じゃね?
と思って最初の分割に一工夫入れてマージ作業を楽にしようと考えたんだけど。
>>187 のやり方だと、マージ処理で次に結果ファイルに書き込む値を決めるときに
ファイルから値の読み込み→ソートという処理を行う必要があるよね?
メモリ上にN個のデータの最小値を決定して、結果ファイルに書き込んで
次に書き込む値を決定するときに、ファイル上のデータ最小の可能性もある訳で、
メモリ上のN-1個のデータで最小値を決めるわけには行かないよね?
俺的にはこの部分が非常にヤバイ(データの偏り関係に関係なく必ずI/O数が爆発する)と
思うんだけど、その辺は大丈夫なの?
189 :
182 :2009/09/05(土) 19:11:47
追記。 俺のやり方が突っ込みまくられてるのは、I/Oのデータ量が 馬鹿にならなくなるからだと思う。 んで、確認しておきたいんだけど、このテの問題って ・I/Oのデータ量を抑えること ・I/Oの要求数を抑えること のどっちが大切なの? 俺は今まで後者だと思っていたんだけど、この認識が 間違い?
>>186 どう再分割するかが問題
狭い範囲にデータが集中しているようなものの場合その再分割を
たとえば値が集中した区画を単純に等分していくなら再帰が一段増える程度では済まんだろ
対象のデータ量の規模が大きいから1段増加するだけでもかなりのロスになる
何かlogNよりも大きい方法と比べているわけでないからlogNのオーダーであることは意味を持たない
結局データの分布を調べないといけないんだが
一度にfloatがとりうる各値の度数を調べるには無理がきかない体だ
確かに分布さえ分かっているのなら分布数え上げソートできなくもないが
何段になるか分からない再帰を行うよりも
オンメモリの範囲で分割して回数の分かっているマージを行う
>>187 の方が現実的
>>188 マージソートについて何か勘違いしてるんじゃないか?
マージ前の各部分については既にソート済みなんだから、
マージは各部分の先頭を見てどちらかを選択していくだけで済む。
192 :
182 :2009/09/05(土) 20:10:36
>>190 理解できた。ありがと。
>>191 勘違いしてた。
いっぺんにマージすることばっかり考えてて、ボトムアップ的に
マージすることが頭になかったわ。
確かに
>>187 が普通のやり方だね。
floatの上位4ビットを使ってテンポラリファイル0〜15に書き出す。 テンポラリファイル8〜15、0〜7の順にバケットソート→結果ファイルに出力。 これで良い気がしてきた。
194 :
193 :2009/09/05(土) 21:13:17
NaNの扱いをどうにかしないとだめか
もちっと期限に余裕があったら182のも書けば165が実際に試してくれたかもな。
196 :
デフォルトの名無しさん :2009/09/08(火) 04:00:11
【 課題 】 1. キーボードから次々に非負整数の入力を受け付け、それらの中での正の最小値を表示するプログラムを作成せよ。 データ入力の終わりは負の整数の入力とする。 2. キーボードから次々に非負整数の入力を受け付け、それらの中での(正の)偶数、奇数、ゼロが それぞれ何個ずつであったのかを*の数で表示するプログラムを作成せよ。 データ入力の終わりは負の整数の入力とする。 【 形態 】1. Javaアプリケーション(main()で開始 ?? 【 GUI 】? 【 期限 】今から2時間後まで 【 Ver 】? 【 補足 】初歩のプログラムの授業の課題で、私自身もさっぱりの状態です・・・ できるだけ基本的なプログラムでお願いします。
197 :
196 :2009/09/08(火) 05:45:57
期限を1時間伸ばします どなたかよろしくお願いいたします
>>196 課題1
public class MainClass {
public static void main(String[] args) {
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.print("整数を入力してね(負数で終了):");
int input = sc.nextInt();
int min = input;
while(0<=input){
if(input<min){
min=input;
}
System.out.print("整数を入力してね(負数で終了):");
input = sc.nextInt();
};
System.out.print("最小の値は ");
if(0<=min){
System.out.println(min);
}else{
System.out.println("定まりませんでした ");
}
}
}
>>196 課題2
public class MainClass {
public static void main(String[] args) {
java.util.Scanner sc = new java.util.Scanner(System.in);
int zero=0,even=0,odd=0;
while(true){
System.out.print("整数を入力してね(負数で終了):");
int input = sc.nextInt();
if(0<=input){
if(input==0){
zero++;
}else if(input%2==0){
even++;
}else{
odd++;
}
}else{
break;
}
};
System.out.println("ゼロの個数:"+zero);
System.out.println("偶数の個数:"+even);
System.out.println("奇数の個数:"+odd);
}
}
200 :
196 :2009/09/08(火) 06:47:36
課題2の結果は、「*」の繰り返しで表示するんじゃないの? 微妙に仕様と違う動きなのが 初心者っぽさの演出にはなっているが…。
非常に付きで助かったんだからいいんじゃないの? 依頼者は動作確認どころか課題そのものを読んでもいないのかもしれないけど
>>201 ああ、そうだっけ。
まあ、そのくらいでき…できるならここに丸投げしてないな。
>>204 Webページの表示はフレーム上、ブラウザ上?
206 :
205 :2009/09/10(木) 21:15:02
207 :
205 :2009/09/10(木) 21:16:04
名前と安価が逆でしたorz
>>206 フレーム上にページを表示するとなると表示はどのレベルまでサポートするの?
209 :
204 :2009/09/10(木) 21:30:15
>>208 普段ブラウザで見ているのと同じ様に表示されるようにしたいのです
上手く答えられなくてすいません
>>209 JEditorPaneレベルならともかく、
明日の昼までにフルブラウザは厳しいな。
っていうか、俺には出来ない。
偉い人、よろしく。
211 :
204 :2009/09/10(木) 22:45:39
うはっ、フルプラウザとまではいかなくても ただWebページが表示されればいいなと思っていましたが、難しいですかね。
212 :
デフォルトの名無しさん :2009/09/11(金) 21:26:32
213 :
デフォルトの名無しさん :2009/09/11(金) 21:28:27
よく見たら期限過ぎてた
214 :
デフォルトの名無しさん :2009/09/11(金) 23:11:27
訂正 語群 11.k=k+1 です 丸投げといったのですが、所々わかったところがあるので追記です アは5.Math.abs((x[k]-x[k-1])/x[k-1])<eps か 9.Math.abs(f(x[k]))<eps イは11.k=k+1 か 13.iteration = k ウは3..breakで間違いないと思います エ、オはわかりません
>>214 ア=5
イ=13
ウ=3
エ=4
オ=12
と思ったけど、12の括弧が閉じてない。
>>216 すみません、12の括弧は書き忘れました
ありがとうございました
218 :
デフォルトの名無しさん :2009/09/12(土) 11:08:51
ここに出てる課題を解けば勉強になると思ってる時期がありました
219 :
デフォルトの名無しさん :2009/09/12(土) 18:33:53
次の数列の和を小数第11を四捨五入して第10位まで求めよ
またそれぞれについて、どちらの方が誤差が少なくなるか
あるいは同じ値になるか?理由もつけて答えよ
N=10 20 30 に対して
(1)納n=1,N](1/(2^n)
(2)納n=N,1](1/(2^n)
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】7月14日
【 Ver 】1.6.0_11
前スレで教えていただいたプログラムの数値部分だけをいじったのですが
2^nをどのように表記すればいいのかがわからず解がうまくでません
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/793.txt (Math.pow(2,k)の所がおかしいのだと思うのですが・・・初歩的なことですみません
よろしくお願いします
>>218 まあ、普段ならしないことをやるチャンスはある。殆どないけど。
222 :
デフォルトの名無しさん :2009/09/12(土) 19:58:25
>>221 答えはわかりませんが、張ったソースは数列の和ではなく誤差を調べるものでした
言葉足らずですみません
>>次の数列の和を小数第11を四捨五入して第10位まで求めよ
の部分は無視してもらって構いません
N=10、20、30の全ての場合で誤差がでず
まったく同じ数値になってしまったのでおかしいなと思って質問しました
>>222 足す順序で誤差が出るってこと?
どうなると誤差を調べたことになるの?
>>219 Math.powが怪しいとか適当なことを言っていないできちんと誤差評価した方が建設的だ
doubleは52ビットの仮数部を持っている
そして1/2のべき乗を2^-1から始めて大きい順か2^-30から始めて小さい順に加算するということは
その総和であるsumでは加算するたびに仮数部のビットを1個ずつ立てていくことになる
つまり2進数表記で
0.1 + 0.01 + 0.001 + ...
というように足した回数桁分の1が並ぶ数が総和になる
doubleでは仮数部の最も大きいビットは1であると決められて省略されているから
この数を表すのに必要な仮数部は29ビットになる
どちらの順から加算を始めたとしても52ビットある仮数部で十分に総和も加算する数自体も正確に表せる
元々正確に表せている数値を10進小数第10位までの表記になっても同じになるのは当然
1/2のべき乗の場合はまあ大丈夫だけど四捨五入は10進数の数値操作なのでdoubleの値の評価に使うときは注意
> この数を表すのに必要な仮数部は29ビットになる N=30の場合ね
>>225 ありがとうございます
誤差は起こり得ないということですね
試しに52ビットを超える場合(N=54以上)でやってみたところ、すべて1.0になりました
これの意味することが、まだいまいち把握できてないのですが
あとは参考書なり読んでみます
お騒がせしてしまって、すみませんでした
>>227 ついでなので
その場合足す数はdoubleで正しく表せるが足される総和の方が正確に表せる範囲を超える
大きい順に足していった場合N=53で総和の仮数部が一杯になり次の2^-54を足した段階で総和は正確に表せず1となってしまう
次の2^-55以降を足してもそれは1のイプシロンつまり機械イプシロン以下の大きさしかないから総和は変化しない
小さい順に足していった場合N=8で総和の仮数部が一杯になり次の2^-7を足した段階で総和は正確に表せず2^-6となってしまう
あとは2^-6、2^-5と足していけば総和は2^-5、2^-4と増えてゆき最後は1になる
>>228 なるほど
まだなんとなくですが、イメージは掴めました
わざわざ詳しい説明をしてくださって、ありがとうございました
またNを書き忘れたorz
>>228 の話はN=60の場合ね
要は有限桁しか表せない浮動小数点では
1 * 2^-m = 0.1111111....111 * 2^-m
とみなされてしまう桁長が右辺の数値にはあるということ
mは大きい順なら0、小さい順なら足し始めた数に応じる
231 :
デフォルトの名無しさん :2009/09/20(日) 16:20:59
【 課題 】以下のようなサーバプログラムCountServer.javaとクライアントプログラム CountClient.javaを作成してください。 [条件] ・サーバは、クライアントから文字列を受信し、その文字数をカウントして 結果をクライアントに返す。 ・クライアントプログラムを実行時に、コマンドラインから、サーバホスト名 java CountClient サーバホスト名 "文字列" ・クライアントは、サーバからの結果を受け取り、画面に表示する。 ・サーバは、ポート番号 4321 で接続要求を受け付けるようにする。 サーバプログラムの実行 >java CountServer クライアントプログラムの実行と実行結果 >java CountClient host1 "Java Programming" 16 【 形態 】Javaアプリケーション(main()で開始) 【 GUI 】制限なし 【 期限 】9月22日午後5時までお願いします。 【 Ver 】1.6.0_11 【 用語 】 【 補足 】丸投げです。お願いします。
233 :
デフォルトの名無しさん :2009/09/20(日) 19:39:06
>>232 CountServer.javaでは4行目で
「インポートされた java.io.DataOutputStream は 1 度も使用されていません」
とエラーが出て、
countClient.javaでは18行目で
「フィールド CountClient.inDataStream はローカルで読み取られません」
とエラーが出ました。
CountServer.javaの方は単純に4行目を削除すればよいのでしょうか?
>>233 それ、使ってないね。決して良いよ。
16:private DataInputStream inDataStream;
33:inDataStream = new DataInputStream(inStream);
決しちゃっていいのか
おう、キッチリと決しちゃってくれ。悔いが残らぬように。
エラーと警告の区別がついていないのはいいのか
学ぶ事を放棄して来たのだから良いんじゃないか。
239 :
232 :2009/09/20(日) 23:06:20
嫌だ
じゃあ好きにしろ
(´・ω・`)やんのかお?
243 :
232 :2009/09/21(月) 17:09:28
もういいって・・・
【 課題 】1.ユニークな9桁の数値100万個を記述した乱数ファイルを作成する ※数値はランダムに生成し作成された順に記述される ※9桁目はゼロであってはならない→×000000001 ○100000000 ※ひとつの数値が1行に記述され改行で区切られる ※乱数ファイルがユニークに作成されている根拠をコメントに書け 2.9桁の数値を入力し、その数値の乱数ファイル上の行番号と 昇順でソートした際の順序番号で表示するアプリを作成する ※乱数ファイルは一度しかパースしてはならない ※ライブラリのデータ構造を使用してはならない(プリミティブタイプ、配列は可) ※ブルートフォースアルゴリズムを使用してはならない 3.エクストラポイント ※検索手順をGUI上で可視化する(制限なし) 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】2. Swing 【 期限 】9月24日18:00まで 【 Ver 】1.6.0_15 【 用語 】 【 補足 】丸投げです。宜しくお願いします。
>>245 >※ブルートフォースアルゴリズムを使用してはならない
制約の意味がわからない
>>246 総当たりの事です。要はO(n)のアルゴリズムではダメ。
>>247 未ソートのデータから検索なんて、他に方法はないのでは?
ソートが出来ない訳ではありませんが、パース出来るのは一度だけです。
251 :
245 :2009/09/23(水) 14:30:49
誰か分かる方いらっしゃらないでしょうか。
>>251 いや、未ソートのデータの検索に総当り以外のアルゴリズムなんて無いだろ。
>>252 一度パースができるとあるので、そこでソートしながら自前のデータ構造にいれれば良いんじゃね。
で、出来上がったデータ構造上をO(log)位のアルゴリズムで検索すれば
ソートオーダの位置と未ソート時の位置を取得できるんじゃないのかな?俺には作れないけど。
>>253 それでいいのならソート自体が目的ではないのでO(n)のメモリが必要なデータ構造を用意する必要はない。
ファイルをスキャンしながら検索対象以下の数値の個数をカウントして、
最後まで読み終わった時点で検索対象が現れていたら、
現れた行番号が「乱数ファイル上の行番号」であり、
検索対象以下の数値の個数が「昇順でソートした際の順序番号」になるので、
行番号と個数を覚えておくだけのO(1)のメモリで済むしファイルを読んだ後の探索もいらない。
でもこれって結局ファイル上ではあるもののO(n)の探索には変わりないんだよね。
ファイルを一通り読んでいいのに探索はO(n)では駄目とかの
>>245 の要求が矛盾しているというか。
Arrays.sortとArrays.binarySearchで許してくれんのかな。 余計かもしれんがDataのamountがIntegerなのはcompareToしたいから? intのまま減算して返せばよくね?
>>257 >Arrays.sortとArrays.binarySearchで許してくれんのかな。
>※ライブラリのデータ構造を使用してはならない(プリミティブタイプ、配列は可)
って文言には反してないが、どうなんだろうね。
出題者の期待している解答ではないかも。
>余計かもしれんがDataのamountがIntegerなのはcompareToしたいから?
yes
intの差の方が良いね。
>>259 >3.エクストラポイント
っていってるし。面白みも無い。
つか、そもそも、主旨が合っているのかどうかもあやうい。
あとはArrays.binarySearchのステップを可視化できたら尚OKか。 えーと、最初にcompareTo呼ばれたDataは50万個目だよね。 staticに(binarySearchによる)compareToの呼び出しカウントを保持しておけば 次回配列インデックスへの差分量がわかるから、compareToの結果を元に追跡可能だな。 表示は極端にシンボル化されるから、仮に配列インデックスの計算誤差があっても無視できるしね。
262 :
245 :2009/09/24(木) 03:50:03
ご対応頂いてありがとうございます。
>>254 最初の読み込みで自前のデータ構造に取り込んでソートすることはOKです。
GUI上のテキストフィールドで入力した数値で複数回検索する必要がありますので、
読み込み時にO(n)であっても以降の検索処理がO(n)で無ければ良いそうです。
>>257 >>258 Arraysは利用出来ません。ソートは自前のデータ構造に対して実装する必要があります。
>>259 >>260 基本的にコマンドではなくGUIでアプリをつくる必要があります。
エクストラポイントについては検索時のツリー構造等の移動/変化を
GUI上に描画してグラフィカルに表示した場合にポイントとなります。
以上、宜しくお願いします。
263 :
245 :2009/09/24(木) 03:51:10
追記: 乱数ファイルを作成するクラスについてはGUIである必要はありません。
>>262 >Arraysは利用出来ません。ソートは自前のデータ構造に対して実装する必要があります。
構造と言っても二分探索は配列で出来るし、実装は退屈だからパス
>基本的にコマンドではなくGUIでアプリをつくる必要があります。
面白味は無いのでパス
>エクストラポイントについては検索時のツリー構造等の移動/変化を
着目している対象くらいは変わるが、構造自体は検索中に変わったりしないのだが…
266 :
デフォルトの名無しさん :2009/09/24(木) 07:59:09
【 課題 】 作曲プログラムの作成について
JAVAで作曲ソフトを作成しなさい。
しかし普通の作曲ソフトではなく、もともと持っていた画像を取り込み、そこに5線譜を引き、点をとって音を再生するというようなものです。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】2. Swing
【 期限 】9月24日18:00まで
【 Ver 】1.6.0_15
【 用語 】
【 補足 】わかりにくくてすいません。
http://nikitoki.blog.so-net.ne.jp/2007-11-17-4 ↑の中でやっているようなことができる作曲ソフトを作りたいと考えています。
よろしくおねがいします
267 :
デフォルトの名無しさん :2009/09/24(木) 08:03:21
↑訂正です 期限は9月26日18時まででした。 すみません。
何言ってんだか、さっぱりだし、宿題感がしねえ
269 :
デフォルトの名無しさん :2009/09/24(木) 10:24:16
【課題提示用テンプレ】 【 課題 】「プログラム言語Java」と「JRuby」の特徴比較について調べ、記述せよ RubyではなくJRubyである点に注意してください。特に、両者に差が あるポイントを明確に論じてください。 【 形態 】その他(記述) 【 期限 】明日まで^^; JRubyの資料が全然なくて困ってます^^; 簡単でもいいのでだれかお願いします
ゆとりか・・・
そりゃ、現時点で学生だろうし、その中でも極限のバカしかここに依頼しないし
>>269 抜け作の君に20代男性からの老婆心だ
とりあえず顔文字つけときゃいいってもんじゃないよ
頼みごとをしようって時にふざけてんの?
資料がないっつーのも苦しい言い訳
プログラムを書くわけでもないし、ちょちょっとまとめるくらい難しくはないでしょ
JavaとJRubyではどちらが早いか、どちらが普及しているか、便利な点、不便な点
そういうのを読み取って羅列する
273 :
245 :2009/09/24(木) 12:18:46
>>265 ありがとうございます。
自前のソート、検索処理の部分もお願い出来ないでしょうか。
>>266 パンをパンと認識するのは人間だからできることだ。
それをコンピュータにやらせるのがどんだけ大変か分かってるのか。
しかもそれを宿題スレで人にやってもらうってか。
もっと要件を限定せい。
public class Kadai01_5 { public static void main(String[] args) { double theta; double f; int divider = 18; for(int i = 1; i <= divider; i++){ theta = Math.PI * i / divider; f = Math.sin(theta) + Math.cos(theta); System.out.printf("孤度 θ: %10.5f [ラジアン]\t\t関数F: %10.5f \n", theta, f); } } }
278 :
デフォルトの名無しさん :2009/09/26(土) 10:05:06
ここは美術のアイデアも教えていただけますか?
forループの数が18回になってる
ああ、Π/18ごとは10度ごとだから18回で良かったのか
何が言いたいのかわからん?間違いを指摘してるのかな? なんか課題ないのー? もう寝るけどさ。
284 :
276 :2009/09/29(火) 09:44:02
すみません。
>>277 をコンパイルして実行してみたのですが実行例と数値が違うみたいです。
>>284 i を0からはじめればいいよ。
for(int i = 0; i <= divider; i++){
【 課題 】以下のプログラムを元に標準偏差も計算できるように変更せよ。数値は実数を受け入れられるようにせよ。データはファイルで与え1.0 2,0 3,0 4,0 5,0 を試してみよ。 標準偏差は全体7カラム。小数点以下5桁で表せ。 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】4. 制限なし 【 期限 】10月6日 【 Ver 】java version "1.6.0_05" 【 用語 】標準偏差 = √1/n煤ix-a)^2 (aはxの平均) 【 補足 】
>>287 import java.io.*;
class k3_1 {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("test2.txt"));
double[] test = new double[5];
for (int i = 0; i < test.length; i++) {
String str = br.readLine();
test[i] = Double.parseDouble(str);
}
double max = test[0], min = test[0], s1 = 0, s2 = 0;
for (int i = 0; i < test.length; i++) {
if (max < test[i]) max = test[i];
if (min > test[i]) min = test[i];
s1 += test[i] / test.length;
s2 += test[i] * test[i] / test.length;
System.out.println(test[i]);
}
System.out.println("最高点は" + max + "です");
System.out.println("最低点は" + min + "です");
System.out.printf("標準偏差は%7.5fです%n", Math.sqrt(s2 - s1 * s1));
br.close();
} catch (IOException e) {
System.out.println("入出力エラーです");
}
}
}
>>289 ありがとうございます。
>System.out.printf("標準偏差は%7.5fです%n", Math.sqrt(s2 - s1 * s1));
この部分のみ、エラー吐いたのですが自己解決できました。
>>291 k3_1.java:33: シンボルを見つけられません。
シンボル: メソッド println(java.lang.String,double)
場所 : java.io.PrintStream の クラス
System.out.println("標準偏差は%7.5fです",Math.sqrt(s2 -
s1 * s1));
^
エラー 1 個
【 課題 】テキストファイルをあらかじめ作っておいて、その内容を表示しながら 別のファイルにコピーするプログラムを書け。 コマンド例(file_a.txtからfile_b.txtへコピーする) 内容例 123456 234567 abcdefg 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】4. 制限なし 【 期限 】10月7日 【 Ver 】java version "1.6.0_05" 【 用語 】 【 補足 】 よろしくお願いします
>>292 > System.out.printf("標準偏差は%7.5fです%n", Math.sqrt(s2 - s1 * s1));
でエラーを吐いたわけじゃなかったのか
>>293 import java.io.*;
public class Copy {
public static void main(String[] args) throws IOException {
BufferedReader in = null;
BufferedWriter out = null;
try {
in = new BufferedReader(new FileReader(args[0]));
out = new BufferedWriter(new FileWriter(args[1]));
char[] buf = new char[10 * 1024];
int n;
while ((n = in.read(buf)) != -1) {
System.out.print(String.valueOf(buf, 0, n));
out.write(buf, 0, n);
}
} finally {
if (out != null) out.close();
if (in != null) in.close();
}
}
}
使い方 java Copy file_a.txt file_b.txt
297 :
デフォルトの名無しさん :2009/10/05(月) 01:09:44
>>293 import java.io.*;
public class TextFileCopy {
public static void main(String[] args) {
String inFile = "file_a.txt";
String outFile = "file_b.txt";
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader(inFile));
bw = new BufferedWriter(new FileWriter(outFile));
String tmpStr;
while ((tmpStr = br.readLine()) != null) {
bw.write(tmpStr);
bw.newLine();
System.out.println(tmpStr);
}
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
try {
if (br != null) {br.close();}
if (bw != null) {bw.close();}
} catch (IOException e) {}
}
}
}
>>297 その方法だとコピーとは言えないな
文字のコピーであって、ファイルのコピーじゃない
>>296-297 ありがとうございます。共に正常に動作確認できました。
>>296 について厚かましいのですが、
>char[] buf = new char[10 * 1024];
この一文は何をしているのか教えていただけませんか?
10240要素の char 配列を作成してる。 なぜ char 配列が必要かは BufferedReader のドキュメント読め。 バッファサイズ(ここでは配列の要素数)に関してはどのくらいがいいかは一概に言えない。
>>298 297じゃないが、そこまでこだわるほどのものには思えないがな。
298ではないが、297はファイル名を引数で渡せない作りになってたり 解答としては微妙だからな。つい突っ込みたくなったんじゃないか?
>>299 ホントにあつかましいな。
自分で調べろ、カス。
>>304 IDE使ってないの?コードコピペしただけで、おかしいって文句言ってくるじゃん
>String shutsuryoku = "%13.10f";
>fileOutMatrix(outputfolder,matrix_out,shutsuryoku);
>static void fileOutMatrix(String outputfolder, String matrix_out, String shutsuryoku, double [][]a)
fileOutMatrix()がdoubleの二次元配列を要求しているのに、Stringを渡したら例外出るさ
内容?眠いから見てない
>>304 4つの引数が必要なメソッドに3つの引数しか渡さずに呼び出している
第4引数に a を指定すればコンパイルは通るけどそれが正しい結果を返すコードかどうかは知らない
自分でA.txtを作って確かめてもしおかしようならA.txtやその正答もうpして再依頼すればいい
>>305-306 ありがとうございます
第4引数にaを指定し、A1.txtを
1,2
2,1
に設定して実行してみたところ
1,2
2,-3
と出力されましたが
正答は
1,2
0,-3
なので、ピボットに選んだ下の列が0になっていないようです
1,2,1
2,1,1
1,1,1
で試したところ、やはり同様に
1,2,1
2,-3,-1
1,-1,1/3
正答は
1,2,1
0,-3,-1
0,0,1/3
となって、行列の下三角?の部分が与えた行列と変化してないようです
間違っている箇所を直していただけたら助かりますorz
お願いします
for(int k=0; k<a[0].length; k++) { for(int i=k+1; i<a[0].length; i++) { n = a[i][k] / a[k][k]; a[i][k] = 0; for(int j=k+1; j<a[0].length; j++) { a[i][j] -= n * a[k][j]; } } } 前進消去部分のみ a[i][k]をピボットで割ったあとそれ自身には0を代入する
勘違いしないために念のために付け加えておく 0を代入するのは無理に0にするためではなく計算しなくても自分自身を引いて0になることがわかっているから ためしにつぎのように0を代入することをやめてj=kから計算を始めるようにしても結果は同じになる for(int k=0; k<a[0].length; k++) { for(int i=k+1; i<a[0].length; i++) { n = a[i][k] / a[k][k]; for(int j=k; j<a[0].length; j++) { a[i][j] -= n * a[k][j]; } } }
312 :
デフォルトの名無しさん :2009/10/09(金) 00:16:13
>>312 真面目にやる気がなくなるほどのif-elseの羅列だw
init()メソッドの一番末尾に追加
((Button)add(new Button("reverse"))).addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StringBuilder buf = new StringBuilder();
for (ListIterator i = v.listIterator(v.size()); i.hasPrevious(); ) buf.append(i.previous()).append(" ");
showStatus(buf.toString());
}
});
もし元ソースのフォーマットに合わせたいならreverse用のボタンreverseBtnをインスタンス変数として定義して
displayBtnの場合を参考にしてinit()メソッドとactionPerformed()メソッドにこの処理を分ける
元のソースから出てる警告は質問者が自分で修正してくれ
314 :
デフォルトの名無しさん :2009/10/11(日) 22:12:01
【 課題 】2進数で000000001から111111111まで作成する。 【 形態 】Javaアプリケーション(main()で開始)/ 【 GUI 】制限なし 【 期限 】10/15 【 Ver 】わからん
>>314 作成するってどういう意味?
000000001
000000010
000000011
000000100
...
111111111
という感じで文字列を表示すればいいの?
問題文はできれば自分で解釈したりせずに原文をそのまま出してほしい
316 :
314 :2009/10/11(日) 23:37:51
問題文:2進数で1から255までの数字を表現しなさい。 ので315のように表示できるようにして欲しいです。
>>314 public class Bin {
public static void main(String[] args) {
final int START = Integer.parseInt("000000001", 2);
final int END = Integer.parseInt("111111111", 2);
StringBuffer sb = new StringBuffer("000000000");
for (int i = START; i <= END; i++) {
sb.append(Integer.toBinaryString(i));
System.out.println(sb.substring(sb.length() - 9));
sb.setLength(9);
}
}
}
念為2進数を扱うメソッドそのものを実装することが目的の場合用 public class Bin2 { public static void main(String[] args) { final int START = parseInt("000000001"); final int END = parseInt("111111111"); for (int i = START; i <= END; i++) showBinaryString(i); } private static int parseInt(String s) { int result = 0, len = s.length(); for (int i = 0; i < len; i++) result += result + s.charAt(i) - '0'; return result; } private static char[] buf = new char[9]; private static void showBinaryString(int i) { int j = 9; do { buf[--j] = (char)('0' + (i & 1)); } while ((i>>>= 1) != 0); while (j-- > 0) buf[j] = '0'; System.out.println(buf); } }
問題文は1から255じゃないかw
>>314 が9ビットだったから
>>317-318 は511まで表示するようにしてる
適当に直してくれ
それに問題では1とか255というように与えられているからparseIntせずに直接START=1,END=255でいいね
>>314 やっぱり255までなのが気になったのでついでに記述をシンプルに
もし9桁必要ならj = 128をj = 256に変更
public static void main(String[] args) {
for (int i = 1; i <= 255; i++) {
for (int j = 128; j > 0; j >>= 1) System.out.print((i & j) == 0 ? '0' : '1');
System.out.println();
}
}
Integer#toBinaryStringを利用していいのなら
for (int i = 1; i <= 255; i++) {
String s = "00000000" + Integer.toBinaryString(i);
System.out.println(s.substring(s.length() - 8));
}
みたいな感じに
本当はStringBufferや1.5以上ならStringBuilderを使えばいいけどこの程度なら変わらない
322 :
デフォルトの名無しさん :2009/10/12(月) 04:34:56
teikadeってどうなったの?
>>314 なんか見たなと思えば
C/C++の宿題片付けます 130代目
http://pc12.2ch.net/test/read.cgi/tech/1250204272/783 783 名前:デフォルトの名無しさん[] 投稿日:2009/10/11(日) 11:31:43
[1] 授業単元:
プログラミング1
[2] 問題文(含コード&リンク):
2進数で00000001から11111111まで表示する。
[3] 環境
[3.1] OS:windows
[3.2] わからん
[3.3] C言語
[4] 期限: 10月15日まで
[5] とくになし。この前for文を習ったばっかり。
どなたか教えてください。例えば、 hoge[]={300,400,500,200,100} をソートしたときに元の配列番号の並びかえで {4,3,0,1,2}として別の配列に格納したいんですがどうしたらいいでしょうか。 テンプレ使うまでもない質問だと思ったので、こんな形ですいません。 よろしくお願いします。
すいません
>>324 の補足です
ソート時にはjava.util.Arrays.sort(hoge)を使います。
>>324 テンプレ使うまでもない質問なら質問スレへどうぞ
>>324 3000,4001,5002,2003,1004をソートして%10
新たにclass作ってimplements Comparable
330 :
デフォルトの名無しさん :2009/10/13(火) 17:28:17
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】10月17日
【 Ver 】1.6.0_11
A=
{-7.29565,6.54738,4.07991}
{-5.58592,7.51773,-1.78163}
{9.22599,-3.26847,-3.03223}
{6.25081,-8.75345,-4.31528}
行列norm ||A||1、||A||∞を求めるプログラムを作成せよ
参考になるかはわかりませんが、複素数ベクトル版の2-norm、∞-normを
求めるプログラムはこれです
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/803.java お願いします
わざわざベクトルノルムのソースを出してきてるということは 誘導ノルムでなく成分に関するノルムが求めるものなのかも… 意味も分からず探し出してきたものを提示しただけかもしれんが 課題は実行列なのに無駄に複素ベクトル用だし
>>331-332 ありがとうございます
いえ、これで合っていると思われます
わかりにくくてすみません
複素ベクトルは授業で少しやったので
少しでも参考になる部分があるかなと
Double.MIN_VALUEというのが初めて見るものなので調べてみます
>>333 その課題のAを含むほとんど全ての行列で大丈夫だけど
ただ零行列のノルムを求めようとすると0を返せないので
maxは素直にDouble.MIN_VALUEでなく0で初期化した方がいいと思う
>>335 なんのことかさっぱりわからんけど、x[0].lengthで死ぬと思う
>>336 零行列というのは全ての成分が0になっている行列
行や列の数が0であるようなものは行列とは普通考えない
||A||1や||A||∞の誘導ノルムは各行や各列の成分の絶対値の和の中で最大のものなので
最大値を検索するときに最大値候補が入るmaxがDouble.MIN_VALUEで初期化されていると
零行列ではmaxを越える和sumがないので本来0を返すべきなのにDouble.MIN_VALUEが返ってしまう
338 :
デフォルトの名無しさん :2009/10/14(水) 12:56:43
>>337 ああ やっと意味わかった
Double.MIN_VALUEって正の数なのか
343 :
デフォルトの名無しさん :2009/10/15(木) 09:33:13
>>342 すいませんアプリケーションでしたorz
【課題】 コマンド引数(Java プログラム実行時の引数)を利用する。 キーボード(標準入力)から単語(アルファベット)入力し,入力した順番と逆の順にモニタ(標準出力)に表示する. 入力した文字列の個数も number of use として表示する。 プログラムの実行結果。 $ java Kadai 1 2 3 4 5 number of use = 5 args[0] = 5 args[1] = 4 args[2] = 3 args[3] = 2 args[4] = 1 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】制限なし 【 Ver 】1.6.0_11 【 期限 】10/16 import.java.io*;を使うそうです。意味不明すぎて丸投げです。お願いします。
超難問だな。単語(アルファベット)の入力は「プログラムの実行結果」で言うところのどれよ?
わかりづらくてすみません。 $ java Kadai "1 2 3 4 5"の部分です
347 :
デフォルトの名無しさん :2009/10/15(木) 20:53:45
【 課題 】コマンドライン引数に任意で入力した文字列に文字列毎にカンマを入れ、カンマ区切りの文字列を カンマ区切りごとに分割し、最後に分割した回数を出力する。 【 形態 】1. Javaアプリケーション(main()で開始) 【 期限 】10月16日AM10 【 Ver 】java version "1.6.0_14" 【 補足 】丸一日悩みましたが結果わからずです。 ソースに含まれる文章を.split(",")で分割できるのはわかったのですが、 コマンドラインで、任意となるとわからなくなりました。 java Bunkatu java,Java,JAVA ↓ java Java JAVA 以上3件に分割しました。 こんな感じです。 よろしくお願いします。
>>344 class Kadai{
public static void main(String[] args)
{
System.out.println("number of use = " + args.length);
for(int i=args.length-1;i>=0;i--){
System.out.println(args[i]);
}
}
}
>>347 public class Bunkatu{
public static void main(String[] args)
{
String[] strary= args[0].split(",");
for(int i=0;i<strary.length;i++){
System.out.println(strary[i]);
}
System.out.println("以上" + strary.length + "件に分割しました。");
}
}
【課題】 キーボード(標準入力)より整数を1つ入力し,その数値までの九九の表を作成し,モニタ(標準出力)に表示する。 二次元配列と for 文を利用する。 各行の数字が縦に揃うように注意せよ。 九九の値の表示部分は以下のようにするのがよい。 int[][]a = new int[n][n]; for(i=0;i<あ;i++){ for(j=0;j<い;j++){ a[i][j] = う; if(a[i][j]<10){ System.out.print(" "); } System.out.print(" " + a[i][j]); } System.out.println(); } 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】なし 【 期限 】10/16 【 Ver 】1.6.0_11 3を入力すると 1 2 3 2 4 6 3 6 9 のような結果になるそうです。お願いします
あ i<n&i<9 い j<n&j<9 う (i+1)*(j+1)
>>351 与えられている部分の前に
System.out.print("1から9までの整数を入れてください:");
int n = Integer.parseInt(System.console().readLine());
int i, j;
の3行を加え
「あ」、「い」は n、「う」は (i + 1) * (j + 1)
355 :
デフォルトの名無しさん :2009/10/15(木) 23:27:05
>>349 ありがとうございます!!!
無事起動できました。
String[] str = args[0].split(",");
for(int i = 0; i < str.length; i++)
ここが思い浮かばなかったです・
素早い回答に感謝します。
【課題】 整数値を値とする5行3列の大きさの2次元配列 a を定義し,0 から 9 までの整数乱数を代入して初期化する。 2次元配列 a をモニタ(標準出力)に表示する。 【形態】1. Javaアプリケーション(main()で開始) 【期限】10/16 【Ver】1.6.0_11 実行結果として $ java Kadai a[0,0] = 8 a[0,1] = 0 a[0,2] = 8 a[1,0] = 9 a[1,1] = 0 a[1,2] = 3 a[2,0] = 0 a[2,1] = 2 a[2,2] = 8 a[3,0] = 0 a[3,1] = 6 a[3,2] = 1 a[4,0] = 3 a[4,1] = 9 a[4,2] = 8 ただし、この例の配列要素の値は整数乱数であるので、場合ごとに異なった値が代入されている。 だそうです。まったく意味がわかりません。お願いします
import java.util.Random; public class Kadai { public static void main(String[] args) { int[][] a = new int[5][3]; Random r = new Random(System.currentTimeMillis()); for (int i = 0; i < a.length; i++) { for (int j = 0; j < a[i].length; j++) { a[i][j] = r.nextInt(10); if (j != 0) System.out.print(" "); System.out.print("a[" + i + "," + j + "] = " + a[i][j]); } System.out.println(); } } }
361 :
デフォルトの名無しさん :2009/10/16(金) 11:53:30
363 :
デフォルトの名無しさん :2009/10/16(金) 15:13:56
>>364 public class Kadai03_5 {
public static void main(String[] args) {
int[] num = {23, 76, 48, 93, 16, 34, 87};
showArray(num);
System.out.println("\t----- Sort -----");
sort(num);
System.out.println("\t----- Result -----");
showArray(num);
}
private static void showArray(int[] a) {
if (a.length != 0) {
for (int i = 0; i < a.length - 1; i++) System.out.print(a[i] + ", ");
System.out.print(a[a.length - 1]);
}
System.out.println();
}
private static void sort(int[] a) {
for (int i = 0; i < a.length - 1; i++) for (int j = i + 1; j < a.length; j++) {
if (a[i] < a[j]) {
System.out.print("Exchange num[" + i + "]=" + a[i] + " for num[" + j + "]=" + a[j] + " ");
int b = a[i]; a[i] = a[j]; a[j] = b;
showArray(a);
}
}
}
}
>>365 すみません。
参考プログラムの穴に埋めるような形でお願いします。
参考プログラムをコピペしてブランクを埋めようとしたんだけど なぜかコピーできなかったからクラス名とかだけ参考にしたよ
>>367 すみません。
この形式ではコピーできませんよね、失礼しました。
public static void main(String args[]){
int num[] = {23,76,48,93,16,34,87};
int num_work;
int i,j,n=7;
for( i = 0; i < n; i++)
System.out.print(num[i] + " , ");
System.out.println("\n \t----- Sort ----- ");
ここから下をお願いします。
369 :
デフォルトの名無しさん :2009/10/17(土) 12:16:48
パソコンを変えて環境変数をpathで設定したがプロントでjavaってやると英語が大量に原因がわかりません。 最後の部分コピペしてきました。 ommon Files\Roxio Shared\10.0\DLLShared\;C:\Program Files\Java\jdk1.6.0_13\bin binのオブジェクト名のところC:\Program Files\Java\jdk1.6.0_16\bin
370 :
デフォルトの名無しさん :2009/10/17(土) 12:18:58
あ,13じゃなくて16になってます。スミマセン それでも無理です
371 :
デフォルトの名無しさん :2009/10/17(土) 12:33:53
自己解決しましたスイマセンでした
【 課題 】C♯もしくはJAVAでBMI計算プログラムをvisual studio 2005 で作成 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】4. 制限なし 【 期限 】10月18日 日曜22時まで 【 補足 】できればC♯でお願いします。
>>373 web アプリケーションでお願いします。
>>373 マルチの上にJavaスレでC#希望とか死ねばいいのに
>>368 class Kadai03_5 {
public static void main(String args[]) {
int num[] = {23, 76, 48, 93, 16, 34, 87};
int num_work;
int i, j, n = 7;
for (i = 0; i < n; i++)
System.out.print(num[i] + " , ");
System.out.println("\n \t----- Sort ----- ");
// 2重ループ(for文など)を用いる。(pp.202-203を参照)
for (int l = 0; l < num.length - 1; l++) for (int m = l + 1; m < num.length; m++) if (num[l] < num[m]) {
// 交換の条件を満たした場合に交換の要素を表示。
System.out.printf("Exchange num[%d]=%d for num[%d]=%d ", l, num[l], m, num[m]);
// 交換の実行
int nm = num[l]; num[l] = num[m]; num[m] = nm;
// 交換後の要素表示。(別の変数int kなどを用いてループで出力)
for (int k = 0; k < num.length; k++) System.out.print(num[k] + ", ");
System.out.println();
}
// ソート後の結果表示。
System.out.println();
System.out.println("\t----- Result ----- ");
for (int k = 0; k < num.length; k++) System.out.print(num[k] + " , ");
}
}
>>376 /* 操作するプログラム ここから */
double norm = 0;
for (double d : c) norm += Math.abs(d);
System.out.println(norm);
}
/* ここまで */
出力書式を使用するなら System.out.println(norm); を System.out.println(String.format(shutsuryoku, norm)); とか System.out.printf(shutsuryoku + "%n", norm); とか System.out.printf(shutsuryoku, norm); System.out.println(); とか
380 :
デフォルトの名無しさん :2009/10/18(日) 14:25:50
【 課題 】 1・コマンドライン引数で2つの文字列を入力し、1番目に指定された文字列の中に2番目に指定された文字列が存在する場合は 「この文字列はあります。(○文字目)」と表示し、存在しない場合は「この文字列は存在しません」と表示しなさい。 入力文字数は、1番目の文字列は10文字以上とし、2番目の文字列は2文字以上4文字以内とする。 また、文字列は先頭から検索し、最初に見つかった文字のインデックスを表示することとする。。 2・任意の文字列を内部で指定し、コマンドライン引数で2つの文字列を入力する。 もし内部で指定した文字列に、1番目に指定した文字列が存在する場合は、その文字列を 2番目に指定した文字列と置き換えてから表示し、存在しない場合は「置き換えなし」と表示しなさい。 入力文字数は、1番目、2番目ともに4文字以内とする。また最初に内部指定文字列を表示し、 1番目の文字列が複数する場合は、すべて置き換わっていること。 3・コマンドライン引数で入力された文字列が 3文字以下なら、その文字列を20個文字列連結して表示 4文字以上なら”たくさん” を表示しなさい。 文字列連結の際はStringBufferクラスを使用しなさい for文を使用しなさい 【 形態 】1. Javaアプリケーション(main()で開始) 【 期限 】10月19日AM11 【 Ver 】java version "1.6.0_14" 【 補足 】3問ありますが、複数の条件が重なった場合の文法の書き方がわかりません。 よろしくお願いします
>>380 public class Kadai01 {
public static void main(String[] args) {
if(args[0].contains(args[1])){
System.out.println("「この文字列はあります。("+(args[0].indexOf(args[1])+1)+"文字目)」");
}else{
System.out.println("「この文字列は存在しません」");
}}}
public class Kadai02 {
public static void main(String[] args) {
final String str = "abracadabra";
if(str.contains(args[0])){
System.out.println("「この文字列はあります。("+(args[0].indexOf(args[1])+1)+"文字目)」");
System.out.println(str);
System.out.println(str.replaceAll(args[0], args[1]));
}else{
System.out.println("「置き換えなし」");
}}}
public class Kadai03 {
public static void main(String[] args) {
if(args[0].length()<=3){
StringBuffer sb = new StringBuffer();
for(int i=0;i<20;i++){
sb.append(args[0]);
}
System.out.println(sb.toString());
}else{
System.out.println("たくさん");
}}}
>>381 おっと、要らない行が混じっていた。
public class Kadai02 {
public static void main(String[] args) {
final String str = "abracadabra";
if(str.contains(args[0])){
System.out.println(str);
System.out.println(str.replaceAll(args[0], args[1]));
}else{
System.out.println("「置き換えなし」");
}}}
>>382 "abracadabra"なら大丈夫だけどstrに正規表現のメタキャラクタとかが含まれていた時のために、
str.replaceAll(java.util.regex.Pattern.quote(args[0]), args[1])
にしておいた方がいいんではなかろか。
384 :
デフォルトの名無しさん :2009/10/18(日) 21:23:34
386 :
デフォルトの名無しさん :2009/10/18(日) 21:56:01
>>381 ありがとうございます。
そのままの使用だとあまりにも為にならないため、少し自分なりに構文を変更し
作成しました。ありがとうございます。
387 :
デフォルトの名無しさん :2009/10/18(日) 22:08:14
>>384 失礼しました。正しいソースコードはjava811のものです。
>>384 ここら辺で躓いてたら中盤の掃除機問題とかに行く前に死んじゃうんじゃないか?
390 :
デフォルトの名無しさん :2009/10/19(月) 13:27:36
>>362 解答ありがとうございます
しかしこれだと2つほど型のエラーが出てくるのですが・・・
391 :
デフォルトの名無しさん :2009/10/19(月) 13:35:30
392 :
デフォルトの名無しさん :2009/10/19(月) 16:51:55
>>391 元のソースがジェネリクス以前だしバージョン1.6でコンパイルしてないだろ
>>384 とか見てないようだしどうも同じカリキュラムを受けてる人間が2人来てるようだな
そんなことじゃ人工知能なんて全然理解できないぞ
×
>>384 とか見てないようだし
○
>>384 とか過去ログを見てないようだし
dotupを使ってパッケージ名を削除しているの(
>>312 とかもそうだろう)と
rg550使ってるのとの二人だな
>>390 エラーくらい貼り付けろ
あと、
>>394 の言うようにコンパイラのバージョンがあってない。
>>1 の"【 Ver 】コンソールでjava -versionを実行し、その結果を貼ります。 《必須》"にしたがって確認しろ。
397 :
デフォルトの名無しさん :2009/10/20(火) 19:17:05
398 :
デフォルトの名無しさん :2009/10/20(火) 19:27:01
>>397 ごめんなさい
×【 形態 】1. Javaアプリケーション
○【 形態 】Eclipse ver3.4.2
課題4-1とも4-2とも設問がどこにも書いてないし課題4-2の実行例だけしかないように見えるのは気のせいか
>>398 はなぜ正しかったものをわざわざ誤った記述にするのか意味不明
>>397 URLのpdfに課題番号なし
一応 (a, b, c) (d, e, f) の内積は ad + be + cf ってのは覚えてるけど
ベクトル同士の畳込みについて計算方法うp
そんなんだからこうなったんだね すっごくわかるよー
402 :
デフォルトの名無しさん :2009/10/20(火) 20:15:18
【 形態 】1. Javaアプリケーション(main()で開始) 【 期限 】10月21日AM12 【 Ver 】java version "1.6.0_14" 【 補足 】3問です。本日1日悩みましたが、わかりませんでした。 いかなる場合でも予期しない例外が出ないこと。 @ コマンドライン引数に入力された日付から現在日まで何日かを計算し、「今日まで●日」と表示しなさい。 現在日より入力された日付が小さい場合は「-(マイナス)」をつけて表示すること。 (日付その他のチェックも行う事) Aコマンドライン引数に入力された年と月から、その月が何日まであるかを表示しなさい。 (日付その他のチェックも行う事) Bコマンドライン引数に入力された日付が、入力された日付の年の何番目の週かを 「●年の●週目」と表示しなさい。(●年の"●"は入力された日付の年) (日付その他のチェックも行う事)
例外が投げられっぱなしにならないようにcatchして適切な処理をするという意味でなくて、 どんな例外も投げられること自体がないように予防線を張ったコードにするってこと?
404 :
デフォルトの名無しさん :2009/10/20(火) 20:28:11
405 :
デフォルトの名無しさん :2009/10/20(火) 20:29:33
>>403 自分なりに考えられるキャッチしたものは、その症状を表示し、
プログラムを終了させる感じです。
408 :
おねがいします :2009/10/20(火) 21:36:14
【 課題 】文字列"GPIB-002.70V"から文字列"-022.70"を取り出して、 その文字列をDoubleオブジェクトにし、それをdouble型 実数値に変換して数値を表示している。空欄を埋めよ。 public class Kadai{ public static void main(String a[ ]){ String s = "GPIB-022.70V",ds; ds = s.substring( @ ); Double dd = A ; double d = B ; System.out.println(d); } } 【 形態 】1. Javaアプリケーション(main()で開始) 【 期限 】 今週中 【 補足 】ど素人なのでよろしくお願いします。
409 :
たのみます :2009/10/20(火) 21:50:16
【 課題 】 半径が10ピクセルの黒塗り円がマウスをドラッグすることで、 円がマウスポインタに追従するように、次の空欄を埋めて Javaアプレットを完成させなさい。 import java.applet.*; import java.awt.*; import java.awt.event.*; public class Kadai3ee extends @ { int x = 10 , y = 10; public void init( ) { A } public void paint(Graphics g){ B (x,y,20,20); } public void mouseDragged (MouseEvent me) { C D E } public void mouseMoved (MouseEvent me) { } } 【 形態 】 2. Applet 【 GUI 】 ? 【 期限 】今週中 【 補足 】@〜Eが空欄です。
410 :
たのみますNo.3 :2009/10/20(火) 22:13:02
【 課題 】 マウスをクリックして描画の起点とし、そのままマウスをドラッグしたときに楕円を逐次描き、マウスボタンを放したとき最終的に 終点を決定して楕円を描くように、次の空欄を埋めてJavaアプレットを完成させなさい。ただし、マウスを左や上にドラッグしても 楕円を表示するように起点と終点を選択するように処理する事。 importは省略 public class Kadai3gg extends@{ int x1,y1; public void init( ){ A B} public void mouseDragged(MouseEvent me){ int x0,y0,x2,y2; Graphics g = this.getGraphics( ); g.clearRect(0,0,300,300); x2 = C y2 = D if(x1>=x2) E else F if(y1>=y2) G else H g.drawOval(I,J,K,L);} public void mouseMoved(MouseEvent me) {} public void mousePressed(MouseEvent me){ M N } public void mouseReleased(MouseEvent me)←この他の文も省略 } 【 形態 】 2. Applet 【 GUI 】 ? 【 期限 】今週中 【 補足 】@〜Nが空欄です。
411 :
たのみますNo.4 :2009/10/20(火) 22:40:26
【 課題 】画像を表示し、マウスをクリックすればその場所に画像が移動するように、次の空欄を埋めてJavaアプレットを完成させなさい。 import java.awt.*; import java.awt.event.*; import java.applet.*; public class Kadai3ff extends @ { A img; int x=10 ,y=10; public void init(){ img = B (getCodeBase(),"a.gif"); C } public void paint(Graphics g) { D(img,x,y,this); } public void mouseClicked(MouseEvent me){ E F G } public void mouseReleased(MouseEvent me){}←この他の文省略 } 【 形態 】 2. Applet 【 GUI 】 ? 【 期限 】今週中 【 補足 】@〜Gが空欄です。 何度も何度も本当にすみません、理解に苦しんでいるため書き込まさせていただきました。 空欄のところの具体的なコードをいただけるとありがたいです。最初の2つの名前にナンバーを つけ忘れました。No.1〜No.4までよろしくお願いします。
ここまで穴だらけだと一から作り直したい 中途半端に識別子が決められてるとこうぇぇ
413 :
たのみます :2009/10/20(火) 22:47:34
穴埋め課題なもので・・・。 すみません&お願いします。
414 :
デフォルトの名無しさん :2009/10/21(水) 00:53:23
>>407 起動確認できました。
ありがとうございました。
416 :
デフォルトの名無しさん :2009/10/21(水) 12:52:56
application/octet-stream ほお。
419 :
デフォルトの名無しさん :2009/10/21(水) 14:53:05
メモ帳を作成していますができません。メニューにファイルとあって、 それをクリックするとメニューアイテムの新規作成、ファイルの読込、ファイルの保存と 表示されます。外観はwinのメモ帳とほぼ同じです。 【 課題 】 初期実行画面(メニューバーの"ファイル"をクリックした状況が下記のように表示される 簡単なメモ帳機能を有するプログラムを作成しなさい。(写真が載っている。) TinyMemo、Panels、FileIOの3個のクラスで実現してください。ただし、Panelクラスでは部品 (MenuBar,TextAreaなど)定義を行い、FileIOクラスでは、ファイルの読込、保存の処理を 行います。 新規作成アイテムをクリックすると、画面が初期化(削除)されるようにしてください。 また、ファイルの読込、保存で、ファイル名の選択はFileDialogを使ってください。 【 形態 】1. Javaアプリケーション(main()で開始)/ 【 GUI 】1. AWTのみ 【 期限 】11月1日まで よろしくお願いします。
穴埋めとかクラスの数を指定とか、うざい課題が多いな クラス数とか指定する必要なんてないだろうに
あなたの宿題じゃないんですからうざければわざわざやらなくてもいいんですよ
>>421 おかげさまで、やらないことにしました。
>>419 ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/814.java 1.6.0_16+WinXPでTextAreaの最末尾が改行だと
コンポーネントをマウスクリックするなどすると
その最後の改行がされないように見える現象が起きるけどAWTの不具合なのかな
データ的に消えるわけではないしカーソルキーでカレットを次の行に移動できるけど
Frame f = new Frame();
f.add(new TextArea());
f.pack();
f.setVisible(true);
単にフレームに貼り付けたこれだけでも再現するし1.5.0_21でも同じだった
最近AWTコンポーネントをほとんど使わないので気がつかなかったがうちの環境だけ?
もうちょいちゃんと説明書いてくれ。 [3]のコードを期待した動きをするように直せばいいんだな? 先頭コメントつけた2行を直した。 public Qinteger add(Qinteger n){ /*貼り付けできないから省略....*/ for(i=4; i<MAXARR; i++){ temp = (long)num[i] + (long)n.num[i] + (long)carry ; /*上の行に修正*/ temp = (long)num[i] + (long)carry ; rnum[i] = (int) (temp % MAXINT) ; carry = (int) (temp/MAXINT) ; } return new Qinteger(rnum); } public String toString(){ java.text.DecimalFormat df = new java.text.DecimalFormat("000000000"); StringBuilder rs = new StringBuilder(); for(int i=MAXARR-1; i>=0; i--) rs.append(rs.length() == 0 ? trimzero(df.format(num[i])) : df.format(num[i])); /*上の行に修正*/ rs.append(trimzero(df.format(num[i]))); return new String(rs); }
/*上の行に修正*/ で始まってる行消してコンパイルしてくれ。
>>424 ごめん。もう一箇所直してた。
private static String trimzero(String arg){
int i = 0, n = arg.length();
while( i < n && arg.charAt(i) == '0' ){
i++ ;
}
return( arg.substring(i) );
}
428 :
424 :2009/10/23(金) 01:10:53
>>425 おかげ様で無事にコンパイルでき動かすことができました
わざわざこちらのコードを訂正していただく形で素早い回答ありがとうございました
429 :
419 :2009/10/23(金) 05:49:21
430 :
デフォルトの名無しさん :2009/10/27(火) 01:48:44
歪んでるはコントラスト低いはでやる気が出にくい課題だなw
435 :
デフォルトの名無しさん :2009/10/27(火) 14:50:12
できれば5-2もお願いします
はやくしろよ!時間なくなるだろ!
438 :
デフォルトの名無しさん :2009/10/28(水) 13:30:44
>>434 じゃないけどこの課題の5-1のレベル3までできたらお願いしたいです。
期限は10/29の夜9時までです
>>439 何でだよ・・
まぁいいや、やってやるからちょっと待ってろ。
441 :
デフォルトの名無しさん :2009/10/28(水) 16:14:34
442 :
デフォルトの名無しさん :2009/10/29(木) 12:11:41
443 :
デフォルトの名無しさん :2009/10/29(木) 17:18:50
【 課題 】(nの階乗 < 10000)が成り立つ最大の n を求める.ループは while 文を利用すること. n の階乗とは, n! := 1×2×3×…×n である.[ヒント]: 10000 を超えるまで順に階乗の n を増やし,階乗が 10000 を超えた時点で最後の n を乗算する前の n を出力する.与えられた課題文をそのまま書きます 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】4 【 期限 】29
>>447 少し修正しましたが無事実行例通り動作しました。
有り難うございました。
449 :
デフォルトの名無しさん :2009/11/02(月) 17:05:52
【 課題 】次の条件を満たすjavaプログラムを作成しなさい。 (1)分岐構造と反復構造をともに一つ以上持つ 2)一つ以上のメソッドを利用 【 期限 】提出期限は11/2 19:30 【 補足 】できるだけ既存のものとかぶらない お願いします。
既存てなんだよw
451 :
デフォルトの名無しさん :2009/11/02(月) 22:57:11
変態的な書き方がお望みか?
452 :
デフォルトの名無しさん :2009/11/03(火) 01:29:50
public class ans443 { public static void main(String[] args) { int i=1, a=1; while(a<10000) { System.out.println(i+" "+a); a *= i++; } System.out.println("ans="+(i-1)); } }
454 :
デフォルトの名無しさん :2009/11/06(金) 14:38:15
>454 import java.util.*; public class P68_454 { public static void main(String[] args) { System.out.printf("正の整数を入力してください: "); Scanner scanner = new Scanner(System.in); int input = scanner.nextInt(); System.out.printf("%dは" + (isPrime(input) ? "素数です。%n" : "素数ではありません。%n"), input); System.out.printf("%dの最小の素因数は%dです。%n", input, minimumDivisor(input)); } private static boolean isPrime(int input) { if(input == 1) return false; for(int i=2; i<input; i++) { if(input % i == 0) return false; } return true; } private static int minimumDivisor(int input) { if(input == 1) return 0; for(int i=2; i<input; i++) { if(input % i == 0) return i; } return 0; } }
【 課題 】クラスQintegerで掛け算を行うメソッドtimesを作成し、n!の結果を求めるプログラムQfact.javaがBigIntegerを用いた場合(Bfact.java)の計算速度に近づけるようにせよ。
http://www.dotup.org/uploda/www.dotup.org336397.zip 【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】11月8日(日)まで
【 Ver 】1.6.0_16
【 補足 】上記ファイルのQinteger.javaに含まれるメソッドtimesは自分で作成途中のものなので無視して構いません
よろしくお願いします
>>456 前に見たような課題だな。
print()が遅いから計算だけをそれぞれ実行させた場合
BigInteger:45ms
Qinteger:80ms
くらいだった。あとは自力でチューニングしてみてくれ。
private int maxDigit = 0;
public Qinteger times(int n) {
long temp;
int carry = 0;
for (int i = MAXARR - 1; maxDigit < 0 && i >= 0; i--) if (num[i] != 0) { maxDigit = i; break; }
for (int i = 0; i < MAXARR && i <= maxDigit; i++) {
if (num[i] == 0) { num[i] = carry; carry = 0; continue; }
temp = (long)num[i] * n;
num[i] = carry + (int)(temp % MAXINT);
carry = (int)(temp / MAXINT);
if (i == maxDigit && carry != 0) maxDigit++;
}
return this;
}
すまそ。貼り付け前に修正して漏れてた。 正 : private int maxDigit = -1; 誤 : private int maxDigit = 0;
>>457 無事プログラムを実行できました。ありがとうございました
>>455 作動確認できました。ありがとうございます。
0〜30の数字の中からランダムに5つ重複なしで選びたいんですが どうやったらいいでしょうか? もしそういう関数があれば教えてください 期限:なるべく早く
Java質問スレで見てたけどこんな感じ? import java.io.*; import java.util.*; public class RandomStack{ public static void main(String[] args){ Random rdm = new Random(); int[] stacks = new int[31]; for(int i=0;i<31;i++){ stacks[i] = i; //System.out.println(stacks[i]); } int trda; int trdb; int tmp; for(int i=0;i<1000;i++){ trda = rdm.nextInt(31); trdb = rdm.nextInt(31); tmp = stacks[trda]; stacks[trda] = stacks[trdb]; stacks[trdb] = tmp; } for(int i=0;i<5;i++){ System.out.println("["+i+"]:"+stacks[i]); } } }
466 :
464 :2009/11/09(月) 17:29:13
>>467 ちゃんとテンプレ使えって教えてあげればいいだけなのに
お前こそバカ
>>468 とりあえず、だ。
>>467 が誰にレスしてるか考えてから書き込もうか。
>>465 はテンプレ違反に答えちゃテンプレ違反が増える元になるから答えたらまずいよ。
>>467 はもっと優しく言った方が言いよ。そうすれば
>>468 みた
いな無駄レスなかっただろうしね。
472 :
デフォルトの名無しさん :2009/11/11(水) 21:50:15
【 課題 】
Gaussの消去法(Pivot選択付き)を用いた逆行列を求めるプログラムを作成し
Aについて、逆行列A^-1を求めよ
A=
{2,-1,1}
{-1,2,-1}
{2,-2,-1}
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】11月15日
【 Ver 】1.6.0_11
【 補足 】
Pivot選択『なし』でのGaussの消去法と逆行列を求めるプログラム
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/827.java はできたのですが
前進消去部分をどのように変えれば、Pivot選択付きになるのかがわかりません
数学的なものに偏ってしまって申し訳ないのですが
わかる方がいましたらお願いします
【課題提示用テンプレ】 【 課題 】キーボードから身長を入力し、標準体重を作成するプログラムを作成しなさい。 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 4. 制限なし/ 【 期限 】11月12日の22時半までにお願いします 【 Ver 】java version "1.6.0_17" 【 補足 】標準体重 = 身長(m)2乗×22 でお願いします。 <入力例> 身長=170 <出力例> 身長 (170) : 標準体重=63.5799999999999kgです。 専門学校1年生でまだ簡単な問題なんですが躓いてしまいました。おねがいします
import java.io.*; class ans475 { public static void main(String[] args) { int height; double weight; InputStreamReader in = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(in); try { System.out.print("身長(cm)="); height = Integer.parseInt(br.readLine()); } catch (IOException e) { System.out.println("入力エラー"); return; } catch (NumberFormatException e) { System.out.println("数値エラー"); return; } weight = height/100. * height/100. * 22; System.out.println("身長="+ height + "(cm) : 標準体重=" + weight + "(kg)です。"); } }
>463 import java.io.*; public class P68_463_1 { public static void main(String[] args) throws IOException { new P68_463_1().process(); } public void process() throws IOException { System.out.printf("文字列を入力してください%n"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); char[] result = new char[str.length()]; for(int i=0; i<str.length(); i++) { result[i] = str.charAt(i); } for(int i=0; i<result.length-1; i++) { for(int j=result.length-1; j>i; j--) { if(result[j] < result[j-1]) { char tmp = result[j]; result[j] = result[j-1]; result[j-1] = tmp; } } } System.out.printf(new String(result) + "%n"); } }
>463 public class P68_463_2 { public static void main(String[] args) { new P68_463_2().process(); } public void process() { int[] count = new int[10]; int sum = 0; for(int i=0; i<100; i++) { int num = (int)(Math.random() * 10); System.out.printf("%d ", num); count[num]++; sum += num; } System.out.printf("%n"); for(int i=0; i<count.length; i++) { System.out.printf("%d ", i); for(int j=0; j<count[i]; j++) { System.out.printf("*"); } System.out.printf(" %d%n", count[i]); } System.out.printf("平均 " + sum*1.0/100 + "%n"); } }
482 :
デフォルトの名無しさん :2009/11/15(日) 22:28:57
嫌です
484 :
デフォルトの名無しさん :2009/11/16(月) 14:48:41
485 :
484 :2009/11/16(月) 15:40:48
すいません 期限は今日の16日です
嫌です
488 :
デフォルトの名無しさん :2009/11/19(木) 01:05:43
【 課題 】マウスでダブルクリックした場所にr=5の円を描画できるようにしなさい その際すでに作成された円と重なる場合は新たに作成しない 【 形態 】 2.applet 【 GUI 】 4. 制限なし 【 期限 】11月25日 【 補足 】 お願いします
490 :
デフォルトの名無しさん :2009/11/19(木) 15:37:06
>487,488,490 何故バージョンを書かない?
492 :
デフォルトの名無しさん :2009/11/19(木) 17:26:46
>491 488ですがversionは"1.6.0_14"です >489 自分不器用ですから
493 :
デフォルトの名無しさん :2009/11/20(金) 01:03:04
>>493 /*10進数から2進数に変換するメソッド*/
public void decToBinary(int decInput) {
if (decInput == 0) binaryAns.add(new Integer(0));
for (int i = decInput; i != 0; i >>>= 1)
binaryAns.add(new Integer(i & 0x01));
Collections.reverse(binaryAns);
}
495 :
デフォルトの名無しさん :2009/11/20(金) 17:00:21
>491 "1.6.0_13"です
496 :
デフォルトの名無しさん :2009/11/20(金) 17:16:08
>491 490ですが"1.6.0_13"です
>>498 助かりました。
ありがとうございます。
>>493 問題文見たんだが,ソースがカオスなのでちょっと変えた
http://codepad.org/dVG1otrB ダメって言われたら,理由を聞いてこい
おもに「binaryAnsとthirtyAnsがArrayList<Integer>なのはどういう結果を望んで,どういう使い方を望んでいるの?」と,
32進数をArrayList<Integer>にどうやって格納したいのか分からん
トリッキーなことは一切していないので Integer.toString(int, int) を使うなんて卑怯だ!
って言われたら家庭崩壊しね
>>500 494が回答済みじゃん。
基数ごとの各桁をIntegerで持たせるんだろ。36進数なら値0-35のIntegerが桁数分並ぶんだよ。
showはおそらくIntegerをint変換して、String0-Zを要素とするString配列のIndexとして使うんでしょ。
設計はクソだが、APIをうまく使う練習をさせるための問題ではないのでは。
勉強のために多少の再発明(劣化コピー)は仕方がないように思う。
いや、勝負っていうか、穴埋めの問題文自体書き換えたら 解答になってないでしょ。機能を作る問題じゃないんだからさ。
設問不備って書いてあるよね? ちゃんと読んでる?
>>504 ごめん見逃してたのかも。どこに書いてある?>設問不備
ああ、勘違いしてた。 500の主張が「設問不備だからオリジナルのソースを踏襲する必要がない」って意味ね。 なかなか自由な雰囲気で勉強してきたみたいだねw
のだめか
そもそもプログラミングなんて勉強してないし^p^
510 :
デフォルトの名無しさん :2009/11/24(火) 14:20:18
> (1)学生の姓名を入力し、該当する学生の学籍番号、学年、席次を表示する。 > 次のデータは学生の学籍番号、名前、欠席日数、席次を配列linesで格納したものです。 > String[] lines = { "0001, 山田太郎,2,3,42", "0002, 田中一郎,2,6,31", "0003, 斎藤花子,2,2,4" }; 学籍番号 名前 欠席日数 席次を配列 学年・・・? ↓ ↓ ↓ ↓ ↓ 0001 , 山田太郎 , 2 , 3 ,42
513 :
デフォルトの名無しさん :2009/11/25(水) 01:13:19
>>511 学籍番号 名前 学年 欠席日数 席次です
すみません
>>512 class ... {
}
//ここまで理解した
とかか…
>>515 適用度ってなんだ適応度じゃないか(´ω`;
直しておいてね!
>>517 デバッグ用のコード消してなかった
97行目の args = new String[] {"-q"}; の一行丸ごと消しておいて^p^;
componentAction
>>515 ありがとうございます。本当に助かりました!
>>487 なのですがどなたかやっていただけないでしょうか?
523 :
522 :2009/11/25(水) 23:08:34
なんか今みたら[6]の問題読み間違えてるわ。 ちょっと直すから時間くれ。
524 :
522 :2009/11/25(水) 23:23:00
525 :
522 :2009/11/25(水) 23:27:52
なんどもすまん。反省してる。 いちどアンダーフローしたあとバグるね。 コメントつけた行足しておいて。 public int pop() { if (--size < 0) { ++size; //この行足しといて throw new IllegalStateException(); }
>>522 マジでありがとうございます。結構量あったのにやっていただけて感謝です
528 :
デフォルトの名無しさん :2009/11/26(木) 17:24:13
>>490 こちらの課題2をやっていただけないでしょうか?
529 :
デフォルトの名無しさん :2009/11/26(木) 18:18:05
>>529 しかし、JDKのソースコードを読むと普通にimportに*を使っている
"you are a student" と "You are Student" を同じと判定したいの?文脈から見るとそうとれるけど、 ケースセンシティブの問題以前に冠詞の有無は無視するの?
532 :
sage :2009/11/27(金) 01:16:51
>>531 あ、失礼しました冠詞についてはただのミスです
単にアルファベットを識別する場合は大文字小文字の差異を誤差として認識しない
ということです
533 :
orz :2009/11/27(金) 01:17:33
失礼しました・・・
以下の一行修正するだけでいいんじゃね。 boolean tokenMatching(String token1, String token2){ if(token1.toLowerCase().equals(token2.toLowerCase())) //この行修正 実行結果 you are a student You ? a Student {?=are} true
ああ、解説も欲しいのね。 どの程度の解説が欲しいのかわからん。 もうちょい具体的に書いてくれ。 一応簡単に書いておくと、 文字列をトークン(空白区切り)に切り出して、 それぞれのトークン毎に相手のトークンと一致しているか比較している。 ?で始まるトークンが来た場合は、相手方の文字列の 同じ位置のトークンと一致している(ワイルドカード)と見なすらしい。 ただし、同じ?始まりのトークン(たとえば?aが)もう一度出現した場合、 最初に出現したときに一致した相手方トークンに置き換えられる。 you are a student 相手方文字列 you ?a ?b student -> (置換え結果 you are a student) OK you ?a ?a studen -> (置換え結果 you are are student) NG
536 :
orz :2009/11/27(金) 02:38:18
>>534 なるほど、指定したものをあらかじめすべて小文字にすればいいのですね
ありがとうございました
?トークンが再出現したときにケースセンシティブになっちゃってたね。 以下の一行も修正してくれ boolean tokenMatching(String token1, String token2){ token1 = token1.toLowerCase(); //追加 token2 = token2.toLowerCase(); //追加 if(token1.equals(token2)) //もとの書き方に戻す 結果 ABC abc Abc xxx XXX ?Abc ?abC ?abc ?xxx xXx {?xxx=xxx, ?abc=abc} true
重ね重ねありがとうございます
【 課題 】三目並べゲームを作れ(以下は仕様)
・二人の対戦者が交互にO,Xの場所をマウスでクリックする
・マウスがクリックされたとき、対戦者のテーマ音を一回再生する
・既にO,Xがある場所が指定されたら、無視する
・勝敗が決定すると勝者のマーク(XorO)を赤で描画し、テーマ音を3回鳴らす
・勝敗が決すると入力を無視する
【 形態 】 Applet
【 GUI 】 制限なし
【 期限 】11月 30日
【 Ver 】1.6.0_10
【 補足 】自分でほぼ作ったんですがXが勝った場合にテーマ音が3回なりません
http://www.dotup.org/uploda/www.dotup.org401130.java.html あと再描画させると以前に描画させたOやXが消えてしまうので
paintメソッドの中でsuper.paint(g)を使ってないんですが、
それではなぜか処理が遅くなったので、updateメソッドを使って
その中でpaint(g)を直接呼び出してます
でも授業ではupdateメソッドはまだ習ってないのでどうかなって思ってます
何か他にいい方法がありましたらお願いします。
>>541 下の様に修正すればおk
boolean var(String str1) {
return str1.indexOf('?') != -1;
}
要は"?"を一つでも含むトークン列全体は全体として変数とみなす.
"name(?rose)"っていう変数扱いになる
なんか釈然としないけど
>>542 解決できました。ありがとうございます。
545 :
540 :2009/11/29(日) 15:21:06
>>544 返事が遅れてすみません。回答ありがとうございます
指摘いただいた点とプログラムを参考にしてソースコードを変更したところ、プログラムの動作を確認しました
ですが盤面評価値の設定方法がおかしいのもあるかもしれませんが
コンピュータ同士で対戦を行わせた場合depth=17のときにo(白)が(2,2)に打つなど
期待した動作と異なる動作をしてしまいます(そのポイントは評価値を大幅に下げているので基本的に打たないはず)
もしよろしければ盤面評価(valueOfPlace)に対して期待できる動作を行うにはどうすればよいか指摘していただきたいです
現在のBoard.java
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/849.txt お手数お掛けしますがよろしくお願いします
>>546 あーごめん
評価値算出するところちゃんと読んでなかった。手番(hand)による重み付けをしてたんだね。
というわけで、α-β法の頭のレベル0のときの三項演算は全く不要だった。
一番最初のソース通り、算出されたvalueの符号を逆転したものをリターンすればOK。
あと、ボードの大きさが10*10なのに対して評価関数の大きさが8*8だね。
ボードにアクセスする際のインデックスをそれぞれ+1してやる必要があるっぽ。
↑2つ直したら上手くいくんじゃないかなー。たぶん。
# 締め切り大幅に過ぎてるけど大丈夫なのかなー
548 :
546 :2009/11/29(日) 20:13:21
>>547 回答ありがとうございます
valueOfBoardでのhandを乗じた重み付けは
>>540 の段階では行っておらず、回答待ちの間に直していたものだったので
>>544 で頂いた回答に合わせて記述を変更していないだけでこちらの不手際でした
boardの大きさは完全に配布されたソースの理解が足りてませんでした・・・外周に全て0を取ってたんですね
指摘頂いた点を修正したところ概ね期待通りの動作をしてくれました(石の位置による評価だけではあまり強くはないでしょうが)
講義の終盤に受講生が作成したAI同士を対戦させる流れになっていたので多少遅れても全く問題ないです
この度はありがとうございました
gooで教えてもらえよw
gooで教えてもらえないんです; 自分でやっても全然わからないので…課題の上げ方すらわからないので… 本当すみません
552 :
デフォルトの名無しさん :2009/11/30(月) 12:42:08
> この問題の解答は既に2ちゃんねるに質問され、解答が出ました。今後、同じ質問をあちこちで何度もするのはマナー違反ですので、お控え下さい。 なんだマルチポストしてたのか 質問者はちょっとググれカス
この電大の問題、去年もここに投稿されてた気がする。 レポート作成上の注意点の過激さがステキだったから印象に残ってる。
>>555 さすが、5流大w
チープだな・・・
その程度の課題しか与えないような、大学に金払ってまで通う必要があるのか?
559 :
デフォルトの名無しさん :2009/12/03(木) 00:44:31
488ですが、どなたかお願いします。
そこの先生評判いいみたいだよ(ソース楽天みんなの就職活動日記(でんだい)) 発展問題の2-7なんか、ちゃんと実装させたら学生にはいい勉強になるね。
燃料足りないぞ とりあえずIDねーのに騒ぐな
テキストから文章を読み込んでテキストエリアに表示させる方法教えてください よろしくお願いします
最初から難しい問題出せとか。サドいな
565 :
デフォルトの名無しさん :2009/12/04(金) 01:09:09
568 :
デフォルトの名無しさん :2009/12/05(土) 07:40:50
570 :
名無し :2009/12/05(土) 13:27:02
10個の値の最大値を求めるプログラム 10人の身長データを順にcm単位で入力したとき、一番大きな身長は何cmかを表示するプログラムを作成しなさいというものです。 実行結果の例は以下のような感じです。 1人目の身長(cm)を入力してください:(入力待ち) 2人目の身長(cm)を入力してください:(入力待ち) 略 10人目の身長(cm)を入力してください:(入力待ち) この中で一番身長が高い人は○○cmです。 (注意) 1最大値を記憶する変数を用意し、0を代入しておく。 2for文を用いて以下の処理を十回繰り返す。 2.1「?人目の身長(cm)を入力してください」と表示する 2.2キーボードから値を入力する。 2.3入力値が記憶している最大値より大きいかどうかをif文を用いて比較する。 2.3.1大きいならば、その値を最大値として代入する。 3結果を表示する 4できるだけ簡素に
573 :
568 :2009/12/06(日) 05:16:29
>>569 >>568 です。
折角書いていただいたのですが番号以外のところは変更無しで書いていただけませんでしょうか?
申し訳ありません。
575 :
568 :2009/12/07(月) 16:40:04
自己解決しました。
577 :
デフォルトの名無しさん :2009/12/09(水) 15:57:00
卒論とかでもいいですか? 出来なさ過ぎて泣きそうです。
自己責任でどうぞ
定時までなら付き合う
>>577 自分の卒論を他人が1日とかでやっちゃったらショックだろうなぁ
卒論レベルってどんな? 高分子解析プログラムとか5次元平面上にあるゼロ点を抽出するプログラムとか?
情報系なら5台のPCに並列処理させるプログラムとか円周率を100万桁求めるとかかな?
釣れる釣れるw
一連のユニフィケーションの課題は宮城大学かな 857.txtには自分が書いた物とか書いてるけど 大学のページにある資料のPDFとかJavaソースとかのままだ
588 :
デフォルトの名無しさん :2009/12/10(木) 18:50:05
Javaでサイコロゲーム『ヨット』のプログラミングをつくらないといけないんですが わかるかた教えてください。 ヨットはポーカーに似たゲームです。 よろしくお願いします。
591 :
デフォルトの名無しさん :2009/12/10(木) 22:06:16
>>857 の大学は「javaによる知能プログラム入門」とか使ってるな
見たことあると思ったらうちに本があった
こんな大学生ばっかで大学は大丈夫なのか?
お前ら厳しいなwww
日本の将来を憂う
こんなだからインド人にプログラマー枠の求人を盗られるんだよ
インド人はいい、チャイニーズを何とかしてくれ
>>594 さすがに、ここに来ている大学生はダメな大学生だけ。
ただし、卒業できなくて当たり前のはずの学生も、卒業して「大卒でござい」となる。
この電電卒東工ロンダの人、誘導形式で課題作ってくれてるんだから きちんとやっていけば解けると思うんだけどな
602 :
デフォルトの名無しさん :2009/12/12(土) 00:42:08
【 課題 】複数人の名前を入力してから3教科の点数を全員分入力し、各教科の平均点と、最高点と取った人の名前を表示せよ。 【 形態 】Javaアプリケーション(main()で開始) 【 GUI 】指定なし 【 期限 】12/14 【 Ver 】1.6.0_16 【 補足 】初歩的な質問で済みません。点数を入力させるとこまではいきました。 丸投げですがよろしくお願いします
>>601 それは、当たり前の学生なら解けるワケで…
ここに来るのは…
・自分で作れるだけの技術はあるが、忙しく、初歩レベルのプログラミング作成なんかに時間割きたくない、が単位落せばGPAに響くのでどうにかしたい ・自分で作れる技術がない、が単位落とせばGPAに響くのでどうにかしたい ・自分で作れるだけの技術はあるが、ただ面倒だから人任せにしたい、誰もやってくれなければ自分でやるわ ・宿題というのは提出すればよいもので誰が解答を作ったかは関係ない。面倒だからおまいらやってくれ
>>604 質問もまともに出来ない学生が、自力で解けるとは信じられない
人に頼ってばっかの奴が大学教授とかになったら最悪だな
教授の椅子までなると、本人の力だけではどうにも…
根回しとか賄賂とか必要だよね
609 :
デフォルトの名無しさん :2009/12/12(土) 19:49:39
あ
610 :
デフォルトの名無しさん :2009/12/12(土) 19:55:35
611 :
デフォルトの名無しさん :2009/12/12(土) 22:02:11
>>610 有難う御座います!
理解できなかったところがわかりました
612 :
デフォルトの名無しさん :2009/12/12(土) 22:47:28
NetBeansでしょうね。
>>614 どうもありがとうございます。
学校に行かないと確認出来ませんが…感謝。
【 課題 】コンボボックスを使って中の条件によりコンソールかアプレットで内容を表示 【 形態 】Javaアプリケーションかアプレットで 【 期限 】2,3日で 【 補足 】コンボボックスの中にP0,P1…P9を書きP0を選択したら○を表示させたりやP1を選択したら◎など表示させるプログラムです コンソールかアプレットに表示させたいです
617 :
デフォルトの名無しさん :2009/12/17(木) 03:37:05
import java.awt.event.*; import javax.swing.*; public class Kadai616 extends JFrame { public Kadai616() { String items[] = { "P0", "P1", "P2", "P3", "P4", "P5", "P6", "P7", "P8", "P9" }; final JComboBox cb = new JComboBox(items); cb.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { switch (cb.getSelectedIndex()) { case 0: System.out.println("◯"); break; case 1: System.out.println("◎"); break; default: System.out.println(cb.getSelectedItem()); } } }); add(cb); setVisible(true); } public static void main(String[] args) { new Kadai616(); } }
【課題】ServletRequest.getRequestDispatche()とServletContext.getRequestDispatche()の違い よろしくお願いします。
620 :
デフォルトの名無しさん :2009/12/19(土) 12:15:51
同じ
【 課題 】TextBoxから拾得した文字列をMobileFelicaで出力
【 形態 】4. 携帯(Doja5.0)/5. その他(MobileFelica)
【 GUI 】1. AWTのみ/2. Swing/3. SWT/4. 制限なし/ 5. その他(明記すること)
《GUIの課題の場合必ず選択》
【 期限 】12月22日早朝
【 Ver 】java version "1.6.0_17"
【 用語 】
【 補足 】
Felica関係の宿題もこちらでよろしいでしょうか?
丸投げでなくて申し訳ありませんが、ある程度自分で作ったファイルがあります。
ttp://www1.axfc.net/uploader/Sc/so/65585 起動はするのですが、ADF設定で「仮想FeliCaデータファイルへのFeliCaCPID、PINの関連付けに失敗しました」というエラーが出ます。
Java部分は動いているように見えるので、Felica部分で上記エラーを起こしていると思います。
残り期間等少ないですが、よろしくお願いします。
>>622 回答ありがとうございます!
2、3は問題ありませんでした。
1の1行目のパッケージを使用せず乱数を発生させる方法というのはありませんでしょうか?
まだ習っていないもので…。
Canvas3Dをフレームの領域指定して貼り付けたいのですがどうすればいいでしょうか? 例えばフレームサイズが(500,400)として,Rect(10, 10, 390, 390)くらいの領域だけで3D描画を行わせたり等がしたいです。
627 :
626 :2009/12/20(日) 13:23:37
すみませんスレッド間違えました。 スルーして下さい。
>>625 Math.random()なら問題ありません。
お手数をおかけして申し訳ないです。
有難うございました。
629 :
デフォルトの名無しさん :2009/12/20(日) 14:54:56
【 課題 】氏名(string)、ふりがな(string)、携帯番号(string)、メールアドレス(string) をフィールドとして持つクラスAddressBookを定義せよ。 クラス内に、ふりがなで辞書順に並べ替えるためのcompareToを定義せよ。 外部に,MailSortという、メールアドレスを辞書順に並び変えるためのメソッドを 作成せよ。 メイン・プログラムで、AddressBookクラスの配列(大きさ3)を定義し、 以下の動作をおこなうプログラムを作れ。 3人分のデータをキーボードから入力し、配列に代入する。 ・配列に代入されたデータをふるがな順に、見やすく出力する。 ・配列に代入されたデータをメールアドレス順に、見やすく出力する。 入力、出力には、for文を使うこと。 【形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】 制限なし 【 期限 】12/21 15時まで。 【 Ver 】1.6.0_16 【補足 】いろんなサイトみてますが、応用できません。お願いします。
632 :
デフォルトの名無しさん :2009/12/20(日) 21:20:47
>>630 きれいなプログラムありがとうございます。
僕の課題はこちらでした。。。
【 課題 】
氏名(string)、ふりがな(string)、携帯番号(string)、メールアドレス(string)
をフィールドとして持つクラスAddressBookを定義せよ。
クラス内に、ふりがなで辞書順に並べ替えるためのcompareToを定義せよ。
外部に,TelNoSortという、電話番号(文字列)を辞書順に並び変えるためのメソッドを
作成せよ。
メイン・プログラムで、AddressBookクラスの配列(ArrayList)を定義し、
以下の動作をおこなうプログラムを作れ。
3人分のデータをキーボードから入力し、リストに代入する。
・配列に代入されたデータをふりがな順に、見やすく出力する。
・配列に代入されたデータを電話番号順に、見やすく出力する。
入力、出力には、for文を使うこと。
【形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】 制限なし
【 期限 】12/21 15時まで。
【 Ver 】1.6.0_16
【補足 】今自分でやってますがお願いします
633 :
デフォルトの名無しさん :2009/12/21(月) 01:01:52
なんとか自力で
>>632 できました。
ありがとうございました。
634 :
デフォルトの名無しさん :2009/12/21(月) 18:26:22
それはよかった
635 :
デフォルトの名無しさん :2009/12/21(月) 19:21:19
【 課題 】コマンドラインから数値を受け取り、その数値の因数を全て表示するプログラムを完成させなさい。 【 形態 】1. Javaアプリケーション(main()で開始) 【 期限 】あと少しなので今日中にお願いします。 【 Ver 】1.4.2_03 【 補足 】【 】の中身がわからないのでよろしくお願いします。 import java.lang.*; public class kadai { public static void main(final String[] argStringArray) throws Exception { int vInt = 0; int vMax = 0; int vFactor = 0; vInt = Integer.parseInt(argStringArray[0]); vMax = 【 】(int); for(vFactor = 1; vFactor < vMax; vFactor++) { if((vInt % vFactor) == 0) { System.out.println(vInt + " = " + vFactor + " * " + (vInt / vFactor)); }}}} 実行結果 java kadai 8 8 = 1 * 8 8 = 2 * 4 java kadai 120 120 = 1 * 120 120 = 2 * 60 120 = 3 * 40 120 = 4 * 30 120 = 5 * 24 120 = 6 * 20 120 = 8 * 15 120 = 10 * 12
>>635 vMax = (int)Math.sqrt(2.0) + 1;
すまん。こっち vMax = (int)Math.sqrt(vInt) + 1;
638 :
デフォルトの名無しさん :2009/12/21(月) 19:43:48
>>637 (int)は後ろに来るんですよ。
キャストじゃないっぽいんですよね。
そんな書き方はありまへん
vMax = (int)Math.sqrt(vInt) + 1; //
w
【 課題 】与えられた課題文をそのまま書きます。 《必須》 1.System.currentTimeMillis();を使ったストップウォッチの結果を、実行する度に、 外部ファイルであるlog.csvに、書き込む時の日と一緒に書き込みを行うプログラムの作成をせよ。 public static void main(String args[]){ start = System.currentTimeMillis(); (略) stop = System.currentTimeMillis(); time = stop - start; } で出来たストップウォッチの結果timeを、log.csvに保存すると言うことです。他のクラスでメソッドとか作ってもOKです。 保存形式は [day],24000 [day],25000 [day],25000 このような形です。([day]の部分には書き込んだ時の日が記録される。数字がtime) このログを持っているときに再度、mainを実行したら、新たにまた[day],23000など追加する機能がいるということです。 2.上記で作成したファイルを読み取り、[day]を除いてtimeの値を全て合計し、 それをlog2.csvのうち time_sum = と書かれた部分にその合計値を記録するプログラムの作成をせよ。 log2.csvは、初期は (改行) time_sum,0 となってるcsvです。(二度目以降の実行では0に違う数字が入ってる可能性も) このcsvの何行か目にtime_sumと言う文字があり、実行したら time_sum,50000 (この値は↑のlog.csvの値の合計)となるプログラムということです。 【 形態 】Javaアプリケーション 【 GUI 】特に無し 【 期限 】24日の24時まで(遅れても減点はされるだけですが…) 【 Ver 】java version "1.6.0_16" よろしくお願いします。
644 :
デフォルトの名無しさん :2009/12/24(木) 00:27:24
2の上記で作成した〜と言うのは、log.csvのことです。 log.csvを読み取り、log2.csvに書き込む、と言うことです。これは1のプログラムとは別のmainで作成です 度々すいません、どうかお願いします…
645 :
デフォルトの名無しさん :2009/12/24(木) 01:49:56
646 :
デフォルトの名無しさん :2009/12/24(木) 02:46:11
アプレットのプログラムについてです。 内容はボールを反射させて動かす(ピンボールのような)プログラムです。 g.setColor(Color.red); g.fillOval((int)(this.x2-3),(int)(this.y2-3),6,6); このようなプログラムが組まれており意味してるものは動かすボールの色と大きさを指定しているのは理解できるのですがこれでなぜ色と大きさが指定できているのか細かい部分がよくわかりません。 これでなぜ色と大きさを指定できるのか説明するものです。 宜しくお願いします。
?
日本語でおk
650 :
デフォルトの名無しさん :2009/12/24(木) 12:58:37
>>643 別にやる予定があるわけじゃないんだけど
このストップウォッチって勝手にスタートして勝手に止まるの?
略の中に重い処理が書かれてるんだろう
【 課題 】キーボードから文字入力し、":"で文字列分割をし、結果を表示する。 文字列分割の際にはsplitメソッドを利用すること。 【形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】 制限なし 【 期限 】12/25 15時まで。 【 Ver 】1.6.0_15 【補足 】キー入力と分割はできましたが、ひらがなを入力すると表示するとき文字化けしてしまいます・・・ 色々なサイト見たのですが解決できませんでした。よろしくお願いいたします。
>>652 環境書け
Eclipse使ってるなら使わない
>>653 環境はEclipse version3.4.1です。
Eclipse使わずにやれば問題ないということでしょうか??
>>643 import java.io.*;
import java.util.Calendar;
public class StopWatch{
public static void main(String[] args){
FileOutputStream os = null;
FileReader fr = null;
try{ // ファイル操作などでエラーが出たときの例外用(ストリームを閉じる以外特に処理しないけど)
long t = System.currentTimeMillis();
System.in.read(); // キー入力待ち
t = System.currentTimeMillis()-t;
PrintStream out = new PrintStream(os = new FileOutputStream("log.csv", true)); // 出力ストリーム開く
out.println("["+Calendar.getInstance().get(Calendar.DATE)+"],"+t); // "[日付],結果時間"で出力
os.close(); // 出力ストリーム閉じる
os = null;
if(args.length >= 1 && args[0].equals("-t")){ // オプションで-tってあったら合計出力処理
String line; // 行取得用
BufferedReader br = new BufferedReader(fr = new FileReader("log.csv")); // 読み込みストリーム開く
t = 0;
while((line = br.readLine()) != null){ // 一行読み込み
try{ // 変な文法の行だったら何もしない例外処理にまわす(空行とかも)
t += Integer.valueOf(line.substring(line.indexOf(",")+1)).intValue(); // 時間があったら
}catch(Exception e2){}
}
fr.close(); // 読み込みストリーム閉じる
//続き fr = null; ByteArrayOutputStream bos; out = new PrintStream(bos = new ByteArrayOutputStream()); // 出力内容バッファ try{ // log2.csvが開けないときはファイルが存在しないとみなし、新しいファイルを作成して出力はしたいので外の例外処理に回さない br = new BufferedReader(fr = new FileReader("log2.csv")); // while((line = br.readLine()) != null){ try{ // ','が無い行などは何もしない例外として処理 if(line.substring(0,line.indexOf(',')).trim().equals("time_sum"))break; // "time_sum,〜"なら〜が数値以外でも目的の行と判断(ちょっといい加減だけど) }catch(Exception e){} out.println(line); // 関係ない行はそのまま出力 } }catch(Exception e2){} out.println("time_sum,"+t); // 目的行出力 if(br != null)while((line = br.readLine()) != null)out.println(line); // 残りの関係ない行もそのまま出力 (os = new FileOutputStream("log2.csv")).write(bos.toByteArray()); // 全体を実書き出し(ストリームは通常時もfinallyで閉じる) } }catch(Exception e){}finally{ try{ if(os != null)os.close(); // ファイルストリーム後処理 if(fr != null)fr.close(); // }catch(Exception e){} } } }
>>645 これは何者かが考えた15パズルを解くプログラムである。
以前の試行より手数が多くなるならそこでやめるという特色があるものの、基本は単なる総当りだ。
試行回数の最大は根拠があるのかわからないが、初期値として30が入っている。
バッファを99999取っているところから見ると適当なのだろう。
読むものを混乱に陥れるためとしか思えない箇所が随所に見られ、作者の正気を疑いたくなる。
例えば
> priInfo.Log = priInfo.Log.replaceAll("←","上");
> priInfo.Log = priInfo.Log.replaceAll("→","下");
> priInfo.Log = priInfo.Log.replaceAll("↑","左");
> priInfo.Log = priInfo.Log.replaceAll("↓","右");
という箇所があるが、それなら最初から"上"などの文字を使わないのはなぜだろう。
他にもつっこみどころ満載だが
一番突っ込みたいのはこんなアルゴリズムの解読をしろという
>>645 の課題だ。
なんとなく解った 左側の添え字にX、右側の添え字にYっていう変な方法を取った結果(普通は[y][x]だよね?) 上下と左右がごちゃごちゃになってしまい 悔し紛れに最後に文字を差し替えることにしたんだろう ただ←から↑に差し替えると ↑を差し替えるときに既に←から差し替え済みの↑まで差し替えてしまう それを回避するために矢印から漢字に差し替えたんだろう
>>658 > 普通は[y][x]だよね?
Java ではそうなんですか?
>>655 遅れましたが親切にありがとうございます、本当助かりました!
>>659 2次元配列を書くときの横方向にあたるのが右に来る添え字だから普通はそうじゃないだろうか
これはテキストエディタ上での問題だけじゃなくてメモリ上で隣接した方向って感覚があるのかも
メモリ上で隣接っていうのはビットマップ画像の横方向みたいなことで
説明下手で悪いけど
とはいえ関数の引数なら(x,y)が普通だし、数学とかの慣習でもそうだから
それに合わせて[x][y]という人も少なからずいるだろうとは思う
ただ[x][y]派の人と一緒に作業することになって、どっちかに統一することになるだろうけど、
これに関しては譲る気になれない
引数の(x,y)と合わせる利点は認めるが、上に書いたことを覆せるものじゃない
あるていど考える人なら[y][x]ってやり方に落ち着くだろうと思う
プログラムにおけるデータの扱い方で変えてる y方向に何度も走査するようなプログラムなら[x][y]のほうがいいし x方向に何度も走査するようなプログラムなら[y][x]のほうがいいし どっちも頻度に大差なかったりするなら[x][y]にしてる
他人と一緒に作るなら事前に取り決めておけよ。 個人の趣味でやるなら自由でいいと思うよ。 メモリアクセスの多少の違いがどうとか気にするレベルじゃないだろ宿題なんて
何のための抽象データ型だよ・・・
>>661 よく意味がわからないので、仮に統一の話が出てもこちらも譲る機がないのですけど。
わざわざ y, x と逆にするのが不自然ですね。
>>665 わざわざy,xとする理由が661にあるんじゃないの?
理解もせず不自然と考えるのはちょっとばか
667 :
665 :2009/12/26(土) 13:38:15
>>666 そんなものがあるのですか?理由とは名ばかりの思い込みではないですか?
>>665 自分で
>よく意味が分からないので
って言ってるじゃん。まず理解してから発言しようよ
670 :
665 :2009/12/26(土) 16:13:26
>>662 はよく理解できるのですけれども、
>>661 の「横方向にあたるのは右の添え字だから」というフレーズが理解できません。
さらに「あるていど考える人なら[y][x]ってやり方に落ち着くだろうと思う」という断言にはついていけません。
hoge[][] aのa[0]は行なんだよ 通念なんだよ
672 :
665 :2009/12/26(土) 17:48:11
>>671 それと、実際の行へのマッピングとは別の話なんですが。
付け加えれば、
>>662 はよくわかります。
674 :
661 :2009/12/26(土) 20:07:12
>>670 まず前提としてxは横方向、yは縦方向というのは了解できますか?
さらに言うと左はx軸の負の方向、右は正の方向で
yは数学の慣習とは違ってややこしくなりますが、コンピュータの画面表示では
上がy軸の負方向、下がy軸の正方向とするのが一般的だと思います(3Dだとまた変わってきますが2Dなら)。
x++ 右に移動、x-- 左に移動、y++ 下に移動、 y-- 上に移動。了解できますか?
その上で
a b
c d
という盤を使ったゲームか何かがあるとします。
aの位置にいるならx=0, y=0、bならx=1,y=0、cならx=0, y=1、dならx=1,y=1。
盤を2次元配列であらわすときに
char[][] data = {
{ 'a', 'b' },
{' c', 'd' },
};
とそのまま書けるのが[y][x]法です。
aの位置である x=0,y=0 から x++ すれば右にあるbの位置 x=1,y=0 に行けます。
しかし[x][y]法だと x=0,y=0 から x++ するとcの位置に、つまり下に移動したことになってしまう。
[x][y]法では
char[][] data = {
{ 'a', 'c'},
{ 'b', 'd'},
};
と書かなければいけません。上下と左右を変えなければならず紛らわしいと私は思います
こういうことを言っていたつもりなんですけど解りましたか
675 :
665 :2009/12/26(土) 20:26:30
>>674 なるほど、初期化の際に、static な初期化子をそのままのイメージで記述することができる、という利点があるのですね。
よくわかりました。丁寧なご説明、ありがとうございました。
なんか説明聞くだけで実際にはやっていなさそう
>>676 まとめて代入・初期化するときには [y][x] 方式では利点がありますが、実際初期化するときに
char[][] data = { ... };
とする機会があるかどうかですね。なければ
>>662 を加味して、最終的に決定するだけです。
もちろん
>>674 の考え方に一理あるとは考えています。
すげーどうでもいい話題だな
>>674 みたいな考え方をする人は
二次元のデータを一次元の配列で処理されたりするのは嫌だったりするのか?
一次元で表現するからこそ[y][x]になる {"abcd"}→{"ab","cd"}→{{'a','b'},{'c','d'}} テキストも画像もデータベースも普通[縦][横]
>>680 初期化にこだわらなければ、どっちでもいいのでは?
まとめて初期化するときだけ、[縦][横] としたほうがすわりがいい、という結論だと思うのですが。
a[x][y]はC言語で int **a; int *b[5]; int c[5]; b[0] = c; a=b; int d = a[4][0]; とか暗黙でyの方が次元が大きいからじゃないかな
初期化にこだわらずとも、 「ノードが縦にたくさんある。ノードの中身が横の配列」 ってイメージが強いからじゃない? イメージどおりにした方がやりやすいっていう。
イメージとかいいだしたら それこそ(x,y)だってただのイメージだろ
省メモリだとか高速だとかならともかく、
>>674 みたいな理由ならコメントでちゃんと書いてあればどっちでもいいよ。
こんなので絶対に譲れない(キリッ)とか言われたら面倒くさくて合わせてしまう。
結局個人によって何がわかり易いかなんて違うんだから宗教と変わらんわ。
686 :
デフォルトの名無しさん :2009/12/29(火) 13:51:31
テキストファイルのデータ(配列)を読み込む方法教えてください!!! 無知で申し訳ないです・・・
>>686 説明不足、不明瞭でよく解らないが
例えばファイルの最初の行に書かれたカンマで区切られた整数を読み込みint配列にするなら
int[] array;
FileReader fr = null;
try{
BufferedReader br = new BufferedReader(fr = new FileReader(file));
String line = br.readLine().trim(); // 前後の空白文字を除いた一行を取得
int begin=0,end; // 文字列内の値部分の開始位置,終端位置
ArrayList<Integer> vec = new ArrayList<Integer>();
while( (end=line.indexOf(',',begin)) != -1 || // 次のカンマ場所を調べる
begin < line.length() ){ // 最後の','より後ろに値が文字がある
if(end == -1)end = line.length(); // 最後のカンマの後ろの文字部分
try{
vec.add(new Integer(line.substring(begin,end).trim())); // 文字列の一部を取り出して、Integerのオブジェクトにする
}catch(Exception e){vec.add(new Integer(0));} // 整数じゃなかったら0とする
begin = end+1; // beginにカンマの次の位置を代入
}
array = new int[vec.size()]; // 配列
for(int i=array.length;i--!=0;)array[i] = vec. get(i).intValue(); // intにして配列に代入
}catch(IOException e){ array = null; } // ファイルが存在しないなど
finally{ try{ if(fr != null)fr.close(); }catch(Exception e){} }
みたいな感じでどうだろうか
>>687 // 課題2
public class Daigaku extends Human{
private String number;
public static void main(String[] args){
Daigaku[] student = { new Daigaku("00A00", "Taro", 165.0, 55.0), new Daigaku("00A01", "Hanako", 138.3, 45.2), new Daigaku("00A02", "Ken", 189.7, 105.8), };
for(int i=0;i < student.length;i++)student[i].showData();
}
public Daigaku(String number, String name, double height, double weight){
super(height,weight,name);
this.number = number;
}
public void showData(){
System.out.print("学籍番号:"+number+" , ");
showValue();
}
}
// 課題3
// Humaのheight,weight,nameをprivateからprotectedに変える
// DaigakuのshowDataを下記に変更
public void showData(){
System.out.print("学籍番号:"+number+" , ");
System.out.print("名前:"+name+", ");
System.out.print("身長:"+height+"cm, ");
System.out.println("体重:"+weight+"kg, ");
}
って感じでいいんだろうか。
課題1が出来てるんだし2、3も出来るんじゃないのと思った
ただ問題に誤植が多いし、言葉の選び方なんかも不用意で問題としてどうかだし
内容もつまらんから途中で嫌になったのかな
【 課題 】@ 配布した「MouseArt2009」を元にした オリジナルの作品であること
A 見る人が画面をクリックするたびに、不思議な模様を描き、そして音声が再生されるものであること。
B 「楽しさ」、「クールさ」、「荘厳さ」、など受け手が感心するような作品を考えてください
C if文、for文、配列、Mathクラスなどを有効に使って、プログラムならではの表現を試みてください
【 形態 】Applet
【 GUI 】制限なし
【 期限 】解答希望日:1/5もしくは1/6
【 Ver 】1.6.0 16
【 補足 】キーボードの画像のアルファベット部分(A〜Z)をクリックすると、クリックした1文字が画面に表示され、
新たにもう一文字クリックすると今度はその1文字が表示される。
F1〜F4のキーをクリックすると任意の自己紹介などを表示する。
クリックした際には音がなる。(A〜Zで同じ音、F1〜F4で同じ音。計2つの音がある。)
その他のキー(A〜Z、F1〜F4以外)は何もアクションはおこらない。
使用するキーボード画像、音楽がはいったファイルはこちらになります。
ttp://www51.tok2.com/home/rg550/cgi-bin/hosoku/img0048.zip 誠に勝手ではありますが、動作確認やソース理解などをするため1/5もしくは1/6までにお願いいたします。
丸投げですがどなたかよろしくお願いいたします。
質問本スレでも、質問したのですが、スレ違いということに気付きこっちに移動してきました。 965 デフォルトの名無しさん [sage] 2010/01/02(土) 19:05:37 ID: Be: 高校の宿題で、サーバー役とクライアント役に分けて、プログラム作って、簡易チャットを作っているのですが、分からない点があります。 client1 とclient2が接続されてるとして、server側でclient1が発言したのを、client2側の画面に反映する方法がわからない。(client2の出力ストリームに流し込む方法が・・・分かりません) いくつかアドバイスレスは頂いたのですが、なにぶん難しくて理解出来ませんでした。マルチレスという形にはなってしまうのですが、ご助言のほど宜しくお願いします。
>>694 向こうで書かれてた方法のうち、ポーリング法というのが
古典的な掲示板システムなんかで使われてるやつですね。
クライアント側から一定期間ごとにサーバに問い合わせて、更新メッセージがあればサーバから受け取る、みたいな。
サーバ側では問い合わせに対応できるように、チャットの内容を連番や書き込み時刻などで管理しておく必要があります。
あと、「クライアント側で一定期間ごとにサーバに問い合わせ」るのではなく、
ユーザがクライアントのボタンを押すことで問い合わせを行うのも一般的かと思います。
おっと、チャットシステムで手動更新は 一般的では無いですね。
>>696 アクセス制限で書き込み出来ませんでした。
動作確認できました。ありがとうございます。
コメントまで丁寧に書いて頂いて助かりました。
これで入社前研修を乗り切れそうです。
>>700 できない奴は入社後研修、できた奴は即実戦投入だったりして
底力を上げるのが勉強なんだが 素通りしたら気張り続けないと大変だぞい
703 :
デフォルトの名無しさん :2010/01/11(月) 15:58:15
【 課題 】任意のテキストファイルを選択し、テキストファイルを表示させなさい
(思い描いている内容)
以下の画像を参照ください。
ttp://imepita.jp/20100111/571090 @の参照ボタンを押すと、ファイルを開くダイアログボックスが表示し
任意のテキストファイルを選択
Aに選択したテキストファイルの絶対パスが表示
同時にBのエリアににテキストファイルの内容が表示し縦横スクロールが可能
保存はしない
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】1/12 午前中
【 Ver 】1.6.0_17
【 補足 】申し訳ありませんが、丸投げです
よろしくお願いいたします
705 :
デフォルトの名無しさん :2010/01/11(月) 17:55:21
初めて2chに書き込みます
Javaがわかりません
お願いします
【 課題 】自然言語処理、構文解析のCYK法のプログラム
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】2010/01/18
【 Ver 】java version "1.6.0_17"
【 用語 】CYK法
http://ja.wikipedia.org/wiki/CKY%E6%B3%95 【 補足 】お願いします
>>705 卒研とかの丸投げ?
短期で解決すべき宿題ならもっと具体的な設問があるだろうからそれを示せ。
>>704 >>707 こんなに早くありがとうございました
こちらで動作の確認が行えました
いただいたファイルを確認してjavaの理解を深めたいと思います
先生の小言を聞かなくて済みそうです
本当にありがとうございました
>>709 そのコードを修正するのが課題なのか変に手を加えた結果がそれなのか。
「与えられた課題文をそのまま」書いてそれなわけ?
あと、<<必須>>って書いてあるんだからバージョン情報くらい書いたら。
今時Vectorってjava幾つだよ。
>>709 versionは1.6.0_17です。
また、プログラムを修正するのが課題です。
課題で定義された変数は使った方がいいでしょw
>>721 initにこれを追加(変数定義忘れないように)
speedUpB = new Button("Speed UP");
add(speedUpB);
speedUpB.addActionListener(this);
sleepTime = 500;
actionPerformedの分岐に追加
else if(e.getSource() == speedUpB){
if(sleepTime > SLEEP_CHG_TIME){
sleepTime -= SLEEP_CHG_TIME;
}
}
runで
th.sleep(500);
を
th.sleep(sleepTime);
に変更
SLEEP_CHG_TIMEはどれだけ早くしたいかを定義すればおk
【 課題 】チョイスにより三角関数のグラフ(sin, cos, tan)のカーブを
選択して描画領域に描画させるJavaアプリケーションを作成せよ。
y = sin ax において、aの値をテキスト
フィールドで入力して描画できるように拡張してみよ。(cos, tanも同様)
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】1. AWTのみ
【 期限 】1月25日まで
【 Ver 】1.6.0_17
【 補足 】
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/880.zip こんな感じでお願いします
>>709-710 ,714
そんだけでいいなら
1)材料を繰り返して入力している部分の重複を排除(4つの材料すべて)
×→wm.addAssertion("butaniku butaniku");
○→wm.addAssertion("butaniku");
2)Recipe.txt の中身で餃子に必要な材料の部分の ?x を削除(4つの材料すべて)
×→"x? butaniku"
○→"butaniku"
これで与えられた条件は満たせる。
新しいルールの作成っぽいことしようとして上手く行ってない感が残ってるけどしらね。
【 課題 】国旗を表示するプログラム(日の丸、星条旗、ユニオンジャック等)を作れ。 指定された国旗を画面に表示する。少なくても8種類以上。 国旗の指定にはメニューとかボタンとかを表示して、選択させること。 国旗は図形として描くこと。写真を貼り付けたりしては駄目。 【 形態 】 Javaアプリケーション(main()で開始) 【 GUI 】JFrameを使えといわれました 【 期限 】1月30日まで 【 Ver 】1.6.0_18 【 補足 】できたプログラムについての説明(変数の役割、実行の流れなど)もあるとありがたいです。 よろしくお願いします。
>>729 問題ありません
ありがとうございました
>>729 参考までに聞きたいのですが
完成までにどのくらいかかりましたか?
733 :
デフォルトの名無しさん :2010/01/18(月) 15:40:33
Javaの課題で、コマンドにいろいろなことを入力して、 そこから入力されたファイルを読み込みたいのですが・・・ Scanner filein = new Scanner (new BufferedReader( new InputStreamReader(System.in))) String line; String p = "(\\w+)(\\W)([a-z]+)"; while((line = filein.findInLine(p))!=null){ System.out.println(line); } FileReader a = new FileReader(line); BufferedReader din = new BufferedReader(a); これだとエラーがおこります。 どうすればいいか教えていただけませんか?
自家発電は2分くらいで終わります
>>733 意図がさっぱりわからないけど、
FileReader a = new FileReader(line);
が実行されるとき、つまりwhile文の判定がfalseのとき、lineは常にnullになるよ?
dbを勉強したくてJRE1.6でjavaDBたるものが梱包されているって聞いたのですが、 そのクラスを教えていただけないでしょうか?
dbを勉強したいならpostgresqlをインスコしたほうがいい
あークラスか。Windowsだったら C:\Program Files\Sun\JavaDB\javadoc\jdbc4 にJavadocがある。 C:\Program Files\Sun\JavaDB\lib\derby.jar が本体だと思うけど。 あと、JREじゃなくてJDKじゃないかな?JavaDBがついてるの。
>>740 そーいうことっすか?
じゃあ運用レベルでは使わないでねって感じっすか?
データソースを自力で登録したいのですが、 どんな手順で登録できるでしょうか?
日本語でOK
>>734 わざわざお答えいただきありがとうございました
747 :
デフォルトの名無しさん :2010/01/19(火) 06:09:00
【 課題 】FrameもしくはJFrameに半径5ピクセルの円を描きなさい(y座標を30以上にすること)。 そしてキーボードのカーソルキー(矢印キー)を押すと、この円が矢印キーの刻印の示す 方向へ4ピクセル移動するようにしなさい。なお、移動前の円が残っていても構わない。 (KeyEventを利用。getKeyCode,VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT) 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】4. 制限なし 【 期限 】2010年1月25日 【 Ver 】1.5.0_12 【 補足 】丸投げでお願いします。
import java.awt.*; //
>>747 import java.awt.event.*;
import javax.swing.*;
public class R747 extends JComponent {
private int x = 100, y = 100;
@Override public void paintComponent(Graphics g) { g.drawOval(x, y, 5 * 2, 5 * 2); }
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final R747 c = new R747();
f.addKeyListener(new KeyAdapter() {
@Override public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP: c.y -= 4; break;
case KeyEvent.VK_DOWN: c.y += 4; break;
case KeyEvent.VK_LEFT: c.x -= 4; break;
case KeyEvent.VK_RIGHT: c.x += 4; break;
}
c.repaint();
}
});
f.add(c);
f.setSize(400, 400);
f.setVisible(true);
}
});
}
}
751 :
デフォルトの名無しさん :2010/01/19(火) 15:10:33
755 :
デフォルトの名無しさん :2010/01/20(水) 15:38:49
【 課題 】インターネット書店を作成せよ <条件> ・画面サイズ→VGAとする ・書籍は5ジャンル150冊 ・1回の注文で5種類まで書籍を注文可能 ・書籍の値段は20円単位とし、書籍の値段は自由 ・書籍価格の合計金額の2%のポイントが与えられる。(ただし、ポイントは第一ジャンルは2倍、第二ジャンルは3倍になる) ・注文終了後、注文確認画面で注文と支払い代金、獲得ポイントが確認できる。(支払い代金とは、注文図書の合計金額と消費税の和) ・貯まったポイントを併用して支払いが可能(ポイントの価値は、1ポイント1円) ・書籍の発送は電子メールの添付ファイルで行う(発送は出来なくてよい) ・ソフトキーボードのみ使用可能 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】2. Swing 【 期限 】1/27 【 Ver 】1.6.0 【 補足 】実用的な画面インタフェースでは取消機能が必要であるが、ここでは取消機能については 考えなくてよい。 また、ユーザーは正しい操作を行うものと仮定して良い。 講義内容がいきなり飛躍して、期限までに作成困難なので教えていただければ幸いです。 よろしくお願いします。
String[]型の配列の要素を全てprintlnで表示しようとすると [Ljava.lang.String:@16進数みたいな文字 になってしまうのですが これの解決方法ってないでしょうか? String[] list = new String[100]; list[0] = "aaa"; list[1] = "bbb"; list[2] = "ccc"; System.out.println( list ); で[Ljava.lang.String:@16900e1 みたいなのが表示されます ArrayListで配列を作ると ArrayList list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); System.out.println( list ); で [aaa, bbb, ccc] といった感じで出てくるのでこれをString[]配列で出せるようにしたいです。 (仕様が戻り値をString[]型にせよ のため) 自分ではfor( int i = 0; i < 100; i++ ){ System.out.println(list[i])} の方法しか思いつきませんでした。 これだと aaa bbb ccc のように改行して表示されてしまうので Arraylistの例のように横一覧に出力することは可能なのでしょうか?
757 :
756 :2010/01/20(水) 23:22:28
追記:環境は Java1.4です
>>756 JDK5以上ならArrays#toString、1.4ならArrays#asListでListに変換してprintlnに渡す。
でもnullの要素を特別扱いするわけじゃないから100個の要素がある配列では100個分の要素が表示される。
結局自分で書かないと[aaa, bbb, ccc]のようにはならない。
AbstractCollection#toStringのソースが参考になると思う。
単にprintlnでなくprintメソッドを使って要素とコンマを交互に出力するでもいいかもしれない。
それとここは宿題スレだから単なる質問は質問スレ(
>>745 )が別にあるので今後はそこへどうぞ。
【 課題 】
ttp://www1.axfc.net/uploader/Sc/so/75122 こちらをご参照くださいませ。
@を押すとファイルを開くダイアログが表示されるので、任意のファイルを選択
すると、隣のテキストフィールドに選択したファイルの絶対パスが表示。
Aを押すとフォルダを開くダイアログが表示されるので、任意の場所を選択
上に同じく隣に絶対パスが表示されます。
Bで任意の文字列を入力。
Cを押すと、Aで選択したフォルダにBで入力した文字列を持つ新しいフォルダが作成され
そのフォルダの中に@で選択したファイルを移動するというものです。
説明が下手ですみません。
【 形態 】Javaアプリケーション(main()で開始)
【 GUI 】Swing
【 期限 】1/22早朝
【 Ver 】1.6.0_17
【 補足 】ファイル移動のメソッドの使い方がまったく分からずここ何日も立ち往生してしまっています
丸投げですみませんがどうかよろしくお願いいたします。
764 :
デフォルトの名無しさん :2010/01/22(金) 00:30:40
765 :
761 :2010/01/22(金) 00:54:44
>>763 相変わらずコンパイル時にエラーまみれでどうしたものかと思っていたところです
とても助かりました
本当にありがとうございます、感謝してもしきれません。
766 :
761 :2010/01/22(金) 00:55:38
>>763 相変わらずコンパイル時にエラーまみれでどうしたものかと思っていたところです
とても助かりました
本当にありがとうございます、感謝してもしきれません。
767 :
デフォルトの名無しさん :2010/01/22(金) 00:57:30
だいじなことなので2かいいいました
期限までまだありますが
>>750 をよろしくお願いします。
【 課題 】
サーバとクライアントでの間で文字列を送り合うプログラムをつくれ。
ただし、以下の条件を満たすようにすること。
アドレス、ポート、名前、文字列はキーボード入力し、お互いに自由に指定できるようにする。
クライアントで quit が入力された場合、クライアントは接続を切りプログラムを終了し、
サーバは接続が切られたら、次のクライアントの接続を待つ
サーバで quit が入力された場合、サーバは接続を切り、次のクライアントの接続を待ち、
クライアントは接続が切られたらプログラムを終了する
エンターキーのみが入力された場合は、文字列を送らずもう一度文字列を入力させて、
その文字列を送るようにする。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】1/25
【 Ver 】1.6.0_14
【 補足 】
途中まで四苦八苦してファイルを作りましたので、添付いたします。
添付ファイル
サーバー側
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/897.java クライアント側
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/898.java これ以上どうやってもわからないので、お願いいたします。
特にコメントに名前をつけるやり方と、quitを入れたときの処理がわからないです。
772 :
768 :2010/01/22(金) 21:30:19
>>770 助かりました。本当にありがとうございます。
775 :
774 :2010/01/22(金) 23:19:22
>>771 > エンターキーのみが入力された場合は、文字列を送らずもう一度文字列を入力させて、
> その文字列を送るようにする。
を忘れてた
クライアントに
if (str.isEmpty()) continue; //+++
if (str.equals("quit")) {
break;
}
を加えてサーバを
//+++
do {
System.out.println("送信する文字列を入力してください");
str = data.readLine();
} while(str.isEmpty());
//+++
if (str.equals("quit")) {
break;
}
のように変更する
776 :
771 :2010/01/23(土) 21:47:55
>>773-775 さん
ありがとうございます!!
名前をつけるというのはチャットのように、発言者に名前をつけるという意味です。
加藤<こんにちわ
斉藤<こんにちわ
こんな感じで・・・
>>775 それやったらchatchがありません。みたいなエラー出たのですが、どこに張れば
良いんでしょうか?
自宅のPCのポート開放のやり方がわからなく、月曜日にならないとプログラム同士の
接続が試せないので、また月曜日に分からない点などがあったら報告したいと思います。
本当に助かりました!ありがとうございました。
if (str.equals("quit")) { break; } がある位置はクライアントとサーバそれぞれで一ヶ所しかないんだから 付け加えたり変更したりする場所は見当付くだろ エラーが出たらそのソースを晒さんと他人には分からんだろ せめて出たエラーを貼れ どんなセキュリティをかけてるか知らないがlocalhost同士で通信するのは特に難しくないんでは?
780 :
デフォルトの名無しさん :2010/01/24(日) 10:00:51
【 課題 】FrameもしくはJFrameに半径5ピクセルの円を描きなさい(y座標を30以上にすること)。
そしてキーボードのカーソルキー(矢印キー)を押すと、この円が矢印キーの刻印の示す
方向へ4ピクセル移動するようにしなさい。なお、移動前の円が残っていても構わない。
(KeyEventを利用。getKeyCode,VK_UP,VK_DOWN,VK_LEFT,VK_RIGHT)
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】2010年1月25日
【 Ver 】1.5.0_12
【 補足 】
>>747 です。先生に駄目だしをくらいまして自分で組みなおしてるんですが
どうにも丸が動きません。下のプログラムを弄って動くようにしてもらえませんでしょうか?
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/905.java
782 :
デフォルトの名無しさん :2010/01/24(日) 11:08:21
>>781 ありがとうございます。
助かりました!
>>782 問題でVK_UPやVK_DOWNなどのキーコード定数を使えってあるのに
返されるStringが変更される可能性のあるgetKeyTextを使ってわざわざStringに変換してるし
そのStringの等値判定をequalsでなく==でやってるのもいいこととは思えない
e.getKeyCode()が返す値とKeyEvent.VK_UPなどとを直接比較する方が題意に沿ってると思うが
またダメ出しされないかい?
【 課題 】3つのボールがレースをするプログラムを作りなさい。乱数を発生させ、毎回違った結果を出すようにしなさい。さらに以下の改良を加えなさい。
1)ボタンを押すと、レースがスタートする。
2)ゴールのラインを引いて、1着がどれかを表示する。
【 形態 】2. Applet
【 GUI 】4. 制限なし
【 期限 】1/25 23:00まで
【 Ver 】1.6.0_17
【 補足 】乱数を使ったレース部分までは以下のプログラムにあります。それを改良して、1)&2)の付け足しをお願いします。
ttp://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/909.java
>>785 迅速な回答ありがとうございました。
ゴールラインの設定仕方がわかりやすく、大変参考になりました。
791 :
デフォルトの名無しさん :2010/01/25(月) 01:32:22
【問題1】テキストボックスに値を入力すると解を表示するプログラミングを書きなさい 【問題2】足し算のみをする電卓をつくりなさい。 両方ともアプレットのプログラムです。 よろしくお願いします。
>>791 >>1 のテンプレ
それから問題1は多分だれも答えられないと思われ。
何の値を入れて何の解をどこに表示するのか?
問題1は難しそうだな Googleの検索エンジンでも実装しろっていうのか?
簡単でしょ 仮言語だが if text=="値" then text="解"
796 :
デフォルトの名無しさん :2010/01/25(月) 07:41:24
>>794 if "値".equals(text). then text="解"
797 :
デフォルトの名無しさん :2010/01/25(月) 13:09:32
>>791 問題1ですが、
□x^2+□x+□=0 【実行】
解は〜です。
□の部分に値をいれ、実行のボタンを押したら、
解を表示するようなプログラムを作れということだと
思います。説明がたりなくてごめんなさい。
>>797 >>1 を読んでテンプレ埋めろ
期限が無いってことはどんなに遅くなっても構わないってとられても仕方ないし
バージョンを指定しないのならJDK7PRで追加されてる機能を使われる可能性もあるぞ
「二次方程式の解の公式」なんぞ はるか昔に忘れた などとほざく文系大卒はごまんといる 「二次方程式を解かなくても生きてこられた。」 「二次方程式などは社会へ出て何の役にも立たないので、このようなものは追放すべきだ」 「私は今まで数学が私の人生に役立ったことは無く、大多数の国民もそうだろう。」
>>750 今見てみたけど、課題として中々面白いね。
ちょっと考えてみようと思ったけど期限切れ?
あと、CarShop.dataっていうファイルと、ソースコードにもそれに関連してるらしき記述があるけど
これはどうすれば?
>>800 亀レスですが一応26日の午前までなら大丈夫です。
CarShop.dataと中のソースファイルはあくまで前向き推論のサンプルプログラムです。
ご協力いただければ幸いです。
宿題の一部ですが(全部だと膨大な量のため) java(当方が作成しているのはi-appli)において、 任意の座標に置かれた2点の角度を求めて その角度の線を(任意の位置に任意の長さで)描画することは可能でしょうか? 可能ならば方法を教えていただければ幸いです。 【 GUI 】i-appliに使用出来るものは何でも可 【 期限 】1/26日 24:00 【 Ver 】1.6.0_17
802ですが 質問に答えなくていいです ゆとりな質問してしまいすみませんでした。
804 :
デフォルトの名無しさん :2010/01/27(水) 03:09:45
>804 >どこが間違ってるか教えてください。 質問の仕方。
806 :
デフォルトの名無しさん :2010/01/27(水) 16:40:01
807 :
デフォルトの名無しさん :2010/01/27(水) 18:38:13
いつになったらはたらけるかな
慶応の丸投げって結構多いよな
810 :
デフォルトの名無しさん :2010/01/29(金) 01:12:07
>>809 授業で家を描くプログラムを習ったので、それは禁止という事です。
すいません、完全に説明不足でした。
>>806 課題的に、単なるprint文で
「ごめんなさい。全然分かりませんでした」
などとくどくど「オリジナルな」言い訳を表示するプログラムでもいいの?
>>806 「総動員」出来る「これまでに学んだJavaの知識」も分からんし。
家を書くプログラムを直して、車を書くプログラムにでもしてみたら?
813 :
806 :2010/01/29(金) 12:05:43
自己解決しました。ありがとうございました。
>>813 補足の説明が全く意味なくてわろた
【補足】これまでに学んだJavaの知識とは…
【 課題 】
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/915.txt 【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】2/3日17時まで
【 Ver 】"1.6.0_12"
【 補足 】過去ログに同じような物がありましたが、
途中までしかかかれていなかったので投稿しました。
手違いでShiritori.java(完成形)が貼れなかったのでここに書きます
import java.util.Scanner;
public class Shiritori {
public static void main(String[] args) {
Scanner keyboardScanner = new Scanner(System.in);
final char initialChar = 'あ';
String newWord;
System.out.println("しりとりをしましょう");
Referee referee = new Referee(initialChar);
do {
System.out.printf("「%c」で始まる単語を入力してください:", referee.mustBeginWith());
newWord = keyboardScanner.next();
}while (referee.isOK(newWord));
System.out.println("おしまいです.");
}
}
長文失礼しました
しりとりって難しそうだな 入力された単語が単語として存在するかどうかの判定ができなさそう Googleとかの検索使って街頭するページが1ページ以上あればOKとかにするのかね
>>817 ありがとうございます。
public boolean isOK(String newWord){
のところに「このメソッドは型booleanの結果を戻す必要があります」とエラーがでてしまいます。
booleanをvoidに戻すとreturnにエラーが出てしまいます。
後this();のところには「コンストラクターReferee()は未定義です」と出てしまいます。
こちらも少し試行錯誤してみますが、どうかよろしくお願いします。
>>818 連投すいません
815ですthis();のところは打ち忘れがあったことが判明しました。
しかしpublic boolean isOK(String newWord){はまだ原因がわかりませんのでよろしくお願いします。
>>817 全て僕のうち間違いのミスですか本当に申し訳ございませんでした。
817さん本当にありがとうございました。
感謝しきれないです
821 :
デフォルトの名無しさん :2010/01/31(日) 18:32:49
【 課題 】Java の線分描画,点描画のメソッドをつかって,放物線を描画して下さい. 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】2. Swing 【 期限 】2010/2/12 12:00 【 Ver 】1.6.0_12 よろしくお願いします。
>>821 import java.awt.Graphics;
import javax.swing.*;
public class Parabola extends JComponent {
@Override public void paintComponent(Graphics g) {
int w = getWidth(), h = getHeight();
for (int x = 0; x < w; x++) g.drawLine(x, y(x, w, h), x+1, y(x+1, w, h));
}
private int y(int x, int w, int h) { // y = - (4h/w^2)(x - w/2)^2 + h
return (int)(h - 4.0 * h / w / w * (x - w / 2.0) * (x - w / 2.0));
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new Parabola());
f.setSize(500, 500);
f.setVisible(true);
}
});
}
}
823 :
デフォルトの名無しさん :2010/02/01(月) 10:39:52
【課題】もぐらたたき 【形態】javaアプリケーション 【期限】2月3日 最低限の機能があればいいです。 課題自体は細かい指定など何もないのでとにかく動けばいいです。 制限時間20秒でヒットしたら+10点とかでお願いします。 丸投げで申し訳ありません! よろしくお願いします!!
最低限、テンプレの必須項目も埋められないようでは……
825 :
デフォルトの名無しさん :2010/02/01(月) 22:05:38
【 課題 】javaを用いて時計を表示するプログラムを作成しなさい。 【 形態 】Applet 【 GUI 】制限なし 【 期限 】2月10日 【 Ver 】1.6.0_03 【 補足 】アナログとデジタル二つを表示して、STARTとSTOPのボタンで操作できて、初めに時刻を設定してSTARTのボタンで 動き出すもの。 時刻を設定するところが分かんなくて自分のだとパソコンの時間を表示するだけになってます。 よろしくお願いします。
>>825 入力された時刻をパソコン自体に設定しようとしてるんじゃないか?
パソコンの時間と関係なく、初期値が0じゃないストップウォッチだと考えたらどうだ。
827 :
デフォルトの名無しさん :2010/02/02(火) 15:01:12
>>827 問題作った奴と半年くらい話し合いたい
おもにオブジェクト指向について
829 :
デフォルトの名無しさん :2010/02/02(火) 15:35:01
>>828 問題がわかりにくいのでしょうか?自分のできる範囲で改善するので、よろしくお願いします。
830 :
デフォルトの名無しさん :2010/02/02(火) 20:29:30
>>827 課題1
問題がひどいな。
class Ramen {
// カプセル化
private String type;
private Utsuwa utsuwa;
private Soup soup;
private Pasta pasta;
private Topping topping;
public Ramen(String type) {
this.type = type;
this.utsuwa = new Utsuwa();
this.soup = new Soup();
this.soup.setType(type);
this.pasta = new Pasta();
this.topping = new Topping();
}
831 :
830 :2010/02/02(火) 20:30:33
// つづき // オーバーライド public String toString() { return type + "ラーメン"; } // メソッド&オーバーロード public void cook(Pasta pasta) { this.pasta = pasta; } public void cook(Topping topping) { this.topping = topping; } } class Utsuwa {} class Soup { // カプセル化 private String type; public void setType(String type) { this.type = type; } } class Pasta {} class Topping {}
832 :
デフォルトの名無しさん :2010/02/02(火) 20:48:31
>>827 10000円のおつりはないのか?
1000円までしか計算してないからあとは自分で
public class TuriKeisan {
public static void main(String[] args) {
TuriKeisan tk = new TuriKeisan();
// 6200円の買い物
tk.setGoukei(6200);
// 7000円の受け取り
tk.setUketori(7000);
// 計算する
tk.calculate();
System.out.println("5000円:" + tk.getGosenen());
System.out.println("2000円:" + tk.getGosenen());
System.out.println("1000円:" + tk.getGosenen());
}
int goukei, uketori;
int gosenen, nisenen, senen; // 以下略
833 :
832 :2010/02/02(火) 20:52:28
void setGoukei(int x) { goukei = x; } void setUketori(int x) { uketori = x; } void calculate() { int amari = uketori - goukei; gosenen = amari / 5000; amari = amari % 5000; nisenen = amari / 2000; amari = amari % 2000; senen = amari / 1000; amari = amari % 1000; } int getGosenen() { return gosenen; } int getNisenen() { return nisenen; } int getSenen() { return senen; } }
>>827 このラーメンの例え…なんかの本で似たのを見たな
その著者なんだろうか
昔図書館で借りただけだからよく覚えてないけど
835 :
デフォルトの名無しさん :2010/02/02(火) 22:29:28
>>827 業務でまったく役に立たないオブジェクト指向の見本だな
836 :
デフォルトの名無しさん :2010/02/03(水) 00:58:15
>>828 ありがとうございます。でも分かんないんでプログラム作ってもらえないでしょうか?
>>834 俺もなんか見たことあるな
その本はやたら食いもんの例えが出てきてて
日本の弁当はおかずが区分けされてる→モジュール化
みたいな例があったな
839 :
デフォルトの名無しさん :2010/02/08(月) 21:04:47
【 課題 】5個以上の学生番号(2桁程度の数字で良い)、 名前、身長をプログラム中でセットし、 学生番号または名前をもとに身長を調べるプログラム。 学生番号と名前の入力データ、検索結果の身長データを両方表示する機能があること。 【 形態 】1. Javaアプリケーション(main()で開始)/ 【 期限 】2/10(水) たぶん二分探索使うかと思うのですが よくわかりません!すみませんがよろしくおねがいします!!
>>839 「または」って学生番号だけの検索でもいいの?
841 :
デフォルトの名無しさん :2010/02/08(月) 22:03:35
>840 できれば両方で検索できるやつがいいです!
842 :
デフォルトの名無しさん :2010/02/08(月) 22:04:29
無知は罪だ視ね
>>839 >たぶん二分探索使うかと思うのですが
二分探索使わなきゃいけないのか?
>プログラム中でセットし
元からあるファイルを読み込んだりしたら駄目で、
アプリケーション起動→手入力しろってことか?
>>842 そんな質問の仕方でわかるわけがない。
なにがどう実行できないのか。
そのページの何章の何行目までは上手く行ったけど、
何行目が上手くいかないとか。
>>842 質問なら質問スレが別にあるからそっちへ行け。
【 課題 】電話番号検索を行うjavaプログラムを、探索アルゴリズムを用いて作成せよ。 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】必要なし 【 期限 】2/10(水)午前中 【 Ver 】1.6.0_14 【 補足 】・最初に顧客番号(2桁の数字)、顧客名(Yamadaなど姓のみ)、電話番号(09012345678の形式、ハイフンなし)という顧客データを10人以上プログラム中でセットし、顧客番号または姓をもとに電話番号を調べるアルゴリズムを作成する。 ・顧客番号と顧客名の入力データ、電話番号データを両方表示させる機能をつけなければならない。 ・(もし可能なら)データリストへの顧客データの追加or削除機能を盛り込みたい 3つの要素を1式にするから線形リストを使うのかな?と思うけど、いろいろ調べたけど悪戦苦闘してます>< 何卒よろしくお願いします!
>>847 > 探索アルゴリズムを用いて作成せよ
>>839 と本質的に同じ課題なんだけど、どういう探索アルゴリズムやデータ構造を使うか縛りはないの?
縛りがなかったりマッチするものがあるのならコレクションフレームワークを利用してもいいの?
それともこれに相当するものを地道に自分で実装しないといけないの?
> プログラム中でセットし
というのは10人以上分の最初のデータはファイルやコンソールから取り込むのではなく、
プログラムソース中に直接記述して固定的なデータを与えてやればいいってこと?
それとも
>>844 が
>>839 に言ってるようにプログラム実行中に動的に与えてセットするって意味?
【 課題 】−出題内容− Testプロジェクトのsrc直下にパッケージtest5を作成し、下記のテストプログラムを作成する。そして、TripTestをパスする実装を作成しなさい。 <TripTestの説明> 日本旅行(JapanTrip)とアメリカ旅行(AmericaTrip)それぞれの旅費を算出する機能を実装する。抽象クラスTripを作成すること。 日本旅行もアメリカ旅行も食費(1万円)と宿泊費(3万円)は全く同じ金額で変わらないものとする。 それぞれの食費、宿泊費、交通費はそのまま金額が取得でき、旅費合計は食費と宿泊費と交通費を足したものである。 【 形態 】1. Javaアプリケーション(main()で開始、eclipseでやってます 【 GUI 】必要なし 【 期限 】2月12日 午前中 ですので希望は11日までです 【 補足 】↓ 以下、テストプログラム ↓ package test5; import static org.junit.Assert.*; import org.junit.Test; public class TripTest { @Test // 旅費を算出するテストプログラム public void testCost() throws Exception { Trip jpTrip = new JapanTrip(); assertEquals(10000, jpTrip.getFoodCost()); // 食費 assertEquals(30000, jpTrip.getRoomCost()); // 宿泊費 assertEquals(50000, jpTrip.getTravelCost()); // 交通費 assertEquals(90000, jpTrip.getTotalCost()); // 旅費合計(食費+宿泊費+交通費) Trip americaTrip = new AmericaTrip(); assertEquals(10000, americaTrip.getFoodCost()); // 食費 assertEquals(30000, americaTrip.getRoomCost()); // 宿泊費 assertEquals(300000, americaTrip.getTravelCost()); // 交通費 assertEquals(340000, americaTrip.getTotalCost()); // 旅費合計(食費+宿泊費+交通費) } } よろしくお願いします。
852 :
851 :2010/02/09(火) 17:12:01
>>848 Kadai11_2クラスはKad11_2クラスの間違いなので
public class Kadai11_2 {
を
public class Kad11_2 {
に修正してKad11_2.javaというファイル名で保存
>>850 public abstract class Trip {
public abstract int getFoodCost();
public abstract int getRoomCost();
public abstract int getTravelCost();
public int getTotalCost() {
return getFoodCost() + getRoomCost() + getTravelCost();
}
}
public class JapanTrip extends Trip {
@Override public int getFoodCost() { return 10000; }
@Override public int getRoomCost() { return 30000; }
@Override public int getTravelCost() { return 50000; }
}
public class AmericaTrip extends Trip {
@Override public int getFoodCost() { return 10000; }
@Override public int getRoomCost() { return 30000; }
@Override public int getTravelCost() { return 300000; }
}
854 :
847 :2010/02/09(火) 17:55:29
>>849 補足に不備があり、大変申し訳ございません。
大きな縛りはありませんが、
「サーチアルゴリズムは線形探索以外のものを採用せよ、文字列のアルゴリズムには制限はなく、データ構造も単なる配列でなくても構わない。
クラス配列・リスト・2分探索木など、対応するアルゴリズムによって適切なデータ構造を実装でしょ」とあります。
また、プログラム中にセットする部分は、仰る通りファイルからの読み込みではなくソース内にあらかじめデータを固定させておく方法を取りたいです。
もし可能であるなら、そのデータを追加・削除できる機能を盛り込めたらとも思っています。
丸投げになってしまい申し訳ないですが、よろしくお願いします!><
855 :
847 :2010/02/09(火) 17:57:02
>>854 修正
適切なデータ構造を実装でしょ→適切なデータ構造を実装せよ
【 課題 】アクションゲームのマップを広げる 【 形態 】1. Javaアプリケーション(main()で開始) 【 期限 】2/15 【 Ver 】コンソールでjava -versionを実行し、その結果を貼ります。 《必須》 【 用語 】数学用語、専門用語の意味、説明を書きます。 《あれば必須》 【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。 丸投げでない場合は、途中までのソースとその経過報告、 質問点、疑問点を書きます(なるべく丸投げにしてください)。 Uncaught exception java/lang/ArrayIndexOutOfBoundsException. ActionCanvas
857 :
856 :2010/02/09(火) 19:00:12
>>856 の段階でさえ残してたのにわざわざ書かないんだね
> 【 Ver 】コンソールでjava -versionを実行し、その結果を貼ります。 《必須》
865 :
847 :2010/02/10(水) 18:46:18
>>860 ありがとうございます! おかげで解決できました。
ただ1つだけお願いがあるのですが、
プログラムした内容について発表しなければならない場がありまして、
プログラムの各部分がそれぞれどんな処理なのかを教えていただけないでしょうか?
重ね重ねすみません。よろしくお願いします!
866 :
デフォルトの名無しさん :2010/02/10(水) 20:00:27
>>865 L29-L33 山田さん10人作成
L39 コンソールからの入力の準備
L42-L49 メニュー出力
L51 コンソールからの入力を受け取る
あとはそれぞれの機能。
データを引きやすくするために、
<コード, 個人情報>
のマップと
<名前, 個人情報>
のマップを両方持ってる。
で、追加の時は
addメソッドで両方のマップに追加。
削除の時は、
removeByName,removeByCodeメソッドで両方のマップから削除。
これ以上は、わかんないところを聞いてくれ。
つか、自分でちょっとやってみないと、
発表の時にちょっとでもつっつかれたら、
何にも答えられんぞ。
867 :
847 :2010/02/10(水) 21:11:09
>>866 なるほど、詳しくありがとうございます!
解説して頂いたおかげでよく理解できました。
残りの分も頑張ってみます、ありがとうございました!
【 課題 】GUIを使った簡易テキストエディターのプログラムです。 --------------------------------------------------------------------------- テキストを入力してください: I am a student! フォント変換後のテキスト: I am a student! --------------------------------------------------------------------------- 上のような形で、JTextField オブジェクト内に文字を入力した後、 その下に“Helvetica”, Bold, 24のフォントで変換した文字を表示させたいのですが。 【 形態 】1. Javaアプリケーション(main()で開始) 【 GUI 】JTextFieldとJLabelオブジェクトを使用します 【 期限 】2/14(水) 夜まで 【 補足 】Java初心者でよく分かりません。よろしくお願いします。
>>868 2/14(日)なのか2/17(水)なのかどっちだ。
あと、夜っていつだ。何時だ?
>>868 import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class TextEditor extends JFrame {
public static void main(String[] args) {
JFrame frame = new TextEditor();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private final JTextField inputField = new JTextField(10);
private final JTextField outputField = new JTextField(10);
public TextEditor() {
inputField.addActionListener(new ActionListener() {
// inputField内でEnterが押された時の処理
@Override
public void actionPerformed(ActionEvent e) {
outputField.setText(inputField.getText());
}
});
outputField.setEditable(false);
outputField.setFont(new Font("Helvetica", Font.BOLD, 24));
getContentPane().setLayout(new GridLayout(2, 2));
add(new JLabel("テキストを入力してください:", JLabel.RIGHT));
add(inputField);
add(new JLabel("フォント変換後のテキスト:", JLabel.RIGHT));
add(outputField);
}
}
>>869 あ、日曜日の間違いでした・・・。
>>870 本当に助かりました!ありがとうございました!
873 :
デフォルトの名無しさん :2010/02/16(火) 00:13:59
tes
874 :
デフォルトの名無しさん :2010/02/16(火) 00:29:07
>>872 問題1だけやった
1.「static String」「static」「String」「Test001.str」
2.「String str」「"HELLO "」
3.「str = "Hello " + str」「str」
4.「static String」「public static」「A.str + str」
5.「+=」「public static A」「new A(str)」
6.「String str」「str = str + this.str」「System.out.println(str)」
7.「String str」「System.out.println(str)」「abstract」
8.「super(str)」「this.str = str」
9.「public」「System.out.println(this.str)」「public」「interface」「String str」
10.「this.str」「abstract」「String str」
875 :
デフォルトの名無しさん :2010/02/16(火) 01:30:47
>>874 >3.「str = "Hello " + str」「str」
「print()」「str」じゃないか?
877 :
デフォルトの名無しさん :2010/02/16(火) 05:18:43
>>876 あー、なるほど。
どうにでもなるじゃんと思ってしまったw
879 :
デフォルトの名無しさん :2010/02/16(火) 10:32:33
>>875 とりあえずコンパイルは通るけど、
これ問題おかしくないか?
問題4なんてどうしてもぬるぽになるし。
問題5なんてほんとになんでもいいじゃん。
他に何か前提があるとか。
せめて出力結果が決まってるとか。
1.「new A[0]」「new A("hello")」「String str」「"hello"」
2.「new A[0]」「new A()」「int」「"hello"」
3.「new A("Hello")」「a[0]」「b」「a[0]」
4.「A」「A」
5.「1」「1」
6.「a」「String a="Hello"」
>>879 気になったので取り合えず問題4だけ
見てみたがくそ噴いた。
意図がさっぱりわからん。
余裕でコード書き直しのレベル
882 :
デフォルトの名無しさん :2010/02/16(火) 11:52:08
>>879 ありがとうございます
よくみたら用紙の裏に出力結果が書いてありました。
報告し忘れでした。すいません。
883 :
875 :2010/02/16(火) 13:08:41
884 :
デフォルトの名無しさん :2010/02/16(火) 13:33:44
>>883 誰か4やってくれ。
おれには無理だった。
1.「new A[1]」「new A(0)」「int i」「"hello!?"」
2.「new A[1]」「new A()」「int」「"hello!?"」
3.「null」「b」「b」「b」
4.ムリ
5.「"helloHello"」「""」
6.「a」「String a="heLLO"」
指定の出力結果を吐くように ? のところに当てはまる何かを書けばいいんだな 4.「Object(); A.setA」 「Object(); A.setA」 これでどうだw
886 :
デフォルトの名無しさん :2010/02/16(火) 13:53:58
問題1: 「new A[3]」「new A(i)」「int i」「s[i]」 問題2: 「new A[1]」「new A()」「int」「"hello!?"」 問題3: 「null」「b」「null」「b」 問題4: 「String(); try { Field f = A.class.getDeclaredField("a"); f.setAccessible(true); ((A[])f.get(null))[0] = new A("hello"); } catch(Exception ex){} new A」 「String(); try { Field f = A.class.getDeclaredField("a"); f.setAccessible(true); ((A[])f.get(null))[1] = new A("HELLO"); } catch(Exception ex){} new A」 問題5: 「((C)this).s」「((B)this).s」 問題6: 「((C)this).s」「」
おまえらゆとりを甘やかすのもたいがいにしとけよw
890 :
デフォルトの名無しさん :2010/02/16(火) 15:50:31
残念ながらここはゆとり専用スレだ。
891 :
875 :2010/02/16(火) 16:32:07
ゆ、ゆとりすぎる。最後の問題だけ答えてやる。ちなみに、多分求められてる回答とは違う。。 private class Bex extends B{ Bex(){ super(); } } B b = new Bex(); な。
893 :
デフォルトの名無しさん :2010/02/16(火) 17:04:25
>>891 「"IT"」
「"IT"」
「A.B」
「A(); x = "IT"」
「x = "IT"」
「B b = new B() {}」「int i」
>>885 「A().setA」のほうが数文字ずつ短くなるな
895 :
デフォルトの名無しさん :2010/02/16(火) 21:26:55
>>872 問題2
穴埋めはやった。16以降は知らん。
出力結果なんて自分でコンパイルして実行すりゃ終わりだ。
それくらいやろう。
11.「-1」
12.「1」
13.「7; System.out.print("-3276")」
14.「2」
15.「Test015 t = new Test015()」
だれか13わかる人いる?
>>872 俺もやってみた。
問題1
4.「static String」「static」「A.str + str」
5.「+=」「static A」「new A(str)」
897 :
デフォルトの名無しさん :2010/02/16(火) 23:53:38
JAVA始めて間もないんですが ジェネリクスのワイルドカードの使用で <?>はどのクラスでも対応可能 ※確か要素の追加は不可能 ってさらっと話聞いたんですが、どういう意味ですか?? list1.add(new A());のようなことが出来ないって意味ですか? 例えばlist1.add(new ?());みたいにはってことでしょうか… くだらない質問で申し訳ないです。。
お前ら出力が合えばいいってもんじゃねーぞwww
>>897 質問スレに行こうか
>>895 +1してshort最小値ったら最大値の7fffじゃないか
送信する前に更新すりゃえがったorz
>>895 11.は問題の趣旨としては
byteでキャストじゃなかろーか
以下
>>872 問題2の16以下、コードだけ読んで適当に回答してみるw
16.1
17.4
18.2
19.3
20.3
21.1
22.3
>>893 はさすがに強引すぎないか?w
>>891 ちょこっとやってみた。
new B().x
new B(){}.x
A.B
D.C()
new B(){}
B b と b = new B(){}
すまん、とっくに期限切れてたねw
905 :
デフォルトの名無しさん :2010/02/24(水) 02:31:33
Write a program to sum the following series: (これらを合計するプログラムを書きなさい) 1/3 + 3/5 + 7/9 + 9/11 + 11/13+..........+95/97 + 97/99 途中までこんな感じでやったのですがもう何がなんだかさっぱり・・・ public class Quiz2 { public static void main(String[] args) { int sum = 0; int num = 1; int den = 3; for(int x = 0; x < 100; x++ ) { if(x % 2 == 0) { x = num / den; sum = sum + x; } } System.out.println("Sum is " + sum); } } よろしくお願いいたします。
double sum = 0.0; for(int i=0; (i * 2 + 3)<100; i++){ int 分子 = i * 2 + 1; int 分母 = i * 2 + 3; sum += (double)分子 / 分母; } System.out.println("合計: " + sum); こねくり回せばもっと効率の良い書き方はあるが。
907 :
デフォルトの名無しさん :2010/02/24(水) 03:03:54
>>906 ありがとうございます。
そのやり方で試してみます。
908 :
905 :2010/02/24(水) 03:18:03
>>906 public class Quiz2 {
public static void main(String[] args){
double sum = 0;
for(int x = 0; (x*2+3)<100; x++) {
int numerator = x*2+1;
int denominator = x*2+3;
sum = sum + (double) numerator / denominator;
}
System.out.println("Sum is " +sum);
}
}
合計は1683となりました。
ありがとうございました。
>>908 のコードをコピペして実行しても
1683なんて答えは得られないじゃねーか
sum = sum + (double) numerator / denominator;
↓
sum = sum + (double) numerator / (double)denominator;
にしろ
912 :
デフォルトの名無しさん :2010/02/24(水) 22:24:29
【 課題 】アプレットで作品をつくる 【 形態 】2. Applet/ 【 期限 】2月26日 【 補足 】初心者です。お手柔らかにお願いします。 javaアプレットで 画像を12枚取り込んで、 そのうちの5枚を並べて表示、 1秒ごと10%の確率で 各画像を変更したいのですが どうしたらいいのでしょうか・・・。 画像を取り込むところまでできています。。。
>>912 その画像を取り込むところまで見せてもらおうか
それとテンプレ必須項目くらいは埋めようぜ
> 1秒ごと10%の確率で
表示されている5枚それぞれについてサイコロを振って換えるかどうか決めるってことでいいの?
>>912 画像ファイルはクラスファイルと同じ場所にあるimage00.jpg〜image11.jpgの12枚
1秒毎に各画像ごとに10%の確率で画像を変えているのでどの画像も変わらない確率が秒毎にC(5,0)*(0.1^0)*(0.9^5)=約60%ある
import javax.swing.*;
public class Hoge extends JApplet implements java.awt.event.ActionListener {
private java.util.List<ImageIcon> pool = new java.util.LinkedList<ImageIcon>();
private Timer timer = new Timer(1000, this);
private JLabel[] label = new JLabel[5];
@Override public void init() {
setLayout(new java.awt.FlowLayout());
for (int i = 0; i < 12; i++) pool.add(new ImageIcon(getImage(getCodeBase(), String.format("image%02d.jpg", i))));
java.util.Collections.shuffle(pool);
for (int i = 0; i < 5; i++) add(label[i] = new JLabel(pool.remove(0)));
}
@Override public void destroy() {
getContentPane().removeAll();
pool.clear();
}
@Override public void start() { timer.start(); }
@Override public void stop() { timer.stop(); }
public void actionPerformed(java.awt.event.ActionEvent e) {
for (int i = 0; i < 5; i++) {
if (Math.random() >= 0.1) continue;
pool.add((ImageIcon)label[i].getIcon());
label[i].setIcon(pool.remove(0));
}
}
}
>>916 多分そういうのも考慮しろっていう問題だよねえ。
918 :
916 :2010/02/26(金) 18:00:26
>>918 普通にやった場合と、どの位の差がでるの?
921 :
920 :2010/02/27(土) 03:56:31
間違った 小さいもの順の足し算なので while (x.size() > 1) x.add(x.pollFirst() + x.pollFirst()); System.out.println(n - x.first() * 2); に修正^^;
一番目の方法はうちの環境では 44.410164588764474 と表示されるけど小数点以下の部分だけ出すなら System.out.println(4 - x.first() * 2); にすると .41016458876447004 なので .410164588764470250... にさらに近づくかな
926 :
デフォルトの名無しさん :2010/02/28(日) 16:44:00
【 課題 】アニメーション
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 期限 】3/2(火) 午前中
【 Ver 】java version "1.6.0_05"
Java(TM) SE Runtime Environment (build 1.6.0_05-b13)
Java HotSpot(TM) Client VM (build 10.0-b19, mixed mode, sharing)
【 補足 】
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/938.txt 問題はtxtに記入してあります
よろしくお願い致します
【課題】リストボックスから選んだ値にヒットするレコードを表示する
【形態】3. Servlet(JSP、Bean、DB)
【期限】3/3 16時までにお願いしたします。
【Ver】 java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Client VM (build 11.2-b01, mixed mode, sharing)
【補足】
http://rg550.hp.infoseek.co.jp/cgi-bin/joyful/img/939.txt よろしくお願いします。
Servletとしましたが、JSPとBeanが主です。
>>928 とりあえず
enshu5Bean
の
public String getSql(String ss) throws Exception
を
public String getSql() throws Exception
にするとどうなるか
>>929 コンパイルエラーになります
java:40: シンボルを見つけられません。
シンボル: 変数 ss
場所 : enshu5.enshu5Bean の クラス
ss = "SELECT * FROM 学生名簿 WHERE 性別 = " + this.value + ";";
^
java:41: シンボルを見つけられません。
シンボル: 変数 ss
場所 : enshu5.enshu5Bean の クラス
return ss;
^
エラー 2 個
試しにenshu5Beanでprivate String ssと更に記述してコンパイルしたら通りましたが、
txtのソースと同じエラーになります……
931 :
デフォルトの名無しさん :2010/03/03(水) 12:57:47
>>928 とりあえず
JSPだけでも。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*" %>
<%@ page import="enshu5.*" %>
<jsp:useBean id="bean" scope="request" class="enshu5.enshu5Bean" />
<html>
<head>
<title> </title>
</head>
<body>
<%bean.open(); %>
<%=bean.getValue()%>と入力されました。<br><br>
<form action="/examples/Enshu5" method="POST">
<select name="cnb">
<option value="男性 and 女性">全て</option>
<option value="男性">男性</option>
<option value="女性">女性</option>
</select>
<input type="submit" value="選択">
</form>
<%String sql = bean.getSql("");%>
<%ResultSet rs = bean.executeQuery(sql);%>
932 :
デフォルトの名無しさん :2010/03/03(水) 13:00:41
>>931 つづき
<table border="1">
<tr><td>学籍番号</td><td>名前</td><td>入学年度</td><td>性別</td></tr>
<%
//検索された行数分ループ
while(rs.next()){
%>
<tr>
<td><%=rs.getInt("学籍番号")%></td>
<td><%=rs.getString("名前")%></td>
<td><%=rs.getString("入学年度")%><td>
<td><%=rs.getString("性別")%></td>
</tr>
<%} //while文の終了%>
<table>
<%bean.close(); %>
</html>
>>931-932 有難う御座います
提示して頂いたソースで改良してみたんですが、どうもgetSqlやResultSetで
引っかかってしまうようで、そのままだと
JSPファイル: /jsp/enshu5.jsp の中の23行目でエラーが発生しました
The method getSql() in the type enshu5Bean is not applicable for the arguments (String)
20: <input type="submit" value="選択">
21: </form>
22:
23: <%String sql = bean.getSql("");%>
24: <%ResultSet rs = bean.executeQuery(sql);%>
25:
26: <table border="1">
というエラーになり、getSql("")のダブルクォーテーションを試しに外してみたところ
org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/enshu5.jsp at line 24
21: </form>
22:
23: <%String sql = bean.getSql();%>
24: <%ResultSet rs = bean.executeQuery(sql);%>
25:
26: <table border="1">
27: <tr><td>学籍番号</td><td>名前</td><td>入学年度</td><td>性別</td></tr>
となってしまいます。importなどの抜けていた部分も埋めたのですが、
どうも此処だけ変わらずなってしまうようです……
ResultSetなどが上手く定義出来ていないということなんでしょうか・
934 :
デフォルトの名無しさん :2010/03/03(水) 14:05:37
>>933 enshu5Bean
の
executeQueryメソッドの中をいったん
return null;
にするとどうなる?
>>934 getSql("")の場合
The method getSql() in the type enshu5Bean is not applicable for the arguments (String)
20: <input type="submit" value="選択">
21: </form>
22:
23: <%String sql = bean.getSql("");%>
24: <%ResultSet rs = bean.executeQuery(sql);%>
25:
26:
getSql()の場合
org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/enshu5.jsp at line 24
21: </form>
22:
23: <%String sql = bean.getSql();%>
24: <%ResultSet rs = bean.executeQuery(sql);%>
25:
26:
27: <table border="1">
となります
追記ですが、returnをnullにした場合とその前共に 原因 java.lang.NullPointerException enshu5.enshu5Bean.executeQuery(enshu5Bean.java:46) org.apache.jsp.jsp.enshu5_jsp._jspService(enshu5_jsp.java:94) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) が表示されます
937 :
デフォルトの名無しさん :2010/03/03(水) 15:02:17
>>936 じゃ、
getSql()
でやろう。
で、executeQueryメソッドがうまく動いてない。
Enshu5クラスで試しに、
enshu5Bean beanS = new enshu5Bean();
beanS.setValue(prm);
の後に
beanS.open();
ResultSet rs = beanS.executeQuery(sql);
beanS.close();
するとどうなる?
Enshu5.java:22: 例外 java.lang.Exception は報告されません。スローするにはキャッ チまたは、スロー宣言をしなければなりません。 beanS.open(); ^ Enshu5.java:23: 例外 java.lang.Exception は報告されません。スローするにはキャッ チまたは、スロー宣言をしなければなりません。 ResultSet rs = beanS.executeQuery("SELECT * FROM 学生名簿;"); ^ Enshu5.java:24: 例外 java.lang.Exception は報告されません。スローするにはキャッ チまたは、スロー宣言をしなければなりません。 beanS.close(); ^ エラー 3 個 となってしまいます。 setValueなどにエラーが起きないという事は、 beanS.open(); ResultSet rs = beanS.executeQuery(sql); beanS.close(); の宣言がまず上手くいっていないということになってしまうんでしょうか?
939 :
デフォルトの名無しさん :2010/03/03(水) 15:31:29
さっき追加したところを↓にしてみて。 try { beanS.open(); ResultSet rs = beanS.executeQuery(sql); beanS.close(); }catch(Exception e) { e.printStackTrace(); }
すいません
>>938 ですが、
ResultSet rs = beanS.executeQuery();
には直接SQL文を入れて実行してみました。
今、上の変数宣言で
String sql="SELECT * FROM 学生名簿;";
としてResultSet rs = beanS.executeQuery(sql);を実行しましたが、
結果は同じです。
>>939 実行してみました。
Enshu5.java自体のコンパイルは通りましたが、
org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/enshu5.jsp at line 24
21: </form>
22:
23: <%String sql = bean.getSql();%>
24: <%ResultSet rs = bean.executeQuery(sql);%>
25:
26:
27: <table border="1">
となってしまいます。
importしてない、とか。
943 :
デフォルトの名無しさん :2010/03/03(水) 15:51:07
コンパイル通ったって、 サーバのコンソールとかにエラー出てないの? サーブレット実行してるときに。 executeQueryメソッド内でエラーが発生してると思う。 String sql="SELECT * FROM 学生名簿;"; を String sql="select current_timestamp;"; で実行するとどうなる?
>>942 確かにエラーをググっている内にそれも考えたのですが、
<%@ page import="java.sql.*" %>
以外のものをimportするケースを見つけられず、
<%@ page import="java.sql.*" %>
<%@ page import="enshu5.*" %>
だけで行っています。他にimportすべき部分があったのでしょうか…?
>>943 はい、そのまま通ってしまいます。
実際JSPの方で
org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/enshu5.jsp at line 24
21: <input type="submit" value="選択">
22: </form>
23: <%String sql = "select current_timestamp;";%>
24: <%ResultSet rs = bean.executeQuery(sql);%>
25: <table border="1">
26: <tr><td>学籍番号</td><td>名前</td><td>入学年度</td><td>性別</td></tr>
27:
というエラーが出てしまいます。
String sql="select current_timestamp;";
はjspファイルとServletファイルで、該当部分を共に変更して行いました。
>>944 #open()の
// ステートメントオブジェクトを生成
Statement stmt = con.createStatement();
を
this.stmt = con.createStatement();
としたらどうかね。途中はあんま読んでないがw
946 :
デフォルトの名無しさん :2010/03/03(水) 16:35:52
なんだ? DBとのコネクションははれてるけど、 select current_timestamp; が失敗するってのは? enshu5Bean を↓に修正してみて。 public ResultSet executeQuery(String sql) throws Exception { ResultSet rs = null; try { rs = stmt.executeQuery(sql); }catch(Exception e) { e.printStackTrace(); } return rs; }
947 :
デフォルトの名無しさん :2010/03/03(水) 16:37:45
すいません、
>>945 ,
>>946 のを両方試させて頂いたんですが、
org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/enshu5.jsp at line 24
21: <input type="submit" value="選択">
22: </form>
23: <%String sql = "select current_timestamp;";%>
24: <%ResultSet rs = bean.executeQuery(sql);%>
25: <table border="1">
26: <tr><td>学籍番号</td><td>名前</td><td>入学年度</td><td>性別</td></tr>
27:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
のエラーから抜け出せません。
原因に出ていたんですが、NullPointerExceptionということは、
rsか、何かががまだNullのままだということですよね?
例外処理もたくさん教えて頂いたのに、どうしてこの部分でNullが引っかかってしまうのか……。
949 :
デフォルトの名無しさん :2010/03/03(水) 16:59:41
その時点ではrsがnullだろうと関係ないから、beanがnullなんじゃね?
>>949 原因です
java.lang.NullPointerException
enshu5.enshu5Bean.executeQuery(enshu5Bean.java:46)
org.apache.jsp.jsp.enshu5_jsp._jspService(enshu5_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>>950 beanがnullというのは、bean.executeQuery(sql)の中に値が入っていない、
という事になるんでしょうか……?
色々いじったソースの現在のenshu5Bean.java:46は何書いてあるの? どうみてもstmtっぽいけど。
953 :
デフォルトの名無しさん :2010/03/03(水) 17:27:26
一度JSPの <%bean.open(); %> を消して、 enshu5Bean のexcecuteQueryを↓にしてみて public ResultSet executeQuery(String sql) throws Exception { // ドライバクラスをロード Class.forName("org.postgresql.Driver"); // データベースへ接続 Connection con = DriverManager.getConnection( "jdbc:postgresql:hellodb", //接続文字列 "postgres", //ユーザID "0810"); //パスワード // ステートメントオブジェクトを生成 stmt = con.createStatement(); return stmt.executeQuery(sql); }
>>952 現在
>>953 のプログラムになってしまっていますが、
先程までの段階では、
public ResultSet executeQuery(String sql) throws Exception {
→46 ResultSet rs = null;
try {
rs = stmt.executeQuery(sql);
}catch(Exception e) {
e.printStackTrace();
}
return rs;
}
でした。
>>953 変更して実行してみましたが、
例外
org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp/enshu5.jsp at line 24
21: <input type="submit" value="選択">
22: </form>
23: <%String sql = "select current_timestamp;";%>
24: <%ResultSet rs = bean.executeQuery(sql);%>
25: <table border="1">
26: <tr><td>学籍番号</td><td>名前</td><td>入学年度</td><td>性別</td></tr>
27:
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
になってしまいます。
原因 java.lang.NullPointerException enshu5.enshu5Bean.executeQuery(enshu5Bean.java:46) org.apache.jsp.jsp.enshu5_jsp._jspService(enshu5_jsp.java:94) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 私が書き換えの時にミスをしている可能性がありますので、 もう一度現在のソースをアップロードして見て頂いてもいいですか?
>>958 直接関係ないけど、jspのwhileはいるもんだと思っていいんかね?
エラーこいてる
>>959 失礼しました、whileにコメントアウトが掛かったままでした。
検索した結果を<table>で表にするためのものなので。
ResultSet rsがおかしいなら、とりあえずデータベースの開閉のみ
行ってみようと思って一度それに関するプログラムをコメントアウトしていたんですが、
それが残ったままでした。
>>960 Connectionもthis.conを使わないとだめだな
あぁでもclose()だけか、影響でるの
>>961 stmtもthis.stmtにしているので、とりあえず統一してみました
そもそもデータベースにすら繋がってるかどうかが見えないので、
まだ結果は分かりませんが……。
964 :
デフォルトの名無しさん :2010/03/03(水) 19:37:17
>>963 おれんとこだとそれっぽく動くんだよなぁ。
まだNullPointerExceptionでる?
>>964 あれ?そしたらこっちの環境設定の問題なんですかね……。
ちょっと改変してみたところ、
まずenshu.jspは一度正常に起動して、表やリストボックスが普通に出るんですが、
そのあとフォームの「選択」を押してServletを起動しようとすると
Result cannot be resolved to a type
24: </form>
25: <%String sql="SELECT * FROM 学生名簿;";
26: out.println(sql);%>
27: <%Result rs = bean.executeQuery(sql);%>
28:
29: <table border="1">
30: <tr><td>学籍番号</td><td>名前</td><td>入学年度</td><td>性別</td></tr>
と出ます。
このエラーだとimportの問題になるようなんですが、ResultSetのクラスが
import出来ていないということになるんでしょうか?
965です。 すいません間違えました、ResultではなくResultSetでした。 本当に申し訳ないです。 そして相変わらずNullPointerExceptionになってしまいます。 でもファイルを起動した最初からJSPにはじかれる事は無くなりました。
967 :
デフォルトの名無しさん :2010/03/03(水) 20:22:39
【 課題 】 ○県、市別に男女の人数を集計するプログラムを作成せよ。 千葉県 柏市 男 千葉県 松戸市 男 埼玉県 さいたま市 女 千葉県 柏市 男 埼玉県 越谷市 男 千葉県 松戸市 男 埼玉県 岩槻市 女 千葉県 柏市 女 埼玉県 さいたま市 女 [実行例] 千葉県 柏市:男2人女1人 千葉県 松戸市:男1人0人 埼玉県 さいたま市:男0人女2人 (以下略)… 【 形態 】1. Javaアプリケーション 【 期限 】3/8まで 【 Ver 】java version "1.5.0_05" アルゴリズムに苦戦しています、よろしくお願いします。
968 :
デフォルトの名無しさん :2010/03/03(水) 20:59:47
>>967 C直下にtest.txtで元データを用意して。
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
public class CityCounter {
public static void main(String[] args) throws Exception {
Map<String, City> m = new HashMap<String, City>();
BufferedReader br = new BufferedReader(new FileReader("c:\\test.txt"));
String str = br.readLine();
while (str != null) {
String city = str.substring(0, str.indexOf("市") + 1).trim();
String sex = str.substring(str.indexOf("市") + 1, str.length()).trim();
if (m.containsKey(city)) m.get(city).add(sex);
else m.put(city, new City(city, sex));
str = br.readLine();
}
for (String city : m.keySet()) System.out.println(m.get(city).toString());
}
}
969 :
デフォルトの名無しさん :2010/03/03(水) 21:00:09
>>968 つづき
class City {
String city;
long man = 0;
long woman = 0;
City(String city, String sex) {
this.city = city;
add(sex);
}
void add(String sex) {
if (sex.equals("男")) man++;
else woman++;
}
public String toString() {
return city + ":男" + man + "人女" + woman + "人";
}
}
970 :
デフォルトの名無しさん :2010/03/03(水) 21:02:42
>>965 最初のjsp表示できる部分では、
DBのデータも表示されるの?
相変わらずのNullPointerExceptionが出てるところは、
まったく同じところ?
>>968-969 こんなに早くありがとうございます!
HashMapの使い方が非常に勉強になりました!
>>970 いや、その時点ではvalueの値がnullなので検索していない=表はそれ以上
表示されないということになります。
なので、DBとの繋がりはそこでは見えません。
全く同じです。ResultSetとexecuteQueryのところでやはり
NullPointerExceptionになってしまいます。
973 :
デフォルトの名無しさん :2010/03/03(水) 21:46:25
とにかく途中でもいいから「出せ」と言われていたのが16時までだったので、 未完成なプログラムのまま提出してきました……。 でも結局分からなければ意味がないというか、後々またこれの発展問題みたいなのは どんどん出てくるんで、出来ればとにかく理解して完成させたいと思っています。 しかし、朝からずっと教えて下さってる方々には本当申し訳ないです……。
>>974 横からだが
JSP関係なく、JUnitなり普通のmain文書くなりして、
普通にJDBCでResultSet取れてくるか確認しましょう。
>>975 凄く単純なJavaのソース(JSPやServlet、Beanなどではない)で、
JDBCに接続してみましたが、SQL文を
SELECT * FROM 学生名簿;
としてResultSetを使ったところ、ちゃんとした結果が返ってきました。
接続のソースは殆どここから持ってきているので、問題は無いと
思ったんですが……。
サーブレットコンテナのWebアプリクラスパスを確認してください。 過去のコンパイル結果が残ったまま実行されているように見えます。 enshu5Beanに行った修正が正しく反映されるか確認しましょう。 例えばexecuteQueryメソッド内で標準出力に文字列を出してみるなど。 テスト用のシンプルな構成でJDBC接続が問題ないのであれば、 おそらく問題はサーブレット実行環境の設定(正しい.classが参照されていない)です。
>>977 サーブレットコンテナのWebアプリクラスパスというのは、
単純に、set CLASSPATH…と設定したCLASSPATHとは別ということでしょうか?
enshu5Beanは、どうもやはりexecuteQuery()が上手く働いていないようなので、
もう一度修正を加えてから結果を見てみたいと思います。
Servletの正しい.classが参照されていないという事は、やはり上で指摘を頂いた
CLASSPATHなどの問題になりますよね……もう一度、CLASSPATHの設定について調べてみます。
979 :
デフォルトの名無しさん :2010/03/04(木) 11:49:09
>>978 もう遅いと思うけどenshu5Beanクラスのopenメソッドの最後の部分以下
// ステートメントオブジェクトを生成
Statement stmt = con.createStatement();
このローカル変数に代入しちゃダメなんじゃない。
本当はフィールド変数のprivate Statement stmt;に代入したいんじゃないの?
executeQueryメソッドで読んでる変数はフィールド変数だからさ。
Statement stmt = con.createStatement();
↓
stmt = con.createStatement();
980 :
979 :2010/03/04(木) 11:55:59
>>979 とりあえずはその部分も変更してみました。有難う御座います。
ですが接続は出来てもResultSetで取得の部分で詰まってる=DBの内容を表示できない……という事で
接続が成功したかも定かでないので、まだ結果をお知らせできないのが申し訳ないです……。
色々ソースを変えてみた結果、今度は
Type mismatch: cannot convert from String to ResultSet
と出るようになってしまったので、とりあえず一から組みなおしてみようと思います。
beanから呼び出すところで足止めされているようにも見えるので、
JSP内でDBを呼び出してみて(あまりいい方法とは言えないと聞きましたが……)、
それで成功するかどうか試してみたいと思います。
>>977 で言って頂いたように、恐らく環境の方で不備もあると思いますので、
その辺りも見直してきます。
982 :
デフォルトの名無しさん :2010/03/04(木) 20:34:05
久々に白熱してんね
984 :
デフォルトの名無しさん :2010/03/05(金) 14:13:18
>>983 さすがにそれはおまいさんがわかんないところを聞いた方が早いぞ
何行目は何をやってるの?って
まるでわからないってのなら口頭で答えられないからあきらめろ
>>984 ほっとけ、こういうカスがIT業界にこられちゃたまらん
986 :
デフォルトの名無しさん :2010/03/05(金) 15:55:14
>>985 このスレはプログラミングなんて興味がなく、
IT業界に行く気もないやつが
宿題を丸投げするスレかと
987 :
981 :2010/03/05(金) 15:59:03
>>981 です
あれから色々調べてみたのですが、他のJSPファイルも全て
java.lang.NullPointerExceptionが出るようになってしまいまして……。
web.xmlにおかしな記述でもしているんじゃないかという指摘を受けたのですが、
殆どサーブレットマッピングしかしていないようなものなので、他に消す部分もなく……。
enshu5_jsp.javaというファイルを調べたんですが、そこのjspInit()メソッドで
例外が発生しているので、どうやら其処でNullが出ているらしくて、
とにかく何処でNullになってしまってそれが何故いけないのか調べないといけなくなりました。
このメソッドが読んでいるものに支障があり、それが他のファイルでも呼ばれる所為で
悪影響が出ている、というのまでしか分かっていないのが実情です。
ずっといろんな方に手助けをして頂いたのに、こんなことになってしまい大変申し訳ありませんでした。
988 :
デフォルトの名無しさん :2010/03/05(金) 16:02:38
>>987 最新ソースあげてみぃ
お前さんは自分でも色々やっとるようだからの
990 :
981 :2010/03/05(金) 17:07:08
991 :
デフォルトの名無しさん :2010/03/05(金) 17:36:30
>>990 ファイルをはりつけてアップロードするのではなく、
そのプロジェクトのディレクトリを構成そのまま圧縮してアップロードしてほしい。
そっちのほうがわかりやすい。
992 :
981 :2010/03/05(金) 18:16:54
993 :
デフォルトの名無しさん :2010/03/05(金) 19:17:35
web.xmlにenshu5のservlet-mappingがないのは?
994 :
デフォルトの名無しさん :2010/03/05(金) 19:50:12
995 :
デフォルトの名無しさん :2010/03/05(金) 19:51:48
>>994 続き
ディレクトリ構成
├─lib
│ jsp-api.jar
│ servlet-api.jar
│
├─src
│ └─enshu5
│ Enshu5.java
│ enshu5Bean.java
│
├─webapp
│ └─examples
│ ├─jsp
│ │ enshu5.jsp
│ │
│ └─WEB-INF
│ │ web.xml
│ │
│ ├─classes
│ │ └─enshu5
│ │ Enshu5.class
│ │ enshu5Bean.class
│ │
│ └─lib
│ derby-10.5.3.0_1.jar
ヒント 全部一から作り直せ
997 :
981 :2010/03/05(金) 21:31:32
>>993 すいません! それはweb.xmlに不備があるかなと思ってサーブレットマッピングを
いじってた時のままになってしまっていたこちらのミスです……。
>>994 zip有難う御座います。
しかし……こっちは今までと同じエラーです……。
試しに私の作ったファイルを隔離して、頂いたファイルをディレクトリ構成含め、
同じ名前で配置して開いてみたんですが、変わらずです。
何だかもっと根本的に環境の方もおかしいんでしょうか……。
あと、WEB-INFの下のlibに(私の場合だったら)postgresql-8.3-605.jdbc3.jarを
配置した方がいいのでしょうか?
>>996 正直、本当に仰る通りというか……、それも考えたんですが。
他のファイルまで開かなくなったという事は、ソースというよりもっと
別のところで間違いをしているような気がして、そこから洗い出さないとと思っています……。
998 :
デフォルトの名無しさん :2010/03/05(金) 21:42:31
>あと、WEB-INFの下のlibに(私の場合だったら)postgresql-8.3-605.jdbc3.jarを >配置した方がいいのでしょうか? それでやってみたら?
999 :
デフォルトの名無しさん :2010/03/05(金) 21:43:50
>>997 もう怪しかったらとにかくそれっぽいところに
postgresql-8.3-605.jdbc3.jar
を配置しまくるんだ
あとそのzipで出てるエラーを全部はってくれ。
>>997 それだったらNullPointerExceptionではなく、ClassNotFoundが出るはず
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。