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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
おい!厨房どもJavaの宿題はここに持って来い!
ただGUIかんけーはめんどクセーから、放置するぞ!

☆丸投げ歓迎 AGE進行☆

前スレ
http://pc2.2ch.net/test/read.cgi/tech/1040552821/
2
3
4デフォルトの名無しさん:03/10/08 18:26
代理でスレ立てた1です。
依頼した香具師は礼ひとつ言わないとはどういうこっちゃ!!
そんなことで宿題できるのか?
勉学より先に“礼儀”を覚えろ。
5メンネ
6デフォルトの名無しさん:03/10/08 18:43
ユルス
7デフォルトの名無しさん:03/10/08 18:57
素数をラビンミラー法で列挙せよとの宿題が出たのですが.....
言語はJavaかCかC++だそうで
>>7

#include <extend/mylib/math.h>

int main()
{
 [ ExMath enumExtendByMilerRabin ];
 return 0;
}
>>4
は?バカか貴様
俺はただお前を利用しただけだ
礼なんか期待してんじゃねぇよボケが
10デフォルトの名無しさん:03/10/09 05:29
なんかスレが滞ってるぞ………(;・∀・)
世渡りの下手そうな2人のトークバトルが楽しめるスレはここですか?
>>7
JavaならBigInteger.isProbablePrime()がラビン・ミラー法を使用した素数判定法なので、
これを呼び出せば一発ですね。w

つうか、ラビン・ミラー法で素数を「列挙」って言うのがアフォ過ぎ。どこの学校だ?
13デフォルトの名無しさん:03/10/09 16:22
あげ
14デフォルトの名無しさん:03/10/09 16:29
>>12
あとで素数が含まれる確率でも求めさせるんじゃない?
15デフォルトの名無しさん:03/10/09 16:57
お願いします。明日までなんですがせめてヒントだけでも・・・。スマソ 1、1から1000までの数字でちょうど17で割り切れるものを全て表示するプログラムを作れ
16デフォルトの名無しさん:03/10/09 16:58
2、繰り返し文を用いて以下のような実行結果になるプログラムを作れ % java Triangle ********** ******** ****** **** **
17デフォルトの名無しさん:03/10/09 16:59
3、以下のような2次元配列を宣言し、領域を割り当て、初期化する int myarry[][]={ {11, 12}, {21, 22, 23, 24}, {31, 32, 33}, {41} }; for文とmyarray.lengthを用いて、2次元配列の要素を以下のように表示するプログラムを作れ 11 12 21 22 23 24 31 32 33 41
18デフォルトの名無しさん:03/10/09 17:15
for (int n=1; n <= 1000; n++)
if (n % 17 == 0) System.out.println(n);
>>12
補足。今JDK1.3.1ベースのソース眺めたけど、isProbablePrime()は判定対象の数が
100桁以上の場合ミラー・ラビン法の他に、ルーカス・レーマー法も合わせて行なってる。
ミラー・ラビン法の結果だけ知りたいんなら、ソース見て自作しろ。30行に足らない程度だから余裕だろ。

>>14
「判定」なら分かるが、「列挙」にミラー・ラビン法を使用するちゅうのが、演習問題として妥当か? と思ったんで。
まあ、何かの誘導問題なのかもしれないが。
20デフォルトの名無しさん:03/10/09 17:38
>>18 サンクス!!
for(int n=5; n>0; n--) {
 for(int m=0; m<n*2; m++) System.out.print("*");
 System.out.println();
}
22デフォルトの名無しさん:03/10/09 17:44
16は
******
_****_
__**__
みたいに出力するんじゃない?
2316:03/10/09 17:51
>>21サンクス! >>22 これでいいんす
24デフォルトの名無しさん:03/10/09 18:10
3は自分でできました。ありがとうございました
>>15
for (int n=17; n <= 1000; n+=17)
  System.out.println(n);
ベッセル関数J1(x)の図形をjavaで示せって課題を
出されたのですがさっぱり分かりません;;
もし分かる方いたら教えていただけないでしょうか?
27デフォルトの名無しさん:03/10/11 21:32
前スレで数当てゲームを作っていただいた物でつが……
あれに何度目の回答で正解したかを追加したいのですがどうすればよいのでつか?
回答数をカウントするクラスっていうかメソッドを作ればいいんでしょうが、どうすればいいのかわからないので助けてくださいおねがいします(必死です)
28名無し@沢村:03/10/11 21:44
おまいらよ、TSXBINって知ってるか?
これは土屋秀雄というガキがつくったバイナリエディタだが、ただのバイナリエディタではなく、いろいろなファイルをそのファイルのフォーマット解説つきでバイナリ表示&編集できるというなかなかのすぐれものバイナリエディタよ。
で、ファイルを開いたときに、フォーマット解説を表示するためには、そのフォーマットを記述したマクロファイルを定義しなければならないわけだが、最初からおまけでついているものは、BMP、GIF、JPG、ICO、LZHなどだよ。
つまり実際はBMP、GIF、JPG、ICO、LZHファイルに限ってフォーマット解説が見れるわけだな。
おまいらよ、おれはこのTSXBIN用のマクロとして、MIDとMLD用のやつをつくったからちょっと見てみろ?
つまりこのマクロがあると、パソコン用のMIDIファイルと携帯DoCoMo用のMfiファイルがフォーマット解説つきでバイナリ表示できるぞ。
ここ↓からダウンロードしてみろ?
http://hp.vector.co.jp/authors/VA015412/
おまいらよ、これはMIDIシーケンサーを学ぶおまいらにとてもためになるものだから、ちょっと見てみろ!?
>>27
Gameクラスの中にint型フィールドを追加。
createBingoNumber()の中でそのフィールドに0を代入。
はずれ処理のところに、そのフィールドに1を足す処理を追加。
正解処理のところに、そのフィールドの値もメッセージとともに返す処理を追加。

正解時にcreateBingoNumber()を呼ぶとそのフィールドが0になるので、
createBingoNumber()を呼ぶ前に、「何回目で正解したか」のメッセージを
含む文字列を作成する必要がある事に注意。

以上。
>>29
やってみますです
31ロイヤル:03/10/13 00:51
1/1-1/3+1/5-1/7+1/9・・・・・・・・-1/99999
この式を、@左から順に計算する
     A右から順に計算する
     B正の項の和と負の項の和をそれぞれ左から順に計算して最後に合算する
     C        '' 右から     ''

  という課題が出されました。B・Cのプログラムはできそうなのですが、@・A
のプログラムがどうしたらいいか分かりません。どなたかヒントをお願いします。
>>31
重複するやつには教えてやらん
>>29
0を代入ってどうやんの?
34デフォルトの名無しさん:03/10/13 19:02
オラ、スレが止まってるぞage
36デフォルトの名無しさん:03/10/14 07:22
ageてねぇし……
2次元平面上で Point2D a,b,c; に点の位置が与えられているとき、
線分abと点cの最大値距離を求めるプログラムを教えてください。
…場合分けの連打かなぁ?
3827:03/10/14 16:15
回答数をカウントするcountというintを作りました
pribatte int count;

createBingoNumber()の中でそのフィールドに0を代入。
って……
どういうふうに書けばいいんでしょうか(ぉ)?
39亜弥:03/10/14 16:25
質問させてください。今デジタル時計を表示させようとしているのですが、インターネットや参考書で調べると、どのプログラムも
Appletでやっているのですが、アップレットでしかデジタル時計は表示できないのでしょうか?
メアド書いてるバカ久々に見たな
41デフォルトの名無しさん:03/10/14 17:19
メール送った人いますか?
>>37
1. 線分abの傾きを求める。
2. 点cを通り線分abに垂直な直線の式を求める。
3. 2の直線と線分abの交点を求める。
4. 3の点と点cの距離を求める。
4327:03/10/14 19:39
助けてくださいよぉ〜(;・∀・)
明日までに仕上げなきゃいけないんですよぉ〜(;・∀・)
おねがいしますよぉ〜(;・∀・)
>>43
はぁ?
聞こえんなぁ〜?
45デフォルトの名無しさん:03/10/14 20:20
俺がJavaを使えれば手を貸すんだけどな(;・∀・)
countというintがあってそれを+1させたいときにですね……
count++;
だとだめぽなんだけど、どういうふうに書けば(・∀・)んでしょーか?
47デフォルトの名無しさん:03/10/14 20:58
count += 1;
int count = 0;
System.out.println (count);
count++;
System.out.println (count);
こんなテストもしないおまいが激しくだめぽ
というか……
createBingoNumber()の中でそのフィールドに0を代入。
ってどういうふうに書けばいいんでしょうか?
これだと間違えてるぽなんですが……

public void createBingoNumber()
{
count =
bingo = (int)(Math.random()*(max-min+1)+min);
}
>>48
アプレットでSystem.out.printlnなんて使うのかよ?
>>50
なんでそこでアプレットよ
5227:03/10/14 21:10
あの……
ボキはアプレットの話をしているのですが……
よく読んでね★
つーか新スレになってからここ反応悪ぃよ
なにやってんの?
どこにもお前だって書いてないじゃん。ちゃんと書いてね★ ボキ。
5527:03/10/14 21:23
早く教えてくだしゃい
count +=1もだめなんですが……
まぢ早く助けて下さい
お前らの大好きな宿題やらせてやるっつってんだから早くやれやお前ら
>>55
>>56
はぁ?
聞こえんなぁ〜?
5827:03/10/14 22:05
何度もいうようだけどよ……
countというint型変数を宣言しました。0を代入しました。
どうすればこのcountに+1できるのですか
頼むよ
>>58
お前学校逝く価値ないよ
あああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
めんどくせーからもう辞めます
お前らは無能は全員死んでおけ
>>61
(゚Д゚)ハァ?
お前がレスを生かせないほど無能なんだろ
count++
1より
>ただGUIかんけーはめんどクセーから、放置するぞ!
countの中身はきちんと変わっているが、
それを処理して表示するまでの過程でバグがあるんじゃないのか?
++countの方がcount++より速いぜ
なんかこのスレはもうダメだな
いつの間にか質問に答えるわけでもなくゴミレス返すだけの厨ばかりになってしまった…
お前達は皆……大きく見誤っている
このスレの実体が見えていない
お前達はただ黙ってやるしかないのだ……
俺たちの宿題を……

前スレでは大勢いらっしゃった優秀なプログラマの方は今お忙しいのでしょうか
m9(´`c_,'` ) プッ
69デフォルトの名無しさん:03/10/15 14:10
林晴比古先生のJava言語入門シニア編買ってしまったぞ!!
しかもAmazonギフト券で。
また一歩Javaマスターに近づいたなりよ。ニンニン
>>42
いや、「最大値距離」なんです…。
71つるりん:03/10/16 14:54
時計を表示させるプログラムを作成しているのですが表示させることは
できましたが時間の更新がされません。どこが悪いのか分かりません。
誰か力を貸していただけないでしょうか?
(その1)
import java.util.*;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Clock111
{
public static void main(String args[])
{
JFrame frame = new Clock111Frame();
frame.show();
}
}

72つるりん:03/10/16 14:55
(その2)
class Clock111Frame extends JFrame
{
public Clock111Frame()
{
setTitle("Clock");
setSize(300, 300);
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});

Container contentPane = getContentPane();
contentPane.add(new Clock111Panel());
}
}
73つるりん:03/10/16 14:57
(その3)
class Clock111Panel extends JPanel implements Runnable
{
Thread thread=null;

public void start(){
Thread thread = new Thread(this);
thread.start();
}
public void run(){
Thread thisThread=Thread.currentThread();
while(thread==thisThread){
try{
thread.sleep(1000);
}catch(InterruptedException e){

}
repaint();
}
}

public void paint(Graphics g){
Date today=new Date();
String nowtime=today.toString();
g.drawString(nowtime,0,30);
}

public void stop(){
thread=null;
}
}
74つるりん:03/10/16 16:26
自己解決しました。お騒がせして申し訳ありませんでした。
fc
76つるりん:03/10/16 17:03
74>>勝手に名前を引用してウソの返答をしないでください。
77デフォルトの名無しさん:03/10/16 19:14
荒れてますね
お願いします・・
メソッドのオーバーライドを利用したプログラムで、
1つのオブジェクトを8つ格納する配列を宣言し、
要素をそのオブジェクトとそれを拡張したもう1つのオブジェクトで初期化し、
繰り返し文を用いて各オブジェクトのメソッドを呼び出したいんですが、
教えていただけませんか
78デフォルトの名無しさん:03/10/16 19:17
情けないことに2つのクラスを書くところまでしか分かりませんでした・
>>78
とりあえず2つのクラスを晒せ
>>77-78
class Hoge ...
class Hage extends Hoge ...

//配列生成
//Hage が Hoge を継承しているから両方が入りうるのは Hoge 型
Hoge[] hoges = new Hoge[8];
for (int i=0; i<hoges.length; i++) {
 Hoge hoge; //これも Hoge 型
 if (どーたら) {
  hoge = new Hoge();
 } else {
  hoge = new Hage(); // Hoge型に Hage型のインスタンスが入ることもある
 }
 hoges[i] = hoge; //配列初期化
}

for (int i=0; i<hoges.length; i++) {
 hoges[i].method(); //Hage が method() をオーバーライドしていればそっちが呼ばれる
}
81デフォルトの名無しさん:03/10/16 19:26
連続カキコスマソ
ちなみに問題はこうです。
メソッドのオーバーライドを利用した次のようなプログラムを作成しなさい。
・LowerクラスはLowクラスを拡張する
・Lowerクラスのdisplay()メソッドでは"Greetings from Lower!"を表示し、Lowクラスのdisplay()メソッドでは"Greetings from Low!"を表示する。
・Lowオブジェクトを8つ格納する配列を宣言し、配列の要素をLowオブジェクトとLowerオブジェクトで初期化する。
・繰り返し文を用いて各オブジェクトのdisplayメソッドを呼び出す
8281:03/10/16 19:47
早く答えてみろよオラw
ちなみにゴミレス厨お断り
83デフォルトの名無しさん:03/10/16 19:54
ありがとうございました!分かりやすい説明どうもです
84デフォルトの名無しさん:03/10/16 20:06
85デフォルトの名無しさん:03/10/16 21:06
そんなこというなよ
うんこかおめぇ
ともだちいねぇだろ
もっと夢を見ろ
86noname:03/10/17 08:36
>>81 ビルドできなかったらごめん。
// Q81.java
public class Q81 {
public static void main(String[] args) {
Low[] lows = new Low[8];
for (int i = 0; i < lows.length; i ++) {
lows[i] = ((i % 2) == 0) ? (new Low()) : (new Lower());
}

for (int i = 0; i < lows.length; i ++) {
lows[i].display();
}
System.exit(0);
}
}
class Low {
public void display() {
System.out.println("Greetings from Low!");
}
}
class Lower extends Low {
public void display() {
System.out.println("Greetings from Lower!");
}
}
>>37
最大値距離ってのが(゚Д゚)ハァ??
つーか、
Math.max(Math.sqrt(a.x*a.x+c.x*c.x), Math.sqrt(b.x*b.x+c.x*c.x));
でもって、
Math.sqrt(Math.max(a.x*a.x+c.x*c.x, b.x*b.x+c.x*c.x));
ってことか??
8887:03/10/17 09:04
ウハハァ(・∀・;) 訂正。

Math.max(
Math.sqrt((a.x - c.x) * (a.x - c.x) + (a.y - c.y) * (a.y - c.y)),
Math.sqrt((b.x - c.x) * (b.x - c.x) + (b.y - c.y) * (b.y - c.y)));

Math.sqrt(
Math.max((a.x - c.x) * (a.x - c.x) + (a.y - c.y) * (a.y - c.y),
(b.x - c.x) * (b.x - c.x) + (b.y - c.y) * (b.y - c.y)));
89デフォルトの名無しさん:03/10/18 10:21
林先生のJava本受領しました
厚いです
90デフォルトの名無しさん:03/10/18 23:38
ちょっとマジ全然わかんねぇんだけど助けt!!!!!!!!!!!!!!!!1111
みんな自分で考えろよ。。。
92:03/10/19 10:25
自分で考えられない奴のためにこういうスレがあるんだろ
いい加減悟りを開け、おまいら
こういうスレで「自分で考えろ」みたいなゴミレス返すのはそもそも大きな間違い
このスレの実体が見えていない
やはりお前達はただ黙ってやるしかないのだ……
俺たちの宿題を……
だったらさっさと宿題出せよ。
これ↓正解したらそこで打ち切りたいんだけどどうすればいいの?
あと、”もう一回遊ぶ”っていうボタン作ってそれ押すとまた遊べるようにしたいんだけどそのボタンの
actionPerformedにどういう記述すればいいのかわかんねーからお前ら代わりにやって桶

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

public class Main extends Applet implements ActionListener{
private TextArea ta;
private TextField tf;
private Game game;
public void init(){
ta = new TextArea();
ta.setEditable(false);
tf = new TextField();
tf.addActionListener(this);
setLayout(new BorderLayout());
add(ta, BorderLayout.CENTER);
add(tf, BorderLayout.SOUTH);
game = new Game();
game.createBingoNumber();
ta.append(game.msgStart+game.ls);}
public void actionPerformed(ActionEvent e)
{String str;
str = tf.getText();
str = game.challenge(str);
ta.append(str);
tf.setText("");}}
class Game
private int min = 1;
private int max = 9;
private int count = 1;
private int bingo;
public String ls = System.getProperty("line.separator");
public String msgStart = "数当てれや";
private String msgLoose = "はずれ";
private String msgMore = "もっとでかい";
private String msgLess = "もっとちぃさい";
private String msgBingo = "(・∀・)オメデトウ";
private String msgCount = "回目で正解しました";
private String msgError = "数入れろや";

public void createBingoNumber(){
bingo = (int)(Math.random()*(max-min+1)+min);}
public String challenge(String str){
int i; try{
i = Integer.parseInt(str);}
catch (NumberFormatException e){
return msgError+ls;}
if (bingo == i){
createBingoNumber();
return i + " " + msgBingo + count + msgCount + ls+msgStart + ls;}
else if (bingo > i){
count++;
return i+" "+msgLoose+" "+msgMore+ls;}
else{
count++;
return i+" "+msgLoose+" "+msgLess+ls;}}}
96:03/10/19 12:32
つーかそのソース汚ねぇっつーか問題ありまくりじゃん
素人丸出しだなw
ププ
インデントが汚すぎて読めない
9894:03/10/19 14:28
それ、基本的に俺が設計したんじゃないんだけど、あんまり良い出来だとは思わないんですよね(ぉ)
素人ですよ、そいつ
インデントが汚すぎて読めない
ここは汚いソース読むスレじゃねーぞ。宿題出せ宿題
10194:03/10/19 15:58
いや、それがオイラの宿題……というか、課題のようなものなのですが……
このスレッドで重ね重ねお願いしているとおり数当てゲームのアプレットを作らなければいけないのです
以下の仕様通りに作っていただけないでしょうか
自分にはまだちょっと無理ぽなので……
割と厨クラス、厨メソッドだけで作れそうなのでおねがいしますm(__)m

●1〜9までの整数をシステムがランダムに決定する
●その数を当てる
●正解するまで続ける。また、何回目の回答で正解したかを出力する
●正解したらそこで打ち切る
●数値の入力はテキストボックスで
●"もう一度遊ぶ"というボタンを作る。それを押すとまた最初からゲーム開始。
●入力した数値と、正否みたいなのをテキストエリアか何かにズラーッと出していく。もう一度遊ぶボタンを押したときにそれが全部消える
アプレットじゃなかったらできるんですけどねー
重ね重ねお願いしている間に作れよぼけ。
くそくっだらねぇ宿題載せるな
>>101 が 15分でできた。
ちょっとかかりすぎた。
でもコードアシストも使ってないしこんなもん?
>>103はクビになったか留年確定してキレているようです
>>104
テストはしているんだろうな?
>>106
JUnitでテストファーストで書いたんで大丈夫だと思います
>>106
したよ。でも 10以上入力してもとくにおとがめなし
数値以外は Toolkit#beep() が鳴る
>>108
最大入力文字数とかコンポーネントで決定できんの?
110101:03/10/19 20:16
さっきメシ食いに行く前にちょっと見たら誰も書いてなかったので帰ってきたら「ものすごい勢いで放置ですね」とか書こうと思ったんだけど
この時間になって急に書き出しましたね、おまいら

いや、本当は自分で作りたいし、作れるようになりたいのですが、できないからここに書いてるわけなんであって……ですね。
皆さんが作ったものを見て、そこからいろいろ学んで上達していこうと思っているのです。
決して丸写しして課題だけやり過ごそうとか思ってるんじゃあないんですよ。真面目に。

そして……ですね。できたなら見せて下さいよ、皆さん
ついでにageますよ
>>101
少なくとも、そのまえにおまえが書いてみたソース載せろや。
そうしてから、自分はどこがわからんかを明確に相手に伝えろや。

っていうか、数あてゲームなんて本とかネットしらべりゃどっかにサンプルあんだろ?
それで勉強しろや。
>>109
コンポーネントのメソッドでできなきゃできないで、
KeyEvent か何かでブロックしちまえば無問題。
>>110
俺はパソコンが 8bit だった頃からプログラミングやってるが、
人に聞くことなく何でも資料で自己解決できた。お前みたいに放置・丸投げしたことはない。
デバイスドライバを組んだり言語インタプリタ組んだりさえした。
努力さえすればそこまでできる。俺と同年代のおっさん連中は多くがそうだ。

人にきいてそれで済まそうなんていうのは甘い。甘い。甘すぎる。
人に聞けるこの恵まれた環境は、分かんない「部分」を聞けるというだけであって、
全部分かんない奴には誰にも教えない。
なんか相当おめでたい奴がいるね
自分がこうだから他人もそれと同じ風にできるはずだなんて思ってる奴いるんだ……
バカ丸出しw
偉そうに説教垂れてるし
>>114
age なくていいんですか?
>>113
それでも丸投げするどうしようもないやつに、
気が向いたら対応してやるよ、というのがこのスレの主旨かと。
上達うんぬんとかどうでもいいよ。
> 人にきいてそれで済まそうなんていうのは甘い。甘い。甘すぎる。
> 人に聞けるこの恵まれた環境は、分かんない「部分」を聞けるというだけであって、
> 全部分かんない奴には誰にも教えない。

だから来なくていいのよ。お前みたいなのは。黙って質問スレにでもいろよ。
こういうスレで「自分で調べろ」みたいなこと言うのがそもそもズレまくってるって気付け
まあどちらにせよ気が向いたら答えるだけで
気が向かなかったら答えないんだがな
119101:03/10/19 21:49
今なんとなく自分でも書けそうな気がしているのですが……
わかならかったらまた来るのでよろしくお願いします
お前ら、このスレの実体が(ry
なんで最近のびないんですか?
このスレって
答えたくなるような宿題がないから
ゴミレス厨しかいなくなったから
>>113
なんでお前らオヤジ世代と今時の連中を一緒くたにして考えたがるのかなぁ……
いるんだよね、こういう硬いのが
>>113
そうだよ
今は宿題を丸投げするようなカスが多いのに
126デフォルトの名無しさん:03/10/20 02:10


〜質問厨どもへ〜

お前らなぁ〜ごちゃごちゃ言い訳じみた文章書いてんじゃねーよ!!
丸投げ歓迎って書いてやってんだろ!!

ごだくはいいから、トリップ付けて問題文のみを明記せよ!!
興味を引くような面白い問題があれば答えてやるよ
お前らがどこまで自分でやったかなんて関係ない、中途半端な汚いソース貼り付けるな!!読みにくくて仕方ない!!


                 
                                     前スレの1より

丸投げ歓迎というのがこのスレの趣旨だろ?
偉大な>>1様の立てたスレを勝手に変えるな
ここはJava教室じゃないんだ。講師気取りはよそでやれ
128デフォルトの名無しさん:03/10/20 19:47
本当に丸投げしてもいいですか?
学校の宿題なんですけど、お願いします。
以下のような出力結果を得たいんです。

% java Count
Start...
i:0 j:0 AX
i:0 j:1 BX
i:0 j:2 CX
i:1 j:0 AY
i:1 j:1 BY
i:1 j:2 CY
i:2 j:0 AZ
i:2 j:1 BZ
i:2 j:2 CZ
Finished.
Start again...
i:0 j:0 AX
i:1 j:0 AY
i:2 j:0 AZ
i:0 j:1 BX
i:1 j:1 BY
i:2 j:1 BZ
i:0 j:2 CX
i:1 j:2 CY
i:2 j:2 CZ
Finished.

>>128

class PrintABCXYZ {
public static void main(String[] args) {
char[] abc = { 'A', 'B', 'C' };
char[] xyz = { 'X', 'Y', 'Z' };

System.out.println("Start...");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
System.out.println("i:" + i + " j:" + j + " " + abc[j] + xyz[i]);
}
}
System.out.println("Finished.");

System.out.println("Start again...");
for (int j = 0; j < 3; j++) {
for (int i = 0; i < 3; i++) {
System.out.println("i:" + i + " j:" + j + " " + abc[j] + xyz[i]);
}
}
System.out.println("Finished.");
}
}

もっとシンプルに行かんもんかね
130922:03/10/21 07:57
9時に学校いかないとダメなのにどうしてもわからないところがーー

File fl1 = new File("c:/temp");
String list1[] = fl1.list();

とするとc:/tempのファイル(ディレクトリはないと考える)の名前を配列list1にかえしますよね。
名前じゃなくてフルパス名を返すとしたらどうすればいいのかわからないです。
131130:03/10/21 07:59
クッキーのこってた・・
132130:03/10/21 08:19
あげさせていただきます。
時間がーーーー
>>130-132
ここのクズ共はあてになりませんよ
新スレになってからやけに人いないし
僕が荒らしまくったからでしょうか(ぉ)?
>>133
google 一発だったのだが、これじゃダメ?

http://java.sun.com/products/jdk/1.2/ja/docs/ja/api/java/io/File.html#getAbsolutePath()

135 :03/10/21 15:58
中学生?高校生?
File fl1 = クラス名.getselectedFile();
path fl1path = fl1.getAbsolutePath();
String list1[] = fl1path.list();

136デフォルトの名無しさん:03/10/21 22:18
英語の文献(テキストファイル)から自分で指定した単語を
含む文を抜き出し列挙するプログラムをおしえてください
>>136
cat text.txt | grep word
cat text.txt | grep word | wc -w
これで数まで分かるぜ
>>138
( ´,_ゝ`)
140デフォルトの名無しさん:03/10/23 20:15
1000行の文字列で作られたファイルから任意の行1行取得してからその行を削除するプログラム(速いノ希望)
>>140
地道にやるしか方法はない。
1000行も行くならDB使ったら?
143inaian:03/10/23 23:45
自然数 n,m を入力して、n に一番近い m の倍数を求める関数 nb(n,m)

これお願いします。できたらRubyで
>>143は激しくマルチポスト
145inaian:03/10/23 23:50
おねがい教えて
>>145
n, m : integer; var r : integer
r = n div m * m;
if n - r > m / 2 then r = r + m
マルポいう以前に板ちごとるやんけ
148140:03/10/24 16:39
>>141
やっぱりそうなりますか・・・・

>>142
1000行程度でしたらDBですかね
ただこれが1000万行だとDBでは・・・・ですし

いまいちわかってないんですがOSのAPI使ってどうにかならないんですかね??
×いまいちわかってない
○ぜんぜんわかってない
>>148
DBを1から勉強されてはいかがですか?
151140:03/10/24 21:10
>>149
そうですね(笑)
その通りです

>>150
なぜそうなるんですか??
理由を教えてもらえれば嬉しいです
1000万行のテーブルからデータをdeleteするなんて
考えただけでおぞましいんですが・・・・・

うーん
まずポストする板を間違えたみたいです
申し訳ないです

○宿題に関して
これが任意のN行でなくてケツN行であれば
fileChannelのtruncateを使って速く実装できそうなんですが・・・・
javaで対戦型(人とCPU)のゲームを作りたいのですが、一人でやる神経衰弱は
作れるのですが、対戦になると、どう作って良いかわかりません、
よろしければ、作り方のアドバイスください。
人間とCPUに同じプレイヤークラスを継承させて以下略
154カオル:03/10/28 15:01
java初心者なのですが質問させてください。
public int getNamber(){}と
public int getValue(){} で定義したふたつの値を
public int getStatus(){} へ渡し、それを最終的に
public void printStatus(){}
で得てラベルやテキストフィールドに表示するというプログラムを作りたいのですが良く分かりません。
public int getValue(){
return value;}
などと書くところまではなんとか分かってきたのですが、どなたかアドバイス頂けませんか?
問題を理解してないくせに自分の言葉で書き直すなと何度(ry
156カオル:03/10/28 17:18
154 お願い 誰か教えて
157デフォルトの名無しさん:03/10/28 17:37
valueとnumberでどうstatusが作られるんだ?
158カオル:03/10/28 17:53
valueでは0と1を定義して0のときopen,1の時closeと表し、numberでは2と3を定義して2の時はo,3の時はxとして、それを154のようにして表したいのですが。
159カオル:03/10/28 19:12
154 お願いです
value 0, number 2のときstatusはいくつ?
とかを聞きたいんだが
161カオル:03/10/28 20:30
value()とnumber()で定義した値をgetstatusに代入して,
そのgetstatusで受け取った値をprintstatusにまた代入し、そしてその値を受け取ったprintstatusでもしvalue()が0、number()が2のときはopen,oと表示させたいのですが。
getStatusはintを返すよね。それはどういう数を返せはいいの?
valueとnumberからどういう風にしてその数を作ればいいの?
いい加減にこっちの言ってること理解してくれ。
c/c++宿題スレに比べてこっちは厳しいね。
質問者の成長をうながすという意味ではいいことだと思うが…。
164カオル:03/10/28 21:36
何度も何度もごめんなさい。それについてはどんな数でもやり方でもいいのでお願いします
public int getStatus(){
return (getValue() == 0) ? 0 : 1 +
(getNumber() == 2) ? 0 : 2;
}
public void printStatus(){
int status = getStatus();
String s = "" + (status & 1) ? "close" : "open,";
s += (status & 2) ? "x" ? "o";
System.out.println(s);
}
166デフォルトの名無しさん:03/10/28 21:49
C言語でfgetcがスペースを読んだ場合、fgetcは何を返すのですか?
public void printStatus(){
int status = getStatus();
String s = (status & 1) ? "close" : "open" + "," + (status & 2) ? "x" : "o";
System.out.println(s);
}
' '
169カオル:03/10/28 22:00
ありがとうございます。が、openやxはこのプログラムの場合表示されないですよね(T-T)。馬鹿でごめんなさい
public int getStatus(){
return ((getValue() == 0) ? 0 : 1)+
((getNumber() == 2) ? 0 : 2);
}
public void printStatus(){
int status = getStatus();
String s = ((status & 1) != 0 ? "close" : "open") + "," + ((status & 2) != 0 ? "x" : "o");
System.out.println(s);
}
171愛車はZ:03/10/29 18:34
フレームにgetPressure()メソッドから得た値を
表示させたいのですがprintComponentの中で
getPrintStatus()メソッドを得ようとしても
シンボルを解釈してもらえません。
どこをどう直したらよいのか誰かアドバイスして頂けませんか?

import java.util.*;
import java.awt.Graphics;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.FlowLayout.*;

public class Shikaku10
{
public static void main(String args[])
{
JFrame frame = new Shikaku10Frame();
frame.show();
}
}
172愛車はZ:03/10/29 18:37
<171の続き>
class Shikaku10Frame extends JFrame{
public Shikaku10Frame() {
final int X_MaxFrameSize = 1024;
final int Y_MaxFrameSize = 768;
setSize(X_MaxFrameSize,Y_MaxFrameSize);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}});
Container contentPane = getContentPane();
contentPane.add(new Shikaku10Panel());
}}
class Shikaku10Panel extends JPanel{
public static void main(String args[]){
Method method = new Method();
double PreAB = 0.0000000001;
double PreMid = 0.0000000003;
method.getPressureAB(PreAB);
method.getPressureMid(PreMid);
}
public void paintComponent(final Graphics g){
super.paintComponent(g);
method.getPrintStatus();
}}
173愛車はZ:03/10/29 18:40
<172の続き>
class Method{
double x;
double y;
double pAB;
double pMid;

public void getPrintStatus(){
System.out.println("" + pAB + "");
System.out.println("" + pMid + "");

}
public double getPressureAB(double pressureAB){
pAB = pressureAB;
return pressureAB;
}
public double getPressureMid(double pressureMid){
pMid = pressureMid;
return pressureMid;
}}
>>171-173

class Shikaku10Panel extends JPanel {

 Method method;

 public Shikaku10Panel() {
  method = new Method();
  double PreAB = 0.0000000001;
  double PreMid = 0.0000000003;
  method.getPressureAB(PreAB);
  method.getPressureMid(PreMid);
 }

 public void paintComponent(final Graphics g){
  super.paintComponent(g);
  method.getPrintStatus();
 }
}

でどう?
何がやりたいのかまったく分からないけど。
175デフォルトの名無しさん:03/10/30 12:44
お願いします。うまくできませんでした。

課題;以下のようなプログラムの一部がある。


// File Name = Kadai42.java
class Undergraduate {
private String name;
private int id;

public Undergraduate() {
......
}

......

176175:03/10/30 12:46
public String getInfo() {
return "Name: " + name + "\nID: " + id;
}
}

class Graduate extends Undergraduate {
private String laboratory;

......

public String getInfo() {
177175:03/10/30 12:47
return super.getDetails() + "\nLaboratory: " + laboratory;
}
}

class Kadai42 {
public static void main (String args[]) {
Graduate tanaka = new Graduate ("Tanaka", 2001025, "Network");
178175:03/10/30 12:48
Graduate suzuki = new Graduate ("Suzuki", "Multimedia");
Graduate yamada = new Graduate ("Agent");
Graduate uchida = new Graduate ();

System.out.println(tanaka.getInfo() + "\n\n");
System.out.println(suzuki.getInfo() + "\n\n");
179175:03/10/30 12:48
System.out.println(yamada.getInfo() + "\n\n");
System.out.println(uchida.getInfo() + "\n\n");
}
}

以下の実行結果になるように、......を埋めてプログラムを完成しなさい。ただし、
キーワードthisとsuperを用いる。


180175:03/10/30 12:49
% java Kadai42
Name: Tanaka
ID : 2001025
Laboratory : Network

Name: Suzuki
ID : 0
Laboratory : Multimedia

Name: Unkown
ID : 0
Laboratory : Agent

181175:03/10/30 12:51

Name: Unkown
ID : 0
Laboratory : null



見にくくてすいません
わけあって携帯からなので、、。
182名無し182:03/10/30 18:16
マイノリティーゲームをJavaで書くと、どんなソースになるのですか?
人数:N(奇数)、履歴の個数:M、ゲーム回数:Tです。

183デフォルトの名無しさん:03/10/30 19:26
あげてみる
>>175-181
1つ目の......はなくてもいいけど
  name = null;
  id = 0;
>>175-181
2つ目の......は
 Undergraduate(String name, int id) {
  this.name = name;
  this.id = id;
 }

 String getDetails() {
  return getInfo();
 }
>>175-181
3つ目の......は
 public Graduate(String name, int id, String laboratory) {
  super(name, id);
  this.laboratory = laboratory;
 }

 public Graduate(String name, String laboratory) {
  this(name, 0, laboratory);
 }

 public Graduate(String laboratory) {
  this("Unknown", 0, laboratory);
 }

 public Graduate() {
  this("Unknown", 0, null);
 }
でどう?
187175:03/10/30 22:22
>>184-186 Exception in thread "main" java.lang.StackOverf lowError
<<no stack trace available>>
になってしまいました…
>>187
じゃあ
 String getDetails() {
  //return getInfo();
  return "Name: " + name + "\nID: " + id;
 }
でどう?
189187:03/10/30 22:48
>>188 できました!ありがとうございます。お世話になりますたー
190もこ:03/10/31 09:26
はじめまして。
VisualBasicの質問をしてもよいでしょうか(>_<)?
どこでVisualBasicの質問ができるか分からなくて・・・。
板が多すぎて、迷ってしまいました。もし良ければレス下さい。
お願いしますm(__)m
191もこ:03/10/31 09:34
今発見しました。お騒がせしましたm(__)m
age
193デフォルトの名無しさん :03/10/31 19:50
PHPとHTMLの連結についての質問なんですが、どこに
書いていいかわからないのでここに書かせていただきました。
HTMLで
<INPUT size="20" type="text" name="keyword">でkeywordに「ああああ」と
入力します。
でPHPに連結して、表示させたいのですが、「print $keyword;」でああああと表示させたいのですが
なぜか表示されないのです。
どーしてでしょうか??
phpinfo();で調べると、$keyword=ああああ となっており、連結はうまくいってると思います。
必要であれば、PHPとHTMLの全ソース載せるんで(20行くらい)どなたか
アドバイスをお願いします。
GETならば
 echo $_GET["keyword"];
POSTならば
 echo $_POST["keyword"];
もしくは
 php.iniでregister_globalsをONに
でどう?
ほかにもあるけど。
195デフォルトの名無しさん :03/10/31 21:15
>>194

ありがとうございました。
POSTでやっていましたので
 echo $_POST["keyword"];でやったら
出力されました^^
ほんとうにありがとうございました。
またわからなかったら質問を書き込みたいと思います
PHPの質問ってこのスレでいいのかな(;´Д`)
>>195
for Javaって時点で明らかに違う
WebProg板逝け
>>196
あ。スレ名最後まで読んでませんでした;:
申し訳ありません><
気おつけます。
次はWebProg板のほうにいってみます。
>>196
答える前に板違いを指摘すべきだったよ。
すまん。
199柔道部:03/10/31 21:57
学校の宿題といてください。
NO Å B C
1 X X X 左のような図をパネルに描き、それをフレームに貼り付け表示する。No1〜20までをボタンで描く。
2 X X X また、Å、B、Cをラベルで貼り付け、Xを表示させる。
3 X X X 次に、例としてx端末に4_1_0_0と入力した場合、最初の値はNOに対応させる(この場合は4)。
4 V X X 2番目以降の値は左から順にこの場合、NO4のABCのラベルに対応する。0の場合はX、1の場合はVを表示させる。
: : : : 例のようにして、指定されたNOのA、B、Cに0、又は1に対応した、X、又はVを表示させなさい。
20 X X X
200柔道部:03/10/31 22:02
199ですが図は下の者ものが正確なものです。
NはNOのことです。
N A B C
1 X X X
2 X X X
3 X X X
4 V X X

20 X X X
>>199-200
まず

import java.awt.*;
import java.util.StringTokenizer;

public class Foo extends Frame {

 public Foo(int no, int[] abc) {
  setLayout(new GridLayout(21, 4));
  add(new Label("NO"));
  add(new Label("A"));
>>199-200
そして
  add(new Label("B"));
  add(new Label("C"));

  for (int i = 1; i <= 20; i++) {
   for (int j = 0; j < 4; j++) {
    if (j == 0) {
     add(new Button(Integer.toString(i)));
    } else if ((i == no) && (abc[j - 1] == 1)) {
     add(new Label("V"));
    } else {
>>199-200
それから
     add(new Label("X"));
    }
   }
  }
 }

 public static void main(String[] args) {
  StringTokenizer tokenizer = new StringTokenizer(args[0], "_");
  int no = Integer.parseInt(tokenizer.nextToken());
  int[] abc = new int[3];
>>199-200
さらに
  for (int i = 0; i < 3; i++) {
   abc[i] = Integer.parseInt(tokenizer.nextToken());
  }

  Foo foo = new Foo(no, abc);
  foo.pack();
  foo.show();
 }
}
でどう?
エラー処理はしてないよ。
205柔道部:03/10/31 23:34
コンパイルは通ったのですが、実行したら次のような例外が発生しました。Exceprion in thread "main" java.lang.ArrayIndexOutofBoundsExceotion;0 at Foo.main(Foo.java;23)
>>205
java Foo 4_1_0_0

と実行してどう?
もしかして標準入力から読むの?
207柔道部:03/11/01 00:12
x端末にjavac Foo.javaでコンパイルした後、java Fooで実行した後に4_1_0_0と入力したいのですが。
>>207
じゃあ

import java.io.*;

を追加
mainの初めを

 public static void main(String[] args) throws Exception {
  BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

  StringTokenizer tokenizer = new StringTokenizer(in.readLine(), "_");
  int no = Integer.parseInt(tokenizer.nextToken());

でどう?
分かっている人はつっこまないでね。
209柔道部:03/11/01 00:58
ドモです。うまくできました。感謝感謝
210デフォルトの名無しさん:03/11/01 13:07
土下座して頭グリグリしたら宿題やらせてやっても良いよ
211柔道部:03/11/02 21:14
199です。すみません。それぞれのNOに対するABCのラベルのy座標は同じなのですが(NOのy座標が30ならそのNOのABCのy座標も30)、NO1〜20までの座標をそれぞれ自分で指定したいときにはどうすればよいのですか? 
212r:03/11/03 12:46
>>309
こんな風に書けばいいよ。
void foo( int n ) {
// :
// : 処理
// :
}

int main( int argc, const char* argv[] ) {
// :
// : 処理
// :
foo( i ); // ← i じゃなくてもいいけど。
// :
// : 処理
// :
}
>>211
位置を座標で指定するなら
レイアウトマネージャにnullを設定してsetBoundsとかでやれば。
214柔道部:03/11/03 19:23
>213
setBoundsでやる場合,l.setBounds(〜)となりますが、例えばNO4のラベルBの位置を決める場合l.setBounds()のlの部分はどのように書けばいいのですか?
215柔道部:03/11/04 12:17
214誰か教えてくださーい
216ヨネ:03/11/04 17:00
端末に入力した2つの値(PressureAB, PressureMId)を
Panelに表示させたいのですがどうすればそれができるのか
分かりません。誰かアドバイス頂けませんか?

import java.io.*;
import java.util.*;
import java.awt.Graphics;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.awt.FlowLayout.*;

public class Shikaku11{
public static void main(String args[]) throws IOException{
JFrame frame = new Shikaku11Frame();
frame.show();
System.out.println("PressureAB PressureMidの値を入力してください");
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
String strAB = br.readLine();
String strMid = br.readLine();
double numAB = Integer.parseInt(strAB);
double numMid = Integer.parseInt(strMid);
}}
217ヨネ:03/11/04 17:03
>>216の続き

class Shikaku11Frame extends JFrame{
public Shikaku11Frame(){
final int X_MaxFrameSize = 1024;
final int Y_MaxFrameSize = 768;
setSize(X_MaxFrameSize,Y_MaxFrameSize);
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}});
Container contentPane = getContentPane();
contentPane.add(new Shikaku11Panel());
}}
class Shikaku11Panel extends JPanel{
Mh mh = null;
public Shikaku11Panel(){
mh = new Mh();
mh.setPressureAB(numAB);
mh.setPressureMid(numMid);
}
public void paintComponent(final Graphics g){
super.paintComponent(g);
g.drawString(mh.getPrintStatus(), 337, 180);
}}
218ヨネ:03/11/04 17:05
>>217の続き

class Mh{
double numAB = 0;
double numMid = 0;
public String getPrintStatus(){
return " " + numAB + " " + numMid;
}
public void setPressureAB(double pressureAB){
numAB = pressureAB;
}
public void setPressureMid(double pressureMid){
numMid = pressureMid;
}}
219柔道部:03/11/04 17:14
199から200の質問で201-204までのプログラムを教えて頂いたのですが、どうやら最初ラベルはすべてXと書かれている状態でx端末に数値をいれるとVなどが表われるようにしないといけないみたいなのですが。どなたか助けてください
220宿題丸投げ柔道部:03/11/04 21:07
NO A B C D E Fまた学校の宿題が出ちゃいました。前回同様x端末に2_0_3_1等と入力する。最初の2はNOに対応する。次の数が0ならばNO2のAかCかEかFに対応する(1ならばBかD)。どれに対応するかは3番目の数字で分かり、
1 X X X X X X0ならばÅ、1ならばC、2ならばE、3ならばFに対応する(この場合だとFに対応)。最後の数は三番目の数字のラベルに0ならばX、1ならばVを書くように指定する。この場合だとNO2のFがVになる。
2 X X X X X V また、1_1_0_0ならばどうか。この場合、NO1で二番目の数が1なのでBまたはDのどちらかを示す。どちらかを示すかは三番目の数で0ならばB、1ならばDとし、この場合はNO1のBのことを示す。そして最後の数が
↓↓ ↓↓↓↓↓ 0のときはX、1のときはVと示し、この場合はNO1のBがXをしめす。
20 X X X X X X
前回の応用らしいのですが、申しわけありませんが明日までなのでできれば急いでお願いします。
後、自分で座標も指定したいので、setBounds()の書き方もできれば教えて頂けませんか?
221宿題丸投げ柔道部:03/11/04 21:10
220すみません。変になりました。下のが分かりやすい図です。
NO A B C D E F
1 X X X X X X
2 X X X X X V
↓↓↓↓↓↓↓
20 X X X X X X
222デフォルトの名無しさん:03/11/04 21:18
すんません、javaの初心者質問スレでも質問したのですが、
eppという拡張可能javaプリプロセッサについて語ることのできる
スレがあれば教えていただけないでしょうか。お願いします。
223宿題丸投げ柔道部:03/11/04 22:12
220 明日までなのですが、誰か助けてください。お願いします。
必死だな
225デフォルトの名無しさん:03/11/04 22:55
こういった質問して来る人って
とりあえず書き込んだ後、イライラ タバコでも吸いながら
待っているんですかね?
何度も更新ボタン押しながら
ハリウッド映画見たく
「ヘイ、カモーン、カモン アンサー」
「ハリアップ!ハー?! シット!」
とか、イライラしてるんですかね?
最後に両手の手のひらを上にして「お手上げポーズ」なんですかね?
>>223
このレス読んで、書く気が無くなった。
誰か他の人をお待ち下さい。クソヤロウ!!

227デフォルトの名無しさん:03/11/04 23:25
>>223
学校やめて、肉体労働やったら?
>>222
わかってるとは思うがスレ違いヤメレ
229宿題丸投げ柔道部:03/11/05 01:07
ああ、クソヤロウでも何でもいいさ。とりあえず教えて
>>229
こういう、ボランティア的スレでは、質問者は、どんなに急いでいても「早く教えろ!!」とか言う事は厳禁!!それは暗黙の了解
それを守れないアフォは、こういうスレの利用をお断りします。

ってか、誰も書いてくれなくなるよ!!
231宿題丸投げ柔道:03/11/05 13:54
昨日は220や229みたいなスレを書いてしまってすみませんでした。230の方がおっしゃるとおり自分が急いでいたものでいろいろ書いてしまい、反省しています。ごめんなさい。220〜221なのですが、暇潰しにやってやろうという人がいたら、こんな奴ですが教えてやってください。
>>231
反省してるんなら自分でやれよ。
オレは学生で毎週鬼のように課題が出るが、前日までほっとくような事はしない。
出たその日にやってみて、2chとかでわかんないとこ聞いとく。
ようするにあんたにはやる気がないんだよ。
毎週毎週答え教えてって言ってくる友達といっしょだ。
オレはそんなやつらには答えは教えたくない。
とりあえずやって、できないところを聞け。
それがやなら>>227をするしかない。
>>232
とりあえず、お前はこのスレの>>1を嫁!!
ここは、君のくるような場所じゃない!!
234デフォルトの名無しさん:03/11/06 22:16
以下の値を小さい順に並べ替えるプログラムをつくれ
「2,5,3,4,1、」
という問題なのですが、どういう風にロジック作ればいいのか分かりません。
ヒントでもいいので教えてください
>>234
int[] a = {2,5,3,4,1};
Arrays.sort(a);
236宿題丸投げ柔道部:03/11/06 23:38
220〜221で自分なりに必要なメソッドを考えてみたのですが…
public String Zstatus(a[]){
public String ACEFU(int x){
if(x==1){return"X"} else{return"V"}
}
public String BD(int x){
if(i==1){return"X"} else{return"V"}}
public String ACEF(int a[1],a[2],a[3]){
swich(a[1]){
case 1:return ACEF(a[3]);
case 2:return BD(a[3]);
}

みたいな感じでいろいろ考えたのですが、この先からどう進めばよいのかわからなくなってしまいました。
この後a[0]の値で何行目にA〜Fのラベルの行も指定したいと思っていたのですが、やはりわかりませんでした。
このようなやり方なのですが、続きがさっぱり思いつきません。申し訳ありませんが、どなたかご伝授いただけませんか?
237デフォルトの名無しさん:03/11/07 01:10
>>234
出題者の意図によって解答が変わるよね。
235の他に自分で手順書く方法とか。
まぁ、これだとプログラミングの勉強というより
数学的なアルゴリズムの勉強だけど。
>>235
ワラタ

>>234
int[] a = {2, 5, 3, 4, 1};
Arrays.sort(a);
は正しいけど宿題としてOKもらえるかな?
とりあえずソートとかアルゴリズムとかでググれば。
239デフォルトの名無しさん:03/11/07 03:56
>>231
必死だな、暇つぶしでどうにかなるならみんな答えるけど。
ここで聞くより友達からコピーさせてもらえば。いればだけど。

>>234
並び替える数字の個数が2,30個なら「挿入ソート」で十分
「挿入ソート」でぐぐれ
241234:03/11/07 23:20
すいません、Arrays.sortを使わないでやるんです。
つまりソートロジックを自分で作れと。
ヒントだけでいいので教えてください。
後は自分で考えて見ます
>>241
だからググれよ、腐るほど出てるから。「挿入ソート site:ac.jp」とか工夫しる
243デフォルトの名無しさん:03/11/08 10:36

void BubbleSort(int *array,int length)
{
for (int i=0;i<length;i++)
  for (int j=0;j<i;j++){
    if (array[j]>array[j+1]){
      array[j]=array[j+1]-array[j];
      array[j+1]-=array[j];
      array[j]+=array[j+1];}
  }
}//多分タイプミスしてると思う。
>>243
メソッドの先頭文字は(ry
>>243
バブルソートは別名「交換ソート」であって挿入ソートとは違う
246ばっぞ:03/11/08 19:56
楕円の軌道を描くプログラミングを作りたいのですが、その楕円の動きをする部分のプログラムが
浮かんできません。どなたか動作の所だけのプログラムを教えていただけると幸いです。よろしくお願いします。
>>245
別に挿入ソートでなくても良いんじゃないの?
>>247
いいけど
挿入ソートの方が実用的だ
書く手間も同じ(どちらも5行程度)なら実用的な方がいいだろ
>>246
x = a cosθ
y = b sinθ
このスレの過去スレってどこかに書いてありますか?
>>246
レポート提出期限は明日の14:40だぞw
252デフォルトの名無しさん:03/11/10 03:14
Label labelAi=new Label(), Label labelBi=new Label(), Label labelEi=new Label,Label labelJi=new Label,Label labelTi=new Label,Label labelYi=new Label
iは1〜15までなのですが、for文使って最も簡単にこの90個のラベル定義する方法教えてもらえませんか?
>>252
配列は使えないの?それだったら多分ムリ。
「ラベルを定義する」という表現は曖昧だな。
ラベルオブジェクトを作って適当に使うだけなのか、さらにそれぞれ別の参照変数を定義して代入することなのか。
255252:03/11/10 11:19
A,B,C,D,E,Fと英字の所をしてもいいのですが、それでも無理ですか?
for文の後にsettextで文字を入れようと思っているのですが
256c9:03/11/10 11:58
配列使えないなら、これだ。
Map labelMap = new HashMap();
String name = "labal";
for(char c = 'A' ; c <= 'Y';c++){
for(int i = 1;i <= 15;i++){
String labelName = "label"+c+i;
Label label = new Label();
label.setText(labelName);
labelMap.put(labelName,label);
}
}
あとはMapから名前で取り出せ。
#俺なら配列使うがな
257252:03/11/10 12:58
何度もすみません。配列使うのならどうすればいいのですか?
ラベルの参照は後で使うの? 使わないならコンテナにそのまま追加すれば?
for (〜) {
 for (〜) {
  panel.add( new Label("文字列") );
 }
}
259:03/11/10 21:54
クラス{
public String AB(int i){
if(i==1){
return YU();
}
else(i==2){
return PO();
}

public String YU(int t){・・・
}
public String PO(int t){・・・
}
:
}
AB()でiが1のときはYU()の処理を、iが2のときはPU()の処理をす
るというような事をしたいのですが出来るのでしょうか?
あげんなぼけ
>>1 に age 進行でってあるが。>>260 は来んな。
>>260
すまん。どう見ても >>259 は釣りだな。。。
263電卓の話:03/11/11 13:24
Labelに割り算の結果を表示したいのですがちょっと困ってます。
1÷3とかしたときに結果が 0.33333333・・ となると思うのですが
実行した場合Labelのせいか  33333333 としか表示されません。
またラベルに表示するのは8桁だけで整数の部分と少数の部分をあわせて
8桁にしたいです。
8桁の条件さえ満たせば表示の問題はないと思うのですが・・・どうやれば
うまいこと8桁表示できるでしょうか?
264デフォルトの名無しさん:03/11/11 14:47
import java.text.NumberFormat;
public class FigureCheck{
public static void main(String[] args){
double dblTarget = 987.6543210987654;
int intFigure = String.valueOf((int)dblTarget).length() ;//10進数という前提で整数部分の桁数を計測
String strResult = new String("");
java.text.NumberFormat NumberFormatDisplay = java.text.NumberFormat.getInstance();
if (dblTarget > 99999999){
strResult = "ERROR";//値が大きすぎ
}else{
NumberFormatDisplay.setMaximumFractionDigits(8-intFigure);
NumberFormatDisplay.setGroupingUsed(true);
strResult = String.valueOf(NumberFormatDisplay.format(dblTarget));
}
System.out.println(strResult);
}
}

後は適当に改造しろ。
265お願いします:03/11/11 22:40
すいませんわからないのでよろしくお願いします。
アナログ時計を作らないといけないんですが時間の取り込み方と長針と短針を
どのように取れいれればいいかわかりません。あと↓のが周りの目盛りになってるはずなんですが
実行してもうまくいきません。一応↓のは本を見てやったんですがどこが間違ってるのかわかりません・・・。
よろしくお願いします。


import java.applet.Applet;
import java.awt.Graphics;
import java.lang.Math;
public class clockmemori extends Applet {
public void paint (Graphics g) {
int cx =100, cy =100;
int radius = 80;
for (int kakudo = 0; kakudo < 360; kakudo += 6) {
double RD = kakudo*Math.PI /180;
int x = cx + (int) (Math.sin(RD)*radius);
int y = cy - (int) (Math.cos(RD)*radius);
if (kakudo % 30 == 0)
g.fillOval(x - 3, y - 3, 6, 6);
else
g.fillOval(x,y,1,1);
}
}
}
266デフォルトの名無しさん:03/11/12 02:16
後置記法を中置記法に変換するアルゴリズムを教えて下さい。
参考になるHPも教えてくれると嬉しいです。
>>266
式を二分木で構成して
左の子ノード,右の子ノード,現在のノードを評価する順番を変える
左の子→現在→右の子なら中置記法
左の子→右の子→現在なら後置記法
268266:03/11/12 09:47
スタックを利用してのアルゴリズムお願いします。
>>268
1.式を字句解析してスタックに積む。
2.スタックから構文木を作る。
3.構文木から文字列を生成して終わり。

2. の部分は Node を構文木の節(か葉)を示す interface 、
Term implements Node、Literal implements Node とかして
getNode(){
 String token = stack.pop();
 return (isOperator(token) ? new Term(token, getNode(), getNode()), new Literal(token));
}
みたいな感じで。
270デフォルトの名無しさん:03/11/12 12:40
271デフォルトの名無しさん:03/11/12 12:53
>>270
その時点から、何を調べましたか?
すいません、文字列から特定の文字のみ変換しろという
問題なのですが、下記のような文字列から
「うえ」 を 「した」
というように置き換えたいのですが、indexOfだけだと最初の
「うえ」の位置は取れるんですが全部の「うえ」という部分を
置き換えたいのですがどのようにやればできるのでしょうか

------今現在のソース-----
String str = "あいうえおあいうえお";
StringBuffer sb = new StringBuffer(str);
if( str.indexOf("うえ") != -1 ) {
sb.replace( str.indexOf("うえ"), str.indexOf("うえ") + "した".length(), "した" );
}
System.out.println( sb.toString() );

表示結果:あいしたおあいうえお
>>272
> if( str.indexOf("うえ") != -1 ) {
>  sb.replace( str.indexOf("うえ"), str.indexOf("うえ") + "した".length(), "した" );
> }

while(sb.indexOf("うえ") != -1){
 sb.replace(sb.indexOf("うえ"), sb.indexOf("うえ") + "した".length(), "した" );
}
ループさせるとか、

String#replaceAll(String regex, String replacement) 使うとか。
System.out.println("あいうえおあいうえお".replaceAll("うえ", "した"));
>>273
ありがとうございます!
ただreplaceAllってのがJDK1.3ではないんですね・・・
上のWhileでやってみます、ありがと〜
275デフォルトの名無しさん:03/11/12 15:19
>>274
Whileなんてない。
276デフォルトの名無しさん:03/11/12 17:14
お願いします・・・・
「3行×4列の 2次元配列を、初期値{{58,12,-32,64},{91,119,27,71},{15,57,62,56}}で作成し、
配列の全要素の合計 s を計算し表示するプログラムを作成せよ」
>>276
int[][] array = {{58,12,-32,64},{91,119,27,71},{15,57,62,56}};
int sum = 0;
for(int i = 0; i < array.length; i++){
 for(int j = 0; j < array[i].length; j++){
  sum += array[i][j];
 }
}
System.out.println(sum);
278276:03/11/12 21:43
>>277
ありがとうございました!for二重にするの気付きませんでした・・・
279デフォルトの名無しさん:03/11/13 23:05
すみません継承の問題なんですがprintlnの表示がうまくいきません
お願いします
class DispPC{
public static void main(String[] args){
PC desktop001 = new PC("desktop001","ABC800",128);
NoteBook note002 = new NoteBook("note002","ABC500",64,3200);

desktop001.disp();
note002.disp();
}
}
class PC{
PC(String v_typename,String v_cpu,int v_memory){
String typename = v_typename;
String cpu= v_cpu;
int memory= v_memory;
}
void disp(){
System.out.println(typename + "CPU:" + cpu + "Memory:" + memory);
}
}
class NoteBook extends PC{
NoteBook(String v_typename,String v_cpu,int v_memory,int v_weight){
super(v_typename,v_cpu,v_memory);
int weight= v_weight;
}
void disp(){
System.out.println(typename + "CPU:" + cpu + "Memory:" + memory + "Weight:" + weight);
}
}
280その1:03/11/13 23:36
メンバ変数使えばいいんじゃない?
ゲッター作るのメンドかったから全部publicにしてみた。

class DispPC{
public static void main(String[] args){
PC desktop001 = new PC("desktop001","ABC800",128);
NoteBook note002 = new NoteBook("note002","ABC500",64,3200);

desktop001.disp();
note002.disp();
}
}

class PC{

public String typename;
public String cpu;
public int memory;

PC(String v_typename,String v_cpu,int v_memory){
typename = v_typename;
cpu= "v_cpu";
memory= v_memory;
}

void disp(){
System.out.println(typename + "CPU:" + cpu + "Memory:" + memory);
}
}

281その2:03/11/13 23:37
class NoteBook extends PC{

public int weight;

NoteBook(String v_typename,String v_cpu,int v_memory,int v_weight){

super(v_typename,v_cpu,v_memory);
weight= v_weight;
}

void disp(){
System.out.println(typename + "CPU:" + cpu + "Memory:" + memory + "Weight:" + weight);
}
}
282その3:03/11/13 23:44
>>279
すまん。一箇所間違えてた。
""外してね。

PC(String v_typename,String v_cpu,int v_memory){
typename = v_typename;
cpu= "v_cpu";←ここ
memory= v_memory;
}
283279:03/11/13 23:48
>>280
ありがとうございました!最初はpublic付けてたけど動かなかったから消してました。
cpu= "v_cpu"の部分は思いつきませんでした
本当にありがとうございました。これで寝られます
284パスカルの三角形みたいなのがわかりません。:03/11/14 22:31
数字を入れたらこうなります。

    * 
   * *
  * * *
 * * * *
負の数字を入れると
−4
    *
   * *
  * * *
 * * * *
こうなるプログラムがわかりません、よろしくお願いします。
285パスカルの三角形みたいなのがわかりません。:03/11/14 22:32
すみません 負の場合はこうでした。
−4 
   * * * *
    * * *
     * *
      *
すみませんでした。
286デフォルトの名無しさん:03/11/14 22:33
>>284
正の場合だけでも分からない?
287デフォルトの名無しさん:03/11/14 22:40
>>284
まず、単純に正の場合に、形はどうでもいいから三角形描くプログラムを作れ
288パスカルの三角形みたいなのがわかりません。:03/11/14 22:45
>>286
 一応やってみたんですがこのようになってしまうんです。↓
     *
    ***
   *****
  *******
289デフォルトの名無しさん:03/11/14 22:54
>>288
なんでそうなるねん。
まず、見た目を気にするな。
290 ◆CSZ6G0yP9Q :03/11/15 05:27
>>284
Javaを始めて3週間の俺が作ってみました。

import java.io.*;

public class Test{
public static void main(String args[]) throws IOException{
InputStreamReader rd = new InputStreamReader(System.in);
BufferedReader bf = new BufferedReader(rd);
System.out.println("とりあえず数字を入れろ(;´Д`)ハァハァ");
int cnt = Integer.parseInt(bf.readLine());

String str="* ";
String tmp=new String();
int num = cnt-cnt*2;
int roop = 0;
291 ◆CSZ6G0yP9Q :03/11/15 05:28

if(num<0){
for(int i=num;i!=0;i++){
for(roop=num-1;roop<i;roop++){
tmp=tmp+str;
}
roop=roop-roop*2-1;
while(roop!=0){
tmp=" "+tmp;
roop--;
}

System.out.println(tmp);
tmp=new String();
}
}else{
for(int i=0;i!=num;i++){
for(roop=num;roop>i;roop--){
tmp=tmp+str;
}
while(roop!=0){
tmp=" "+tmp;
roop--;
}

System.out.println(tmp);
tmp=new String();
}
}
}
}
なんか、イライラする程の汚いソース・・・
一応、>>284のやりたい事はできる。

プロフェッショナルな人・・・>>290-291をカッコイイ、スマートなソースに直してみて下さい・・・
293 ◆CSZ6G0yP9Q :03/11/15 05:30
>>292は、俺です。
要するに分岐とループの練習でしょ?こんなんでいいんじゃないの。nに入力したとして、

if (0 <= n) {
for (int i = 1; i <= n; i++) {
for (int j = i; j < n; j++) System.out.print (" ");
for (int j = 0; j < i; j++) System.out.print ("* ");
System.out.println ();
}
} else {
int m = -n;
for (int i = m; 1 <= i; i--) {
for (int j = i; j < m; j++) System.out.print (" ");
for (int j = 0; j < i; j++) System.out.print ("* ");
System.out.println ();
}
}
295デフォルトの名無しさん:03/11/15 06:15
>>290
芸術的なほど、美しくないソースだな。
こんなん見たことない。
296デフォルトの名無しさん:03/11/15 06:16
tmp = new String();
とかやってるけど
tmp = "";
でいいじゃん、というつっこみはなし?
なんかコダワリあるの?
>>290
本能的にスルーしたけどw、たしかにこりゃスゴイ。
処理を追って書けるのはえらいけど、
基本的な語彙、イディオムが足りないね。
まあでも3週間のソースって感じかなw
変数の中身を利用したファイルを作るにはどうしたらいいですか?


int a = 100;
100.txtというファイルを作る
aを文字列に変換 s1 に入れる
s2 = ".txt"として
s1とs2をつなげたs3をファイル名として使う
300デフォルトの名無しさん:03/11/15 07:11
>>299
String s = a + ".txt"
ではだめなの?
なんかこだわりあり?
>>300
すまん、実はJAVAのJも知らないC房です
302 ◆CSZ6G0yP9Q :03/11/15 14:47
import java.io.*;

public class Test{
public static void main(String args[]) throws IOException{
InputStreamReader rd = new InputStreamReader(System.in);
BufferedReader bf = new BufferedReader(rd);
System.out.println("とりあえず数字を入れろ(;´Д`)ハァハァ");
int cnt = Integer.parseInt(bf.readLine());

String str="* ";
String tmp=new String();

if(cnt<0){
for(int j=cnt;j<=0;j++){
for(int i=0;i>j;i--) tmp+=str;
for(int i=cnt;i<=j;i++) tmp=" "+tmp;
System.out.println(tmp);
tmp="";
}
}else{
for(int j=1;j<=cnt;j++){
for(int i=0;i<j;i++) tmp+=str;
for(int i=cnt;i>=j;i--) tmp = " "+tmp;
System.out.println(tmp);
tmp="";
}
}
}
}
303 ◆CSZ6G0yP9Q :03/11/15 14:48
>>290-291
を皆さんの指摘を踏まえ、もう一度書き直して見ました。
また、指摘おながいし申す。
304デフォルトの名無しさん:03/11/15 15:14
>>303
コンパイルがとおランだろうが。
305 ◆CSZ6G0yP9Q :03/11/15 15:24
>>304
へっ?
俺の環境じゃ普通にコンパイル実行できてますが・・・
J2SDK1.4.2
306デフォルトの名無しさん:03/11/15 15:40
>>305
あぁ、インデントがちゃんとなってないから勘違いしたよ。
307デフォルトの名無しさん:03/11/15 15:46
>>302
むぅ。実行できん。
mainメソッドのシグニチャがthrows IOExceptionのせいで壊れてるよ。
せめてtry-catchにしてください。
308デフォルトの名無しさん:03/11/15 15:50
>String tmp=new String();

だからこれは何なんだ
309307:03/11/15 15:51
実行結果の報告ね。try-catchに直して実行したら、うまく三角出たよ。
報告なので報告らしく。実行環境はこれ。
OS:WindowsXP Home Edition
java version "1.4.2_01"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_01-b06)
Java HotSpot(TM) Client VM (build 1.4.2_01-b06, mixed mode)
310デフォルトの名無しさん:03/11/15 15:51
それにしても、あいかわらず美しくないな。
tmpの初期化はループのあたまでやれよ・・・。
311304=306=310:03/11/15 16:02
オレならこうだな。

 int row = (cnt < 0) ? -cnt : cnt;
 for(int i = 0; i < row; ++i){
  String tmp = "";
  int star = (cnt < 0) ? row - i : i + 1;
  for(int j = 0; j < row - star; ++j) tmp += " ";
  for(int j = 0; j < star; ++j) tmp += "* ";
  System.out.println(tmp);
 }
312304=306=310:03/11/15 19:41
>>307
実行できたのだが。
Win2k + 1.4.2_02だ。
313fofofo:03/11/15 20:07
C言語の会話はほとんどないですね、ここは・・・・・javaばっか
>>313
for Javaなので。
>>300
ありがd
うまくできました
316 ◆CSZ6G0yP9Q :03/11/16 00:25
>>311
こういうレスが、一番勉強になります。
ありがとうございます。
うん、すっきりした。
ところでこの手のスレはコメントを書かないのが常識?
318311:03/11/16 20:18
//「*」で三角をかく

っていうコメントをここに書いても意味がない。
X 地点と Y 地点の間は 4500m 離れている。
今、秒速 20 m で X 地点から Y 地点へ向かう A 車と、
秒速 25 m で Y 地点から X 地点へ向かう B 車が同時に出発したとする。
2 つの車について、 1 秒ごとの車の位置を表示し、
何秒後にどの地点ですれ違うかを表示するプログラムを書きなさい。
ファイル名は MeetingCar.java とする。

このプログラムは車を表すクラス Car を定義して計算するのが良い。
クラス Car は属性として、

* 速度
* X 地点を 0 としたときの位置

を持ち、メソッドとして、
* 出発地点の位置と速度を初期化するコンストラクタ
* n 秒後の車の位置を求めるメソッド

を持つクラスとして考えるのが一つの方法である。

X 地点から Y 地点へ向かう A 車は位置 0 から 速度 20 で走り、
Y 地点から X 地点へ向かう B 車は位置 4500 から速度 -25 で走ると考え、
2 車の位置を求めれば良い。
321319:03/11/17 18:23
よろしくおねがいしまつ
>>321
class Car{
 int position, speed;
 Car(int start_position, int speed){
  this.position = start_position;
  this.speed = speed;
 }
 int getMovedPosition(int second){
  return this.position + this.speed * second;
 }
}
class MeetingCar{
 public static void main(String[] args){
  Car A = new Car(0, 20);
  Car B = new Car(4500, -25);
  int second = 0;
  while(A.getMovedPosition(second) <= B.getMovedPosition(second)){
   System.out.println( second + "秒後\tA車:" + A.getMovedPosition(second) + "\tB車:" + B.getMovedPosition(second) );
   second++;
  }
 }
}
323319:03/11/17 21:00
>>322
ありがとうございます。
また、わからないことがあったらお願いします。
324デフォルトの名無しさん:03/11/18 14:51
1.サーバAgeServerは、クライアントAgeClientから文字列を受信し、
その文字列の文字数をカウントし、結果をクライアントに送信する。
クライアントは、コマンド・ラインからサーバのホスト名と
任意の文字列を与え、指定されたサーバに文字列を送信する。
また、サーバから受信した文字数の結果を画面に表示する。
サーバはポート番号7777で接続要求を受け付けるようにし、
以下の実行結果となるように、ストリーム・ソケットを
使用したプログラムを作成しなさい。
実行例
サーバ
% java AgeServer クライアント
% java AgeClientホスト名 "Java Programming"
16
325デフォルトの名無しさん:03/11/18 14:53
2.サーバSageServerは、クライアントSageClientから2つの数値を受信し、
その数値を乗算し、結果をクライアントに送信する。
クライアントは、コマンド・ラインからサーバのホスト名と
任意の2つの数値を与え、指定されたサーバに数値を送信する。
また、サーバから受信した計算結果を画面に表示する。
サーバはポート番号7777で接続要求を受け付けるようにし、
以下の実行結果となるように、ストリーム・ソケットを使用した
プログラムを作成しなさい。
実行例
サーバ
% java SageServer
クライアント
% java SageClient ホスト名 3 7
21
---------------------<AgeServer.java>------------------------------
import java.io.*;
import java.net.*;
public class AgeServer{
 public static void main(String[] args) throws IOException {
  ServerSocket server = new ServerSocket(7777);
  Socket socket = server.accept();
  BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  String received = reader.readLine();
  Writer writer = new OutputStreamWriter(socket.getOutputStream());
  writer.write(received.length() + "\n");
  writer.flush();
  server.close();
 }
}
---------------------<AgeClient.java>------------------------------
import java.io.*;
import java.net.*;
public class AgeClient{
 public static void main(String[] args) throws IOException {
  if(2 <= args.length){
   Socket socket = new Socket(args[0], 7777);
   Writer writer = new OutputStreamWriter(socket.getOutputStream());
   writer.write(args[1] + "\n");
   writer.flush();
   BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
   String length = reader.readLine();
   socket.close();
   System.out.println(length);
  }else{
   System.out.println("usage : AgeClient hostname string");
  }
 }
}
---------------------<SageServer.java>------------------------------
import java.io.*;
import java.net.*;
public class SageServer{
 public static void main(String[] args) throws IOException {
  ServerSocket server = new ServerSocket(7777);
  Socket socket = server.accept();
  BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  int first = Integer.parseInt(reader.readLine());
  int second = Integer.parseInt(reader.readLine());
  Writer writer = new OutputStreamWriter(socket.getOutputStream());
  writer.write((first * second) + "\n");
  writer.flush();
  server.close();
 }
}
---------------------<SageClient.java>------------------------------
import java.io.*;
import java.net.*;
public class SageClient{
 public static void main(String[] args) throws IOException {
  if(3 <= args.length){
   Socket socket = new Socket(args[0], 7777);
   Writer writer = new OutputStreamWriter(socket.getOutputStream());
   writer.write(args[1] + "\n");
   writer.write(args[2] + "\n");
   writer.flush();
   BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
   String number = reader.readLine();
   socket.close();
   System.out.println(number);
  }else{
   System.out.println("usage : SageClient hostname number number");
  }
 }
}
330デフォルトの名無しさん:03/11/19 16:42
サソクソ!!!
Javaでマクロツールを作らないといけないのですが、
参考文献、参考URL等を教えてください。
ロケットマウスやFree Macro!のようなツールを作りたいのですが。
>>332
翻訳通して見てきたけど何処にマクロの事載ってるのかわかりませんでした。
あとJavaの知識0で一ヶ月で作れますかね?
昨日HelloWorldやった所ですが。
円の面積と外周を求めるプログラムを書きなさい。ファイル名は PropertyOfCircle.java とする。
class Circle {
void setRadius(int r) {
......
}
int area() {
......
}
int lengthOfOutline() {
......
}
}
class PropertyOfCircle {
public static void main(String[] args) {
円オブジェクトを生成する ;
円の半径を設定するメソッドを実行 ;
int a;
a = 円の面積を計算するメソッドを実行 ;
System.out.println("Area: " + a);
int l;
l = 円の外周を計算するメソッドを実行 ;
System.out.println("Outline: " + l);
}
}
この問題を受けて

問1
前回の問題の Circle クラスでは、インスタンス生成後に setRadius(int r) で半径を与えていた。
しかし、半径はすべてのインスタンスに必須の属性なので、
コンストラクタの引数として与えた方がスマートである。
Circle クラスで引数ありのコンストラクタを定義し、 PropertyOfCircle の mainメソッドで、
インスタンス生成時にそのコンストラクタを使用するようプログラムを変更しなさい。
ファイル名は前回同様 PropertyOfCircle.java とする。
問題1の円は、中心が原点にあり半径が r の円だとする。任意の点(x, y)が円内に含まれているかどうかを
調べるメソッド includes(int x, int y) を Circle クラスに追加しなさい。
ファイル名は PointsAndCircle.java とする。
PointsAndCircle クラスの main メソッドで、点(-10,-10)を左下、点(10,10)を右上とする矩形内の点が
円内に含まれているかをチェックする。円の半径は10前後にするとよい。

以上の問題が出ました。
よろしくお願いします。
そのレベルから投げるのか。。まあガンガレ
>>337
自分で考えるつもりはなさそうだな。
>>339
このスレの主旨がわかってないね
341デフォルトの名無しさん:03/11/26 00:33
( ´_ゝ`)フーン
343デフォルトの名無しさん:03/11/26 02:55
サーバーからデータをテキストデータをうけとってIP指定してデータをおくるってやつなんですが
1、テキストデータを読み込む 2、IP指定で別のPCに送る
これを1つのプログラムにする

こっからは質問です
public static void main(String[] args)
public static void main(String[] argv)
2つのプログラムまでいってんですがこんな感じの出始めの時どうやって1つにすればよいでしょう?

指定されたディレクトリに新しいテキストデータのファイルが作成されたら、そのファイルを別の位置に指定されたディレクトリにコピーをするプログラムを書きなさい。
予め、設定ファイル(config.file)を作って設定ファイルには新しいテキストデータやコピー先のテキストデータの新しいディレクトリ、新しいファイルの作成をチェックする時間を指定すること。
実行例 java Copy <config.file>
よろしくお願いします。
>>342
サンクスコ。
漏れが探してたのはこういうのです。
卒論としてツール作って提出するつもりだったけど、もうテーマ変えちゃいました。
しかし、一通り目を通してみたけど知識0では難しそうですね。
今のテーマがボツ食らったら基礎から勉強してやってみようかと思います。
有難う御座いました。
346デフォルトの名無しさん:03/11/26 18:09
入力ファイルの左の数字をキーとしてその行ごとソートするプログラムを誰か教えてください
左の数字が同じ行はどちらが先でもかまわないものです

入力ファイル
5      500
2 200
3 300
2 275
1 100
3 350
6 50
1 150
2 250

出力ファイル
6 50
5 500
3 300
3 350
2 200
2 275
2 250
1 100
1 150
>>346
TreeMap
348SP ◆XPr5E/Cp4g :03/11/27 02:48
CSV形式のテキストファイルの専用読み込みプログラムを作りたいんですが、
何をどうすればいいのかまったくわからず困っています。
たすけてくだされー
>>348
FileReader
StringTokenizer
>>348
まずJDKをインストールしろ。
351334:03/11/27 13:43
この程度すらわからないんです。
どうか教えて下さい。
お願いします・・・・

一連の double 型データを入力し、合計と平均を計算するような統計処理のための Tokei クラスを作成せよ。

Tokei クラスは次のようなインスタンス変数とメソッドを持つ。

●int 型変数 count 。
 入力された double 型データの個数をカウントする変数。
●double 型変数 sum 。
 入力された double 型データの合計値を記憶する変数。
●double型データを入力するためのメソッド addData(double) 。
 入力された値を sum に加算し、count を 1 増やす。
●入力されたデータの合計値を返すメソッド total() 。
●入力されるデータの平均値を返すメソッド average()。

動作確認のための、main 関数は以下とする。

  public static void main(String argv[]) {
   Tokei w = new Tokei();
   w.addData(11.1);
   w.addData(22.2);
   w.addData(33.3);
   System.out.println("合計 = " + w.total());
   System.out.println("平均 = " + w.average());
   w.addData(55.5);
   w.addData(44.4);
   System.out.println("合計 = " + w.total());
   System.out.println("平均 = " + w.average());
  }
353デフォルトの名無しさん:03/11/27 19:43
Vodafoneの面白いアプリを作れ との事です。
354SP ◆XPr5E/Cp4g :03/11/27 23:19
>349,350
早速ありがとうございます。FileReaderとStringTokenizerについて参考書
を読んで勉強してみました。

たとえば、AさんとBさんが同じテストを2度受けて、そのデータをcsv形式にあらわしたもの
が下記の通りだったとします。
名前、テストの回数(1回目か2回目か)、テストの点数
A,1,95
A,2,70
B,1,80
B,2,75

このcsv形式のデータを読み込んで、2人のテストの点数を1回目と2回目
を別々に3Dバーチャートとして表したいのですが、どうしたらいいでしょうか?
テストの点数を高さ(y軸)に、バーは直方体として表したいんです。(x軸とz軸には
意味を持たせてません)
csv形式のデータを読み込んで、テストの点数に応じて直方体の高さを表す、という
あたりがわからないんです。
直方体を表すプログラムは下の物を利用したいと考えています。
度々すみません、よろしくおねがいします。
355SP ◆XPr5E/Cp4g :03/11/27 23:21
/*・・・・・・・・・・・・・・・・・・・・ プログラムに必要なパッケージの取り込み ・・・・・・・・・・・・・・・・・・・・*/
import java.applet.*;
import java.awt.*;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.applet.MainFrame;

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ アプレットの作成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
public class MyBox extends Applet {
// MyBoxクラスの定義
public MyBox( ){

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ シーングラフの構築 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
Canvas3D canvas3D = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
// Canvas3Dクラスのインスタンスを生成
BorderLayout borderLayout = new BorderLayout();
// BorderLayoutクラスのインスタンスを生成
this.setLayout( borderLayout );
// レイアウトの設定
this.add( canvas3D, BorderLayout.CENTER );
// キャンバスの位置の設定
SimpleUniverse simpleUniverse = new SimpleUniverse( canvas3D );
// SimpleUniverseクラスのインスタンスを生成
simpleUniverse.getViewingPlatform( ).setNominalViewingTransform( );
// 視点の移動
BranchGroup objRoot = new BranchGroup( );
// BranchGroupクラスのインスタンスを生成
356SP ◆XPr5E/Cp4g :03/11/27 23:21
/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 光源に関する設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
BoundingSphere boundingSphere = new BoundingSphere( );
// BoundingSphereクラスのインスタンスを生成
DirectionalLight directionalLight = new DirectionalLight( );
// DirectionLightクラスのインスタンスを生成
directionalLight.setInfluencingBounds( boundingSphere );
// 「directionalLight」の描画範囲として「boundingSphere」設定
objRoot.addChild( directionalLight );
// 「directionLight」を「objRoot」に追加

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 外観に関する設定 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
Appearance appearance = new Appearance( );
// Appearanceクラスのインスタンスを生成
Material material = new Material( );
// Materialクラスのインスタンスを生成
appearance.setMaterial( material );
// 「appearance」の表面属性として「material」を設定
357SP ◆XPr5E/Cp4g :03/11/27 23:22
/*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ 直方体の生成 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
Box box = new Box( 0.5f, 0.4f, 0.3f, Box.GENERATE_NORMALS, appearance );
// Boxクラスのインスタンスを生成

/*・・・・・・・・・・・・・・・・・・・・・・・・・・・ 物体をシーングラフに追加 ・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
objRoot.addChild( box );
// 「box」を「objRoot」に追加

/*・・・・・・・・・・・・・・・・・・・・・・ 物体側のツリーをシーングラフに追加 ・・・・・・・・・・・・・・・・・・・・・・*/
simpleUniverse.addBranchGraph( objRoot );
// 「objRoot」をシーングラフに追加
}

/*・・・・・・・・・・・・・・・・・・・・・・・ 作成したクラスファイルを呼び出し ・・・・・・・・・・・・・・・・・・・・・・・*/
public static void main( String[ ] argV ){
MyBox myBox = new MyBox( );
// MyBoxクラスのインスタンスを生成
MainFrame mainFrame = new MainFrame( myBox, 500, 500 );
// MainFrameクラスのインスタンスを生成
}
}
>>354
あきらかに実力を超えてる気がするが。
359SP ◆XPr5E/Cp4g :03/11/28 00:50
>358
おっしゃる通りなんですが、やらないとまずいんです。
お願いしまつ
>>359
3年後くらいにできればいいほうか。
361SP ◆XPr5E/Cp4g :03/11/28 01:16
あと20日しか猶予が残されていないのです。
>>361
CVSを読み込むプログラムはできたのか?
ま、20日は無理だ。対策かんがえろ。
363SP ◆XPr5E/Cp4g :03/11/28 03:02
>362
はい、読み込んでそれを表示するプログラムはできました。
ただ、読み込んだデータから点数を抽出してそれを直方体の高さ
とする、というあたりがわからないんです。
>>362
CSVってな〜、CVSって書き間違えへん〜?
私、たまに間違えるねん〜
わかってんねんで?
だけどな〜、ごっちゃになるねん
・・・・・わかってんねんで!?
365362:03/11/28 03:25
>>364
間違ってるよ、っていわれたら、どっちがどっちかわからなくなる。
っていうか
   ||
 Λ||Λ   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
( / ⌒ヽ <  まちがっとるやないかぁー
 | |   |  \_____________
 ∪ 亅|
  | | |
  ∪∪
   :
   :

 ‐ニ三ニ‐
366サッパリ君:03/11/29 15:54
=押すと計算結果が表示されるような電卓が作りたいんですけど、どうするんですか?
イベントリスナーかくんです
368サッパリ君:03/11/29 17:53
どう書くのかが分かりません
Form変数を使うらしいのですが、サッパリなので教えてください
ボタン押しのイベントを処理するクラス
参考にならないか?

import java.awt.*;
import java.awt.event.*;
public class A extends Frame implements ActionListener {
public static void main(String args[]) {
A a = new A();
a.B();
}
public A() {
super();
}
public void B() {
Button b = new Button("Sum");
b.addActionListener(this);
add(b);
setSize(100,100);
setVisible(true);
}
public void actionPerformed(ActionEvent ae) {
System.out.println("Test.");
// ボタンを Test. と表示される
}
}
>>352
public class Tokei {
private int count;
private double sum;

public void addData(double d) {
sum += d;
count++;
}

public double total() {
return sum;
}

public double average() {
return sum / count;
}

public static void main(String argv[]) {
Tokei w = new Tokei();
w.addData(11.1);
w.addData(22.2);
w.addData(33.3);
System.out.println("合計 = " + w.total());
System.out.println("平均 = " + w.average());
w.addData(55.5);
w.addData(44.4);
System.out.println("合計 = " + w.total());
System.out.println("平均 = " + w.average());
}
}
371ななし:03/12/01 13:48
現状、チェックデジットのついていない12桁のバーコードが
3万件あります。(CSVデータ)

このデータを一括入力し、チェックデジットの算出された値を
12桁の末尾に追加し、そのデータをCSVで出力するという流れです。

どのようなクラスになって、どのような実装になるのでしょうか?
373319:03/12/01 15:28
11月17日の問題3では移動する車のシミュレーションを行った。
(↑先々週質問した奴です)
このように、時間とともに変化する現象を一つ選んで、
簡単なシミュレーションを行うプログラムをつくりなさい。
ファイル名は MySimulation.java とする

ソースファイルの先頭に、そのシミュレーションのタイトルと、
どのような内容かを説明する文章をコメントの形式で書いておくこと。

シミュレーションとは、実際の現象をプログラムとして再現しコンピュータの中で真似をすることである
(例: 映画「マトリックス」の世界) 。

例えば、つぎのようなシミュレーションが考えられる。

* 落ちていくボール
* 月の満ち欠け
374319:03/12/01 15:29
よろしくおねがいしまつ。
375AGE:03/12/01 18:07
age
JAVAを始めて1年生の素人です。
外部入力型一次元配列[i]を生成。配列内容を別の任意の配列にそっくりコピー。
そのあと配列を「クイックソート」でソートしてソート前と後の内容を出力(ソートは降順)するって課題なんですが
特にソートのところがチンプンカンプンで困ってます。
ご教授のほどよろしくお願いします。
注)出力時に
       ソート前    ソート後(降順)
       (任意の数)  (ソート内容) 

のように出力の仕方も指定されて・・・
>>376
JAVA の前にクイックソートは理解してるの?
>>378
java.util.Arrays.sort()
380デフォルトの名無しさん:03/12/02 00:40
次のJAVAプログラムを改造して、飛行機が右から左に行くようにしなさい
と課題を出されたんですが、いろいろやってみたものの
だめできませんでした。もし分かる方がいたら教えてください
お願いします。

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class GooseTimer extends JApplet implements ActionListener {
int frameNumber = -1;
boolean frozen = false;
Timer timer;
AnimationPane animationPane;

static String fgFile = "Goose.gif";
static String bgFile = "Sky.gif";

//Invoked only when run as an applet.
public void init() {
//Get the images.
Image bgImage = getImage(getCodeBase(), bgFile);
Image fgImage = getImage(getCodeBase(), fgFile);
buildUI(getContentPane(), bgImage, fgImage);
}

381デフォルトの名無しさん:03/12/02 00:41
void buildUI(Container container, Image bgImage, Image fgImage) {
int fps = 10;

//How many milliseconds between frames?
int delay = (fps > 0) ? (1000 / fps) : 100;

//Set up a timer that calls this object's action handler.
timer = new Timer(delay, this);
timer.setInitialDelay(0);
timer.setCoalesce(true);

animationPane = new AnimationPane(bgImage, fgImage);
container.add(animationPane, BorderLayout.CENTER);

animationPane.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (frozen) {
frozen = false;
startAnimation();
} else {
frozen = true;
stopAnimation();
}
}
382デフォルトの名無しさん:03/12/02 00:42
});
}

//Invoked by a browser only.
public void start() {
startAnimation();
}

//Invoked by a browser only.
public void stop() {
stopAnimation();
}

//Can be invoked from any thread.
public synchronized void startAnimation() {
if (frozen) {
//Do nothing. The user has requested that we
//stop changing the image.
} else {
//Start animating!
if (!timer.isRunning()) {
timer.start();
}
}
}


383デフォルトの名無しさん:03/12/02 00:45
//Can be invoked from any thread.
public synchronized void stopAnimation() {
//Stop the animating thread.
if (timer.isRunning()) {
timer.stop();
}
}

public void actionPerformed(ActionEvent e) {
//Advance animation frame.
frameNumber++;

//Display it.
animationPane.repaint();
}

class AnimationPane extends JPanel {
Image background, foreground;

public AnimationPane(Image background, Image foreground) {
this.background = background;
this.foreground = foreground;
}
384デフォルトの名無しさん:03/12/02 00:47

//Draw the current frame of animation.
public void paintComponent(Graphics g) {
super.paintComponent(g); //paint any space not covered
//by the background image
int compWidth = getWidth();
int compHeight = getHeight();
int imageWidth, imageHeight;

//If we have a valid width and height for the
//background image, draw it.
imageWidth = background.getWidth(this);
imageHeight = background.getHeight(this);
if ((imageWidth > 0) && (imageHeight > 0)) {
g.drawImage(background,
(compWidth - imageWidth)/2,
(compHeight - imageHeight)/2, this);
}

//If we have a valid width and height for the
//foreground image, draw it.
imageWidth = foreground.getWidth(this);
imageHeight = foreground.getHeight(this);
if ((imageWidth > 0) && (imageHeight > 0)) {
g.drawImage(foreground,
((frameNumber*5)
% (imageWidth + compWidth))
- imageWidth,
(compHeight - imageHeight)/2,
this);
385デフォルトの名無しさん:03/12/02 00:47
}
}
}

//Invoked only when run as an application.
public static void main(String[] args) {
Image bgImage = Toolkit.getDefaultToolkit().getImage(
GooseTimer.bgFile);
Image fgImage = Toolkit.getDefaultToolkit().getImage(
GooseTimer.fgFile);

JFrame f = new JFrame("GooseTimer");
final GooseTimer controller = new GooseTimer();
controller.buildUI(f.getContentPane(), bgImage, fgImage);

f.addWindowListener(new WindowAdapter() {
public void windowIconified(WindowEvent e) {
controller.stopAnimation();
}
386デフォルトの名無しさん:03/12/02 00:48
public void windowDeiconified(WindowEvent e) {
controller.startAnimation();
}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.setSize(new Dimension(800, 300));
f.setVisible(true);
controller.startAnimation();
}
}


すいません、めっちゃ長かったでした;;
387376:03/12/02 01:00
大変参考になりました。
フローは書けてもなかなかプログラムにできなくて・・・

おかげで助かりました。どうもありがとうございました〜
>>379
Arrays.sort って参照型はマージソートだったような…
>>388

>>376
> 外部入力型一次元配列[i]を生成。配列内容を別の任意の配列にそっくりコピー。
ってのは一般のオブジェクトなの?
>>389
知らん。

基本型にしても Arrays.sort() はクイック+挿入ソートだから、
完全なクイックソートでやれっつー話だとすると、
どっちにしろ Arrays.sort() は使えない。
>>390
まあアルゴリズム指定してくるあたり
既存のライブラリでは駄目だろうな
>>380
if ((imageWidth > 0) && (imageHeight > 0)) {
g.drawImage(
foreground,
- ((frameNumber * 5) % (imageWidth + compWidth)) - imageWidth,
+ compWidth - ((frameNumber * 5) % (imageWidth + compWidth)),
(compHeight - imageHeight) / 2,
this);
393デフォルトの名無しさん:03/12/03 01:48
int型の配列を用いて、キューを実装するプログラムを教えて下さい。
インターフェイスは、
public interface IntegerQueue{
void enqueue(int element);//挿入操作
int dequeue();//削除操作
boolean isEmpty();//空か調べる
boolean isFull();//一杯であるか調べる
}
※isEmpty()は、キューが空のときtrue、そうでないときはfalseを返すメソッド。
 isFull()は、キューが一杯のときtrue、そうでないときはfalseを返すメソッド。

お願いします。
>>393
public class IntArrayQueue implements IntegerQueue {
  private int[] array;
  private int head, tail, num;
  public IntArrayQueue(int size){
    array = new int[size];
    tail = head = num = 0;
  }
  public boolean isFull(){ return num == array.length; }
  public boolean isEmpty(){ return 0 == num; }
  public void enqueue(int val){
    if(isFull()) throw new IllegalStateException("full");
    num++;
    array[head] = val;
    head = (head + 1) % array.length;
  }
  public int dequeue(){
    if(isEmpty()) throw new IllegalStateException("empty");
    num--;
    int val = array[tail];
    tail = (tail + 1) % array.length;
    return val;
  }
}
395デフォルトの名無しさん:03/12/03 22:30
データが
0 1 2 3 4 5 5 5 6 7 8 8 8 8 9 9 9 10...
と0から10000まで並んでいるファイル(out.txt)があります。
ある数字は複数個あります。
このファイルから0の個数、1の個数...を表示するプログラムを
作成しています。
C++で作成していますのでC++で動作するプログラムをお願いします。
>>395
スレ違い。ここは Java の宿題専用。
397395:03/12/03 22:41
すまん
398デフォルトの名無しさん:03/12/05 23:15
#c!:/perl/perl.exe
# 携帯から飛んできたデータを読み出す
if(open(DB, "a")){
while(<DB>){
chomp;
if($_){ push @list, $_}
}
close(DB);
}

# データを$inに書き込む
read(STDIN, $in, $ENV{'CONTENT_LENGTH'});

# リストに追加
push @list, $in;

# テキストデータとして携帯に返却
print "Content-Type: text/plain\n\n";

# ファイルに格納
if(open(DB, ">b.txt")){
foreach $e (@list){
chomp $e;
print DB $e ."\n";
}
close(DB);
}
399398:03/12/05 23:16
すいません!(間違えておしちゃいました
これをjavaにしろといわれたんですが、どうでしょうか?
ちなみにデータがそのcgi指定で送られてきます
という条件があります
javaの初心者板から紹介されてこちらに伺いました。
さっそくではありますが、どなたかこの宿題教えて
いただけないものでしょうか(;´Д`)

System.out.println()文とBufferedReaderクラスのreadLine()を
使って下記のラインメニュープログラムを作成する。
ただし、メニューは一つのSystem.out.println()文で記述すること。
というのが問題文です。

Commad List
1 Guess
2 Janken
3 Other
4 Help
5 Quit
Command>
401400:03/12/06 17:49
一応ヒントに以下のプログラムが与えられています。

Import java.io.*;

class LineMenu{
Public static void main(String args[])throws java.io.IOException{
int commandNO;
//@この個所で上記のメニュー文字列を作成し、表示する。
//Aこの個所で「Command>」文字列を表示する。
//Bこの個所でキーボードからメニュー番号を読み込む。
   System.out.println("Execute" + commandNO + "Command number");
}
}

初心者板にもほぼ同等の内容の書込みをしてしまったのであれなのですが、
出来ますればどなたかご教授くださいまし。
\n
>>400
int commandNO;
String[] menu = {"Commad List","1 Guess","2 Janken","3 Other","4 Help","5 Quit"};
for(int i = 0;i<=menu.length-1;i++) System.out.println(menu[i]);
System.out.print("Command>");
BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
commandNO = Integer.parseInt(buf.readLine());
System.out.println("Execute" + commandNO + "Command number");

予約語とかを大文字で始めてるのはネタ?
>>403
>ただし、メニューは一つのSystem.out.println()文で記述すること。
一つのSystem.out.println()を複数回使うのは題意を満たしているのか?
メニューの部分を一箇所のprintlnで、と解釈して書いてたんだ、スマソ

System.out.println("Commad List\n1 Guess\n2 Janken\n3 Other\n4 Help\n5 Quit\nCommand>");
Command>の横に入力が入らないのは微妙に気に食わないんだがいいんだろか
いや、出題者の意図としては
System.out.println("Commad List\n1 Guess\n2 Janken\n3 Other\n4 Help\n5 Quit");
System.out.println("Command> ");
ってことかと。
407さらし上げ:03/12/06 21:30
ここにいるやつ質問に答えててる人のぞいてみんな馬鹿ばっかだね
これぐらい自分でやらないからPGはレベル低いんだよ
ボケ大学生どもが
408400:03/12/06 22:27
>403〜405
たぶん同一の方とお見受け致します。
自分のような者のために、わざわざ尽力してくださって
有難うございました( ´∀`)
とりあえず問題文をそのまま書いたので、ネタではないです。

>407
仰るとおりマヂで話にならないほど馬鹿です。
文系大学なのに、講師がお前等javaくらい分かってんだろうが?
みたいな感じで授業を進めるので全くついていけないのです(つД`)
16進数を2進数に変換するプログラムは
javaでどういう風に作ったらいいでしょうか?
>>409
申し訳ありませんが、問題文をそのまま書いていただけませんか?
411401:03/12/07 22:13
これは申し訳ありませんです(´Д`;)
問題文は『整数値の各桁の数値を出力するプログラムの作成』とあり、
(a)AO6C (b)5FFD (c)42FA05
らを2進数に変換して、変換後の2進数を答えるのとプログラムを作成
するのが問題です。

単純に16進数を2進数にするプログラムがあれば大丈夫かな? 
と思い、かなり端折って質問を書いてしまいました。
すみませんです…。
412409:03/12/07 22:15
↑失礼しました。自分は409でした。
>>411
> (a)AO6C (b)5FFD (c)42FA05

"O"と"0"の区別が・・・

Integer value = Integer.decode("0xA06C");
System.out.println(value.toString()+"->"+Integer.toBinaryString(value.intValue()));
414409:03/12/07 22:26
>413
わぉ、焦っていたもので失礼致しました(´Д`;)
後は("0xA06c")内にそれぞれ(b)、(c)を当てはめれればOK
ということでしょうか?
>>414
任意の値を入力できるようなUI作れとか言われてないなら、いいんで
ないの?
ま、OKかどうかは出題者に聞くしかないかもね。
与えられた数値を2進数に変換した結果は
(1) 1010000001101100
(2) 101111111111101
(3) 10000101111101000000101
となる。

これを出力するには
System.out.println("1010000001101100");
System.out.println("101111111111101");
System.out.prntln("10000101111101000000101");
とすれば良い。
417409:03/12/07 23:04
>415
確かにそうですね( ´∀`)
問題文自体もどうとでも解釈できるものですから
一番単純明快な解答を導いてくださってどうも
有難う御座いました!!!!

>416
試してみます〜( ´∀`)
ご親切にしていただいてどうもです!!!
418409:03/12/08 00:00
すみません、やるべき問題を間違えていました(つД`)
本当にやらないといけなかった問題はこっちの方でした。

整数数値の各桁の数値を出力してください。例えば、整数変数nの
値7453に対して次のように出力してください。
7453の各数値 = 7,4,5,3 です。
(ヒント:7の取り出しはn/1000で行い、7を取り除くにはn%1000を利用)

というものでした(;´Д`)
せっかく先の問題に答えてくださった415〜416さんには非常に
申し訳ないです。
自分が4章の練習問題3と5章の練習問題3を勘違いしていたせいで、
またご迷惑をおかけしてしまいますが、
よろしかったらお答え願えないものでしょうか?
>>418
int n = 7453;
System.out.print(n + "の各数値 = ");
System.out.print((n/1000) + ","); // 7453÷1000の答え7を表示
n = n % 1000; // 7453÷1000の余り453をnに代入
System.out.print((n/100) + ","); // 453÷100の答え4を表示
n = n % 100; // 453÷100の余り53をnに代入
System.out.print((n/10) + ","); // 53÷10の答え5を表示
n = n % 10; // 53÷10の余り3をnに代入
System.out.println(n + " です。");

%= 習ってるなら置き換えて
420409:03/12/08 08:52
亀レスですけれど本当にお世話になりました( ´∀`)
%=は習っているか微妙なのですけれど、おそらく問題ない
と思います。
自分の不手際から余計な手間を取らせてしまいまして真に
申し訳ありませんでした。重ね重ねお礼申し上げます。
「最新技術は英語で入手すべし、だから英語はプログラマにとっては必須技術だ。」
って言葉はよく聞くけど、
「最新技術は自分達で考えて生み出せ。ドキュメントは当然日本語でかけ。
こちらのハンデ(英語を勉強しなければならない時点で、時間的に大きなハンデを負うのは当然)を
欧米の技術者どもに思い知らせてやれ。」
という言葉をまったく聞かないのはどうしてだろうか?
>>421
最新技術を自力で生み出すだけの基礎が日本語ドキュメントだけでは充実していないからだろ
いろいろ考えてみたんですがどうしても解りません;;
どなたかこの宿題教えてください・゚・(ノД`)・゚・

n個の物をm人で分ける場合の組み合わせを
全部表示するdivide.javaを書け

例:5個を3人で分ける場合
% java divide 5 3
0 0 5
0 1 4
0 2 3
0 3 2
0 4 1
0 5 0
1 0 4



3 2 0
4 0 1
4 1 0
5 0 0
24通り
お願いします・・・
「関数 y=0.5*x*cos(10*x) のグラフを
0.0 ≦ x ≦ 4.0、-2.0 ≦ y ≦ 2.0の範囲で描画するプログラムを作成せよ。」
>>424
使用する言語とかグラフ描写の方法は?

Windows で GDI 使って?
csv 形式で出力して、グラフ化は gnuplot とかを使って?
それとも、最初から Mathematica とか Gnuplot とか使って?
426デフォルトの名無しさん:03/12/08 16:33
class Car{
int position;
int speed;

Car() {
this(0,0);
}

Car(int pos, int s){
position = pos;
speed = s;
}

/** t 秒後の位置を求める */
int getPosition(int t){
return position + speed * t;
}
}

このクラスを継承し目的地までの距離 (int distanceToDestination) という属性を追加し、
t 秒後に目的地までどの位の地点にいるかを求めるメソッド (int getRemainToDestination(int t)) を
追加したサブクラス CarToDestination を定義しなさい。
メソッド main では、 CarToDestination を用いて車の動きのシミュレーションを行い、
1 秒ごとに車の位置と目的地までの残りの距離を表示するようにしなさい。
ファイル名は ForwardingCar.java とする。


おながいします


>>423
おまえさん、プログラム以前の問題だぞ、それ。
まずは適当に数を代入して手計算で解いてみる。(←既にこの時点で>>423が間違えている)
それを(x,y)に置き換えて解の公式を出す。
そしてようやくプログラミングとなる。
まずは数学からはじめなさい。

まあ、簡単なパターン数だけでも教えとく。
これはパスカルの三角形で
(物の数)番目の1と
(人の数)番目の1が交差したところがパターン数となる。
428デフォルトの名無しさん:03/12/08 17:47
public class divide{
public static void main(String[] args){
int intmono = Integer.valueOf(args[0]).intValue();//物の数
int inthito = Integer.valueOf(args[1]).intValue();//人の数
divide m = new divide(intmono,inthito);
}
divide(int intmono,int inthito){
if((intmono == 0 ) || (inthito == 0)){
System.out.println("人もしくは物が足りません");
System.exit(0);
}
int inttotalnum = Totalnumcalc(intmono,inthito);//何通りあるか
System.out.println("Total Patterns : " + Integer.toString(inttotalnum));
System.exit(0);
}

int Totalnumcalc(int intmono,int inthito){
//戻り値int,何通りあるかを算出
int inttemp[] = new int[inthito];
for (int i=1;i<=inthito;i++){
inttemp[i-1] = i;
}
for (int i=2;i<=intmono;i++){
for (int j=2;j<=inthito;j++){
inttemp[j-1] =inttemp[j-1] + inttemp[j-2];
}//endfor
}//endfor
return inttemp[inthito - 1];
}//end Totalnumcalc(intmono,inthito)
}
429427:03/12/08 17:51
パターンの列挙は気が向いたらやるわ。多分向かないと思うけど。
430423:03/12/08 18:12
>427さん、ありがとうございます
説明不足だったようです、
何通りかをだすプログラムはできたのですが
パターンを列挙する方法がわからなかったのです・・・
ヒントかなにかありましたら教えていただきたいです

お手数をおかけしましてすみませんでした
431409:03/12/08 19:39
>419
昨日はお世話になりました。
またまた失礼でありますが、昨日の418の問題についてですが。
もしかすると418の題意は整数値の各桁の数値を出力するプログラムを作成
『した上で』5章練習問題3をやってみろ、というものかもしれないという
疑惑が今更ながらに浮上してきました(;´Д`)
この場合だと昨日の内容を少し改竄するだけでできるものでしょうか?
質問ばかりでご気分を害されるのではないかと不安ですが、何卒解決の
ほどをお願いいたしたく、再度書込みをさせていただいた次第です…。

432409:03/12/08 20:19
>419
class math3{
public static void main(String args[]) {
int n = XXXX;
System.out.print(n + "の各数値 = ");
System.out.print((n/1000) + ",");
n = n % 1000;
System.out.print((n/100) + ",");
n = n % 100;
System.out.print((n/10) + ",");
n = n % 10;
System.out.println(n + " です。");
}
}

と言う風にXXXXに任意の数字を入れるときちんと
できることが分かりました(;´Д`)
どうもお騒がせしました…。
>>425
おいおい、スレタイよめよ。
このスレってコントみたいで楽しいです。
435423(3レス食うので別場所に):03/12/09 07:55
ミスった....
×423→427
○427→423
437デフォルトの名無しさん:03/12/09 14:28
すいません質問なんですが


**
***
****
*****
******
*******
********





みたいに*を一つずつ増やして表示するのってどうすればいいんでしょうか?
よろしくお願いします
>>437
public class asterisk{
public static void main(String[] args){
String strbuffer = new String("");
for(int i=0;i<16;i++){
strbuffer = strbuffer + "*";
System.out.println(strbuffer);
}
System.exit(0);
}
}
439デフォルトの名無しさん:03/12/09 15:25
即レスありがとうございます!
重ねて質問して申し訳無いのですが、System.exit(0);ってどういう意味の文なのでしょうか
スレ違いな質問だったら無視して下さい
今すぐ回線切って、首吊って氏ね
>>439
いま動いているJAVAプログラムに対して「今すぐ回線切って、首吊って氏ね」と命令する

…という解釈でいいのかな?
442お願いします:03/12/09 22:20
エラトステネスのふるいを使い、2から数え始めて最初の250個の素数を求めよ。
素数を求める部分は関数化すること。

どなたか教えてください。お願いします。
なんで C/C++ 宿題スレとマルチなんだ?
言語は何でもいいのか?
444 :03/12/09 23:42
StreamTokenizerで09:00:00を1つの文字列として解釈させたいのですが、
どうすればいいんでしょうか?0〜9と:をwordCharsを使って文字として
認識させるようにして、表示させてみたところ
0
9
:00:00
と出力されてしまいました
445423:03/12/10 03:51
>427さん、ありがとうございます!!
本当に助かりました
もっと勉強していきたいと思います
ありがとうございました<(_ _)>ペコリ
446437=439:03/12/10 11:30
>>441
アフォな質問に答えてくださってありがとうございます!

次回も答えてくれるって、オレは信じてます
>442
素数かどうか判定するエラトステネス?の部分の関数

bool judge( unsigned long n){
unsigned long limitN;

if(n >= 2){
limitN = (unsigned long)sqrt(n);

while(limitN != 0){

if(0 == (n % limitN)){
return true;
}
limitN--;
if(limitN == 1)break;
}

}
return false;
}
あ、ごめん。
Cじゃないのね
素で間違えた。ゆるしてくだちい。
素数
450ななし:03/12/11 16:44
JAVAで

CSVデータを入力し、チェックデジットの計算をやって出力します。

流れとしては

CSV一括取り込み(12桁 バーコード以外の他の項目も混じっています)

チェックデジット算出(3万件分)

算出された数字を12桁の末尾に一括追加する

追加されて13桁になっているものを一括出力する。


・・・・こういう流れになります。

入出力とかでクラスとかで、どれが必要なクラスでどれが必要でないのか?
(ファイルからバーコード部分だけを抜き出すとか)こういうあたりに
なってくると非常にわかりにくくなります。

全部の処理で考えた場合、クラスはどれだけ必要になるものでしょうか?
ヘッポコ大学生は本日の宿題がわからないです。
class EmployeeDate{
String eTitle = "社員のプロフィール";
int eCode;
String eName;
String eDivision;
int eSalary;
}

public class TryJava12{
public static void main(String[] args){
String title;

EmployeeDate eDate = new EmployeeDate();

eDate.eCode = 1023;
eDate.eName = "北村 和夫";
eDate.eDivision = "営業部";
eDate.eSalary = 250000;

○;

System.out.println("★★★" + title + "★★★");
System.out.println("氏名 : " + eDate.eCode);
System.out.println("所属 : " + eDate.eName);
System.out.println("役職 : " + eDate.eDivision);
System.out.println("給与 : " + eDate.eSalary);
}
}
○の部分に上のオブジェクトのwTitleをtitleに代入するらしいのだが、
書き方がさっぱり。
なんていうか1年ダブルと授業で使う言語が変わっている罠。
また、おまえか。
1. 一括取り込みするな。
2. Javaでやるな。
453452:03/12/11 17:28
452 は >>450 へのレス。
454ななし:03/12/11 18:06
そこを何とか!
455デフォルトの名無しさん:03/12/11 20:42
時計を表示し、ボタンを押すとテキストフィールドにボタンを押した時刻を表示
させなさいという問題なのですが、よろしくお願いします。
456デフォルトの名無しさん:03/12/12 00:13
>>451
これじゃ駄目か?

class EmployeeDate{
String eTitle = "社員のプロフィール";
int eCode;
String eName;
String eDivision;
int eSalary;
}

public class TryJava12{
public static void main(String[] args){
String title;

EmployeeDate eDate = new EmployeeDate();

eDate.eCode = 1023;
eDate.eName = "北村 和夫";
eDate.eDivision = "営業部";
eDate.eSalary = 250000;

title = eDate.eTitle;

System.out.println("★★★" + title + "★★★");
System.out.println("氏名 : " + eDate.eCode);
System.out.println("所属 : " + eDate.eName);
System.out.println("役職 : " + eDate.eDivision);
System.out.println("給与 : " + eDate.eSalary);
}
}
457デフォルトの名無しさん:03/12/12 00:24
いろいろ考えてみましたがどうしてもわかりません。
テキストエリアから数値(点数)を入力し、
これをソートして二種類以上のグラフで表示する(ラジオボタンで切替)。
とりあえず数値は0から100までで、それを20以下は〜%みたいな感じで表示したいのです。
似たようなサンプルとかあったら教えてくださいませ。
450は金を用意して、人を雇ったほうがいいとおもう
459451:03/12/12 08:33
>>456
ちゃんと動きました。多謝。
460デフォルトの名無しさん:03/12/12 13:06

すんません、質問なのですが
1〜1050までの文字列が格納された配列
があるのですが
これを100個ずつ配列に格納しろという問題なのですが
どのような処理を書けばいいのでしょうか

String [] str1050 = new String[]{ "1",,,,"1050" };
String [] strArray1 = new String[0];
if ( ( str1050.length /1000 ) != 0 ){
 strArray1 = new String[( str1050.length /1000 ) +1];
} else {
 strArray1 = new String[( str1050.length /1000 )];
}
まではわかるのですが
その後のstr1050の内容を100個刻みでどうやっていれればいいのでしょうか
>>460
> if ( ( str1050.length /1000 ) != 0 ){
100個刻みっつーのにどっから 1000 がでてきたわけ?

> まではわかるのですが
何がわかったんだろ?
>>461
すいません、猿でした
1000で割るのじゃなく100です・・・0一個多すぎでした

までというのも曖昧ですね
配列の数(?)を確保するまでです・・・
>>460
int pos = 0;
Vector vec = new Vector();
while(pos < str1050.length){
  String[] array = new String[(100 < str1050.length - pos ? 100 : str1050.length - pos)];
  System.arraycopy(str1050, pos, array, 0, array.length);
  vec.add(array);
  pos += array.length;
}
String[][] array = (String[][])vec.toArray(new String[vec.size()][]);
>>463
ありがとうございます。
なんかたしかにこの通り動作しました
ただ自分が勉強不足ですね・・・意味がわからなかったです
もっとがんばって解読できるようにします
>>463
最後の行は
toArray(new String[0][])
でもいいんじゃない?そのほうが、いらんメモリ食わないからキモチイイ
>>465
> toArray(new String[0][])
のが一時オブジェクト多いよ。
>>466
そうなん?
new String[vec.size()][]に比べて?
>>466
> vec.toArry(new String[vec.size()][]);
だと、vec の内容物を new String[vec.size()][] に入れられるので
new String[vec.size()][] に vec の内容を入れて返す。

> vec.toArray(new String[0][]);
だと、vec の内容物を new String[0][] には入れられないので
新たに Array.newInstance((new String[0][]).getClass().getComponentType(), vec.size()); とかして、
それに vec の内容物を入れて返す。
469468:03/12/12 15:47
s/466/467/
470455です:03/12/12 16:10
度々すみません。ボタンを押すとテキストフィールドにボタンを押した時刻を表示
させるだけで良いようです。時計の表示はいらないです。よろしくお願いします。
大至急ひっとあんどぶろうを作って欲しいのです・・・
472デフォルトの名無しさん:03/12/12 22:36
おねがいしますあげ!
>>455
/* Q455.java */
import java.awt.*;
import java.awt.event.*;
import java.util.Date;
import javax.swing.*;
public class Q455 extends JFrame {
private JTextField tfClock;
private JButton btUpdate;
public Q455() {
super("Clock");
getContentPane().setLayout(new FlowLayout());
getContentPane().add(tfClock = new JTextField());
getContentPane().add(btUpdate = new JButton("Update"));
btUpdate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
btUpdateActionPerformed(e);
}
});
pack();
}
474473:03/12/13 03:44
private void btUpdateActionPerformed(ActionEvent e) {
tfClock.setText(new Date().toString());
pack();
}
public static void main(String[] args) {
JFrame f = new Q455();
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
});
f.show();
}
}
475デフォルトの名無しさん:03/12/13 06:11
>>473-474
本当にありがとうございます
476 :03/12/13 16:12
下のcsv形式のデータを4つの配列に格納するプログラムをつくりたいのですが、
どうしてもうまくいきません。
Exception: java.util.NoSuchElementExceptionとなってしまいます。
477のプログラムのどこに間違いがあるのかご指摘願います。
お願いします。
-------------------------------
test.txt
10, 20, 30, 40
14, 25, 36, 47
477476:03/12/13 16:17
import java.io.*;
import java.util.*;

class FileReaderSample5
{
public static void main(String args[])
{
try
{
// FileReader クラスを作成する.
FileReader fr = new FileReader("c:\\java\\test.txt");
//BufferedReaderオブジェクトを作成する
BufferedReader br = new BufferedReader(fr);
StringTokenizer st =
new StringTokenizer("c:\\java\\test.txt", ",");

int i = 5, j = 0;
String a = "ab", b = "cd", c = "ef", d = "gh";
String xz[] = new String[i];
String az[] = new String[i];
String yz[] = new String[i];
String zz[] = new String[i];
String s[] =new String[i];
478476:03/12/13 16:18
while((s[j] = br.readLine()) != null){
while(st.hasMoreTokens()){
a = st.nextToken();
xz[j] = a;
b = st.nextToken();
az[j] = b;
c = st.nextToken();
yz[j] = c;
d = st.nextToken();
zz[j] = d;
479476:03/12/13 16:19

System.out.println(xz[j]);
System.out.println(az[j]);
System.out.println(yz[j]);
System.out.println(zz[j]);
}
System.out.println(s[j]);

j++;
}
fr.close();
}
catch (Exception ex)
{
System.out.println("Exception: " + ex);
}
}
}
例外がどこで発生するか書けばいいのに、と思う今日この頃。
>>480
StringTokenizer st =
new StringTokenizer("c:\\java\\test.txt", ",");
これが出来たら上で
BufferedReader br =
new BufferedReader(new FileReader("c:\\java\\test.txt"););
をやる意味は?
>>481

>>476の間違いスマソ
483476:03/12/13 16:32
>480
例外がどこで発生するか書くにはどうすればいいんでしょうか?

>481
while((s[j] = br.readLine()) != null){
while(st.hasMoreTokens()){
のところで、1行読み込んだらデータを4つ格納し、
それが終わったらまた1行読み込んでデータを4つ格納し・・
と繰り返させようと考えてみたのですが、わざわざ必要ありませんね。
ご指摘の通り意味ないです(汗
>>483
そうやってレス書くときに、「ここで発生します」って書けばいいんだよ。
>>481
StringTokenizerってファイルを直接読み込めたんだ。便利になったんだね。
486476:03/12/14 19:14
おねがいしますあげ!
488476:03/12/15 02:17
お騒がせしました、自力でできました。
>>488
しばくぞ。質問したなら、どうやったか書けよ。俺は知りたくもないが。
490デフォルトの名無しさん:03/12/15 15:38
問題2

円柱(cylinder)を表すクラスを定義しなさい。クラス名は Cylinder とする。円柱の形状は、底面の半径(radius)と高さ(height)により定まる。空間上の位置は考慮しなくてよい。
491デフォルトの名無しさん:03/12/15 15:39
問題2-1
クラス Cylinder には、少なくとも以下のメソッドを実装しなさい。
* 体積を求めるメソッド volume()
* 表面積を求めるメソッド surfaceArea()
* 底面の面積を求めるメソッド baseArea()
* 側面の面積を求めるメソッド sideArea()
また、底面の半径と円柱の高さを引数にとるコンストラクタを実装しなさい。
アクセスに関しては、以下の方針で設計しなさい。
* 半径と高さは外部から与える(外部から参照はしない)。
* 体積と表面積を求めるメソッドは外部から呼び出す。
* 上記以外はすべてカプセル化して隠蔽する。
なお、数値はすべて整数でよい。円周率は3でよいが、Math.PI とするとπにもっとも近い double 値が得られる(参考)。
ファイル名は CylinderProperties1.java とする。クラス CylinderProperties1 は次のようになる。
class CylinderProperties1 {
public static void main(String[] args) {
int radius = 5;
int height = 10;
Cylinder cylinder = new Cylinder(radius, height);
System.out.println("円柱(半径=" + radius + ", 高さ=" + height + ")の");
System.out.println(" 体積は" + cylinder.volume());
System.out.println(" 表面積は" + cylinder.surfaceArea());
}
}
492デフォルトの名無しさん:03/12/15 15:40
問題2-2
円柱は、底面と側面からできている。つまり、円柱と底面、円柱と側面の関係は has-a の関係である。底面は円(circle)であり、側面は長方形(rectangle)である。
クラス Circle とクラス Rectangle を定義し、これらを属性として持つようにクラス Cylinder を変更しなさい。なお、Circle, Rectangle についてもアクセス制限に気を配ること。
クラス Circle に面積と円周、クラス Rectangle に面積を求めるメソッドを実装し、クラス Cylinder で体積や表面積を求めるときにそれらを用いること。
ファイル名は CylinderProperties2.java とする。クラス CylinderProperties2 は次のようになる。
class CylinderProperties2 {
public static void main(String[] args) {
int radius = 5;
int height = 10;
Cylinder cylinder = new Cylinder(radius, height);
System.out.println("円柱(半径=" + radius + ", 高さ=" + height + ")の");
System.out.println(" 体積は" + cylinder.volume());
System.out.println(" 表面積は" + cylinder.surfaceArea());
}
}
493デフォルトの名無しさん:03/12/15 15:43
長々と申し訳ありません。
何度やってもうまくいきません。
お願いします。m(_ _)m
一体どんなCylinder、Circle、Rectangleを書いてるのか気になるな。
495491:03/12/15 17:01
2-1は自力でなんとかできました。
2-2はどうしてもわかりません。
修飾子を使うようなんですが、どれをどのように使うのかが・・・
円柱の側面が長方形という出題もなんだかなぁ。
>>496
たしかに。なんかうわずった抽象化に思える
Circle
  radius : int
  area() : int
  Cicle(int radius)

Rectangle
  width : int
  height : int
  area() : int
  Rectangle(int width, int height)

Cylinder
  circle : Circle
  rectangle : Rectangle
  Cylinder(int radius, int height) { circle = new Circle(radius); rectangle = new Rectangle(radius, height); }
  〜 (以下、適当に area() を使って書き換え)

こんな調子でしょ?
class Circle {
private int radius;
Circle(int r) {
radius = r;
}
public int area() {
return (int)(Math.PI * radius * radius);
}
public int circuit() {
return (int)(2 * Math.PI * radius);
}
}
class Rectangle {
private int height, width;
Rectangle(int h, int w) {
height = h;
width = w;
}
public int area() {
return height * width;
}
}
あ、メソッドの修飾がわかんねのか。とりあえず別のクラスから使うのは public をつけれ。
class Cylinder {
private Circle base;
private Rectangle side;
private int height;
Cylinder(int r, int h) {
base = new Circle(r);
side = new Rectangle(h, base.circuit());
height = h;
}
public int volume() {
return baseArea() * height;
}
public int surfaceArea() {
return sideArea() + 2 * baseArea();
}
private int baseArea() {
return base.area();
}
private int sideArea() {
return side.area();
}
}
502476:03/12/15 19:12
>489
StringTokenizerを使うのをやめて、StreamTokenizerの
ordinaryCharメソッドとwordCharメソッドを使って、
0〜9をそれぞれ文字であると指定することで
1つの文字列のTokenだと認識させることができたようです。
お騒がせしてすみませんでした。
ただ、480さんがいっていた、例外がどこで発生するか書くにはどうすれば
いいのかまだわかっていないのでそれについてはこれから勉強していこうと思っています。

>>502
> 例外がどこで発生するか書くにはどうすれば

うむ。
カン違いしてることに早く気付いてくれ。
504409:03/12/16 23:48
409です(;´Д`)
やっぱり題意は任意の数字4桁を自分で打ち込んで各桁の数字を
表示するプログラムに仕立てないといけなかったようです。
多少自分で以前教えていただいたのを改竄してがんばったのです
が、早々に根を上げてしまいました。
お手数でありますが、ご教授のほどお願いできませんでしょうか?
505409:03/12/16 23:49
↓以前教えていただいたものを自分なりに改竄したものですが…

import java.io.*;
public class mmath3{
public static void main(String args[]) throws IOException{
String n;
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("ここに四桁の数字を入れてください:");
n = br.readLine();
System.out.print("n/1000" + ",");
n = n % 1000;
System.out.print("n/100" + ",");
n = n % 100;
System.out.print("n/10" + ",");
n = n % 10;
System.out.println(n + " です。");
}
}
4行目を
int n;
8行目を
n = Integer.parseInt(br.readLine());
507491:03/12/17 00:57
大変、助かりました。
ありがとうございました。
>>506
System.out.println()とこも直してやれよ。
509409:03/12/17 02:43
なるほど、8行目が肝でしたか…。
どうも助かりましたです( ´∀`)
明後日が提出日なので助かりました!!!
510 :03/12/17 02:52
配列の値を出力させたいのですが、

Test.java:7: シンボルを解決できません。
シンボル: 変数 a
場所 : Test の クラス

とエラーがでてしまいます。
なぜか教えてください。すみません、よろしくお願いします。
System.out.println(a[1]);
public class Test{
public Test(){
int[] a = new int[]{1, 2, 3, 4};
}
public static void main(String args[]){
Test test = new Test();
System.out.println(a[1]);
}
}
511510:03/12/17 02:54
1行間違えてメッセージを入力してしまいました。
すみません、エラーは下記の通りです。

Test.java:7: シンボルを解決できません。
シンボル: 変数 a
場所 : Test の クラス
System.out.println(a[1]);
>>510

public class Test {
  private int[] a;
  public Test() {
    a = new int[] { 1, 2, 3, 4 };
  }
  public static void main(String args[]) {
    Test test = new Test();
    System.out.println(test.a[1]);
  }
}

こういう事がやりたかったのだろうと想像で書いてみました。

元のファイルでは、
  値を代入しているのはコンストラクタ内。
  値を表示しているのは main メソッド内。
ということは、どちらからも参照できるように変数を作るには、
メンバとして a を確保すればいいのかな、と。
513510:03/12/17 05:34
>>512
早速ありがとうございます。

もう1つご教授願いたいことがあるのですが、
いただいたプログラムですと、配列を宣言するところでstaticと前に
つけてもエラーにならなかったのですが、自分の(510)だとエラーがで
る(式の開始が不正です、と表示されます)のは何故でしょうか?
privateとつけられていることと関係があるのでしょうか?
重ねて質問申し訳ありません。
>>513

private とは関係ありません。
(private/public/protected 等はアクセス制御に関する修飾子です。)

ブロック内で宣言している変数(局所変数という)に static 修飾子をつけることは
Java の文法に違反するのでエラーになります。(説明になってないけど。)

Java プログラム中に static というのが出てくるのは、次の4つの場合に限られると
おもいます。(漏れがあったら御指摘ください。)

class Test {
  static { /* ... */ } // 静的初期化子
  static int val; // static フィールド(クラス変数)
  static void method() { /* ... */ } // static メソッド(クラスメソッド)
  static class Clazz { /* ... */ } // static メンバ型
}

用語は、ここに書いてあるのを使ったつもり。
http://www.y-adagio.com/public/standards/tr_javalang2/jTOC.doc.html
515510:03/12/17 08:57
>>514
ありがとうございます。
大変勉強になりました。
516デフォルトの名無しさん:03/12/17 15:16
rmiを用いたとき、なぜインターフェースを定義しないといけないのでしょうか?
サンプルプログラムのコンパイルが終わって実行時にエラー
Exception in thread "main" java.lang.NoSuchMethodError: main
というように出て実行できません。
ソースにmainメソッドがないんです。htmlにタグを入れて実行する形でやっているのですが、どうにかなりませんかね。
ソースに無理やり
public static void main(String args[]){}
と打ってみましたがやはり無理でした。
sdk付属のdemoアプレットも動かないんです。
ちなみにコマンドプロントのappletviewerでは動きました。
ご指導お願いします。
518≠512:03/12/17 19:49
>>516
呼び出し側が、どうやって呼び出したらいいかわかんないから
519518:03/12/17 19:50
あ、変な名前入っちゃった
520 :03/12/17 23:57
列aには12:00から15:00まで1分刻みで時間(String型)が格納されていて、
配列bには1から9の数字(int型)が格納されているとします。
配列aの長さは12:00から15:00まで3時間の間1分刻みなので181で、
配列bの長さも同じです。
コマンドラインから入力した時間(String型)とa[i]の値が同じとき、
b[i]を返すようなプログラムを作りたいのですが、制御文をつかって
どのように作ればよいのでしょうか?
>>520
public class Q520 {
public static void main(String[] args) {
String[] a = new String[181];
int[] b = new int[181];

int pos = 0;
for (int i = 12; i < 15; i++) {
for (int j = 0; j < 60; j++) {
String m = "0" + j;
a[pos ++] = i + ":" + m.substring(m.length() - 2);
}
}
a[a.length - 1] = "15:00";

for (int i = 0; i < b.length; i++) { b[i] = (i % 9) + 1; }

for (int i = 0; i < a.length; i++) {
if (a[i].equals(args[0])) {
System.out.println(b[i]);
System.exit(0);
}
}
System.exit(1);
}
}
522520:03/12/18 13:30
>521
たすかりました。
ありがとうございます。
523 :03/12/18 13:31
mainメソッドがあるクラスとは別のクラスでargs[0]を
参照したいのですが、シンボル(args[0])を解決できません
とエラーが出てきてしまいます。
どうすれば解決できますでしょうか?

>>523
実引数で args[0] を渡してやる。
525523:03/12/18 14:22
>524
早速ありがとうございます 524さんの書かれた方法について勉強
している途中なのですが、
args[0]の代わりにSystem.inといれて実行してみたら
うまくいっているようなのですが、これでも同じことなのでしょうか?
>>525
> うまくいっているようなのですが、これでも同じことなのでしょうか?
違う。
>>525
ソース晒せ。
528523:03/12/18 15:20
ソースはちょっと長いので、問題の部分だけ晒すと大体下のような
感じです。
public class A{

static float f;

public A(){
FileReaderSample frs = new FileReaderSample();

for(int i = 0; i < frs.a.length; i++){
if((frs.a[i] == 100) && frs.b[i].equals(System.in)) {
f = frs.a[i];
}
}
}
}
コンストラクタの、
public A(){
...
}



public A(String someString){
...
}

に変えてコンストラクタ内で引数を適した型に変換すりゃあいいんじゃねぇの?
530529:03/12/18 17:05
捕捉。

上の変更をした上で、

static void main(String[] args){
new A(args[0]);
}

とやって引数を渡す。
args、ってのはmainの引数のことでいいんだよな?
531523:03/12/18 17:22
>529
ありがとうございます!
その方法でうまくいきそうです。
早速試してみます。
>>528
System.inは標準入力ストリームの事だからプログラム表現としてはイマイチかと。
他人がソースを読んだ時に引数を表しているということが直感的に理解しづらいし。
やはり>>529の方法をお勧めするよ。
533523:03/12/18 18:54
上手くいきました。
今取り組んでいる課題が終わり次第、プログラム表現についても
勉強していこうと思います。
ご親切にしていただいて、ありがとうございました!
534 :03/12/18 23:19
作成途中のプログラムの中で
this.addChild(transformGroup01);
this.addChild(transformGroup02);
this.addChild(transformGroup03);
      :
      :
this.addChild(transformGroup19);
というところを、for文を使って
for(int count = 0; count< 20; count++){
this.addChild("transformGroup"+String.valueOf(count));
}
としたところ、
C:\java>javac MyRotate.java
.\Boxes.java:299: javax.media.j3d.Group の addChild(javax.media.j3d.Node) は
(java.lang.String) に適用できません。
this.addChild("transformGroup"+String.valueOf(count));
と表示され、うまくいかず困っております。
for文を使ってシンプルに表したいのですが、どうすればよいでしょうか?
お願いします
>>534
Node[] nodes = new Node[]{transformGroup01, transformGroup02... };
for(int i = 0; i < nodes.length; i++)
addChild(nodes[i]);
536デフォルトの名無しさん:03/12/18 23:36
有向グラフの課題なのですが、アルゴリズムの本を
読みながら取り組んでいるもののどうにも理解できず、
Java に落とせません。どうかお願いします…

(1)
隣接リストを用いた有向グラフのクラスを設計せよ。
隣接リストにはJCF(コレクションクラス)を用いる。
頂点は情報として String 変数(label とする)、
int 型変数(id とする)を持つとする。

(2)
(1)で設計したグラフから、任意の id を持つ頂点
を深さ優先で探索するメソッドを実装せよ。

(3)
(1)(2)で作成したクラスから、以下の操作(デモ)を
行うクラスを作成せよ。標準出力への表示で構わない。

1. グラフに頂点を数個追加
2. ある頂点の隣接リストを表示
3. id を指定して頂点を検索し、label を表示する
537536:03/12/18 23:44
ちなみに、初心者質問、相談のスレッドに同じような質問があり、
私は仄かに期待していたのですが、途中でスレッドが1000に達
して流れてしまいました。

確か、途中で答えられていた方に、Map に Edge の情報を詰めて、
インデックスも考慮する、とか言う回答があった気がしますが、
>>536 の質問は何でも全く構わないです。一度膝を打つような理解
をすればそのあたりも考えていけるかと …多分…
538534:03/12/19 00:06
>535
早速有難うございます。
自分が考えたものより大分短くなりますね。
transformGroup01〜19はやはりループを使って2,3行で、て
できると楽でいいなぁ、なんて考えていたのですが、
String型がだめとなっては僕もその方法が最良な感じがします。
ご親切にどうもありがとうございました!
>>536
有向グラフってなあに?隣接リストってリンクリストのこと?
疎なグラフの場合隣接頂点をリストで持てば空間効率がいいから
そのことを言ってるんじゃね?
>>539
おいおい。。まあいいか
542539:03/12/19 01:02
>>541
今ググってきました。なるへそ。
(2)の課題があるって事は、複数のルートの頂点は存在しないということ?

普通にCompositeパターンで表現して検索メソッド書けば良いだけのような。
親→子の関係で辺の表現できるよね?
543539:03/12/19 01:11
こんなかんじでどうよ?書いてないところは埋めてね。
VectorGraph#addVector()の実装がチョット工夫いるかも。

public class Node implements Comparable{
 private int id;
 private String label;
 private ArrayList child = new ArrayList();
 public ArrayList getChildNodes(){return child;}
//以下省略
}

public VectorGraph{
 private Node root;
 public void addVector(Node from,Node to);
public Node getById(String id);
//以下省略
}
544デフォルトの名無しさん:03/12/19 01:28
yahooに自動で接続してオークションサイトから特定データを引っ張ってくる方法を
考える。。。

なんだこの宿題。まったくわからんw
>>536
探索の入口がどうなるかとか、よくわからんな。基本的には>543でインジャネーノ?
>>544
どういう処理が必要になるかを調べる練習じゃないの?
要は自動HTTPクライアントを組むというのと、ヤフオクだったらヤフオクの問い合わせ形式を解析するってことでしょ。
547536:03/12/19 01:41
>>545
入り口が一個ならモーマンタイ。
入り口が複数アリの生垣型なら、>>543でVectorGraph#rootにNullObject
扱いのインスタンス置いて、2階層以下を有効なノードとすれば、ヤッパリ
モーマンタイかなあ、と。
548539:03/12/19 01:42
マチガッタ。
549デフォルトの名無しさん:03/12/19 01:42
>>546
なにか参考になるサイト教えてくれませんか?
>>549
いや、だからウェブブラウザのしくみと、ヤフオクとかのウェブサービスのしくみをよく調べれ
自動HTTPクライアント→HttpUnitでググル。
問い合わせ形式の解析→試行錯誤。

さあガンガレ。
552デフォルトの名無しさん:03/12/19 02:12
>>551
HttpUnitはだいたいわかりました。
試行錯誤のヒントをください。。。
553デフォルトの名無しさん:03/12/19 02:16
>>552
わかったと書きながらも、、、javaより.netで実現したいんです。
学校の授業がC#なので。。。
>>552
ヤフオクサイトにHTTPのリクエストを投げる→レスポンスを解析
以下繰り返し。

どこかにドキュメントがあったりするのかねえ?
>>553
じゃあ、すれ違い。
>>555
本当だ・・・
すみません、間違えました。
557536:03/12/19 03:30
>>539 >>540 >>545 さん
ありがとうございます。>>540 さんの仰る通り、頂点の数に
対してエッジが極めて少ないものを扱います。記述不足で
すみませんでした。

>>543 を見て、晴れたような気分ですが、今日は悩んだ末
軽鬱状態になっているので、改めて頭を冷やして考えたいと
思います。ありがとうございました。
いぱーい関数を定義して、関数名を配列に格納しておき 配列から該当関数を
さがしてきて実行させるってのはどうやったらええんでしょ?
ガッコではCがメインで自分でJAVA弄ってる感じなんで変な質問ですがお願いします。
「リフレクション java」でぐぐる
>>559
ありがトン。調べてみます
>>560
やりたいことの詳細は分からないが、同じインターフェースを持つ
オブジェクトをコレクションに格納したほうが良いんじゃないか?

リフレクションは IDE や一部のフレームワークで使用されているけど
普通に実現できる場合は使うべきではないと思う。
562デフォルトの名無しさん:03/12/21 11:50
import java.io.*;

public class 01 {
public static void main(String[] args) {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

System.out.println("文字列を入力して、エンターを押してください。");

try {
String s = br.readLine();
int i = s.length();
String msg = "入力した文字列の長さは " + i + "です。";
System.out.println(msg);
} catch (IOException e) {
System.out.println("エラーが発生しました。");
}
}
}
563デフォルトの名無しさん:03/12/21 11:51
上のプログラムは、入力した文字列に対し、文字列の長さ(文字数を)求めるプログラムです。
このプログラムを利用して、
文字列を入力してエンターを押したら、この文字列に含まれる「a」の文字列を求められるよう
に変えたいのですが、すみませんが、分からないで困っているので教えて頂けませんか?
>この文字列に含まれる「a」の文字列を求め

「a」という文字が含まれているかどうかを判定するってこと?
> この文字列に含まれる「a」の文字列を求められる
意味がわからん。

文字数求める奴だったら初心者質問スレかどっかで最近みたような…
566562:03/12/21 21:18
亀レスですみません。

>>564>>565
たとえば、
aseadsrs
と入力すると、
aは、1番目と4番目です。
とでるようにしたいのです。
分かり辛くてすみません。

>>566
利用してっつっても、ファイル読みだしのところ(上のほうの数行)以外は殆ど書き直しだと思うが。
基本的には一文字ずつ調べるしかないよ。
568562:03/12/21 22:34
>>567
先生に、これを利用して作りなさいって言われたので
書き直しても良いと思います。

本当に分からなくて困っているので、教えていただけませんか?
どうかお願いします!!
>>568
ほい。ヒントだけ。あとはlength()回まわすだけだね。
if("aseadsrs".indexOf("a") == 0){
System.out.println("aは0文字目です。");
}
>>568
import java.io.*;
public class Homework {
  public static void main(String[] args) {
    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);
    System.out.println("文字列を入力して、エンターを押してください。");
    try {
      String s = br.readLine();
      System.out.print( "'a'は、");
      int index = 0;
      while(0 <= (index = s.indexOf('a', index))){
        System.out.print(++index + "番目" + (0 <= s.indexOf('a', index) ? "と " : "です。"));
      }
      System.out.println();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
571562:03/12/21 23:03
>>869
ありがとうございます!
これからやってみますので、まだわからなかったら
また質問させてください!!
お願いします。
572562:03/12/21 23:05
>570
ありがとうございます!
本当にありがとうございます、助かりました!!
上のカキコした後に気が付いたのでびっくりしました!!
573 :03/12/22 03:39
C:\java>javac Box.java
Box.java:14: コードが大きすぎます。
public Box(String a){
^
とエラーがでてしまいました。
どうすればいいんでしょうか?
よろしくお願いします。
65536バイト以内だよね、クラスファイルって・・・
575573:03/12/22 04:04
>574
651KBになってしまいました。
10倍もありますね・・
クラス構成見直したほうがいいと思われ・・・
577573:03/12/22 05:03
>576
おっしゃるとおりですね。
こんなエラーが出たのは初めてだったので
パニくって質問しちゃいました。
今クラスを分割中です。
ありがとうございました
578573:03/12/22 06:15
>574
javaファイルは何バイト以内でないといけないか
ご存じないですか?
579デフォルトの名無しさん:03/12/22 06:22
>>1
いい入門本教えて
580デフォルトの名無しさん:03/12/22 08:11
サーバープログラムの問題なのですが

・クライアントから複数同時接続が出来る
・クライアントが接続したら、IDとIPをリストに保管する
・クライアントから別のIDの問い合わせが来たら対応したIPを返す。

こんなの作ってください。
581>>580次からはプロトコルくらい書こうな...:03/12/22 09:28
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;
import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;import java.util.Hashtable;
public class Server extends Thread {
 public static Hashtable list = new Hashtable(); public Socket socket = null;
 public void main(String[] args) { Server server = new Server(); server.service(); }
 public void service() {
  try { ServerSocket ssocket = new ServerSocket(80);
   while (true) {
    Socket socket = ssocket.accept();
    Server server = new Server(); server.setSocket(socket); server.start();
   }
  } catch (IOException e) { e.printStackTrace(); }
 }
 public void run() {
  try { BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
   String id = br.readLine(); // "id\nip\n" => 通知
   String ip = br.readLine(); // "id\n" => 問い合わせ
   if (ip != null) { put(id, ip); } else {
    PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); out.println(get(id));
   }
  } catch (Exception e) { e.printStackTrace(); }
 }
 private synchronized void put(String id, String ip) { list.put(id, ip); }
 private synchronized String get(String id) { return (String)list.get(id); }
 public Socket getSocket() { return socket; }
 public void setSocket(Socket socket) { this.socket = socket; }
}
582580:03/12/22 10:46
>>581
どうもありがとうございました。
583デフォルトの名無しさん:03/12/22 11:11
すいません誰か教えてください
2次元配列
int[][] data = { {1, 7} , {4 , 8} };

をfor文の二重ループ
for(int i = 0; i <= data1.length - 1; i++){
for(int j = 0; j <= data1.length - 1; j++){
data[i][j];
でまわした時
配列の中の値をiの値、jの値がそれぞれ等しいときに足す、というのがしたいのですが
どうすれっばいいのでしょうか
>配列の中の値をiの値、jの値がそれぞれ等しいときに足す

題意がつかめん。対角成分の合計?にしては前提が不自然すぎる
585デフォルトの名無しさん:03/12/22 11:34
あ、すいません
要は

{1←→7}
↑ ↑
↓ ↓
{4←→8}

矢印で繋いだもの同士を足したいのですが、どういう式をかけばいいのかわかんないんです
586ずれた…:03/12/22 13:50

{1←→7}
↑  ↑
↓  ↓
{4←→8}
ループ使わなければいいじゃん。
足した結果をどうすんの
589586:03/12/22 15:19
>>587
やっぱそうなんですか…
でもどういう式書いていいのか思いつかないんですよ

>>588
表示するだけです
590デフォルトの名無しさん:03/12/22 16:24
awtでエディタを作る課題をしてるのですが印刷する時に用紙からはみ出ないように改行するにはどうしたらいいですか?
すみません、お願いします
よくわかんないけど、ループを使うにしても、その形のループにする理由とかあるの?
>>591>>589
593590:03/12/22 16:33
すみませんGUIでした。
>>590
java.awt.print使ってるなら、PageFormatから印刷可能領域サイズ取り出せるよ。
APIドキュよむべし。
595GOGO:03/12/24 22:23
T_T=B_B=D_D-S_S=Q_Q
596 :03/12/25 02:10
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at B0.<init>(B0.java:923)
at MR4.<init>(MR4.java:38)
at MR4.main(MR4.java:70)
こんな例外が発生してしまいました。よく意味がわからず困っています。
どういう意味なのか教えていただけないでしょうか?
よろしくお願いいたします。
>>596
B0.javaの923行目で、配列の要素数以上のインデックス(5)を指定した。
923行目にある配列の長さが5未満。
598デフォルトの名無しさん:03/12/25 10:02
/*********************************************************************
課題7:メソッド
以下のプログラム(でなくてもよいが)をもとに、ライフゲームの時間経過に
伴うパターンの変化を描くアプレットをつくれ。
(1) 以下のプログラムを適当にモジュール化せよ(ex7 クラスにメソッドを
導入し、全体構造がわかるようなプログラムとせよ)。
以下のプログラムは次のようにつくられている:
(a) 時刻0,1,2,...lastTime-1について、パターンの描画を行なう。
(b) 時刻t+1のパターンは、時刻tのパターンの上に上書きする。
(c) ただし、時刻tの描画が終わってから、少し待ってから時刻t+1の描画
を行なう。
(d) マシンが速いので、これでは速すぎて変化が見えないので、一定時間
だけ意味のないことをやって待つ。
(e) 課題6の解答例をもとにしているので、スクリーンの表示位置をずらす
ためのパラメータSTEPが入っている(Step=stepなら、y軸方向に各時刻
におけるパターンが描画され、STEP=0なら、固定位置で描画するので、
時刻t+1でのパターンは時刻tでのパターンの上に上書きされる)。
(2) 条件
(a) スレッドを使わないこと。
(b) 1つのファイル内で完結したものとすること。
(3) このプログラムを実行してみて気づく、アプレットの振る舞いに関する
奇妙な現象の理由を考えてみよ。
**********************************************************************/

と言う問題なんです。正直複雑すぎてよくわかりません。
誰かできる人がいたら教えていただけないでしょうか・・・。
以下のプログラムを参考にするみたいなんですが。
599598:03/12/25 10:07
一応このプログラムを参考にするようでありますが。
ttp://up.isp.2ch.net/up/117c1d3b99fe.java

すいませんが、お願いします。
600600:03/12/25 14:57
javaファイルをコンパイルしたところ、
「java.lang.Error: コンパイル問題が未解決です。
トークン "(" に構文エラーがあります。正しくは ";" です。」
と言うエラーが出ました。

上記エラーで指示された個所は
 boolean checkstrLine ( String value ){
            ↑ココです。

boolean型構文の記述が間違っているのでしょうか。
それともこの前後の文で、単純な記述ミスがあるのでしょうか。
解決できなくて困っています。ご教授お願い致します。

 
601600:03/12/25 17:10
追記です。boolean以下のソースを記します。
宜しくお願いします。

**************************************************************
boolean checkstrLine ( String value ) {
if( value == null || value.length() == 0 ) {
return false;
} else {
for( int i = 0; i < value.length(); i++ ) {
char ch = value.charAt( i );

if( ch < '0' || ch > '9' ) {
System.out.println("無効なデータです。");
return false;
}
}
return true;
}
}
テキトーだけど、直前のメソッドの { } が閉じてないとか?
603デフォルトの名無しさん:03/12/25 18:41
AGEとかSAGEってどういうこと?
605600:03/12/25 19:05
ご回答ありがとうございます。{}を再度確認しましたが、解決できませんでした。
booleanの上文も記します。宜しくお願い致します。
*************************************************************
public class SchoolCsv {
public static void main(String[] args){
BufferedReader stdin;
try{
BufferedReader stdin = new BufferedReader
(new InputStreamReader
(new FileInputStream("School.csv")));
}catch(Exception e){
System.err.println("エラー");
e.printStackTrace();
}
String strLine;
while(null != (strLine=stdin.readLine())){
SchoolAccesser ma = new SchoolAccesser();
if(checkstrLine(CsvParser.getColumn(strLine, 0)) &&
checkstrLine(CsvParser.getColumn(strLine, 1)) ){
}
boolean checkstrLine ( String value ) {
>>605
よく見ろYO!

public static void main(String[] args){
  BufferedReader stdin;
  try{
    BufferedReader stdin = new BufferedReader
      (new InputStreamReader
      (new FileInputStream("School.csv")));
  }catch(Exception e){
    System.err.println("エラー");
    e.printStackTrace();
  }
  String strLine;
  while(null != (strLine=stdin.readLine())){
    SchoolAccesser ma = new SchoolAccesser();
    if(checkstrLine(CsvParser.getColumn(strLine, 0)) &&
      checkstrLine(CsvParser.getColumn(strLine, 1)) ){
    }
  // ←ここだここw!
   
  boolean checkstrLine ( String value ) {
おおっ?よく見たら2つ足りなくないか?
while(null != (strLine=stdin.readLine())){ を } で閉じてないのと
public static void main(String[] args){ を } で閉じてないのの2つね。
609デフォルトの名無しさん:03/12/25 22:14
Enumeration efw = fw.elements();
Enumeration elist = list.elements();
while(efw.hasMoreElements()) {
//ここで,でてるみたい
StringBuffer line = new StringBuffer((String)efw.nextElement());
while(elist.hasMoreElements()) {
String ls = (String)elist.nextElement();
while((ch = line.indexOf(" " + ls + " ")) != -1) {
st = line.substring(0, ch);
rt = line.substring(ch + ls.length());
line = new StringBuffer(st);
line.append(rt);
System.out.println(line);
st = line.substring(1, ch - 1);
line.append(line.substring(ch + ls.length() + 1));
}
}
write.add(line);
}

Exception : java.lang.ClassCastException
が止まらないのですが
だれか助けてもらえませんか?
610デフォルトの名無しさん:03/12/25 22:16
609
一回目のiterationはうまくいくんだが
>>609
妙な二重ループだな。
外側ループの一回目で内側のループが回りきっちまう。
ん、よく見たら三重ループか。
613デフォルトの名無しさん:03/12/26 13:34
印刷でページからはみ出るときの改行と
コマンドプロンプトでコンパイルのプログラムがどうしてもできませんっ!
今の時点でできたものをさらしますので手直しお願いいたします〜

http://venus.aez.jp/uploda/dat/upload2327.txt
1の階乗からnの階乗まで計算して、(n は100ぐらいまで) 表示した後、
それらの合計も表示する問題を解きたいです。

そのために可変長配列の一つの要素に1桁分の情報を保持できる
クラスを定義しようと思ったのですが、
java.util.Vectorを集約するか、継承するかで悩んでます。
それぞれの案の長所や短所が一言で説明できるようなら教えて頂きたいです。
別の案:BigIntegerとかBigDecimalをつかう
ありがとうございます。
BigIntegerって何?と思って、調べてたら階乗関数のソースにぶち当たっちゃいました。
少し寂しかったですが、こんなの知らなかったので感謝します。
617600:03/12/26 20:52
>while(null != (strLine=stdin.readLine())){ を } で閉じてないのと
>public static void main(String[] args){ を } で閉じてないのの2つね。

ご回答ありがとうございます。
でも違うのです;;(多分)

booleanを区切りとして、その上文と下文を別々に分けて挙げたのでそう見えるだけなのです。



>>600
関数の中に関数は定義できねぇよ。
>>617
>booleanを区切りとして、その上文と下文を別々に分けて挙げたのでそう見えるだけなのです。

意味が分らん。実際には↓こういうふうに繋がってなくて、booleanの前にカッコがふたつあるってことか?

>SchoolAccesser ma = new SchoolAccesser();
>if(checkstrLine(CsvParser.getColumn(strLine, 0)) &&
>checkstrLine(CsvParser.getColumn(strLine, 1)) ){
>}
>boolean checkstrLine ( String value ) {
>>617
無意味に二つにわけずに全部を書いてくれ

示されたコードをつなげて見てみると括弧の数は確実にあってないよ
public class SchoolCsv {
public static void main(String[] args) {
BufferedReader stdin;
try {
BufferedReader stdin =new BufferedReader(new InputStreamReader(new FileInputStream("School.csv")));
}catch (Exception e) {
System.err.println("エラー");
e.printStackTrace();
}
String strLine;
while (null != (strLine = stdin.readLine())) {
SchoolAccesser ma = new SchoolAccesser();
if (checkstrLine(CsvParser.getColumn(strLine, 0))
&& checkstrLine(CsvParser.getColumn(strLine, 1))) {
}
}
}
boolean checkstrLine(String value) {
if (value == null || value.length() == 0) {
return false;
}
else {
for (int i = 0; i < value.length(); i++) {
char ch = value.charAt(i);
if (ch < '0' || ch > '9') {
System.out.println("無効なデータです。");
return false;
}
}
return true;
}
}
}
これでどう?といってもすでに指摘されてるとおりに修正しただけだけど
年末に申し訳ないのですけれど、以下のような問題を正月の
宿題に出され、えらく困っております(つД`)
何とか助けていただけないものでしょうか?

問題
乱数で発生した2桁の制すうちを次の方法で推測するゲームプログラムを作成する。

推測ゲーム開始
 数値(1〜99)を入力:50
 大きすぎる。
 数値(1〜99)を入力:25
 小さすぎる。
 数値(1〜99)を入力:40
 ・・・・
 あなたの勝ち。
 あなたの推測回数は6回でした。
推測ゲーム終了
 
@ディフォルトの推定値を7程度に設定し、もしプレーヤーが推定を
試みた回数がディフォルト値より少ない場合はゲプレーヤーの勝ちとする。
反対に、推定回数がディフォルト値より大きくなった場合はプレーヤーの負け。

A推定数値は次の方法で設定する。
 int 推定数値変数 = (int)(100 * Math.random());

B推定数値変数は適切な変数名で使用すること。
624623:03/12/27 16:57
あと、以下に↑の問題を解く上の参考プログラムが与えられております。

import java.io.*;

class GuessNumber{
public static void main(String args[]) throws java.io.IOException{
final int DEFAULT_NUMBER = 7;
String 変数名…;
BufferdReader br=
new BufferedReader(new InputStreamReader(System.in));
//get the random number for 推定数値
int 推測数値変数 =(int)(100 * Math.random);
・・・・




}
}
>>623

for(回数=1; 回数<=DEFAULT_NUMBER; ++回数){
 数入力
 if(数==推測数値変数) break;
 if(数>推測数値変数)
  大きすぎる。
 else
  小さすぎる。
}
if(回数<=DEFAULT_NUMBER){
 あなたの勝ち。
 あなたの推測回数は 回数 回でした。
}else
 あなたの負け。
626623:03/12/27 18:28
>>625
ううぅ、いろいろとエラーが出てきてどうしようもありません。
上記のレス内に書かれたこと以外にも何か自分で改変したり
しないといけないのでしょうか?
>>626 ワロタ(あげ)
そこまでコードが読めないのかw むしろ清々しいな。よき哉よき哉
>>626 625氏の書いてるのそのままだけど

import java.io.*;
public class GuessNumber {
public static void main(String[] args) throws java.io.IOException{
final int DEFAULT_NUMBER = 7;
String str;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int guessNumber = (int)(100 * Math.random());
int count,inputNumber;
System.out.println("推測ゲーム開始");
for( count = 1; count <= DEFAULT_NUMBER; count++ ){
System.out.print("数値(1〜99)を入力:");
str = br.readLine();
inputNumber = Integer.parseInt( str );
if ( inputNumber == guessNumber ) break;
if ( inputNumber > guessNumber ){
System.out.println("大きすぎる。");
} else {
System.out.println("小さすぎる。");
}
}
if( count <= DEFAULT_NUMBER ) {
System.out.println("あなたの勝ち。");
System.out.println("あなたの推測回数は" + count + "回でした。");
} else {
System.out.println("あなたの負け。");
}
System.out.println("推測ゲーム終了");
}
}
630623:03/12/27 20:33
>>625>>629
ずびばぜん(つД`)大変助かりました。
何せまともに授業でならっていなく、かつ資料にきちんと
例題も載っていないので、手のつけようがない有様でして…。

おかげさまで何とか正月は迎えられそうですヽ(゚∀゚)ノ
どうもありがとうございましたぁ!!!!!
631デフォルトの名無しさん:03/12/31 16:26
問題部分のソース→ttp://www.geocities.jp/jp_channel/java.bmp
【 htmlにするとソースのタグに形が崩れたのでbmpですm(_)m 】

api情報、system情報、concept情報からなるCollectionについて、
outmap(apifilter(col))は、api情報だけ抜き出してmapにします。
outmap(systemfilter(col))は、system情報だけ抜き出してmapにします。
outmap(conceptfilter(col))は、concept情報だけ抜き出してmapにします。
ここまでは動作確認済みです。
しかし、これをmapからoutするに至って、一つめのapi情報しか出力されません。

<table table border=2 bordercolor=blue>
・・・・
・・・・←api情報
・・・・
</table>
<table table border=2 bordercolor=blue>
</table>
<table table border=2 bordercolor=blue>
</table>

このようになってしまうのです。。
Iteratorの作り方に問題があるのでしょうか…?
よろしければアドバイスお願いします!
632age:03/12/31 17:52
うーむ…
633デフォルトの名無しさん:03/12/31 18:01
ダイヤグラム(進行グラフ)をJavaで
作りたいのですが、何について学べば
よいのでしょうか?
ダイヤグラム
>>634
Javaプログラミングもだよ!
大晦日の夜10時に申し訳ないのですが課題が出でいました。
問題は次のとおりです。よろしくお願いします。

台形の高さと各基底の長さをカプセル化したTrapeZoidクラスを定義し、
これらのインスタンス変数を初期化するコンストラクタと、
図形の面積を計算するインスタンスメソッドを用意しなさい。
mainメソッドでは、このクラスのオブジェクトをインスタンス化し、
メソッドを呼び出しなさい。

public class Trapezoid {
private double height;
private double lowerBase;
private double upperBase;
public Trapezoid(double height, double lowerBase, double upperBase) {
this.height = height;
this.lowerBase = lowerBase;
this.upperBase = upperBase;
}
public double getArea() {
return (lowerBase + upperBase) * height * 0.5;
}
}
public class TestTrapezoid {
public static void main(String[] args) {
Trapezoid trapezoid = new Trapezoid(10.0, 5.0, 15.0);
double area = trapezoid.getArea();
System.out.println("Area of Trapezoid(10,5,15) = " + area);
}
}
639636:03/12/31 22:42
>>637>>638さんありがとうございました。
新年明けましておめでとうございます
新年早々わからない課題をお願いします

岩石をオブジェクト化し、属性はその重さを考える。重さをカプセル化した
Rockクラスを定義し、10個のRockオブジェクトを作成して、それらの合計の
重さを表示するアプリケーションを作成しなさい。Rockオブジェクトは配列に
格納します。また、Rockオブジェクトを作成するときには、岩石の重さを
1〜10キログラムの値から無作為に選びます。

私が作成した未完成のソースです

class Rockmaster{
public static void main(String[] args){
int i;
double sum=0;
Rock rock[] = new Rock[10];
}
}

class Rock{
private double weight;
}

よろしくおねがいします。
完全に仕様を満たすランダムを考えてたら眠くなった・・おなすみ。
642デフォルトの名無しさん:04/01/01 04:49
3Dの棒グラフで、棒をクリックすると、棒に関する情報を表示
させたり、新しいグラフを表示させる、ということをできる
ようにしたいのですが、どう実装すればよいのかわからず
行き詰っています。どなたかご教授いただけないでしょうか?

3DグラフィックスのライブラリにはJava3Dを使用しており、
3Dの棒グラフは直方体で表現しています。
与えられたファイルの中の文字を使われている文字数順に、文字と文字数を出力しなさい。但し、日本語と空白以外の文字は全て数えることとします。


入力:
This is a pen.
出力:
i: 2
s: 2
T: 1
h: 1
a: 1
p: 1
e: 1
n: 1

言語はCです
644643:04/01/01 17:01
とおもったらスレ違いでした。吊ってきます…
645642:04/01/02 04:40
よろしくお願いします。
646 :04/01/02 05:44
Kさん 好循環  Aさん 悪循環  
 (健康体)  (喘息)

1.(神が喘息であるかないかを決める)
2.K 喘息でない人 A 喘息の人は
は体力がある    体力がなくなる

3.K        A 行動力、
          五感(嗅覚)が鈍り感性が変化する

4.K&A 神は異常な感性の人間は本来人に迷惑をかけ
るから外に出てはいけないと思っている。

5.K 変化なし   A アトピーになる
6.K 正常な感性  A 外に出なくなりさらに異常な感性になる
7.K 正常な人間   A 異常な人間(レッテル)
8.K&A 死  9.K&A      来世
10.K&A 神は異常な人間は人に迷惑をかけるので行動
を抑制する必要があると思っている。

11.K&A 神が喘息であるかないかを決める
12.K 喘息でない  A 喘息である
13.K&A    1.に戻る

これは事実。広めようぜ
解決法:寝て起きて、やな気分でも、続けるけること。
体力をつけると感覚が正常に戻り、
アトピーも快癒に向かう。 目安としてグランドを10週くらい。
あとはウォーキング 2.3時間を目安にウインドーショッピングや本屋めぐり
647401:04/01/02 14:57
明けましておめでとう御座います。
自分も新年早々大変恐縮ですが、どなたか正月に出されてしまった
この宿題を教えていただけないでしょうか?

私が最初にお尋ねしました↓のプログラムについてですが。

import java.io.*;

class report1{
public static void main(String args[])throws java.io.IOException{
int commandNO;
String[] menu = {"Commad List","1 Guess","2 Janken","3 Other","4 Help","5 Quit"};
for(int i = 0;i<=menu.length-1;i++) System.out.println(menu[i]);
System.out.print("Command>");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
commandNO = Integer.parseInt(br.readLine());
System.out.println("Execute" + commandNO + "Command number");
}
}
648401:04/01/02 14:59
問題は↑のプログラムの応用で、以下のように変更することです。

条件
1)「Command>5」でループを抜け出し、プログラムを終了させる。

2)String 変数 commandNameに次の対応したコマンド名を格納する。
 1 guess
 2 janken
 3 others
 4  help
 5 quit
 上記以外の番号 入力された番号

3)入力されたコマンド番号が1〜5以外はエラーメッセージを出力した後に、
 ラインメニューを再度出力する。
649401:04/01/02 15:10
参考にするは↓のプログラムです。
import java.io.*;

class LineMenu{
public static void main(String args[]) throws java.io.IOException{
String 変数1,変数2;
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
While(true){
System.out.println(
  //この個所で上記のメニュー文字列を作成する。
  );
  System.out.print("command>");
変数1 = br.readLine();
  //変数1に格納されている一文字だけのコマンド番号を
  //上記の対応するコマンド文字列に変換し、
  //変数2に格納する。

}
System.out.println("Line Menu is over");
}
}

条件
4)変数1と変数2は適切な変数名で使用すること。

3レスも消費してすみません。あいもかわらずの素人ぶりで、皆さんに
ご迷惑をおかけしますが、何卒ご教授のほどをお願いします!
650デフォルトの名無しさん:04/01/02 15:14
>>640
Rockクラスだけ。

import java.util.Random;

class Rock {
private static final Random r = new Random();
private double weight;
Rock() {
weight = r.nextDouble() * 10.0d
}

int getWeight() {
return weight;
}
}
>>640
あ、1から10kgか。で、10も含まれてなきゃいけないのか。
確かに面倒だな。。
ところで、これ、そもそもdoubleでやることが前提なの?intが前提な気がしないでもないんだが。
652640:04/01/02 15:46
自分でできました

考えてくださった方々にかんしゃします
653よろしくお願いします:04/01/02 15:47
3Dの棒グラフで、棒をクリックすると、棒に関する情報を表示
させたり、新しいグラフを表示させる、ということをできる
ようにしたいのですが、どう実装すればよいのかわからず
行き詰っています。どなたかご教授いただけないでしょうか?

3DグラフィックスのライブラリにはJava3Dを使用しており、
3Dの棒グラフは直方体で表現しています。
654640:04/01/02 15:49
class rockmaster{
public static void main(String[] args){
int i;
double sum=0;
Rock[] rock = new Rock[10];
for(i=0;i<10;i++){
do{
rock[i] = new Rock(Math.random()*10);
}while(rock[i].ran()<1);
sum=sum+rock[i].ran();
System.out.println("rock num["+i+"] = " + rock[i].ran());
}
System.out.println("Total Weight = " + sum);
}
}

class Rock{
private double weight;
public Rock(double weight){
this.weight = weight;
}
public double ran(){
return weight;
}
}

これでいいと思うのですがいかがでしょうか?
>>654

do{
rock[i] = new Rock(Math.random()*10);
}while(rock[i].ran()<1);

これ、1から10の間の乱数を獲得したいコードだと思うんだけど、
0〜9までの間の乱数を得て1加える方法のがスマートなんじゃない?

1.0 + (Math.random() * 9)
656655:04/01/02 16:32
追記で

do{
rock[i] = new Rock(Math.random()*10);
}while(rock[i].ran()<1);


do-whileループが繰り返されるたびに、
Rockクラスのインスタンスを生成するのはあまり良くないかも。
どうしてもdo-whileでやりたいなら

double rnd = 0.0;
do {
rnd = Math.random()*10;
} while (rnd < 1.0);
rock[i] = new Rock(rnd);

よく読んでないから問題の意図と違うかもしれんが。
657640:04/01/02 16:56
細かいところが結構参考になります
>>640
>>649の穴埋めじゃないといけないの?
659658:04/01/02 17:39
>>640じゃなくて >>401だった(´д`;)スマソ
import java.io.*;
class report1{
  public static void main(String[] args) throws IOException{
    int commandNO;
    String[] menu = {"","Guess","Janken","Other","Help","Quit"};
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    String commandName = null;
    while (true) {
      // メニューの表示
      System.out.println("Command List");
      for(int i = 1; i < menu.length; i++) { System.out.println(i + " " + menu[i]); }
      System.out.print("Command>");
      commandNO = Integer.parseInt(br.readLine());
      if (commandNO > 5) {
        break;
      } else if(1 <= commandNO && commandNO <= menu.length) {
        commandName = menu[commandNO];
        System.out.println("Execute: " + commandName);
      } else {
        commandName = "" + commandNO; // 問題に格納するとか書いてあるから一応
        System.out.println(commandName + "は範囲外だ( ゚Д゚)ゴルァ!!");
      }
      System.out.println(); // 見づらいので改行
    }
    System.out.println("Line Menu is over");
    br.close(); // 一応後始末
  }
}
660401:04/01/02 17:54
>>658
(;´Д`)ノ先生、エラーが100個出てどうしようもありません。
至るところに不正な文字ですとでてきまつ( ・ω・)
それともただ単にコピペするだけじゃだめだったんでしょうか・・・
多少弄りはしたのですけれど・・・
// >>660 これでどうですか?
// 見辛そうなのが気になるなら、>>659のコードを参考にタブか半角スペースで字下げすればOK
import java.io.*;
class report1{
public static void main(String[] args) throws IOException{
int commandNO;
String[] menu = {"","Guess","Janken","Other","Help","Quit"};
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String commandName = null;
while (true) {
// メニューの表示
System.out.println("Command List");
for(int i = 1; i < menu.length; i++) { System.out.println(i + " " + menu[i]); }
System.out.print("Command>");
commandNO = Integer.parseInt(br.readLine());
if (commandNO > 5) {
break;
} else if(1 <= commandNO && commandNO <= menu.length) {
commandName = menu[commandNO];
System.out.println("Execute: " + commandName);
} else {
commandName = "" + commandNO; // 問題に格納するとか書いてあるから一応
System.out.println(commandName + "は範囲外だ( ゚Д゚)ゴルァ!!");
}
System.out.println(); // 見づらいので改行
}
System.out.println("Line Menu is over");
br.close(); // 一応後始末
}
}
662401:04/01/02 18:21
実行は出来ましたが一つ問題がありました(;´Д`)
条件3)がどうやら満たされていないようです。
6以上の数字でもループを抜け出してプログラムが終了されてしまいまする
>>660
インデントを全角スペースにしてあるから、
全角スペース2個をタブに置換してください。
ああ、
条件1の コマンド>5 って
commandNO == 5 って事なのか。
commandNO > 5だと思ったよ。

      if (commandNO > 5) {
        break;
      } else if(1 <= commandNO && commandNO <= menu.length) {
        commandName = menu[commandNO];
        System.out.println("Execute: " + commandName);
      } else {
        commandName = "" + commandNO; // 問題に格納するとか書いてあるから一応
        System.out.println(commandName + "は範囲外だ( ゚Д゚)ゴルァ!!");
      }
の部分を、
      if(1 <= commandNO && commandNO <= menu.length) {
        commandName = menu[commandNO];
        System.out.println("Execute: " + commandName);
        if (commandNO == 5) { break; }
      } else {
        commandName = "" + commandNO; // 問題に格納するとか書いてあるから一応
        System.out.println(commandName + "は範囲外だ( ゚Д゚)ゴルァ!!");
      }
にしてちょ。
時計を表示させるJavaScriptのプログラムです
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>ディジタル時計</TITLE>
<META http-equiv="content-Type" content="text/html; charset=Shift_jis">
<SCRIPT language="JavaScript"></SCRIPT>
<META content="MSHTML 6.00.2800.1264" name="GENERATOR"></HEAD>
<BODY text="#000000" vLink="#666666" aLink="#f5cac7" link="#ee6ee6" bgColor="#ffffff" onload="inie04()">
<STYLE type="text/css">.clockstyle{
FONT-WEIGHT:900; FONT-SIZE:30px; COLOR:green; LINE-HEIGHT:33px; FONT-FAMILY:Arial; POSITION:absolute; TOP:40px; TEXT-ALIGN:center;
}
</STYLE>
<!--
//--HTMLをレイヤーの中へ出力する cross-browser Function
function outputLAYER(oj.html){
if(document.layers){
oj.document.open()
oj.document.write(html)
oj.document.close()
}
if(document.all){
oj.innerHTML=html
}
}
//--DHTML対応なら時計レイヤー作成
if(document.layers||document.all)
document.write('<DIV ID="clock" CLASS="clockstyle"></DIV>')
//--初期化
window.onload=inie04
var clockFlg=false
var clockId
function inie04(){
if(document.layers)ClockLay=document.layers.clock
if(document.all)ClockLay=document.all.clock
startclock()
}
//--start
funtion startclock(){
if(!clockFlg){
clockId=setIntercal('tick();clockFlg=true',1000)
}else{
clearInterval(clockId)
}
}
//--時計作成
function tick(){
var today = new Date()
var timeString = '<SPAN CLASS="clockstyle">'+today+'</SPAN>'
bunki(timeString)//出力先分岐へ
}
667664:04/01/02 18:34
訂正
お酒飲んでるから思考が・・・。

      if (commandNO > 5) {
        break;
      } else if(1 <= commandNO && commandNO <= menu.length) {
        commandName = menu[commandNO];
        System.out.println("Execute: " + commandName);
      } else {
        commandName = "" + commandNO; // 問題に格納するとか書いてあるから一応
        System.out.println(commandName + "は範囲外だ( ゚Д゚)ゴルァ!!");
      }
の部分を、
      if (1 <= commandNO && commandNO < menu.length) {
        commandName = menu[commandNO];
        System.out.println("Execute: " + commandName);
        if (commandNO == 5) { break; }
      } else {
        commandName = "" + commandNO;
        System.out.println(commandName + "は範囲外だ( ゚Д゚)ゴルァ!!");
      }
にしてちょ。
たびたびスマソ。
//--出力先分岐
function bunki(timeString){
if(document.layers||document.all)
outputLAYER(ClockLay,timeString)//--DHTML 対応ならレイヤーへ出力
else
status=today //--DHTML非対応ならstatus行へ出力
}
<!---->
<STYLE type="text/css">.posabs{
POSITION:absolute
;}
#test0 {
LEFT:100px; TOP:100ox
;}
#test1 {
FONT-SIZE:12px; LEFT:100px; FONT-FAMILY:Osaka,Arial;TOP:180px
;}
#msg0 {
FONT-SIZE:24pt; COLOR:dodgerblue
;}
</BODY>
</HTML></STYLE>
</HEAD>
</BODY>
</HTML>

=><BODY text="#000000" vLink="#666666" aLink="#f5cac7" link="#ee6ee6" bgColor="#ffffff" onload="inie04()">
の行で[オブジェクトが見つかりません]とエラーが出るんですがどうしたらいいのかわかりません
ご指導お願いします
669401:04/01/02 18:40
またまたすみません(;´Д`)
今度はそうすると問題ないのですが6だけは入力すると

Exception in thread "main" java.lang.ArrayIndexOutOFBoundsException:6
at report1.main(LineMenu.java:15)

というエラーが出てそのままプログラムが終了してしまいます。
7以降は全く問題ありませんでした。
670664:04/01/02 18:44
>>669

>>667みてちょ
>>665からJavaScriptの質問してる人へ

スレ違いです。
672401:04/01/02 18:56
>>664
すみません、ちょうど行き違いがあったようですね(;´Д`)
おかげさまで何ら問題なく実行&終了することが出来ました!!!
自分の知恵足らずのせいで、せっかくのお正月に時間を割かせてしまって
どうもすみませんでした。
そして、どうも有り難う御座いました〜!!!

あと、一人で10レス以上も消費して申し訳ありません。
この板の皆さんにこの場を借りてお詫び申し上げます。
海外掲示板用オフラインリーダーを作るスレ
http://pc2.2ch.net/test/read.cgi/tech/1072883528/

海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。

必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用
674 :04/01/03 00:56
3Dの棒グラフで、棒をクリックすると、棒に関する情報を表示
させたり、新しいグラフを表示させる、ということをできる
ようにしたいのですが、どう実装すればよいのかわからず
行き詰っています。どなたかご教授いただけないでしょうか?

3DグラフィックスのライブラリにはJava3Dを使用しており、
3Dの棒グラフは直方体で表現しています。
675デフォルトの名無しさん:04/01/03 14:43
『標準入力からテキストファイルを読み込み、単語を検出して辞書順に並べ、出現頻度を標準出力に出力しなさい。』
って宿題があるのですが分かる方お願いします。ソースプログラムから単語を検出するのですが、コマンド
プロンプトからファイル名を入力すれば、実行する形にするみたいです。
あと、検出に正規表現とかそういうのを使っていたと思うのですが・・・ 

CでもC++でも、自分全く分からない房なのでお願いします。

>>675
テキストファイルにどういう風に単語が入っているか教えれ。
677デフォルトの名無しさん:04/01/03 15:35
>>675
UNIX Command を組み合わせればすくなんだけど...
Cじゃなきゃだめ?
675では無いが

sort と uniq って事はすぐ分かったんだが
単語を抽出する は何を使うのか教えて下さい
679675:04/01/03 15:44
>>676-677
読み込むテキストファイルってのはソースプログラム自体のことらしくて、
int for などの予約語(?)とか i の出現頻度を並び替えるらしいのです。

あと、CかC++でお願いします。ご質問ありがとうございます。
680675:04/01/03 15:46
lex、flexを使っても良いらしいです。
681 :04/01/03 15:50
>675
このすれはJava用だよ?
C用のすれで聞いたほうが効率いいと思われ。
682675:04/01/03 15:53
>>682
C の宿題スレで相手にされないなら素直に諦めろ。
684デフォルトの名無しさん:04/01/03 16:05
>>683
お前には言う権利無し。どっか逝け。
本人降臨。
>>678
grep -o
687678:04/01/03 18:16
>>686 それが単語の抽出?
>>687
おまえは実行してみる という事すらできんのか?
>>688 もまえは「単語の抽出」と「show only the part of a line matching PATTERN」
は意味が違っているという事も理解できんのか?
>>675

import java.util.regex.*;
import java.io.*;
public class TestMain {
  public static void main(String[] args) throws Exception {
      BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
      String buffer = "", line = null;
      while((line = stdin.readLine()) != null) {
        buffer += line + "\n";
      }
      stdin.close();
      Pattern pattern = Pattern.compile("\".+\"|\\w+");
      Matcher m = pattern.matcher(buffer);
      WordCounter counter = new WordCounter();
      while (m.find()) {
        counter.count(m.group());
      }
      counter.show();
  }
}
691690:04/01/03 20:35
import java.util.*;
public class WordCounter {
  private Map hash = new HashMap();
  public void clear() { hash.clear(); }
  public void count(String word) {
    if (!hash.containsKey(word)) {
      hash.put(word, new Integer(0));
    }
    Integer count = (Integer)hash.get(word);
    hash.put(word, new Integer(count.intValue() + 1));
  }
  public void show() {
    Object[] key = hash.keySet().toArray();
    Arrays.sort(key);
    for (int i = 0; i < key.length; i++) {
      System.out.println((String)key[i] + ":" + (Integer)hash.get(key[i]));
    }
  }
}
692690:04/01/03 20:42
標準入力からって書いてあるから、
実行は「java TestMain < 単語が入ったファイル」で。

ソースコードはタブ1個を全角スペース2個に変換してあるから、
コピペしたなら、置換してね。

単語の定義がわからないので、
""で括られた文字列と[0-9_a-zA-Z]の連続を単語としました。
ただし、""は除く。
(手抜きな正規表現だから、たぶんバグあり)

上の記事のWordCounterだと、単語の辞書順に出力される。
出現頻度順に並べるなら、
WordCounterを次の記事のに差し替える。
693690:04/01/03 20:44
import java.util.*;
public class WordCounter implements Comparator {
  private Map hash = new HashMap();
  public void clear() { hash.clear(); }
  public void count(String word) {
    if (!hash.containsKey(word)) {
      hash.put(word, new Integer(0));
    }
    Integer count = (Integer)hash.get(word);
    hash.put(word, new Integer(count.intValue() + 1));
  }
  public void show() {
    Object[] set = hash.entrySet().toArray();
    Arrays.sort(set, this);
    for (int i = 0; i < set.length; i++) {
      System.out.println(((Map.Entry)set[i]).getKey() + ":" + ((Integer)((Map.Entry)set[i]).getValue()));
    }
  }
  public boolean equals(Object o1) { return false; }
  public int compare(Object o1, Object o2) {
    if ( ((Integer)((Map.Entry)o1).getValue()).intValue() < ((Integer)((Map.Entry)o2).getValue()).intValue() ) {
      return -1;
    } else if ( ((Integer)((Map.Entry)o1).getValue()).intValue() == ((Integer)((Map.Entry)o2).getValue()).intValue() ) {
      return -1;
    } else { return 1; }
  }
}
694675:04/01/03 21:50
>>690-693
本当にありがとうございます。スレ違いなのは承知なのですが
690さんのプログラムをCかC++でできないものでしょうか?
かなり失礼なのは分かるのですが、ぜひお願いします。
cat *.c *.cpp | grep -o -P '[_A-Za-z]\w*' | sort | uniq -c | sort -n


動くかどうか分からんが、

char buf[256];
int i;

for(int c=0;c!=-1;){
 for(i=0, c=getchar(); 'a'<=c && c<='z'; buf[i++]=c, c=getchar()) ;
 buf[i] = '\0';
 printf("%s", buf);
}
>>686
どうしても grep -o が使いたいんじゃなけりゃ、 tr か sed 使ったほうが楽じゃない?
697690:04/01/03 23:57
今気づいたが、
C/C++の宿題スレで既に解答が出てるんじゃないの?
698675:04/01/04 07:13
そのスレのアドレスぺたっと張ってくれればありがたいです。
699質問:04/01/04 10:35
C/C++で乱数の生成をする際の条件として、
0〜1までの間で100個の乱数を生成し、さらにその総和が1となるように
するためにはどうすればよいのでしょうか??


>>699
スレ違い。ここは Java の宿題スレだ。
double randTbl[100], total;
int i;

total = 0.0;
for (i=0; i<100; i++) {
 randTbl[i] = (double)rand();
 total += randTbl[i];
}
for (i=0; i<100; i++) {
 randTbl[i] /= total;
}

これでどうだろう
702お願いします:04/01/04 12:52
3Dの棒グラフで、棒をクリックすると、棒に関する情報を表示
させたり、新しいグラフを表示させる、ということをできる
ようにしたいのですが、どう実装すればよいのかわからず
行き詰っています。どなたかご教授いただけないでしょうか?

3DグラフィックスのライブラリにはJava3Dを使用しており、
3Dの棒グラフは直方体で表現しています。
>>698
おめーが自分で張ったスレだ。
>703
GUI関連だしマルチ
>>642 >>653 >> 674 >>702
いい加減何回も投稿するのヤメレ。
実装方法がわからないって事は、設計は出来ているって事か?
棒グラフが表示できないのか?
表示した棒グラフのクリック判定ができないのか?
棒グラフの情報を得ることができないのか?
新しいグラフを表示できないのか?

どこまで出来てどこが出来ないのかハッキリしてくれ

ついでに 棒に関する情報、新しいグラフ と言われても
こっちには何のことかわからん。
706675:04/01/04 13:43
>>703
てめーはさっさと死んだほうがいいよ。ってか市ね、糞。
707デフォルトの名無しさん:04/01/04 14:26
>>705
丸投げ大歓迎と書いておいてその態度かよ?
ジャロに訴えるぞ!!
>>706
指摘されたくらいでキレルのか
自分が最初に質問したスレッドの519あたりをみてみろ
お望みのC++の解答がでてるんじゃないのか?
それが嫌なら
>>690が書いたプログラムをC++のスレに持っていって
これをC++にしてくれって言えばいいんじゃないのか?
C++宿題スレみたけど、問題だけ出して、解答が出かけてるのに
その後自分で何も要望出してないだろ
自分が反応しないで、放置されてるとかお門違いじゃないのか?
>>707
ついでに言うなら丸投げ大歓迎と書いてあるかもしれないが、
GUI関係は面倒なので放置と書いてあるぞ?

それにどんなデータを表示するかもわからないのに、ただ表示しろと言われても
丸投げするなら、問題文をそのまま載せろ

>>705の質問に答えれば進展するかもしれんのに、
おまいは逆切れして拒否しとるわけだ
710690:04/01/04 16:29
>>675
ただでさえスレ違いなのに 指摘されたくらいで怒るな。
んでCでプログラム書いたけど、スレ違いだからな。
>>708が言ってるとおりC/C++宿題スレには反応してないみたいだし、
どこに張ればいいんだ?
711702:04/01/04 18:06
>705
707を書いた人と僕は別人です。
すみません、ご指摘の通り、質問が抽象的すぎました。

家に着いたら具体的に書き直します。
712デフォルトの名無しさん:04/01/04 20:07
>>710
Cのプログラム晒して。
713702:04/01/04 21:50
たとえば、AさんとBさんが同じテストを10回受けて、
そのデータをcsv形式にあらわしたものが下記の通りだったとします。

名前、テストの回数(1回目か2回目か)、テストの点数 、前回比、前回比(%)
A , 1 , 95 , 0 , 0.00
A , 2 , 70 ,-25 , -35.71


B , 1 , 80 , 0 , 0.00
B , 2 , 75 ,-5, -6.25

このcsv形式のデータを読みとり専用のプログラムと、その読み込んだデータ
に応じて3Dの棒グラフを表示させるプログラムは自分で作ることができました。
ただ、今の状態だと棒グラフをただ表示させただけで、どの棒が誰の成績の変化率を
表しているのか、ということがわかりません。
そこで、棒をクリックすることによって、その棒は誰の点数を表しているのか、
その人のこれまであったテストの点数の軌跡を表す2Dのグラフを表示させたい
と考えています。
2Dのグラフは自分でつくることができました。
ですので、あとは表示させた棒グラフの各棒に対するクリック判定と、棒グラフの情報を
得る、そして新しいグラフを表示させる、という部分を実装したいのですが、
どうやればいいのかわからず、詰まってしまっています。
そこで、教えていただきたく投稿しました。

名前、テストの回数、テストの点数は、それぞれ、namae[],kaisuu[],tensuu[]
という配列に組み込んでいます。
3Dバーチャートは棒グラフを表わす棒を直方体で表現する、という方法で
表示させています。
3DグラフィックスのライブラリにはJava3Dを使用しています。

棒には名前(Aさん、Bさん)がつけられていて、コマンドラインから入力した
テストの回数での2人の成績の変化率(前回の成績からの変化率)を表示させています。
次の計算をするプログラムを御願いします。

n=100として、

n-1
シグマ{sin(2パイi/n)+sin(2パイi/n * 2)}
i=0

です。おねがいちます。
715690:04/01/04 23:00
>>714

public class Main2 {
  public static void main(String[] args) {
    int n = 100;
    double sum = 0.0;
    for (int i = 0; i < n; i++) {
      double a = 2.0 * Math.PI * i / n;
      sum += Math.sin(a) + Math.sin(a * 2);
    }
    System.out.println(sum);
  }
}
>>713
画面はこんな感じか?
??????????
コマンドラインから入力された値をnとする。
・最初の画面
 Aのn回目の前回比 の棒
 Bのn回目の前回比 の棒
・新しい画面(Aの棒をクリックしたとする)
 Aの1?n回目のテストの点数の2Dグラフ
??????????
Java3Dはさわったことないので、3Dゲームプログラミングの要領になるけど勘弁。
・棒のクリック判定について
表示しているものをオブジェクトとして扱い、マウスのクリックイベント(X、Y)を拾って、
それが今表示している3D空間のどの位置に当たるかを判定する。
棒の表示ができているということは、棒が作れているわけで、
棒が作れているということは、棒を作成するにあたって使用した情報(直方体の情報(直方体の縦・横・高さ・X座標・Y座標・Z座標))はわかっているわけで、
その情報の透視変換結果とマウスのX、Yから交差判定しる。
・棒グラフの情報を得る
これは、クリックした棒がAの棒なのか、Bの棒なのかということだと思うので、
棒をオブジェクトとして扱えば、クリック判定した時にわかるはず。
マウスクリック → Aをクリックしたのか判定 → Bをクリックしたのか判定
・新しいグラフを表示させる
新しいグラフは2Dで既に表示できているということなので、何ができないのかわからない。
新しいグラフは新しいウインドウで表示させるため、新しいウインドウの作り方がわからないのか?
それとも、新しいグラフを描画するのに必要な情報を渡すことができないのか?
または・・・。
データの持ち方もあまりスマートじゃない。
CSV形式のデータは1行でひとまとまりなので、それをオブジェクト化する。
class TestInfo {
public String name; // 名前
public int n; // 何回目のテストか
public int score; // 点数
public double ...
}
このようなオブジェクトから、棒グラフに関するオブジェクトを作成する
class CubeInfo {
public String name; // A or B
public double x, y, z; // 表示する場所
public double width, height, depth; // 棒の横幅、高さ、奥行き
public Cube ...
}
そしてCubeInfoを用いて3Dグラフを表示する

・最初のグラフの表示
//TestInfoからCubeInfoを作成
CubeInfo cinfo_a = new CubeInfo(getTestInfo("A", n));
CubeInfo cinfo_b = new CubeInfo(getTestInfo("B", n));
Java3Dのメソッドで適当に表示

クリック判定したら、cinfo_aかcinfo_bのいずれかが帰ってくるようにする
判定の結果、AかBかわかるので、
TestInfoのAかBの関する情報を2Dグラフで表示。
718702:04/01/05 03:56
>716、717
ありがとうございます。とても助かります。
表示される画面については、716に書かれていた通りです。

>・棒のクリック判定について
直方体の情報の透視変換結果の意味が理解できていないので、
補足していただけませんか? お願いします。
マウスの位置判定は、いくつかそれについて書かれているページを見つけた
ので、今から勉強しようと思います。
あと、もしかしたら"図形の中に指定した座標の点が入っているかどうか"
という事を調べるメソッドがあるかもしれないので、今日本屋で探してみます。

>・新しいグラフを表示させる
すみません、まだ投稿内容があいまいでした。
棒をクリックしたときに、新しいグラフを新しいウインドウで表示させるため、
新しいウインドウの作り方がわからない、ということでした。
ただ、まだ実装できていませんがAWTのWindowクラスを使えば
この点はなんとかなりそうです。
新しいグラフを描画するのに必要な情報を渡すことについてもなんとなく
イメージは沸いているので、何とかなると思います。
ここを参照すれば それっぽい事が書かれているかもしれない。
ttp://www.ics.kagoshima-u.ac.jp/~fuchida/research/3d/java3d-topics/

上のURLに書いてあることをすればよさげなので、
ネイティブにコードを書く必要はなくなったから、説明は適当にします。
間違ってるかもしれません。

あなたは今テレビ(直方体)を見ているとします。
あなたの視界(カメラの視界)にはテレビとビデオデッキが写っています。
何か音がしたので、音をした方向を見ました(首(カメラ)を右に30度くらい回しました)
その時、あなたの視界に写っているテレビはどうなりましたか?
視界の左に行ったと思います。
テレビが置いてある場所(座標)は変わらないのに、あなた(カメラ)が動くと見える情報が変わります。
あなたが見ている映像は3D空間の情報を写真にとったように2Dで写っているはず。
つまり 3D空間を視点にあわせて画用紙(2D)にボトッと落とした感じです。

今思ったら透視変換はいらないかもしれん。

次に、テレビに向かって指を指してみて下さい。
今度は肩が視点です。
なんとその指からビームが出ました。
ビームの軌道は肩と指先(マウスクリック位置)を結んだ直線上です。
そのビームはテレビ(直方体)に当たりましたか?
指先は3D空間にあるのに、マウスクリック位置は2Dでしか取得できない。
これは最初に書いた方の文を参考に(ならないと思うけど(´ω`))

こんな感じで。

まぁただの行列変換なんだけど。
720690:04/01/05 18:32
>>693
どうでもいいけど微妙に間違ってた。
compareの == の部分のreturn は-1じゃなくて0だ。
すいません質問なのですが
String [] array = new String[]{ "a", "b", "c", "d", "e",
"a", "b", "c", "d", "e",
"a", "b", "c", "d", "e" };



String [] array2 = new String[]{ "a", "a", "a",
"b", "b", "b",
"c", "c", "c",
"d", "d", "d",
"e", "e", "e" };

のように縦横を反転させるようなプログラムを組みたいのですが
どのように書けばいいのでしょうか
>>721
縦横以前に 配列がフラットなんだけど?
723デフォルトの名無しさん:04/01/06 09:44
>>675
○本助教授に通報しますた!
>>722
1次元配列を2次元に見立てて行列として利用して、
それの転置を求めたいってことだろ。

String[] array1 = new String[]{
"a", "b", "c", "d", "e",
"a", "b", "c", "d", "e",
"a", "b", "c", "d", "e" };
int width = 5;
int height = 3;

String[] array2 = new String[width * height];

for(int i=0; i<width; ++i)
for(int j=0; j<height; ++i)
array2[3 * i + j] = array1[5 * j + i];
>>724

for(int j=0; j<height; ++i)
++i → ++j


width=5, height=3って使ってるんだから
array2[3 * i + j] = array1[5 * j + i];

array2[height * i + j] = array1[width * j + i];
726721:04/01/06 20:03
>>724-725
ありがとうございます!
説明足らずだったのに補足して頂いてしまってすいません
おかげさまですっきりできました。

便乗で質問になってしまうのですが
こ〜いう処理の流れっていうのですかね、このような
流れを勉強するいい本とかってないでしょうか。
勝手な申し分ではありますが、あんまり処理の流れについて載ってる
本がありませんですんで・・・できればでいいのでお願いします
>>726
こんなのは自分で考えるしかないだろ。
やっていくうちに、慣れていく。

どうしても本でって言うなら、
例題集みたいな奴をやってみればいいんじゃない?
728デフォルトの名無しさん:04/01/07 01:00
初心者なのですが、
今、中央値、最頻値、平均値を出すプログラムを作りたいのですが
うまくいきません。
public int getHeikin(int data[])
public int getMedian(int data[])
public int getMode(int data[])
というメソッドを使ったToukeiクラスのプログラムを作成して頂けないでしょうか?
自分でも作成はしてみたのですがうまくいきません…、どなたかよろしくお願いします。

729デフォルトの名無しさん:04/01/07 01:03
↑忘れてました。
例は
データを入力してください
10
20
10
30
10
(平均値:##メジアン:##モード:##) このような感じです
>>728
どううまくいかないんだよ・・・
>>728
>自分でも作成はしてみたのですがうまくいきません

作成したものを出しなさい。
うまくいかないって、何がうまくいかないんだ?
732デフォルトの名無しさん:04/01/07 04:17
下の例外って0で割っているって言う意味ですよね?
分母は0にはならないはずなんですが

java.lang.ArithmeticException: / by zero
at MyCanvas.paint(CanvasDemo.java:48)
at sun.awt.RepaintArea.paint(RepaintArea.java:177)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:260)
at java.awt.Component.dispatchEventImpl(Component.java:3678)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
read.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
>>732
分母が0にならないはずだからといって、分母が0ではないことにはならない。
734デフォルトの名無しさん:04/01/07 12:16
>733
どういうことでしょう?
よくわからないです
735728:04/01/07 12:36
import java.util.*;
import java.io.*;
class Toukei {
public int getHeikin(int op1) {
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
int heikin = 0;
int sum = 0;
int op2[] = new int[100];
try {
for(int i = 0;i < op1;i++) {
op2[i] = Integer.parseInt(br2.readLine());
sum =+ op2[i];
}
}
catch(Exception io) {
System.out.println("エラーです");
}
heikin = sum/op1;
return heikin;
}

736728:04/01/07 12:39
public int getMedian(int data[]) {
int median = 0;
int mid = 0;
mid = (data.length) / (2);
if(data.length % 2 == 0) {
median = (data[mid] + data[mid-1]) / (2);
} else {
median = data[mid];
}
return median;
}
737728:04/01/07 12:41
public int getMode(int data[]) {
Arrays.sort(data);
int mode = 0;
int mCount = 0;
int j = 0;
int cnt = 0;
for(int k = 0;k < data.length;k = k + cnt) {
cnt = 1;
for(j = k + 1;j < data.length;j++) {
if(data[k] == data[j]) {
cnt = cnt + 1;
} else {
break;
}
}
if(cnt > mCount) {
mode = k;
mCount = cnt;
}
}
return mode;
}
738728:04/01/07 12:41
public static void main(String args[]) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int op1 = 0;
try {
System.out.println("データの総数を入力してください");
op1 = Integer.parseInt(br.readLine());
System.out.println("");
}
catch(Exception io) {
System.out.println("エラーです");
}
System.out.println("データを入力してください");
int data[] = new int[op1];
Toukei tk = new Toukei();
int heikin2 = tk.getHeikin(op1);
int median2 = tk.getMedian(data);
int mode2 = tk.getMode(data);
System.out.println("平均値:" +heikin2 +"メジアン:" +median2 +"モード:" +mode2);
}
}


739728:04/01/07 12:45
すいませんこれがプログラムです。
上の四つの書き込みが全文です。見にくくて申し訳ないです。
本文でデータ総数を入力してメソッドごとにその計算式を置いて、
出た数値を戻して、出力っていうのが要約なんですが、
エラーもなく動くのですが平均値その他の数値がおかしい
(平均値以外は0になる平均値も3とか2とか…)ので
見てくださるとうれしいです。
>>734
動くはずのプログラムを動かせられないのに、どうして0にならないはずのものが0にならないと言い切れる?
>>739
> 平均値以外は0になる
getHeikin() で op2[] に数値を入力しているけど、当然ながらそれは data[] ではないので
入力した値がgetMedian()やgetMode()に渡されていない。

> 平均値も3とか2とか…
sum = sum + op2[i]; を代入演算子使って表すなら sum += op2[i];


メジアン求めるときはソートしとかないとだめかと。
今のままならデータ数3で、20、10、30の順で入力されると10がメジアンで返される。

モードのとこで k って配列の添え字でしょ? mode = k して添え字をreturnしちゃだめでしょう。。
742728:04/01/07 22:50
>>741さん
sumのところはすぐに直せましたが
他のところをどう直せばよいか具体的に提示してもらえませんか…。
ほんと何度も聞いてばっかですいません…。

>>742
import java.io.*;
import java.util.*;
public class Toukei {
int getHeikin(int[] data){
int heikin = 0;
int sum = 0;
for (int i = 0; i < data.length; i++){
sum += data[i];
}
heikin = sum / data.length;
return heikin;
}

int getMedian(int[] data){
Arrays.sort(data);
int median = 0;
int mid = 0;
mid = data.length / 2;

if(data.length % 2 == 0) {
median = (data[mid] + data[mid-1]) / 2;
} else {
median = data[mid];
}

return median;
}
int getMode(int[] data){
Arrays.sort(data);
int mode = 0;
int mCount = 0;
int j = 0;
int cnt = 0;

for(int k = 0;k < data.length;k = k + cnt) {
cnt = 1;
for(j = k + 1;j < data.length;j++) {
if(data[k] == data[j]) {
cnt = cnt + 1;
} else {
break;
}
}

if(cnt > mCount) {
mode = k;
mCount = cnt;
}
}
return data[mode];
}
public static void main(String[] args){
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("データの総数を入力してください");
int op1 = Integer.parseInt(br.readLine());
int[] data = new int[op1];
System.out.println("データを入力してください");
for ( int i = 0; i < data.length; i++){
data[i] = Integer.parseInt(br.readLine());
}
Toukei tk = new Toukei();
int heikin = tk.getHeikin(data);
int median = tk.getMedian(data);
int mode = tk.getMode(data);
System.out.println("平均値:" + heikin +"メジアン:" + median +"モード:" + mode);
}
catch (Exception e){
System.out.println("エラーです");
}
}
}
html:
<html>

<form ・・・・>
<input type="text" name="car"/>      @
<input type="submit" value="open"/>  A
<input type="submit" value="close"/>  A

</html>

servlet:
色々省略
String tmp = request.getParameter("car"); @

と書けば@の場合テキストにある文字をtmpに取得することが
できると思うのですがAの場合はどうやってopenやcloseを
取得したらよいのでしょうか?この後if文で下のように分岐
させようと思っています。
if(tmp2="open"){
}
else if(tmp2="close"){
}

結局何が知りたいのかと言いますとサーブレットで初期画面に
ボタンが複数ある場合どうやってどのボタンを押したかを
判断するのかということです。教えてくださいm( )m
>>746
name属性を指定しる!

(例)
<input type="submit" value="open" name="opr" />
<input type="submit" value="close" name="opr" />
>>747
なるほど(・∀・)
ありがとうございます。
749138〜140:04/01/10 18:55
1変数の常微分方程式をルンゲ・クッタ法を用いて
解くためのプログラムの解法例を誰か教えてください。
お願いします。お願いします。
GUIはいりませんので
750デフォルトの名無しさん :04/01/10 19:19
age
駄目だよく分からない_| ̄|○川

(例)
<input type="submit" value="open" name="opr" />
<input type="submit" value="close" name="opr" />

String tmp = request.getParameter("opr");

と書いたとしてopenボタンを押すとtmpには
openという文字列が入る・・・という意味なん
でしょうか?

でそうならif文は

if(containsKey(tmp)==open)

でよござんしょうか・・・・??
ど素人すぎてすいません、教えてください_| ̄|○
>>751
実際に実行してみればいいじゃん・・・。

>String tmp = request.getParameter("opr");
> (略)
>openという文字列が入る・・・という意味なんでしょうか?

その通り。

>でそうならif文は
>if(containsKey(tmp)==open)

なぜcontainsKeyがでてくるのかがわからん・・・。

if (tmp.equlas("open")) {
} else if (tmp.equlas("close")) {
}

>>752
物凄くヨコレスですが、そういう比較する時は、tmpがnullである
場合の例外送出を避けるために

"open".equals(tmp)

と書くと良いですよ。
754754:04/01/11 07:30
穴埋め問題なんですがよく分かりません。(???)のところが埋めるところです
頼んます

class QuizTimer extends Thread{
boolean yet_ans=true;
boolean over=false;

public void run(){
for(int i=0;i<10&&yet_ans;i++){
try{
sleep(1000);
}catch(InterruptedException e){
}
}
if(???){
System.out.println("10秒経過");
over=true;
}
}
755754:04/01/11 07:32
boolean isOver(){
return over;
}

public void answer(){
yet_ans=false;
}
}

756754:04/01/11 07:35
class Quiz2{

public static void main(String[]args)throws IOException{
int question_num=5;
Question[]q=new Question[question_num];
BufferedReader br=
new BufferedReader(new InputStreamReader(System.in));

q[0]=new Question("xxxxxxx”);
q[1]=new Question("xxxxxxx");
q[2]=new Question("xxxxxxx");
q[3]=new Question("xxxxxxx");
q[4]=new Question("xxxxxxx");
System.out.println("回答してください");
int score=0;
for(int i=0;i<question_num;i++){
Question current=q[i];
QuizTimer qt=new QuizTimer();
(???)
757754:04/01/11 07:36
System.out.println(current.question);
System.out.print(">");
if(br.readLine().equals(current.answer)){
if(!qt.isOver()){
System.out.println("正解です");
score+=current.point;
}else{
System.out.println("正解ですが時間オーバーです");
}
}else{
System.out.println("不正解です");
}
                      (???)
758754:04/01/11 07:36
System.out.println();
}
System.out.println(score+"点です");
}
}

class Question{
String question;
String answer;
int point;
Question(String q,String a,int p){
question=q;
answer=a;
point=p;
}
}
>>754
テストデータ:
q[0]=new Question("a?","a",1);
q[1]=new Question("b?","b",2);
q[2]=new Question("c?","c",3);
q[3]=new Question("d?","d",4);
q[4]=new Question("e?","e",5);

上から
Q1:yet_ans
Q2:qt.start();
Q3:qt.answer();

こんな感じでよいのかな?
760754:04/01/11 18:43
>>759
早速やってみたんですがメソッドエラーが出ます
mainメソッドが間違ってるようなのですがどこか間違ってるでしょうか?
>>754
エラーメッセージもかかずに、エスパー募集ですか?
762754:04/01/11 20:07
>>761
エラー内容はこんな感じです
調べた限りではmainメソッドが間違ってるということだったんで書きませんでした。すみません
java.lang.NoSuchMethodError: main
Exception in thread "main"
763728:04/01/12 02:09
>>741さんへ
遅くなりましたが、課題をやっていただいてありがとうございました。
また何かあるかもしれないのでよろしくです!!
764デフォルトの名無しさん:04/01/12 02:29
>>762
念のため聞くけど、それどうやって実行した?
まさか java QuizTimer じゃないよね?

何にしても、その書き込みでは情報不足だが。
そもそも、まともに実行したら>>762のようなエラーが出るわけはないので、
なにかまともではない実行のさせかたを>>762がしたと解釈するのが自然なわけで、
そして、>>762以外の誰にも、そのまともではない実行のさせかたはわからないわけで、
だから、>>762はどのように、実行したのかを書いたほうがいいとおもうわけで、(略

java Quiz2 で実行してみてはどうかな?
765デフォルトの名無しさん:04/01/12 02:32
>>756
String[]args

] と argsの間に半角スペースがないのが原因ではないかな?
766754:04/01/12 03:11
ファイル名を適当につけてそのまんまコンパイルしてました_| ̄|○
初歩的なミスで手間取らせてスマンです
>>759さんと助言くれたみなさんありがとう。無事動きました
767問題:04/01/12 13:43
課題 任意の.wavファイルを与えその波形データをExcelでグラフ表示する
   ために.wavデータをCSV形式に整形するアプリケーションを完成させよ。

プログラム作成時の制限について
・.wavファイルのバイナリ→csv化に関して次のプログラムを使用してよい。
  http://www.vector.co.jp/soft/win95/util/se238236.html
 つまりこのプログラムが生成したcsvデータをexcelで処理できるよう整形するのが課題。
waveデータについて
・.wavファイルは44.1kHz,16bit,ステレオ固定だが長さ(つまりサイズ)は不定
書き出すCSVデータについて
・列は左チャンネル、右チャンネルに分ける
・EXCELが65536行までしか扱えないため、65536行に達したら別列に移行する必要がある
・EXCELが10進数以外で計算できないため16進数から10進数に変換する必要がある
・後のLessonのために値を0(最小値)から5.0(最大値)までに変換する
課題の達成について
・EXCELを用いグラフ表示させたデータが音声処理ソフトの波形と一致した時点で
 課題達成とする。なおこのプログラムは以降のLessonで使用するため必ず保管しておくこと!
補足へ続く
ひどい問題だな。
769問題 補足:04/01/12 14:08
最終的に書き出すcsvファイルは

左チャンネル,右チャンネル,左チャンネル65537行目,右チャンネル65537行目,…
左チャンネル2行目,右チャンネル2行目,左チャンネル65538行目,右チャンネル65538行目,…

左チャンネル65536行目,右チャンネル65536行目,…

という形。
データチャンク部分を取り除く必要がある。
参考
waveファイルのデータ形式
ttp://black.sakura.ne.jp/~third/system/winapi/mm10.html

手順としては
・bincsvを用いcsvに変換
(これ以降の作業をアプリケーションを作成して実行させる)
・データの実際のスタート部分まで削除
・♯chg,'hアドレス,各値の'hを削除
・隣り合うデータの値を直結
・データの値を10進数に変換(0−65536になる)
・データの値を最大5.0に相対変換(0-5.0)
・指定したデータ形式に並べ替えし、ファイル出力
(以上までの処理を行う)
770デフォルトの名無しさん:04/01/15 00:51
アプレットで、再起を使って

円の中にn個の円を描く。
さらにそれぞれの円の中にn個の円を描く
それm回繰り返す

って言うプログラミングが全然わかりません。n,m=5として、どうにかならないでしょうか?
お願いします。
>>770
受け売りの上に誤字かよ。「再帰」だよ
しかもルールくらい書いたらどうだい・・・
円をどう並べたらいいんだ?
772770:04/01/15 01:25
すいません。
中の円は外の円の円周に内接するように書きます。
で、中の円はそれぞれ外接します。
どうでしょうか?よかったらお願いします。
できた

public void paint(Graphics g) {
 draw(g, X, Y, R, N, M);
}

public void draw(Graphics g, double x, double y, double r, int count, int level) {
 //x, y を中心に半径rの円を描く
 g.drawArc((int)(x-r), (int)(y-r), (int)(r*2), (int)(r*2), 0, 360);
 if (level != 0) {
  //x, y を中心とした半径rの円「大円」に、
  //半径sの円をcount個並べる
  //それぞれの小円同士が接し、かつ小円が大円と接するなら、
  //小円の半径 s は s = r / (1/sin(π/count) +1) となる
  //何でかは図を書けば分かる
  double s = r / ( 1.0/Math.sin(Math.PI/(double)count) + 1.0);

  //小円の中心は大円の中心から r - s 離れたところにある
  //それぞれの中心、および上で求めた半径 s を用い、rest を減らして再帰的呼び出しを行う
  for (int i=0; i<count; i++) {
   //真上から時計回りに・・・y軸が逆なのでこうなる
   double u = r - s;
   double t = Math.PI*1.5 + Math.PI*2.0*(double)i/(double)count;
   double xx = x + u*Math.cos(t);
   double yy = y + u*Math.sin(t);
   draw(g, xx, yy, s, count, level-1);
  }
 }
}
あとは Applet を継承してこいつを実装するか、
あるいはこいつを実装した Canvas か何かを Applet に配置するか
(どっちかと言えば後者の方がいい)
それも知りたい?
//小円の中心は
から修正

//小円の中心は大円の中心から r - s 離れたところにある
double u = r - s;
for (int i=0; i<count; i++) {
 //小円の中心を、大円の中心の真上から時計回りに・・・y軸が逆なのでこうなる
 double t = Math.PI*1.5 + Math.PI*2.0*(double)i/(double)count;
 double xx = x + u*Math.cos(t);
 double yy = y + u*Math.sin(t);
 //それぞれの中心、および上で求めた半径 s を用い、level を減らして再帰的呼び出しを行う
 draw(g, xx, yy, s, count, level-1);
}

見てると蓮乳みたいで気持悪いな
776442:04/01/15 01:50
>>773,774
ありがとうございます!
Appletを継承して実装するほうの方法はわかってるんで大丈夫です。
全く方向性もわからなかったんで、ホント助かりました。
あっさり出来てしまうなんてすごいですね。
本当にありがとうございました。
ほんとに宿題だったら
>//何でかは図を書けば分かる
ここを説明できないとまずいと思うよ
778770:04/01/15 01:56
>//何でかは図を書けば分かる
この部分はプログラム見ながら自分できちんと考えて見ます。
ありがとうございました。
>>773
> //何でかは図を書けば分かる
距離(小円1の中心->小円2の中心) == 2*小円の半径
を解いたら
//小円の半径 s は s = r / (1/sin(π/count) +1) となる
になったけど…

図を見ればわかるもんなのか?
>>779
なんにしろ、解くのに図は必要でしょ?
ひょっとして俺、回りくどく解いたかな?
結局、こう解いたよ。

大円の中心O, 小円1つの中心P、その小円と隣の小円との接点Q からなる三角形は、直角三角形になる。
OP = (r - s)、 PQ = s、角POQ = 2π/count/2 だから、(r - s) sin(π/count) = s の関係になる

もう一つ多角形2つの辺の長さの比を考えるやり方もあるけど。
>>781
そっちの方が簡単だった。

>>779 の式を解くのに30分くらいかかってるし。
783NAO:04/01/16 11:42
このRMIプログラムを、RMIを用いずにSocketプログラミングで実現しろという課題なんですがお願いします。
/* RMulti.java */
import java.rmi.*;
public interface RMulti extends Remote {
double getMulti(double x, double y,int a) throws RemoteException;
}

784NAO:04/01/16 11:43
/* RmultiServer.java */
import java.rmi.*;
import java.rmi.server.*;
public class RMultiServer extends UnicastRemoteObject implements RMulti{
public RMultiServer()throws RemoteException{}
public double getMulti(double x, double y,int a)throws RemoteException{
if(a==1){
return x+y;
}
else if(a==2){
return x-y;
}
else if(a==3){
return x*y;
}
else
return x/y;
}
public static void main(String argv[]){
System.setSecurityManager(new RMISecurityManager());
try{
RMultiServer r = new RMultiServer();
Naming.rebind("rmi://localhost/MultiServer",r);
System.out.println("Serverが起動しました.");
}catch(Exception e){e.printStackTrace();
}
}
}
785NAO:04/01/16 11:45
RmultiClient.java
import java.rmi.*;
import java.awt.*;
import java.awt.event.*;

public class RMultiClient extends Frame implements ActionListener{
static String s="";
TextField tf1,tf2,tf3;
Button b,c,d,e,f,g;
RMultiClient(){
super("計算");
setLayout(new FlowLayout());
tf1=new TextField("",10);
tf2=new TextField("",10);
tf3=new TextField("",10);
tf1.setBackground(Color.white);
tf2.setBackground(Color.white);
tf3.setBackground(Color.white);
786NAO:04/01/16 11:45
add(new Label("x="));
add(tf1);
add(new Label("y="));
add(tf2);
add(new Label("z="));
add(tf3);
Button b=new Button("足し算");
add(b);
b.addActionListener(this);
addWindowListener(new WinAdapter());
Button c=new Button("引き算");
add(c);
c.addActionListener(this);
addWindowListener(new WinAdapter());
Button d=new Button("掛け算");
add(d);
d.addActionListener(this);
addWindowListener(new WinAdapter());
Button e=new Button("割り算");
add(e);
e.addActionListener(this);
addWindowListener(new WinAdapter());
}
787NAO:04/01/16 11:46
public static void main(String[] ar){
RMultiClient f=new RMultiClient();
f.setSize(400,150);
f.setBackground(Color.blue);
f.show();
}

class WinAdapter extends WindowAdapter{
public void windowClosing(WindowEvent we){System.exit(0);
}
}
788NAO:04/01/16 11:46
public void actionPerformed(ActionEvent ae){
String s1=null,s2=null,s3=null;
if(ae.getActionCommand()=="足し算"){
try{
s3="1";
s1=tf1.getText();
s2=tf2.getText();
RMulti r=(RMulti)Naming.lookup("rmi://localhost/MultiServer");
s=""+r.getMulti(Double.valueOf(s1).doubleValue(),Double.valueOf(s2).doubleValue(),Double.valueOf(s3).intValue());
repaint();
tf3.setText(s);
789NAO:04/01/16 11:54
}catch(Exception e){}
}
else if(ae.getActionCommand()=="掛け算"){
try{
s3="3";
s1=tf1.getText();
s2=tf2.getText();
RMulti r=(RMulti)Naming.lookup("rmi://localhost/MultiServer");
s=""+r.getMulti(Double.valueOf(s1).doubleValue(),Double.valueOf(s2).doubleValue(),Double.valueOf(s3).intValue());
repaint();
tf3.setText(s);
}catch(Exception e){}
}
else if(ae.getActionCommand()=="割り算"){
790NAO:04/01/16 11:55
try{
s3="4";
s1=tf1.getText();
s2=tf2.getText();
RMulti r=(RMulti)Naming.lookup("rmi://localhost/MultiServer");
s=""+r.getMulti(Double.valueOf(s1).doubleValue(),Double.valueOf(s2).doubleValue(),Double.valueOf(s3).intValue());
repaint();
tf3.setText(s);
}catch(Exception e){}
}
}
}
たいへん長く申しわけありません。どなたかお願いします。
>>790
確かに長いので要点だけまとめた。(クラス4つ)
public class RSocket {
private static final String SERVER = "localhost";
private static final int PORT = 32432;

public static void main(String[] args) {
try {
//サーバ起動
new Thread(new RSocketServer(PORT)).start();

//GUI からこう得られたとして
double x = 10.0, y = 20.0;
int a = 2;
//計算する必要性が出たので、ソケットを開いてくれるインスタンスを用意
RSocketClient client = new RSocketClient(SERVER, PORT);
//このインスタンスは指定のサーバに聞いて答えを返してくれる
double answer = client.getMulti(x, y, a);

//答え
System.out.println(answer);
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
class RSocketClient {
Socket s;

public RSocketClient(String server, int port) throws IOException {
s = new Socket(server, port);
}

public double getMulti(double x, double y, int a) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
//サーバので方を待つ
in.readLine();
//質問する
out.println("" + x + "," + y + "," + a);
out.flush();
//答え得る
double answer = new Double(in.readLine()).doubleValue();
//一応例でもいっておく
out.println("Thank you!");
out.flush();
//切る
s.close();
return answer;
}
}
//アクセス待ち用の Runnable
class RSocketServer implements Runnable {
ServerSocket ss;
public RSocketServer(int port) throws IOException {
ss = new ServerSocket(port);
}

public void run() {
try {
while (true) {
Socket s = ss.accept();
new Thread(new SocketConnection(s)).start();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
//複数クライアント並行処理用の Runnable
class SocketConnection implements Runnable {
BufferedReader in;
PrintWriter out;
public SocketConnection(Socket s) throws IOException {
in = new BufferedReader(new InputStreamReader(s.getInputStream()));
out = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
}
public void run() {
try {
//準備OK
out.println("OK");
out.flush();
//質問を待つ
String q = in.readLine();
StringTokenizer st = new StringTokenizer(q, ",", false);
double x = new Double(st.nextToken()).doubleValue();
double y = new Double(st.nextToken()).doubleValue();
int a = new Integer(st.nextToken()).intValue();
//返信
out.println("" + getMulti(x, y, a));
out.flush();
//一応応答をまつ
in.readLine();
} catch (IOException ex) {
ex.printStackTrace();
}
}
public double getMulti(double x, double y, int a) { //同じ。exceptions は throw しない
return 0;
}
}
適宜、今のソースに組み込んでやってみてくれ。
そんなに難しくないと思う。もしよく分からなかったらまたきいて。

コンストラクタでソケットを作っちゃってるので、
インスタンスを再利用できないのには注意。
今のソースから直に書き換えるなら大丈夫だと思うけど。

あと、>>788-790 があまりに冗長だから、
ついでに少し直したほうがいいんじゃないかな。
796NAO:04/01/16 12:49
どうもありがとうございます。また、わからないことがあったら質問させていただきたいので
よろしくお願いします。
797その1:04/01/17 04:21
バイナリ参照して展開後、ファイルhoge(拡張子なし)へ表示中のバイナリ4列毎に"FF"列の挿入をしたものを出力
ちなみにファイル参照は汎用的でなくて良いってあったからとりあえずargs[]でひっかけました
・・・内部入力で参照するやり方知らないだけとも言うんですが^^;
・・・見るところまでは出来たけどこっから先が・・・とりあえずファイルの内容を吐き出したあと
何をどうすればいいかイマイチ解らない・・・
学校の先生インフルで急に休講にしてプリント一枚、しかも汚い手書き・・・勘弁してクレ(´・ω・`)
ついでに既存の部分でも直すべき部分があったらそこもお願いします。

import java.io.*;
public class zien2 {
public static void main(String args[]){
final int EOF = -1;
long cnb = 2;
long pi = 1;
for(int i = 1;i < 8 ; i++){
pi = cnb * pi ;
cnb += pi ;
}
long sqlt = cnb;
sqlt *= cnb;
sqlt /= 2;
if(args.length != 1 || args.length == 1 && args[0] == "/?"){
System.err.println("逝ってよし!!エラーじゃ!(―_―)");
System.exit(0);
}
try{
File SizeDeta = new File(args[0]);
int size = (int)SizeDeta.length();
FileInputStream Fstr = new FileInputStream(args[0]);
BufferedInputStream bistr = new BufferedInputStream(Fstr);
798その2:04/01/17 04:22
int n,count = 0 ;
while ((n = bistr.read()) != EOF) {
System.out.print(Hex((n & 0xf0) >> 4));
System.out.print(Hex((n & 0x0f)));
System.out.print(' ');
if ((++count % 24) == 0){
System.out.print("\n");
}else if ((count % 8) == 0){
System.out.print(" ");
}
}
if (size == count){
System.out.println("\nファイルサイズ"+size+"byte");
}else {
System.out.println("\nファイルサイズ"+size+"byte");
System.out.println("\n表示サイズ"+count+"byte");
}
System.out.println("特殊"+sqlt);
Fstr.close();
}
799その3:04/01/17 04:24
catch (IOException e) {
String s = e.toString();
if (s.length() >= 29 && s.substring(0,29).compareTo("java.io.FileNotFoundException") == 0) {
System.err.println("Noファイル");
System.exit(1);
}
System.err.println(e);
System.exit(1);
}
}
/*==================================================================*/
public static char Hex(int hdt){
char[] hax = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
hdt &= 0x0f;
return hax[hdt];
}
}
800797:04/01/17 04:25
変なソースが紛れ込んでますが気にしないでください・・・
大まかな部分を別のソースから引っ張ってその消し忘れです・・・
>>797
>バイナリ参照して展開後、ファイルhoge(拡張子なし)へ表示中のバイナリ4列毎に"FF"列の挿入をしたものを出力
何言ってるのかわからないのでソースもどこがどうあってるのか
何が足りないのかわからない。というか読む気がしない。
展開って何? 表示ってなに?列って何の単位? "FF"って 0xff のこと?
吐き出す、ってのはメモリ上(プログラム)からディスクに書き込むことをいうのが一般的ではないかと思うだが、
それができたらもう終わり、の課題のように読めるしなぁ、
ということで、この5点早急に報告すべし
・・・言葉足らずでスマソ・・・
動作がコマンドプロンプト上でさらに課題提出時に
(コマンドプロンプト上) java zien2 (参照する物の名前) >> zien2.txt
と動作内容の吐き出しがあるんでいつもの癖で脳内補完語で書いてしまいました
んで、このソースだと16進数8個*3セットで改行していきます。
↓こんな感じで
CA FE BA BE 00 00 00 2E 00 7C 0A 00 2B 00 36 05 00 00 00 00 00 00 00 02
08 00 37 09 00 38 00 39 08 00 3A 0A 00 3B 00 3C 0A 00 38 00 3D 07 00 3E
0A 00 09 00 3F 0A 00 09 00 40 07 00 41 0A 00 0C 00 3F 07 00 42 0A 00 0E
00 43 0A 00 0E 00 44 09 00 38 00 45 0A 00 2A 00 46 0A 00 3B 00 47 08 00
48 0A 00 3B 00 49 08 00 4A 07 00 4B 0A 00 17 00 36 08 00 4C 0A 00 17 00
4D 0A 00 17 00 4E 08 00 4F 0A 00 17 00 50 08 00 51 08 00 52 0A 00 17 00
53 0A 00 0C 00 54 07 00 55 0A 00 22 00 50 0A 00 56 00 57 0A 00 56 00 58
08 00 59 0A 00 56 00 5A 08 00 5B 0A 00 3B 00 5C 07 00 5D 07 00 5E 01 00
06 3C 69 6E 69 74 3E 01 00 03 28 29 56 01 00 04 43 6F 64 65 01 00 0F 4C
69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65 01 00 04 6D 61 69 6E 01 00 16
28 5B 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 29 56 01 00
03 48 65 78 01 00 04 28 49 29 43 01 00 0A 53 6F 75 72 63 65 46 69 6C 65
01 00 09 7A 69 65 6E 2E 6A 61 76 61 0C 00 2C 00 2D 01 00 02 2F 3F 07 00
5F 0C 00 60 00 61 01 00 36 E9 80 9D E3 81 A3 E3 81 A6 E3 82 88 E3 81 97
EF BC 81 EF BC 81 E3 82 A8 E3 83 A9 E3 83 BC E3 81 98 E3 82 83 EF BC 81

並びが汚かったらフォントの問題です^^;
でこれに対して0xffをを4列毎に挿入したものを同フォルダ上に吐き出すというものです。
・・・課題に関しては、寝ぼけたことを平気で言ってる講師が作るからキッチーな内容でも文句が言えませぬ。
803デフォルトの名無しさん:04/01/17 12:39
フィールド関連データ取得とメソッド関連データ取得の手続きはほぼ同じ内容である。
これらの手続きをメソッドとして新たに作成し、あわせてmainメソッドも書き換えよ。
という宿題です。よろしくおねがいします。

import java.io.File;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class Sample0 {

public static void main(String[] args) {

//複数のXMLファイルを配列を用いて読み込む
String FileList[] = {"Book.java.xml","BookShelf.java.xml","Aggregate.java.xml","Iterator.java.xml"};
Parser p[] = new Parser[FileList.length];

for(int j =0;j<FileList.length;j++){

System.out.println("\n "+FileList[j]);
p[j] = new Parser(FileList[j]);
Element top=p[j].getRoot();

//インターフェス名 クラス名を取得
Node TopChild = top.getFirstChild();
while(TopChild.getNodeName().equals("Import"))
TopChild=TopChild.getNextSibling();

if(TopChild.getNodeName().equals("Intf")){
System.out.print("Interface"+"-> ");
p[j].getIdent("Intf");System.out.println();
} else {
804803の続き:04/01/17 12:40
System.out.print("Class"+"-> ");
p[j].getIdent("Class");System.out.println();
}

//フィールド関連データを取得 
NodeList elementList =top.getElementsByTagName("Field");

for (int i = 0; i < elementList.getLength(); i++) {
Element elm = (Element)elementList.item(i);
System.out.print("Filed("+ (i+1) + ") Name=");
p[j].getChild(elm,"ident");
System.out.print(" Type=");
p[j].getType(elm);
}
System.out.println();

//メソッド関連データを取得 
elementList =top.getElementsByTagName("Method");

for (int i = 0; i < elementList.getLength(); i++) {
Element elm = (Element)elementList.item(i);
System.out.print("Method("+ (i+1) + ") Name=");
p[j].getChild(elm,"ident");
System.out.print(" Type=");
p[j].getType(elm);
}

}
}
}
>>802
こういうことでいいのか?
CA FE BA BE FF 00 00 00 2E FF 00 7C 0A 00 FF ...
あるいはこうか?
CA FE BA FF BE 00 00 FF 00 2E 00 FF 7C 0A 00 FF ...

どっちにしろ、こうするだけだ。% で割る数を変えれば上のどっちにでもなる。
BufferedInputStream bistr = new BufferedInputStream(Fstr);
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(outfile));
int n,count = 0 ;
while ((n = bistr.read()) != EOF) {
 out.write(n);
 if (count%4 == 3) {
  out.write(0xff);
 }
(略)
Fstr.close();
out.flush();
out.close();
全く同じ構造をもってるのは、
elementList = から for (int i = 0; i < elementList.getLength(); i++) { } の終端までだから、
ここをメソッドとして別途作成する。
elementList はそのメソッドの中で使いきり、i と elm は for の中で使いきり、
足りない要素は "Method" なのか "Field" なのかってことと、top と、配列の一要素 p[j] なので、
これは引数として与える。

main(String[] args) {} のあとにメソッド追加
private void printElements(String target, Element top, Parser parser) {
 NodeList elementList = top.getElementsByTagName(target);

 for (int i = 0; i < elementList.getLength(); i++) {
  Element elm = (Element)elementList.item(i);
  System.out.print(target + "("+ (i+1) + ") Name=");
  parser.getChild(elm,"ident");
  System.out.print(" Type=");
  parser.getType(elm);
 }
}

呼び出しは改行をはさんで

printElements("Field", top, p[j]);
System.out.println();
printElements("Method", top, p[j]);

となる。Parser ってのは、オリジナルだって仮定でいいんだよな?
該当するクラスが 標準API に見当たらなかったんで。
>>805
助かりました
これであさっての提出に間に合う・・・どうもありがとう(´∇`)
>>807
あ、割り切れる場合を想定してなかった。
ループ抜けて Output 閉じる前のとこで、適宜対処して。
809803:04/01/17 21:00
a
810803:04/01/17 21:01
すみません、Parserは別ファイル?にありました。
class Parser {

static Document doc=null;
public Element Root;
public Element document;
public Element tmpElm;

Parser(String Fname){
try {
DocumentBuilderFactory dbfactory =DocumentBuilderFactory.newInstance();
DocumentBuilder builder = dbfactory.newDocumentBuilder();
doc = builder.parse(new File(Fname));

} catch (Exception ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}

Root = doc.getDocumentElement();

}

public Element getRoot(){

return Root;
}

811803:04/01/17 21:02
public void getChild(Element elm, String NodeName){

for(Node ch = elm.getFirstChild();ch != null;ch = ch.getNextSibling())
if(ch.getNodeType() == Node.ELEMENT_NODE)
if(ch.getNodeName().equals(NodeName))
System.out.print(ch.getFirstChild().getNodeValue());
}

public void getIdent(String NodeName){

NodeList elementList =Root.getElementsByTagName(NodeName);
for (int i = 0; i < elementList.getLength(); i++) {
Element tmpPoint = (Element)elementList.item(i);
getChild(tmpPoint,"ident");
}
}

public void getType(Element elm){

for(Node ch = elm.getFirstChild();ch != null;ch = ch.getNextSibling())
if(ch.getNodeType() == Node.ELEMENT_NODE)
if(ch.getNodeName().equals("Type"))
System.out.println(ch.getFirstChild().getFirstChild().getNodeValue());
}

}
812807:04/01/17 21:33
了解です。いろいろとご迷惑をおかけしました
813デフォルトの名無しさん:04/01/18 18:21
問題:次のメソッドを用いた形式で出力例が出力できるプログラムリスト
   を作ってください。
import java.io.*;
class Line Menu{
private BufferedReader br = null;
pubulic static void main(String args[])throws IOException{
・・・・
br = new BufferedReader(new InputStreamReader(System.in));
....
}
//Display a command List and then return the command number.
private String getCommandNumber() throws IOException{
//@メニューを出力する。
//Aキーボードから入力されたメニューの番号を得る。
//B数字1〜5以外の文字が入力された場合は、
  エラーメッセージ出力後、再度@へ戻る。
//C結果はString型の数字を返す。(return文)。
}
//Convert the command number into command name
private String getCommandName(String commandNo){
//@仮引数からString型の「メニューの番号」を得る。
//A「メニュー番号」を対応するコマンド名に変換する。
//B結果はString型のコマンド名を返す(return文)。
}
}  
814デフォルトの名無しさん:04/01/18 18:23
↑の続き。
出力例はこれです。お願いします。
C:\me\jprog\project>java LineMenu
Command list
1 Guess
2 Janken
3 Other
4 Help
5 Quit
Command>0
Command error:0
Command list
1 Guess
2 Janken
3 Other
4 Help
5 Quit
Command>2
commandName:Janken
これでいいんだろうかね。
元ソースが幾つか間違ってたのでよく見比べるように。

import java.io.*;

class LineMenu {
private static final String[] menu = {
"Guess", "Janken", "Other", "Help", "Quit"
};

private static BufferedReader br = null;
public static void main(String args[])throws IOException{
try {
br = new BufferedReader(new InputStreamReader(System.in));

LineMenu lm = new LineMenu();

String num = lm.getCommandNumber();
String commandname = lm.getCommandName(num);
System.out.println("commandName:" + commandname);
} catch (IOException ex) {
ex.printStackTrace();
}
}
//Display a command List and then return the command number.
private String getCommandNumber() throws IOException{
int selected = -1;
while (true) {
//@メニューを出力する。
for (int i=0; i<menu.length; i++) {
System.out.println((i + 1) + " " + menu[i]);
}
System.out.print("Command>");
//Aキーボードから入力されたメニューの番号を得る。
String input = br.readLine();
//B数字1〜5以外の文字が入力された場合は、
//エラーメッセージ出力後、再度@へ戻る。
try {
int v = new Integer(input).intValue();
if ((1 <= v) && (v <= menu.length)) {
selected = v;
break;
}
} catch (NumberFormatException ex) {
//何もせず
}
System.out.println("Command error:" + input);
}
//C結果はString型の数字を返す。(return文)。
return "" + selected;
}
//Convert the command number into command name
private String getCommandName(String commandNo){
//@仮引数からString型の「メニューの番号」を得る。
//String 型の? もうString型になってるやん
//@はただ書いてみただけで何もせんでいいということか?
//A「メニュー番号」を対応するコマンド名に変換する。
int number = new Integer(commandNo).intValue();
String menuname = menu[number - 1];
//B結果はString型のコマンド名を返す(return文)。
return menuname;
}
}
818デフォルトの名無しさん:04/01/18 22:47
>>815〜817様
本当にありがとうございました。
感謝します。
_l ̄l○
819デフォルトの名無しさん:04/01/19 22:06
>>819
mailto:[email protected]に送っといたよ。
821デフォルトの名無しさん:04/01/19 23:43
じゃんけんでネット対戦するプログラムなんですが、このサーバーをちょっと改造してクライアントを
作りたいのです。よろしくお願いしますm(__)m
import java.io.*;
import java.net.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JkServer
{
String hands[] = {
"グー",
"チョキ",
"パー",
};
JLabel lb1, lb2;
JButton b1, b2, b3;
Socket sc;
public static void main(String arg[])
{
new JkServer();
}
822821:04/01/19 23:43
続き
public JkServer () {
int PORT = 10000;
JFrame f = new JFrame();
Container cnt = f.getContentPane();
try{
lb1 = new JLabel();
lb2 = new JLabel();
b1 = new JButton(hands[0]);
b2 = new JButton(hands[1]);
b3 = new JButton(hands[2]);
cnt.add(lb1,BorderLayout.NORTH);
cnt.add(lb2,BorderLayout.SOUTH);
cnt.add(b1,BorderLayout.WEST);
cnt.add(b2,BorderLayout.CENTER);
cnt.add(b3,BorderLayout.EAST);
b1.addActionListener(new JkListener());
b2.addActionListener(new JkListener());
b3.addActionListener(new JkListener());
f.setSize(300, 300);
f.setVisible(true);
InetAddress ia = InetAddress.getLocalHost();
lb1.setText("サーバーのIPアドレスは" + ia.getHostAddress());
lb2.setText("クライアントからの接続を待っています。");
ServerSocket ss = new ServerSocket(PORT);
sc = ss.accept();
lb2.setText(sc.getInetAddress().getHostName() + "から接続がありました。");
}
823821:04/01/19 23:45
続き
catch(Exception ex)
{
lb2.setText("エラーがおきました。");
}
}
class JkListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
try{
int myhand;
if (e.getSource() == b1)
{
myhand = 0;
lb1.setText("こっちの手はグーです。");
}
else if (e.getSource() == b2)
{
myhand = 1;
lb1.setText("こっちの手はチョキです。");
}
else
{
myhand = 2;
lb1.setText("こっちの手はパーです。");
}
824821:04/01/19 23:45
続き
BufferedReader br;
br = new BufferedReader(new InputStreamReader(sc.getInputStream()));
PrintWriter pw;
pw = new PrintWriter(sc.getOutputStream());
String str = br.readLine();
int yourhand;
if (str.equals(hands[0]))
{
yourhand = 0;
lb1.setText("こっちの手はグーです。");
}
else if (str.equals(hands[1]))
{
yourhand = 1;
}
else

{
yourhand = 2;
}
825821:04/01/19 23:46
続き
lb1.setText("あっちの手" + hands[yourhand] + "を受け取りました。");
pw.println(hands[myhand]);
pw.flush();
lb2.setText("こっちの手" + hands[myhand] + "送りました。");

br.close();
pw.close();
sc.close();
}
catch(Exception ex)
{
lb2.setText("エラーがおきました。\n");
}
}
}
}
826821:04/01/19 23:51
よろしくお願いしますm(__)m
827デフォルトの名無しさん:04/01/19 23:56
学校の宿題です。
テストに出るみたいです。
誰か教えてください。

描画領域内の異なる場所で三回マウスボタ描画領域内の異なる場所で三回マウスボタンをクリックする。
この時、それぞれの点をつンをクリックする。
この時、それぞれの点をつなぐ三角形を描くプログラムを作成しなさい。
三回クリックしたところで始めて三回クリックしたところで始めて描画。それまではクリックした部描画。
それまではクリックした部分の座標点を維持する。
828デフォルトの名無しさん:04/01/20 00:02
学校の宿題です。
誰か教えてください。

アンケートを集計して、その結果を棒グラフで表示するプログラムです。

どっかにいいサンプルでもありませんか?
ほんと申し訳ないです。
>>819
/* Q819_1.java Usage: java Q819_1 数値 */
public class Q819_1 {
public static void main(String[] args) {
int sup = Integer.parseInt(args[0]);
boolean[] primes = new boolean[sup + 1];
for (int i = 2; i <= sup; i++) primes[i] = true;
for (int i = 2; i <= sup; i++) {
if (primes[i] == true) { // if (primes[i])
for (int j = /*i * 2*/ i + i; j <= sup; j += i) {
primes[j] = false;
}
}
}
int count = 0;
for (int i = 2; i <= sup; i++) {
if (primes[i] == true) {
count++;
}
}
System.out.print("素数は " + count + " 個\n非素数は " + (sup - 1 - count) + " 個\n");
}
}
/* Q819_2.java */
public class Q819_2 {
public static void main(String[] args) {
short number = Short.parseShort(args[0]);
short sum = 0;
for (int i = 1; i <= number; i++) {
sum += (short) i;
}
System.out.println("1 から " + number + " までの合計 (!" + number + ") は " + sum + " です。");
short max = 0;
for (short sumMax = 0; sumMax >= 0; sumMax += max) {
max++;
}
max--;
System.out.println("number の最大値は " + max + " です。");
if (max < number) System.out.println("階乗演算は間違っています!");
}
}
/* Q819_3.java */
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Q819_3 extends JFrame implements ActionListener {
private JTextField tfYear = new JTextField(/* columns */ 5);
private JTextField tfMonth = new JTextField(/* columns */ 3);
private JButton btShow = new JButton("Show");
private JTextArea taCalendar = new JTextArea();
public Q819_3() {
super("Monthly Calendar");
getContentPane().setLayout(new BorderLayout());
JPanel pnNorth = new JPanel(new FlowLayout(FlowLayout.LEFT));
pnNorth.add(tfYear);
pnNorth.add(tfMonth);
pnNorth.add(btShow);
getContentPane().add(pnNorth, BorderLayout.NORTH);
taCalendar.setFont(new Font("Monospaced", 0, 12));
getContentPane().add(new JScrollPane(taCalendar));
btShow.addActionListener(this);
pack();
}
/* Q819_3.java #2 */
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() == btShow) {
Calendar c = Calendar.getInstance();
int year = Integer.parseInt(tfYear.getText());
int month = Integer.parseInt(tfMonth.getText()) - 1;
c.set(year, month, /*day*/1);
StringBuffer sb = new StringBuffer(256);
sb.append(" Sun Mon Tue Wed Thu Fri Sat\n");
for (int i = Calendar.SUNDAY; i < c.get(Calendar.DAY_OF_WEEK); i++) {
sb.append(" ");
}
while (c.get(Calendar.MONTH) == month) {
do {
String day = " " + c.get(Calendar.DATE);
sb.append(day.substring(day.length() - 4));
c.add(Calendar.DATE, 1);
} while ((c.get(Calendar.MONTH) == month) && (c.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY));
sb.append('\n');
}
taCalendar.setText(sb.toString());
pack();
}
}
/* Q819_3.java #3 */
public static void main(String[] args) {
Q819_3 frame = new Q819_3();
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.setVisible(true);
}
}
/* Q827.java */
import java.awt.*; import java.awt.event.*;
public class Q827 extends Frame {
private Point points[] = new Point[3];
private int count = 0;
public Q827() {
super("Triangle");
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent evt) { thisMousePressed(evt); }
});
}
private void thisMousePressed(MouseEvent evt) {
points[count++] = evt.getPoint();
repaint();
}
public void paint(Graphics g) {
if (count < points.length) {
for (int i = 0; i < count; i++) {
g.setColor(Color.black);
g.drawRect(points[i].x - 1, points[i].y - 1, 3, 3);
}
} else {
g.setColor(Color.black);
for (int i = 1; i < points.length; i++) {
g.drawLine(points[i-1].x, points[i-1].y, points[i].x, points[i].y);
}
g.drawLine(points[0].x, points[0].y, points[points.length-1].x, points[points.length-1].y);
count = 0;
}
}
/* Q827.java #2 */
public static void main(String[] args) {
Q827 frame = new Q827();
frame.setSize(200, 200);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent evt) { System.exit(0); }
});
frame.setVisible(true);
}
}
836デフォルトの名無しさん:04/01/20 01:06
>>835
ありがとうございました。
837デフォルトの名無しさん:04/01/20 03:08
>>819
ありがとうございました。
838821:04/01/20 21:02
誰かお願いしますm(__)m
839821:04/01/20 23:52
age
>>821 ServerSocketをSocketに置き換えて
http://java.sun.com/j2se/1.4/ja/docs/ja/api/java/net/Socket.html#connect(java.net.SocketAddress)
でうんぬんというのはわかるだろうとして、
送受信のシーケンスがサーバとクライアントで逆
になるのは気をつけよう。ところでそれ、入出力で
デフォルトエンコーディング決めうちだからサー
バーとクライアントで環境が違うと相手の結果の
判定できなくなるね。
841821:04/01/21 00:25
>>840
すみません、さっぱりわかりません
842821:04/01/21 02:39
勝ち負けの処理はどうしたらいいんでしょうか?
>>821
雰囲気こんな感じ。

Socket socket = new Socket(InetAddress.getByName("接続先IPアドレス", 10000));
PrintWriter writer = new PrintWriter(socket.getOuputStream));
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String mine = ・・・;  // 自分の手
writer.println(mine);
String yours = reader.readLine();  // 相手の手
・・・  // 勝ち負けの判定

エンコーディングの問題は作った人も何も考えてなさそうだから、
気にしないでよさげ。
勝ち負けの判定は良く分からなかったら、
if (mine.equals("グー") && yours.equals("パー"))
で地道に比べて行き。
すみません、真にお手数ですが以下のプログラムを
作成していただけないものでしょうか?

@ディレクトリchap8内に学生成績評価プログラムを作成する。
A最初に次のデータを配列データとして作成する。
学生ID   名前   得点
000010 John 85
000020 Mary 54
000030 Dick 49
000040 Mark 89
000050 Perry 94
000060 Ted 65
000070 Linda 52
000080 Tom 70
000090 Kate 97

B各学生の得点から次の基準で評価値(Grade)を与える。
得点   評価値
100-90 A
89-70 B
69-50 C
49-20 D
19-0 E

C得点の平均値、最高点、最低点を求めよ。
 最高点と最低点の表示には、学生IDと名前も一緒に出力する。
845844:04/01/21 18:42
D次の形式で結果を出力する。
学生ID   名前   得点   評価値
000010   John   85    B
000020   Mary   54    C
・・・・・・・・・・・・・・・・・・
000090   Kate   97    A

最高得点者:97 Kate(000090)
最低得点者:49 Dick(000030)
平均得点 :73

EChallenging point(option)
名前をABC順にソートして、ソートされた結果をDの形式で出力する。

というものです。
参考プログラムを与えられていないので、
作成していただける方に真に面倒をおかけしますが
どうぞよろしくお願い申し上げます(;´Д`)

あと、上のAが書き込み後にずれてしまいました。
申し訳ありません。
846デフォルトの名無しさん:04/01/21 18:57
5までできたもちっとまっとれ
847デフォルトの名無しさん:04/01/21 19:07
一応出来たけど、初歩的な手法だけで設計したわけではないから、
なんか突っ込まれるかもな。

具体的には
・自前のクラス作成
・ソートアルゴリズムを自分で組まず、TreeSet を流用。
・それに伴いComparable インタフェース実装とキャストを行った

そんなんでも大丈夫?
848とりあえず:04/01/21 19:12
import java.util.*;

public class Q844 {
public static void main(String[] args) {
Q844 q844 = new Q844();
q844.go();
}

//(2)
private Seiseki[] masterdatas = null;

//(4)
private Seiseki max = null, min = null;
private double ave = 0.0;

public void go() {
//(2)
load();

//(4)
calc();

//(5), (3)
printGrades(masterdatas);

//(5)
printResults();

//こっから下は (6), (3)
Seiseki[] sortdatas = sortByName(masterdatas);
printGrades(sortdatas);
}
849とりあえず:04/01/21 19:13
//(2)
public void load() {
String[][] data = {
{ "000010", "John", "85" },
{ "000020", "Mary", "54" },
{ "000030", "Dick", "49" },
{ "000040", "Mark", "89" },
{ "000050", "Perry", "94" },
{ "000060", "Ted", "65" },
{ "000070", "Linda", "52" },
{ "000080", "Tom", "70" },
{ "000090", "Kate", "97" }
};
masterdatas = new Seiseki[data.length];
for (int i=0; i<data.length; i++) {
int point = new Integer(data[i][2]).intValue();
Seiseki seiseki = new Seiseki(data[i][0], data[i][1], point);
masterdatas[i] = seiseki;
}
}
850とりあえず:04/01/21 19:14
//(3)
public String getGrade(int point) {
if (90 <= point) {
return "A";
} else if (70 <= point) {
return "B";
} else if (50 <= point) {
return "C";
} else if (20 <= point) {
return "D";
} else {
return "E";
}
}
851とりあえず:04/01/21 19:14
//(4)
public void calc() {
max = null;
min = null;
ave = 0;
for (int i=0; i<masterdatas.length; i++) {
Seiseki seiseki = masterdatas[i];
int point = seiseki.getPoint();
if ((max == null) || (max.getPoint() < point)) {
max = seiseki;
}
if ((min == null) || (point < min.getPoint())) {
min = seiseki;
}
ave += (double)point;
}
ave /= masterdatas.length;
}

//(5)
public void printGrades(Seiseki[] datas) {
System.out.println("学生ID\t名前\t得点\t評価値");

for (int i=0; i<datas.length; i++) {
Seiseki seiseki = datas[i];
int point = seiseki.getPoint();
System.out.println(seiseki.getID() + "\t" + seiseki.getName() + "\t" + point + "\t" + getGrade(point));
}
}
852とりあえず:04/01/21 19:14
//(5)
public void printResults() {
System.out.println("最高得点者:" + max.getPoint() + " " + max.getName() + " (" + max.getID() + ")");
System.out.println("最低得点者:" + min.getPoint() + " " + min.getName() + " (" + min.getID() + ")");
System.out.println("平均得点 :" + (int)ave);
}

//このメソッドは (6)
public Seiseki[] sortByName(Seiseki[] datas) {
TreeSet set = new TreeSet();
for (int i=0; i<datas.length; i++) {
Seiseki seiseki = datas[i];
set.add(seiseki);
}
Seiseki[] sorted = new Seiseki[datas.length];
Iterator it = set.iterator();
for (int i=0; i<sorted.length; i++) {
sorted[i] = (Seiseki)it.next();
}
return sorted;
}

}//メインクラス終了
853とりあえず:04/01/21 19:17
class Seiseki implements Comparable { //implements 〜は (6)
private String id, name;
private int point;

public Seiseki(String id, String name, int point) {
this.id = id;
this.name = name;
this.point = point;
}

//このメソッドは (6)
public int compareTo(Object obj) {
Seiseki s = (Seiseki)obj;
return getName().compareTo(s.getName());
}

public String getID() {
return id;
}

public String getName() {
return name;
}

public int getPoint() {
return point;
}
}
854844:04/01/21 19:26
>847さん
あまりの早さにびっくりでありますΣ(゚Д゚)
滞りなくコンパイルも実行も出来ましたので
全く問題ないと思います。

お忙しいところをわざわざ有難う御座いました( ´∀`)
あ、平均点表示のときの (int) キャストは切り捨てだ。
しかし例では四捨五入になってるようだから、こうしてくれればいいと思う。
System.out.println("平均得点 :" + (int)(ave + 0.5));

856821:04/01/21 21:16
クライアントとサーバーの接続はできたんですが、なぜかボタン押した時点でエラーになってしまいます。
さっぱり原因が分かりません
857デフォルトの名無しさん:04/01/21 22:19
ボタンを押した時にテキストフィールドに入力したファイル名をサーバに送信してファイルを受け取り、
内容をテキストエリアに表示し、保存するクライアントのプログラムをつくりたいのですが、
actionPerformedのとこをどう書いたら良いか誰か教えていただけませんでしょうか?
858デフォルトの名無しさん:04/01/21 22:20
すまそいきなりですがわかりました。
よく調べもせずスレ汚してすみません
しかも下げ忘れ
鬱だ
>>856
例外処理の部分を全て、

} catch (Exception ex) {
  lb2.setText("エラーがおきました。\n");
  ex.printStackTrace();  // ←これを追加
}

のようにして、標準出力に出るエラーをコピペしる。
「なぜかボタン押した時点でエラー」では誰も分からんよ。
VBの宿題はここで良かったのでしょうか?
問題1
整数データ(80,41、35、90、40、20)を配列に登録し、
選択ソートを用いて、昇順に並び替えるプログラムを作成せよ。

問題2
アルファベットの列を入力すると、各文字のASCIIコードを出力する
プログラムを作成せよです。

正直お願いします。
862デフォルトの名無しさん:04/01/22 04:03
問題1-1
テキストファイルをコピーするプログラムを作成しなさい。ファイル名は TextCopy.java とする。コマンドラインから、コピー元ファイル名とコピー先ファイル名を受け取るようにしなさい。

問題1-2
コピーした行数を表示するようにしなさい。

問題1-3 (余力のある人のみ)
コピーした単語数を表示するようにしなさい。

問題2
テキストファイルから指定した文字列を探し、その文字列が含まれている行を表示するプログラムを作成しなさい。ファイル名は TinyGrep.java とする。


さっぱりストリームあたりの話がわからんのです。
>>861
スレ違い。
>>862
問題1-1〜1-3。全角スペースでインデントしてるからタブとかに変えてね。

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

class TextCopy {
  public static void main(String[] args) throws Exception {
    if (args.length != 2) {
      System.err.println("Usage: TextCopy <source> <destination>");
      return;
    }
    BufferedReader reader = new BufferedReader(new FileReader(args[0]));
    PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(args[1])));
    String line = null;
    int lineNumber = 0;
    int wordCount = 0;
    while ((line = reader.readLine()) != null) {
      writer.println(line);
      lineNumber++;
      for (StringTokenizer tokens = new StringTokenizer(line); tokens.hasMoreTokens();) {
        tokens.nextToken();
        wordCount++;
      }
    }
    writer.close();
    reader.close();
    System.out.println("Total line number: " + lineNumber);
    System.out.println("Total word count: " + wordCount);
  }
}
865864:04/01/22 10:00
>>862
問題2。

import java.io.*;

class TinyGrep {
  public static void main(String[] args) throws Exception {
    if (args.length != 2) {
      System.err.println("Usage: TinyGrep <pattern> <file>");
      return;
    }
    BufferedReader reader = new BufferedReader(new FileReader(args[1]));
    String line = null;
    while ((line = reader.readLine()) != null) {
      if (line.indexOf(args[0]) != -1) {
        System.out.println(line);
      }
    }
    reader.close();
  }
}
866862:04/01/22 17:06
>>864-865
ありがとうございました。これで単位も安心です。
867心から御願いします:04/01/22 18:14
どのメソッドがどう働いているか、
どうの引数が何を意味してるだとか
このプログラミングでどこが工夫されているかとか
を説明しなきゃいけない宿題がありまして、私にはまったく訳が分かりません。、
出来れば行末尾に「//説明」をつけていただきたいのですが、、
868心から御願いします:04/01/22 18:16
mport java.applet.Applet;
import java.awt.*;
import java.util.*;
import java.awt.event.*;

public class game extends Applet implements Runnable, MouseMotionListener {

int speed = 15;
int num = 3;
int bx, by;
int rx = 120, ry = 300;
int ballWidth = 16, ballHeight = 16; //ボールの大きさ
int racketWidth = 30, racketHeight = 8; //ラケットの大きさ
int margin = 10;            
int score;

boolean loop = true;
Thread kicker = null;

Dimension d;
Image offs;
Graphics grf;

public void init(){
869心から御願いします:04/01/22 18:17
//オフスクリーン設定
d = getSize();
offs = createImage(d.width, d.height);
grf = offs.getGraphics();

//ボールの初期位置設定
bx = margin + (int)(Math.random() * (float)(d.width - (margin * 2 + ballWidth + 1)));
by = 50;

//マウスモーション・リスナーとして自分自身を登録
addMouseMotionListener(this);
}

public void paint(Graphics g){
update(g);
}

public void update(Graphics g){

//コート
grf.setColor(Color.red);
grf.fillRect(0, 0, d.width, d.height);
grf.setColor(Color.black);
grf.fillRect(margin, margin, d.width - margin * 2, d.height - margin * 2);
870心から御願いします:04/01/22 18:18
//ラケット
grf.setColor(Color.blue);
grf.fillRect(rx, ry, racketWidth, racketHeight);

//玉
grf.setColor(Color.white);
grf.fillOval(bx, by, ballWidth, ballHeight);
grf.setColor(Color.black);
grf.drawOval(bx, by, ballWidth, ballHeight);

//得点
grf.setColor(Color.white);
grf.drawString("得点" + score, 20, 100);
if(num < 0){
grf.setColor(Color.red);
grf.drawString("GAME OVER ", 40, 80);

}

//オフスクリーンのイメージを一挙に実際の表示領域に描く
g.drawImage(offs, 0, 0, this);
}

public void mouseDragged(MouseEvent e){
//マウスが押されてドラッグされた
}
871心から御願いします:04/01/22 18:19

public void mouseMoved(MouseEvent e){
//マウス

rx = e.getX();

//ラケットがコートを出ないための処理
if(rx < margin){
rx = margin;
}
if(rx + racketWidth > d.width - margin){
rx = d.width - margin - racketWidth;
}

repaint();
}

public void start(){
if(kicker == null){
//スレッドを実行させる
kicker = new Thread(this);
kicker.start();
}
}
872心から御願いします:04/01/22 18:19

public void stop(){
//スレッドを止める
kicker = null;
}

public void run(){
int dx = 2, dy = 2;

//実行中のスレッドをチェック
Thread thisThread = Thread.currentThread();

//繰り返し
while(loop && kicker == thisThread){
873デフォルトの名無しさん:04/01/22 18:27
//ラケットに当たった時の処理
if(by + ballHeight >= ry && by + ballHeight <= ry + racketHeight &&
bx + ballWidth > rx && bx <= rx + racketWidth){
//上へ返す
dy = -2;
if(bx < rx || bx + ballWidth > rx + racketWidth){
//端に当たった時
if(dx == 0){
//垂直に来たボール
if(dx < rx){
874デフォルトの名無しさん:04/01/22 18:28
//左端左斜め上に返す
dx = -2;
}
if(bx + ballWidth > rx + racketWidth){
//右端右斜め上に返す
dx = 2;
}
} else {
//斜め垂直に返す
dx = 0;
}
}
score++;

}
875デフォルトの名無しさん:04/01/22 18:29
//左端、右端、上端にきたときの処理
if(bx < 0 + margin){
//左端にきたら反転
dx = 2;
}
if(bx + ballWidth > d.width - margin){
//右端にきたら反転
dx = -2;
}
if(by < 0 + margin){
//上端にきたら反転
dy = 2;
}

//下へ行ったときの処理
if(by + ballHeight > d.height - margin){
//ボールを初期位置へ
bx = margin + (int)(Math.random() * (float)(d.width - (margin * 2 + ballWidth + 1)));
by = 50;
num -= 1;
}
876デフォルトの名無しさん:04/01/22 18:29
//ゲームの終了
if(num < 0){
loop = false;
}

bx += dx;
by += dy;

repaint();

try{
Thread.sleep(speed);
}
catch(InterruptedException e){}
}
}
}
877デフォルトの名無しさん:04/01/22 18:31
以上です。よろしくお願い致します!
VBの宿題スレってありませんか?
879デフォルトの名無しさん:04/01/22 21:49
   
880デフォルトの名無しさん:04/01/23 00:43
コマンドライン引数として任意の個数のdouble型データを与えて、その中央値(median)を求めて出力するjavaプログラムを作成する。
   (1)コマンド行引数や、繰り返しと判定のをりようして、コマンドライン引数をdouble形に変換してdouble型配列に格納する。 
   (2)単純選択法を流用し、データの並べ替えを行う。
   (3)データの個数nが奇数ならば並び替えられた添字(n-1)のデータを中央値、偶数ならば添字n/2-1とn/2のデータの平均値を中央値とする。
という宿題です。お願いします。
881デフォルトの名無しさん:04/01/23 03:52
>>880
問題の(3)写し間違えてない?medianだから、これでいいと思うけど。

class Median {
  public static void main(String[] args) {
    // (1)
    double[] data = new double[args.length];
    for (int i = 0; i < data.length; i++) {
      data[i] = Double.parseDouble(args[i]);
    }
    // (2)
    for (int i = 0; i < data.length - 1; i++) {
      for (int j = i + 1; j < data.length; j++) {
        if (data[i] > data[j]) {
          double tmp = data[i];
          data[i] = data[j];
          data[j] = tmp;
        }
      }
    }
    // (3)
    if (args.length % 2 == 1) {
      System.out.println(data[data.length / 2]);
    } else {
      System.out.println((data[data.length / 2 - 1] + data[data.length / 2]) / 2);
    }
  }
}
882デフォルトの名無しさん:04/01/23 09:51
たぶんこのスレの方々ならすげー簡単に解けるCプログラミングの問題なんですけどうpっていいですか?
txtファイルうpるんでお願いしたいんですけど・・・
>>882
ここJavaのスレ
884デフォルトの名無しさん:04/01/23 11:10
スマソ 芯で来る
885デフォルトの名無しさん:04/01/23 14:15
880です。本当にありがとうございました。>881
質問です。
いわゆる「戦艦ゲーム」についてです。
10×10の平面のマスに、
点(敵)をランダムにおきます。
その点を上下左右±1内で移動させるプログラムを
RandomNumberを使って作りたいんですがどうすればいいでしょうか。

String Idou() {
int x = 0, int y = 0;
for(int x,y=0; x,y<=10; i++) {

どうしてもこの先が分かりません。
教えてください、お願いします(o_ _)o))
887デフォルトの名無しさん:04/01/24 03:38
>>886
そのメソッドで何をしたいか良く分からないが、
-1〜1までの乱数を取得して、敵のxとyに足してやればいいのでは?

int offset = (int)(Math.random() * 3) - 1;

でoffsetは-1〜1までのどれかになるよ。
888886:04/01/24 21:40
>>887さん、ありがとうございます(*- -)(*_ _)
ここのStringで敵(x,y)の移動を上下左右-1〜1の間でプログラムしたいんです。

 String Idou() {
int x=0, y=0;
int offset = (int)(Math.random() * 3) - 1;
int new x = x + offset ;
int new y = y + offset ;

x,yにoffsetを足して定義できないです(ーー;)
どうすればできるでしょうか。
それを出力するStringを次にのせておきます。
889886:04/01/24 21:42
String str="";
switch( x ){
case -1: str ="左"; break;
case 1: str = "右"; break;
}
switch( y ) {
case -1: str += "上"; break;
case 1: str += "下"; break;
}
こんな感じです。。
890886:04/01/24 21:46
すみません。訂正があります。
敵の移動は-1か1のどちらかです。
移動しない、というのはナシです。
ご迷惑おかけします。
>>int new x = x + offset ;
>>int new y = y + offset ;
ここにnewはいらない。
intもいらない。
893887:04/01/25 07:03
>>886
うーん。offsetの出し方の間違いは>>891さんの指摘の通り。
でも、String idou()メソッドで何をしたいかよう分からんですよ。
"上下左右"の文字列を返してもあまり意味がないような?
敵の移動も-1か1だと将棋の角みたいな動きしかしなくなるし。

とりあえず、そこら辺勝手に解釈して、
動きを表示するようにしたので、まずかったら変えてちょ。
パラパラ漫画式で見にくいとは思うが・・・。
あと、全角スペースは半角に変えてね。
894887:04/01/25 07:07
改行が多すぎるんだって・・・。2つにわけますた。

class Test {
  int x, y;

  String idou() {
    String str = "";
    int offsetX = 0, offsetY = 0;
    while (offsetX == 0 && offsetY == 0) {
      offsetX = (int)(Math.random() * 3) - 1;
      offsetY = (int)(Math.random() * 3) - 1;
    }
    if (x + offsetX < 0 || x + offsetX >= 10) offsetX *= -1;
    if (y + offsetY < 0 || y + offsetY >= 10) offsetY *= -1;
    switch (offsetX) {
      case -1: str = "左"; break;
      case 1: str = "右"; break;
    }
    switch (offsetY) {
      case -1: str += "上"; break;
      case 1: str += "下"; break;
    }
    x += offsetX;
    y += offsetY;
    return str;
  }
895887:04/01/25 07:08
上のと合わせてひとつのクラスね。

  // こっから下は確認用
  public static void main(String[] args) throws Exception {
    Test test = new Test();
    for (;;) {
      System.out.println(test.idou());
      for (int i = 0; i < 10; i++) {
        for (int j = 0; j < 10; j++) {
          if (i == test.y && j == test.x) System.out.print('●');
          else System.out.print('・');
        }
        System.out.println();
      }
      System.out.println();
      Thread.sleep(1000);
    }
  }
}
896887:04/01/25 07:21
>>886
あー、ごめん。元の問題みると、敵の初期位置はランダムなのね?

int x, y;

を、以下のように変えてください。

int x = (int)(Math.random() * 10);
int y = (int)(Math.random() * 10);
897886:04/01/25 12:43
>>887さん、891さん、892さんありがとうございますm(_ _"m)
↑を参考にやってみました。
けれどもやはりうまくいきません・・。
上手く説明できないので、作ってみたプログラムを
アップしました。107行目からが分からないです。
乱数で敵の移動を(±1,±1)にして、表示したいのですが・・。
http://v.isp.2ch.net/up/74b26c8ffb40.txt
898886:04/01/25 12:48
http://up.isp.2ch.net/up/74b26c8ffb40.txt
ファイルのアドレスに訂正です。
たびたび失礼しました。
899デフォルトの名無しさん:04/01/25 14:16
1.メニューに含まれる機能のうち、よく使う機能をButtonでも提供せよ。
  例えばファイルの新規、保存、開く、編集の切り取り、コピー、貼付
2.ヘルプメニューの中にヴァージョン情報を提示するメニュー項目をつけよ。
  JOptionPaneの種類をINFORMATION_MESSAGEとして、
  ヴァージョン情報を表示するJDialogを作成せよ。
900デフォルトの名無しさん:04/01/25 14:18
JMenuItem
f[] = {___________________________, //ファイル関連のメニュー項目(配列)の宣言と生成
____________________________, //(編集メニューを参考に)
____________________________,
____________________________,
____________________________},
e[] = {new JMenuItem("切り取り(T)"), //編集関連のメニュー項目(配列)の宣言と生成
new JMenuItem("コピー(C)"),
new JMenuItem("貼り付け(P)"),
new JMenuItem("削除(L)")},
format = new JMenuItem("右端で折り返す(W)"),
version = new JMenuItem("ヴァージョン情報");
JButton b[] = {___________________________, //ボタン(配列)の宣言と生成
________________________,
________________________,
________________________,
________________________,
________________________};
901^^:04/01/25 14:50
#include<stdio.h>

#define ORIG_STR "ymq\n"
#define CIPHERKEY 1

void cipher(unsigned char n, unsigned char *a)
{
while (*a !='0'){
*a=(unsigned char)(*a ^ n);
a++;
n++;
}
}

int main(void)
{
unsigned char a[4] = ORIG_STR;
unsigned char n=CIPHERKEY;

cipher(n,a);
printf("%s\n",a);
cipher(n,a);
printf("%s\n",a);
exit (0) ;
}プログラムを実行した結果は
xor
ymq
となりました。どうしたらこういう実行結果になるのですか?
ただし、英小文字をあらわすASCIIコードは、a〜zで16進数で61〜7Aです。
902887:04/01/25 15:29
言いたいことは山ほどあるが、なんと言ってもアップ先を間違えてしまった。
これも>>886のせいにしてしまいたいが、みなさんごめんなさい。

>>886
ttp://up.isp.2ch.net/up/f35be3b37d2e.zip
乱数で移動させるとことか、もっと根本的な問題とか、コメント書いといたから読んどけ。
903デフォルトの名無しさん:04/01/25 16:54

ID 名前 得点評価
000010 John  85  B  ←名前をABC順にソートして、             
000020 Mary  54  C  ソートされた結果を、
000030 Dick  49  D  ←このような形式で出力するには
000040 Mark  89  B  どうしたらいいのでしょうか?
000050 Perry 94  A  お願いします。
000060 Ted  65  C
000070 Linda 52  C
000080 Tom  70  B
000090 Kate  97  A
このスレのVB版ってないのー?泣
>>903
IDとか名前とかって、どういう風にデータ持ってるの?
ただの配列?データ用のクラス?
プロッ・・・プログウラアァァァ ム?
ムム・・
プローーーーーーー!ラムムウ・・・・??
グラ、ムムムムムァァァォォォォ!!!!!
907デフォルトの名無しさん:04/01/25 21:04
>>905
ただの配列だと思います。
おねがいします。
908905:04/01/25 21:32
>>903
import java.util.*;
class Sort {
  public static void main(String[] args) {
    // データ
    String[][] data = {
      { "000010", "John", "85", "B", },
      { "000020", "Mary", "54", "C", },
      { "000030", "Dick", "49", "D", },
      { "000040", "Mark", "89", "B", },
      { "000050", "Perry", "94", "A", },
      { "000060", "Ted", "65", "C", },
      { "000070", "Linda", "52", "C", },
      { "000080", "Tom", "70", "B", },
      { "000090", "Kate", "97", "A", },
    };
    // ソート
    Arrays.sort(data, new Comparator() {
      public int compare(Object o1, Object o2) {
        return ((String[])o1)[1].compareTo(((String[])o2)[1]);
      }
    });
    // 表示
    for (int i = 0; i < data.length; i++) {
      for (int j = 0; j < data[0].length; j++) {
        System.out.print(data[i][j] + " ");
      }
      System.out.println();
    }
  }
}
909886:04/01/25 21:45
887さん、本当に助かりました。
エラーも減らしてみたのですが、
一つだけ解決できないエラーがあります。
確認メソッドの
void debug ();の行ですが、
↑に;がありません、と出ます。
;を足したら式の開始部分が不正になってしまうのです。
910デフォルトの名無しさん:04/01/25 21:48
↑の通りにするとエラーが100出てしまうのですが・・・
911887:04/01/25 22:45
>>898でアップされたファイル見たときも気になったんだけど、{}の対応がおかしくなってない?
エラーを減らしたって行ってるけど、>>902のソースは少なくともコンパイルエラーは出ないよ。
自分で{}を追加したりしてないとすれば、
IDEが気を利かせたつもりで変なことしたかもしれないので、
面倒だけど>>902のソースと1行ずつ見比べて、{}の対応がおかしくないか確認してみそ。
912905:04/01/25 22:49
>>910
言い忘れたが、全角スペースでインデントしてるので、半角スペース等に変えてくれ。
913887:04/01/25 23:22
>>886
すまん。気になって調べてたらバグ見つけた。
ってか、漏れが書いたとこじゃなくて、もともとあったやつだ。
あげなおすからちょっと待って。
914デフォルトの名無しさん:04/01/25 23:24
>>912
どうしてもエラーが出てしまいます・・・。
>>914
エスパーじゃないので、どんなエラーメッセージがでてるのか
書いていただかないとわかりません
916887:04/01/25 23:42
>>886
すまんかった。これでFAだ。
ttp://up.isp.2ch.net/up/a9ee963450bc.zip
917905:04/01/25 23:51
>>914
「不正な文字です」ってやつなら全角スペースを半角に変えてくれ。
そうでなかったらエラーを書いてくれ。
初心者スレにも書き込みしたのですが・・・・

jsp/servletを勉強しているのですが ブラウザに
1+2*3
というような式(中置記法)をフォームに入力し→javaで計算をし→jspページに飛ばし結果をブラウザに出力


といった作業をするプログラムを作成しようと思っています。
Integer.perseInt を使用し2項演算するプログラムは作成したことがあるのですが
今回は「+」や「−」といった演算子が数字の間にあるので、うまくプログラムを組め
ないでいます。

どのようにしたら四則演算を行うプログラムを組むことができるのでしょうか?
漠然とした質問ですみません。。。
ttp://www.hellohiro.com/rmiapplet.htm
このホームページではHelloWorldと表示されるだけですが
ここに画像を表示して、マウスのドラッグで画像が動くようにしてみたいのですが
どのようにすればいいのでしょうか。
よろしくお願いします。
920デフォルトの名無しさん:04/01/26 08:32
>>908、917様
できました。本当にありがとうございました。
感謝します。
>>918
+, - で token に分けて、2分木を作る。
各 node を今度は *, / で分けて 2分木を拡張させる。
( ) があるとややこしくなるが、とりあえずこれで式を構造に直せる。

そしたら計算していく。
演算子が node になってるところは 左右の 子nodeの結果を、演算子で結んで計算。
それを再帰的に。

>>919
よく分かってないからだと思うが・・・
そこは RMI の例で、わざわざそこを貼った意味は特に無いよな?
君がやりたいことには RMI は関係ないよな?
それともいちいち RMI 絡めるんか?
922919:04/01/26 16:10
>>921
説明足らずで申し訳ありません。
いちいちRMIを絡めないとだめなのです。
ほんまかいな。説明足らなすぎやがな。どう絡めるねん。言ってみ。
924919:04/01/26 16:37
import java.awt.*;
import java.awt.event.*;
import java.applet.*;

public class Applet2 extends Applet {
private int posX;
private int posY;
private Image img;

boolean isStandalone = false;
//引数値の取得
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}

925919:04/01/26 16:39
//アプレットの構築
public Applet2() {
}
//アプレットの初期化
public void init() {
try {
posX = 0;
posY = 0;
img = getImage( getDocumentBase(),"earth.gif" );

jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//コンポーネントの初期化
private void jbInit() throws Exception {
this.addMouseMotionListener(new java.awt.event.MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
this_mouseDragged(e);
}
});
}
926919:04/01/26 16:39
//アプレットの情報取得
public String getAppletInfo() {
return "Applet Information";
}
//引数情報の取得
public String[][] getParameterInfo() {
return null;
}

void this_mouseDragged(MouseEvent e) {
posX = e.getX() - 20;
posY = e.getY() - 20;
repaint();
}

public void paint( Graphics g ){
if( !g.drawImage( img,posX,posY,this))
g.drawString( "失敗",posX,posY );
}
}
927919:04/01/26 16:45
上記のappletのソースをJBuilder6で参考書どおりに作ってみました。
これとRMIを絡めてみたいと思ったのですが、ぜんぜんわからないんです。
私自身があまり理解していないので、説明不足だと思いますが
何をどのようにしたらいいのでしょうか。
お手数を掛けて申しわけありません。
928919:04/01/26 17:05
補足です。
前述のURLでは、HelloWorldとしか表示されませんが、
ここに画像を表示して、appletのソースにかかれているような
ことをやってみたいと思っています。
>>919
RMIのリモートインターフェースをさらせ。
それともクライアントもサーバも自分で書くの?
930919:04/01/26 17:43
import java.rmi.*;
interface HelloWorld extends Remote {
String sayHelloWorld() throws RemoteException;
}

これが、URLのソースなのですが、
Stringのところを変えればいいのかなと
安易に考えているのですが。
いかんせん、プリントのプログラムを機械的に
打っていただけの人間ですからどのようにしたらいいのかわからないんです。
何かありましたら、ずっと張り付いていますので。
何もわからず、本当にすいません。
931886:04/01/26 17:48
887さん、さっそくやってみました。
動きましたq(T▽Tq)(pT▽T)p
あとは色とかの調整をして提出するだけです。
本当にお世話になりました。
これからはしっかり勉強して、
人に教えられるようになりたいです。
ありがとうございました <(_ _)>
932929:04/01/26 18:04
>>919
漏れの想像では、すでにRMIのサーバとインターフェースは存在して、
それを使ってアプレットでクライアントを作ってみなさい、みたいのかと。
そうだったら、先生のくれたリモートインタフェースを見せてくれたら、
画像のドラッグなんかとどう絡むんだって疑問も解消するかもしれないしと。
まずは、課題の内容をできるだけさらしてくれ。
933887:04/01/26 18:07
>>886
漏れも変なことして追加ソース送ったりして、気づいてくれるか心配だったのよ。
でも、よかった。がんばってね。
934919:04/01/26 18:31
先生がくれたのは、前述のURLのRMI編そのままのコピーでした。
RMIを使ってappletを表示できるようにするのが課題です。
そこのホームページのRMI(アプレット)編をそのままコピーするのはまずいと思うので
画像を表示させればいいのかなと安易に考えていたのです。
RMI が何だか分かっているのかね。
例えば x を変数とする関数 f があったとする。
クライアントで x を決める。f がどんなものかはサーバしか知らない。
x だけサーバにおくり、サーバはクライアントにもらった x を元に、
f(x) の値のみを、クライアントにおくり返す。

このやりとりが、int y = server.f(x);
みたいにほとんどメソッド呼び出しだけでできる、というのが RMI の利点だ。
RMI を使うことだけが課題なら、画像表示なんて意味は無い。かえってめんどくさいだけ。
>>783 以降でも拾っていきなさい。
936921:04/01/26 19:07
>>918 の返答が無いので手すさびに作ってみた。

import java.util.*;

public class Q918 {
public static void main(String[] args) {
String equation = "3 + 4*10/9 - 12*3";

Q918 q918 = new Q918();
Node node = q918.createTree(equation, 0);
double value = node.getValue();
System.out.println(equation + " = " + value);
}

public Node createTree(String str, int level) {
String separators = (level == 0 ? "+- " : "*/ ");
StringTokenizer st = new StringTokenizer(str, separators, true);
if (st.countTokens() == 1) {
return new NumericNode(new Double(str).doubleValue());
}
//続く
937921:04/01/26 19:08
Node left = null;
OperatorNode ope = null;
while (st.hasMoreTokens()) {
String token = st.nextToken();
if (token.equals(" ")) {
//nop
} else if (separators.indexOf(token) != -1) {
OperatorNode node = new OperatorNode(token.charAt(0));
node.setLeft(left);
left = null;
ope = node;
} else {
Node node = createTree(token, level + 1);
if (ope == null) {
left = node;
} else {
ope.setRight(node);
left = ope;
ope = null;
}
}
}

return left;
}
}
938921:04/01/26 19:08
abstract interface Node {
public abstract double getValue();
}

class NumericNode implements Node {
private double value;

public NumericNode(double value) {
this.value = value;
}
public double getValue() {
return value;
}
}

class OperatorNode implements Node {
private char type;
private Node left, right;

public OperatorNode(char type) {
this.type = type;
}

public void setLeft(Node node) {
this.left = node;
}

public void setRight(Node node) {
this.right = node;
}
939921:04/01/26 19:09

public double getValue() {
double lv = left.getValue(), rv = right.getValue();
switch (type) {
case '+' :
return lv + rv;
case '-' :
return lv - rv;
case '*' :
return lv * rv;
case '/' :
return lv / rv;
default :
// no reach
throw new IllegalStateException();
}
}
}

940921:04/01/26 19:17
・Node は2分木の各ノードを表す。値を返す。
・2種あって、一つは数値そのもの。もう一つは演算子を表し、2つの Node をその演算子で繋ぐ。
・数値を表す Node はもちろんその値をそのまま返す。
 演算子の方は、Node 二つを演算子で計算して返す。
 それぞれの子Node もやはり演算子であったなら、再帰的に計算される。
・createTree で解析する。最初は +, - だけでわける。
 すると 4*10/9 なんていう +, - を含まない塊ができるから、
 これをまた createTree につっこむ。その時引数 level に 1 をいれておくと、*, / で分ける。
 工夫次第で % だの ^ だのも使える。() は考えてない。
・最後に現れた + もしくは - がルートになる。これを main で使う。
 getValue すればそれでいい。
・文法エラーチェックしてない。
941929:04/01/26 19:31
おお。頑張ろうか思ったら>>935で解決ね。

>>921
実はその質問、マルチポストで、初心者スレの976あたりで、
本人が逆ポーランド記法を使いますと自己解決してたり。
942921:04/01/26 19:37
そんならここにもそう書いてほしかった。。。
>>921
どんまいどんまい。ソースは漏れがシカと見せていただきました。
ちょっとカッコいいね。
944919:04/01/26 20:19
>>935,>>941

お手数掛けました。RMIについてはよくわかっていませんし、
>>783は自分らがやっていることに比べて高度すぎるので
一発でばれちゃいます。
もっと簡単かつ前述したURL(ttp://www.hellohiro.com/rmiapplet.htm)に
近い形の簡単なソースはないのでしょうか。
本当に無礼だとは思いますが、提出が明日で切羽詰っているので。
すいません。
945929:04/01/26 21:36
>>919
っていうか、アプレットだけで済むと思ってるのかもしれないけど、
そのURLで言えばRMI編に出てくるサーバとリモートインターフェースの実装も書かないといけないよ?
あせってるのは分かるがせっかく>>935が分かりやすく説明してくれたんだから、
ちゃんと読んでたら>>783が高度すぎるなんてことは思わないと思うが。
いかにもそのURL見て、ちょいと変えて作ったなっぽいの作るからちょっと待って。
946929:04/01/26 22:18
>>919
ttp://up.isp.2ch.net/up/c55a6323bee2.zip
全部同じフォルダでも実行できるけど、RMIの意味が無いから、
ちゃんと書いてある通りフォルダに分けて実行してみてね。がんがれ。
947919:04/01/27 12:03
>>929
ありがとうございました。本当に助かりました。
929様からいただいたソースを自分の理解できる範囲で改造して
提出しました。なんとかいけそうです。

こんなバカモノのために貴重なお時間をさいていただいてありがとうございました。
こんなことを二度と起こさないよう精進してがんばっていきたいと思います。
本当にありがとうございましたm(__)m

javaの宿題を出されてかなり困っています。
borland Jビルダー7を使っています。

これでゲームを作れと言われて、簡単なじゃんけんゲームを作ろうと思ったのですが、
もはや手詰まりになってしまって・・・。
みなさんのお力を貸して頂けたらと・・。

グー、チョキ、パー、リスタートのボタンがあり、
リスタートを押すとグーなどの画像(自作)がシャッフルされ、
グーなどのボタンを押すと、結果画面(あいこ、まけ、など)が表示される。
そしてまたリスタート押すと・・・ループ。

こんなゲームを作りたいのですが、お願いできるでしょうか。
できた
http://up.isp.2ch.net/up/5d933bf0e0d3.zip

画像は自分で作って (00, 01, 02, 10, 11, 12 各 jpg で)
細かいこと考えてないから あとでまた聞いて
950デフォルトの名無しさん:04/01/28 11:35
問題1 数値積分の台形則を利用して、分割数nを引数(int型)と∫x^2dx(0≦x≦1)を戻り値(double型)とするクラスメソッド(quadrature)を作成ことにより、分割数nを10^0〜10^3と細かくしたときの厳密解に対する相互誤差を出力するjavaプログラムを作成せよ。
問題2 ニュートン・ラフソン法を利用して、f(x)=x^5−100と定義して、double型で計算することをにより、100^1/5(有効数字7桁)を数値的に求めるjavaプログラムを作成せよ。なお、初期値をx=3とする。

 以上の2問です。本当によろしく御願い致します。
951崖っぷち:04/01/28 13:41
誰か助けてください!
大学でレポートが出されまして、これが明日までに出来ないと留年してしまいます!
どなたか宜しくお願いします・・・・(T_T)

行列AのN乗を求めるプログラムを記述せよ。
ただしAの入力は void getdata(int *n,double **a)を呼び出せば
サイズnとデータaの入力が出来るものとする。

っていうものです。このままでは本当に留年が確定してしまうのでどなたか助けてください・・・・・
残念。第4水曜はこのスレの定休日です。
てゆうかJavaの課題なの?
マルチポストかよ!
>>952-953>>951へのレスです。スレ汚しスマソ
>>950
すまん。台形則もニュートンラフソンも分からん厨なのだが、問題2は
ttp://www.mech.tohoku-gakuin.ac.jp/nken/java/newton.html
は参考になる?
public static double quadrature(int n) {
double h1 = (double)n*(double)n*(double)n;

double s = 0.0;
for (double m=1.0; m<=(double)n; m += 1.0) {
  //台形公式からつきつめていくとこうなる
s += (m*m + 0.5 - m)/h1;
}
return s;
}
>>950
これ参考にして。あとは「相対誤差」が具体的にどういう表し方のものか分からないからできない。
あ、これもそのまま使えるか。
int n = 1;
for (int i=0; i<=3; i++) {
double s = quadrature(n);
System.out.println("n = 10^" + i + " : " + s);
n *= 10;
}
958助けて!!:04/01/28 19:44
1から8までの数字が書いてある8つの正方形のこまが3×3の空間に下図左の
ように置いてあります。0の所に駒を滑らせて入れる操作を繰り返して下図
右の終了状態を作りたい。これを解くプログラムをC言語で作成してください。
内容説明していただけるとありがたいです。
  初期状態      終了状態
  
  283       123        
  164       804
  705       765

これが、できなくて困ってます。
助けてください。お願いします。
またかよ。しかもここは Java スレだボケ死ね。
そもそもユーザによる操作なのか、それとも解法を考えてプログラムにさせるのか。
後者の場合、GUI は必要なのかそれとも解法を解説できればいいのか。
前者あるいは後者で GUI が必要な場合、プラットフォームは何なのか。
それぐらい書け。書けなきゃ留年しろ。
960助けて!!:04/01/28 20:15
>>959
無知な者で、すいませんでした。
961デフォルトの名無しさん:04/01/29 14:46
import java.io.*;

public class P1 {
public static void main(String[] args) {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

System.out.println("文字列を入力して、エンターを押してください。");

try {
String s = br.readLine();
int i = s.length();
String msg = "入力した文字列の長さは " + i + "です。";
System.out.println(msg);
} catch (IOException e) {
System.out.println("エラーが発生しました。");
}
}
}
962961 :04/01/29 14:46
上のプログラムを変更して、
文字列を入力してエンターを押すと、この文字列の中に"a"のみからなる
文字列の最初の文字列を求めて表示し、ない場合は「ありません」と表示
したいのですが、分からないので助けて下さい。

例えば、

sdaaddfadtだと…最初の文字列はaaです。
btgertだと…ありません
saseaaassaだと…最初の文字列はaです。

というふうにしたいんです。
int index = s.indexOf("a");
if (index == -1) {
 //ありません
} else {
 String found = "";
 while ((index < s.length()) && (s.charAt(index) == 'a')) {
  found += "a";
  index++;
 }
 //最初の文字列は found
}
964961:04/01/29 15:39
>>963
レスありがとうございます!
でもごめんなさい、どうしたらいいのかわからないのですが…
int i= 〜 (msg); と差しかえ。
メッセージ表示くらいは自分で類推してみよう
966961:04/01/29 16:20
>>965たびたびすみません!最後の

 //最初の文字列は found
この部分を教えていただけませんか?
967961:04/01/29 16:46

あ、自己解決できました。本当にありがとうございました!!!
968948:04/01/29 19:04
>>949さん

自分で頼んでおいて、返信遅れて申し訳ない。
わざわざありがとうございます。

作って頂いたzipファイルを落とそうとしたのですが、
そのファイルは見当たりませんと出て、落とせませんでした。

なんだか図々しいですが、もう一度アップをお願い出来ませんでしょうか。
お手数おかけします、宜しくお願いします。
http://up.isp.2ch.net/up/96bde5a8623b.java

すーぐおとせ やれおとせ
970948:04/01/29 20:18
落とさせて頂きました。

助かります、わざわざありがとうございました。
初心者スレが荒れているのでこちらに質問を転載させていただきます
現在、中位記法から逆ポーランド記法へ変換するプログラムを書いているところなのですが....


if(arraList.get(size) == 1から10までの数字){

  //リストのトップが演算子だったらそのままリストに追加
if(arrayList.get(size-1) == "演算子" {  
tmp = s.charAt(i);           //式中の i 番目の要素を tmp へ
arrayList.add("" + tmp);
}
  //(size -1)番目が整数なら { (size -1)番目の要素*10 + (size)番目の要素 }
else{         
********************************
********************************
********************************
}
}

となるようにプログラムを書きたいのですが、***で書いた部分がどうしてもできないのです。

charAt() を利用して式の要素を一文字ずつ読み取っているため一つ前の要素が数字だったら
数字を合成してあげないと計算ができないんですよ。。。。
[1, 2, +, 3]
と格納されているものは
[12, +, 3]
と形を変えたいといえばわかりやすいでしょうか?
こちらもできたらソースを書いていただけると助かります
>>971
>   //(size -1)番目が整数なら { (size -1)番目の要素*10 + (size)番目の要素 }
973971:04/02/01 14:31
>>971
ちょうどそこの作業ができずにかれこれ3日ほど悩んでいます。。。
なにとぞご教授を
>>973
とりあえず s, size, i の意味を教えてもらおうか
975デフォルトの名無しさん:04/02/01 15:25
http://www.vc-net.ne.jp/~ytp/bbs/java/index.html
ここの17915
にソースを掲載しました
よろしくおねがいします
976973:04/02/01 15:26
>>974

書き忘れましたが975は私です
>>975
arrayList.set(size-1, (String)arrayList.get(size-1) + Data);
とかどうよ?

あと,
・文字列の比較はString.equalsを使うべき
・sign変数を使わずにStack.emptyを使うべき
・data変数とData変数があるのは紛らわしいのでやめるべき
・ArrayListとStackを混在しているのはなぜ?
978975:04/02/01 19:06
>>977

>・文字列の比較はString.equalsを使うべき
最初に charAt で一文字ずつString型のデータを読み取れるのを知ったので String.equals("")
みたいな使い方をしなかったんですよ。。。

>・sign変数を使わずにStack.emptyを使うべき
ごもっともです。。ご指摘ありがとうございます

>・data変数とData変数があるのは紛らわしいのでやめるべき
Data変数をなにか別の変数に変えてみます

>・ArrayListとStackを混在しているのはなぜ?
ArrayList は push した順番に pop する必要がないので逆ポーランド記法に式を並べ替えたあと

for(int i =0;i<data.length;i++){
A = arrayList.get(i);
*
*
*
}
のようにして0番地からでも値を取り出せるので使っていました。
また、stack は一つ前のスタック領域にある演算子のみを取り扱うために作りました
>>978
> >・data変数とData変数があるのは紛らわしいのでやめるべき
> Data変数をなにか別の変数に変えてみます
Java では慣習的に
・変数名,メソッド名は小文字から
・クラス名,インターフェース名は大文字から
となっています
980デフォルトの名無しさん:04/02/02 07:19
>>979
知らなかったです!!
ありがとうございました
981java3D超初級者
3Dキャンパス上で初めからある3Dポリゴンや3Dな線などをAとします。
新たに3DポリゴンがButton追加ボタンにより追加されました。これをBとします。
Button再描画ボタンを押すと、AはそのままでBだけを削除するプログラムを作成せよ

だれかこの課題の答えを教えてください;