【好調】Java の宿題ここで答えます【三巡目】
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
NGNG・丸投げOK なるべく問題文を直接うpしておくれよ
・前提条件も全部出しておくれよ 数学関係は数式も出しておくれよ
・GUI 関係などは基本的に放置
・内容単純でも規模デカすぎるのはマンドクセェから省略
・JavaScript など、他言語の課題は徹底的にゴルァ
【附則】
・ポストの前に自助努力 キーワードくらいググらんかボケェ
・ウゼェ問題設定と屑コードの穴埋め問題は徹底糾弾 出題者は謝罪しる
・自前のコードがあれば迷わずコピペ
・エラーが出たらエラーメッセージをコピペ
・戦果があった場合は報告をキボンヌ
【前スレ】
Java!宿題!(ttp://pc5.2ch.net/test/read.cgi/tech/1096959843/)
Java の宿題ここで答えます。(ttp://pc5.2ch.net/test/read.cgi/tech/1089527630/)
0002デフォルトの名無しさん
NGNGその色相ヒストグラムの色相値2.5〜45までを平滑化するメソッドはどのようにすればいいでしょうか?
0003古代帝國富士皇朝総帥・伯壬旭
NGNGdouble[] smoothImage(double[] hue, int width, double lead, double anchor) {
double[] newhue=new double[hue.length];
int[] del={-(width+1), -width, -(width+1), -1, 0, +1, (width-1), width, (width+1)};
for(int i=0; i<hue.length; ++i) {
if(hue[i]>=lead && hue[i]<=anchor) {
double value=0;
double count=0;
for(int k=0; k<del.length; ++k) {
int idx=i+del[k];
if(idx>=0 && idx<hue.length) {
value+=hue[idx];
count+=1;
}
}
newhue[i]=value/count;
} else {
newhue[i]=hue[i];
}
}
return newhue;
}
0004古代帝國富士皇朝総帥・伯壬旭
NGNG上記のメソッドを呼び出す時は、>>2の要求ならこんな感じで
double[] newhue = smoothImage(hue, 640, 2.5, 45);
hueは全ピクセルの色相値(Hue)が入ってる配列で、返値の
newhueは、平滑化された新しいHue値が入ってる配列。
0005間違えた 訂正
NGNGdouble[] smoothImage(double[] hue, int width, double lead, double anchor) {
double[] newhue=new double[hue.length];
int[] offsetC={-(width-1), -width, -(width+1), -1, 0, +1, (width-1), width, (width+1)};
int[] offsetL={-width, -(width+1), 0, +1, width, (width+1)};
int[] offsetR={-(width-1), -width, -1, 0, (width-1), width};
int[] offset;
for(int i=0; i<hue.length; ++i) {
if(hue[i]>=lead && hue[i]<=anchor) {
double value=0;
double count=0;
if(i%width==0) offset=offsetL;
else if(i%width==width-1) offset=offsetR;
else offset=offsetC;
for(int k=0; k<offset.length; ++k) {
int idx=i+offset[k];
int line=i/width;
if(idx>=0 && idx<hue.length) {
value+=hue[idx];
count+=1;
}
}
newhue[i]=value/count;
} else {
newhue[i]=hue[i];
}
}
return newhue;
}
0006デフォルトの名無しさん
NGNG初心者すぎてごめんなさい…よろしくお願いします。
0007デフォルトの名無しさん
NGNG簡単すぎる。答える気にもならない。
それくらい自分でやってください。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNG正確には、jspかServlet内でVBscriptで作った関数を使いたいんですよ。
0012デフォルトの名無しさん
NGNGよろしくお願いします。
0013デフォルトの名無しさん
NGNGpublic static int getLevenshteinDistance (String s, String t) {
if (s == null || t == null) {
throw new IllegalArgumentException("Strings must not be null");}
int n = s.length(); // length of s
int m = t.length(); // length of t
if (n == 0) {
return m;
} else if (m == 0) {return n;}
int p[] = new int[n+1]; //'previous' cost array, horizontally
int d[] = new int[n+1]; // cost array, horizontally
int _d[]; //placeholder to assist in swapping p and d
// indexes into strings s and t
int i; // iterates through s
int j; // iterates through t
char t_j; // jth character of t
int cost; // cost
for (i = 0; i<=n; i++) {p[i] = i;}
for (j = 1; j<=m; j++) {
t_j = t.charAt(j-1);
d[0] = j;
for (i=1; i<=n; i++) {
cost = s.charAt(i-1)==t_j ? 0 : 1;
// minimum of cell to the left+1, to the top+1, diagonally left and up +cost
d[i] = Math.min(Math.min(d[i-1]+1, p[i]+1), p[i-1]+cost);
}
// copy current distance counts to 'previous row' distance counts
_d = p;p = d;d = _d;}
return p[n];
}
エディットグラフをO(M)で計算する方法はわかったのですが、
これから最適解を求める場合どうすればいいですか?
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG0016デフォルトの名無しさん
NGNG0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG�@問題文は自己省略せずに、直接全部貼り付けてください。
宿題&課題をそのまま丸投げするのが、一番好ましい提示法です。
�A数学問題は何々法でせよだけでなく、その解を出す為の数式を
具体的に詳細に説明してください。
ただ、数学問題の回答率は低いです・・・。
�B宿題&課題とその回答プログラムに対する質問はOKですが、
それ以外の質問はここではしないでください。
�CJavaScriptなど、他言語の課題はやめてください。
�Dもし自分の提示課題への回答プログラムが返って来たら、
動いた動かなかった位の返レスをお願いします。
0019デフォルトの名無しさん
NGNG�@ 問題文は自己省略せずに、直接全部貼り付けてください。
宿題&課題をそのまま丸投げするのが、一番好ましい提示法です。
�A 数学問題は何々法でせよだけでなく、その解を出す為の数式を
具体的に詳細に説明してください。
ただ、数学問題の回答率は低いです・・・。
�B 宿題&課題とその回答プログラムに対する質問はOKですが、
それ以外の質問はここではしないでください。
�C JavaScriptなど、他言語の課題はやめてください。
�D もし自分の提示課題への回答プログラムが返って来たら、
動いた動かなかった位の返レスをお願いします。
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGしかし、このスレが落ちてなかったのは、ム板の過疎ぶりを示してるなw
0023デフォルトの名無しさん
NGNG見事にテンプレ間違ってると思ったら、そういうことか。
>>22
なんで怒ってんの?
0024デフォルトの名無しさん
NGNGファイル中に出現する単語を,一行に一単語ずつ出力するプログラムを作成せよ。
なお,単語と単語はすべてスペースで分かち書きされている。
なお,ピリオドは無いが,省略形を意味するピリオドは含まれている。
この100行(与えられたテキストファイルが100行ありました)の単語数はいくつになるか,それも出力せよ。
(1)上記の仕様を満たすプログラムを,ファイルから一文字ずつ入力することで実装せよ。
(2)上記の仕様を満たすプログラムを,ファイルから一行ずつ入力することで実装せよ。
この場合,一行をStringとして取り込み,StringTokenizerクラスを用いることで実装せよ。
という宿題がありまして、本を見ながら自分でやってみたのですが、与えられたテキストファイル(a.txt)を実際に
どう読みこませたらいいのか分かりません。
なので、自分のプログラムがあってるかどうかがわからないのですが、
どのようにすればいいのでしょうか?
↓に自分が作ったプログラムの出だし部分を書いておきます。
import java.io.*;
class program {
public static void main(String[] args) {
try{
FileReader file = new FileReader(args[0]);
…
a.txtという文字がプログラムにないので、ただ実行しただけじゃどうにもならないということは分かるんですが。
お願いします。
0025デフォルトの名無しさん
NGNGjava program a.txt
と実行するとか・・・
0026デフォルトの名無しさん
NGNGをお願いします。
ttp://sparrow.math.ryukoku.ac.jp/~junta/edu/graphics/note.pdf
ここの第11章、第12章を参考にして、サンプルのプログラムのように作ってください。
スタートやストップといったボタンの設定の気ずかいは不要です。あつかましいですが、木曜までにおねがいします。
木曜までに
0027デフォルトの名無しさん
NGNG>StringTokenizer は、互換性を維持する目的で保持されているレガシークラスであり、
>新規コードでは使用が推奨されていません。この機能の使用を考えているなら、
>String の split メソッドまたは java.util.regex パッケージを代わりに使用することを
>お勧めします。
とあるけど、結構使うの見るなあ。なんでだろ
0028デフォルトの名無しさん
NGNGimport java.io.*;
import java.util.*;
public class CBLW{
private static void read(File f, HashMap<String, Integer> map, ArrayList<String> list)throws IOException{
BufferedReader br = new BufferedReader(new FileReader(f));
String line;
while((line=br.readLine()) != null){
StringTokenizer st = new StringTokenizer(line);
while(st.hasMoreTokens()){
String word = st.nextToken();
Integer q = map.get(word);
int c = 0;
if(q != null) c = q.intValue();
else list.add(word);
map.put(word, new Integer(++c));
}
}
br.close();
}
0029デフォルトの名無しさん
NGNGpublic static void main(String[] args)throws IOException{
File f = new File(args[0]);
HashMap<String, Integer> map = new HashMap<String, Integer>();
ArrayList<String> list = new ArrayList<String>();
read(f, map, list);
print(map, list);
}
}
仕様を満たしていない気がしますが、そのあたりは適当に書き換えてください。
0030デフォルトの名無しさん
NGNGこれを28と29の間に…orz
private static void print(HashMap<String, Integer> map, ArrayList<String> list){
for(int i=0; i<list.size(); i++){
String word = list.get(i);
System.out.print(word+" ");
System.out.println(map.get(word));
}
}
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNG0033デフォルトの名無しさん
NGNGおー。5.0でやっと公式にレガシークラスになったのかヽ(´∀`)ノ
0034M.B.
NGNGこのコードまみれの殺伐とした雰囲気が
読めていない香具師がいるようだな
∧_∧
∧_∧ (`<_´ ) 賤業意識が抜けないところが
( ´_ゝ`) 〈 ⌒i 旧世代だわね兄者
/ \ / | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ IBM / .| |____
\/____/ (u っ
0035デフォルトの名無しさん
NGNG0036M.B.
NGNG0037デフォルトの名無しさん
NGNG2chでだらだらと続けられても困る。
http://www.wikiroom.com/java/?%a5%bd%a1%bc%a5%b9%c5%bd%c9%d5%a4%b1
0038M.B.
NGNG快調に動いているとかいう話をしたいのだがな
∧_∧
∧_∧ (`<_´ ) さっさと別スレを立てなさい兄者
( ´_ゝ`) 〈 ⌒i
/ \ / | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ IBM / .| |____
\/____/ (u っ
0039デフォルトの名無しさん
NGNG0040M.B.
NGNGASP はぜんぜん知らんが、Web コンテンツ間で制御を渡すカラクリは
けっきょく post か get しかないだろうから、
それぞれ別 port を監視するコンテンツサーバーを
個別に走らせるか(Oracle みたいな DB だって、
普通はサーバとして動いている)、よくあるコンテンツ
サーバーシステム(Micromedia の ColdFusion とか)みたいに
サーバーの二階建てをやらかすとかすれば、とりあえず
相互利用は可能と思われ。
……漏れはマンドクセと思ったので、オライリー本
(『Tomcat ハンドブック』)に従って
Tomcat を単独で立てるスタイルを選択したが。
0041M.B.
NGNG二百行未満で書けちゃうので、見るとがっかりすると思うが。
「Tomcat + JSP」というアイデア一発のネタだし、
「できる」ということが解れば、似たようなものを作るのは
簡単だし、そこそこプログラム書ける香具師だったら、
けっきょく同じようなコードになると思われ。
前スレ埋めるついでに晒すかな?
JSP にはまだ不慣れ(つーか仕事で ColdFusion を
やらされてるのだが、マイナーなので人の手当ができず、
もっとメジャーな別システムに移植できんかと思って
Tomcat をいじりはじめたのだ)なので、
「なんつーダサいコードだ」と笑われそうだが。
0042M.B.
NGNG∧_∧
∧_∧ (`<_´ ) もはやスレ違いを指摘する気力も
( ´_ゝ`) 〈 ⌒i ありませんわ兄者
/ \ / | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ IBM / .| |____
\/____/ (u っ
0043M.B.
NGNG罪悪感があるのだが
∧_∧
∧_∧ (`<_´ ) 無駄なのは正しい認識だけど、
( ´_ゝ`) 〈 ⌒i それが『2ちゃんねる』ですわ兄者
/ \ / | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ IBM / .| |____
\/____/ (u っ
004424
NGNGみなさんありがとうございました。
0045M.B.
NGNG問題文を直接コピペせずに、リンクだけ張るのは
文学的にいかがなものかと
∧_∧
∧_∧ (`<_´ ) 「丸投げOK」といっても、
( ´_ゝ`) 〈 ⌒i 節度というものが欲しいわよね兄者
/ \ / | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ IBM / .| |____
\/____/ (u っ
0046デフォルトの名無しさん
NGNG第12章のサンプルのソースで形はできているのだが、自分も勉強中の身なので、動画をつくるのが難しい。
すまん俺では力になれそうにない。
誰か賢い人よ、あとはまかせた。
0047とある賢い人(自称)
NGNGなんか面倒そうなのでスルー。
神を待て。
0048>>26 その1
NGNGimport java.awt.image.*; import java.util.*; import java.util.Timer;
public class HW51 extends JApplet {
static final double XMIN = -1, XMAX = 1, YMIN = -1, YMAX = 1, ZMIN = -1, ZMAX = 1;
static final int N = 20;
double z[][] = new double[N][N];
double degX = 45, degY = 45;
double radX = Math.toRadians(degX), radY = Math.toRadians(degY);
int prevX, prevY;
boolean moveF;
int moveP = 10;
BufferedImage img = new BufferedImage(400, 400, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = img.createGraphics();
JLabel lab = new JLabel(new ImageIcon(img));
synchronized void moveZ() {
if (moveF) {
--moveP;
if (moveP <= -10) moveF ^= true;
} else {
++moveP;
if (moveP >= 10) moveF ^= true;
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
z[i][j] = 0.4 * Math.sin(2.0 * Math.PI / N * i) * Math.sin(2.0 * Math.PI / N * j)
* ((double) moveP / 10);
}
}
}
0049>>26 その2
NGNGfor (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
z[i][j] = 0.4 * Math.sin(2.0 * Math.PI / N * i) * Math.sin(2.0 * Math.PI / N * j);
}
}
lab.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
prevX = e.getX(); prevY = e.getY();
}
});
lab.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
int addX = (e.getX() - prevX) / 4 * 4;
int addY = (e.getY() - prevY) / 4 * 4;
if (addX == 0 && addY == 0) return;
degY += addX;
if (degY >= 360) degY = 0;
else if (degY < 0) degY = 359;
degX += addY;
if (degX >= 360) degX = 0;
else if (degX < 0) degX = 359;
prevX = e.getX(); prevY = e.getY();
radX = Math.toRadians(degX); radY = Math.toRadians(degY);
draw();
}
});
g.setBackground(Color.white); g.setColor(Color.black); getContentPane().add(lab); draw();
new Timer().schedule(new TimerTask() {
public void run() { moveZ(); draw(); }
}, 1000, 100);
}
0050>>26 その3
NGNGg.clearRect(0, 0, img.getWidth(), img.getHeight());
double xx[][] = new double[z.length][z.length];
double zz[][] = new double[z.length][z.length];
double sinA = Math.sin(radX), sinB = Math.sin(radY);
double cosA = Math.cos(radX), cosB = Math.cos(radY);
double x, y, y0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
x = XMIN + (XMAX - XMIN) / N * i; y = YMIN + (YMAX - YMIN) / N * j;
y0 = y * cosA - z[i][j] * sinA;
zz[i][j] = y * sinA + z[i][j] * cosA; xx[i][j] = x * cosB - y0 * sinB;
}
}
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N - 1; j++) {
int xpg[] = { transX(xx[i][j]), transX(xx[i + 1][j]),
transX(xx[i + 1][j + 1]), transX(xx[i][j + 1]) };
int zpg[] = { transZ(zz[i][j]), transZ(zz[i + 1][j]),
transZ(zz[i + 1][j + 1]), transZ(zz[i][j + 1]) };
g.drawPolygon(xpg, zpg, xpg.length);
}
}
lab.repaint();
}
int transX(double x) {
return (int) ((x - XMIN) / (XMAX - XMIN) * getSize().width * 0.8 + (getSize().width * 0.1));
}
int transZ(double z) {
return (int) ((ZMAX - z) / (ZMAX - ZMIN) * getSize().height * 0.8 + (getSize().height * 0.1));
}
}
0051古代帝國富士皇朝総帥・伯壬旭
NGNG全部コピペしてコンパイル。
回転、アニメ、バッファ付きの課題3です。
0052どうすればいいの?
NGNGJavaアプレットから、CGIへデータをPOSTするにはどのようにすれば
いいのでしょうか?
URLConnectionを使えばいいのかSocket使えばいいのかわかりませんし、
マルチパート形式でPOSTすると受け取るCGI側で「バウンダリがおかしい
じゃねえかごるぁ」と起こられますしで、泣きが入ってます。
(´Д゜)どなたかおしえてください
0053古代帝國富士皇朝総帥・伯壬旭
NGNG失礼。一部間違えました。
(それでも動くけど、アプレットサイズを縦横400以上にすると、
一部画像が欠けてしまう)
訂正版を下に貼るので、そっちを提出してください。(それも課題3)
0054>>26 真その1
NGNGimport java.awt.image.*; import java.util.*; import java.util.Timer;
public class HW51 extends JApplet {
static final double XMIN = -1, XMAX = 1, YMIN = -1, YMAX = 1, ZMIN = -1, ZMAX = 1;
static final int N = 20;
double z[][] = new double[N][N];
double degX = 45, degY = 45;
double radX = Math.toRadians(degX), radY = Math.toRadians(degY);
int prevX, prevY;
boolean moveF; int moveP = 10;
BufferedImage img; Graphics2D g; JLabel lab = new JLabel();
synchronized void moveZ() {
if (moveF) {
--moveP;
if (moveP <= -10) moveF ^= true;
} else {
++moveP;
if (moveP >= 10) moveF ^= true;
}
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
z[i][j] = 0.4 * Math.sin(2.0 * Math.PI / N * i) * Math.sin(2.0 * Math.PI / N * j)
* ((double) moveP / 10);
}
}
}
int transX(double x) {
return (int) ((x - XMIN) / (XMAX - XMIN) * getSize().width * 0.8 + (getSize().width * 0.1));
}
int transZ(double z) {
return (int) ((ZMAX - z) / (ZMAX - ZMIN) * getSize().height * 0.8 + (getSize().height * 0.1));
}
0055>>26 真その2
NGNGfor (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
z[i][j] = 0.4 * Math.sin(2.0 * Math.PI / N * i) * Math.sin(2.0 * Math.PI / N * j);
}
}
lab.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
prevX = e.getX(); prevY = e.getY();
}
});
lab.addMouseMotionListener(new MouseMotionAdapter() {
public void mouseDragged(MouseEvent e) {
int addX = (e.getX() - prevX) / 4 * 4;
int addY = (e.getY() - prevY) / 4 * 4;
if (addX == 0 && addY == 0) return;
degY += addX;
if (degY >= 360) degY = 0;
else if (degY < 0) degY = 359;
degX += addY;
if (degX >= 360) degX = 0;
else if (degX < 0) degX = 359;
prevX = e.getX(); prevY = e.getY();
radX = Math.toRadians(degX); radY = Math.toRadians(degY);
draw();
}
});
getContentPane().add(lab); draw();
new Timer().schedule(new TimerTask() {
public void run() { moveZ(); draw(); }
}, 1000, 100);
}
0056>>26 真その3
NGNGif (img == null) {
img = new BufferedImage(getSize().width, getSize().height, BufferedImage.TYPE_INT_ARGB);
g = img.createGraphics();
g.setBackground(Color.white); g.setColor(Color.black);
lab.setIcon(new ImageIcon(img));
}
g.clearRect(0, 0, img.getWidth(), img.getHeight());
double xx[][] = new double[z.length][z.length];
double zz[][] = new double[z.length][z.length];
double sinA = Math.sin(radX), sinB = Math.sin(radY);
double cosA = Math.cos(radX), cosB = Math.cos(radY);
double x, y, y0;
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
x = XMIN + (XMAX - XMIN) / N * i; y = YMIN + (YMAX - YMIN) / N * j;
y0 = y * cosA - z[i][j] * sinA;
zz[i][j] = y * sinA + z[i][j] * cosA; xx[i][j] = x * cosB - y0 * sinB;
}
}
for (int i = 0; i < N - 1; i++) {
for (int j = 0; j < N - 1; j++) {
int xpg[] = { transX(xx[i][j]), transX(xx[i + 1][j]),
transX(xx[i + 1][j + 1]), transX(xx[i][j + 1]) };
int zpg[] = { transZ(zz[i][j]), transZ(zz[i + 1][j]),
transZ(zz[i + 1][j + 1]), transZ(zz[i][j + 1]) };
g.drawPolygon(xpg, zpg, xpg.length);
}
}
lab.repaint();
}
}
0057デフォルトの名無しさん
NGNGそのCGIは、画像掲示板みたいに、投稿者名、タイトル名、画像データなどの
マルチパートだけを扱ってるのですか?
それとも、単純にContent-Typeがimage/jpegでも送れるのですか?
0058デフォルトの名無しさん
NGNG全角文字列の中から、ある1バイト文字を抽出したくないんですが、
これのメソッドってありますでしょうか?
具体的に言いますと、"^"<-(アスタンなんとかっていう名前の山みたいな記号)
これと同じものが、”タ”という全角文字の中に入っているんですが、
JAVA の string indexOf や、split なんかだと
気が利きすぎて、検索ヒットしてしまい、抽出すると、
文字が崩れてしまうんです
これ、全角文字は全角文字として検索に該当しないようにするメソッドが
ありましたら、お教えください。
VC++ では、tcstok というAPIでうまくスルーしてくれるみたいです。
よろしくお願いします
0059デフォルトの名無しさん
NGNG質問は質問スレへ
タは\u30BFで、~は\u007E。
どうやったってindexOfやsplitで引っかかるはずはない。
0060どうすればいいの?
NGNG> そのCGIは、画像掲示板みたいに、投稿者名、タイトル名、
> 画像データなどの
> マルチパートだけを扱ってるのですか?
そんなかんじです。お絵かきした画像をpngかgifで
CGIにポストして、CGIは受け取ったデータを解析して
テキストはテキストファイルに、画像は画像として
サーバーに保存させたいのですが…。
テキストデータだけならURLConnectionはって、
プリントストリーム作ってPOSTできたのですが、
画像データとかとなるとわけわかりません(´_`;)
ほんとなにがなにやら、です。自分でも何言ってるか
わからんです
0061デフォルトの名無しさん
NGNG特殊な実装をされた偽Javaを使ってるに違いない。
0062デフォルトの名無しさん
NGNGすみません ~ ではなく、
^ (山みたいなやつ)のほうです。
ていうか質問スレに書きます。
間違えてすみませんでした
0063デフォルトの名無しさん
NGNG単純に画像データを送るなら、これで・・・・
byte[] imageData;
URL url = new URL("送信先URL");
HttpURLConnection cone = (HttpURLConnection) url.openConnection();
cone.setRequestMethod("POST");
cone.setRequestProperty("Content-Type", "image/jpeg");
cone.setRequestProperty("Content-Length", String.valueOf(imageData.length));
OutputStream out = cone.getOutputStream();
out.wirte(imageData);
0064デフォルトの名無しさん
NGNG神キタ━━━━━━(゚∀゚)━━━━━━!!
0065デフォルトの名無しさん
NGNGありがとうございます!
これを参考に1と2をがんばります!
0066どうすればいいの?
NGNGありがとうございます。
でもこのばあい、どうやってCGIでデータを取得すれば?
テキストを取得するときとまったくおなじでいいんでしょうか???
今日は落ちますので、また明日実に来ます。
0067sage
NGNG<!---
function Mcheck(){
if (document.MAIL.Namae.value==""){
window.alert("名前を入力してください");
}
if (document.MAIL.Email.value==""){
window.alert("メールを入力してください");
}
return false
}
//--->
</script>
全然動かず、どうやったらいいのか誰か教えてください。お願いいたします。
0068デフォルトの名無しさん
NGNG�@ 問題文は自己省略せずに、直接全部貼り付けてください。
宿題&課題をそのまま丸投げするのが、一番好ましい提示法です。
�A 数学問題は何々法でせよだけでなく、その解を出す為の数式を
具体的に詳細に説明してください。
ただ、数学問題の回答率は低いです・・・。
�B 宿題&課題とその回答プログラムに対する質問はOKですが、
それ以外の普通の質問はここではしないでください。
�C JavaScript、Perl、Ruby、HSP など、他言語の課題はやめてください。
�D もし自分の提示課題への回答プログラムが返って来たら、
動いた動かなかった位の返レスをお願いします。
0069デフォルトの名無しさん
NGNG2chにソース貼るなと言ってるのに平気で垂れ流してる香具師は
wikiが使えないってことなのか?
0070デフォルトの名無しさん
NGNGServletやJSPならともかく、CGIの話になってしまうとスレ違いに
なる気が。。。。
0071デフォルトの名無しさん
NGNGJavaScriptなら、隣のWebProg板の「Javascript質問コーナー」スレに
行った方が確実かと。。。。
0072sage
NGNGすいませんでした。
0073デフォルトの名無しさん
NGNG「お前らの人間性なんて期待してねえよ。さっさと答えろ」というスレだからな。
0074デフォルトの名無しさん
NGNG簡単なものでいいので、用途は”自動ボタン連打で接続を維持する”といったところでしょうか
0075デフォルトの名無しさん
NGNG宿題ではないものの、暇なひとお願いします。
0076デフォルトの名無しさん
NGNG一応作ったが下のURLにあるやつを使えばいいかと思いましたのソースは公開しません
http://www2s.biglobe.ne.jp/~dat/java/strikes/java.awt.html#Robot
0077デフォルトの名無しさん
NGNGpublic final static int plus = 0; //演算子+
public final static int minus = 1; //演算子-
public final static int mul = 2; //演算子*
public final static int div = 3; //演算子/
public final static int mod = 4; //演算子%
public final static int u_plus = 5; //単項演算子+
public final static int u_minus = 6; //単項演算子-
public final static int constant = 7; //定数
public final static int lparen = 8; //右括弧
public final static int rparen = 9; //左括弧
public final static int id = 10; //変数
public final static int assign = 11; //演算子=(代入)
public final static int END = 12; //式の終わり
}
007877
NGNG//フィールド変数の定義
//コンストラクタの定義
public Token(int type){
1文字のトークンを作成するためのコンストラクタ
//+,-,*,/,%,(,),=
}
public Token(int type, int val){
定数(整数)のトークンを作成するためのコンストラクタ
(type==TOK.constantでなければだめ)
}
//メソッドの定義
public int getType(){
トークンの種類を返す
}
public int getIntVal{
//このメソッドを呼ぶときはこのトークンは定数(整数)
トークンの整数値を返す
}
public String toString(){
トークンの情報を文字列として返す
}
}
007977
NGNG//フィールド変数の定義
//メソッドの定義
public void getString(String s){
sで渡された文字列を字句解析の対象とする
必要な初期化も行う
}
public Token getToken(){
注目しているところから文字列をたどり次のトークンを返す
}
}
class TestToken{
public static void main(String[] argv) throw IOException{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
Tokenizer tokenizer = new Tokenizer();
008077
NGNGSystem.out.print("Input:");
System.out.flush();
String s = br.readLine();
if(s.length()==0){
break;
}
tokenizer.setString(s);
Token t;
try{
do{
t=tokenizer.getToken();
System.out.println(t);
}while(t.getType() !=TOK.END);
}catch(Exception e){
system.out.println(e.getMessage());
}
}
}
}
008177
NGNGInput:1+(3*8-4)
整数:1
演算子:+
左括弧:(
整数:3
演算子:*
整数:8
演算子:-
整数:4
右括弧:)
(終)
(2)(1)で作成したクラスで変数を認識できるようにしなさい。変数は
・英字(a-zA-Z)で始まり
・英字(a-zA-Z)もしくは数字(0-9)が続くもの
(3)+,-が単項演算子であるのはどのような場合であるかを考え二項演算子と区別して返すようにせよ
(4)(1)で作成したクラスで浮動少数を認識できるようにしなさい
明日締め切りなんですがどうかお願いします。
0082らりゆき
NGNGこんなん作った
解答してくれたおかえしだ是非使ってほしい
テンプレに加えてくれるとなおうれし
0083どうすればいいの?
NGNGごめんなさいm(_ _)m
では、WEBプログラム板いってきます。
(*・ー・)ノ ありがとうございました
0084>>81 その1
NGNGimport java.util.*;
import java.util.regex.*;
import java.text.*;
public class HW52 {
public static void main(String[] argv) throws IOException{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
Tokenizer tokenizer = new Tokenizer();
while(true){
System.out.print("Input:");
System.out.flush();
String s = br.readLine();
if(s.length()==0){
break;
}
tokenizer.setString(s);
Token t;
try{
do{
t=tokenizer.getToken();
System.out.println(t);
}while(t.getType() !=TOK.END);
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
}
0085>>81 その2
NGNGList list = new ArrayList();
int index;
public void setString(String s){
boolean opeFlag = false;
Matcher mat = Pattern.compile("[\\+\\-\\*/%=\\(\\)]|[^\\+\\-\\*/%=\\(\\)]+").matcher(s);
while(mat.find()) {
String token = mat.group();
if (token.matches("[\\+\\-\\*/%=\\(\\)]")) {
switch (token.charAt(0)) {
case '+':
if (opeFlag) {
list.add(new Token(TOK.plus, token)); opeFlag=false;
} else {
list.add(new Token(TOK.u_plus, token)); opeFlag=false;
}
break;
case '-':
if (opeFlag) {
list.add(new Token(TOK.minus, token)); opeFlag=false;
} else {
list.add(new Token(TOK.u_minus, token)); opeFlag=false;
}
break;
0086:>>81 その3
NGNGlist.add(new Token(TOK.mul, token)); opeFlag=false; break;
case '/':
list.add(new Token(TOK.div, token)); opeFlag=false; break;
case '%':
list.add(new Token(TOK.mod, token)); opeFlag=false; break;
case '=':
list.add(new Token(TOK.assign, token)); opeFlag=false; break;
case '(':
list.add(new Token(TOK.lparen, token)); opeFlag=false; break;
case ')':
list.add(new Token(TOK.rparen, token)); break;
}
} else if (token.matches("\\d+(\\.\\d+|\\d*)")) {
list.add(new Token(TOK.constant, token)); opeFlag=true;
} else if (token.matches("[\\w&&[\\D]][\\w]*")){
list.add(new Token(TOK.id, token)); opeFlag=true;
} else {
list.add(new Token(13, ""));
}
}
list.add(new Token(TOK.END, ""));
}
public Token getToken(){
return (Token) list.get(index++);
}
}
0087>>81 その4
NGNGstatic ChoiceFormat fmt = new ChoiceFormat("4#演算子|5#単項演算子|7#定数|8#右括弧|9#左括弧|"
+ "10#変数|11#演算子|12#(終)|13#(不正トークン)");
String sign;
int type;
public Token(int type, String sign){
this.type = type;
this.sign = sign;
}
public int getType(){
return type;
}
public double getValue() {
return Double.parseDouble(sign);
}
public String toString(){
return fmt.format(type) + " : " + sign;
}
}
0088古代帝國富士皇朝総帥・伯壬旭
NGNGクラスHW52は、TestTokenそのままなので改名してください。
(間違えたまま貼ってしまった。)
上のプログラムに、>>77のクラスTOKを追加してください。
0089古代帝國富士皇朝総帥・伯壬旭
NGNG>>87の
public double getValue() {
return Double.parseDouble(sign);
}
を
public double getValue() {
if (type == TOK.constant) {
return Double.parseDouble(sign);
} else {
return 0;
}
}
としてください。
0090デフォルトの名無しさん
NGNG文字列を一文字ずつ比較し、その文字がひらがなかカタカナか漢字か数字かアルファベット
かその他の文字かを判定します。
全て判定したあとそれぞれの合計を求めます。
(例)
String str = "青い空ミドリの海、RedMT20
〜〜処理中〜〜
結果
ひらがな:2
カタカナ:3
漢字:3
数字:2
アルファベット:5
その他:1
0091M.B.
NGNG> CharacterクラスのUnicodeBlockインナークラスを使用して
実用性は乏しいが、「ほとんど役に立たん」ことを確認するには
いい課題とは思われ。
漏れはけっきょく直接文字コードで判定した。
0092M.B.
NGNGimport java.util.*;import java.text.*;import chon.util.*;
/**
* 標準入力から入力して、
* 文字種ごとに文字数を数える。
* @version 1.0 (2004/10/22)
* @author Maria Bethany
*/
public class kccnt {
public static void main( String[] args ) {
if (args.length > 0) {
System.err.println("usage: java kccnt");
System.exit(1);
}
Text text = new Text();
text.read();
int nchar = 0; // 総文字数
int nJapaneseChar = 0; // 日本語文字数
int nKnjs = 0; // 漢字文字数(「々」含む)
int nKnj = 0; // 漢字文字数(「々」含まず)
int nJoyoKnj = 0; // 常用漢字文字数
int nKatakanas = 0; // カタカナ文字数(音引き・続き記号を含む)
int nKatakana = 0; // カタカナ文字数(音引き・続き記号を含まず)
int nHiragana = 0; // ひらがな文字数(音引き・続き記号を含まず)
int nOthers = 0; // その他文字数
0093M.B.
NGNGwhile (liter.hasNext()) {
String line = (String)liter.next();
nchar += line.length();
for (int cnt = 0;cnt < line.length();cnt += 1) {
if (Parser.isJapaneseChar(line.charAt(cnt))) {
nJapaneseChar += 1;
}
if (Parser.isKnjs(line.charAt(cnt))) {
nKnjs += 1;
if (Parser.isKnj(line.charAt(cnt))) {
nKnj += 1;
if (Parser.isJoyoKnj(line.charAt(cnt))) {
nJoyoKnj += 1;
}
continue;
}
}
if (Parser.isKatakanas(line.charAt(cnt))) {
nKatakanas += 1;
if (Parser.isKatakana(line.charAt(cnt))) {
nKatakana += 1;
continue;
}
}
if (Parser.isHiragana(line.charAt(cnt))) {
nHiragana += 1;
continue;
}
nOthers += 1;
}
}
0094M.B.
NGNGDecimalFormat form2 = new DecimalFormat("##,###,###");
System.out.println(
" 総文字数: " + form2.format(nchar) + " 字");
System.out.println(
" 日本語文字数(全角): " +
form1.format(100.0 * (double)nJapaneseChar / (double)nchar) +
" % (" +
form2.format(nJapaneseChar) + " 字)");
System.out.println(" 漢字(「々」含む): "+
form1.format(100.0 * (double)nKnjs / (double)nJapaneseChar) +
" % (" +
form2.format(nKnjs) + " 字)");
System.out.println(" 漢字(「々」含まず): "+
form1.format(100.0 * (double)nKnj / (double)nJapaneseChar) +
" % (" +
form2.format(nKnj) + " 字)");
0095M.B.
NGNGform1.format(100.0 * (double)nJoyoKnj / (double)nJapaneseChar) +
" % (" +
form2.format(nJoyoKnj) + " 字)");
System.out.println(" ひらがな(音引き・続き記号を含まず): "+
form1.format(100.0 * (double)nHiragana / (double)nJapaneseChar) +
" % (" +
form2.format(nHiragana) + " 字)");
System.out.println(" カタカナ(音引き・続き記号を含む): "+
form1.format(100.0 * (double)nKatakanas / (double)nJapaneseChar) +
" % (" +
form2.format(nKatakanas) + " 字)");
System.out.println(" カタカナ(音引き・続き記号を含まず): "+
form1.format(100.0 * (double)nKatakana / (double)nJapaneseChar) +
" % (" +
form2.format(nKatakana) + " 字)");
System.out.println(" その他:" + form2.format(nOthers) + " 字");
}
}
0096デフォルトの名無しさん
NGNGJNDIを利用してコネクションを取得するのだが、sqlもアクセスも使わずテキストファイルを
書き込んだり読み込んだりするかたちにしたい。
import java.util.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;
public final class DBUtil {
private static DBUtil obj = null;
private Connection con = null;
private Statement stmt = null;
//このクラスのインスタンスを取得するための唯一のメソッド
//ServletContextを渡し、この中でコンテキストパラメータを取得する
public static synchronized DBUtil createInstance()
throws Exception {
if(obj == null) {
obj = new DBUtil();
}
return obj;
}
//このコンストラクタはprivateであるので、外部からは利用することができない
private DBUtil() throws Exception {
Context ctx = new InitialContext();
0097デフォルトの名無しさん
NGNGDataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/yasaishop");
con = ds.getConnection();
stmt = con.createStatement();
}
//新規ユーザを登録するメソッド
public synchronized boolean addUser(User user) throws Exception {
//登録しようとしているIDが存在するかチェック
String sql = "SELECT * FROM USER WHERE user_id='";
sql += user.getId() + "';";
ResultSet rs = stmt.executeQuery(sql);
if(rs.next()) {
rs.close();
return false;
}
rs.close();
//新規ユーザを登録する
sql = "INSERT INTO USER VALUES('";
sql += user.getMail() +"','"+user.getId()+"','";
stmt.execute(sql);
return true;
//仮登録したユーザを削除する
sql = "DELETE FROM PROVISIONAL_USER WHERE user_id='";
sql += user.getId() + "';";
stmt.execute(sql);
return true;
}
}
0098デフォルトの名無しさん
NGNGテキストファイルに
userid1;usermail1;
userid2;usermail1;
・
・
・
という形で書いていけたらいいと思うのだが…
よろしくお願いします
0099M.B.
NGNGここは宿題・課題に答えるスレです。
クズな職業プログラマーが、仕事で詰まって
泣きつくスレではありません。
どういう流れで大学・専門学校等の教育機関で
こういう宿題・課題が出されたのかを
明らかにしなさい。
0100デフォルトの名無しさん
NGNGデータベースから取得したのを、ただファイルに書き込めば
いいのでは・・・・・
0101デフォルトの名無しさん
NGNG普通の大学生です。
宿題ではないのですが、マイクロソフトアクセスを持っていないのと、
今までファイルテキストに書き込む形でプログラムを作ってきたため、
同じようにsqlでなくテキストに書き込むような形でプログラムを作りたいと思いました。
テキストを読み込んで配列にして…。
登録をして、それからいろいろサービスを提供する感じのプログラムを作っています。
それの、ユーザ登録をどうしようかと思っているのですが…。
要するにjava.io.*;を使う感じでできないでしょうか…
0102デフォルトの名無しさん
NGNG誤読を誘う書き込みをしてしまいました!すみません。
JNDIでコネクションを取得しないで、sqlも使わずアクセスも使わず
プログラムを作りたい…という意味です。
アクセスを持っていないのです。
0103M.B.
NGNG>>102
MySQL 使うのがいちばん早い。
でなかったら、Serializable インタフェースを implemennt した
class に押し込んでしまえ。
ab で open して seek して write して……とかいったプログラムは
さんざん C で書いたが、Java でそれをやるのは
あまり勉強にならんぞ(C でやるならそれなりに意味はありそうだが)。
0104M.B.
NGNGデータを取得するメソッドは自分で考えれ。
package chon.util;import java.util.*;
/**
* 単独のキーで文字列キーで昇順整列された、
* キーごとに複数個のオブジェクトを格納できるファイル。
* @version 1.0, 30. June, 2004
* @author Maria Bethany
*/
public class ISAM extends TreeMap {
public ISAM() {
}
/**
* レコードを追加する。
* @param key キー
* @param value 格納する値
*/
public void add( String key, Object value ) {
ArrayList records;
if (this.containsKey(key)) {
records = (ArrayList)this.get(key);
} else {
records = new ArrayList();
}
records.add(value);
this.put(key, records);
}
0105M.B.
NGNG* 全部のレコードを返す。
* @return 同一キーの場合、先入先出。
*/
public ArrayList getRecords() {
ArrayList work = new ArrayList(this.values());
ArrayList ret = new ArrayList();
ListIterator xIter = work.listIterator();
while (xIter.hasNext()) {
ArrayList records = (ArrayList) xIter.next();
ListIterator yIter = records.listIterator();
while (yIter.hasNext()) {
ret.add(yIter.next());
}
}
return ret;
}
}
0106M.B.
NGNGこんな感じな。
書く:
public String write( String filename ) {
try {
FileOutputStream fos = new FileOutputStream(filename);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(this);
oos.close();
} catch (IOException ex) {
return null;
}
return filename;
}
読む:
public static なんとか read( String filename ) {
なんとか bt = null;
try {
FileInputStream fis = new FileInputStream(filename);
ObjectInputStream ois = new ObjectInputStream(fis);
bt = (なんとか)ois.readObject();
ois.close();
} catch (IOException ex) {
return null;
} catch (ClassNotFoundException ex) {
return null;
}
return bt;
}
0107デフォルトの名無しさん
NGNGやはり、わからないです。ファイルテキストを使えば感覚的に
すぐわかるのでやりやすかったのですが…。
データを取得するメソッドが一番知りたかったのです。
INDIを使わずっていうの。
0108デフォルトの名無しさん
NGNGこういう感じです!
これはわかります!
データの取得のしかたというのはどうなるのでしょうか…。
fileのwrite、readはわかりました。
聞いてばかりですみません。
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNGわかりました。
M.B.さんどうもありがとうございました。
参考にさせていただきます。
0111デフォルトの名無しさん
NGNG�@ 問題文は自己省略せずに、直接全部貼り付けてください。
宿題&課題をそのまま丸投げするのが、一番好ましい提示法です。
�A 数学問題は何々法でせよだけでなく、その解を出す為の数式を
具体的に詳細に説明してください。
ただ、数学問題の回答率は低いです・・・。
�B 宿題&課題とその回答プログラムに対する質問はOKですが、
それ以外の普通の質問はここではしないでください。
JavaScript、Perl、Ruby、PHP など、他言語の課題はやめてください。
�C もし自分の提示課題への回答プログラムが返って来たら、
動いた動かなかった位の返レスをお願いします。
�D 隣のマッドマックスばりの殺伐とした無法地帯Java質問スレと違って、
ここ宿題スレは、みんな仲良くがモットーの明るく楽しいスレッドを
目指しているので、無礼かつ乱暴な言葉使いは控えてください。
0112デフォルトの名無しさん
NGNG・アルファベット順で最後から30単語を出力
・出現頻度順にソートして上位30単語を出力
・出現する単語を長いものから30個出力
以上3つを行うプログラムを作成せよ
との課題が出ました。
以下に途中までのヒントがあるのですが、何度やっても
「シンボルを見つけられません」となってしまいます。
どなたか回答お願いします。
ttp://www.ueda.info.waseda.ac.jp/oess/PB/Html/class_rsc/materials/2004-12-20/Indexer-hints.java
0113M.B.
NGNGプログラム書くのが楽しいか?w
ろくなもんじゃねぇな
困ったことに楽しいんだこれが _| ̄|○
0114デフォルトの名無しさん
NGNG上記の問題でプログラムソースをお願いします。
011577
NGNGすごい、ありがとうございます。
本当に助かりました。自宅のパソコンにJavaの環境がないので明日、学校で動作確認します。
(色々調べたんですがJavaのコンパイラ?がどこでダウンロードできるのかわからなかったもので(^^;)
本当にありがとうございました。
0116>>112 その1
NGNGimport java.util.*;
public class HW53 {
static Map map = new TreeMap();
public static void main(String[] args) {
try {
FileInputStream flIn = new FileInputStream(args[0]);
BufferedReader r = new BufferedReader(new InputStreamReader(flIn));
String line;
int lno= 1;
while ((line = r.readLine()) != null) {
String[] word = line.split("\\s+");
for (int i = 0; i < word.length; i++) {
if (word[i].length() == 0)
continue;
if (map.containsKey(word[i])) {
List lineList = (List) map.get(word[i]);
lineList.add(new Integer(lno));
} else {
List lineList = new ArrayList();
lineList.add(new Integer(lno));
map.put(word[i], lineList);
}
}
++lno;
}
} catch (Exception e) {
System.out.println("ファイル読み込みエラー");
System.exit(0);
}
0117>>112 その2
NGNGCollections.sort(wordList, new Comparator() {
public int compare(Object arg1, Object arg2) {
String s1 = (String) arg1;
String s2 = (String) arg2;
return s1.toLowerCase().compareTo(s2.toLowerCase());
}
});
Collections.reverse(wordList);
showWordList("アルファベット順で最後から30単語", wordList);
List entList = new ArrayList(map.entrySet());
Collections.sort(entList, new Comparator() {
public int compare(Object arg1, Object arg2) {
List l1 = (List) ((Map.Entry) arg1).getValue();
List l2 = (List) ((Map.Entry) arg2).getValue();
if (l1.size() > l2.size())
return -1;
else if (l1.size() < l2.size())
return +1;
else
return 0;
}
});
wordList.clear();
for (int i = 0; i < entList.size(); i++)
wordList.add(((Map.Entry) entList.get(i)).getKey());
showWordList("出現頻度順にソートして上位30単語", wordList);
0118>>112 その3
NGNGCollections.sort(wordList, new Comparator() {
public int compare(Object arg1, Object arg2) {
String s1 = (String) arg1;
String s2 = (String) arg2;
if (s1.length() > s2.length())
return -1;
else if (s1.length() < s2.length())
return +1;
else
return 0;
}
});
showWordList("出現する単語を長いものから30個", wordList);
}
static void showWordList(String title, List wordList) {
System.out.println(title);
for (int i = 0; i < 30 && i < wordList.size(); i++) {
String word = (String) wordList.get(i);
System.out.print(word + " : ");
List lineList = (List) map.get(word);
for (int k = 0; k < lineList.size(); k++) {
System.out.print(lineList.get(k) + ", ");
}
System.out.println("行目");
}
System.out.println();
}
}
0119古代帝國富士皇朝総帥・伯壬旭
NGNG全部コピペしてコンパイルしてください。
0120古代帝國富士皇朝総帥・伯壬旭
NGNGプログラムの実行引数に、読み込む英文のテキストファイル名を指定してください。
java HW53 word.txt みたいに。
0121古代帝國富士皇朝総帥・伯壬旭
NGNGimport javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
import java.text.*;
public class HW54 extends JApplet {
public void init() {
final JLabel label = new JLabel();
label.setOpaque(true);
label.setBackground(new Color(245, 245, 255));
label.setFont(new Font("Dialog", 1, 30));
label.setHorizontalAlignment(JLabel.CENTER);
JButton btn = new JButton("日付時刻表示");
btn.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
Date date = new Date(System.currentTimeMillis());
DateFormat fmt = DateFormat.getDateTimeInstance(DateFormat.SHORT,
DateFormat.MEDIUM);
label.setText(fmt.format(date));
}
});
getContentPane().add(label);
getContentPane().add(btn, BorderLayout.SOUTH);
}
}
0122デフォルトの名無しさん
NGNGの8ビットの情報を
2010
にする。
1ビット目が立っていれば2、二ビット目が立っていれば11ビット目
二ビット目が立っていなければ0、で処理をかけていって、最終的に
4bitの情報に直すコードを教えてください。
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNGデータの形式上存在しないです。
0125デフォルトの名無しさん
NGNGこれが4bitの情報なら、このデータ自体も存在しない事に。。。。
0126デフォルトの名無しさん
NGNGを
2 0 1 0
にするのだから、データはこれでいいです。
11 00 00 00
が
3 0 0 0
はないです。
bitに2が混ざってる理由は聞かないで・・・。
0127デフォルトの名無しさん
NGNGそれで、両方とも1のケースがないならこれで。。。
byte src = (byte) 0x84;
String res = "";
for (int i = 0; i < 8; i++, src <<= 1) {
if ((src & 0x80) != 0) {
if (i % 2 == 0) {
res = res + "2";
src <<= 1;
++i;
} else {
res = res + "1";
}
} else {
if (i % 2 != 0)
res = res + "0";
}
}
System.out.println(res);
0128デフォルトの名無しさん
NGNGちなみに元データが
"10000100"の文字列だった場合はどうなりますか?
0129デフォルトの名無しさん
NGNG>>128 の結果は 2010 とでました
import java.util.regex.*;
import java.text.*;
class LogicSample {
public static void main(String[] args) {
try {
if(args.length < 1) System.exit(0);
int num = Integer.parseInt(args[0]);
String str = Integer.toString(num);
String[] stackStr = Pattern.compile("").split(str, 0);
if(((stackStr.length-1) % 2) != 0) {
for(int i=1; i < stackStr.length; i++)
System.out.println("[" + i + "]文字目: " + stackStr[i] + " ");
System.out.println("入力文字数が不正です\n偶数個数の数字のみ入力してください");
System.exit(0);
}
str = "";
0130デフォルトの名無しさん
NGNGif((stackStr[i].equals("1")) && (stackStr[i+1].equals("1"))) {
System.out.println("例外エラー、入力文字が不正です");
System.exit(0);
}
if((stackStr[i].equals("1")) && (stackStr[i+1].equals("0")))
str += "2";
else if((stackStr[i].equals("0")) && (stackStr[i+1].equals("1")))
str += "1";
else
str += "0";
}
System.out.println(str);
}
catch(NumberFormatException e) {
System.out.println("数字以外を入力しないでください");
}
}
}
0131デフォルトの名無しさん
NGNGもっと単純に考えれば思いつくのに・・・・・
>>127 すごく勉強になりました!!
0132デフォルトの名無しさん
NGNG0133デフォルトの名無しさん
NGNGInteger.toString(Integer.parseInt(string,4),4)、だな
0134デフォルトの名無しさん
NGNGありがとうございます。
ですが、言い忘れてしまったので申し訳ないのですが、
>>112のヒントを元にして作らなければならないため、
Hashtable<String,ArrayList<Integer>>で表す必要があるのです。
よろしければ、>>112のヒントファイルから作成して頂けないでしょうか。
0135デフォルトの名無しさん
NGNGおしい
Integer.toString(Integer.parseInt(string, 2),4))
だね
0136デフォルトの名無しさん
NGNG何台ついてるかとか、解像度はどうかとか、別のモニタにもっていくとか
0137デフォルトの名無しさん
NGNGjava.awtパッケージの
GraphicsConfiguration、GraphicsEnvironment、GraphicsDevice
辺りを使えばOK
あと、質問は、隣の質問スレで
013877
NGNG無事動きました。プログラムも完璧でした。本当にありがとうございました。
今回答えていただいたプログラムに関してまた新しい課題が出ましたので教えていただければ幸いです。
class stack{
//スタックのデータを管理するためのフィールド変数
private Object[] stackArray;
private int stackTop;
public Stack(int siza){
//最大size個のデータを利用できるスタックを準備
}
public void push(Object o){
//スタックにデータを一つpush
}
public Object pop(){
//スタックからデータを1つpop
}
public Object peek(){
//スタックの先頭を返す(popはしない)
}
}
013977
NGNG上記のclass stack、class Parserを完成させて今回教えていただいたプログラムに追加しなさい。
と言うものです。何度もすいませんがどうかお願いします。
0140デフォルトの名無しさん
NGNGを、
01 01 01 01...
と分割してVectorやArrayListに分割するアルゴリズムを教えてください。
0141デフォルトの名無しさん
NGNGArrayList list = new ArrayList();
for (java.util.regex.Matcher m = java.util.regex.Pattern.compile("..").matcher(s) ;m.find(); list.add(m.group()));
System.out.println(list);
0142デフォルトの名無しさん
NGNGサンクスです。
一行で出来るとは・・・自分で書くと13行・・・修行せにゃ
0143デフォルトの名無しさん
NGNG比較するのはナンセンスかと。
学習目的のプログラミングなら、まともにガリガリと書いて
それが13行であっても、そっちの方が力がつく。
0145デフォルトの名無しさん
NGNGオセロで相手の駒をひっくり返すときの方法で困っています。
自分のターンを現在は黒であるとし、左の方向を調べるとしますと、
駒が○か●か走査することはでき、●○○とあって○の右に●を置くと○○を●にするようにはできたのですが、
もし左方向に●がなければ自分が置いたところから左が全て●にしてしまいます。
もしも自分が置いたところから先に自分と同じ色の駒がなければひっくり返す動作をしないということをさせるにはどうすればいいでしょうか?
0146あっちょ
NGNG入れて ボタンを押すと、数字を足した結果が残りのTextFieldに表示
される、プログラムを教えてくれませんか?
0147デフォルトの名無しさん
NGNG置かれていない目や盤面の端についたりした時には、
キャンセルするようにすればいいのではないでしょうか。
該当部分のコードを晒してください。
または、Googleで検索して、適当なコードを見つけましょう。
または、質問スレへ。
>>146
つまらなすぎて書く気にならぬ。
神を待て。
0149M.B.
NGNGこのスレにはナイスな香具師が多いな
∧_∧
∧_∧ (`<_´ ) できる人というのは
( ´_ゝ`) 〈 ⌒i そういうものなのよ兄者
/ \ / | |
/ / ̄ ̄ ̄ ̄/ |
__(__ニつ/ IBM / .| |____
\/____/ (u っ
0150デフォルトの名無しさん
NGNG//の列を有効にすると画像の切替えが止まり動かなくなってしまいます。
何が原因なのかだけでもご教授お願いします。
import java.awt.Graphics;
import java.awt.Image;
import java.lang.Math;
import java.awt.event.*;
import java.awt.*;
public class Action3 extends java.applet.Applet implements Runnable{
Image Pic[]=new Image[3];
int PicIndex=0;
boolean loop=true;
Thread play=null;
public void init(){
Pic[0]=getImage(getCodeBase(),"Pic1.jpg");
Pic[1]=getImage(getCodeBase(),"Pic2.jpg");
Pic[2]=getImage(getCodeBase(),"Pic3.jpg");
}
public void paint(Graphics g){
update(g);
}
public void update(Graphics g){
if(Pic[PicIndex]==null){
g.drawString("絵が入っていません",0,60);
}
g.drawImage(Pic[PicIndex],0,0,this);
}
0151150
NGNGif(play==null){
play=new Thread(this);play.start();
}
}
public void stop(){
if(play!=null){
play.stop();
play=null;
}
}
0152150
NGNGwhile(loop){
//addMouseMotionListener(new MouseMotionAdapter(){
//public void mouseReleased(MouseEvent e){
repaint();
//}
//});
try{
Thread.sleep(200);
}
catch(InterruptedException e){
}
if(PicIndex==0){
PicIndex=1;System.out.println("1<=0");
}
else if(PicIndex==1){
PicIndex=2;System.out.println("2<=1");
}
else{
PicIndex=0;System.out.println("0<=2");
}
}
}
}
0153デフォルトの名無しさん
NGNGそのmouseReleasedメソッドは、ボタンを離しても永久に呼ばれる事が
ないのです。
addMouseMotionListener(new MouseMotionAdapter(){
を
addMouseListener(new MouseAdapter() {
としてみてください。
0154>>134 その1
NGNGimport java.util.*;
public class Indexer {
static class IndexItem {
String word;
ArrayList<Integer> line;
IndexItem(String word, ArrayList<Integer> line) {
this.word = word;
this.line = line;
}
}
public static void main(String[] args) {
Hashtable<String, ArrayList<Integer>> dic =
new Hashtable<String, ArrayList<Integer>>();
Scanner sc = null;
try {
sc = new Scanner(new FileInputStream("word.txt"));
} catch (FileNotFoundException e) {
}
int lineNumber = 0;
while (sc.hasNextLine()) { // 行切出しループ
Scanner sc2 = new Scanner(sc.nextLine());
sc2.useDelimiter("[^a-zA-Z]+");
lineNumber++;
while (sc2.hasNext()) {
String word = sc2.next().toLowerCase();
ArrayList<Integer> a = dic.get(word);
if (a == null) {
a = new ArrayList<Integer>();
a.add(new Integer(lineNumber));
dic.put(word, a);
0155:>>134 その2
NGNGa.add(new Integer(lineNumber));
}
}
}
sc.close();
int n = dic.size();
System.out.println(n);
IndexItem[] ii = new IndexItem[n];
Iterator<String> it = dic.keySet().iterator();
for (int k = 0; k < n; k++) {
String word = it.next();
ii[k] = new IndexItem(word, dic.get(word));
}
java.util.Arrays.sort(ii, new Comparator<IndexItem>() {
public int compare(IndexItem o1, IndexItem o2) {
return -(o1.word.compareTo(o2.word));
}
});
System.out.println("アルファベット順で最後から30単語");
for (int i = 0; i < 30 && i < ii.length; i++)
System.out.println(ii[i].word);
System.out.println();
java.util.Arrays.sort(ii, new Comparator<IndexItem>() {
public int compare(IndexItem o1, IndexItem o2) {
return -(new Integer(o1.line.size()).compareTo(
new Integer(o2.line.size())));
}
});
0156>>134 その3
NGNGfor (int i = 0; i < 30 && i < ii.length; i++)
System.out.println(ii[i].word + " : " + ii[i].line.size() + "回");
System.out.println();
java.util.Arrays.sort(ii, new Comparator<IndexItem>() {
public int compare(IndexItem o1, IndexItem o2) {
return -(new Integer(o1.word.length()).compareTo(
new Integer(o2.word.length())));
}
});
System.out.println("出現する単語を長いものから30個");
for (int i = 0; i < 30 && i < ii.length; i++)
System.out.println(ii[i].word);
System.out.println();
}
}
0157デフォルトの名無しさん
NGNGご教授ありがとうございました。大変助かります。
結果報告の方は月曜の夜に改めて致します。
0158デフォルトの名無しさん
NGNG同士ハッケソ
記念カキコ
0159デフォルトの名無しさん
NGNGコメントに「Hashtableを使う奴はバカ」と書いとけ
0160デフォルトの名無しさん
NGNG担当講師の深い考えとテクニックがある事を気付けない人は
まだまだ凡人の域を出ていないと言えるだろう。
0161デフォルトの名無しさん
NGNG何度もありがとうございます。
おかげで助かりました。
0162デフォルトの名無しさん
NGNGclass Constantや、class BinaryExpression、class Expression
の詳細が不明ですのでお手上げです・・・
0163154
NGNGよく見たらテストケースのまま貼ってしまった。
Scanner sc = null;
try {
sc = new Scanner(new FileInputStream("word.txt"));
} catch (FileNotFoundException e) {
}
の辺りを元の文に戻してください。
0164デフォルトの名無しさん
NGNG何度もお手数おかけしてすいません。
試してみたのですが、「IndexItemのシンボルを見つけられません」と
エラーが出てしまいます。
これはIndexItemのclassを作成する必要があるのでしょうか。
0165デフォルトの名無しさん
NGNG154の4行目に、メンバクラスIndexItemの定義が描いてありますが・・・
0166デフォルトの名無しさん
NGNGimport java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class Sample303 extends JFrame{
private JTextField t1;
private JTextField t2;
private JTextField ansawer;
public static void main(String[] args){
new Sample303();
}
Sample303(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container cc = getContentPane();
JPanel c = new JPanel();
cc.add(c);
cc.setLayout(null);
t1 = new JTextField();
t2 = new JTextField();
ansawer = new JTextField();
JButton b =new JButton();
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(!(t1.getText().equals(""))&&(!t2.getText().equals(""))){
ansawer.setText( String.valueOf(Integer.parseInt(
t1.getText())+Integer.parseInt(t2.getText())));
}
}
});
0167デフォルトの名無しさん
NGNGc.setLayout(new GridLayout(2,2));
c.setBounds(0,0,200,100);
c.add(t1);
c.add(t2);
c.add(ansawer);
c.add(b);
setSize(200,200);
setVisible(true);
}
}
0168デフォルトの名無しさん
NGNGごめんなさい。思いっきり見落としてました。
ご指摘ありがとうございます。
0169デフォルトの名無しさん
NGNG区間0.0から5.0までの積分値を求めるにはどうすればいいのですか?
double MIN = 0.0;
double MAX = 5.0;
dx=0.1;
for(i=1; i<MAX; i++){
func(MIN+dx*(i-1),dx*i)
}
0170デフォルトの名無しさん
NGNGdouble s = 0;
for(double x=MIN, dx=0.1; x<MAX; x+=dx){
s += func(x)*dx;
}
0171デフォルトの名無しさん
NGNG指令行の引数に正の整数 n を指定すると, 2^0, 2^(-1), 2^(-2), ..., 2^(-n)(^はべき乗) を順に各行に出力していくプログラムを作ってください。
n が大きな値になっても,小数点以下100桁までは正確に結果を出力するようにしてください。
javaで小数点100桁をうまく表現するにはどうすればよいのですか?
0172デフォルトの名無しさん
NGNG0173デフォルトの名無しさん
NGNGんで、タイトル画面となるTitlePanelをJPanelを継承して
作りました。
/* TitlePanel */
public class TitlePanel extends JPanel {
public void TitlePanel(final Container parent, final CardLayout cl) {
setLayout(new BorderLayout());
JButton startButton = new JButton("スタート");
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae){
cl.show(parent, "title");
}
});
add(startButton, BorderLayout.SOUTH);
}
}
んでアプレットのほうで
public void init() {
getContentPane().setLayout(cl = new CardLayout());
titlePanel = new TitlePanel(getContentPane(), cl);
getContentPane().add(titlePanel, "title");
}
ってしようと思ったんですけど、titlePanelを作成すると、
「コンストラクタTitlePanelのシンボルを見つけられません。」
てエラーが出ます。引数の渡し方まちがってるんでしょうか?
0174デフォルトの名無しさん
NGNG> public void TitlePanel(final Container parent, final CardLayout cl) {
コンストラクタ宣言じゃなくてメソッド宣言になってる。
void を外せ。
0175デフォルトの名無しさん
NGNGわ!でけた!ありがとうお優しい人(´з`)ちゅ〜
0176デフォルトの名無しさん
NGNGのあとに =100 のように追加で書き込んでb.txtなどにして保存したいと思っています。
ご教授いただけるととても助かります。よろしくお願いします。
0177デフォルトの名無しさん
NGNGすみません。これをお願いします。課題3の方は陰的解放で求めるやり方を使うそうです。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGclass Constantや、class BinaryExpression、class Expression
の詳細が不明ですのでお手上げです・・・
018077
NGNG大変失礼いたしました。
abstract class Expression {
abstract public int eval();
abstract public String toString();
}
class Constant extends Expression {
public int value;
public Constant(int i) {
value = i;
}
public int eval() {
return value;
}
public String toString() {
return "" + value;
}
}
018177
NGNGpublic int operator; // 演算子の種類
public Expression left; // 左側
public Expression right; // 右側
public BinaryExpression(int op, Expression l, Expression r) {
operator = op;
left = l;
right = r;
}
public int eval() {
int lval = left.eval();
int rval = right.eval();
int val;
switch(operator) {
case OP.plus: val = lval + rval; break;
case OP.minus: val = lval - rval; break;
case OP.mul: val = lval * rval; break;
case OP.div: val = lval / rval; break;
case OP.mod: val = lval % rval; break;
default:
System.err.println("不正な二項演算子です");
val = 0;
}
return val;
}
018277
NGNGString exp;
exp = "(" + left;
switch(operator) {
case OP.plus: exp += "+"; break;
case OP.minus: exp += "-"; break;
case OP.mul: exp += "*"; break;
case OP.div: exp += "/"; break;
case OP.mod: exp += "%"; break;
default: System.err.println("不正な二項演算子です");
exp += "??";
}
exp += right + ")";
return exp;
}
}
ご指摘いただいたクラスは以上になります。この他にまだ必要なものはありますでしょうか?
0183150
NGNGいろいろ思考錯誤してみた結果、以下のようなコードで希望のものは出来上がりました。
>>153さん大変ありがとうございました。
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
flag=true;
}
public void mouseReleased(MouseEvent e){
flag=false;
}
});
if(flag){
repaint();
}
0184デフォルトの名無しさん
NGNGという文字列から正規表現を用いて
String A = "a";
String B = "b";
String C = "c";
String Foo = "foo\nfoo\nfoo\n"
という風に文字列を取得したいのですが、どのようにすればいいのでしょうか?
Pattern p = Pattern.compile("(.*),(.*),(.*),(.*)");
Matcher m = p.matcher(s);
String a = m.group(1);
という風にやろうとしたのですが、マッチしませんでした。
fooの間に挟まってる\nを消すとマッチするのですが…。
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNGどなたかご教授お願いできないでしょうか?
問・適切な状況を考えて、abstractクラスを一つ作りなさい。そのサブクラスを
3つ以上作ってスーパクラスのabstractメソッドを全て実装しなさい。
また、そのテストプログラムを書きなさい
どうかよろしくお願いしますm(__)m
0187デフォルトの名無しさん
NGNGこれをMouseAdapterを用いたプログラムに変更したいのですが
どういじればいいでしょうか?
0188デフォルトの名無しさん
NGNG仕様
・コマンドライン引数として解析対象の英文テキストファイル名を受け取る
・テキストに出現する単語の出現数及び出現位置(行番号)を、単語の辞書順に画面に出力する
・単語の大文字・小文字の区別は行わない
・単語は英文字及び数字のみからなる。つまり、シングルクォート、ダブルクォート、アポストロフィ、ハイフンなどの記号は単語に含まないこととする。
・Javaで作成されたプログラムである
備考
大きなファイルの解析が高速に終了するほどよい
0189>>188 その1
NGNGimport java.util.*;
import java.util.regex.*;
public class HW53 {
static Map map = new TreeMap();
public static void main(String[] args) {
try {
FileInputStream flIn = new FileInputStream(args[0]);
BufferedReader r = new BufferedReader(new InputStreamReader(flIn));
Pattern pat = Pattern.compile("[a-zA-Z0-9]+");
String line;
int lno= 1;
while ((line = r.readLine()) != null) {
Matcher mat = pat.matcher(line);
while (mat.find()) {
String word = mat.group().toLowerCase();
if (map.containsKey(word)) {
List lineList = (List) map.get(word);
lineList.add(new Integer(lno));
} else {
List lineList = new ArrayList();
lineList.add(new Integer(lno));
map.put(word, lineList);
}
}
++lno;
}
} catch (Exception e) {
System.out.println("ファイル読み込みエラー");
System.exit(0);
}
0190:>>188 その2
NGNGCollections.sort(wordList, new Comparator() {
public int compare(Object o1, Object o2) {
return ((String)o1).compareTo((String) o2);
}
});
for (int i = 0; i < wordList.size(); i++) {
String word = (String) wordList.get(i);
List line = (List) map.get(word);
System.out.print(word + " : " + line.size());
System.out.print("個登場 行 ");
List lineList = (List) map.get(word);
for (int k = 0; k < lineList.size(); k++) {
System.out.print(lineList.get(k) + ", ");
}
System.out.println();
}
}
}
0191デフォルトの名無しさん
NGNGaddMouseListener(this);
を
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e)
{
mgetX=e.getX();
mgetY=e.getY();
repaint();
}
});
とすればOK
0192デフォルトの名無しさん
NGNGこれは抽象的な問題ですね。
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNGimport javax.swing.*;
class FlowLayoutSample1 extends JFrame{
PanelSample1 j;
FlowLayoutSample1(){
super("FlowLayoutSample1");
Container c = getContentPane();
j = new PanelSample1();
c.add(j);
}
public static void main(String args[]){
JFrame jframe = new FlowLayoutSample1();
jframe.pack();
jframe.setVisible(true);
jframe.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
class PanelSample1 extends JPanel{
JButton jb1, jb2, jb3;
PanelSample1(){
b1 = new JButton("Yse");
jb2 = new JButton("No");
jb3 = new JButton("Cancel");
setLayout(new FlowLayout());
this.add(jb1);
this.add(jb2);
his.add(jb3);
}
}
load: FlowLayoutSample1.class は public ではありません。あるいは public なコンストラクタを持っていません。
とエラーがでるのですが、どうすればよろしいのでしょうか?
0195デフォルトの名無しさん
NGNGthis.add(jb3);
0196デフォルトの名無しさん
NGNGjb1 = new JButton("Yes");
this.add(jb3);
すいません、ここはコピペのミスです。
これを修正しても上のエラーがでます。
よろしくお願いします。
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNGpublic つけても同じエラーが出てしまいます。
0199デフォルトの名無しさん
NGNG>java -version
0200デフォルトの名無しさん
NGNGJava(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_03-b02)
です。
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG>>202
あっ、わかりました。ありがとうございます。
0204デフォルトの名無しさん
NGNGaddActionListenerでボタンを一度押されたらその押されたボタンをremoveActionListenerで削除しています。
これを初期化ボタンを押した時に全てのボタンを再びremoveActionListenerをする前に戻したいんです。
流れとしては、
ボタンが押される
↓
ボタンの動作をする
↓
removeActionListener(this)
押されたボタンのアクションが削除される
↓
初期化ボタンを押す
↓
removeされたものが再び復活して押せるようになる
こういう流れを作りたいです。
初期化したいボタンの数が多いので一個一個を再びaddActionListenerをすると行数が膨大になってしまいます。
何かいい方法がありましたら教えてください。
0205デフォルトの名無しさん
NGNGイベントハンドラ消すとかアクロバティックなことせずフラグかなんかで管理すれば。
0206デフォルトの名無しさん
NGNG2.個々のインスタンスが一組のトランプを表すクラスDeckを作りなさい
3.1・2で作成した2つのクラスCard,Deckをテストするための小さなプログラム
(例えば、一組のトランプを生成してそのカードを表示するプログラム)DisplayDeckを作って実行しなさい
4.1・2・3で作成した3つのクラスCard,Deck,DisplayDeckについて、クラスObjectのどのメソッドを
オーバーライドすべきかを考えてそれを実装しなさい
以上のソースコードも書きなさい
初歩的なんですが、この4つの問題がわからずに困っています。
どなたか教えてもらえないでしょうか?
お願いします。
0207>>139 その1
NGNGprivate static char[][] relTable = {
{'>', '>', '<', '<', '<', '<', '<', '<', '<', '>', '<', 4 , '>'},
{'>', '>', '<', '<', '<', '<', '<', '<', '<', '>', '<', 4 , '>'},
{'>', '>', '>', '>', '>', '<', '<', '<', '<', '>', '<', 4 , '>'},
{'>', '>', '>', '>', '>', '<', '<', '<', '<', '>', '<', 4 , '>'},
{'>', '>', '>', '>', '>', '<', '<', '<', '<', '>', '<', 4 , '>'},
{'>', '>', '>', '>', '>', '<', '<', '<', '<', '>', '<', 4 , '>'},
{'>', '>', '>', '>', '>', '<', '<', '<', '<', '>', '<', 4 , '>'},
{'>', '>', '>', '>', '>', 0 , 0 , 2 , 2 , '>', 2 , 4 , '>'},
{'<', '<', '<', '<', '<', '<', '<', '<', '<', '=', '<', 4 , 3 },
{'>', '>', '>', '>', '>', 0 , 0 , 2 , 2 , '>', 2 , 4 , '>'},
{'>', '>', '>', '>', '>', 0 , 0 , 2 , 2 , '>', 2 , '>', '>'},
{'<', '<', '<', '<', '<', '<', '<', '<', '<', 1 , '<', 4 , '>'},
{'<', '<', '<', '<', '<', '<', '<', '<', '<', 1 , '<', '<', 0 },
};
private static String[] errMsg = {
"Unknown Error",
"')'が多すぎます",
"演算子(+,-,*,/)がありません",
"')'が足りません",
"代入文の左側は変数でなければなりません",
};
LinkedList tokenStack = new LinkedList(), treeStack = new LinkedList();
public static void main(String[] argv) {
new Parser(null);
}
0208:>>139 その2
NGNGInputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
while (true) {
try {
System.out.print("Input:");
System.out.flush();
String s = br.readLine();
if (s.length() == 0)
break;
parse(s);
assert treeStack.size() == 1 : "解析エラー";
System.out.println(((Expression) treeStack.getLast()).eval());
System.out.println(((Expression) treeStack.getLast()));
} catch (Exception e) {
System.out.println("error: " + e);
}
}
}
private char getRelation(Token t1, Token t2) {
return relTable[t1.getType()][t2.getType()];
}
private void initialize(String s) {
treeStack.clear();
tokenStack.clear();
tokenStack.addLast(new Token(TOK.END, "end"));
}
0209>>139 その3
NGNG// トークンの番号から,対応する演算子の番号を返す.
switch(tok) {
case TOK.plus: return OP.plus;
case TOK.minus: return OP.minus;
case TOK.mul: return OP.mul;
case TOK.div: return OP.div;
case TOK.mod: return OP.mod;
case TOK.u_plus: return OP.u_plus;
case TOK.u_minus: return OP.u_minus;
default: throw new Exception("TOKtoOP: 不正なトークンです(" + tok + ")");
}
}
public void buildTree(Token t) throws Exception {
if (t.type == TOK.constant) {
treeStack.addLast(new Constant((int) t.getValue()));
} else if (t.type == TOK.id) {
treeStack.addLast(new Variable(t.sign));
} else if (t.type >= TOK.plus && t.type <= TOK.mod) {
Expression ex = new BinaryExpression(TOKtoOP(t.type), (Expression) treeStack.removeLast(),
(Expression) treeStack.removeLast());
treeStack.addLast(ex);
} else if (t.type == TOK.u_minus || t.type == TOK.u_plus) {
Expression ex = new UnaryExpression(TOKtoOP(t.type), (Expression) treeStack.removeLast());
treeStack.addLast(ex);
} else if (t.type == TOK.assign) {
Expression ex = new Assign((Expression) treeStack.removeLast(),
(Expression) treeStack.removeLast());
treeStack.addLast(ex);
}
}
0210:>>139 その4
NGNGToken a, b, c;
initialize(s);
Tokenizer tknz = new Tokenizer(); tknz.setString(s);
while (true) {
b = tknz.getToken();
if (b.type == TOK.END && ((Token) tokenStack.getLast()).getType() == TOK.END) break;
if (b.type == TOK.constant || b.type == TOK.id) {
tokenStack.addLast(b); continue;
}
a = (Token) tokenStack.getLast();
if (getRelation(a, b) == '<') {
tokenStack.addLast(b);
} else if (getRelation(a, b) == '>' || getRelation(a, b) == '=') {
do {
try {
buildTree(a);
} catch (Exception e) {
throw new Exception("式が不正");
}
tokenStack.removeLast();
a = (Token) tokenStack.getLast();
} while (getRelation(a, b) == '>' || getRelation(a, b) == '=');
if (b.type != TOK.rparen) tokenStack.addLast(b);
} else {
throw new Exception(errMsg[getRelation(a, b)]);
}
if (b.type == TOK.END && ((Token) tokenStack.getLast()).getType() == TOK.END) break;
}
return (Expression) treeStack.getLast();
}
}
0211>>139 その5
NGNGpublic int value;
public String name;
public Variable(String n) {
name = n;
}
public int eval() {
return value;
}
public String toString() {
return name;
}
}
class Assign extends Expression {
public Expression left;
public Expression right;
public Assign(Expression r, Expression l) {
left = l;
right = r;
}
public int eval() {
return right.eval();
}
public String toString() {
return "(" + left + "=" + right + ")";
}
}
0212>>139 その6
NGNGpublic int operator;
public Expression value;
public UnaryExpression(int op, Expression v) {
operator = op;
value = v;
}
public int eval() {
int val;
switch (operator) {
case OP.u_minus: val = -value.eval(); break;
case OP.u_plus: val = value.eval(); break;
default:
System.err.println("不正な単項演算子です"); val = 0;
}
return val;
}
public String toString() {
String exp = "(";
switch (operator) {
case OP.u_minus: exp += "-"; break;
case OP.u_plus: exp += "+"; break;
default:
System.err.println("不正な二項演算子です"); exp += "??";
}
exp += value + ")";
return exp;
}
}
0213:>>139 その7
NGNGpublic final static int plus = 0; //演算子+
public final static int minus = 1; //演算子-
public final static int mul = 2; //演算子*
public final static int div = 3; //演算子/
public final static int mod = 4; //演算子%
public final static int u_plus = 5; //単項演算子+
public final static int u_minus = 6; //単項演算子-
public final static int lparen = 8; //右括弧
public final static int rparen = 9; //左括弧
public final static int assign = 11; //演算子=(代入)
public final static int END = 12; //式の終わり
}
0214sage
NGNGimport java.io.*;
class PriorityThread extends Thread {
public PriorityThread(String name) {
super(name);
}
public void run() {
for(int i=0; i<10; i++) {
System.out.print(getName() + " ");
try{
Thread.sleep(400);
}
catch(InterruptedException e) { }
}
}
public static void main(String[] args) {
PriorityThread thread1 = new PriorityThread("스레드1");
PriorityThread thread2 = new PriorityThread("스레드2");
thread2.setPriority(NORM_PRIORITY+4);
thread1.start();
thread2.start();
try{
Thread.sleep(2000);
}
catch(InterruptedException e) { }
thread2.setPriority(NORM_PRIORITY-4);
}
}
0215デフォルトの名無しさん
NGNG0216デフォルトの名無しさん
NGNGする方法ってありますか?
0217M.B.
NGNG質問は質問スレへ
0219デフォルトの名無しさん
NGNG{
public static void main(String[] args)
{
int i = 27;
for(int j=3; j >=-1; j--) {
System.out.println("i=" + i + "j= " + j);
System.out.println(i/j);
}
}
}
これをtry-catch文に直したいのですが、どうすればいいでしょうか?
0220デフォルトの名無しさん
NGNGTimerクラスのことなのですが、
例えば、
Task task = new Task();
Timer timer = new Timer();
timer.schedule(task,10000L,500L);
とやれば、きちんと動くのですが、
Task task = new Task(String1,String2); ←※
Timer timer = new Timer();
timer.schedule(task,10000L,5000L);
というようにすると、一回目はきちんと動くのですが、それ以降だと、
※のところをもう一度読んでくれていないので、String1,String2がnullとして
作動します。
timer.schedule(new Task(String1,String2),10000L,5000L);
というようにしても同じでした。
TimerというクラスはTaskクラス(これはわたしが作ったクラス)のvoid run()メソッド
を読み込むので、こういう現象が起きるみたいなのです。
どうすれば、コンストラクタもちゃんと読んでもらえるようになるのでしょうか。
教えてください。
0221デフォルトの名無しさん
NGNGです。スレ間違えました。すみません。
無視してくださって結構です。
0222なんだかな?
NGNG配列同士の比較の問題です。
String A={"あ","い","う","え","お"}
String B={"あ","い"}
(配列は場合によって要素が異なる。上は、あくまで一例)
Bの配列の要素全てが、Aに含まれていればTrue、含まれていなければfalseにする。
プログラムです。
上の例だと、Bの要素には、「あ」「い」があります。Aの要素には、「あ」と「い」
がありますので、trueです。
ちなみにBの配列が、「あ」、「い」、「き」の場合は、Aに「き」がないのでfalseになります。
どなたかどうぞ宜しくお願いします
0223デフォルトの名無しさん
NGNGboolean flag = Arrays.asList(A).containsAll(Arrays.asList(B));
0224デフォルトの名無しさん
NGNG0225デフォルトの名無しさん
NGNGテクストファイルの名前を指令行の第1引数に指定すると, そのファイルの中身を後で述べる方式で圧縮してファイルに書き出すプログラムを 作ってください。書き出すファイルに付ける名前は,指令行の第2引数に 指定するようにします。
圧縮は, ファイルの各行の内容について,つぎのような操作を行うことで実現します。
行の中の文字を,同じ文字の続く限りまとめます。
それぞれのまとまりについて,その文字数が1個または2個であるときは,もとのとおりにその文字を1個または2個出力します。その文字 c が n 個 (n>2) 続いていたときは,c,'0', (char)n の3文字を出力します。
例を示します。
入力行:aaaabcaddccccccc
出力行:a.4bcaddc.7
ここで . は文字番号 0 の文字('0')を, 4 は文字番号 4 の文字((char)4)を, 7 は文字番号 7 の文字((char)7)を,それぞれ表しています。
0226デフォルトの名無しさん
NGNGmap
0227>>225 その1
NGNGimport java.util.regex.*;
public class HW57 {
public static void main(String[] args) {
BufferedReader r = null;
BufferedWriter w = null;
try {
FileInputStream fi = new FileInputStream(args[0]);
r = new BufferedReader(new InputStreamReader(fi));
} catch (FileNotFoundException e) {
System.out.println("入力ファイル名が不正か存在しない");
System.exit(0);
}
try {
w = new BufferedWriter(new FileWriter(args[1]));
} catch (IOException e1) {
System.out.println("出力ファイル名が無いか不正");
System.exit(0);
}
StringBuffer sb = new StringBuffer();
Pattern pat = Pattern.compile("(\\w)\\1*");
String line;
0228>>225 その2
NGNGwhile ((line = r.readLine()) != null) {
Matcher mat = pat.matcher(line);
while (mat.find()) {
String newline = mat.group();
if (newline.length() > 2) {
newline = mat.group(1) + ((char)0) + ((char)newline.length());
}
sb.append(newline);
}
sb.append("\r\n");
}
} catch (IOException e2) {
System.out.println("解析中に読み取りエラー");
System.exit(0);
}
try {
r.close();
w.write(sb.toString());
w.close();
} catch (IOException e3) {
System.out.println("ファイル書き込みエラー");
System.exit(0);
}
}
}
0229ねこさん
NGNGお願いします。
*****あ.xml********
<Top>
<youso><key>あ</key><key>い</key></youso>
<youso><key>う</key></youso>
<youso><key>え</key><key>お</key><key>か</key></youso>
</Top>
*********************
String A={"あ","き","え","か","お"}
上記のようなxmlとAの配列があります。このxmlは、あくまで一例です。
yousoのタグの数やkeyのタグの数は、複数ある場合があります。
また配列Aもyouso数が複数ある場合があります。
このようなあ.xmlのkeyのタグ内の文字列とA配列を比較してtureかfalseを判別します。
☆比較のルール
あ.xmlのkeyの文字列はyouso毎に分けます。youso内のkeyはandを示しています。
つまりあ.xmlでは、(「あ」と「い」),(「う」),(「え」と「お」と「か」)
を示すことになります。
これと配列Aが一つでも一致していれば、turuです。合っていなければfalseです。
上の例を使って説明します。
「あ」と「い」を比較するとA配列には、「あ」があるが「い」がないので×
「う」を比較するとA配列には、「う」がないので×
「え」と「お」と「か」を比較するとA配列には「え」と「お」と「か」があるので○
よって一つでも一致したものがあるのでtureになります。
このようなプログラムです。よろしくお願いします。
0230デフォルトの名無しさん
NGNGimport javax.xml.parsers.*; import org.w3c.dom.*;
import java.io.*; import java.util.*;
public class HW58 {
public static void main(String[] args) {
List listOfA = Arrays.asList(new String[] { "あ", "き", "え", "か", "お" });
boolean flag = false;
Document doc = null;
try {
DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
DocumentBuilder db = fac.newDocumentBuilder();
doc = db.parse(new File("あ.xml"));
} catch (Exception e) {
System.out.println("xmlファイルエラー"); System.exit(0);
}
NodeList elms = doc.getElementsByTagName("youso");
for (int i = 0; i < elms.getLength(); i++) {
List words = new ArrayList();
NodeList childs = ((Element) elms.item(i)).getElementsByTagName("key");
for (int k = 0; k < childs.getLength(); k++)
words.add(((Element) childs.item(k)).getTextContent());
for (int m = 0; m < words.size(); ++m)
System.out.print(words.get(m));
if (listOfA.containsAll(words)) {
flag = true; System.out.println(" : この行はTrue");
} else { System.out.println(" : この行はfalse"); }
}
if (flag) System.out.println("結果はTrue");
else System.out.println("結果はfalse");
}
}
0231デフォルトの名無しさん
NGNGをお願いします。
例: akasatana
と入力すると、
あかさたな
と表示される。
できるだけGUI形式で、つまりローマ字入力枠やひらがな表示枠などをひとつの画面に表示させるようにプログラムを作るようにする。
正しくないローマ字表現が入力された場合は、ローマ字のまま表示されるようにする。
0232デフォルトの名無しさん
NGNG>>1
0233デフォルトの名無しさん
NGNG下の2個の時計を表示するプログラムを以下のように変更する。
1.2個の時計の図形部をパラメトリックに変更する(時計の径だけでも構わない)。
2.2つの時計の大きさを変更してみる。
プログラムはこちらです。
ttp://www.uploda.org/file/uporg28022.txt
0234ねこさん
NGNG有難うございます。しかし上記のプログラムをコンパイルした結果一個だけエラーが
起こってしまいました。エラー内容は以下の通りです。
****************エラー内容*********************
シンボル: メソッド getTextContent ()
場所 : org.w3c.dom.Element の インタフェース
words.add(((Element) childs.item(k)).getTextContent());
^
エラー 1 個
**********************************************
素人目の僕には、難しくすみませんが
どうすればよいか教えてくださいよろしくお願い致します。
0235デフォルトの名無しさん
NGNGすいません・・・getTextContent()は、JSE1.5の新メソッドでした・・・
words.add(((Element) childs.item(k)).getTextContent());
の行を
Text text = (Text) ((Element) childs.item(k)).getFirstChild();
words.add(text.getNodeValue());
に修正してください・・・
0236ねこさん
NGNGしかしやっぱりエラーが・・・なんでだろう・・
エラー内容は以下の通りです。
****************エラー内容*********************
A.java:25: 文ではありません。
Text text = (Text) ((Element) childs.item(k)).getFirstChild();
^
A.java:25: ';' がありません。
Text text = (Text) ((Element) childs.item(k)).getFirstChild();
^
A.java:26: シンボルを解決できません。
シンボル: 変数 text
場所 : A の クラス
words.add(text.getNodeValue());
^
エラー 3 個
*******************************************
申し訳ないですが、またよろしくお願いします。
0237デフォルトの名無しさん
NGNGwords.add(((Element) childs.item(k)).getTextContent()); Text text = (Text) ((Element) childs.item(k)).getFirstChild();
}
を
for (int k = 0; k < childs.getLength(); k++) {
Text text = (Text) ((Element) childs.item(k)).getFirstChild();
words.add(text.getNodeValue());
}
としてください・・・
0238ていせい
NGNGwords.add(((Element) childs.item(k)).getTextContent());
}
を
for (int k = 0; k < childs.getLength(); k++) {
Text text = (Text) ((Element) childs.item(k)).getFirstChild();
words.add(text.getNodeValue());
}
としてください・・・
0239ねこさん
NGNGありがとうございました。動く事は出来ました。。(ToT)
しかし結果がおかしいようです。
下のxmlは、例題のやつなのですが
*****あ.xml********
<Top>
<youso><key>あ</key><key>い</key></youso>
<youso><key>う</key></youso>
<youso><key>え</key><key>お</key><key>か</key></youso>
</Top>
*********************
String A={"あ","き","え","か","お"}
この場合
・「あ」「い」×
・「う」×
・「え」「お」「か」○
結果tureになるはずなのですが、すべてfalseになってしまいます。
配列の中身をtureになるように変更しても同じようにfalseの結果しか出ません。
申し訳ないですが、もう一度宜しくお願いします。
0240デフォルトの名無しさん
NGNG一字一句間違わずに、ただコピペしてコンパイル、実行してください。
import javax.xml.parsers.*; import org.w3c.dom.*; import java.io.*; import java.util.*;
public class HW58 {
static final String[] A = { "あ", "き", "え", "か", "お" };
public static void main(String[] args) {
List listOfA = Arrays.asList(A); boolean flag = false; Document doc = null;
try {
DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
DocumentBuilder db = fac.newDocumentBuilder();
doc = db.parse(new File("あ.xml"));
} catch (Exception e) {
System.out.println("xmlファイルエラー"); System.exit(0);
}
NodeList elms = doc.getElementsByTagName("youso");
for (int i = 0; i < elms.getLength(); i++) {
List words = new ArrayList();
NodeList childs = ((Element) elms.item(i)).getElementsByTagName("key");
for (int k = 0; k < childs.getLength(); k++) {
Text text = (Text) ((Element) childs.item(k)).getFirstChild();
words.add(text.getNodeValue());
}
for (int m = 0; m < words.size(); ++m)
System.out.print(words.get(m));
if (listOfA.containsAll(words)) {
flag = true; System.out.println(" : この行はTrue");
} else { System.out.println(" : この行はfalse"); }
}
if (flag) System.out.println("結果はTrue");
else System.out.println("結果はfalse");
}
}
0241デフォルトの名無しさん
NGNG新スプリクト?
0242デフォルトの名無しさん
NGNG単語が辞書順に並べてあるファイルがあります。
そうしたファイル二つの名前を指令行の第1引数と第2引数に指定すると,
その二つのファイルの中を調べ,両方のファイルに現れている単語だけを
辞書順に並べたファイルを書き出すプログラムを作りなさい。
書き出したファイルに付ける名前は,指令行の第3引数に指定するようにする。
0243デフォルトの名無しさん
NGNGそのファイルの名前を 指令行の引数として与えると,
1番大きな数値, 2番目に大きな数値, 3番目に大きな数値の 3個の数値を
出力するプログラムを作りなさい。
ここで,数値として最大のもの,2番目のもの,3番目のものを出力する
ことに注意して下さい。たとえば,ファイルの中の数値が
1.0,2.0,2.0, 3.0, 3.0, 3.0, 4.0, 4.0, 4.0, 5.0
であったとすると、出力は 1番目:5.0, 2番目:4.0, 3番目:3.0
となります。
なお,たとえばすべてが同じ数値だったとすると,
2番目,3番目はありません。 そのときは,1番目だけを出力してください
。同様に,1番目,2番目の数値だけで, 3番目の数値がない
(つまり,2種類の数値しか現れない)こともあります。
そのときは1番目と2番目の値だけを出力してください。
0244デフォルトの名無しさん
NGNGありがとうございます。プログラムを実行したところ出力が
a.4bcaddc.7 ではなく、
a bcaddc となってしまうのですが・・・(;´Д`)?
0245デフォルトの名無しさん
NGNG>>225に
>ここで . は文字番号 0 の文字('0')を,
>4 は文字番号 4 の文字((char)4)を,
>7 は文字番号 7 の文字((char)7)を,それぞれ表しています。
と書いてましたので、連続した文字数は、注文通りにchar型の数値
そのままにしました・・・
newline = mat.group(1) + ((char)0) + ((char)newline.length());
の部分を
newline = mat.group(1) + ((char)0) + newline.length();
と
修正すれば数字の文字が入ります。
0246>>231 その1
NGNGimport java.awt.event.*;
import java.awt.*;
import java.util.*;
public class HW59 {
static final String alphas = "a,i,u,e,o,ka,ki,ku,ke,ko,sa,si,su,se,so,ta,ti,tu,te,to,"
+ "na,ni,nu,ne,no,ha,hi,hu,he,ho,ma,mi,mu,me,mo,ya,yi,yu,ye,yo,ra,ri,ru,re,ro,wa,wi,wu,we,wo,"
+ "ga,gi,gu,ge,go,za,zi,zu,ze,zo,da,di,du,de,do,ba,bi,bu,be,bo,pa,pi,pu,pe,po,"
+ "la,li,lu,le,lo,ltu,lya,lyi,lyu,lye,lyo";
static final String graphs = "あ,い,う,え,お,"
+ "か,き,く,け,こ," + "さ,し,す,せ,そ," + "た,ち,つ,て,と," + "な,に,ぬ,ね,の,"
+ "は,ひ,ふ,へ,ほ," + "ま,み,む,め,も," + "や,い,ゆ,え,よ," + "ら,り,る,れ,ろ,"
+ "わ,い,う,え,を," + "が,ぎ,ぐ,げ,ご," + "ざ,し,ず,ぜ,ぞ," + "だ,ぢ,づ,で,ど,"
+ "ば,び,ぶ,べ,ぼ," + "ぱ,ぴ,ぷ,ぺ,ぽ," + "ぁ,ぃ,ぅ,ぇ,ぉ," + "っ,ゃ,ぃ,ゅ,ぇ,ょ";
static final Map inputMap = new TreeMap() {
{
StringTokenizer st1 = new StringTokenizer(alphas, ",");
StringTokenizer st2 = new StringTokenizer(graphs, ",");
while (st1.hasMoreTokens() && st2.hasMoreTokens()) {
String tok = st1.nextToken();
if (tok.length() > maxlen)
maxlen = tok.length();
put(tok, st2.nextToken());
}
}
};
static JTextField tfd = new JTextField(40);
static JLabel lab = new JLabel();
static int maxlen;
0247>>231 その2
NGNGlab.setHorizontalAlignment(JLabel.CENTER);
JFrame frame = new JFrame();
tfd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
translate();
}
});
frame.getContentPane().setLayout(new BorderLayout(16, 16));
((JComponent) frame.getContentPane()).setBorder(BorderFactory.createEmptyBorder(16, 16, 16, 16));
frame.getContentPane().add(tfd, BorderLayout.NORTH);
frame.getContentPane().add(lab);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 300);
frame.setVisible(true);
}
0248>>231 その3
NGNGString text = tfd.getText().trim().toLowerCase();
StringBuffer sb = new StringBuffer();
StringBuffer ap = new StringBuffer();
for (int i = 0; i < text.length(); i++) {
ap.append(text.substring(i, i + 1));
String gp = (String) inputMap.get(ap.toString());
if (gp != null) {
sb.append(gp);
ap.delete(0, ap.length());
} else {
if (ap.length() == 2) {
if (ap.charAt(0) == 'n') {
sb.append("ん");
--i; ap.delete(0, ap.length()); continue;
}
else if (ap.charAt(0) == ap.charAt(1)) {
sb.append("っ");
--i; ap.delete(0, ap.length()); continue;
}
}
if (ap.length() >= maxlen) {
sb.append(ap.toString().charAt(0));
i -= ap.length() - 1;
ap.delete(0, ap.length());
}
}
}
lab.setText(sb.toString());
tfd.setText("");
}
}
0249>>231 その4
NGNG上のテキストフィールドに入力してEnterキーを押すと、
下に変換平仮名が出ます。
入力が面倒だったので、「ぴゃぴゅぴゅぴぇぴょ」などの文字は省略しました。
それらを追加したければ
変数alphasに、"pya,pyi,pyu,pye,pyo"・・・と追加し、
変数graphsに、"ぴゃ,ぴゅ,ぴゅ,ぴぇ,ぴょ"・・・と追加してください。
文字データはカンマで区切ってください。
alphasとgraphsの各文字データ(カンマで区切られた文字)の位置が
対照するようにしてください。
そうしないと別の文字が出てしまいます。
0250>>242 その1
NGNGpublic class HW60 {
public static void main(String[] args) {
BufferedReader r1 = null, r2 = null;
BufferedWriter w = null;
try {
FileInputStream fi1 = new FileInputStream(args[0]);
FileInputStream fi2 = new FileInputStream(args[1]);
FileWriter fw = new FileWriter(args[2]);
r1 = new BufferedReader(new InputStreamReader(fi1));
r2 = new BufferedReader(new InputStreamReader(fi2));
w = new BufferedWriter(fw);
} catch (Exception ex) {
System.out.println("ファイル名が指定されてない");
System.exit(0);
}
StringBuffer sb1 = new StringBuffer(), sb2 = new StringBuffer();
try {
String line;
while ((line = r1.readLine()) != null)
sb1.append(line + " ");
while ((line = r2.readLine()) != null)
sb2.append(line + " ");
r1.close();
r2.close();
} catch (IOException e) {
System.out.println("ファイル読み込みエラー");
System.exit(0);
}
0251:>>242 その2
NGNGSet words1 = new TreeSet();
Matcher mat = pat.matcher(sb1.toString());
while (mat.find())
words1.add(mat.group());
Set words2 = new TreeSet();
mat = pat.matcher(sb2.toString());
while (mat.find())
words2.add(mat.group());
words1.retainAll(words2);
try {
w.write("両ファイルの共通単語\r\n\r\n");
Iterator it = words1.iterator();
while (it.hasNext())
w.write(it.next() + "\r\n");
w.flush();
w.close();
} catch (IOException e1) {
System.out.println("ファイル書き込みエラー");
System.exit(0);
}
}
}
0252>>243
NGNGpublic class HW60 {
public static void main(String[] args) {
BufferedReader r1 = null;
try {
FileInputStream fi1 = new FileInputStream(args[0]);
r1 = new BufferedReader(new InputStreamReader(fi1));
} catch (Exception ex) {
System.out.println("ファイル名が指定されてない"); System.exit(0);
}
Set nums = new TreeSet();
try {
String line;
while ((line = r1.readLine()) != null) {
try {
nums.add(Double.valueOf(line.trim()));
} catch (NumberFormatException e1) { }
}
r1.close();
} catch (IOException e) {
System.out.println("ファイル読み込みエラー"); System.exit(0);
}
System.out.println("数値の大きい順で表示\n");
List list = new ArrayList(nums);
Collections.reverse(list);
Iterator it = list.iterator();
int count = 0;
while (it.hasNext() && count < 3) {
System.out.println(it.next()); ++count;
}
}
}
0253デフォルトの名無しさん
NGNGimport java.io.*;
public class IpUDPReceiveSample1{
private static int BUFFER_SIZE = 256;
static int port = 10000;
public void main(String args[]){
try{
DatagramSocket ds = new DatagramSocket(port);
byte[] data = new byte[BUFFER_SIZE];
System.out.println("Waiting.......");
while(true){
DatagramPacket dp = new DatagramPacket(data, BUFFER_SIZE);
ds.receive(dp);
data = dp.getData();
int length = dp.getLength();
String str = new String(data, 0, length);
System.out.println(str);
}
}
catch(Exception e){
System.err.println("エラーです" + e);
}
}
}
『 java.lang.NoSuchMethodError 』と実行時にエラーがでるのですがなにがいけないんでしょうか?
0254デフォルトの名無しさん
NGNGを
public static void main(String args[]){
に
0255デフォルトの名無しさん
NGNGありがとうございます。
無事、実行できました。
0256ねこさん
NGNG有難うございます。出来ました。。もう一度コピーしたらできるようになりました
0257>>233 その1
NGNGimport javax.swing.*; import javax.swing.event.*;
public class HW61 extends Applet {;
Mojiban f1,f2;
Tokei th1,th2;
public void init() {
f1 = new Mojiban("時計1"); f1.setSize(400,400); f1.setLocation(0,250); f1.show();
th1 = new Tokei(f1); th1.start();
f2 = new Mojiban("時計2"); f2.setSize(400,400); f2.setLocation(400,250); f2.show();
th2 = new Tokei(f2);
th2.start();
final JSlider sd1 = new JSlider(JSlider.VERTICAL, 50, 350, 200);
sd1.setOpaque(false);
sd1.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
f1.setSize(sd1.getValue());
}
});
final JSlider sd2 = new JSlider(JSlider.VERTICAL, 50, 350, 200);
sd2.setOpaque(false);
sd2.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent e) {
f2.setSize(sd2.getValue());
}
});
setLayout(new GridLayout(1, 2, 50, 0));
add(sd1); add(sd2);
}
}
0258>>233 その2
NGNGint size = 200;
boolean flag;
double tt=0.0;
double dt=1.0;
double dtq=0.0;
Button b1,b2,b3,b4;
public Mojiban(String s) {
super(s);
setSize(200,240);
b1 = new Button("中断");
b2 = new Button("再開");
b3 = new Button("速く");
b4 = new Button("遅く");
setLayout(new FlowLayout());
add(b1);
add(b2);
add(b3);
add(b4);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
}
0259:>>233 その3
NGNGString s=e.getActionCommand();
if ( s == "中断" ){
if ( dt!=0.0 ) {
dtq=dt;
dt=0.0;
}
}
else if ( s == "再開" )
dt=dtq;
else if ( s == "速く" )
dt*=2.0;
else if ( s == "遅く" )
dt/=2.0;
}
synchronized void setSize(int size) {
this.size = size;
flag = true;
}
0260>>233 その4
NGNGdouble da=3.1416/30.0;
double db=3.1416/6.0;
double ss,cc,t,r=size/2*0.95,rr=size/2*0.20;
double u,rrr=size/2*0.90;
double v,rrrr=size/2*0.85;
int x,y,xx,yy;
int center = 200;
if (flag) {
gg.setColor(getBackground());
gg.fillRect(0 , 0, getWidth(), getHeight());
flag = false;
}
Graphics2D g = (Graphics2D) gg;
g.setColor(Color.white);
g.fillOval(center-(size/2),center-(size/2),size,size);
g.setColor(Color.black);
g.setStroke(new BasicStroke(4));
g.drawOval(center-(size/2),center-(size/2),size,size);
g.setStroke(new BasicStroke(2));
g.drawOval(center-3,center-3,6,6);
t=da*(double)((int)tt%60);
ss=Math.sin(t);
cc=Math.cos(t);
0261:>>233 その5
NGNGy=center-(int)(r*cc);
xx=center-(int)(rr*ss);
yy=center+(int)(rr*cc);
g.drawLine(xx,yy,x,y);
g.setColor(Color.blue);
u=da*(double)(((int)tt/60)%60);
ss=Math.sin(u);
cc=Math.cos(u);
x=center+(int)(rrr*ss);
y=center-(int)(rrr*cc);
g.drawLine(center,center,x,y);
g.setColor(Color.red);
v=db*tt/3600.0;
ss=Math.sin(v);
cc=Math.cos(v);
x=center+(int)(rrrr*ss);
y=center-(int)(rrrr*cc);
g.drawLine(center,center,x,y);
tt+=dt;
}
}
0262>>233 その6
NGNG0263デフォルトの名無しさん
NGNGn が大きな値になっても,小数点以下100桁までほ正確に結果を出力するようにしてください。
お願い致します・・
0264デフォルトの名無しさん
NGNG2進法で出力するなら簡単ですね
0265デフォルトの名無しさん
NGNGありがとうございます。
0266ねこさん
NGNGの部分なのですが、argvが入力された時とされていない時で分岐をしたいのですが
どうすればよいでしょうか?
自分的にやってみたのですが、
入力されていなくても
argv→[Ljava.lang.String;@18fe7c3
このような文字列が入いってしまっているようなのです。何方か宜しくお願いします。
実行結果としては以下の通りです。
☆入力された場合
*********MS-DOS****************
C:\java>java A キーワード入力
argv:キーワードが表示
*******************************
☆入力されていない場合
*********MS-DOS****************
C:\java>java A
argv:キーワードが入力されていない
*******************************
0267デフォルトの名無しさん
NGNGargv.length
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNGどうしたらいいか教えていただけませんか?長すぎたので分割しました。よろしくお願いします。(1)
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.net.URL;
public class LunarPhases implements ActionListener {
final static int NUM_IMAGES = 8;
final static int START_INDEX = 3;
ImageIcon[] images = new ImageIcon[NUM_IMAGES];
JPanel mainPanel, selectPanel, displayPanel;
JComboBox phaseChoices = null;
JLabel phaseIconLabel = null;
public LunarPhases() {
selectPanel = new JPanel();
displayPanel = new JPanel();
addWidgets();
mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel, BoxLayout.PAGE_AXIS));
mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
mainPanel.add(selectPanel);
mainPanel.add(displayPanel);
}
0271デフォルトの名無しさん
NGNGprivate void addWidgets() {
for (int i = 0; i < NUM_IMAGES; i++) {
images[i] = createImageIcon("/images/image" + i + ".jpg");
}
phaseIconLabel = new JLabel();
phaseIconLabel.setHorizontalAlignment(JLabel.CENTER);
phaseIconLabel.setVerticalAlignment(JLabel.CENTER);
phaseIconLabel.setVerticalTextPosition(JLabel.CENTER);
phaseIconLabel.setHorizontalTextPosition(JLabel.CENTER);
phaseIconLabel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLoweredBevelBorder(),
BorderFactory.createEmptyBorder(5,5,5,5)));
phaseIconLabel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createEmptyBorder(0,0,10,0),
phaseIconLabel.getBorder()));
0272デフォルトの名無しさん
NGNGString[] phases = { "New", "Waxing Crescent", "First Quarter",
"Waxing Gibbous", "Full", "Waning Gibbous",
"Third Quarter", "Waning Crescent" };
phaseChoices = new JComboBox(phases);
phaseChoices.setSelectedIndex(START_INDEX);
phaseIconLabel.setIcon(images[START_INDEX]);
phaseIconLabel.setText("");
selectPanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Select Phase"),
BorderFactory.createEmptyBorder(5,5,5,5)));
displayPanel.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder("Display Phase"),
BorderFactory.createEmptyBorder(5,5,5,5)));
displayPanel.add(phaseIconLabel);
selectPanel.add(phaseChoices);
phaseChoices.addActionListener(this);
}
0273デフォルトの名無しさん
NGNGアプレットの作り方を勉強してください
0274デフォルトの名無しさん
NGNGpublic void actionPerformed(ActionEvent event) {
if ("comboBoxChanged".equals(event.getActionCommand())) {
phaseIconLabel.setIcon(images[phaseChoices.getSelectedIndex()]);
}
}
protected static ImageIcon createImageIcon(String path) {
java.net.URL imageURL = LunarPhases.class.getResource(path);
if (imageURL == null) {
System.err.println("Resource not found: "
+ path);
return null;
} else {
return new ImageIcon(imageURL);
}
}
private static void createAndShowGUI() {
JFrame.setDefaultLookAndFeelDecorated(true);
LunarPhases phases = new LunarPhases();
JFrame lunarPhasesFrame = new JFrame("Lunar Phases");
lunarPhasesFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
lunarPhasesFrame.setContentPane(phases.mainPanel);
lunarPhasesFrame.pack();
lunarPhasesFrame.setVisible(true);
}
0275デフォルトの名無しさん
NGNGpublic static void main(String[] args) {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
0276デフォルトの名無しさん
NGNGまず、宿題じゃなかったらスレ違い
あと、ソースコードのどこが間違ってるというより、アプレットを勉強してください
ついでにmainメソッドからinvokeLaterを使ってる意味がないな
0277デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG「自然数nを入力し、nのすべての約数(1とn自身除く)を出力する。
もしnが素数な"Prime"と出力する。」という問題をJAVAで書きたいのですが、どなたかご教授お願いします。
0281デフォルトの名無しさん
NGNG0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNGどんな感じでつくればいいのでしょうか?
0284デフォルトの名無しさん
NGNG”個々のインスタンスが一組のトランプをクラスDeckを作りなさい”
”Card , Deckをテストするための小さなプログラム(例えば、一組のトランプを生成してそのカードを表示するプログラム)DisplayDeckを作って実装しなさい”
”クラスCard , Deck , DisplayDeckについて、クラスObjectのどのメソッドをオーバーライドすべきかを考えてそれを実装しなさい”
という問題があるのですが自分には難しくてわかりません。教えていただけないでしょうか!?
0285デフォルトの名無しさん
NGNGDisplayDeckという名前は気持ち悪い
DeckPanel とか Board のほうがいい。
0286デフォルトの名無しさん
NGNG挙動なんてありようがない
単なる定数でしかない
0287カオル
NGNGさっぱり分からないのでお願い致します。
3人のケーキ職人が作るケーキを3人のお客が食べる様子をシミュレートするプログラムを定
義しなさい。ケーキは1つ作られるごとに1つのテーブルに置かれます。お客はそのテーブルか
らケーキを1つ取って食べます。テーブルには3個までしかケーキが置けません。ケーキがない
時には、お客はケーキがテーブルに置かれるのを待ちます。お客のA さんは5個、B さんは10
個、C さんは15個食べると満腹し、ケーキを食べることをやめます。
プログラムの条件
�@ つぎの4つのクラスを定義する
TestThread:ケーキが3個しか置けないテーブルを作り、ケーキ職人3人とお客3人を動
作させるクラス
Table:テーブルのクラス。ケーキを置くメソッドや、ケーキを取るメソッドをもつ。
Maker:ケーキ職人のクラス。テーブルにケーキを置くという動作を繰り返す。
Eater:ケーキを食べる人のクラス。テーブルからケーキを取るという動作を繰り返す。
�A Table クラスはQueue と同様に定義する。(Table にケーキを置く=Queue に要
素を入れる、Table からケーキを取る=Queue から要素を取り出す。)ただし、例外を発生す
るのではなく、テーブルが一杯の場合には、ケーキ職人はケーキを置くのを待ち、テーブル
が空の場合にはお客がケーキを取ることを待つように定義する。ここでケーキを置くメソッド
は put、ケーキを取るメソッドはtake とする。
�B Maker もEater も自己の動作を制御するフィールドrandom をもつ。この値によって、Maker
はケーキを置く前に作る時間があるという意味で間を置く。Eater はケーキを食べる時間があ
るという意味で間を置く。乱数の発生のついては以下のヒントを参照のこと。
0288デフォルトの名無しさん
NGNG�C Eater は満腹の限界値に応じて、食べる動作を終了する。終了時には何個食べたかというメ
ッセージを表示する。Maker はC さんが食べ終わるのを待ち、その後にそれぞれの作業を
終了する。それぞれ、終了時には作業の終了メッセージを標準出力に表示する。
�D ケーキには通し番号を付与する。開始番号は1。ケーキをテーブルに置いた場合は、だれ
が何個目のケーキを置いたのかを標準出力に表示する。ケーキを食べた時にも、だれが何
個目のケーキを食べたのかを標準出力に表示する。
ヒント
擬似乱数の発生には、java.util.Random クラスを利用する。
Random r = new Random(long seed);
により、seed を与えて擬似乱数を発生するインスタンスを生成する。
nextInt()
nextDouble()
nextLong()
nextInt(int i);
等々、いろいろなメソッドがあるが、ここでは間をおく期間が長すぎても困るので、一定の範
囲内で妥当な時間となるように数を調整する必要がある。
スレッドに名前をつけるには、以下のコンストラクタが利用できる。
コンストラクタ Thread(String name)
このようにして指定した名前は getName() で参照することができる。
0289デフォルトの名無しさん
NGNGどんな感じと言われても困るが
とりあえず、そのクラスを使う目的とかメソッドの使い方を他人が見ても
わかるように作る
0291デフォルトの名無しさん
NGNGSystem.out.printf で出力するということだな?
0292デフォルトの名無しさん
NGNG0293デフォルトの名無しさん
NGNG描画される三角形の個数は20個とする」
という問題で、以下のように書いたら、再帰使ってないから駄目と言われました。
どう直せばいいのか教えて下さい。
よろしくお願いします。
import java.applet.Applet;
import java.awt.*;
public class Problem3 extends Applet {
public void paint(Graphics g) {
int points = 3;
int x[] = new int[points];
int y[] = new int[points];
int i = 0;
x[0] = 200; // 三角形の第1頂点のX座標値
x[1] = 400; // 三角形の第2頂点のX座標値
x[2] = 0; // 三角形の第3頂点のX座標値
y[0] = 50; // 三角形の第1頂点のY座標値
y[1] = 384; // 三角形の第2頂点のY座標値
y[2] = 384; // 三角形の第3頂点のY座標値
}
0294デフォルトの名無しさん
NGNGvoid fillPolygon(x,y,points) {
if (i <= 20) {
setColor(g, i);
g.fillPolygon(x, y, points);
fillPolygon(
for (int i = 0;i<=20;i++) {
setColor(g, i);
g.fillPolygon(x, y, points);
fillPolugon
x[0] = x[0];
x[1] = x[1]-10;
x[2] = x[2]+10;
y[0] = y[0]+10;
y[1] = y[1]-5;
y[2] = y[2]-5;
}
}
void setColor(Graphics g, int count) {
0295293
NGNGswitch (count % 5) {
case 0:
g.setColor(Color.blue);
break;
case 1:
g.setColor(Color.magenta);
break;
case 2:
g.setColor(Color.pink);
break;
case 3:
g.setColor(Color.yellow);
break;
case 4:
g.setColor(Color.green);
break;
default:
g.setColor(Color.blue);
} }}
細切れになっちゃってすみません。。
よろしくお願いします。
0297デフォルトの名無しさん
NGNG0298>>284 その1
NGNGimport java.awt.*; import java.util.List; import java.util.*;
public class DisplayDeck extends JFrame {
public static void main(String[] args) {
new DisplayDeck();
}
List decks = new ArrayList();
int index;
DisplayDeck() {
List cards = new ArrayList();
for (int i = 1; i < 5; i++)
for (int k = 1; k < 14; k++)
cards.add(new Card(i, k));
Collections.shuffle(cards);
for (int i = 0; i < cards.size(); i+=2)
decks.add(new Deck((Card) cards.get(i), (Card) cards.get(i + 1)));
final JLabel lab1 = new JLabel(), lab2 = new JLabel();
lab1.setPreferredSize(new Dimension(70, 140));
lab2.setPreferredSize(new Dimension(70, 140));
lab1.setBorder(BorderFactory.createLineBorder(Color.black));
lab2.setBorder(BorderFactory.createLineBorder(Color.black));
lab1.setOpaque(true);
lab2.setOpaque(true);
lab1.setBackground(Color.blue.darker());
lab2.setBackground(Color.blue.darker());
lab1.setHorizontalAlignment(JLabel.CENTER);
lab2.setHorizontalAlignment(JLabel.CENTER);
lab1.setVerticalAlignment(JLabel.CENTER);
lab2.setVerticalAlignment(JLabel.CENTER);
0299:>>284 その2
NGNGpal.add(lab1);
pal.add(lab2);
getContentPane().add(pal);
JButton btn = new JButton("カードを一組表示する");
getContentPane().add(btn, BorderLayout.SOUTH);
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (index >= decks.size())
return;
lab1.setBackground(Color.white);
lab2.setBackground(Color.white);
lab1.setText(((Deck) decks.get(index)).getCard1().toString());
lab2.setText(((Deck) decks.get(index)).getCard2().toString());
++index;
}
});
setSize(300, 200);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
}
0300>>284 その3
NGNGprivate int mark, number;
private String pat1 = "1#スペード|2#クラブ|3#ダイア|4#ハート";
private String pat2 = "1#エース|2#2|3#3|4#4|5#5|6#6|7#7|8#8|9#9|10#10|11#ジャック|12#クイーン|13#キング";
private ChoiceFormat cf1 = new ChoiceFormat(pat1), cf2 = new ChoiceFormat(pat2);
Card(int mk, int num) {
mark = mk; number = num;
}
public boolean equals(Object obj) {
return obj instanceof Card && mark == ((Card) obj).mark && number == ((Card) obj).number;
}
public String toString() {
return "<html>" + cf1.format(mark) + "<br> の<br>" + cf2.format(number) + "</html>";
}
}
class Deck {
private Card card1, card2;
Deck(Card c1, Card c2) {
card1 = c1; card2 = c2;
}
public boolean equals(Object obj) {
return obj instanceof Deck && card1.equals(((Deck) obj).card1) && card2.equals(((Deck) obj).card2);
}
public Card getCard1() {
return card1;
}
public Card getCard2() {
return card2;
}
}
0301デフォルトの名無しさん
NGNGfillPolygonをこうしてみて・・・
void fillPolygon(Graphics g, int[] x, int[] y, int points, int index) {
if (index >= 20)
return;
setColor(g, i);
g.fillPolygon(x, y, points);
x[0] = x[0];
x[1] = x[1]-10;
x[2] = x[2]+10;
y[0] = y[0]+10;
y[1] = y[1]-5;
y[2] = y[2]-5;
fillPolygon(g, x, y, points, index + 1);
}
0302>>287 その1
NGNGpublic class Table {
static LinkedList queue = new LinkedList();
static List makers = new ArrayList(), eaters = new ArrayList();
static int cakeno = 1;
public static void main(String[] args) {
eaters.add(new Eater(1, 5));
eaters.add(new Eater(2, 10));
eaters.add(new Eater(3, 15));
for (int i = 1; i <= 3; i++)
makers.add(new Maker(i));
for (int i = 0; i < makers.size(); i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
((Thread) makers.get(i)).start();
}
for (int i = 0; i < makers.size(); i++) {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
}
((Thread) eaters.get(i)).start();
}
}
0303:>>287 その2
NGNGif (queue.size() >= 3)
return false;
queue.addLast(new Integer(cakeno++));
System.out.println(maker + "がテーブルにケーキ<" + queue.getLast() + ">を置く");
return true;
}
synchronized static int take(Eater eater) {
if (queue.isEmpty())
return -1;
System.out.println(eater + "がテーブルからケーキ<" + queue.getFirst() + ">を取る");
return ((Integer) queue.removeFirst()).intValue();
}
synchronized static void leave(Eater eater) {
eaters.remove(eater);
if (eaters.isEmpty())
for (int i = 0; i < makers.size(); i++)
((Thread) makers.get(i)).interrupt();
}
}
0304::>>287 その3
NGNGprivate int no, count;
private Random rand;
Maker(int no) {
this.no = no;
rand = new Random(System.currentTimeMillis() * no);
}
public void run() {
while (true) {
int ms = 500 + rand.nextInt(5000);
try {
Thread.sleep(ms);
} catch (InterruptedException e) {
System.out.println(this + "がケーキ作りをやめる 作成数 : " + count);
return;
}
System.out.println(this + "がケーキを完成");
++count;
while (!Table.put(this)) {
if (interrupted()) {
System.out.println(this + "がケーキ作りをやめる 作成数 : " + count);
return;
}
}
}
}
public String toString() {
return "ケーキ職人(" + no + ")";
}
}
0305:::>>287 その4
NGNGprivate int no, maxc, count;
private Random rand;
Eater(int no, int maxc) {
this.no = no;
this.maxc = maxc;
rand = new Random(System.currentTimeMillis() * no * 2);
}
public void run() {
while (true) {
int cakeno;
while ((cakeno = Table.take(this)) == -1) ;
int ms = 500 + rand.nextInt(5000);
try {
Thread.sleep(ms);
} catch (InterruptedException e) {
}
System.out.println(this + "がケーキ<" + cakeno + ">を食べ終える");
++count;
if (count >= maxc) {
System.out.println(this + "がテーブルから去る 消費数 : " + count);
Table.leave(this);
return;
}
}
}
public String toString() {
return "客(" + no + ")";
}
}
0307デフォルトの名無しさん
NGNGプログラムも提出しなきゃならないもので・・・
0308デフォルトの名無しさん
NGNGのように,項数 n を指令行の引数に指定すると,フィボナッチ数を前から n 項,すなわち, f0, f1, f2, ..., fn-1 を,各行に順に出力するプログラムを作りなさい。
なお,フィボナッチ数は,つぎの漸化式で定義されているものです。
f0 = 0, f1 = 1, fn+2 = fn+1+fn (n>=0)
フィボナッチ数自身は,少なくとも100桁まで正確に計算して出力してください。与えられた項数が大きすぎて,フィボナッチ数が100桁を超えたときは,そ之時点で計算を打ち切ってかまいません。
お願いします;;
0309デフォルトの名無しさん
NGNGclass TestMap {
public static void main(String[] args) {
String[] country = { "Japan", "UK", "France" };
String[] capital = { "Tokyo", "London", "Paris" };
HashMap map = new HashMap();
for (int i = 0; i < country.length; ++i) {
map.put(country[i], capital[i]);
}
for (int i = 0; i < args.length; ++i) {
System.out.print("Captal of " + args[i] + " : " );
System.out.println((String)(map.get(args[i])));
}
}
}
マップを使わないで上と同じ動きをするプログラムってわかりますか?
0310デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1105264976/l50
これどうにかしろよ。
0311デフォルトの名無しさん
NGNGじゃあおまえがどうにかしろよ。
0312デフォルトの名無しさん
NGNGそんなにきになるならおまえがどうにかしろ
0313デフォルトの名無しさん
NGNG問1 n個の数を蓄えた表がある。個の表の中のもっとも大きな数を求めるプログラムを作りなさい。ただし、表の中の数はでたらめに並んでいるものとする。
問2 正の整数nの階乗 n!= n × (n - 1) × (n - 2) × ・・・ × 2 × 1 を求めるプログラムを作りなさい。
問3 西暦年号yが与えられたときその年がうるう年であるかどうかを求めるプログラムを作りなさい。ただし、うるう年は次のように求めることができる。
(1) 4で割り切れる年は次の例外を除いてうるう年である。 (2) 100で割り切れる年は次の例外を除いてうるう年ではない。 (3) 400で割り切れる年はうるう年である。
問4 n個の数を蓄えた表がある。この表の中の数を逆順となるように並べ替えるプログラムを作りなさい。
問5 n個の数を蓄えた表がある。表の中の数はでたらめに並んでいる。この表の中の数を小さい数から順に大きな数となるように並べ替えるプログラムを作りなさい。
問6 正の整数Nがある。これをr進法で表記するためのプログラムを作りなさい。
0314デフォルトの名無しさん
NGNG問題:以下のプログラムを、TreeSet 及び ArrayList を使って作成してください。
import java.util.*;
import java.io.*;
class WordsSet {
private Set words;
public WordsSet(String fileName) {
words = new HashSet();
try {
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
StringTokenizer st = new StringTokenizer(line);
while (st.hasMoreTokens()) {
words.add(st.nextToken());
}
}
} catch (FileNotFoundException e) {
} catch (IOException e) {
}
}
0315デフォルトの名無しさん
NGNGpublic void listWords() {
System.out.println("number of words: " + words.size());
Iterator it = words.iterator();
while (it.hasNext()) {
System.out.println((String)it.next());
}
}
public static void main(String[] args) {
WordsSet ws = new WordsSet(args[0]);
ws.listWords();
}
}
0316初心者です
NGNG下に問題と参考のソースを書きますので、お願いしたいと思います。
次のプログラムは、「奇数魔方陣」を求めるためのプログラムです。
奇数魔方陣とは、n×n(nは奇数)の正方形のマスの中に1〜n×nまでの数字を
各行、各列、対角線のそれぞれの合計が、全て同じ数になるように並べたものです。
0317通りすがり
NGNG問題はこれだけですか?
もう少し詳しく教えてください。
TreeSetとArrayListを両方用いるのか、TreeSetで1つArrayListで1つ答案を用意するのか、あたりを。
0318初心者
NGNG0319初心者
NGNG0320初心者
NGNG0321初心者
NGNG0322デフォルトの名無しさん
NGNGpublic class Q1 {
public static void main(String[] args) {
int max = Integer.MIN_VALUE;
for( int i=0; i<args.length; i++ ) {
max = Math.max( max, Integer.parseInt(args[i]) );
}
System.out.println( "最大値:" + max );
}
}
public class Q2 {
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
if( n < 0 ) System.exit(1);
int factorial = 1;
for( int i=n; i>0; i-- ) {
factorial *= i;
}
System.out.println( n + "の階乗:" + factorial );
}
}
public class Q3 {
public static void main(String[] args) {
int year = Integer.parseInt(args[0]);
boolean isLeapYear = false;
if( year%400 == 0 ) isLeapYear = true;
else if( year%100 == 0 ) isLeapYear = false;
else if( year%4 == 0 ) isLeapYear = true;
else isLeapYear = false;
System.out.println( "西暦" + year + "年はうるう年" + (isLeapYear ? "です。" : "ではありません。") );
}
}
0323デフォルトの名無しさん
NGNGpublic class Q1 {
public static void main(String[] args) {
int max = Integer.MIN_VALUE;
for( int i=0; i<args.length; i++ ) {
max = Math.max( max, Integer.parseInt(args[i]) );
}
System.out.println( "最大値:" + max );
}
}
public class Q2 {
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
if( n < 0 ) System.exit(1);
int factorial = 1;
for( int i=n; i>0; i-- ) {
factorial *= i;
}
System.out.println( n + "の階乗:" + factorial );
}
}
public class Q3 {
public static void main(String[] args) {
int year = Integer.parseInt(args[0]);
boolean isLeapYear = false;
if( year%400 == 0 ) isLeapYear = true;
else if( year%100 == 0 ) isLeapYear = false;
else if( year%4 == 0 ) isLeapYear = true;
else isLeapYear = false;
System.out.println( "西暦" + year + "年はうるう年" + (isLeapYear ? "です。" : "ではありません。") );
}
}
0324デフォルトの名無しさん
NGNGpublic class Q4 {
public static void main(String[] args) {
int[] nums = new int[args.length];
for( int i=0; i<args.length; i++ ) {
nums[args.length-i-1] = Integer.parseInt(args[i]);
}
System.out.print( "出力:" );
for( int i=0; i<nums.length; i++ ) {
System.out.print(nums[i] + ", ");
}
}
}
public class Q6 {
public static void main(String[] args) {
int num = Integer.parseInt(args[0]);
int base = Integer.parseInt(args[1]);
java.util.ArrayList answerList = new java.util.ArrayList();
while( num > 0 ) {
int reminder = num % base;
num /= base;
answerList.add( new Integer(reminder) );
}
Integer[] answers = (Integer[])answerList.toArray(new Integer[0]);
for( int i=0; i<answers.length; i++ ) {
System.out.print(answers[answers.length-i-1]);
}
}
}
問5は次レスで。
0325デフォルトの名無しさん
NGNG問4、問6が書き込みに失敗したって出たけど、嘘っぽいので問5も書いておく。
public class Q5 {
public static void main(String[] args) {
int[] nums = new int[args.length];
for( int i=0; i<args.length; i++ ) {
nums[i] = Integer.parseInt(args[i]);
}
int temp = 0;
for( int i=0; i<nums.length; i++ ) {
for( int j=0; j<i; j++ ) {
if( nums[j] > nums[i] ) {
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
System.out.print( "ソート結果:" );
for( int i=0; i<nums.length; i++ ) {
System.out.print(nums[i] + ", ");
}
}
}
動かし方と実行結果。
問1:java Q1 20 30 40 30 20→最大値:40
問2:java Q2 5→5の階乗:120
問3:java Q3 2005→西暦2005年はうるう年ではありません。
問4:java Q4 1 2 3 4 5 6→出力:6, 5, 4, 3, 2, 1,
問5:java Q5 30 40 20 10 90 80→ソート結果:10, 20, 30, 40, 80, 90,
問6:java Q6 15 2→1111 (15は2進数表記だと「1111」)
0326デフォルトの名無しさん
NGNGわかり易く動かし方までつけていただき有難うございました。m(_ _)m
0327初心者
NGNG//OddMagicPhalanx.java
import java.awt.*; import java.awt.event.*;
class OddMagicPhalanxPanel extends Panel {
public void paint(Graphics g){
final int N =7;int i,j,k;
int[][] hojin = new int[N+1][N+1];
j=(N+1)/2; i=0;
for(k=1;k<=N*N;k++){
if((k%N)==1)
i++;
else{i--;j++;}
if(i==0)
i=N;
if(j>N)
j=1;
hojin[i][j]=k;}
g.drawString("Magic Phalanx(Odd)(N="+N+")",140,20);
for(i=1;i<=N;i++){
for(j=1;j<=N;j++)
g.drawString(""+hojin[i][j],40*j,20*i+20);}}}
class OddMagicPhalanxFrame extends Frame {
public OddMagicPhalanxFrame() {
setSize(350,250);addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);}});
Panel p =new OddMagicPhalanxPanel();add(p);}}
public class OddMagicPhalanx {
public static void main(String args[]){
Frame w =new OddMagicPhalanxFrame(); w.show();}}
0328カオル
NGNGすみません、再度宿題お願いなのですが、
QueueをLinkedListではなく、リングバッファで表してもらえませんか?
自力でやろうとしましたが無理でした。。。(´Д`;)
0329デフォルトの名無しさん
NGNGFourNMagicPhalanx.java
-------ここから
import java.awt.*;
import java.awt.event.*;
class FourNMagicPhalanxPanel extends Panel {
public void paint(Graphics g) {
final int FOUR_N = 12;
int i, j, k;
int[][] hojiFourN = new int[FOUR_N][FOUR_N];
g.drawString("Magic Phalanx(4N)(4N=" + FOUR_N + ")", 140, 20);
for (i=0; i<FOUR_N; i++) {
for (j=0; j<FOUR_N; j++) {
// 4x4で区切ったときに対角線上にあるとき
if( i%4==j%4 || i%4+j%4==4-1 ) {
g.drawString("" + (j*FOUR_N+i+1), 40 * (j+1), 20 * (i+2));
// 4x4で区切ったときに対角線上にないとき
} else {
int ura_i = FOUR_N-1-i;
int ura_j = FOUR_N-1-j;
g.drawString("" + (ura_j*FOUR_N+ura_i+1), 40 * (j+1), 20 * (i+2));
}
}
}
}
}
class FourNMagicPhalanxFrame extends Frame {
public FourNMagicPhalanxFrame() {
setSize(350, 250);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
0330デフォルトの名無しさん
NGNGつづき
}
});
Panel p = new FourNMagicPhalanxPanel();
add(p);
}
}
public class FourNMagicPhalanx {
public static void main(String args[]) {
Frame w = new FourNMagicPhalanxFrame();
w.show();
}
}
-------ここまで
俺は配列0からしか考えられない人なので327とはその辺の実装方法が違います。
ちなみに
ttp://www2u.biglobe.ne.jp/~zed/m_s4n.htm
を参考にしました。
0331330
NGNG○for文
スマソ…。
0332デフォルトの名無しさん
NGNG0333初心者
NGNG一月末にテストがあるのですが、また質問させてもらうかもしれません。
そのときは、どうぞよろしくお願いします。
0334デフォルトの名無しさん
NGNG�@ 問題文は自己省略せずに、直接全部貼り付けてください。
宿題&課題をそのまま丸投げするのが、一番好ましい提示法です。
�A 数学問題は何々法でせよだけでなく、その解を出す為の数式を
具体的に詳細に説明してください。
ただ、数学問題の回答率は低いです・・・。
�B 宿題&課題とその回答プログラムに対する質問はOKですが、
それ以外の普通の質問はここではしないでください。
JavaScript、Perl、Ruby、HSP など、他言語の課題はやめてください。
�C もし自分の提示課題への回答プログラムが返って来たら、
動いた動かなかった位の返レスをお願いします。
�D 隣のマッドマックスばりの殺伐とした無法地帯Java質問スレと違って、
ここ宿題スレは、みんな仲良くがモットーの明るく楽しいスレッドを
目指しているので、無礼かつ乱暴な言葉使いは控えてください。
0335M.B.
NGNG……ついでに言うと、(丸数字などの)OS 依存である可能性の
高い文字は使わないほうが「OS に依存しない開発環境」である
Java の世界では、印象がいいかも知れない……
0336初心者
NGNG自分では解けないのでよろしくお願いします
(大学では作成は秀丸で実行はコマンドプロンプトを使用しています)
【問題1】月と日を入力し、1月1日からその日までの日数を入力する。
閏年ではない年として計算してよい
適当に入力データを与えてプログラムを実行し結果も添付すること
<入力例> <出力例>
3 13 元日より 72日
【問題2】自然数nを入力し,nの全ての約数(1とn自身をのぞく)
を出力する.もしnが素数なら'prime'と出力する.
0337デフォルトの名無しさん
NGNGint max = Math.max(A,B);
でAとBが同数だった場合maxには何が代入されることになるのでしょうか?
よろしくお願いします
0338330
NGNGimport java.math.BigInteger;
public class Fibanacci {
public static void main(String[] args) {
int n = Integer.parseInt(args[0]);
BigInteger sum = new BigInteger("1");
BigInteger before = new BigInteger("1");
BigInteger before_before = new BigInteger("1");
for( int i=0; i<n; i++ ) {
if( i==0 ) sum = new BigInteger("1");
else if( i==1 ) sum = new BigInteger("1");
else {
sum = before.add(before_before);
before_before = before;
before = sum;
if( sum.toString().length() > 100 ) {
System.out.println( "100ケタを超えたので終了します。" );
System.exit(0);
}
}
System.out.println( sum );
}
}
}
0339デフォルトの名無しさん
NGNGhttp://java.sun.com/j2se/1.4/ja/docs/ja/api/java/lang/Math.html#max(int, int)
0340デフォルトの名無しさん
NGNGimport java.util.ArrayList;
class TestMap{
public static String a[];
public static void main(String args[]){
a = args;
new TestMap();
}
TestMap(){
String[] country = {"j","u","f"};
String[] capital = {"t","l","c"};
map m = new map();
for(int i = 0;i<country.length;i++){
m.put(country[i],capital[i]);
}
for(int i = 0;i<a.length;i++){
System.out.println((String)m.get(Integer.parseInt(a[i])));
}}
class map{
private ArrayList c;
private ArrayList cc;
map(){
c = new ArrayList();
cc = new ArrayList();
}
void put(String country, String capital){
c.add(country);
cc.add(capital);
}
String get(int i){
return c.get(i)+","+cc.get(i);
}}}
0341337
NGNG0342デフォルトの名無しさん
NGNGclass Testn{
private String[] count;
public static void main(String args[]){
new Testn(150);
}
Testn(int n){
count = new String[n];
p(n);
for(int i = 0;i<count.length;i++){
if(count[i] != null){
System.out.println(i+count[i]);
}}}
boolean p(int n){
boolean d = false;
for(int i=2;i<n;i++){
if(n%i==0){
count[i] = "";
count[n/i] = "";
if(p(n/i)==false){
count[n/i]="prim";
}
if(p(i)==false){
count[i]="prim";
}
d = true;
}}
return d;
}}
int 範囲内でしか使えない書き直してくれ。
問題2のみ
0343293
NGNG>>293-295 の件です。
お答え、ありがとうございました。
コンパイルにかけてみたところ、
「シンボルが解決できません。
シンボル:変数i
場所:Problem3のクラス setColor(g,i); 」
と出てしまうのですが、この点はどう直したら良いでしょうか?
度々申し訳ありませんが、ご教授お願い致します。
0344デフォルトの名無しさん
NGNGsetColor(g,index);
としてください・・・
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNG問題1のみ
class DLT
{
private static final int[] lom = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
private static int count(String[] s){
int month = Integer.parseInt(s[0]);
int day = Integer.parseInt(s[1]);
int length = day;
for(int i=0; i<=month-2; i++) length += lom[i];
return length;
}
public static void main(String[] args){
if(args.length != 2) return;
System.out.println("元日より"+count(args)+"日");
}
}
0347デフォルトの名無しさん
NGNG使用している関数名を頻度順に並べなさい。
これは宣言文と実際の式のどちらも含みます。
なお、同じ頻度の関数は辞書順に並べなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに
入力した出力を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに
依存しなければなりません。
勝手な上限を設けてはいけません。
但し、関数名の長さは高々 255 文字と仮定して良い。
実行例
入力
int combination(int n, int m){
if(m==0){return 1;}
else if(n==m){return 1;}
return combination(n-1,m-1)+combination(n-1,m);
}
main(){
int n=5,m=2;
printf("%dC%d = %d\n",n,m,combination(n,m));
}
出力
combination: 4
main: 1
printf: 1
まったくわからないので助けてください。
0348依頼人:>>309
NGNG0350デフォルトの名無しさん
NGNGこのページの練習9-4がさっぱりわかりません
どうか教えてください
0351デフォルトの名無しさん
NGNGint[] target = { 2, 3, 7, 8, 1 };
Arrays.binarySearch( target, 7 );
0352デフォルトの名無しさん
NGNGimport java.util.Hashtable;
import java.util.Enumeration;
class Testn{
private Hashtable key;
public static void main(String args[]){
new Testn(126820);}
Testn(int n){
key = new Hashtable();
p(n);
for(Enumeration e = key.elements();e.hasMoreElements();){
System.out.println(e.nextElement());}}
boolean p(int n){
boolean d = false;
for(int i=2;i<n;i++){
if(n%i==0){
if(key.size()!=0){
if(key.containsKey(String.valueOf(i))==false){
key.put(String.valueOf(i),String.valueOf(i));}
}else{
key.put(String.valueOf(i),String.valueOf(i));}
if(p(i)==false){
key.remove(String.valueOf(i));
key.put(String.valueOf(i),String.valueOf(i)+"prim");}
d = true;}}
return d;}}
0353デフォルトの名無しさん
NGNG0354デフォルトの名無しさん
NGNG0355デフォルトの名無しさん
NGNGエクセルでないと駄目なの?
まぁ、JDBC-ODBCブリッジドライバでできると思うからぐぐってみて
わからなかったら次は↓に行ってくれ、スレ違いだから
http://pc5.2ch.net/test/read.cgi/tech/1103729175/
0356依頼人2
NGNG3で割り切れる数値の表示の仕方を教えてください
0357デフォルトの名無しさん
NGNGマルチ乙
0359デフォルトの名無しさん
NGNGclass SelectionSort {
public static void main(String[] args) {
int max = 100; //配列のサイズ
ArraySelectionSort data = new ArraySelectionSort(max); //データを格納する配列の確保
data.setArray(77);
data.setArray(99);
data.setArray(44);
data.setArray(55);
data.setArray(22);
data.setArray(88);
data.setArray(11);
data.setArray(00);
data.setArray(66);
data.setArray(33);
data.display(); // ソート前のデータの表示
data.sortSelection(); // 選択ソートの実行
data.display();// ソート後のデータの表示
boolean d = data.binarySerch(Double.parseDouble(args[0]),data.size(),0,(int)(data.size()+0)/2);
System.out.println(d);
}
}
0360デフォルトの名無しさん
NGNGclass ArraySelectionSort {
private double[] array; //データを格納する配列を指す参照
private int numElems; //データ数
public ArraySelectionSort(int max) { //コンストラクタ
array = new double[max]; //配列の確保
numElems = 0;
}
public void setArray(double value) { //配列へのデータの挿入
array[numElems] = value; //代入
numElems++; //データ数をインクリメント
}
public void display() { //配列の内容(データ)の表示
for (int i = 0; i < numElems; i++)
System.out.print("\t" + array[i]);
System.out.println("");
}
0361デフォルトの名無しさん
NGNGpublic void sortSelection() { //選択ソートの実施
int in, out, min;
for (out = 0; out < numElems - 1; out++) {
min = out;
for (in = out + 1; in < numElems; in++)
if(array[in] < array[min])
min = in;
swap(out, min);
}
}
public void swap(int one, int two) { //データの交換
double temp = array[one];
array[one] = array[two];
array[two] = temp;
}
0362デフォルトの名無しさん
NGNG//個々から書き足し
public int size(){
return numElems-1;
}
public boolean binarySerch(double target,int max, int min, int point){//binaryserch
if(point>max || point<min){
return false;
}
if(array[point]==target){
return true;
}
if(array[point]<target){
return binarySerch(target, max, point, ((int)(max+point)/2)+1);
}else{
return binarySerch(target, point, min, ((int)(min+point)/2)-1);
}
}
}
0363デフォルトの名無しさん
NGNGエクセルでなくてもいいです。
0364デフォルトの名無しさん
NGNGimport java.io.*;
public class ProgramsCollection {
/*private*/ int correct = 0;
private static final int QUESTIONS = 20;
public static void main(String[] args) throws IOException {
ProgramsCollection obj = new ProgramsCollection();
for (int i = 0; i < QUESTIONS; i++) {
int random = (int) (Math.random() * 3);
int a = (int)(Math.random() * 100);
int b = (int)(Math.random() * 100);
switch (random) {
case 0:
if( plus(a, b) ) obj.correct++; break;
case 1:
if( minus(a, b) ) obj.correct++; break;
case 2:
if( mult(a, b) ) obj.correct++; break;
}
}
System.out.println( "出題数:" + QUESTIONS );
System.out.println( "正解数:" + obj.correct );
System.out.println( "正答率:" + obj.correct * 100 / QUESTIONS + "%" );
}
public static boolean plus(int a, int b) throws IOException {
System.out.print( a + " + " + b + " = " );
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
int ans = Integer.parseInt(br.readLine());
return ans == a + b;
}
0365デフォルトの名無しさん
NGNGimport java.util.Random;
class HitNumCanvas extends Canvas implements Runnable
{
int nShownNumber=3;
int nPosX[],nPosY[];
int No[];
String NoStr[];
int nScreenWidth,nScreenHeight,nFontWidth,nFontHeight;
Thread myThread;
Random rnd; boolean bEnd=false;
int keyNum=0, KeyCnt=0;
private int RandomNum(int maxVal)
{
int rnum=rnd.nextInt();
rnum=rnum % maxVal;
if (rnum<0) rnum=-1*rnum;
return rnum;
}
public HitNumCanvas()
{
setSoftLabel(Frame.SOFT_1,"再開");
setSoftLabel(Frame.SOFT_2,"終了");
0366364
NGNGつづき
public static boolean minus(int a, int b) throws IOException {
System.out.print( a + " - " + b + " = " );
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
int ans = Integer.parseInt(br.readLine());
return ans == a - b;
}
public static boolean mult(int a, int b) throws IOException{
System.out.print( a + " x " + b + " = " );
BufferedReader br = new BufferedReader( new InputStreamReader(System.in) );
int ans = Integer.parseInt(br.readLine());
return ans == a * b;
}
}
例外処理は自分で書いて。
0367デフォルトの名無しさん
NGNG{
int rnum=rnd.nextInt();
rnum=rnum % maxVal;
if (rnum<0) rnum=-1*rnum;
return rnum;
}
public HitNumCanvas()
{
setSoftLabel(Frame.SOFT_1,"再開");
setSoftLabel(Frame.SOFT_2,"終了");
nScreenWidh=getWidth();
nScreenHeight=getHeight();
rnd= new Random();
0368デフォルトの名無しさん
NGNG0369デフォルトの名無しさん
NGNG来年もがんばれ後輩よ!
去年よりもキチーな...
正規表現(Stringクラスのヤツね)とStringTokenizerクラスで関数名を検出するんだ!
具体的には(の前の単語を取り出せばいいわけだ...
「同じ頻度の関数は辞書順に並べなさい」
→「Tree○○○を使いなさい」と読み取れるよな...
0370デフォルトの名無しさん
NGNG0371デフォルトの名無しさん
NGNG0372デフォルトの名無しさん
NGNG0373デフォルトの名無しさん
NGNGアプリケーション起動が可能なアプレットを作れ。
ただし、読み込みボタンはフレームで配置し
テキストエリアに表示させよ。
という課題が出されました。
自分では解けなかったので教えてください。
0374デフォルトの名無しさん
NGNGpublic boolean binarySerch(double target,int max, int min, int point){//binaryserch
if(array[point]==target){
return true;
}
if(point>=max || point<=min){
return false;
}
if(array[point+1]==target){
return true;
}
if(array[point-1]==target){
return true;
}
if(array[point]<target){
return binarySerch(target, max, point, ((int)(max+point)/2));
}else{
return binarySerch(target, point, min, ((int)(min+point)/2));
}
}
0375デフォルトの名無しさん
NGNGもう一度よく読んでみると検索方法間違っていました。
検索を失敗する部分をエラーとして逃げるのか状況がつかめないのですが、
とりあえずこのような感じでしょか
public boolean binarySerch(double target,int max, int min, int point){//binaryserch
if(array[point]==target){
return true;
}
if(point==max){
return (array[min]==target);
}else if(point==min){
return (array[max]==target);
}
if(point>max || point<min){
return false;
}
if(array[point]<target){
return binarySerch(target, max, point+1, ((int)(max+point)/2));
}else{
return binarySerch(target, point-1, min, ((int)(min+point)/2));
}
}
0376初心者
NGNGみなさん答えていただきありがとうございました
おかげ様で無事宿題を提出することができました
大変感謝いたします
0377デフォルトの名無しさん
NGNG問題文がこのままだと意味が不明瞭なところがあります。
(1) ファイルダイアログから読み込むのはテキストファイルで、
そのファイルの文字列をテキストエリアに表示させる。
(2) ファイルダイアログから読み込んだ「ファイルのパス情報」を
テキストエリアに表示するのか。
問題として出すなら(1) だけど「テキストファイル」とはどこにも書いてないしなー。
全然違ってたらダサイな。。
0378W
NGNGimport java.awt.*; import java.awt.event.*;
class CalcPiFrame extends Frame {
private Panel p; private TextField tf; private Button bt;
public CalcPiFrame() {
setSize(200,200);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0); }});
add(p=new Panel(),"Center"); add(tf=new TextField("",10),"North"); add(bt=new Button("Calculation of PI"),"South");
bt.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Graphics g=p.getGraphics();
final int N=50000;
double x,y,pai;
int i,sum=0,px,py;
g.clearRect(50,10,100,100); g.drawRect(50,10,100,100);
for (i=1;i<N;i++) {
x=Math.random();
y=Math.random();
if (x*x+y*y<1) {
px=50+(int)(100*x);py=110-(int)(100*y);
g.drawLine(px,py,px,py);
sum++; }}
pai=(double)4*sum/N;
tf.setText("PI ="+pai);
g.dispose(); } }); } }
public class CalcPi { public static void main(String[] args) {
Frame w=new CalcPiFrame();
w.show();}}
よろしくお願します。
0379デフォルトの名無しさん
NGNGhttp://www.google.com/search?hl=ja&lr=lang_ja&ie=sjis&q=pi+%83%82%83%93%83e%83J%83%8B%83%8D%81@%97%90%90%94
0380373
NGNG問題文がわかりにくくてすみません。
(1)の方です。
問題用紙には実行サンプルの図が載っているのですが
取り込めないので載せられませんでした。
0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNGタイトル嫁
0383デフォルトの名無しさん
NGNG// ShowTextApplet.java
import java.applet.Applet;
public class ShowTextApplet extends Applet {
public void init() {
ShowTextFrame frame = new ShowTextFrame();
frame.setVisible(true);
}
}
// ShowTextFrame.java
import java.awt.*; import java.awt.event.*; import java.io.*;
public class ShowTextFrame extends Frame implements ActionListener {
Button chooseButton;
String fullPath;
FileDialog fileDialog;
TextArea textArea;
Panel panel, smallPanel;
public ShowTextFrame() {
setTitle("テキストファイル表示");
panel = new Panel();
panel.setLayout( new BorderLayout() );
smallPanel = new Panel();
smallPanel.add( chooseButton = new Button("ファイル選択") );
chooseButton.addActionListener(this);
panel.add( BorderLayout.NORTH, smallPanel );
panel.add( BorderLayout.CENTER, textArea = new TextArea() );
add( panel );
setSize( 500, 500 );
setVisible(true);
}
0384デフォルトの名無しさん
NGNGつづき
public void actionPerformed(ActionEvent ae) {
if( ae.getSource().equals(chooseButton) ) {
fileDialog = new FileDialog(this, "ファイルを選択してください。");
fileDialog.setVisible(true);
fullPath = fileDialog.getDirectory() + fileDialog.getFile();
try {
BufferedReader br = new BufferedReader( new FileReader(fullPath) );
String line;
StringBuffer buffer = new StringBuffer();
while( (line=br.readLine()) != null ) {
buffer.append(line + "\n");
}
textArea.setText(buffer.toString());
} catch( IOException ie ) {
textArea.setText(ie.getMessage());
}
} else {
System.out.println( "error!" );
}
}
}
0385383, 384
NGNG書くの忘れたけど、
「アプリケーション起動が可能なアプレット」の意味が分かりません。
「mainメソッドからFrameをnewすることで、Javaアプリケーションとして実行する」
という意味ならば、それはアプレットではありません。
とりあえず>>383,384ではAppletクラスを継承しときました。
0386デフォルトの名無しさん
NGNGボタンを押すとテキストフィールドに書いてある内容が
新規テキストファイルに書き込まれ出力される。
テキストファイルのファイル名は学籍番号。
たったこれだけのことができないオレはいったい・・・
エクリプス使ってるんですが下線がいっぱい・・・
0387デフォルトの名無しさん
NGNGぐぐってみたのですがいまいち分からんので聞いてみます。
・Java言語で書かれるプログラム(applet,application,servlet,JSP)の
それぞれについて、「その内容、形式、役割」等々について述べよ。
・HTTP通信におけるサーブレットの役割について述べよ。
それぞれ900字以上ですが(そんなに何を書けって言うんだ…
お願いします。
0388デフォルトの名無しさん
NGNGGUIでボタンを作成しボタンが押されることでコンパイル、実行ができるプログラムを作成せよ。また結果はGUIに表示せよ。
0389デフォルトの名無しさん
NGNG0390293
NGNG一回そうしてみたのですが、コンパイルは出来るのですが表示がされなくて、
何か他のとこが間違ってるのかな?と思っていました。
コンパイル出来るけど、そのあとappletviewer でも、htmlの表示でも表示できない場合は、
やっぱりプログラム自体が何か違うんでしょうか?
0391デフォルトの名無しさん
NGNGという課題がでました。
丸投げで申し訳ありませんが、よろしくお願いします。
0392デフォルトの名無しさん
NGNGどこまでわかってるのか書いたほうがレス率あがるんじゃ?
0393デフォルトの名無しさん
NGNGモンテカルロ法によるパイの計算です.
たとえば辺の長さが1の正方形とそれに内接する円が有った場合,
正方形の面積は1, 円は0.25*パイ(円の半径は0.5なので)になります.
そこで, たとえば-0.5から0.5まで二つ組で乱数を振って(各々x座標とy座標に相当),
振った組数と円の内側に来た組数(x*x+y*y<1で判定できる)を
まずカウントします. 乱数の数は充分多ければ面積に比例すると
考えられるので, 上記の数の比からパイが計算できます.
当然振る数が多ければ多いほど精度よく計算することが可能です.
(コード中は0から1の乱数を使っていますが, この場合は
1/4円が内接していることに相当します),
こんな説明で分かりました?
図を描けば一発で分かると思うけど, 文章で説明するのは
なかなか難しいです.
0394デフォルトの名無しさん
NGNGclass unko
{
public static void main(String args[])
{
String price = "priceless";
System.out.println("Sonokachi " + price);
System.out.println("Okanede Kaenai Monoga Aru");
}
}
0395デフォルトの名無しさん
NGNGimport java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
import javax.swing.*;
class Wlt
{
private File selectFile(){
JFileChooser fc = new JFileChooser(".");
if(fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION){
return fc.getSelectedFile();
}
else return null;
}
private void write(File f, String text){
try{
FileChannel fc = new FileOutputStream(f).getChannel();
fc.write(ByteBuffer.wrap(text.getBytes()));
fc.close();
}
catch(IOException ex){
}
}
0396デフォルトの名無しさん
NGNGpublic Wlt(){
final JTextField tf = new JTextField();
JButton b = new JButton("click!");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
File f = selectFile();
if(f == null) return;
write(f, tf.getText());
}
});
JFrame f = new JFrame();
Container c = f.getContentPane();
c.setLayout(new GridLayout(2, 1));
c.add(tf);
c.add(b);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400, 90);
f.setVisible(true);
}
public static void main(String[] args){
new Wlt();
}
}
保存先のファイルは適当に書き換えて下さい。
0397>>391
NGNGimport java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class Ccg{
class CD{
double x;
double y;
CD(double x, double y){
this.x = x;
this.y = y;
}
}
private CD createRectangle(CD p0, CD p1){
double x = p0.x+Math.cos(Math.PI/3)*(p1.x-p0.x)-Math.sin(Math.PI/3)*(p1.y-p0.y);
double y = p0.y+Math.cos(Math.PI/3)*(p1.y-p0.y)+Math.sin(Math.PI/3)*(p1.x-p0.x);
return new CD(x, y);
}
private void createLine(ArrayList<CD> points, int rd){
if(rd <= 0) return;
for(int i=0; i+1<points.size(); i+=4){
CD[] p = new CD[5];
p[0] = points.get(i);
p[4] = points.get(i+1);
p[1] = new CD(p[0].x+(p[4].x-p[0].x)/3, p[0].y+(p[4].y-p[0].y)/3);
p[3] = new CD(p[0].x+(p[4].x-p[0].x)*2/3, p[0].y+(p[4].y-p[0].y)*2/3);
p[2] = createRectangle(p[1], p[3]);
for(int j=1; j<4; j++) points.add(i+j, p[j]);
}
createLine(points, --rd);
}
0398>>391
NGNGprivate int[] x; private int[] y;
void setPoints(int[] x, int[] y){
this.x = x; this.y = y; repaint();}
public void paint(Graphics g){
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, getWidth(), getHeight());
if(x == null) return;
g2d.setColor(Color.BLACK);
g2d.drawPolyline(x, y, x.length);
}
}
public Ccg(){
final CPanel cp = new CPanel()
final JTextField tf = new JTextField();
JButton b = new JButton("paint");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
ArrayList<CD> p = new ArrayList<CD>();
p.add(new CD(0, 0)); p.add(new CD(300, 0));
createLine(p, Integer.parseInt(tf.getText()));
int[] x = new int[p.size()]; int[] y = new int[p.size()];
for(int i=0; i<p.size(); i++){
CD c = p.get(i); x[i] = (int)c.x; y[i] = -(int)c.y+200;}
cp.setPoints(x, y);
}
});
0399>>391
NGNGtb.setFloatable(false);
tb.add(tf);
tb.add(b);
JFrame f = new JFrame();
Container c = f.getContentPane();
c.setLayout(new BorderLayout());
c.add(cp, BorderLayout.CENTER);
c.add(tb, BorderLayout.SOUTH);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setResizable(false);
f.setVisible(true);
}
public static void main(String[] args){
new Ccg();
}
}
確かこれはコッホ曲線だった気が。
0400デフォルトの名無しさん
NGNG0401387
NGNG元々Javaに関する知識が0なので全部分かってはいないのですがorz
とりあえずはIT用語辞典見て内容はapplication以外はおkです
2つ目のやつは提示されている意味も分からんので…
ヴァカですみません
0402デフォルトの名無しさん
NGNGファイル内容がテキストエリアに表示されるプログラムに改良しなさい。
なお、表示対象となるファイルは、1行を1文字列として扱えるテキストファイルとする。
・・・という問題が出されました。私にはわからないのでお願いします。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
class JFrame1 extends JFrame {
JTextField tf1, tf2;
JTextArea ta;
public JFrame1( ) {
setSize(500, 300);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addWindowListener(
new WindowAdapter( ) {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
0403デフォルトの名無しさん
NGNGContainer contentPane = getContentPane( );
contentPane.setLayout(new FlowLayout( ));
contentPane.add(new JLabel("番号"));
tf1 = new JTextField(10);
contentPane.add(tf1);
contentPane.add(new JLabel("氏名"));
tf2 = new JTextField(20);
contentPane.add(tf2);
JButton bt1 = new JButton("ボタン");
bt1.addActionListener(
new ActionListener( ) {
public void actionPerformed(ActionEvent e) {
String str = tf1.getText( ) + "," + tf2.getText( );
ta.setText(ta.getText() + str + "\n");
}
}
);
contentPane.add(bt1);
contentPane.add(new JLabel("結果"));
ta = new JTextArea(5, 40);
contentPane.add(ta);
}
}
public class JavaJFm1 {
public static void main(String args[ ]) {
JFrame app = new JFrame1( );
app.show( );}
}
0404デフォルトの名無しさん
NGNGimport java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
public class Applet1 extends Applet implements ActionListener {
TextField tfBangou;
TextField tfShimei;
TextArea taKekka;
Button btn;
public void init( ) {
add(new Label("番号"));
tfBangou = new TextField("", 6);
add(tfBangou);
add(new Label("氏名"));
tfShimei = new TextField("", 12);
add(tfShimei);
btn = new Button("ボタン");
add(btn);
add(new Label("結果"));
taKekka = new TextArea("", 5, 20);
add(taKekka);
btn.addActionListener(this); }
public void actionPerformed(ActionEvent ae) {
if (ae.getSource( ) == btn) {
String str = tfBangou.getText( ) + "," + tfShimei.getText( );
taKekka.setText(taKekka.getText( ) + str + "\n");
} } }
0405tom
NGNG0406デフォルトの名無しさん
NGNGpublic static void main(String[] args){
System.out.println("バイオリズム");
}
}
0407デフォルトの名無しさん
NGNG>>406
いたづらはいやづら。
がきどもめ..。
0408デフォルトの名無しさん
NGNG情報が少なすぎ
問題文とかそのまま貼り付けたほうがよさそう
0409406
NGNG何処か間違ってる?
0410デフォルトの名無しさん
NGNG>>405の質問の仕方が悪いのはわかるがそれは駄目だろう
0411デフォルトの名無しさん
NGNGRuntime.execメソッドで外部コマンドを実行したいのですが、
ファイル名に丸カッコが入ったファイルが実行できません。
Runtime.getRuntime().exec("a.exe");
は実行できるのですが、
Runtime.getRuntime().exec("(a).exe");
になると「.exeの使い方が誤っています。」になってしまいます。
このような場合はどうしたらよいのでしょうか?
0412デフォルトの名無しさん
NGNG半角と全角は確かめたか?
0413411
NGNG0414373
NGNGどうもありがとうございます!
「アプリケーション起動が可能なアプレット」とは
自分もよくわからないんですがこんなのらしいです↓
import javax.swing.*; import java.awt.*; import java.awt.event.*;
public class ApplicationApplet extends JApplet{
String message;
public void init(){
message = "Sample";
}
public void paint(Graphics g){
Dimension size = this.getSize();
g.drawString(message, size.width/4, size.height/2);
}
public static void main(String[] args){
JFrame frame = new JFrame ();
frame.setTitle("アプリケーション起動が可能なアプレット");
ApplicationApplet applet = new ApplicationApplet();
frame.getContentPane().add (applet,"Center");
frame.addWindowListener (new WindowAdapter() {
public void windowClosing (WindowEvent e) {
System.exit (0);
} });
frame.pack();
frame.setSize (new Dimension (300, 300));
applet.init ();
applet.start ();
frame.setVisible (true);
} }
0415デフォルトの名無しさん
NGNGこれでどう?
Runtime.getRuntime().exec("\"(a).exe\"");
0416373
NGNG上記のプログラムがアプレットとしても
アプリケーションとしても起動できるので
そういう意味ではないかと思います。
さらにすみませんが、>>383,384で画像表示用も作れと
課題が出されました。
作成に関して
・読み込んだ画像表示の際にフィルター処理(モノクロ変換などで
特定の1種類のみ適用)したものを表示させる。
・元の画像(フィルター未処理)は表示しなくてよい。
と、追加されました。
自分がテキストファイルですら出来ない程度なので
こちらも教えて下さい。
0417>>416 その1
NGNGimport java.awt.event.*;
import javax.swing.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.filechooser.FileFilter;
public class HW64 extends JApplet {
JLabel lab = new JLabel();
ButtonGroup bg = new ButtonGroup();
BufferedImage src;
ActionListener al = new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (src == null)
return;
lab.setIcon(new ImageIcon(filterImage(src)));
}
};
0418:>>416 その2
NGNGHW64 apl = new HW64();
apl.init();
JFrame frm = new JFrame();
frm.getContentPane().add(apl);
frm.setSize(800, 600);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
public void init() {
lab.setHorizontalAlignment(JLabel.CENTER);
JScrollPane scroll = new JScrollPane(lab);
JButton btn = new JButton("ファイルダイアログ");
JToggleButton plane = new JToggleButton("普通"), gray = new JToggleButton("灰"),
red = new JToggleButton("赤"), green = new JToggleButton("緑"), blue = new JToggleButton("青");
bg = new ButtonGroup();
plane.setActionCommand("plane"); bg.add(plane); plane.addActionListener(al);
gray.setActionCommand("gray"); bg.add(gray); gray.addActionListener(al);
red.setActionCommand("red"); bg.add(red); red.addActionListener(al);
green.setActionCommand("green"); bg.add(green); green.addActionListener(al);
blue.setActionCommand("blue"); bg.add(blue); blue.addActionListener(al);
bg.setSelected(plane.getModel(), true);
JPanel pal = new JPanel();
pal.add(plane);
pal.add(gray);
pal.add(red);
pal.add(green);
pal.add(blue);
pal.add(btn);
getContentPane().add(scroll);
getContentPane().add(pal, BorderLayout.SOUTH);
0419::>>416 その3
NGNGpublic void actionPerformed(ActionEvent e) {
JFileChooser fc = new JFileChooser();
fc.setFileFilter(new FileFilter() {
public boolean accept(File file) {
return file.isDirectory() ||
file.getName().matches(".+\\.jpg|.+\\.gif|.+\\.png|.+\\.bmp");
}
public String getDescription() {
return "";
}
});
fc.showOpenDialog(HW64.this);
File file = fc.getSelectedFile();
if (file == null)
return;
try {
src = ImageIO.read(file);
} catch (IOException e1) {
lab.setText("不正な画像です");
return;
}
lab.setIcon(new ImageIcon(filterImage(src)));
}
});
}
0420:::>>416 その4
NGNGif (bg.getSelection().getActionCommand().equals("gray")) {
return createImage(new FilteredImageSource
(img.getSource(), new GrayFilter(true, 50)));
} else if (bg.getSelection().getActionCommand().equals("red")) {
return createImage(new FilteredImageSource
(img.getSource(), new RGBImageFilter() {
public int filterRGB(int x, int y, int rgb) {
return rgb|=0x00ff0000;
}
}));
} else if (bg.getSelection().getActionCommand().equals("green")) {
return createImage(new FilteredImageSource
(img.getSource(), new RGBImageFilter() {
public int filterRGB(int x, int y, int rgb) {
return rgb|=0x0000ff00;
}
}));
} else if (bg.getSelection().getActionCommand().equals("blue")) {
return createImage(new FilteredImageSource
(img.getSource(), new RGBImageFilter() {
public int filterRGB(int x, int y, int rgb) {
return rgb|=0x000000ff;
}
}));
}
return img;
}
}
0421411
NGNG動きました。
ありがとうございます。
すみません、もう一つ質問させてください。
Windows2000上で開発してるのですが、cmd.exeを利用して外部コマンドを
起動したいです。
実行するファイルがc:\test\(a).exeの場合、
String[] cmd = {
"cmd.exe", "/c", "(a).exe"
};
Process p = Runtime.getRuntime().exec(cmd, null, new File("C:\\test"));
このようなソースを書いてみたのですが、やはり起動しません。
"(a).exe"の部分を"\"(a).exe\""に変えてみたのですがダメでした
(カッコ無しのファイルは普通に起動できました)。
これはどのようにしたらよいのでしょうか?
0422デフォルトの名無しさん
NGNG引数の(a).exeは悪くなさそう。
(試しに
String[] cmd = {
"NOTEPAD.EXE","\"c:/(test).txt\""
};
で、(test).txtをnotepad.exeで開けた(当然C:\(test).txtが存在するという前提)。)
0423デフォルトの名無しさん
NGNG括弧にこだわらなくていいならリネームしてから渡しちゃうとか。
でもこだわりたいからここできいてるのか。
0424422
NGNG"CMD.EXE","NOTEPAD.EXE"
};
->問題なし
String[] cmd = {
"CMD.EXE","(a).EXE"
};
->駄目((a).exeにPathが通っているという前提)
普通にcmd.exeを開いて(a).exe
->駄目(上に同じく(a).exeにPathが通っているという前提)
cmd.exeで"()"などが入っているファイルを起動できない。
Javaとは関係なさそう。
0425386
NGNG0426デフォルトの名無しさん
NGNG// JavaJFm1.java
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
class JFrame1 extends JFrame {
JTextField tf1;
JTextArea ta;
public JFrame1() {
setSize(500, 300);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(new JLabel("ファイル名"));
tf1 = new JTextField(30);
contentPane.add(tf1);
JButton bt1 = new JButton("ボタン");
bt1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String path = tf1.getText();
System.out.println( path );
try {
BufferedReader br = new BufferedReader( new FileReader(path) );
String line;
StringBuffer buffer = new StringBuffer();
0427デフォルトの名無しさん
NGNGつづき
0428426=427
NGNGミスった。。
while( (line=br.readLine()) != null ) {
buffer.append(line + "\n");
}
ta.setText( buffer.toString() );
} catch( IOException ioe ) {
ta.setText(ioe.getMessage());
}
}
});
contentPane.add(bt1);
contentPane.add(new JLabel("結果"));
ta = new JTextArea(5, 40);
contentPane.add(ta);
}
}
public class JavaJFm1 {
public static void main(String args[]) {
JFrame app = new JFrame1();
app.show();
}
}
0429デフォルトの名無しさん
NGNG// Applet1.java
import java.awt.*; import java.awt.event.*; import java.applet.Applet;
public class Applet1 extends Applet implements ActionListener {
TextField tfBangou;
TextField tfShimei;
TextArea taKekka;
Button btn, clearBtn;
public void init() {
add(new Label("番号"));
tfBangou = new TextField("", 6);
add(tfBangou);
add(new Label("氏名"));
tfShimei = new TextField("", 12);
add(tfShimei);
btn = new Button("ボタン");
add(btn);
clearBtn = new Button("クリア");
add(clearBtn);
add(new Label("結果"));
taKekka = new TextArea("", 5, 20);
add(taKekka);
btn.addActionListener(this);
clearBtn.addActionListener(this);}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource() == btn) {
String str = tfBangou.getText() + "," + tfShimei.getText();
taKekka.setText(taKekka.getText() + str + "\n");
} else if (ae.getSource() == clearBtn) {
tfBangou.setText("");
tfShimei.setText("");
taKekka.setText("");}}}
0430名無しさん
NGNG問題10
英文を収めたテキストファイルの名前を指令行の第1引数に指定すると,
そのファイルの中の行で,指定された単語のいずれかを含む行だけを
出力するプログラムを作りなさい。単語は,指令行の第2引数以降に
いくつでも指定していいことにします。なお,単語が一つも指定されて
いなければ,何もしないで終了することにします。
0431デフォルトの名無しさん
NGNGFile copy and rename.GUIを使用した右のプログラムをコンパイルして実行せよ。
プログラムのactionPerformedメソッドを実装せよ。に次の4つの機能を搭載せよ。
(1) 左のテキストフィールドに入力されたファイル名の存在を確認し、
そのようなファイルがなければ “You may type a wrong name. Check again!”
というメッセージを表示する。
(2)右のテキストフィールドに入力されたファイル名の有無を確認し、
存在するのならば“The file exists already. Please use another name!”.
というメッセージを表示する。
(3) “File Copy”ボタンをクリックしたら、
左のテキストフィールドに与えられたファイルを
右のテキストフィールドの与えられたファイル名にコピーできるようにする
(RandomAccessFile streamを使用して)。
(4) “File Name Change” functionを実行するつまり、
“File Name Change”ボタンがクリックされたら、
左テキストフィールドに与えられたファイル名が
右テキストフィールドの与えられたファイル名に変更される。
0432431-1
NGNGimport java.io.*; import java.awt.*; import java.awt.event.*;
public class fileCopyRename extends Frame implements ActionListener{
private Label L1, L2;
private TextField fromfile, tofile;
private Button B1, B2;
private Panel P; private TextArea filedisplay;
public fileCopyRename() {
super("Test file copy and rename");
filedisplay =new TextArea();
P = new Panel(); P.setLayout( new GridLayout(3,2) );
L1 = new Label("Copy/move a file from");
L2 = new Label("Copy/move a file to");
fromfile = new TextField("Enter a file to be copyed/moved");
tofile = new TextField("Enter a new file name");
0433431-2
NGNGB2 = new Button("File Name Change");
P.add(L1); P.add(L2);
P.add(fromfile);P.add(tofile); P.add(B1); P.add(B2);
B1.addActionListener(this); B2.addActionListener(this);
setLayout( new BorderLayout() );
add(P, BorderLayout.NORTH);
add(filedisplay, BorderLayout.CENTER);
setSize(500, 700); setVisible(true);
filedisplay.append("\n"+
" Contents of a file to be copied are the following:"+"\n");
}
0434431-3
NGNGString fname = fromfile.getText();
String cname = tofile.getText();
// Implement 1 and 2
if(e.getSource() == B1) { // File Copy button
// Implement 3 (file copy)
}
if(e.getSource() == B2) { // File Rename button
// Implement 4 (file rename)
}
}
public static void main( String args[] ) {
fileCopyRename f = new fileCopyRename();}
}
以上です。どうかお願いします。
0435デフォルトの名無しさん
NGNGありがとうございます
0436デフォルトの名無しさん
NGNG// Grep.java
import java.io.*;
public class Grep {
public static void main(String[] args) {
if( args.length < 2 ) System.exit(1);
try {
String[] searchWords = new String[args.length-1];
BufferedReader br = new BufferedReader( new FileReader(args[0]) );
String line;
int lineNumber = 0;
while( (line=br.readLine()) != null ) {
lineNumber++;
for( int i=1; i<args.length; i++ ) {
if( line.indexOf(args[i]) != -1 ) {
System.out.println(lineNumber);
}
}
}
} catch( IOException ioe ) {
ioe.printStackTrace();
}
}
}
0437436
NGNGすんません。>>436でインスタンス「searchWords」は使ってないので、
String[] searchWords = new String[args.length-1];
の行は消してもらって良いです。
0438デフォルトの名無しさん
NGNG単語が辞書順に並べてあるファイルがあります。そうしたファイル二つの
名前を指令行の第1引数と第2引数に指定すると,その二つのファイルの中
を調べ,両方のファイルに現れている単語だけを辞書順に並べたファイル
を書き出すプログラムを作りなさい。書き出したファイルに付ける名前は,
指令行の第3引数に指定するようにします。
0439>>438 その1
NGNGpublic class HW60 {
public static void main(String[] args) {
BufferedReader r1 = null, r2 = null;
BufferedWriter w = null;
try {
FileInputStream fi1 = new FileInputStream(args[0]);
FileInputStream fi2 = new FileInputStream(args[1]);
FileWriter fw = new FileWriter(args[2]);
r1 = new BufferedReader(new InputStreamReader(fi1));
r2 = new BufferedReader(new InputStreamReader(fi2));
w = new BufferedWriter(fw);
} catch (Exception ex) {
System.out.println("ファイル名が指定されてない");
System.exit(0);
}
StringBuffer sb1 = new StringBuffer(), sb2 = new StringBuffer();
try {
String line;
while ((line = r1.readLine()) != null)
sb1.append(line + " ");
while ((line = r2.readLine()) != null)
sb2.append(line + " ");
r1.close();
r2.close();
} catch (IOException e) {
System.out.println("ファイル読み込みエラー");
System.exit(0);
}
0440:>>438 その2
NGNGSet words1 = new TreeSet();
Matcher mat = pat.matcher(sb1.toString());
while (mat.find())
words1.add(mat.group());
Set words2 = new TreeSet();
mat = pat.matcher(sb2.toString());
while (mat.find())
words2.add(mat.group());
words1.retainAll(words2);
try {
w.write("両ファイルの共通単語\r\n\r\n");
Iterator it = words1.iterator();
while (it.hasNext())
w.write(it.next() + "\r\n");
w.flush();
w.close();
} catch (IOException e1) {
System.out.println("ファイル書き込みエラー");
System.exit(0);
}
}
}
0441デフォルトの名無しさん
NGNG横槍を入れるようで申し訳ないが、Johnの辞書で試してみたらうまく動かなかったので勝手に直してみた。
// HW60.java
import java.io.*; import java.util.*;
public class HW60 {
public static void main(String[] args) {
BufferedReader r1 = null, r2 = null;
BufferedWriter w = null;
try {
FileInputStream fi1 = new FileInputStream(args[0]);
FileInputStream fi2 = new FileInputStream(args[1]);
FileWriter fw = new FileWriter(args[2]);
r1 = new BufferedReader(new InputStreamReader(fi1));
r2 = new BufferedReader(new InputStreamReader(fi2));
w = new BufferedWriter(fw);
} catch (Exception ex) {
System.out.println("ファイル名が指定されてない");
System.exit(0);
}
TreeSet set1 = new TreeSet();
TreeSet set2 = new TreeSet();
try {
String line;
while ((line = r1.readLine()) != null)
set1.add(line);
while ((line = r2.readLine()) != null)
set2.add(line);
r1.close();
r2.close();
} catch (IOException e) {
System.out.println("ファイル読み込みエラー");
System.exit(0);
0442デフォルトの名無しさん
NGNGテクストファイルの名前を指令行の第1引数に指定すると,そのファイルの
中身を後で述べる方式で圧縮してファイルに書き出すプログラムを作って
ください。書き出すファイルに付ける名前は,指令行の第2引数に指定する
ようにします。
圧縮は,ファイルの各行の内容について,つぎのような操作を行うことで
実現します。
行の中の文字を,同じ文字の続く限りまとめます。
それぞれのまとまりについて,その文字数が1個または2個であるときは,
もとのとおりにその文字を1個または2個出力します。その文字 c が
n 個 (n>2) 続いていたときは,c,'0', (char)n の3文字を出力します。
例を示します。
入力行:aaaabcaddccccccc
出力行:a.4bcaddc.7
ここで . は文字番号 0 の文字('0')を, 4 は文字番号 4 の文字
((char)4)を, 7 は文字番号 7 の文字((char)7)を,それぞれ
表しています。
問題7
問題6の方式で圧縮してあるファイルの名前を指令行の第1引数に指定すると,
そのファイルを伸長し(もとのテキストファイルに復元し)てファイルに書き
出すプログラムを作ってください。書き出したファイルに付ける名前は,
指令行の第2引数として指定するようにします。
0443デフォルトの名無しさん
NGNGつづき
}
set1.retainAll(set2);
try {
w.write("両ファイルの共通単語\r\n\r\n");
Iterator it = set1.iterator();
while (it.hasNext())
w.write(it.next() + "\r\n");
w.flush();
w.close();
} catch (IOException e1) {
System.out.println("ファイル書き込みエラー");
System.exit(0);
}
}
}
当たってるかなー。。
0444デフォルトの名無しさん
NGNG> ここで . は文字番号 0 の文字('0')を,
Javaでは
'0' は 「0という文字1字」を表すのでピリオドは出力されないと思うのですが…。
0445デフォルトの名無しさん
NGNG各行に学生の名前とその学生が受験した科目の番号とその科目での成績
(点数0〜100)とが書いてあるファイルがあります。そうしたファイル
の名前を指令行の引数に指定すると,それぞれの学生ごとに,名前と
受験した科目数とそれらの平均点を出力するプログラムを作りなさい。
なお,ファイルの中では,すべての行が学生の名前の辞書順に並べら
れているものとします。
0446デフォルトの名無しさん
NGNGコピーして書き込んだ私も正直文の意味がわからないですが、例のとうりに
出力できればいいんじゃないでしょうか?
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNGロジスティック写像に関するできるだけ簡単なプログラムソースを何か教えてください・・・
0449>>442.1
NGNGimport java.nio.*;
import java.nio.channels.*;
public class Czz
{
private static String read(String file)throws IOException{
File f = new File(file);
FileChannel fc = new FileInputStream(f).getChannel();
ByteBuffer bb = ByteBuffer.allocate((int)f.length());
fc.read(bb);
fc.close();
bb.clear();
byte[] bs = new byte[bb.capacity()];
bb.get(bs);
return new String(bs);
}
private static void write(String file, String text)throws IOException{
FileChannel fc = new FileOutputStream(file).getChannel();
fc.write(ByteBuffer.wrap(text.getBytes()));
fc.close();
}
0450>>442.2
NGNGStringBuffer sb = new StringBuffer(text);
for(int i=0; i<sb.length();){
char c = sb.charAt(i);
int j = 1;
while((i+j<sb.length()) && (sb.charAt(i+j)==c)) j++;
if(j > 2){
sb.replace(i+1, i+j, ""+(char)0+(char)j);
i += 3;
}
else i += j;
}
return sb.toString();
}
private static String dps(String text){
StringBuffer sb = new StringBuffer(text);
for(int i=0; i<sb.length();){
if(sb.charAt(i) == (char)0){
char c = sb.charAt(i-1);
int l = (int)sb.charAt(i+1)-1;
sb.delete(i, i+2);
for(int j=0; j<l; j++) sb.insert(i, c);
i += l;
}
else i++;
}
return sb.toString();
}
0451>>442.3
NGNGif(args.length != 3) return;
if(args[0].equals("-c")) write(args[2], cps(read(args[1])));
else if(args[0].equals("-d")) write(args[2], dps(read(args[1])));
}
}
こんな感じでいかがでしょうか。
0452>>448 その1
NGNGimport java.util.List;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.image.*;
public class HW19 {
static JTextField tfd_a = new JTextField("3.95"), tfd_m = new JTextField("30");
static JLabel graph = new JLabel();
static List list = new ArrayList();
static BufferedImage img = new BufferedImage(516, 516, BufferedImage.TYPE_INT_ARGB);
0453:>>448 その2
NGNGJFrame frame = new JFrame();
JPanel panel = new JPanel();
panel.add(new JLabel("係数"));
tfd_a.setPreferredSize(new Dimension(40, 20));
panel.add(tfd_a);
panel.add(new JLabel("最大項数"));
tfd_m.setPreferredSize(new Dimension(40, 20));
panel.add(tfd_m);
graph.setIcon(new ImageIcon(img));
graph.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getY() < 500)
return;
drawGraph(e.getX() / 50);
}
});
frame.getContentPane().add(panel, BorderLayout.NORTH);
frame.getContentPane().add(graph);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
clearGraph();
}
0454::>>448 その3
NGNGlist.clear();
Graphics2D g = img.createGraphics();
g.setColor(Color.white);
g.fillRect(0, 0, img.getWidth(), img.getHeight());
g.setColor(Color.white);
g.fillRect(0, 0, img.getWidth(), img.getHeight());
g.setColor(Color.black);
g.drawRect(16, 0, 500, 500);
String[] col = { "0.0", "0.1", "0.2", "0.3", "0.4", "0.5", "0.6",
"0.7", "0.8", "0.9", "1.0" };
int x = 0, y = 512;
for (int i = 0; i < col.length; ++i) {
g.drawString(col[i], x, y);
x += 50;
}
x = 0;
y = 12;
for (int i = 10; i > 0; --i) {
g.drawString(col[i], x, y);
y += 50;
}
g.dispose();
graph.repaint();
}
0455:::>>448 その4
NGNGclearGraph();
double a;
int max;
try {
a = Double.parseDouble(tfd_a.getText());
max = Integer.parseInt(tfd_m.getText());
} catch (NumberFormatException e) {
return;
}
double crt = (double) init / 10;
for (int i = 0; i < max; ++i) {
list.add(new Double(crt));
crt = a * crt * (1 - crt);
}
Graphics2D g = img.createGraphics();
g.setColor(Color.blue);
g.drawRect(50 * init, 500, 24, 12);
Point prevpt = null, crtpt = null;
double num = ((Double) list.get(0)).doubleValue();
0456>>448 その5
NGNGint x = (int) Math.round(num * 500 + 16);
num = ((Double) list.get(i)).doubleValue();
int y = (int) Math.round(500 - num * 500);
crtpt = new Point(x, y);
if (i > 1) {
g.drawLine(prevpt.x, prevpt.y, crtpt.x, crtpt.y);
} else {
g.drawLine(init * 50 + 16, 500, crtpt.x, crtpt.y);
g.setColor(Color.red);
g.fillOval(crtpt.x - 4, crtpt.y - 4, 8, 8);
g.setColor(Color.blue);
}
prevpt = crtpt;
}
g.setColor(Color.green);
g.fillOval(crtpt.x - 4, crtpt.y - 4, 8, 8);
g.dispose();
graph.repaint();
}
}
0457>>448 その6
NGNG上の係数と最大項数を適当にセットして、グラフ下の
0.1〜0.9の目盛りのどれかをクリックすると
グラフを描画をします。
0458デフォルトの名無しさん
NGNGありがとうございます。
0459デフォルトの名無しさん
NGNG445 もよろしくお願いします。一人じゃ課題のすべて
を終わらせることができそうにないので。
0460デフォルトの名無しさん
NGNG>>445もあったような気がするし。
ふたりとも提出期限大丈夫なのかな。
0461デフォルトの名無しさん
NGNGインデントやめようかな。
0462デフォルトの名無しさん
NGNG各行に学生の名前とその学生が受験した科目の番号とその科目での成績
(点数0〜100)とが書いてあるファイルがあります。そうしたファイル
の名前を指令行の引数に指定すると,それぞれの学生ごとに,名前と
受験した科目数とそれらの平均点を出力するプログラムを作りなさい。
なお,ファイルの中では,すべての行が学生の名前の辞書順に並べら
れているものとします。
0463デフォルトの名無しさん
NGNGすると,そのファイルを伸長し(もとのテキストファイルに復元し)
てファイルに書き出すプログラムを作ってください。書き出したファイル
に付ける名前は,指令行の第2引数として指定するようにします。
この課題、お願いします。
0464デフォルトの名無しさん
NGNG>>449-451
にその機能も付けておきました。
0465M.B.
NGNGちゃんと中身まで追ってるから安心しる
0466373
NGNG遅くなりましたが、感謝感謝です!すごいっす!
フィルターについてですが、以下のようなフィルターを
使用することはできますか?
また、「変更可」の部分の数値をhtmlファイルから
読み込むことは出来るのでしょうか?お願いします。
class ColorFilter{
int r , g, b;
int[] set(int a[], int w, int h) {
for (int y = 0; y < h; y++) { for (int x = 0; x < w; x++) {
int flg = (y * w) + x;
r = (a[flg] >> 16) & 255; g = (a[flg] >> 8) & 255; b = (a[flg] >> 0) & 255;
if (r <= 250) && g <= 250 && b <= 250) {
r += 7; g += 6; b += 4; }/*変更可*/
else break;
a[flg] = ((255 << 24 ) | (r << 16) | (g << 8) | b);
r = g = b = 0; } } return a; } }
0467デフォルトの名無しさん
NGNG// Average.java
import java.io.*;
import java.util.*;
public class Average {
public static void main(String[] args) {
String name = null;
int subjects = 1;
int score = 0;
try {
BufferedReader br = new BufferedReader(new FileReader(args[0]));
String line;
System.out.println( "name,subjects,average" );
while ((line = br.readLine()) != null) {
StringTokenizer token = new StringTokenizer(line, ",");
String tmpName = token.nextToken();
String tmpSubject = token.nextToken();
String tmpScore = token.nextToken();
if( name == null ) name = tmpName;
// 前の行と同じ人
else if( name.equals(tmpName) ) {
subjects++;
// 前の行と違う人のときは前の行の人を出力し初期化
} else {
System.out.println( name + "," + subjects + "," + (score / subjects) );
name = tmpName;
subjects = 1;
score = 0;
}
score += Integer.parseInt(tmpScore);
}
System.out.println( name + "," + subjects + "," + (score / subjects) );
0468デフォルトの名無しさん
NGNGつづき
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
与えるテキストファイルはこんなのでいいの?
// score.txt
Aki,0,100
Aki,1,30
Aki,2,50
Aki,3,60
Chie,0,20
Chie,2,70
Chie,1,30
Dai,2,50
Dai,3,80
Dai,1,40
Dai,100,50
>java Average score.txt
で実行。
0469デフォルトの名無しさん
NGNGすごい・・・
雪崩のようにソースコードが書き込まれている・・・
規模といい、C言語宿題とは比較にならない・・・
0470デフォルトの名無しさん
NGNG下のプログラムをコンパイルして実行せよ。
これはセンテンス, “JAVA programs are classified into JaVa applications and java applets”を
“StringProcess.txt”というファイルに保存する。
しかしこれは“String Search and Replace”ボタン機能をまだ持たない。
actionPerformed method 中にread/write RandomAccessFile stream を使用して,
次の機能を実装せよ。
(1) StringProcess.txtを読み込んでTextAreaに表示する
(2) 全ての“java”という単語を “Java”にファイル中に置き換える
(3) TextAreaに表示する。
(Hints:Stringメソッド, st1.regionMatches(true, 0, st2, indexOfst2, st1.length())
を使用する,これは2つの文字列が等しいか比較する.)
http://www.uploda.org/file/uporg31135.txt
↑このソースを元に作成するそうです。どうかお願いします!!
0471デフォルトの名無しさん
NGNGを設定し、幅優先探索と深さ優先探索を行うSearchクラスを作成せよ。
Nodeクラス、searchクラスは次のものを参照して完成させなさい。
class Node{
//フィールド変数
String name;
Vector children;
Node pointer;
Hashtable childrenCosts;
int gValue;
int hValue;
int fValue;
boolean hasGValue
//コンストラクタ
Node (string theName,intHValue){
name = theName;
children = new Vector();
ChildrenCosts = new Hashtable();
hValue = theValue;
}
0472471
NGNGpublic void setPointer(Node theNode){this.pointer = theNode;}
public Node getPointer(){return this.pointer;}
public int getGValue(){return gValue;}
public void setGValue(int theGValue){・・・;}
public int getHValue(){return hValue;}
public int getFValue(){return fValue;}
public void setFValue(int theFValue){・・・}
public void addChild(Node theChild,int theCost){
//the child=そのノードの子ノード,theCost=その子ノードまでのコスト
children.addElement(theChild);
childrenCosts.put(theChild,new Integer(theCost));
}
public Vector getChildren(){return children;}
public int getCost(Node theChild){・・・}
・・・
}
0473M.B.
NGNGここのヘヴィーな回答者の大部分は、
同時にC言語のヘヴィーな使い手であると思われるので、
Cのような劇薬言語を演習用に使うのは(つーか素人に使わせるのは)
基本的にヤヴァイという配慮から、
もっぱらこっちで回答しておられるように思われ。
0474471
NGNGNode node[];
Node goal;
Node start;
search(){
makeStateSpace(){
}
private void makeStateSpace(){
//node[]を定義し、各自状態空間を生成せよ
}
public void breadthFirst(){
・・・
}
public void depthFirst(){
・・・
}
public static void main(String args[]){
//1を入力すれば幅優先探索、2を入力すれば深さ優先探索で動作するようにせよ
}
0475471
NGNGsearchクラスの実行例
%java Search 2
<深さ優先探索>
STEP:0
OPEN:[L.A.Airport]
CLOSED:[]
STEP:1
OPEN:[UCLA,Hoolywood]
CLOSED:[L.A.Airport]
・・・
***発見されたルート***
Las Vegas <- Pasadena <- Downtown <- UCLA <- L.A.Airport
どうかよろしくお願いします。アルゴリズムも簡単でよいので教えていただければ幸いです。
0476デフォルトの名無しさん
NGNG// stringProcess.java#actionPerformed()内
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(B1)) {
try {
BufferedReader br = new BufferedReader(new FileReader("StringProcess.txt"));
String line;
StringBuffer sb = new StringBuffer();
while ((line = br.readLine()) != null) {
while (line.indexOf("java") != -1) {
int i = line.indexOf("java");
line = line.substring(0, i) + "Java" + line.substring(i + 4, line.length());
}
sb.append(line + "\n");
}
filedisplay.setText(sb.toString());
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
}
RandomAccessFileもString#regionMachesもないけど、機能は実装してる。
問題文に忠実な解答は有志を待て。
0477デフォルトの名無しさん
NGNGactionPerformedの中に↓を入れれば動くけど問題がよくわからんので
自分で確かめてくれ
File file = new File("StringProcess.txt");
BufferedReader br = null;
String line;
try{
br = new BufferedReader(new FileReader(file));
line = br.readLine();
br.close();
filedisplay.setText(line);
line = line.replaceAll(S1.getText(), S2.getText());
filedisplay.setText(line);
}catch(IOException ie){
filedisplay.setText("IOException");
}
0478477
NGNG2つめのfiledisplay.setText(line);を
filedisplay.append("\n" + line);
に変えておいて
0479デフォルトの名無しさん
NGNGどう書けばよいのでしょうか?
0480デフォルトの名無しさん
NGNGrepaint()
0481479
NGNGButton b=new Button("開始");
myBTNListener1 m1=new myBTNListener1();
b.addActionListener(m1);
add(b);
}
class myBTNListener1 implements ActionListener{
public void actionPerformed(ActionEvent ae){
repaint();
}
}
public void paint(Graphics g){
-------略-----------
上のようにすると、もうアプレットを表示したらボタンを押さずとも
paintメソッドの内容もすでに描かれているのですが・・・
0482デフォルトの名無しさん
NGNGboolean flag = false;
class myBTNListener1 implements ActionListener{
public void actionPerformed(ActionEvent ae){
flag = true;
repaint();
}
}
public void paint(Graphics g){
if(!flag) return;
-------略-----------
0483481
NGNGありがとうございます
0484470
NGNG返信ありがとうございます!
かなり参考になりました。
問題文が分かりにくく、すいませんでした。
自分の聞いた話だと
JAVA programs are classified into JaVa applications and java applets
↑の文のJAVA、JaVa、javaを全てまとめてJavaという形にして
TextAreaに新たに変換した文を追加して表示するということでした。
JAVA programs are classified into JaVa applications and java applets
↓
Java programs are classified into Java applications and Java applets
もしお時間ありましたら、この条件で動くソースも答えていただけたら嬉しいです。
たびたびお手数かけて申し訳ないのですが、どうかよろしくおねがいします。
0485デフォルトの名無しさん
NGNG0486477
NGNGpublic void actionPerformed(ActionEvent e) {
if (e.getSource().equals(B1)) {
File file = new File("StringProcess.txt");
try{
BufferedReader br = new BufferedReader(new FileReader(file));
String line = br.readLine();
br.close();
filedisplay.setText(line);
String str = line.toUpperCase();
int i = 0;
while ((i = str.indexOf("JAVA", i)) != -1) {
line = line.substring(0, i) + "Java" + line.substring(i + 4, line.length());
i += 4;
}
filedisplay.append("\n" + line);
}catch(IOException ie){
filedisplay.setText("IOException");
}
}
}
0487デフォルトの名無しさん
NGNG宿題じゃなければスレ違い
0488デフォルトの名無しさん
NGNGJTextField tf = new JTextField();
//適当なコンポーネントにadd & ユーザーからの入力
String s = tf.getText();
0489デフォルトの名無しさん
NGNG早速実行してみたのですが、なぜか圧縮すると文字化けが起きてるみたいです。
それを解凍するのはちゃんと初期の状態に戻るのですが。
0490470
NGNGばっちり動きました!!
本当に助かりました。
ありがとうございました。
0491デフォルトの名無しさん
NGNG(char)0とかそんな文字を使ってるので文字化けは当然ではないかと思いまする。
0492デフォルトの名無しさん
NGNG>>464ではありませんが。
そもそも>>442の問題がちょっとアヤシイのです。
今回のようにテキストファイルを「圧縮する」といった場合に
aaaa
を
a.4
のような方法で「ピリオドという"文字"で区切る」ような圧縮方法だと
....
のようにピリオドが連続した場合の圧縮/復元方法がないのです。
なので、圧縮後のファイルはテキストファイルではなく
文字が割り当てられていないアドレスを使ったバイナリファイルとして保存するしか方法がありません。
0493デフォルトの名無しさん
NGNG実行してみたのですが、テキストファイルのはじめの人のデータしか
処理されずに次の人のデータが出力されずにエラーが出るんですが、
どうしてでしょうか?
0494デフォルトの名無しさん
NGNG思ったのですが、ピリオドが連続する場合はあるのでしょうか?
例えば、aaabbbccccを圧縮したら、a.3b.3.c.4のようになれば
いいんじゃないでしょうか
0495467-468
NGNG1. >>467-468のコードをコピーし、Average.javaとして保存(35行)。
2. javac Average.javaでコンパイル。
3. Average.classと同じディレクトリに>>468のscore.txtを書いて置く。
4. java Average score.txtで実行。
ウチの環境だと
name,subjects,average
Aki,4,60
Chie,3,40
Dai,4,55
と出力されます。
なんだったらエラーの内容をコピペして。
0496デフォルトの名無しさん
NGNGそうじゃなくて圧縮前のデータの話。
圧縮前のデータでピリオドが連続してたら…??
0497デフォルトの名無しさん
NGNGたぶん圧縮前はピリオドの連続はないことになってて、英文字だけ
なんじゃないでしょうか?
0498496
NGNG前 後
「333...」→「3.3..3」
前 後
「3.3..3」→「3.3..3」
圧縮後のデータが全く同じなのでどっちに復元したらいいのか分からんのです。
0500デフォルトの名無しさん
NGNGQuestion8にしてあります。
java Question8 Question8.txt
name,subjects,average
Exception in thread "main" java.lang.NumberFormatException:
For input string: "100 "
at java.lang.NumberFormatException.forInputString
(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at java.lang.Integer.parseInt(Unknown Source)
at Question8.main(Question8.java:28)
0502デフォルトの名無しさん
NGNG無しで、圧縮前がすべて英文字のみだったら
うまくできないでしょうか?
0503デフォルトの名無しさん
NGNG出力できました。ありがとうございました。
0504デフォルトの名無しさん
NGNG464=491なのですが、
上で皆さん議論されてるようなそんなわけで(char)0を使わせていただきました。
必要なら該当部分をそのまま適当な文字に変えてください。
0505デフォルトの名無しさん
NGNG0506デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1105691367/103n
マルチ(・A・)イクナイ!!
ってかここ宿題を持ってくる/答えるスレだから。
0507デフォルトの名無しさん
NGNGレポートの一部なんですがダメですか?
0508デフォルトの名無しさん
NGNG>>1読んで。
あと
http://pc5.2ch.net/test/read.cgi/tech/1105691367/105n
じゃダメ?
0509471
NGNG幅優先探索のサンプルプログラム
public void breadthFirst(){
Vector open = new Vector();
open.addElement(node[0]);
Vector closed = new Vector();
boolean success = false;
int step = 0;
while (true){
//openは空か?
if(open.size()==0){
success=false;
break;
}else{
//openの先頭を取り出しnodeとする
Node node = (Node)open.elementAt(0);
open.removeElementAt(0);
//nodeはゴールか?
if(node==goal){
success=true;
break;
}else{
0510471
NGNGVector children = node.getChildren();
//nodeをclosedリストに入れる
closed.addElement(node);
//子ノードmがopenにもclosedにも含まれていなければ
for(int i = 0;i<children.size();i++){
Node m = (Node)children.elementAt(i);
if(!open.contains(m)&&!closed.contains(m)){
//mからNodeへのポインタを付ける。このポインタをたどることで解を表示することができる
//mがgoalであればopenリストの先頭に挿入しgoalでなければ
m.setPointer(node);
if(m==goal){
open.insertElementAt(m,0);
}else{
open.addElement(m);
}}}
}}}
if(success){
System.out.println("*** Solution ***");
rintSolution(goal);
}}
0511471
NGNG//nodeを展開して子ノードを全て求める
Vector children = node.getChildren();
//nodeをclosedリストに入れる
closed.addElement(node);
//子ノードmがopenにもclosedにも含まれていなければ
//jは複数の子節点を適切にopenの先頭に置くために位置を調整する変数であり
//一般には展開したときの子節点の位置は任意でかまわない
int j = 0
for(int i=0;i<children.size();i++){
Node m = (Node)children.elementAt(i);
if(!open.contains(m)&&!closed.contains(m)){
//mからNodeへのポインタを付ける。
m.setPointer(node);
if(m==goal){
open.insertElementAt(m,0);
}else{
open.insertElementAt(m,j);
j++;
}}}
}}}
if(success){
System.out.println("*** Solution ***");
rintSolution(goal);
}}
以上で全てだと思います。提出は月曜日になってます。
あまり時間がないのですがどうかよろしくお願いします。
0512デフォルトの名無しさん
NGNGそもそも「有向グラフ構造」ってなんなのか知らないので質問には答えられないんですが。。
どっちにしても今の>>471-472のNodeとか>>474,>>509-511のSearchは
セミコロンがない、とかコンストラクタが変、とかその次元でコンパイルできないので
答える方の人は苦しいと思いますよ…。
0513デフォルトの名無しさん
NGNGJNIとかなしで.
0514471
NGNG指摘ありがとうございます。ソースコードをもう一度見直しました。
public class Search{
Node node[];
Node goal;
Node start;
search(){
makeStateSpace(){
}
private void makeStateSpace(){
//node[]を定義し、各自状態空間を生成せよ
}
public void breadthFirst(){
・・・
}
public void depthFirst(){
・・・
}
public static void main(String args[]){
//1を入力すれば幅優先探索、2を入力すれば深さ優先探索で動作するようにせよ
}
}
0515471
NGNGNode (string theName,intHValue){
name = theName;
children = new Vector();
ChildrenCosts = new Hashtable();
hValue = theValue;
}
//メソッド群
public String getName(){return name;}
public void setPointer(Node theNode){this.pointer = theNode;}
public Node getPointer(){return this.pointer;}
public int getGValue(){return gValue;}
public void setGValue(int theGValue){・・・;}
public int getHValue(){return hValue;}
public int getFValue(){return fValue;}
public void setFValue(int theFValue){・・・}
public void addChild(Node theChild,int theCost){
//the child=そのノードの子ノード,theCost=その子ノードまでのコスト
children.addElement(theChild);
childrenCosts.put(theChild,new Integer(theCost));
}
0516471
NGNG//nodeを展開して子ノードを全て求める
Vector children = node.getChildren();
//nodeをclosedリストに入れる
closed.addElement(node);
//子ノードmがopenにもclosedにも含まれていなければ
//jは複数の子節点を適切にopenの先頭に置くために位置を調整する変数であり
//一般には展開したときの子節点の位置は任意でかまわない
int j = 0;
for(int i=0;i<children.size();i++){
Node m = (Node)children.elementAt(i);
if(!open.contains(m)&&!closed.contains(m)){
//mからNodeへのポインタを付ける。
m.setPointer(node);
if(m==goal){
open.insertElementAt(m,0);
}else{
open.insertElementAt(m,j);
j++;
}}}
}}}
if(success){
System.out.println("*** Solution ***");
rintSolution(goal);
}}
0517デフォルトの名無しさん
NGNG問題1
指令行の引数に正の整数 n を指定すると,つぎの条件を満たす整数格子点 (x, y)(x>0, y>0)の個数を計算して出力するプログラムを作りなさい。
x^2+y^2<n^2
(x^2, y^2, n^2 は,それぞれ,x, y, n の2乗を表します)
なお,n が1億であっても,きちんと個数が計算できるように工夫してください。
問題2
指令行の引数に正の整数 n を指定すると, 2^0, 2^(-1), 2^(-2), ..., 2^(-n) を順に各行に出力していくプログラムを作ってください。 n が大きな値になっても,小数点以下100桁までほ正確に結果を出力するようにしてください。
筆算でなら,この問題は(途中でいやになって止めてしまわない限り)実行することができますね。つまりアルゴリズムは知っているのです。それをプログラムとして作り上げること,それが課題です。
問題3
指令行の引数に正の整数 n を指令すると 0!, 1!, 2!, ..., n! を順に各行に出力していくプログラムを作ってください。結果が100桁を超えない限り正確に計算して出力してください。結果が100桁を超えた解きはその時点で計算を打ち切ってかまいません。
筆算でなら,この問題は(途中でいやになって止めてしまわない限り)実行することができますね。つまりアルゴリズムは知っているのです。それをプログラムとして作り上げること,それが課題です。
0518471
NGNG有向グラフ構造は電車の路線のような感じのものだと思っています(曖昧ですいません)。
講義資料がネットにpdfでUPされているのですが自分が見るにはパスとか必要なので皆さんが見れるかどうか。
ttp://eclass.doshisha.ac.jp/seminar/SEMINAR00249/uploadfiles/tnv3tnrx/tnv3tnrx.pdf
頼りっぱなしで本当に申し訳ないです。自分でも無い頭を使ってがんばってみます。
0519デフォルトの名無しさん
NGNG問題1だけ。
// LatticePoint.java
public class LatticePoint {
public static void main(String[] args) {
long start = System.currentTimeMillis();
long n = Long.parseLong(args[0]);
long count=0;
for( long x=0; x<n; x++ ) {
double y = Math.sqrt(n*n - x*x);
count += (Math.floor(y) + 1);
if( y == (int)y ) count--;
}
System.out.println( "全部で " + count + " 組" );
long end = System.currentTimeMillis();
System.out.println( "所要時間:" + ((end - start) / 1000.0) + "秒" );
}
}
入力値が1億のときの結果(Pen4 2.4GHz/メモリ1G)
> java LatticePoint 100000000
全部で 7853981733966973 組
所要時間:25.757秒
0520デフォルトの名無しさん
NGNGpublic class q2 {
public static void main(String[] args)
{
int [] num = new int [102]; num [0] = 1;
int n = Integer.parseInt (args[0]);
for (int i=0; i<n; ++i) {
for (int j=0; j<101; ++j) {
int tmp = num [j]; num [j] /= 2; tmp -= num [j] * 2; num [j+1] += tmp * 10;
}
}
// 桁溢れの判定
if (num [101] != 0) { System.out.println ("桁あふれ"); System.exit(1); }
System.out.print(num[0]); System.out.print(".");
for (int i=1; i<101; ++i) { System.out.print (num[i]); }
}
}
0521518
NGNG問題3
// Factorial.java
import java.math.BigInteger;
public class Factorial {
public static void main(String[] args) {
BigInteger big = new BigInteger("1");
System.out.println( "0! = " + big.toString() );
for( int i=1; ; i++ ) {
big = big.multiply( new BigInteger("" + i) );
System.out.println( i + "! = " + big );
if( big.toString().length() > 100 ) break;
}
}
}
0523デフォルトの名無しさん
NGNGpublic class toi3 {
public static void main(String[] args)
{
int [] num = new int [100]; num [0] = 1;
int n = Integer.parseInt (args[0]);
for (int i=1; i<=n; ++i) {
for (int j=0; j<100; ++j) { num [j] *= i; }
for (int j=0; j<100-1; ++j) {
if (num [j] >= 10) {
num [j+1] += num[j]/10; num [j] %= 10;
}
}
//桁あふれ判定
if (num [99] >= 10) { System.out.println ("桁あふれ"); System.exit (1); }
int k = 99;
while (num[k] == 0) --k;
System.out.print (i + "!=");
do { System.out.print (num[k]); --k; } while (k>=0);
System.out.println ();
}
}
}
宿題というからにはこういう回答を期待されているのではないですか。
0524デフォルトの名無しさん
NGNGint が32ビット整数であることと、補数表示を使用していることを用いて、int の表示範囲を求め、
結果をアプレットに貼り付けたラベルに表示するプログラムを作成してみてください。
そんなに難しくないと言われたのですが、初心者なので全然わかりません。
-2147483648 <= n <= 2147483647 がint型の範囲らしいです。
すいませんがおねがいします。
0525デフォルトの名無しさん
NGNGよくわかんないけどこんな感じではないですねそうですね。
public class Isp{
public static void main(String[] args){
System.out.println(0x7fffffff);
System.out.println(0x80000000);
}
}
0526デフォルトの名無しさん
NGNG書いたが長いのでWikiに貼り付けた。
ttp://www.wikiroom.com/java/?%A5%BD%A1%BC%A5%B9%C5%BD%C9%D5%A4%B12
>>518のPDFの通りに書いたが出力部分はめんどくさいからテキトー。
問題文に書いてなかったからノードの設定もテキトー。
当ってるかどうかは知らん。
0527デフォルトの名無しさん
NGNGclass Hosuu{
public static void main(String args[]){
int n = 1;
for(int i = 1;i<=30;i++){
int k = 1;
for(int j = 1;j<=i;j++){
k = k * 2;
}
n = n + k;
}
System.out.println(n);
int c = n;
n = 0;
for( int i = 1;i<=30;i++){
int k = 1;
for(int j = 1;j<=i;j++){
k = k * 2;
}
n = n + (c - k)+1;
}
System.out.println(n);
}
}
0528デフォルトの名無しさん
NGNGをお願いします。誤差表示部分は要りません。
たとえば1000オームなら、「茶 黒 赤」のように色は文字を表示させるだけで
十分です。
0529デフォルトの名無しさん
NGNG0530デフォルトの名無しさん
NGNGそのカラーコードの詳細を明記せよ。
0531デフォルトの名無しさん
05/01/17 00:27:14いや、そんなん常識じゃないですか。暗記しておいてくださいよ。
0532デフォルトの名無しさん
05/01/17 00:38:04どこの常識じゃば。
0533471
05/01/17 00:43:07あ、ありがとうございます。
自分の分かりにくい説明や、誤字にも関わらずここまでして頂いて、なんと感謝すればいいのかわかりません。
本当にありがとうございます。
0534528
05/01/17 01:10:07ttp://www.jarl.or.jp/Japanese/7_Technical/lib1/teikou.htm
0535デフォルトの名無しさん
05/01/17 02:28:13下限の方が-2147483648ではなく-2147483646になっていましたが
参考にさせていただきます。
0536デフォルトの名無しさん
05/01/17 03:21:00double age,sage;
for(0<k<10){
for(0<j<10){
age=(100/j);
sage=100;
for(0<i<10){
age=(100/j)*drand48();
sage=100*drand48();
func(x, y, z) //x,y,zの計算結果を返す関数
}
// ここでx, y, zの値を表示
}
}
上記のプログラムはx,y,zをi回計算し、その最後の値をj個表示するのを
k回繰り返すプログラムなのですが、
jが1の時x1,y1,z1
jが2の時x2,y2,z1
…
jが9の時x9,y9,z9とし、x,y,zのそれぞれの平均
((x1+x2+…+x9)/k)
((y1+y2+…+y9)/k)
((z1+z2+…+z9)/k)
を求めるにはどうすればいいのですか?
よろしくお願いします。
0537デフォルトの名無しさん
05/01/17 06:32:46の問題誰か解けませんか?
0538デフォルトの名無しさん
05/01/17 12:07:57点数の高い順に並べ替えて表示させるプログラムを作るんですが、
並べ替えあたりでつまずいてます。
並べ替える前まではいちおできたんで、貼り付けます。
平均表示した後二重ループで並べカエレっていわれたんですけど。。。。
よろしくお願いします。。
public class Kamoku{
public static void main(String[] args){
int sum = 0;
if(args.length == 0){
System.out.println("Usage: java Kamoku 科目1 点数1 科目2 点数2 科目3 点数3 ...");
System.exit(0);
}
if( (args.length % 2) != 0){
System.out.println("引数の数が合わないぞ(;Д;)ウワァーン");
System.exit(0);
}
for(int i=0; i < args.length; i++){
System.out.println(args[i] + "\t: " + args[++i]);
sum += Integer.parseInt(args[i]);
}
System.out.println("平均\t: "+ sum/(args.length/2));
}
}
0539デフォルトの名無しさん
05/01/17 17:10:57任意のRGB値(htmlから読み込むこと)以下ならそれぞれ-5を、
以上なら+5をして画像を表示するアプレットを作れ。
という課題が出されました。
丸投げですがお願いします。
0540539
05/01/17 17:50:400以下となる場合は0に固定、255以上となる場合は255固定すること。
です。
0541デフォルトの名無しさん
05/01/17 19:38:30,ここの練習9−4がわかりません。
レポートでだせるよう答え全部書いてもらえると助かります。
まったくわかりません。
0542デフォルトの名無しさん
05/01/17 19:55:33,に書けばいいのでしょうか
0543デフォルトの名無しさん
05/01/17 19:57:48,Integer i = new Integer( 10 );
i.intValue();
0544デフォルトの名無しさん
05/01/17 19:57:58,プログラムです。間違いを修正しましょう。 ちょっとわからない
のでよろしくお願いします。
import java.io.*;
import java.util.Vector;
public class Reverse {
public static void main(String[] args) {
try {
FileReader fr=new FileReader(args[0]);
BufferedReader br=new BufferedReader(fr);
Vector words=new Vector();
while (true) {
String line=br.readLine();
if (line==null) break;
words.add(line);
}
br.close();
for (int i=words.size() ; i>=0 ;i--) {
System.out.println(words.get(i));
}
} catch(IOException e) {
}
}
}
0545デフォルトの名無しさん
05/01/17 20:09:46次のプログラムは、ファイルに格納された行を辞書順に並び替えて
出力します。このプログラム、正しく動作するのですが、非常に
無駄なことをやっています。無駄を取り除いてみましょう。
import java.io.*;
import java.util.*;
public class Sort {
public static void main(String[] args) {
try {
FileReader fr=new FileReader(args[0]);
BufferedReader br=new BufferedReader(fr);
Vector words=new Vector();
while (true) {
String line=br.readLine();
if (line==null) break;
StringTokenizer st=new StringTokenizer(line);
while (st.hasMoreTokens()) {
words.add(st.nextToken());
Collections.sort(words);
}
}
br.close();
for (int i=0 ; i<words.size() ;i++) {
System.out.println(words.get(i));
}
} catch (IOException e) {
}
}
}
0546デフォルトの名無しさん
05/01/17 20:23:55・インデントする
・お願いするんだから態度を改める
出直して来い
0547答える側の人です
05/01/17 21:01:14インデントを2chで表現しようとすると全角スペースを使わなければならず
そうするとEclipseに貼り付けたときに置換するのがメンドイ。
個人的には>>544-545のままでいいです。
>>544-545に限らずほとんどの人がインデントしてないように見えるけど、
Janeで見ればちゃんとインデントしたソースをコピペできる。
0548デフォルトの名無しさん
05/01/17 21:08:210549デフォルトの名無しさん
05/01/17 21:44:30// ElectricResistance.java
public class ElectricResistance {
public static void main(String[] args) {
double d = Double.parseDouble(args[0]);
// 振り分け
if( d > 10 ) {
largerThanOne( (long)d );
} else {
smallerThanOne( d );
}
}
private static void largerThanOne( long num ) {
int count = 0;
while( num < 10 || num > 99 ) {
num /= 10;
count++;
}
if( count > 9 ) throw new IllegalArgumentException();
int[] nums = new int[] { (int)(num/10), (int)(num%10), };
for( int i=0; i<nums.length; i++ ) printRegularColor( nums[i] );
printRegularColor(count);
}
private static void smallerThanOne( double num ) {
int count=0;
while( num < 10 || num > 99 ) {
num *= 10;
count++;
}
if( count > 2 ) throw new IllegalArgumentException();
int[] nums = new int[] { (int)(num/10), (int)(num%10), };
for( int i=0; i<nums.length; i++ ) printRegularColor( nums[i] );
0550549
05/01/17 21:45:10つづき
printGoldenColor(count);
}
private static void printRegularColor( int i ) {
switch( i ) {
case 0: System.out.print("黒"); break;
case 1: System.out.print("茶"); break;
case 2: System.out.print("赤"); break;
case 3: System.out.print("橙"); break;
case 4: System.out.print("黄"); break;
case 5: System.out.print("緑"); break;
case 6: System.out.print("青"); break;
case 7: System.out.print("紫"); break;
case 8: System.out.print("灰"); break;
case 9: System.out.print("白"); break;
default: throw new IllegalArgumentException();
}
}
private static void printGoldenColor( int i ) {
switch( i ) {
case 1: System.out.print("金"); break;
case 2: System.out.print("銀"); break;
default: throw new IllegalArgumentException();
}
}
}
バグってるかも。。
0551デフォルトの名無しさん
05/01/17 22:00:48メッセージが現れたのですが、これは何なのでしょうか?
システムリソースが不足しています。
詳細は次のスタックトレースで調査してください。
java.lang.OutOfMemoryError
0552デフォルトの名無しさん
05/01/17 22:01:47そのまんまの通り。
エラーメッセージで検索くらい汁
0553デフォルトの名無しさん
05/01/17 22:01:50コンパイルはできるんですが、実行ができません。
Exception in thread "main".java.lang.ArrayIndexOutOfBoundsException: 0
at ElectricResistance.main(ElectricResistance.java:4)
とエラーが出ます
0554デフォルトの名無しさん
05/01/17 22:02:31みなさん忙しいでしょうけどお願いします。。。
0555デフォルトの名無しさん
05/01/17 22:05:05どう対処すればいいのでしょうか?そもそもなぜこんなメッセージが出たの
でしょうか?
0556>>544.1
05/01/17 22:05:26import java.nio.*;
import java.nio.channels.*;
import java.util.regex.*;
public class Reverse{
public static void main(String[] args)throws IOException{
File f = new File(args[0]);
FileChannel fc = new FileInputStream(args[0]).getChannel();
ByteBuffer bb = ByteBuffer.allocate((int)f.length());
fc.read(bb);
fc.close();
bb.clear();
byte[] b = new byte[bb.capacity()];
bb.get(b);
String[] lines = Pattern.compile("\n").split(new String(b));
for(int i=lines.length-1; i>=0; i--) System.out.println(lines[i]);
}
}
0557>>545.1
05/01/17 22:06:35import java.nio.*;
import java.nio.channels.*;
import java.util.*;
import java.util.regex.*;
public class Sort0{
public static void main(String[] args)throws IOException{
File f = new File(args[0]);
FileChannel fc = new FileInputStream(args[0]).getChannel();
ByteBuffer bb = ByteBuffer.allocate((int)f.length());
fc.read(bb);
fc.close();
bb.clear();
byte[] b = new byte[bb.capacity()];
bb.get(b);
String[] lines = Pattern.compile("\n").split(new String(b));
Arrays.sort(lines);
for(String s : lines) System.out.println(s);
}
}
求められているものとは違う気がしてならないですが、参考までに。
0558>>528.1
05/01/17 22:07:21import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class Ccode
{
private final Color[] COLOR_CODE = {
new Color(0x00, 0x00, 0x00), new Color(0x99, 0x00, 0x00), new Color(0xff, 0x00, 0x00), new Color(0xff, 0x80, 0x00),
new Color(0xff, 0xff, 0x00), new Color(0x00, 0x99, 0x00), new Color(0x00, 0x00, 0xff), new Color(0x99, 0x00, 0x99),
new Color(0x99, 0x99, 0x99), new Color(0xff, 0xff, 0xff), new Color(0xec, 0xd2, 0x6c), new Color(0xc4, 0xc7, 0xdf),
new Color(0xff, 0xff, 0xff)};
private final String[] NAME_CODE = {"黒", "茶", "赤", "橙", "黄", "緑", "青", "紫", "灰", "白", "金", "銀", "無着色"};
private class Code{
Color color;
String name;
Code(Color color, String name){
this.color = color;
this.name = name;
}
}
private Code[] gcc(int n, int d){
String s = String.valueOf(n);
if(s.length() == 1) s = "0"+s;
Code[] ca = new Code[4];
for(int i=0; i<2; i++){
int c = Integer.parseInt(s.substring(i, i+1));
ca[i] = new Code(COLOR_CODE[c], NAME_CODE[c]);
}
0559デフォルトの名無しさん
05/01/17 22:07:28第9回の講義資料で与えられている配列データ
って何ですか?
0560>>528.2
05/01/17 22:10:11Code c = null;
if(d <= 0);
else if(d == 1) c = new Code(COLOR_CODE[1], NAME_CODE[1]);
else if(d == 2) c = new Code(COLOR_CODE[2], NAME_CODE[2]);
else if(d <= 5) c = new Code(COLOR_CODE[10], NAME_CODE[10]);
else if(d <= 10) c = new Code(COLOR_CODE[11], NAME_CODE[11]);
else if(d <= 20) c = new Code(COLOR_CODE[12], NAME_CODE[12]);
ca[3] = c;
return ca;}
private class LPanel extends JPanel{
private BufferedImage image;
private Code[] ca;
void setCode(Code[] ca){this.ca = ca;repaint();}
BufferedImage getImage(){return image;}
public void paint(Graphics g){
int width = getWidth();
int height = getHeight();
image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics2D g2d = (Graphics2D)image.getGraphics();
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, width, height);
if(ca != null){
int x = 0;
int y = 20;
for(Code c : ca){
g2d.setColor(c.color);
g2d.fillRect(x+=20, y, 10, 50);
g2d.drawString(c.name, x, y+70);
g2d.setColor(Color.BLACK);
g2d.drawRect(x, y, 10, 50);}}
g.drawImage(image, 0, 0, null);}}
0561>>528.3
05/01/17 22:10:43final LPanel p = new LPanel();
final JTextField tf = new JTextField();
final JTextField dtf = new JTextField();
JButton b = new JButton("paint");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
p.setCode(gcc(Integer.parseInt(tf.getText()), Integer.parseInt(dtf.getText())));
}
});
JButton s = new JButton("save");
s.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
JFileChooser fc = new JFileChooser(".");
if(fc.showSaveDialog(null) == JFileChooser.APPROVE_OPTION){
File f = fc.getSelectedFile();
String n = f.getName();
try{
ImageIO.write(p.getImage(), n.substring(n.lastIndexOf(".")+1, n.length()), f);
}
catch(IOException ex){
ex.printStackTrace();
}
}
}
});
0562>>528.4
05/01/17 22:12:05tb.setFloatable(false);
tb.add(tf);
tb.add(dtf);
tb.add(b);
tb.add(s);
JFrame f = new JFrame();
Container c = f.getContentPane();
c.setLayout(new BorderLayout());
c.add(tb, BorderLayout.NORTH);
c.add(p, BorderLayout.CENTER);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setTitle("Ccode");
f.setSize(300, 200);
f.setVisible(true);
}
public static void main(String[] args){
new Ccode();
}
}
Swingバージョンです。インデントは適当に置換してからコンパイルしてください。
幾つか重大な問題がありますが、適当に直してください。
0563デフォルトの名無しさん
05/01/17 22:17:41プログラムのどこかにエラーがあるものと思われます。
そうでないなら、実行時に、使用するメモリの最大値を変更しましょう。
java -Xmx128m Appみたいな感じで。
0564デフォルトの名無しさん
05/01/17 22:17:49// Kamoku.java
public class Kamoku {
public static void main(String[] args) {
int sum = 0;
String[][] scores;
if (args.length == 0) {
System.out.println("Usage: java Kamoku 科目1 点数1 科目2 点数2 科目3 点数3 ...");
System.exit(0);
}
if ((args.length % 2) != 0) {
System.out.println("引数の数が合わないぞ(;Д;)ウワァーン");
System.exit(0);
}
scores = new String[args.length/2][2];
for (int i = 0; i < args.length; i++) {
scores[i/2][0] = args[i];
System.out.println(args[i] + "\t: " + args[++i]);
scores[i/2][1] = args[i];
sum += Integer.parseInt(args[i]);
}
String tmpSubject;
String tmpScore;
for( int j=0; j<args.length/2 - 1; j++ ) {
for( int k=0; k<args.length/2 - (1+j); k++ ) {
if( Integer.parseInt(scores[k][1]) < Integer.parseInt(scores[k+1][1]) ) {
tmpSubject = scores[k][0];
tmpScore = scores[k][1];
scores[k][0] = scores[k+1][0];
scores[k][1] = scores[k+1][1];
scores[k+1][0] = tmpSubject;
scores[k+1][1] = tmpScore;
0565デフォルトの名無しさん
05/01/17 22:19:12つづき
}
}
}
System.out.println( "---\nソート結果" );
for( int l=0; l<args.length/2; l++ ) {
System.out.println(scores[l][0] + "\t: " + scores[l][1]);
}
System.out.println("平均\t: " + sum / (args.length / 2));
}
}
ソートは苦手です。。
>>553
java ElectricResistance 1000
みたいな感じで実行してください。。。
0566デフォルトの名無しさん
05/01/17 22:20:540567デフォルトの名無しさん
05/01/17 22:22:560568デフォルトの名無しさん
05/01/17 22:23:440569デフォルトの名無しさん
05/01/17 22:25:00タブとかはできないのかな。
0570デフォルトの名無しさん
05/01/17 22:27:48やめてくれー。
Eclipseにコピペしたらこうなる。
---
&#160;&#160;&#160;&#160;いいかもしれない。
タブとかはできないのかな。
---
これじゃ置換ウザイよ。
0571デフォルトの名無しさん
05/01/17 22:35:080572デフォルトの名無しさん
05/01/17 23:32:11どの辺を修正すればよいのかわかりません。よろしくお願いします。
図-1 出力結果
15.2
9.100000000000001
プログラム-9
public class TriangleTest {
public static void main(String []a) {
Triangle t1=new Triangle(7.6, 5.2, 10);
Triangle t2=new Triangle(3, 4.2 , 4.9 );
t1.print();
t2.print();
}
}
プログラム-10
public class Triangle {
double ab,bc,ca;
public Triangle(double ac,double bc,double ca) {
this.ab=ab;
this.bc=bc;
this.ca=ca;
}
public void print(){
System.out.println(t1.ab+t1.bc+t1.ca);
System.out.println(t2.ab+t2.bc+t2.ca);
}
}
0573デフォルトの名無しさん
05/01/17 23:33:14>>527です。
すごく恥ずかしいのですが、
javaには便利なメソッドあるんですね。
しらんかった。
しかも、間違っても、誰からも突っ込み入らないので、
補数--2進数の場合--ビット反転してから、+1する
上記が定義らしいです。
証明する、意味不明なので、勝手に書きましたが、
まちがいですよね。
class Hosuu{
public static void main(String args[]){
int i = 0;
int ii = 0;
for(int j = 0;j<31;j++){
i = i+(int)Math.pow(2,j);
ii = ii + (~((int)Math.pow(2,j))) + 1;
System.out.println("負"+ii);
System.out.println("正"+i);
}}}
上記かきなおしました。
0574デフォルトの名無しさん
05/01/18 00:36:22もしやこうだったりして。
public class Triangle {
double ab,bc,ca;
public Triangle(double ab,double bc,double ca) {
this.ab=ab; ↑
this.bc=bc;
this.ca=ca;
}
0575デフォルトの名無しさん
05/01/18 00:58:58どこが間違っているのでしょうか?
0576デフォルトの名無しさん
05/01/18 01:07:02public class Triangle {
double ab,bc,ca;
public Triangle(double ab,double bc,double ca) {
this.ab=ab;
this.bc=bc;
this.ca=ca;
}
public void print(){
System.out.println(ab+bc+ca);←
}
}
0577デフォルトの名無しさん
05/01/18 01:23:380578デフォルトの名無しさん
05/01/18 10:03:25メンバー関数(メソッド)として、以下のものを用意すること。コンストラクタも書くこと。
public void push(int i) iの値をスタックに格納する。
public int pop() スタックからデータを取り出すと同時に stack からそのデータは消す
お願いします。
0579>>578.
05/01/18 12:43:43public class Stack1
{
private ArrayList<Integer> list = new ArrayList<Integer>();
public void push(int i){
list.add(0, new Integer(i));
}
public int pop(){
int i = list.get(0).intValue();
list.remove(0);
return i;
}
}
LinkedListの方がいいかもしれないです。
0580>>578.
05/01/18 12:48:05import java.util.*;
public class Stack1
{
private ArrayList<Integer> list;
public void push(int i){
list.add(0, new Integer(i));
}
public int pop(){
int i = list.get(0).intValue();
list.remove(0);
return i;
}
public Stack1(){
list = new ArrayList<Integer>();
}
}
0581デフォルトの名無しさん
05/01/18 13:05:25TB1とTB2を足した答えがTB3に出力されるプログラムを作りなさい。
よろしくお願いします。
0582デフォルトの名無しさん
05/01/18 13:17:34もっと情報が欲しいです、せめてAWTかSwingかアプレットかぐらいは知りたい
テキストボックスが何を指してるかわからんので計算の部分だけ
try{
int i = Integer.parseInt(TB1.getText());
int j = Integer.parseInt(TB2.getText());
TB3.setText(Integer.toString(i + j));
}catch(NumberFormatException e){
TB3.setText("NumberFormatExceptionが発生しました\n");
TB3.append("数値以外は入力しないでください");
}
0583>>581.
05/01/18 13:18:54import java.awt.event.*;
import javax.swing.*;
public class TT extends JFrame{
public TT(){
final JTextField tf0 = new JTextField();
final JTextField tf1 = new JTextField();
final JTextField tf2 = new JTextField();
JButton b = new JButton("click me");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
tf2.setText(String.valueOf(Integer.parseInt(tf0.getText())+Integer.parseInt(tf1.getText())));
}
});
Container c = getContentPane();
c.setLayout(new GridLayout(1, 4));
c.add(tf0);
c.add(tf1);
c.add(tf2);
c.add(b);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 70);
setVisible(true);
}
public static void main(String[] args){
new TT();
}
}
0584デフォルトの名無しさん
05/01/18 13:43:04動きました。
ありがとうございました。
0585539
05/01/18 17:03:000586デフォルトの名無しさん
05/01/18 17:12:32じゃあ、やってみまーす。
0587デフォルトの名無しさん
05/01/18 17:20:56OKなら次のJTextをフォーカスする、エラーなら元のJTextを
フォーカスするのはどうしたら良いですか?
0588デフォルトの名無しさん
05/01/18 17:27:30if(妥当性チェック)
textField2.requestFocusInWindow();
else
textField1.requestFocusInWindow();
0589>>539.1
05/01/18 18:06:35import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class If extends JFrame{
private BufferedImage filter(BufferedImage image, Color c, int d){
int[] ic = {c.getRed(), c.getGreen(), c.getBlue()};
for(int x=0; x<image.getWidth(); x++){
for(int y=0; y<image.getHeight(); y++){
Color cc = new Color(image.getRGB(x, y));
int[] rc = {cc.getRed(), cc.getGreen(), cc.getBlue()};
for(int i=0; i<3; i++){
if(rc[i] >= ic[i]) rc[i]+=d;
else rc[i]-=d;
if(rc[i] < 0) rc[i]=0;
else if(rc[i] > 255) rc[i]=255;
}
image.setRGB(x, y, new Color(rc[0], rc[1], rc[2]).getRGB());
}
}
return image;
}
public If(){
final JLabel l = new JLabel();
final JTextField tf = new JTextField("5");
JButton b = new JButton("load");
0590>>539.2
05/01/18 18:07:06public void actionPerformed(ActionEvent e){
File f;
JFileChooser fc = new JFileChooser("/");
if(fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) f = fc.getSelectedFile();
else return;
Color c = JColorChooser.showDialog(null, "色を指定してください。", Color.BLACK);
try{
l.setIcon(new ImageIcon(filter(ImageIO.read(f), c, Integer.parseInt(tf.getText()))));
}
catch(IOException ex){
}
}
});
JPanel p = new JPanel();
p.setLayout(new GridLayout(1, 2));
p.add(tf);
p.add(b);
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(new JScrollPane(l), BorderLayout.CENTER);
c.add(p, BorderLayout.SOUTH);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 400);
setVisible(true);
}
public static void main(String[] args){
new If();
}
}
0591デフォルトの名無しさん
05/01/18 18:09:25アプレットじゃ読めないのでプログラムにしました。
また、RGB値を指定する方法もはっきりしないのでJColorChooserを使うことにしました。
0592539
05/01/18 18:19:38ありがとうございます!
曖昧ですみません。RGB値を指定する方法は
<param name ="rr" value = "120">
<param name ="gg" value = "120">
<param name ="bb" value = "120">
という感じで指定したいのですが、それもお願いできないでしょうか?
書き換える部分だけで構いませんので。
0593デフォルトの名無しさん
05/01/18 19:00:40たぶん>>539が>>592で与えてくれた情報で要件がはっきりしたと思うけど
念のためhtml部分のコードを全部載っけてくれるとありがたい。
0594539
05/01/18 19:05:08>アプレットじゃ読めないのでプログラムにしました。
とは、アプレットで>>592のように読み込んだ値を
使うことが出来ないということですか?
0595539
05/01/18 19:10:05>>593
>>589,590を使用する場合、こんな感じです。
<html><head></head><body>
<applet code = "If.class">
<param name ="rr" value = "120">
<param name ="gg" value = "120">
<param name ="bb" value = "120">
</applet></body></html>
0596デフォルトの名無しさん
05/01/18 20:39:55そのままだとSecurityExceptionが発生してディスクアクセスできないんですが、
アプレットにしましょうか。
0597デフォルトの名無しさん
05/01/18 20:43:29を継承して「ひし形を」表すdiamond
クラスを定義する問題です。
ただし、コンストラクタは、必ず定義すること。なお、ひし形
は、中心の座標(x,y)、高さ(v)、幅(h)であたえること。直線
を描く Graphics クラスのメソッドは、drawLine(x1,y1,x2,y2)
である。これは、(x1,y2)から(x2,y2)に直線を描く。
interface figure {
public void move(int dx, int dy);
public void moveTo(int newX, int newY);
public void draw(Graphics g);
}
インターフェース figure とインターフェース colorable を
継承して、色を指定できるひし形を表す ColoredDiamond クラ
スを定義せする問題です。
interface colorable {
public void setColor(Color c);
public color getColor();
}
二問ともお願いします
0598デフォルトの名無しさん
05/01/18 21:01:23// diamond.java
import java.awt.Graphics;
public class diamond implements figure {
int x, y, v, h;
public diamond( int x, int y, int v, int h ) {
this.x = x;
this.y = y;
this.v = v;
this.h = h;
}
public void move(int dx, int dy) {
x += dx;
y += dy;
}
public void moveTo(int newX, int newY) {
x = newX;
y = newY;
}
public void draw(Graphics g) {
g.drawLine( x, y-v/2, x+h/2, y );
g.drawLine( x+h/2, y , x, y+v/2);
g.drawLine( x, y+v/2, x-h/2, y );
g.drawLine( x-h/2, y, x, y-v/2 );
}
}
0599539
05/01/18 21:02:36お願いします。
0600デフォルトの名無しさん
05/01/18 21:02:40// ColoredDiamond.java
import java.awt.*;
public class ColoredDiamond implements figure, colorable {
int x, y, v, h;
Color c;
public ColoredDiamond( int x, int y, int v, int h, Color c ) {
this.x = x;
this.y = y;
this.v = v;
this.h = h;
}
public void move(int dx, int dy) {
x += dx;
y += dy;
}
public void moveTo(int newX, int newY) {
x = newX;
y = newY;
}
public void draw(Graphics g) {
g.drawLine( x, y-v/2, x+h/2, y );
g.drawLine( x+h/2, y , x, y+v/2);
g.drawLine( x, y+v/2, x-h/2, y );
g.drawLine( x-h/2, y, x, y-v/2 );
}
public void setColor(Color c) { this.c = c; }
public Color getColor() { return c; }
}
仕様がアヤシイところあるし実装を継承とか言ってるけど大丈夫なのか?
0601>>539.1
05/01/18 21:17:47import java.awt.event.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class If extends JApplet{
private BufferedImage filter(BufferedImage image, Color c, int d){
int[] ic = {c.getRed(), c.getGreen(), c.getBlue()};
for(int x=0; x<image.getWidth(); x++){
for(int y=0; y<image.getHeight(); y++){
Color cc = new Color(image.getRGB(x, y));
int[] rc = {cc.getRed(), cc.getGreen(), cc.getBlue()};
for(int i=0; i<3; i++){
if(rc[i] >= ic[i]) rc[i]+=d;
else rc[i]-=d;
if(rc[i] < 0) rc[i]=0;
else if(rc[i] > 255) rc[i]=255;
}
image.setRGB(x, y, new Color(rc[0], rc[1], rc[2]).getRGB());
}
}
return image;
}
0602>>539.2
05/01/18 21:18:23final Color c = new Color(Integer.parseInt(getParamater("rr")), Integer.parseInt(getParameter("gg")), Integer.parseInt(getParameter("bb")));
final JLabel l = new JLabel();
final JTextField tf = new JTextField("5");
JButton b = new JButton("load");
b.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
File f;
JFileChooser fc = new JFileChooser("/");
if(fc.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) f = fc.getSelectedFile();
else return;
try{
l.setIcon(new ImageIcon(filter(ImageIO.read(f), c, Integer.parseInt(tf.getText()))));
}
catch(IOException ex){
}
}
});
JPanel p = new JPanel();
p.setLayout(new GridLayout(1, 2));
p.add(tf);
p.add(b);
setLayout(new BorderLayout());
add(new JScrollPane(l), BorderLayout.CENTER);
add(p, BorderLayout.SOUTH);
}
}
動作確認はしてません。
0603デフォルトの名無しさん
05/01/18 21:20:32init()に戻り値なくない?
×public init(){
○public void init(){
でしょう。
0604デフォルトの名無しさん
05/01/18 21:37:10コンストラクタを書き換えたので..orz
0605539
05/01/18 21:59:27ありがとうございます!
voidを入れてコンパイルはできたのですが、実行すると
start:アプレットは初期化されていません
と表示され。終了すると
java.lang.Error: Do not use If.setLayout() use If.getContentPane().setLayout() instead
at javax.swing.JApplet.createRootPaneException(JApplet.java:203)
at javax.swing.JApplet.setLayout(JApplet.java:264)
at If.init(If.java:47)
at sun.applet.AppletPanel.run(AppletPanel.java:353)
at java.lang.Thread.run(Thread.java:534)
java.lang.Error: Do not use If.setLayout() use If.getContentPane().setLayout() instead
at javax.swing.JApplet.createRootPaneException(JApplet.java:203)
at javax.swing.JApplet.setLayout(JApplet.java:264)
at If.init(If.java:47)
at sun.applet.AppletPanel.run(AppletPanel.java:353)
at java.lang.Thread.run(Thread.java:534)
と表示されます。使ったhtmlは以下の通りです
<html><head></head><body>
<applet code = "If.class"width = 800height = 600>
<param name ="rr" value = "120">
<param name ="gg" value = "120">
<param name ="bb" value = "120">
</applet></body></html>
どうしたらいいのでしょうか。
0606デフォルトの名無しさん
05/01/18 22:42:32VMのバージョンが古いのかもしれません。
以下のように書き換えてください。
setLayout(new BorderLayout());
add(new JScrollPane(l), BorderLayout.CENTER);
add(p, BorderLayout.SOUTH);
↓
Container c = getContentPane();
c.setLayout(new BorderLayout());
c.add(new JScrollPane(l), BorderLayout.CENTER);
c.add(p, BorderLayout.SOUTH);
0607デフォルトの名無しさん
05/01/18 22:43:500608デフォルトの名無しさん
05/01/18 22:49:36こういう時はJREと言うべきなのか。
0609デフォルトの名無しさん
05/01/19 03:49:23クライアントが接続してきたら、squidのログファイルを読み取る。
読み取り後、ログファイルが更新される都度、更新された部分を読み取り、
IPアドレスの部分だけ(カンマは不要)をクライアントに送信する。
送信の際、IPアドレスの数字を一字ずつ送信する。
接続はクライアント側が切断するまで切らなくてよい。
というものです。とにかくプロキシサーバーのアクセスログ(IPアドレスのみ)を
更新される度にリアルタイムにクライアントに送信できればよいみたいです。
丸投げですが、断片的なものでも構いませんのでよろしくお願いします。
0610デフォルトの名無しさん
05/01/19 10:01:070611デフォルトの名無しさん
05/01/19 11:29:40200行以上の回答プログラムが来ても
そのまま音沙汰無しってケースは幾らでもある。
このスレの回答者には馬車馬の如く働いてもらいたい。
その間に俺たちは他の勉強をしてるから。
0612デフォルトの名無しさん
05/01/19 11:38:33○その間に俺たちは飲みながら麻雀やってるから。
0613539
05/01/19 11:55:30cがinitで定義されていると言われたのでctとしたら動きましたが
loadボタンを押すと次のようなエラーが表示されました。
java.security.AccessControlException: access denied (java.util.PropertyPermission user.dir read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269)
at java.security.AccessController.checkPermission(AccessController.java:401)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:524)
at java.lang.SecurityManager.checkPropertyAccess(SecurityManager.java:1276)
at java.lang.System.getProperty(System.java:573)
at java.io.Win32FileSystem.getUserPath(Win32FileSystem.java:272)
at java.io.Win32FileSystem.resolve(Win32FileSystem.java:288)
at java.io.File.getAbsolutePath(File.java:459)
0614539
05/01/19 11:56:25at sun.awt.shell.Win32ShellFolder2.listFiles(Win32ShellFolder2.java:504)
at sun.awt.shell.ShellFolder.listFiles(ShellFolder.java:115)
at sun.awt.shell.Win32ShellFolderManager2.get(Win32ShellFolderManager2.java:194)
at sun.awt.shell.ShellFolder.get(ShellFolder.java:245)
at javax.swing.plaf.metal.MetalFileChooserUI.updateUseShellFolder(MetalFileChooserUI.java:414)
at javax.swing.plaf.metal.MetalFileChooserUI.installComponents(MetalFileChooserUI.java:304)
at javax.swing.plaf.basic.BasicFileChooserUI.installUI(BasicFileChooserUI.java:130)
at javax.swing.plaf.metal.MetalFileChooserUI.installUI(MetalFileChooserUI.java:152)
at javax.swing.JComponent.setUI(JComponent.java:449)
at javax.swing.JFileChooser.updateUI(JFileChooser.java:1701)
at javax.swing.JFileChooser.setup(JFileChooser.java:345)
at javax.swing.JFileChooser.<init>(JFileChooser.java:329)
at javax.swing.JFileChooser.<init>(JFileChooser.java:288)
at If$1.actionPerformed(If.java:34)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1786)
at javax.swing.AbstractButton$ForwardActionEvents.actionPerformed(AbstractButton.java:1839)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:245)
0615539
05/01/19 11:57:38at java.awt.Component.processEvent(Component.java:4897)
at java.awt.Container.processEvent(Container.java:1569)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Container.dispatchEventImpl(Container.java:1627)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:3483)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3198)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3128)
at java.awt.Container.dispatchEventImpl(Container.java:1613)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:456)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.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)
0616デフォルトの名無しさん
05/01/19 12:56:16>>596
0617デフォルトの名無しさん
05/01/19 13:02:48これからは致命的なバグを織りまぜることにするのじゃば。
0618539
05/01/19 15:36:42このことだったんですね。
色々と教えていただき皆さんありがとうございました。
0619>>609.1
05/01/19 18:23:50import java.net.*;
import java.util.*;
import java.util.regex.*;
public class Logc extends Thread{
private File log = new File("/var/log/squid/access.log");
private int lastIndex = 0;
private int port = 6000;
private int update = 1000;
private String read(File f, int i){
try{
RandomAccessFile raf = new RandomAccessFile(f, "r");
raf.seek(i);
byte[] b = new byte[(int)f.length()-i];
raf.read(b);
raf.close();
return new String(b);
}
catch(IOException ex){ ex.printStackTrace(); return null;}
}
private int[] cip(){
if(log.length() <= lastIndex) lastIndex = 0;
Matcher m = Pattern.compile("([0-2]?[0-9]{1,2}\\.){3}[0-2]?[0-9]{1,2}").matcher(read(log, lastIndex));
lastIndex = (int)log.length();
Pattern p = Pattern.compile("\\.");
ArrayList<Integer> list = new ArrayList<Integer>();
while(m.find()){ String[] s = p.split(m.group()); for(int i=0; i<4; i++) list.add(Integer.valueOf(s[i]));}
int[] ip = new int[list.size()];
for(int i=0; i<list.size(); i++) ip[i] = list.get(i).intValue();
return ip;
}
0620>>609.2
05/01/19 18:24:54public void run(){
try{
ServerSocket ss = new ServerSocket(port);
Socket client = ss.accept();
BufferedOutputStream bos = new BufferedOutputStream(client.getOutputStream());
while(fin && !client.isClosed()){
int[] ip = cip();
for(int i=0; i<ip.length; i++) bos.write(ip[i]);
bos.flush();
long cl = log.lastModified();
while(fin && cl==log.lastModified()){
try{
Thread.sleep(update);
}
catch(InterruptedException ex){
}
}
}
client.close();
ss.close();
}
catch(IOException ex){
ex.printStackTrace();
}
}
public static void main(String[] args)throws IOException{
new Logc().start();
System.in.read();
fin = false;
}
}
0621デフォルトの名無しさん
05/01/19 18:34:00ではないけどまともに動かなそうな気がする。。
0622609
05/01/19 22:10:12ありがとうございます。すごい早いですね。本当に助かります。
まだうまくコンパイルできないですが、なんとかやってみます。
0623デフォルトの名無しさん
05/01/19 22:29:32インデントが全角スペースで入ってるからかな。
0624デフォルトの名無しさん
05/01/19 22:53:26ちょっと長くなったので別にページ作りました
よろしくお願いします
http://f29.aaa.livedoor.jp/~tindalos/txt.html
0625デフォルトの名無しさん
05/01/19 23:18:59点数に応じた成績を表示するプログラムを作成する
for文を用いて0点から順に10ずつ増分しながら,
if文中で点数に対応する表示。
使用変数
score 点数の合計
i ループカウンタ
90点以上 優
90点未満 良
70点未満 可
50点未満 不可
よろしくお願いします
0626609
05/01/19 23:24:56正にそれでエラーが100個くらいでましたorz
それはすぐに直したんですが、26行目の
ArrayList<Integer> list = new ArrayList<Integer>();
でエラーが出てしまって苦戦中です。
macのXcodeでやってるんですが、それによると
「'('または'{がありません。」って出てしまいます。'
0627デフォルトの名無しさん
05/01/19 23:34:52問題は電卓アプレットで条件が以下のとおりです
入力の為に2つのテキストフィールドがあること。
出力のために1つのテキストフィールドがあること。
加減乗除のそれぞれに対応する4個のボタンがあること。
起動時には、入力用のテキストフィールドの片方に自分の名前、 もう一つに学籍番号が表示されていること
どうかよろしくお願いしますorz
0628デフォルトの名無しさん
05/01/19 23:46:56意味がわからぬ。
>>626
JDKのバージョンが1.4.xでGenericsに対応してないとか。
0629デフォルトの名無しさん
05/01/19 23:55:350630デフォルトの名無しさん
05/01/20 00:08:521.赤
2.青
3.白
番号を入力してください:
入力した数字のレス
1.タイマーは早くなった
2.タイマーは青くなった
3.タイマーは止まった
1,2,3以外ではそこでストップ、質問は一回で終る
お願いします
0631デフォルトの名無しさん
05/01/20 00:35:48点数に応じた成績を表示するプログラムを作成する
for文を用いて0点から順に10ずつ増分しながら,
if文中で点数に対応する表示。
使用変数
score 点数の合計
i ループカウンタ
90点以上 優
90点未満 良
70点未満 可
50点未満 不可
実行例
score:10 不可
score:20 不可
score:30 不可
score:40 不可
score:50 可
score:60 可
score:70 良
score:80 良
score:90 優
score:100 優
お願いします
0632609
05/01/20 00:43:48Java 1.4.2 Plugin Settingsっていうファイルがあったのでバージョン.1.42でした。
java1.5をインストールする必要なんでしょうか。
実際にjavaを動かす環境はLinuxだと思うんですが、サーバーの一部を間借りして
動かすのでjavaのバージョンをあげてもらう事ができなそうです。
どうにかjava1.4xで動かしたいのですが何とかならないでしょうか?
お願いばかりしてすいません。よろしくお願いします。
0633609
05/01/20 00:59:52(正)java1.5のインストールが必要なんでしょうか。
とりあえずjava1.5インストールしようと思ったらMacOSXは未対応でしたorz
0634デフォルトの名無しさん
05/01/20 03:27:470635デフォルトの名無しさん
05/01/20 03:32:540636609
05/01/20 04:09:17なんとか自己解決しようと思ってやってるんですが、いまだに・・・
0637デフォルトの名無しさん
05/01/20 05:30:12class Score {
public static void main(String args[]) {
int score=10;
for(int i=0; i<10; i++) {
if(score <50) System.out.println("score :"+ score + ":不可");
else if(score <70) System.out.println("score :" +score + ":可");
else if(score <90) System.out.println("score :" +score + ":良");
else System.out.println("score :" +score + ":優");
score += 10;
}
}
}
0638デフォルトの名無しさん
05/01/20 05:44:55import java.io.*;
class Dokasen {
public static void main(String args[]) {
int number=0;
System.out.println("どの導火線を切りますか?");
System.out.println("1.赤2.青3.白");
System.out.println("番号を入力してください:");
try {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
number = Integer.parseInt(br.readLine());
} catch(IOException e){
System.out.println("ドカーン");
System.exit(1);
}
if(number == 1) System.out.println("1.タイマーは早くなった");
else if(number == 2) System.out.println("2.タイマーは青くなった");
else if(number == 3) System.out.println("3.タイマーは止まった");
else System.out.println("ドカーン");
}
}
0639デフォルトの名無しさん
05/01/20 06:33:20点数はどこから読み込むの?
0640デフォルトの名無しさん
05/01/20 06:57:49import java.io.*;
public class Grep{
public static void main(String args[]){
int length = args.length;
if(length < 2){
System.out.println("引数が少なすぎます");
System.exit(0);
}
String find = args[0];
String line;
File file;
BufferedReader br = null;
for(int i = 1; i < length; i++){
file = new File(args[i]);
if(!file.exists()){
System.out.print(file.getAbsolutePath());
System.out.println("が見つかりません");
continue;
}
if(!file.canRead()){
System.out.print(file.getAbsolutePath());
System.out.println("を読み込めません");
continue;
}
try{
br = new BufferedReader(new FileReader(file));
0641デフォルトの名無しさん
05/01/20 06:59:10while((line = br.readLine()) != null)
if(line.indexOf(find) > -1)
System.out.println(args[i] + ":" + line);
br.close();
}catch(IOException ioe){
System.out.print(args[i]);
System.out.println("の読み込み中にIOExceptionが発生しました");
try{
if(br != null) br.close();
}catch(IOException ie){
ie.printStackTrace();
}
}
System.out.println();
}
}
}
0644デフォルトの名無しさん
05/01/20 08:33:18import java.io.*;
class Sort {
public static void main(String args[]) {
int array[] = new int[args.length];
for(int i=0; i<array.length; i++)
array[i] = Integer.parseInt(args[i]);
int tmp;
for(int i=0; i<array.length; i++)
for(int j=i+1; j<array.length; j++)
if(array[i] > array[j]) {
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
for(int i=0; i<array.length; i++) System.out.println(array[i]);
}
}
0645デフォルトの名無しさん
05/01/20 09:43:54問題3
public class sort2{
public static void main(String args[]){
String array[] = args;
int sort[] = new int[args.length];
for(int i = 0; i < array.length; i++){
sort[i] = array[i].length();
}
for(int i = 0; i < array.length; i++){
for(int j = 0; j < array.length; j++){
if(sort[i] < sort[j]){
int temp = sort[i];
sort[i] = sort[j];
sort[j] = temp;
String str = array[i];
array[i] = array[j];
array[j] = str;
}
}
}
for(int i = 0; i < array.length; i++)
System.out.println(array[i]);
}
}
0646609
05/01/20 10:43:26今の私にはどうにも解決できなそうです。よろしくお願いします。
0647デフォルトの名無しさん
05/01/20 11:17:31本当に宿題なのか?
>>646
26行目から29行目を以下のように書き換え。
ArrayList list = new ArrayList();
while(m.find()){
String[] s = p.split(m.group());
for(int i=0; i<4; i++) list.add(Integer.valueOf(s[i]));
}
int[] ip = new int[list.size()];
for(int i=0; i<list.size(); i++) ip[i] = ((Integer)list.get(i)).intValue();
0649デフォルトの名無しさん
05/01/20 11:50:49動くかどうかは知らないよ。
0650デフォルトの名無しさん
05/01/20 11:53:110651デフォルトの名無しさん
05/01/20 13:22:57ありがとうござい
0652デフォルトの名無しさん
05/01/20 14:06:50するにはどうするのでしょうか?
0653デフォルトの名無しさん
05/01/20 14:41:10誰か助けてください。
「チャットシステム」
以下の要件を満たすことを条件とする。
・クライアント、サーバシステムで構築する。
・クライアントは以下の機能を備える。
・標準入力から入力を読み込む
・標準入力に"ハンドルネーム メッセージ"の形式で入力
された文字列を読み、それぞれの情報を受け取る。
・何も入力せずに"Enter"だけを入力された場合には、
チャットログ(チャットの様子)の表示(更新)要求と
判断する。
(サーバと通信してチャットログを入手する必要がある。)
・クライアント起動時に最新のチャットログを表示する。
・サーバは、クライアントからの要求にしたがい、送られたメッ
セージを「ログファイル」に追加したり、「ログファイル」から
読み込んだチャットログをクライアントに送り返したりする。
・クライアント、サーバのメインクラス名は"ChatClient",
"ChatServer"とする。
・コメントに後述の「プログラム提出方法」に記された事項を記す
0654653
05/01/20 14:41:57これをダウンロード・コンパイルして利用し、これとあわせて動作するク
ライアントを開発すること。
このサーバプログラムは以下の要領で動作する。
・ソケットを使ってクライアントとのデータ送受信を行う。
・入力ストリーム、出力ストリームの両方を用いる。
・クライアントからメッセージを読み込む。メッセージの形式は、
「メッセージタイプ,ハンドルネーム,メッセージ(チャット
のメッセージ),」の形になっており、これを解析して、
メッセージタイプの内容によって処理を変える。
・メッセージタイプが"append"である時、ログファイルに
「ハンドルネーム,メッセージ(チャットのメッセージ),」を
追加する。
・ログファイルを読み込んでその内容をクライアントに送る。
・ログファイルの名前は"chat.log"とする。
0655653
05/01/20 14:44:07import java.io.*;
import java.util.*;
public class ChatServer {
public static void main(String args[]){
BufferedReader br;
BufferedWriter bw;
String logFileName = "chat.log";
ServerSocket ss = null;
Socket s;
InputStream sin;
DataInputStream dis;
OutputStream sout;
DataOutputStream dos;
//Make connection with client.
try{
ss = new ServerSocket(5432);
}catch(IOException e){
}
0656653
05/01/20 14:45:15try{
s = ss.accept();
sin = s.getInputStream();
dis = new DataInputStream(sin);
sout = s.getOutputStream();
dos = new DataOutputStream(sout);
//Read message from client.
String mes = new String(dis.readUTF());
System.out.println(mes);
StringTokenizer st = new StringTokenizer(mes,",");
String mes_type = st.nextToken();
if(mes_type.equals("append")){
String handle = st.nextToken();
String message = st.nextToken();
String new_message = handle + " : " + message + "\n";
try{
bw = new BufferedWriter (new FileWriter(logFileName,true));
bw.write(new_message);
bw.close();
}catch (FileNotFoundException e){
System.out.println("Error: open file:");
System.out.println(e);
e.printStackTrace();
System.exit(1);
}catch (IOException e){
System.out.println("Error: writing file:");
System.out.println(e);
e.printStackTrace();
System.exit(1);
}
}
0657653
05/01/20 14:47:14try{
String log = "";
br = new BufferedReader(new FileReader(logFileName));
String line;
while((line = br.readLine()) != null){
log += line + "\n";
}
br.close();
dos.writeUTF(log);
}catch (FileNotFoundException e){
System.out.println("Error: open file:");
System.out.println(e);
e.printStackTrace();
System.exit(1);
}catch (IOException e){
System.out.println("Error: reading file:");
System.out.println(e);
e.printStackTrace();
System.exit(1);
}
0658653
05/01/20 14:47:59dos.close();
sout.close();
dis.close();
sin.close();
s.close();
}catch(IOException e){
System.out.println("Error: cannot read message:");
System.out.println(e);
e.printStackTrace();
System.exit(1);
}
}
}
}
よろしくお願いします。
0659653
05/01/20 14:49:25以下をコメントとして記述
・実行方法… コンパイル後の実行方法を簡潔に記すこと。
・プログラムの特徴 … プログラム開発上工夫したことがあれば
記すこと。
・使用上の注意 … 何か注意を促すべきことがあれば記すこと。
0660デフォルトの名無しさん
05/01/20 16:33:06クライアントからサーバに対して最初にファイル名を送信すると、
サーバからクライアントに対してそのファイル名が送られるように拡張する。
動画関係なのですが、送受信のところは問題ありません。
丸投げになってしまいますがこの問題をお願いします
プログラムの枠組みは以下に。
// AnimClient.java
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
class AnimClient{
public static void main(String[] args){
AppFrame3 f = new AppFrame3(args[0]);
f.setSize(640,480);
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}});
f.show();
}
}
0661660
05/01/20 16:33:53ImageSocket imgsock;
AppFrame3(String hostname){
imgsock = new ImageSocket(hostname);
}
public void update(Graphics g){
paint(g);
}
public void paint(Graphics g){
Image img = imgsock.loadNextFrame();
if(img != null){
g.drawImage(img, 10, 50, 480, 360, this);
repaint(1);
}
}
}
class ImageSocket{
BufferedInputStream biStream;
BufferedImage bImage;
byte buf[];
int port = 8000;
ImageSocket(String hostname){
buf = new byte[160*120];
bImage = new BufferedImage(160, 120, BufferedImage.TYPE_BYTE_GRAY);
try{
Socket s = new Socket(hostname, port);
InputStream is = s.getInputStream();
biStream = new BufferedInputStream(is);
}
0662660
05/01/20 16:34:52System.err.println("Exception : " + e);
}
}
Image loadNextFrame(){
try{
int b = 0;
while(b < 160*120){
b += biStream.read(buf, b, 160*120 - b);
System.out.println("b = " +b);
}
int x, y, pixel;
for(y = 0; y < 120; y++){
for(x = 0; x < 160; x++){
pixel = (int)buf[y * 160 + x] *2 ;
if(pixel < 0){
biStream.close();
System.out.println("Done.");
return null;
}
pixel = new Color(pixel,pixel,pixel).getRGB();
bImage.setRGB(x, y, pixel);
}
}
}
catch(Exception e){
System.err.println("Exception : " + e);
}
return bImage;
}
}
0663660
05/01/20 16:36:13import java.io.*;
import java.net.*;
import java.util.*;
public class AnimServer {
public static void main(String[] args){
try{
byte buf[] = new byte[160*120];
int i;
BufferedInputStream biStream;
int port = 8000; // ポートは8000
// サーバソケットの作成
ServerSocket ss = new ServerSocket(port);
System.out.println("Running...");
while(true){
String log;
Socket s = ss.accept();
biStream=new BufferedInputStream(
new FileInputStream("hoge.raw"));
DataOutputStream dos=new DataOutputStream(s.getOutputStream());
0664660
05/01/20 16:37:25biStream.read(buf, 0, 160*120);
dos.write(buf, 0, 160*120);
if(buf[0] < 0) break;
}
s.close();
}
}
catch(Exception e){
System.out.println("Exception : " + e);
}
}
}
>>660-662がクライアント部で
>>663-664がサーバ部です
どうかお願いします
0666>>653 その1
05/01/20 20:13:09import java.net.*;
public class ChatClient {
public static void main(String[] args) {
Socket sc = null;
try {
sc = new Socket(InetAddress.getByName("localhost"), 5432);
DataInputStream in = new DataInputStream(sc.getInputStream());
DataOutputStream out = new DataOutputStream(sc.getOutputStream());
out.writeUTF("read");
String text = in.readUTF();
System.out.println("チャットログ\n" + text);
in.close(); out.close(); sc.close();
loop: while (true) {
sc = new Socket(InetAddress.getByName("localhost"), 5455);
in = new DataInputStream(sc.getInputStream());
out = new DataOutputStream(sc.getOutputStream());
BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
String msg;
0667:>>653 その2
05/01/20 20:15:53System.out.print("メッセージの入力:");
msg = r.readLine();
if (msg.length() == 0) {
msg = "read";
break;
}
if (msg.equalsIgnoreCase("exit"))
break loop;
String[] token = msg.split(" ", 2);
if (token.length == 2) {
msg = "append," + token[0] + "," + token[1];
break;
}
System.out.println("「name message」の形式になってません");
}
out.writeUTF(msg);
text = in.readUTF();
System.out.println("チャットログ\n" + text);
in.close(); out.close(); sc.close();
}
} catch (Exception e) {
System.out.println("エラー発生 終了");
} finally {
try {
sc.close();
} catch (IOException e1) { }
}
System.out.println("終了");
}
}
0668>>627 その1
05/01/20 20:51:11public class HW67 extends JApplet {
static final String NAME = "田中";
static final String NUMBER = "12345";
JTextField tfd1 = new JTextField(10), tfd2 = new JTextField(10),
tfd3 = new JTextField(10);
JButton btn1 = new JButton("+"), btn2 = new JButton("−"),
btn3 = new JButton("×"), btn4 = new JButton("÷"),
btn5 = new JButton("クリア");
ActionListener action = new ActionListener() {
public void actionPerformed(ActionEvent e) {
int num1 = 0, num2 = 0;
try {
num1 = Integer.parseInt(tfd1.getText());
num2 = Integer.parseInt(tfd2.getText());
} catch (NumberFormatException e1) {
tfd3.setText("数値が不正");
return;
}
switch (((JButton) e.getSource()).getText().charAt(0)) {
case '+':
tfd3.setText("" + (num1 + num2)); break;
case '−':
tfd3.setText("" + (num1 - num2)); break;
case '×':
tfd3.setText("" + (num1 * num2)); break;
case '÷':
tfd3.setText("" + (num1 / num2)); break;
}
}
};
0669:>>627 その2
05/01/20 20:51:40tfd1.setText(NAME);
tfd2.setText(NUMBER);
tfd3.setEditable(false);
btn1.addActionListener(action);
btn2.addActionListener(action);
btn3.addActionListener(action);
btn4.addActionListener(action);
btn5.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tfd1.setText("");
tfd2.setText("");
tfd3.setText("");
}
});
JPanel pal1 = new JPanel(), pal2 = new JPanel();
pal1.add(tfd1); pal1.add(tfd2); pal1.add(tfd3);
pal2.add(btn1); pal2.add(btn2); pal2.add(btn3); pal2.add(btn4); pal2.add(btn5);
getContentPane().setLayout(new GridLayout(2, 1));
getContentPane().add(pal1);
getContentPane().add(pal2);
}
}
0670デフォルトの名無しさん
05/01/20 21:48:09よろしくお願いします。
import java.io.*;
import java.lang.*;
class sample
{
public static void main(String args[])
{
BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
int n;
try
{
System.out.println(" n = ? " );
n = Integer.parseInt(kbd.readLine());
for(int i = 1 ; i <= n ; i++)
{
System.out.println("No."+i+" ? ");
0671デフォルトの名無しさん
05/01/20 23:43:57また、年(西暦)と月と日を入力してその日の曜日を表示するプログラムを作成しなさい。
変数名:year,month,week,weeks,day,days,space,i
0672デフォルトの名無しさん
05/01/21 00:27:53数値を入力し、その数値の平方根をニュートン法で求めるプログラムを
書きなさい。小数点以下100桁まで表示できるようにしなさい。
不正な入力文の時はエラーメッセージを出すようにしなさい。
提出期限は22日まで。それまでに出しなさい。
0673デフォルトの名無しさん
05/01/21 00:31:290674>>670.
05/01/21 01:46:05import java.util.*;
public class Sort{
public static void main(String[] args)throws IOException{
ArrayList<Integer> list = new ArrayList<Integer>();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s;
while((s=br.readLine()).length() > 0) list.add(Integer.valueOf(s));
Collections.sort(list);
Collections.reverse(list);
for(Integer i : list) System.out.println(i);
}
}
API使って楽すればいいじゃないバージョン。
0675>>672.
05/01/21 01:50:09public class Cp{
private static void printCalendar(Calendar c){
Calendar c0 = new GregorianCalendar(c.get(Calendar.YEAR), c.get(Calendar.MONTH), 1);
StringBuffer sb = new StringBuffer();
int f = c0.get(Calendar.DAY_OF_WEEK)-1;
for(int i=0; i<f; i++) sb.append(" ");
Calendar c1 = (Calendar)c0.clone();
c1.roll(Calendar.MONTH, 1);
int length = c1.get(Calendar.DAY_OF_YEAR) - c0.get(Calendar.DAY_OF_YEAR);
for(int d=1; d<=length; d++){
String s = String.valueOf(d);
if(s.length()==1) s=" "+s;
sb.append(s+" ");
if((f+d)%7 == 0) sb.append("\n");
}
System.out.println(sb);
}
private static void printDay(Calendar c){
int d = c.get(Calendar.DAY_OF_WEEK);
String s = null;
switch(d){ case 1: s="日曜日"; break; case 2: s="月曜日"; break; case 3: s="火曜日"; break; case 4: s="水曜日"; break;
case 5: s="木曜日"; break; case 6: s="金曜日"; break; case 7: s="土曜日"; break;}
System.out.println(s);
}
public static void main(String[] args){
if(args.length == 2)
printCalendar(new GregorianCalendar(Integer.parseInt(args[0]), Integer.parseInt(args[1])-1, 1));
else if(args.length == 3)
printDay(new GregorianCalendar(Integer.parseInt(args[0]), Integer.parseInt(args[1])-1, Integer.parseInt(args[2])));
}
}
0676デフォルトの名無しさん
05/01/21 01:58:14>>671
訂正。
0677デフォルトの名無しさん
05/01/21 13:15:52クリアボタンを押すと、ファイル名と内容表示の
双方に空文字列をセットする、という機能を↓に追加する。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
class JFrame1 extends JFrame {
JTextField tf1;
JTextArea ta;
public JFrame1() {
setSize(500, 300);
setVisible(true);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
);
Container contentPane = getContentPane();
contentPane.setLayout(new FlowLayout());
contentPane.add(new JLabel("ファイル名"));
tf1 = new JTextField(30);
contentPane.add(tf1);
JButton bt1 = new JButton("ボタン");
bt1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String path = tf1.getText();
0678デフォルトの名無しさん
05/01/21 13:16:48System.out.println( path );
try {
BufferedReader br = new BufferedReader( new FileReader(path) );
String line;
StringBuffer buffer = new StringBuffer();
while( (line=br.readLine()) != null ) {
buffer.append(line + "\n");
}
ta.setText( buffer.toString() );
} catch( IOException ioe ) {
ta.setText(ioe.getMessage());
}
}
});
contentPane.add(bt1);
contentPane.add(new JLabel("結果"));
ta = new JTextArea(5, 40);
contentPane.add(ta);
}
}
public class JavaJFm3 {
public static void main(String args[]) {
JFrame app = new JFrame1();
app.show();
}
}
0679デフォルトの名無しさん
05/01/21 13:31:325秒ごとに "=====" を表示することを10回行うメソッド ThreadE5 を
定義し、各々を同時に起動するクラス Thread1 を Thread クラスの
拡張クラスとして作成する。
2)Runnable インターフェースを使って、同様の処理を行うクラス
Thread2 を作成する。
3)Thread3.java は Job というクラスのオブジェクトを10個作って
work というメソッドを呼び続けるシングルスレッドのプログラム
である。これをもとにマルチスレッドに書き直した プログラム
Thread4.java を作成する。
(末尾の Job クラスの定義は変更せずそのまま使うこと。)
// このプログラムは Single Thread です。
class Thread3 {
Job [ ] jobs;
public Thread3(int jobcount) {
jobs = new Job[jobcount];
for (int i = 0; i < jobcount; i++) {
jobs[i] = new Job(i);
}
}
public void workAllJobs( ) {
for (int i = 0; i < jobs.length; i++) {
jobs[i].work( );
}
}
public static void main(String[ ] args) {
Thread3 self = new Thread3(10);
while (true) {
self.workAllJobs( ); } } }
0680デフォルトの名無しさん
05/01/21 13:32:27class Job {
int num;
public Job(int n) {
num = n;
}
public void work( ) {
System.out.println(this + " is working.");
try {
int n = (int) (Math.random( ) * 10000);
Thread.sleep(n);
} catch (InterruptedException e) {
}
}
public String toString( ) {
return "[Job " + num + "]";
}
}
0681デフォルトの名無しさん
05/01/21 17:20:07画面まわりは作成したのでファイルIOのところをお願いします。
必要な機能は以下のとおりです。
1.登録、修正、削除ができること
2.検索ができること
・画面に表示されているレコードの1つ前のレコード取得
・画面に表示されているレコードの1つ後のレコード取得
・先頭のレコード取得
・最後のレコード取得
・指定した値のレコードを取得
CSVファイル自体は顧客コードでソートされていてもされていなくてもかまいません。
CSVファイルの項目は「顧客コード」、「名前」、「電話番号」くらいでよいです。
0682デフォルトの名無しさん
05/01/21 19:26:54ア)発生する冷害のクラスと、その場合のコマンドライン引数の条件とを三組列挙せよ。
イ)アであげたうちの特定の一つの例外クラスについて、try-catch-finally構文を
用いて例外処理(適切なエラーメッセージの出力)を行うようソースを修正せよ。
※「第○行『○○』に修正」「○行と○行の間に『○○』を挿入」のように記述すること。
1 class ExceptionTest_1{
2 public static void main(String args[]){
3 int r = -1;
4 int i = Integer.parseInt(args[0]);
5 int test[] = {3,2,1,0};
6 r = i/test[i];
7 System.out.println(r);
8 }
9 }
よろしければお願いします。
0683デフォルトの名無しさん
05/01/21 22:21:05(1) 問題文の「メソッドThreadA3」と「メソッドThreadE5」はなんか変なので
それぞれ「スレッドThreadA3」と「スレッドThreadE5」に置き換えた。
// ThreadA3.java
public class ThreadA3 extends Thread {
public void run() {
for( int i=0; i<10; i++ ) {
System.out.print("***");
try {
Thread.sleep(3000);
} catch( InterruptedException ie ) {
ie.printStackTrace();
}}}}
// ThreadE5.java
public class ThreadE5 extends Thread {
public void run() {
for( int i=0; i<10; i++ ) {
System.out.print("=====");
try {
Thread.sleep(5000);
} catch( InterruptedException ie ) {
ie.printStackTrace();
}}}}
// Thread1.java
public class Thread1 extends Thread {
public void run() {
new ThreadA3().start();
new ThreadE5().start();
}
public static void main(String[] args) {
new Thread1().start();
}}
0684683
05/01/21 22:23:11(2) ThreadA3.javaとThreadE5.javaは(1)のソースを流用すること。
// Thread2.java
public class Thread2 implements Runnable {
public void run() {
new ThreadA3().start();
new ThreadE5().start();
}
public static void main(String[] args) {
Thread2 self = new Thread2();
new Thread(self).start();
}}
(3)
// Thread4.java
public class Thread4 implements Runnable {
Job[] jobs;
public Thread4( int jobCount ) {
jobs = new Job[jobCount];
for( int i=0; i<jobCount; i++ ) {
jobs[i] = new Job(i);
}}
public void run() {
for( int i=0; i<jobs.length; i++ ) {
jobs[i].work();
}}
public static void main(String[] args) {
Thread4 self = new Thread4(10);
while(true) {
new Thread(self).start();
}}}
0685デフォルトの名無しさん
05/01/21 22:29:21実行せずにコメント。
(ア)
ArrayIndexOutOfBoundsException:コマンドライン引数を与えない場合
NumberFormatException:コマンドライン引数に「abc」を与える。
ArithmeticException:コマンドライン引数に「3」を与える。
(イ)
2行と3行の間に
if( args.length == 0 ) System.exit(1);
を挿入。
0686685
05/01/21 22:33:57try-catchなのね。。orz...
1. 3行と4行の間に
try {
を挿入。
2. 7行と8行の間
} catch (ArrayIndexOutOfBoundsException aioobe) {
System.err.println( "コマンドライン引数が与えられていません。" );
} finally {
// いらないけどつけとく。
}
を挿入。
0687デフォルトの名無しさん
05/01/22 00:55:10作った画面のソース提供して。
>>681の書き込みだけだと回答者は画面も作らなきゃならん。
0689>>681データベース その1
05/01/22 06:48:47全部で13レスあります。
import java.io.*;
import java.util.*;
import java.util.regex.*;
import java.lang.reflect.*;
public class Statement {
static final String[] column = { "id", "name", "tel" };
String[][] keyword, tablekeyword;
static List rowList = new ArrayList();
Map updateMap = new TreeMap();
String tablename, ordername, updatekeyname;
boolean outputFlag, deleteFlag, updateFlag;
Matcher mat;
Iterator insertIt;
0690>>681 その2
05/01/22 06:49:46mat = Pattern.compile("[\\S&&[^\\(\\),;]]+|[\\(\\),;]{1}").matcher(query);
String[][] mykeyword = {
{ "select", "select" }, { "insert", "insert" },
{ "update", "update" }, { "delete", "delete" }
};
keyword = mykeyword;
loop: while(mat.find()) {
String token = mat.group();
if (token.matches(",|\\(|\\)"))
continue;
if (token.equals(";"))
break;
for (int i = 0; i < keyword.length; i++) {
if (token.matches(keyword[i][0])) {
getClass().getDeclaredMethod(keyword[i][1], new Class[0])
.invoke(this, new Object[0]);
continue loop;
}
}
throw new Exception();
}
if (outputFlag) {
outputDatabase();
return null;
} else {
return new ResultSet(rowList);
}
}
0691:>>681 その3
05/01/22 06:50:25keyword = new String[][] { { "\\*", "asta" } };
}
void asta() {
keyword = new String[][] { { "from", "from" } };
}
void from() {
tablekeyword = new String[][] { { "where", "where" }, { "order", "order" } };
keyword = new String[][] { { "\\S+", "table" } };
}
void insert() {
outputFlag = true;
keyword = new String[][] { { "into", "into" } };;
}
void into() {
tablekeyword = new String[][] { { "values", "values" } };
keyword = new String[][] { { "\\S+", "table" } };
}
void values() {
Map map = new TreeMap();
for (int i = 0; i < column.length; i++)
map.put(column[i], "");
rowList.add(map);
insertIt = map.entrySet().iterator();
keyword = new String[][] { { "\\S+", "param" } };
}
void param() {
Map.Entry ent = (Map.Entry) insertIt.next();
ent.setValue(mat.group());
keyword = new String[][] { { "\\S+", "param" } };
}
0692>>681 その4
05/01/22 06:51:14outputFlag = true;
deleteFlag = true;
keyword = new String[][] { { "from", "delfrom" } };
}
void delfrom() {
tablekeyword = new String[][] { { "where", "where" } };
keyword = new String[][] { { "\\S+", "table" } };
}
void update() {
tablekeyword = new String[][] { { "set", "set" } };
outputFlag = true;
updateFlag = true;
keyword = new String[][] { { "\\S+", "table" } };
}
void set() {
keyword = new String[][] { { "\\S+", "key" } };
}
void key() {
updateMap.put(mat.group(), "");
updatekeyname = mat.group();
keyword = new String[][] { { "=", "assign" } };
}
void assign() {
keyword = new String[][] { { "\\S+", "value" } };
}
void value() {
updateMap.put(updatekeyname, mat.group());
keyword = new String[][] { { "where", "where" }, { "\\S+", "key" } };
}
0693>>681 その5
05/01/22 06:52:02StringBuffer sb = new StringBuffer();
for (int i = 0; i < rowList.size(); i++) {
Map map = (Map) rowList.get(i);
for (int k = 0; k < column.length; k++)
sb.append(map.get(column[k]) + ",");
}
sb.delete(sb.length() - 1, sb.length());
FileWriter w = new FileWriter(tablename);
w.write(sb.toString());
w.close();
}
void table() throws Exception {
tablename = mat.group();
BufferedReader r = new BufferedReader(new InputStreamReader(
new FileInputStream(mat.group())));
StringBuffer sb = new StringBuffer();
String line;
while ((line = r.readLine()) != null)
sb.append(line);
String[] data = sb.toString().split(",");
for (int i = 0; i + column.length <= data.length;) {
Map map = new TreeMap();
for (int k = 0; k < column.length; k++, i++)
map.put(column[k], data[i].trim());
rowList.add(map);
}
keyword = tablekeyword;
}
0694>>681 その6
05/01/22 06:54:03boolean endByOrder = false;
ExpressionParser ep = new ExpressionParser(mat);
endByOrder = ep.parse();
Expression ex = ep.getExpression();
for (int i = 0; i < rowList.size(); ) {
boolean flag = ex.toBoolean((Map) rowList.get(i));
flag ^= deleteFlag;
if (!updateFlag) {
if (!flag) rowList.remove(i);
else ++i;
} else {
if (flag) {
Iterator it = updateMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry ent = (Map.Entry) it.next();
Map map = (Map) rowList.get(i);
if (map.containsKey(ent.getKey()))
map.put(ent.getKey(), ent.getValue());
}
}
++i;
}
}
if (endByOrder) {
order();
keyword = new String[][] { { "by", "by" } };
} else {
keyword = new String[][] { { "order", "order" } };
}
}
0695>>681 その7
05/01/22 06:54:44keyword = new String[][] { { "by", "by" } };
}
void by() {
keyword = new String[][] { { "\\S+", "orderclm" } };
}
void orderclm() {
ordername = mat.group();
Collections.sort(rowList, new Comparator() {
public int compare(Object arg0,Object arg1) {
return ((String) ((Map) arg0).get(ordername)).compareTo(
(String) ((Map) arg1).get(ordername));
}
});
keyword = new String[][] { { "desc", "desc" } };
}
void desc() {
Collections.sort(rowList, new Comparator() {
public int compare(Object arg0,Object arg1) {
return -(((String) ((Map) arg0).get(ordername)).compareTo(
(String) ((Map) arg1).get(ordername)));
}
});
keyword = new String[0][];
}
}
0696:>>681 その8
05/01/22 06:56:29Matcher mat;
LinkedList valueStack = new LinkedList(), exprStack = new LinkedList();
Expression expression;
ExpressionParser(Matcher mat) {
this.mat = mat;
}
boolean parse() throws Exception {
boolean endByOrder = false;
while (mat.find()) {
String token = mat.group();
if (token.matches("=|<>|>=|<=|>|<")) {
exprStack.addLast(token);
} else if (token.matches("and|or")) {
ValueExpression expr = new ValueExpression((String) valueStack.removeLast(),
(String) valueStack.removeLast(), (String) exprStack.removeLast());
valueStack.addLast(expr);
exprStack.addLast(token);
} else if (token.matches("order|;")){
endByOrder = true;
break;
} else {
valueStack.addLast(token);
}
}
0697>>681 その9
05/01/22 06:57:12String token = (String) exprStack.removeLast();
if (token.matches("=|<>|>=|<=|>|<")) {
ValueExpression expr = new ValueExpression((String) valueStack.removeLast(),
(String) valueStack.removeLast(), token);
valueStack.addLast(expr);
} else {
LogicExpression expr = new LogicExpression((Expression) valueStack.removeLast(),
(Expression) valueStack.removeLast(), token);
valueStack.addLast(expr);
}
}
if (!exprStack.isEmpty() || valueStack.size() != 1)
throw new Exception();
expression = (Expression) valueStack.removeLast();
return endByOrder;
}
Expression getExpression() {
return expression;
}
}
0698>>681 その10
05/01/22 06:59:11boolean toBoolean(Map row);
}
class LogicExpression implements Expression {
Expression val1, val2;
String expr;
LogicExpression(Expression val2, Expression val1, String expr) {
this.val1 = val1; this.val2 = val2; this.expr = expr;
}
public boolean toBoolean(Map row) {
if (expr.equals("and"))
return val1.toBoolean(row) && val2.toBoolean(row);
else
return val1.toBoolean(row) || val2.toBoolean(row);
}
}
class ValueExpression implements Expression {
String val1, val2, expr;
ValueExpression(String val2, String val1, String expr) {
this.val1 = val1; this.val2 = val2; this.expr = expr;
}
public boolean toBoolean(Map row) {
int ans = ((String) row.get(val1)).compareTo(val2);
if (expr.equals("=")) return ans == 0;
else if (expr.equals("<")) return ans == -1;
else if (expr.equals(">")) return ans == 1;
else if (expr.equals("=<")) return ans == 0 || ans == -1;
else return ans == 0 || ans == 1;
}
}
0699>>681 その11
05/01/22 07:01:56List rowList;
int index = 0;
ResultSet(List rowList) {
this.rowList = rowList;
}
String get(String name) {
if (rowList.isEmpty()) return null;
Map map = (Map) rowList.get(index);
return (String) map.get(name);
}
boolean next() {
if (index < rowList.size() - 1) { ++index; return true; }
else { return false; }
}
boolean previous() {
if (index > 0) { ++index; return true; }
else { return false; }
}
boolean first() {
if (!rowList.isEmpty()) { index = 0; return true; }
else { return false; }
}
boolean last() {
if (!rowList.isEmpty()) { index = rowList.size() - 1; return true; }
else { return false; }
}
}
0700>>681データベースその1の訂正
05/01/22 07:08:17失礼。
>>689はこっちにしてください。
import java.io.*;
import java.util.*;
import java.util.regex.*;
import java.lang.reflect.*;
public class Statement {
static final String[] column = { "id", "name", "tel" };
String[][] keyword, tablekeyword;
List rowList = new ArrayList(); //← ここのstatic指定を外す
Map updateMap = new TreeMap();
String tablename, ordername, updatekeyname;
boolean outputFlag, deleteFlag, updateFlag;
Matcher mat;
Iterator insertIt;
0701>>681データベースの使用法 その1
05/01/22 07:49:36ここでは顧客CSVファイルの名前を database とします(拡張子なし)
コードその1のクラス変数columnに、データベースのカラムの種類が記述されてます。
(ここでは id name tel の3種類) カラムのデータ型は全て Sting 型です。
CSVファイルにはこの順番でデータを記述してます。(例 0010,suzuki,333-555-7777,・・・)
CSVファイルデータベースへのアクセスはこうします。
String query = "任意の擬似SQL文";
Statement st = new Statement();
ResultSet rs = st.executeQuery(query);
if (rs.first()) {
do {
String id = rs.get("id");
String name = rs.get("name");
String tel = rs.get("tel");
} while(rs.next());
}
擬似SQL文を書いたString変数 query をStatement#executeQuery()の引数に渡して
アクセスします。ResultSetのメソッドは first、last、next、previous、get です。
ただこのResultSetは、初めから行0(最初の行)を指しています。
0702:>>681データベースの使用法 その2
05/01/22 07:50:24select、insert、update、delete が使えます。以下に例を示します。
select * from database order by id desc; CSVファイルの行を全部取得してIDで逆順に並べる。
select * from database where name = tanaka; 名前がtanakaの行を取得する。
select * from database where name = suzuki order by id;
insert into database values ( 0022, satou, 999-888-7777 ); 行を挿入する。
update database set tel = 111-222-3333 where name = katou; 名前がkatouの電話番号を変える。
delete from database where id = 0033; IDが0033の行を削除する。
予約語は、select from where order by desc insert into values update set delete * です。
予約語は必ず小文字で書いてください。あとselectの次には * だけしか指定できません。
普通のSQLみたいにselectの次にカラム名は指定できません。あとorder by でdescは使えますが
ascは使えません。
テーブルの指定はCSVファイルと全く同じ名前を指定してください。(CSVファイルがdatabaseなら
テーブル指定もdatabaseとする)
0703デフォルトの名無しさん
05/01/22 08:08:24名前がtanakaでIDが0555の行を取得する。
予約語は、
select from where order by desc insert into values update set delete *
= < > <= >= and or
でした。
0704デフォルトの名無しさん
05/01/22 19:51:48テキストファイルA(元データ)には単語の組み合わせが
aaa,bbb
ccc,bbbs
ddd,aaaff
efg,gggf
fds,fdsa
テキストファイルB(辞書)には
aaa
bbb
ccc
ddd
と入ってます。
ここでAのフィールド1とBが一致する組み合わせをAから抽出したいです。
上の例だと
aaa,bbb
ccc,bbbs
ddd,aaaff
がAから抽出されます。
0705デフォルトの名無しさん
05/01/22 20:05:44こんな感じでいいかな?
import java.io.*;
import java.util.*;
public class Test{
public static void main(String args[]){
BufferedReader br;
String line, tmp, data[];
HashMap map = new HashMap();
try{
br = new BufferedReader(new FileReader("テキストファイルA"));
while((line = br.readLine()) != null){
data = line.split(",");
map.put(data[0], data[1]);
}
br.close();
br = new BufferedReader(new FileReader("テキストファイルB"));
while((line = br.readLine()) != null){
tmp = (String)map.get(line);
if(tmp != null)
System.out.println(line + "," + tmp);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
0706704
05/01/22 20:17:44ちゃんと動きました。
こんなに短い行数でできるのですね。
hashmapクラスを知らないので勉強します。
すばやい回答ありがとうございました。
0707デフォルトの名無しさん
05/01/23 18:36:20> hashmapクラスを知らないので勉強します。
○HashMap
大文字小文字を正確に書くくせをつけましょう。
0708デフォルトの名無しさん
05/01/23 19:09:34×HashTable
○Hashtable
なんでだろね。
0709宿題
05/01/23 20:02:14import java.applet.*;
public class grp extends Applet{
public void paint(graphics gc){
gc.drawString("初期Fで線を描く",50,50);
gc.drawLine(20,50,100,100);
gc.setColor(Color.red);
gc.drawString("色を赤に変えて線を描く",350,50);
gc.setColor(Color.black);
gc.drawString("色を黒に変えて四角を描く",350,150);
gc.drawRect(350,170,80,40);
gc.crawString("最短の線を描く",350,280);
gc.drawLine(400,300,400,300);
Image gazo=getImage(getCodeBase(),"neo.gif"); //イメージオブジェクトgazouに画像データを読み込む
gc.drawString("画像ファイルを読み込み表示する",100,280);
gc.drawImage(gazou,100,300,this); //読み込んだ画像を表示
}
}
以上を参考に
・縦10,横10の正方形の中に×印を描いたものを縦に10個、横に10個の正方形型に配置。
(繰り返し処理を利用して)
・点から始めてそれを中心に同心円状に10間隔で円を10個描く。
(同じく繰り返しを利用)
0710デフォルトの名無しさん
05/01/23 21:04:01正方形だけ。
// SquareApplet.java
import java.applet.Applet;
import java.awt.Graphics;
public class SquareApplet extends Applet {
/** 始点x座標 */
public static final int X = 5;
/** 始点y座標 */
public static final int Y = 5;
/** 正方形の長さ */
public static final int L = 30;
/** ×印の長さの割合 */
public static final int CROSS = 3;
/** ループ回数 */
public static final int LOOP = 10;
public void paint(Graphics g) {
// Appletのサイズ設定
setSize( X*2+L*LOOP, Y*2+L*LOOP );
for( int i=0; i<LOOP; i++ ) {
for( int j=0; j<LOOP; j++ ) {
// 正方形描画
g.drawRect( X+L*i, Y+L*j, L, L );
// ×印描画
g.drawLine( X+L*i+L/2-CROSS, Y+L*j+L/2-CROSS, X+L*i+L/2+CROSS, Y+L*j+L/2+CROSS );
g.drawLine( X+L*i+L/2+CROSS, Y+L*j+L/2-CROSS, X+L*i+L/2-CROSS, Y+L*j+L/2+CROSS );
}
}
}
}
0711デフォルトの名無しさん
05/01/23 21:30:54int width = 10, x = 200, y = 200;
for ( int i = 1;i<=10;i++){
g.drawOval(x-(width/2*i),y-(width/2*i),width*i,width*i);
}
0712デフォルトの名無しさん
05/01/23 22:14:14for文を二つ使用して九九表を表示させる。
左右の間隔はエスケープシーケンス\tえお使用する。
カウンタ変数はi,jとする。(無限ループに注意)
実行例
1 2 3 4 5 6 7 8 9
2 4 6 8 10 12 14 16 18
3 6 9 12 15 18 21 24 27
4 8 12 16 20 24 28 32 36
5 10 15 20 25 30 35 40 45
6 12 18 24 30 36 42 48 54
7 14 21 28 35 42 49 56 63
8 16 24 32 40 48 56 64 72
9 18 27 36 45 54 63 72 81
このプログラムを作成願います。
よろしくお願いします。
0713M.B.
05/01/23 22:19:22過去ログ見れ。しつこいくらいに書いてある。
0714デフォルトの名無しさん
05/01/23 22:20:001
string pass = "ab";
if(ae.getActionCommand().equals(pass))
2
string pass = "ab";
if(ae.getActionCommand == pass)
は同じ意味ではないのでしょうか?
今プログラム作成中で、1でやると上手くいくのですが、
2に直すと、if文ではなく、elseのほうにいってしまいます。
0715デフォルトの名無しさん
05/01/23 22:20:46// Kuku01.java
public class Kuku01 {
public static void main(String[] args) {
for( int i=1; i<10; i++ ) {
for( int j=1; j<10; j++ ) {
System.out.print(i*j + "\t");
}
System.out.println();
}
}
}
0716デフォルトの名無しさん
05/01/23 22:22:491は値比較で2はオブジェクト比較です。
今回のケースでは
「ab」という文字列かどうかを調べたい場合は1番、
passというオブジェクトかどうかを調べたい場合は2番を使います。
0717デフォルトの名無しさん
05/01/23 22:27:23言われてみればそういうことだったんですね。
判りやすいご回答のほう、どうもありがとうございました。
これで先に進むことができます。
0718デフォルトの名無しさん
05/01/23 22:46:56なんども質問すいません。
ふと疑問に思ったのですが、
2
string pass = "ab";
if(ae.getActionCommand == pass)
という部分を、
string pass = "ab";
if(ae.getActionCommand == "ab")
に訂正したら、1と同じ意味にはならないのでしょうか?
ae.getActionCommandの戻り値の型は、Stringで、
"ab"もStringなので、==で比較して、ae.getActionCommand
の内容が、"ab"ならif文には進まないのでしょうか?
0719デフォルトの名無しさん
05/01/23 23:03:29"aa"これですでに、ひとつのオブジェクトができているということです。
よって、aeとは違うオブジェクトですね。
0720デフォルトの名無しさん
05/01/23 23:09:27Stringクラスで生成されたオブジェクトの中身の文字や値は、
==で比較せずに、Stringクラスの、equals()で比較しなければ
ならないということで納得しました。オブジェクト指向は本当に
難しいですねぇ。
いろいろご指導ありがとうございました。
0721デフォルトの名無しさん
05/01/23 23:12:080722デフォルトの名無しさん
05/01/23 23:56:25違うオブジェクトでも同じ値ってことはあるよね。
0723デフォルトの名無しさん
05/01/24 00:32:54よろしくお願いします。
if文と
double x[]=new double [n]を使って下さい。
import java.io.*;
import java.lang.*;
class sample
{
public static void main(String args[])
{
BufferedReader kbd = new BufferedReader(new InputStreamReader(System.in));
int n;
try
{
System.out.println(" n = ? " );
n = Integer.parseInt(kbd.readLine());
for(int i = 1 ; i <= n ; i++)
{
System.out.println("No."+i+" ? ");
0724デフォルトの名無しさん
05/01/24 00:36:47書いて、結局何の音沙汰も無いって哀れな展開に禿しくワラタ
0725デフォルトの名無しさん
05/01/24 00:53:37すると次のような結果になるのですが、なぜ出力二行目の結果が
9.1ではなく9.100000000000001になるのでしょうか?理由がわから
ないので教えてください。
出力:15.2
9.100000000000001
プログラム:public class TriangleTest {
public static void main(String []args) {
Triangle t1=new Triangle(7.6, 5.2, 10 );
Triangle t2=new Triangle(3, 4.2 , 4.9 );
t1.print();
t2.print();
}
}
public class Triangle {
double ab,bc,ca;
public Triangle(double ac,double bc,double ca) {
this.ab=ab;
this.bc=bc;
this.ca=ca;
}
public void print(){
System.out.println(ab+bc+ca);
}
}
0726デフォルトの名無しさん
05/01/24 02:02:35丸め誤差
あとTriangleのコンストラクタのローカル変数acが使われてないけど意味あんの?
abの間違いじゃない?
0727デフォルトの名無しさん
05/01/24 10:43:13とか
http://pc5.2ch.net/test/read.cgi/tech/1105691367/608n
とか見ると
宿題スレと質問スレがごっちゃになってるように思えてならない。
>>725
こっちは質問スレじゃないぞ…。
0728デフォルトの名無しさん
05/01/24 10:47:09各チェックポイント間の重み(距離みたいなものです)は以下の通りです。
例えば、AからDまでの距離は9です。DからAまでの距離が3なのは、AからDの間には高低差があり、
そのため移動のための労力に差が生じたからです。
2つのチェックポイントの値を入力し、重みを出力できるプログラムを作成しましょう。
A B C D E F
A - 7 6 9 6 7
B 5 - 8 3 5 8
C 4 3 - 9 2 6
D 3 7 5 - 4 5
E 8 5 9 4 - 7
F 6 2 4 5 3 -
【動作例】
各チェックポイントと入力の値との対応
A:1 B:2 C:3 D:4 E:5 F:6
出発地点を答えておくれ
1 [Enter]
Aですね!
到着地点を答えておくれ
4 [Enter]
Dですね!
========================
AからDまでの重みは9です!
========================
0729681
05/01/24 12:28:07>>689さん
CSVファイルのデータベースについて解答いただいた689さんありがとうございます。
返事遅れてすいません。
>>724さん
自宅から書き込めないため、返事遅れてたんです。すいません。
使用していて不具合っぽいものがありました。ソースが自分の力を超えすぎていて
どのように修正したらよいかわからないのでご教授願います。
一つはinsert文をクラス変数columnの順番に書くと結果がバラバラになって
CSVファイルにおちました。
column = {"id","name","kana","adr","tel","mailadr"};
にして、insert文を
insert into values(0033, 田中, タナカ, 青森県, 111-2222, [email protected] );
にしたら、CSVファイル上ではadrのところに0033が、idのところに青森県という
ような感じでカラム順番が不定になりました。
二つ目はupdateで値を空にして更新できません。
update set name = hoge, kana = , adr = hogehoge where id = 0033;
のように値を空にするとエラーになります。(例ではkanaが空)
0730681
05/01/24 12:29:48あと要望ですが、CSVファイルを
id, name, ....[改行]
id, name, ....[改行]
[EOF]
の形に対応していただきたいのと、
クエリで値は
update set name = 'hoge', kana = '', adr = 'hogehoge' where id = '0033';
のようにシングルクォーテーションでくくれるようにしていただきたいです。
無理言ってすいません。おねがいします。
0731デフォルトの名無しさん
05/01/24 13:14:28この問題って何か意味あるの?
何に応用出来るの?
0732デフォルトの名無しさん
05/01/24 13:33:420733デフォルトの名無しさん
05/01/24 18:28:41import java.io.*;
public class ahoka {
public static void main(String[] args) throws Exception{
int i[][] = {
{0, 7, 6, 9, 6, 7},
{5, 0, 8, 3, 5, 8},
{4, 3, 0, 9, 2, 6},
{3, 7, 5, 0, 4, 5},
{8, 5, 9, 4, 0, 7},
{6, 2, 4, 5, 3, 0}
};
int startPoint, endPoint;
char c[] = {'A', 'B', 'C', 'D', 'E', 'F'};
BufferedReader bfr = new BufferedReader(new InputStreamReader(System.in));
System.out.println("各チェックポイントと入力の値との対応");
System.out.println("A:1 B:2 C:3 D:4 E:5 F:6");
System.out.println();
System.out.println("出発地点を答えておくれ");
startPoint = Integer.parseInt(bfr.readLine()) - 1;
System.out.println(c[startPoint] + "ですね!");
System.out.println();
System.out.println("到達地点を答えておくれ");
endPoint = Integer.parseInt(bfr.readLine()) - 1;
System.out.println(c[endPoint] + "ですね!");
System.out.println();
System.out.println("======================== ");
System.out.println(c[startPoint] + "から" + c[endPoint] + "までの重みは"+i[startPoint][endPoint]+"です!");
System.out.println("======================== ");
}
}
0734デフォルトの名無しさん
05/01/24 19:57:17BからDなら重みは何ぼだ
0735デフォルトの名無しさん
05/01/24 20:15:18ためには、JAVAの規約に則って、try〜catchしてほしい。
0736>>729データベース その1
05/01/24 22:09:06import java.util.*;
import java.util.regex.*;
import java.lang.reflect.*;
public class Statement {
List column;
String[][] keyword, tablekeyword;
List rowList = new ArrayList();
Map updateMap = new LinkedHashMap();
String tablename, ordername, updatekeyname;
boolean outputFlag, deleteFlag, updateFlag, alldelFlag;
Matcher mat;
String token;
Iterator insertIt;
0737>>729データベース その2
05/01/24 22:09:40mat = Pattern.compile("'([^'\\n\\r]*)'|[\\S&&[^\\(\\),;]]+|[\\(\\),;]{1}").matcher(query);
String[][] mykeyword = {
{ "select", "select" }, { "insert", "insert" },
{ "update", "update" }, { "delete", "delete" }, { "create", "create" }
};
keyword = mykeyword;
loop: while(mat.find()) {
token = mat.group();
if (token.equals(";"))
break;
if (mat.group(1) != null)
token = mat.group(1);
for (int i = 0; i < keyword.length; i++) {
if (token.matches(keyword[i][0])) {
getClass().getDeclaredMethod(keyword[i][1], new Class[0])
.invoke(this, new Object[0]);
continue loop;
}
}
throw new Exception();
}
if (outputFlag) {
outputDatabase();
return null;
} else {
return new ResultSet(rowList);
}
}
0738>>729データベース その3
05/01/24 22:10:14StringBuffer sb = new StringBuffer();
for (int i = 0; i < column.size(); i++)
sb.append(column.get(i) + ",");
sb.replace(sb.length() - 1, sb.length(), "\r\n");
if (alldelFlag)
rowList.clear();
for (int i = 0; i < rowList.size(); i++) {
Map map = (Map) rowList.get(i);
for (int k = 0; k < column.size(); k++)
sb.append(map.get(column.get(k)) + ",");
sb.replace(sb.length() - 1, sb.length(), "\r\n");
}
FileWriter w = new FileWriter(tablename);
w.write(sb.toString());
w.close();
}
0739>>729データベース その4
05/01/24 22:10:54outputFlag = true;
keyword = new String[][] { { "table", "tablekw" } };
}
void tablekw() {
keyword = new String[][] { { ".+", "maketable" } };
}
void maketable() {
tablename = token;
keyword = new String[][] { { "\\(", "makebeginP" } };
}
void makebeginP() {
column = new ArrayList();
keyword = new String[][] { { ".*", "makeparam" } };
}
void makeparam() {
column.add(token);
keyword = new String[][] { { ",", "makeconma" }, { "\\)", "makeendP" } };
}
void makeconma() {
keyword = new String[][] { { ".*", "makeparam" }, { "\\)", "makeendP" } };
}
void makeendP() {
keyword = new String[0][];
}
0740>>729データベース その5
05/01/24 22:11:31keyword = new String[][] { { "\\*", "asta" } };
}
void asta() {
keyword = new String[][] { { "from", "from" } };
}
void from() {
tablekeyword = new String[][] { { "where", "where" }, { "order", "order" } };
keyword = new String[][] { { ".+", "table" } };
}
void insert() {
outputFlag = true;
keyword = new String[][] { { "into", "into" } };;
}
void into() {
tablekeyword = new String[][] { { "values", "values" } };
keyword = new String[][] { { ".+", "table" } };
}
void values() {
Map map = new LinkedHashMap();
for (int i = 0; i < column.size(); i++)
map.put(column.get(i), "");
rowList.add(map);
insertIt = map.entrySet().iterator();
keyword = new String[][] { { "\\(", "beginP" } };
}
void beginP() {
keyword = new String[][] { { ".*", "param" } };
}
0741>>729データベース その6
05/01/24 22:12:17Map.Entry ent = (Map.Entry) insertIt.next();
ent.setValue(token);
keyword = new String[][] { { ",", "conma1" }, { "\\)", "endP" } };
}
void conma1() {
keyword = new String[][] { { ".*", "param" }, { "\\)", "endP" } };
}
void endP() {
keyword = new String[0][];
}
void delete() {
outputFlag = true;
deleteFlag = true;
alldelFlag = true;
keyword = new String[][] { { "from", "delfrom" } };
}
void delfrom() {
tablekeyword = new String[][] { { "where", "where" } };
keyword = new String[][] { { ".+", "table" } };
}
void update() {
tablekeyword = new String[][] { { "set", "set" } };
outputFlag = true;
updateFlag = true;
keyword = new String[][] { { ".+", "table" } };
}
0742>>729データベース その7
05/01/24 22:13:08keyword = new String[][] { { ".+", "key" } };
}
void key() {
updateMap.put(token, "");
updatekeyname = token;
keyword = new String[][] { { "=", "assign" } };
}
void assign() {
keyword = new String[][] { { ".*", "value" } };
}
void value() {
updateMap.put(updatekeyname, token);
keyword = new String[][] { { "where", "where" }, { ",", "conma2" } };
}
void conma2() {
keyword = new String[][] { { "where", "where" }, { ".+", "key" } };
}
0743>>729データベース その8
05/01/24 22:13:44keyword = tablekeyword;
tablename = token;
BufferedReader r = new BufferedReader(new InputStreamReader(
new FileInputStream(token)));
String line;
line = r.readLine();
if (line == null)
throw new Exception();
column = new ArrayList(Arrays.asList(line.split(",")));
StringBuffer sb = new StringBuffer();
while ((line = r.readLine()) != null)
sb.append(line + ",");
if (sb.length() == 0)
return;
String[] data = sb.toString().split(",");
for (int i = 0; i + column.size() <= data.length;) {
Map map = new LinkedHashMap();
for (int k = 0; k < column.size() && i < data.length; k++, i++)
map.put(column.get(k), data[i].trim());
rowList.add(map);
}
}
0744>>729データベース その9
05/01/24 22:16:22boolean endByOrder = false; alldelFlag = false;
ExpressionParser ep = new ExpressionParser(mat);
endByOrder = ep.parse();
Expression ex = ep.getExpression();
for (int i = 0; i < rowList.size(); ) {
boolean flag = ex.toBoolean((Map) rowList.get(i));
flag ^= deleteFlag;
if (!updateFlag) {
if (!flag) rowList.remove(i);
else ++i;
} else {
if (flag) {
Iterator it = updateMap.entrySet().iterator();
while (it.hasNext()) {
Map.Entry ent = (Map.Entry) it.next(); Map map = (Map) rowList.get(i);
if (map.containsKey(ent.getKey())) map.put(ent.getKey(), ent.getValue());
}
}
++i;
}
}
if (endByOrder) {
order(); keyword = new String[][] { { "by", "by" } };
} else {
keyword = new String[][] { { "order", "order" } };
}
}
0745>>729データベース その10
05/01/24 22:18:03keyword = new String[][] { { "by", "by" } };
}
void by() {
keyword = new String[][] { { ".+", "orderclm" } };
}
void orderclm() {
ordername = token;
Collections.sort(rowList, new Comparator() {
public int compare(Object arg0,Object arg1) {
return compareColumn((String) ((Map) arg0).get(ordername), (String) ((Map) arg1).get(ordername));
}
});
keyword = new String[][] { { "desc", "desc" } };
}
void desc() {
Collections.sort(rowList, new Comparator() {
public int compare(Object arg0,Object arg1) {
return -compareColumn((String) ((Map) arg0).get(ordername), (String) ((Map) arg1).get(ordername));
}
});
keyword = new String[0][];
}
int compareColumn(String s1, String s2) {
try {
return Integer.valueOf(s1).compareTo(Integer.valueOf(s2));
} catch (Exception e) {
return s1.compareTo(s2);
}
}
}
0746>>729データベース その11
05/01/24 22:18:44List rowList;
int index = -1;
ResultSet(List rowList) {
this.rowList = rowList;
}
String get(String name) {
Map map = (Map) rowList.get(index);
return (String) map.get(name);
}
int getInt(String name) {
Map map = (Map) rowList.get(index);
return Integer.parseInt((String) map.get(name));
}
boolean next() {
if (rowList.isEmpty())
return false;
if (index < rowList.size() - 1) {
++index;
return true;
} else {
return false;
}
}
0747>>729データベース その12
05/01/24 22:19:41if (rowList.isEmpty())
return false;
if (index > 0) {
--index;
return true;
} else {
return false;
}
}
boolean first() {
if (!rowList.isEmpty()) {
index = 0;
return true;
} else {
return false;
}
}
boolean last() {
if (!rowList.isEmpty()) {
index = rowList.size() - 1;
return true;
} else {
return false;
}
}
}
0748>>729データベース その13
05/01/24 22:20:48Matcher mat;
LinkedList valueStack = new LinkedList(), exprStack = new LinkedList();
Expression expression;
ExpressionParser(Matcher mat) {
this.mat = mat;
}
boolean parse() throws Exception {
boolean endByOrder = false;
while (mat.find()) {
String token = mat.group();
if (mat.group(1) != null)
token = mat.group(1);
if (token.matches("=|<>|>=|<=|>|<")) {
exprStack.addLast(token);
} else if (token.matches("and|or")) {
ValueExpression expr = new ValueExpression((String) valueStack.removeLast(),
(String) valueStack.removeLast(), (String) exprStack.removeLast());
valueStack.addLast(expr);
exprStack.addLast(token);
} else if (token.matches("order|;")){
endByOrder = true;
break;
} else {
valueStack.addLast(token);
}
}
0749>>729データベース その14
05/01/24 22:22:00String token = (String) exprStack.removeLast();
if (token.matches("=|<>|>=|<=|>|<")) {
ValueExpression expr = new ValueExpression((String) valueStack.removeLast(),
(String) valueStack.removeLast(), token);
valueStack.addLast(expr);
} else {
LogicExpression expr = new LogicExpression((Expression) valueStack.removeLast(),
(Expression) valueStack.removeLast(), token);
valueStack.addLast(expr);
}
}
if (!exprStack.isEmpty() || valueStack.size() != 1)
throw new Exception();
expression = (Expression) valueStack.removeLast();
return endByOrder;
}
Expression getExpression() {
return expression;
}
}
0750>>729データベース その15
05/01/24 22:22:38boolean toBoolean(Map row) throws Exception ;
}
class LogicExpression implements Expression {
Expression val1, val2;
String expr;
LogicExpression(Expression val2, Expression val1, String expr) {
this.val1 = val1;
this.val2 = val2;
this.expr = expr;
}
public boolean toBoolean(Map row) throws Exception {
if (expr.equals("and"))
return val1.toBoolean(row) && val2.toBoolean(row);
else
return val1.toBoolean(row) || val2.toBoolean(row);
}
}
0751>>729データベース その16
05/01/24 22:23:39String val1, val2, expr;
ValueExpression(String val2, String val1, String expr) {
this.val1 = val1; this.val2 = val2; this.expr = expr;
}
public boolean toBoolean(Map row) throws Exception {
if (expr.equals("=")) {
int ans = ((String) row.get(val1)).compareTo(val2);
return ans == 0;
} else if (expr.equals("<>")) {
int ans = ((String) row.get(val1)).compareTo(val2);
return ans != 0;
} else if (expr.equals("<")) {
int ans = Integer.valueOf((String) row.get(val1)).compareTo(
Integer.valueOf(val2));
return ans == -1;
} else if (expr.equals(">")) {
int ans = Integer.valueOf((String) row.get(val1)).compareTo(
Integer.valueOf(val2));
return ans == 1;
} else if (expr.equals("<=")) {
int ans = Integer.valueOf((String) row.get(val1)).compareTo(
Integer.valueOf(val2));
return ans == 0 || ans == -1;
} else if (expr.equals(">=")) {
int ans = Integer.valueOf((String) row.get(val1)).compareTo(
Integer.valueOf(val2));
return ans == 0 || ans == 1;
}
throw new Exception();
}
}
0752デフォルトの名無しさん
05/01/24 22:57:43Wikiに貼ってくれ…。
http://www.wikiroom.com/java/?%a5%bd%a1%bc%a5%b9%c5%bd%c9%d5%a4%b1
0753>>729データベース使用法 その1
05/01/24 23:20:28注文と幾つかのバグを修正しました。
Statementの仕様を幾つか変えました。ResultSetも少し変えました。
使用法はこんな感じです。
String query = "select * from data.txt;";
Statement st = new Statement();
ResultSet rs = st.executeQuery(query);
while (rs.next()) {
int id = rs.getInt("id");
String name = rs.get("name");
String tel = rs.get("tel");
}
0754>>729データベース使用法 その2
05/01/24 23:22:30*create文によるテーブルの作成
create table data.txt ( id, name, kana, adr, tel, mailadr );
で、data.txtの名のcsvファイルが作成され、それがテーブルになります。
指定されたカラムを持ちます。カラムの型は全部String型です。
しかし一部の構文で、それをint数値として扱う事もできます。詳細は後で述べます。
*create、select、insert、update、delete の5つの文が使えます。
*空の値を代入する時は '' としてください。(例:update data.txt set name = '';)
*where句の式で、< > >= <= の大小比較式を使う時は、そのカラムデータが数字だけで構成
されてないとエラーになります。 id >= 5 はOKだが、name >= '田中' はエラーになる。
*select の次には * だけを指定してください。カラム名指定はできません。
*予約語は小文字だけで書いてください。大文字だと認識されません。
*テーブルの指定はCSVファイル名そのままにしてください。
*SQL文に構文エラーがあると、例外が発生します。
*Statement#executeQuery() でselect文を引数にするとResultSetインスタンスが
返ってきますが、それ以外の更新文では常にnullが返ってきます。
SQL文の例
create table data.txt ( id, name, kana, adr, tel, mailadr );
insert into data.txt values ( 5, '田中', 'タナカ', '横浜', '333-444', 'aaa@yahoo' );
insert into data.txt values ( 6, '鈴木', 'タナカ', '', '666-777', 'bbb@yahoo' );
select * from data.txt where id >= 3 and id <= 5 order by id;
select * from data.txt where id = 1 or id = 2;
select * from data.txt order by id desc;
update data.txt set name = '佐藤', mailadr = '' where id = 5;
delete from data.txt where id <> 3;
delete from data.txt;
0755>>729データベース使用法 その3
05/01/24 23:23:22*Statement#executeQuery()から返ってくるResultSetインスタンスは、初めはどこの行も
指してません(変更しました)。必ず初めにnext()かfirst()をしてからget()してください。
*get(String name)、getInt(String name)、next()、previous()、first()、last()
が使えます。
*next() previous() first() last() は、その行が存在するとtrue、存在しないとfalseが
返ってきます。行が存在しない状態でget()を使うと例外が発生します。
*get()ではStringが、getInt()ではint数値が得られます。ただ数字だけで構成されてない
カラムに対してgetInt()を使うと例外が発生します。
0756デフォルトの名無しさん
05/01/24 23:26:32Wikiの使い方が分からないんです・・・ (;_;)
どのページをクリックすればいいのかさっぱり・・・(>_<)
0757デフォルトの名無しさん
05/01/24 23:27:43すいません。
Wikiの使い方が分からないんです・・・ (;_;)
どのページをクリックすればいいのかさっぱり・・・(>_<)
0758デフォルトの名無しさん
05/01/24 23:41:42簡単に。
1. 画面下「新規」ボタンクリック。
2. 「ページ新規作成:」に適当な名前を入れて「編集」ボタンクリック。
3. 「-- 雛形とするページ --」は「ソース貼り付け」を選択して「読込」ボタンクリック。
4. 画面下テキストエリアに載せたい作ったソースを書く(雛形を参考に)。
5. 「プレビュー」ボタンクリック。
6. イケてないと思ったら修正して「再度プレビュー」。
イケてると思ったら「ページの更新」。
ちなみに俺>>526。Wiki初めて使ったけど出来た。
あなたに出来ないはずがない。
0759ベニテス
05/01/25 02:03:290760デフォルトの名無しさん
05/01/25 02:06:040761デフォルトの名無しさん
05/01/25 02:35:30カウントダウンタイマーのJavaウィンドウアプリケーションを作る
数字の表示には画像ファイルを利用
カウントダウンは最低100msec単位で表示
スレッド、JFrameを用いる
0762729
05/01/25 09:09:14>>736さん
データベースの改善ありがとうございました。
バッチリ動作しました。ほんとに助かりました。
これからソースが理解できるように頑張ります。
ちなみに
*where句の式で、< > >= <= の大小比較式を使う時は、そのカラムデータが数字だけで構成
されてないとエラーになります。 id >= 5 はOKだが、name >= '田中' はエラーになる。
にしたのは特別な理由があるのですか?
特に問題はなかったのですが気になったもので...
0763お願いします
05/01/25 09:46:39画像を線形変換、三角波変換、区分変換するための
式をjavaで書くとどうなりますか?
今日の午前11時までにお願いします。m(__)m
0764デフォルトの名無しさん
05/01/25 11:06:01java.image.*
パッケージなどを使ってみては?
0765デフォルトの名無しさん
05/01/25 11:22:07一応、あと30分猶予がありますので(つまり正午まで)
30分以内に上記の回答プログラムをここに掲載してください。
お早めにお願いします。
0766デフォルトの名無しさん
05/01/25 14:32:26あ〜あかわいそうに。ってかなんだその態度は
0767デフォルトの名無しさん
05/01/25 17:31:310768デフォルトの名無しさん
05/01/25 18:27:04丸投げで申し訳ないのですが、どなたか教えていただけませんでしょうか。
課題
HTTPクライアントとサーバをjavaで作る。
URLクラスは使ってはならない
マルチスレッドにする
http://www.lab7.kuis.kyoto-u.ac.jp/~nuka/le2/H16/index.html#BROWSE
上の仕様に従ってクラスをつくる。
詳しくはこちらの総合デモのところをご覧ください
http://www.lab7.kuis.kyoto-u.ac.jp/~nuka/le2/H16/index.html
あとc言語のクライアントとサーバは既に作ってあります。
0769M.B.
05/01/25 20:07:09SQL のスレへ逝け
0770デフォルトの名無しさん
05/01/25 21:22:07CでつくれるくらいならJavaなら余裕では?
>>769
(JLispに期待。)
0771デフォルトの名無しさん
05/01/25 22:14:28何だかゴテゴテ書いてあって、仕様が分からないからムリ。
せめて、ここにまとめて書いてくれ。
0772デフォルトの名無しさん
05/01/25 22:21:23何分Javaは初めてなもんで、どこから手をつけていいかわからないんです。
0773sasa
05/01/25 22:24:34わかりません。これができたら宿題は終わります。
ちなみに画像ファイルはJPGです。お願いします。
0774デフォルトの名無しさん
05/01/25 22:42:06ていうかお主は京大生なのな、いいな。うらやましいな。
0775768
05/01/25 22:51:14課題 JavaによるHTTPクライアントとサーバ
仕様
クライアントの動作
起動後、標準入力からURLを入力し、サーバにコンテンツの転送要求をする。
そして結果を画面に表示する。
結果を出力した後、以下のように選択肢を表示し、そのURL内のリンクをたどれるようにする。
1 http;//www....
2 http://www....
3 http;//www....
1を入力すれば1のURLのhtmlを表示し、また選択肢を表示し、ていう具合です。
サーバの動作
起動後、クライアントからのコネクション待ちにはいる。
クライアントのコネクション確立後、クライアントからのコンテンツ転送要求に応じてコンテンツを転送する。
コネクション待ちの状態に戻る。
マルチスレッドを用いて複数クライアントに対応する。
クライアント、サーバともURLクラスを使わないよう指定されています。
基本的にhtmlだけ表示できればいいです。(cgiとかには対応する必要はありません)
0776771
05/01/25 23:02:09数時間待っててくださいませ。
0777デフォルトの名無しさん
05/01/25 23:49:41JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add(new JLabel(new ImageIcon(StringのファイルパスまたはURLまたはImageなど)), BorderLayout.CENTER);
引数の例
"image.jpg"
new URL("http://www.google.co.jp/intl/ja_jp/images/logo.gif")
BorderLayout.CENTERは省略可能。
0778デフォルトの名無しさん
05/01/25 23:53:03これから書くのか。
密かに応援するよ。
0779>>775クライアント その1
05/01/26 02:07:24import java.util.*;
import java.util.regex.*;
import java.nio.channels.*;
import javax.swing.text.html.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class HW69 {
static JFrame frm = new JFrame();
static JTextField tfd = new JTextField();
static JComboBox cbx = new JComboBox();
static JTextArea tpane = new JTextArea();
static JButton btn = new JButton("移動");
static String baseurl, content;
static java.util.List links;
public static void main(String[] args) {
JFrame frm = new JFrame();
JScrollPane scr = new JScrollPane(tpane);
Box box = Box.createHorizontalBox();
box.add(tfd);
box.add(btn);
JPanel pal = new JPanel(new BorderLayout());
pal.add(cbx, BorderLayout.NORTH);
pal.add(scr);
cbx.setBackground(new Color(255,245,255));
cbx.setFont(new Font("Dialog", 0, 13));
tpane.setBackground(new Color(245, 245, 255));
0780:>>775クライアント その2
05/01/26 02:08:08public void actionPerformed(ActionEvent e) {
try {
requestURL(tfd.getText());
parseContent();
} catch (Exception e1) {
tpane.setText(e1.getMessage()); return;
}
tpane.setText(content);
DefaultComboBoxModel model = new DefaultComboBoxModel(links.toArray());
cbx.setModel(model);
}
});
cbx.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String url = (String) cbx.getSelectedItem();
if (url.length() == 0)
return;
try {
requestURL(url);
parseContent();
} catch (Exception e1) {
tpane.setText(e1.getMessage()); return;
}
tpane.setText(content);
DefaultComboBoxModel model = new DefaultComboBoxModel(links.toArray());
cbx.setModel(model);
tfd.setText(url);
}
});
0781>>775クライアント その3
05/01/26 02:08:47frm.getContentPane().add(box, BorderLayout.NORTH);
frm.setSize(800, 600);
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setVisible(true);
}
static void requestURL(String requrl) throws Exception {
String pat = "(http://([^/:]+):?(\\d*))(/.*)";
Matcher mat = Pattern.compile(pat).matcher(requrl);
if (!mat.find())
throw new Exception("URLが不正です");
baseurl = mat.group(1);
SocketChannel ch;
try {
int port = 80;
if (mat.group(3).length() > 0)
port = Integer.parseInt(mat.group(3));
ch = SocketChannel.open(new java.net.InetSocketAddress(
mat.group(2), port));
0782:>>775クライアント その4
05/01/26 02:09:50sb.append("GET " + mat.group(4) + " HTTP/1.1\r\n");
sb.append("HOST: " + mat.group(2) + "\r\n");
sb.append("User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322)\r\n");
sb.append("Accept: */*\r\n");
sb.append("Accept-Language: ja\r\n\r\n");
ch.write(java.nio.ByteBuffer.wrap(sb.toString().getBytes("ISO-8859-1")));
} catch (Exception e1) {
throw new Exception("接続でエラー発生");
}
String ctype = "";
int length = -1;
DataInputStream in;
try {
in = new DataInputStream(Channels.newInputStream(ch));
String line = in.readLine();
while ((line = in.readLine()).length() > 0) {
String type = line.split(":")[0].trim();
if (type.equalsIgnoreCase("content-type"))
ctype = line.split("[:;]")[1].trim();
else if (type.equalsIgnoreCase("content-length"))
length = Integer.parseInt(line.split(":")[1].trim());
}
} catch (IOException e) {
throw new Exception("ヘッダ読み込みでエラー発生");
}
0783>>775クライアント その5
05/01/26 02:10:25content = new String("htmlファイルではないので表示不可");
} else {
try {
ByteArrayOutputStream btout = new ByteArrayOutputStream();
int size;
byte[] buf = new byte[8000];
while ((size = in.read(buf)) != -1) {
btout.write(buf, 0, size);
if (length != -1) {
length -= size;
if (length <= 0)
break;
}
}
content = new String(btout.toByteArray(), "Shift_JIS");
} catch (Exception e2) {
throw new Exception("コンテンツ読み込みでエラー発生");
}
}
ch.close();
}
0784:>>775クライアント その6
05/01/26 02:11:07HTMLEditorKit kit = new HTMLEditorKit();
HTMLDocument doc = new HTMLDocument();
try {
kit.read(new StringReader(content), doc, 0);
} catch (Exception e) {
throw new Exception("HTMLファイル解析エラー");
}
HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.BASE);
it.next();
if (it.isValid())
baseurl = (String) it.getAttributes().getAttribute("href");
links = new ArrayList();
it = doc.getIterator(HTML.Tag.A);
it.next();
while (it.isValid()) {
Enumeration em = it.getAttributes().getAttributeNames();
while (em.hasMoreElements()) {
Object key = em.nextElement();
if (key.toString().equalsIgnoreCase("href")) {
String url = (String) it.getAttributes().getAttribute(key);
try {
links.add(new java.net.URL(new java.net.URL(baseurl), url)
.toString());
} catch (Exception e1) { }
}
}
it.next();
}
}
}
0785デフォルトの名無しさん
05/01/26 02:16:12遅れてスイマセン。
全部コピペしてコンパイルしてください。
一番上のテキストフィールドにURLを書いて(ctrl+c でコピペできる)
移動ボタンを押すと、そこのHTMLファイルをそのまま表示します。
リンク先はその下のコンボボックスに表示されます。(ページ内に存在した場合)
どれかをクリックするとそのリンク先に飛びます。
0786デフォルトの名無しさん
05/01/26 02:31:33一箇所、URLクラスを使ってますが、それは接続の為でなく
HTML文書内のリンク先が相対URLで書かれてる事がよくあるので
ベースURLと相対URLを合成して絶対URLを求める為だけに
使いました。
接続と送受信、はHttpプロトコルに従ったソケットで行ってます。
0787デフォルトの名無しさん
05/01/26 02:37:34いつも見てるけどすごいですね。
0788デフォルトの名無しさん
05/01/26 03:19:57あと
>>784その6の
if (it.isValid())
baseurl = (String) it.getAttributes().getAttribute("href");
この2行を削除してください。
0789>>775サーバー その1
05/01/26 03:21:04import java.io.*;
public class HW70 {
static StringBuffer content = new StringBuffer();
static boolean endFlag;
public static void main(String[] args) {
try {
BufferedReader file = new BufferedReader(
new InputStreamReader(new FileInputStream(args[0])));
String line;
while ((line = file.readLine()) != null)
content.append(line + "\r\n");
file.close();
} catch (Exception e2) {
System.out.println("コンテンツファイルが指定されてないか不正です");
System.exit(0);
}
ServerSocket ss = null;
try {
ss = new ServerSocket(80);
} catch (Exception e1) {
System.out.println("エラー終了");
System.exit(0);
}
0790>>775サーバー その2
05/01/26 03:21:42try {
Socket sc = ss.accept();
new HttpIO(sc).start();
} catch (IOException e) {
}
}
try {
ss.close();
} catch (IOException e) {
}
System.out.println("終了");
}
static class HttpIO extends Thread {
Socket sc;
HttpIO(Socket sc) {
this.sc = sc;
}
public void run() {
try {
io();
} catch (Exception e) {
} finally {
try {
sc.close();
} catch (IOException e1) {
}
}
}
0791>>775サーバー その3
05/01/26 03:22:43DataInputStream in = new DataInputStream(sc.getInputStream());
String line = in.readLine();
if (!line.split(" ")[0].equalsIgnoreCase("GET"))
return;
if (line.split(" ")[1].equalsIgnoreCase("/end")) {
while (in.readLine().length() > 0);
OutputStream out = sc.getOutputStream();
StringBuffer sb = new StringBuffer();
sb.append("HTTP/1.1 200 OK\r\n");
sb.append("Content-Type: text/html\r\n\r\n");
sb.append("サーバーを終了しました");
out.write(sb.toString().getBytes());
in.close();
out.close();
endFlag = true;
return;
}
while (in.readLine().length() > 0);
OutputStream out = sc.getOutputStream();
StringBuffer sb = new StringBuffer();
sb.append("HTTP/1.1 200 OK\r\n");
sb.append("Content-Type: text/html\r\n\r\n");
sb.append(content);
out.write(sb.toString().getBytes());
in.close();
out.close();
}
}
}
0792デフォルトの名無しさん
05/01/26 03:27:47そのサーバーがコンテンツとする任意のHTMLファイル名を引数にして実行ください。
(無いとエラーになる)
ポート80にバインドされます。
ブラウザで、http://localhost:80 と移動すると先のコンテンツが表示されます。
パスに/endを指定すると(例:http://localhost:80/end)
サーバーが終了します。
0793デフォルトの名無しさん
05/01/26 03:59:58四則演算のボタンがあり入力フィールドが2つと出力フィールドがあり入力フィールドにはそれぞれ起動時に「ここに数字を入力します」と表示させる
電卓アプレットをお願いします
以下のソースを参考に作れと言われたのですが、よくわかりませんでした・・・
明日までにどうかお願いします・・・
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class dentaku extends Applet {
Button btnCulc;
TextField txtA, txtB, txtAnswer;
Label lblPlus;
public void init() {
btnCulc = new Button("=");
btnCulc.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
int intAnswer = Integer.parseInt(txtA.getText()) + Integer.parseInt(txtB.getText());
txtAnswer.setText(Integer.toString(intAnswer));
}});
txtA = new TextField("0", 3);
txtB = new TextField("0", 3);
lblPlus = new Label(" + ");
txtAnswer = new TextField("0", 5);
add(txtA);
add(lblPlus);
add(txtB);
add(btnCulc);
add(txtAnswer);}}
0794793
05/01/26 04:47:25板汚しすいませんでした(_ _)
0795デフォルトの名無しさん
05/01/26 05:55:38これぐらいやる気のある人とプロジェクトくみたい
0796デフォルトの名無しさん
05/01/26 09:29:12import java.applet.Applet;
import java.awt.Graphics;
public class ap1 extends Applet
{
public void paint(Graphics g)
{
g.drawString("ようこそjavaアプレットへ!",10,10);
}
}
//↓HTMLファイル。
<HTML>
<BODY>
<APPLET CODE = "ap1.class" WIDTH = 200 height = 100>
</APPLET>
</BODY>
</HTML>
javaの入門書にあったコードなのですが、アプレットではきちんと表示されるのですが、
ブラウザで開くと灰色の背景だけで文字が表示されません。
ブラウザのせいでしょうか?IE6使用。
0797768
05/01/26 09:40:550798名前は開発中のものです。
05/01/26 11:50:080799デフォルトの名無しさん
05/01/26 19:57:51の課題6、
ttp://www.math.cs.musashi-tech.ac.jp/~arimoto/java2004/0113/index.html
をお願い致します。
0800デフォルトの名無しさん
05/01/26 20:34:31課題1
次の仕様に従って,任意の数値列を読み込み,その平均値,最頻値,中央値,分散,標準偏差,ヒストグラムを表示するプログラムを作成せよ.提出にあたっては,提出用データを用い,階級の幅(ヒストグラムを作成する際の,棒の幅)を10とすること.
・入力
ユーザはプログラムに対し,数値列の入った「データファイル名」と「階級の幅(ヒストグラムを作成する際の,棒の幅)」を入力するものとする.
入力は,起動時のコマンドライン入力,プログラム内でのユーザ入力,のどちらでもよいものとする.
・出力
最頻値,中央値は整数で,平均値,分散,標準偏差は,小数点第3位を四捨五入したものを表示するものとする.
ヒストグラムは,区間と階級を軸に表示するものとする(テキスト,グラフィックのどちらで表示してもよい).
・数値列データおよびデータファイル
数値を,スペースまたはリターンで区切ったテキストファイルとする.
数値は0以上100以内の整数で,個数は100個以内とする.
・提出用データ 20 22 84 56 32 65 96 2 4 100
5 68 55 89 23 45 45 23 32 75
23 65 98 12 45 3 8 50 78 25
33 64 73 46 82 16 34 91 97 41
0801デフォルトの名無しさん
05/01/26 20:36:51次の仕様に従って,任意の数値列を読み込み,その数値列の,(1)95%信頼区間(最小値と最大値),
そこに含まれるデータ個数,含まれるデータの一覧.(2)99%信頼区間(最小値と最大値),そこに含ま
れるデータ個数,含まれるデータの一覧,これら両方を表示するプログラムを作成せよ.提出にあたっては,
提出用データを用いること.
・入力
ユーザはプログラムに対し,数値列の入った「データファイル名」を入力するものとする.
入力は,起動時のコマンドライン入力,プログラム内でのユーザ入力,のどちらでもよいものとする.
・出力
信頼区間の最小値と最大値は,小数点第1位を四捨五入した整数で表示するものとする.
・数値列データおよびデータファイル
数値を,スペースまたはリターンで区切ったテキストファイルとする.
数値は0以上100以内の整数で,個数は100個以内とする.
数値列は,正規分布に従っていると仮定するものとする.
・提出用データ 20 61 68 54 79 90
43 70 56 71 35 58
77 34 88 63 72 49
92 75 61 69 85 82
70 67 82 59 71 66
0802デフォルトの名無しさん
05/01/26 20:37:28次の仕様に従って,2種類の数値系列を読込み,それぞれの平均点,標準偏差と2種類の系列間の相関積和,相関係数を計算するプログラムを作成せよ.提出にあたっては,提出用データを用いること.
・入力
ユーザはプログラムに対し,それぞれの数値列の入った「データファイル名」を2つ入力するものとする.
入力は,起動時のコマンドライン入力,プログラム内でのユーザ入力,のどちらでもよいものとする.
・出力
それぞれの平均点,標準偏差と2種類の系列間の相関積和,相関係数は,小数点第3位を四捨五入したものを表示するものとする.
・数値列データおよびデータファイル
数値を,スペースまたはリターンで区切ったテキストファイルとする.
数値は0以上100以内の整数で,個数は100個以内とする.
次の表はある学生の試験の点数一覧である.
提出用データはこの国語と英語の点数を用いよ.
学生番号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
国語 72 48 55 82 70 32 45 100 76 44 66 84 70 30 91
英語 67 52 68 95 63 58 34 88 67 51 77 66 70 43 88
0803デフォルトの名無しさん
05/01/26 21:51:290804デフォルトの名無しさん
05/01/26 23:50:310805>>799 その1
05/01/27 10:03:13<%@page contentType="text/html; charset=Shift_JIS" pageEncoding="Shift_JIS" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<c:if test="${applicationScope.datasrc == null}">
<sql:setDataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/test"
user="${initParam.username}" password="${initParam.password}" var="datasrc" scope="application" />
</c:if>
<c:set var="tableFlag" value="false" />
<sql:query dataSource="${datasrc}" var="tables" sql="show tables;" />
<c:forEach var="row" items="${tables.rows}">
<c:if test="${row.Tables_in_test == 'image'}">
<c:set var="tableFlag" value="true" />
</c:if>
</c:forEach>
<c:if test="${tableFlag != true}">
<sql:update dataSource="${datasrc}">
create table image (image varchar(255) primary key, thumb varchar(255),
name blob, title blob, comment blob, time timestamp);
</sql:update>
</c:if>
<c:if test="${param.post == true}">
<jsp:useBean id="formParser" class="ib.FormParser">
<jsp:setProperty name="formParser" property="in" value="${pageContext.request.inputStream}" />
<jsp:setProperty name="formParser" property="bound" value="<%= request.getHeader("Content-Type") %>" />
<jsp:setProperty name="formParser" property="context" value="${pageContext.servletContext}" />
<c:set var="formData" value="${formParser.formData}" />
<c:if test="${formData.error != null}">
<c:redirect url="/?error=${formData.error}" />
</c:if>
0806>>799 その2
05/01/27 10:04:18<sql:update dataSource="${datasrc}">
insert into image values (?, ?, ?, ?, ?, ?);
<sql:param value="${formData.image}" /> <sql:param value="${formData.thumb}" />
<sql:param value="${formData.name}" /> <sql:param value="${formData.title}" />
<sql:param value="${formData.comment}" /> <sql:param value="${formData.time}" />
</sql:update>
</jsp:useBean>
<c:redirect url="/" />
</c:if>
<sql:query var="rowList" dataSource="${datasrc}" sql="select count(*) as cnt from image;" />
<c:set var="imageCount" value="${rowList.rows[0].cnt}" />
<c:set var="pageno" value="${0}" />
<c:if test="${param.page != null}">
<c:set var="pageno" value="${param.page}" />
</c:if>
<sql:query var="rowList" dataSource="${datasrc}">
select * from image order by time desc limit ${pageno * 5},${pageno * 5 + 5};
</sql:query>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="pragma" content="no-cache">
0807>>799 その3
05/01/27 10:05:41<style type="text/css"><!--
.caption { font: bold medium fantasy; background-color: rgb(180,180,240); text-align: center;
position: relative; left: 20%; width: 60%; padding: 16px 0px; filter: alpha(style=2); white-space: nowrap; }
.form { border: dashed rgb(180,240,180) 2px; background-color: rgb(245,255,245); }
.imgframe { border: dashed rgb(180,180,240) 2px; width: 600px; }
td { font: 12px monospace; white-space: nowrap; }
.image { vertical-align: top; float: left; }
.label { width: 33%; color: rgb(0,0,120); background-color: rgb(245,245,255); }
.bg { height: 160px; vertical-align: center; }
.error { font: medium monospace; color: red; }
--></style>
</head>
<body>
<div class="caption"> 画像掲示板 </div><br>
<form action="/ib/ib.jsp?post=true" method="POST" enctype="multipart/form-data">
<table align="center" class="form">
<tr><td colspan="2" style="text-align: center;"> 画像投稿フォーム </td></tr>
<tr><td> 送信画像 </td> <td> <input type="file" name="file" size="70"> </td></tr>
<tr><td> 名前 </td> <td> <input type="text" name="name" size="80" maxlength="20"> </td></tr>
<tr><td> タイトル </td> <td> <input type="text" name="title" size="80" maxlength="20"> </td></tr>
<tr><td> コメント </td> <td> <textarea name="comment" rows="6" cols="55"> </textarea> </td></tr>
<tr><td colspan="2" style="text-align: right;"> *画像ファイル以外は省略可
<input type="submit" value="送信する"> </td></tr>
</table>
<div align="center" class="error"> <c:out value="${param.error}" /> </div>
</form>
0808>>799 その4
05/01/27 10:06:38<div align="center">
<c:choose>
<c:when test="${pageno <= 0}"> 前のページ   </c:when>
<c:otherwise> <a href="/ib?page=${pageno - 1}"> 前のページ </a>   </c:otherwise>
</c:choose>
<c:choose>
<c:when test="${imageCount - (pageno + 1) * 5 <= 0}"> 次のページ   </c:when>
<c:otherwise> <a href="/ib?page=${pageno + 1}"> 次のページ </a>   </c:otherwise>
</c:choose>
</div><br>
<c:forEach var="row" items="${rowList.rows}">
<table align="center" class="imgframe">
<tr>
<td class="label"> タイトル  
<%= new String((byte[]) ((java.util.Map) pageContext.getAttribute("row")).get("title"), "Shift_JIS") %>
</td>
<td class="label"> 投稿者  
<%= new String((byte[]) ((java.util.Map) pageContext.getAttribute("row")).get("name"), "Shift_JIS") %>
</td>
<td class="label"> 投稿日時   ${row.time} </td>
</tr>
<tr><td colspan="2" class="bg">
<a href="/ib/${row.image}" target="_blank"> <img src="/ib/${row.thumb}" class="image"> </a>
コメント <br><br>
<%= new String((byte[]) ((java.util.Map) pageContext.getAttribute("row")).get("comment"), "Shift_JIS") %>
</td></tr>
</table><br>
</c:forEach>
</body>
</html>
0809>>799 その5
05/01/27 10:08:22package ib;
import javax.servlet.*; import java.io.*;
import java.util.*; import java.util.regex.*;
import java.nio.*; import java.awt.image.*; import javax.imageio.*;
public class FormParser {
private ServletInputStream in;
private String bound;
private Map formData = new TreeMap();
private ServletContext context;
synchronized private long issueID() {
try {
Thread.sleep(1);
} catch (InterruptedException e) { }
return System.currentTimeMillis();
}
public void setContext(ServletContext context) {
this.context = context;
}
public void setIn(ServletInputStream in) {
this.in = in;
}
public void setBound(String bound) {
Matcher mat = Pattern.compile("boundary=(.+)").matcher(bound);
if (mat.find())
this.bound = mat.group(1);
}
0810>>799 その6
05/01/27 10:09:30public Map getFormData() {
boolean more = true;
try {
while (more)
more = extract();
} catch (Exception e) {
formData.put("error", e.getMessage());
return formData;
}
return formData;
}
private boolean extract() throws Exception {
boolean more;
byte[] buffer = new byte[8000];
byte[] bHead = (byte[]) ("--" + bound + "\r\n").getBytes("ISO-8859-1");
byte[] bTail = (byte[]) ("--" + bound + "--\r\n").getBytes("ISO-8859-1");
int size = 0;
StringBuffer sb = new StringBuffer();
while (true) {
size = in.readLine(buffer, 0, buffer.length);
if (size == -1)
throw new Exception("Data stream error");
if (ByteBuffer.wrap(buffer, 0, size).equals(ByteBuffer.wrap(bHead)))
continue;
if (ByteBuffer.wrap(buffer, 0, size).equals(ByteBuffer.wrap(bTail)))
return false;
String line = new String(buffer, 0, size, "Shift_JIS");
sb.append(line);
if (line.equals("\r\n"))
break;
}
0811>>799 その7
05/01/27 10:10:39Map map = new TreeMap();
Scanner sc = new Scanner(sb.toString());
Pattern pat1 = Pattern.compile("([\\w\\-]+):([^;,\r\n]+)(;|,|\r\n)");
Pattern pat2 = Pattern.compile("([\\w\\-]+)= *\"(.*?)\" *(;|,|\r\n)");
Matcher mat = pat1.matcher(sb.toString());
boolean flag = false;
int idx = 0;
while (true) {
if (!flag)
mat.usePattern(pat1);
else
mat.usePattern(pat2);
if (!mat.find(idx))
break;
map.put(mat.group(1).trim(), mat.group(2).trim());
if (mat.group(3).equals("\r\n"))
flag = false;
else
flag = true;
idx = mat.end();
}
int offset = 0;
ByteArrayOutputStream btOut = new ByteArrayOutputStream();
0812>>799 その8
05/01/27 10:11:38while (true) {
size = in.readLine(buffer, offset, buffer.length - offset);
if (size == -1)
throw new Exception("Data stream error");
if (offset + size == buffer.length) {
if (buffer[buffer.length - 2] != 0x0d || buffer[buffer.length - 1] != 0x0a) {
btOut.write(buffer, offset, size);
System.arraycopy(buffer, buffer.length - bTail.length, buffer, 0, bTail.length);
offset = bTail.length;
continue;
}
}
if (size >= bTail.length) {
ByteBuffer view = ByteBuffer.wrap(buffer, size - bTail.length, bTail.length);
if (view.equals(ByteBuffer.wrap(bTail))) {
btOut.write(buffer, 0, size - bTail.length);
more = false;
break;
}
}
if (size >= bHead.length) {
ByteBuffer view = ByteBuffer.wrap(buffer, size - bHead.length, bHead.length);
if (view.equals(ByteBuffer.wrap(bHead))) {
btOut.write(buffer, 0, size - bHead.length);
more = true;
break;
}
}
btOut.write(buffer, offset, size);
offset = 0;
}
0813>>799 その9
05/01/27 10:12:39ByteArrayOutputStream newb = new ByteArrayOutputStream();
newb.write(btOut.toByteArray(), 0, btOut.size() - 2);
btOut.reset();
if (!map.get("name").equals("file")) {
formData.put(map.get("name"), newb.toByteArray());
return more;
}
if (newb.size() == 0)
throw new Exception("No image error, You must choose image file");
BufferedImage img = null;
try {
img = ImageIO.read(new ByteArrayInputStream(newb.toByteArray()));
} catch (IOException e) {
throw new Exception("File format error, ImageFile is invalid");
}
long id = issueID();
formData.put("time", new java.sql.Timestamp(id));
String ids = String.valueOf(id);
String ext = "";
mat = Pattern.compile("\\..+$").matcher((String) map.get("filename"));
if (mat.find())
ext = mat.group();
File filename = new File(context.getRealPath(ids + ext));
BufferedOutputStream file = new BufferedOutputStream(new FileOutputStream(filename));
file.write(newb.toByteArray());
file.close();
formData.put("image", filename.getName());
0814>>799 その10
05/01/27 10:13:56filename = new File(context.getRealPath(ids + "_s" + ext));
file = new BufferedOutputStream(new FileOutputStream(filename));
int iw = img.getWidth();
int ih = img.getHeight();
if(iw > 160 || ih > 160) {
BufferedImage img2=null;
double num = (double) Math.min(iw, ih) / Math.max(iw, ih);
double w = (iw >= ih) ? (double) 160 / iw : (double) 160 * num / iw;
double h = (ih >= iw) ? (double) 160 / ih : (double) 160 * num / ih;
AffineTransformOp affine=new AffineTransformOp(
java.awt.geom.AffineTransform.getScaleInstance(w,h),
AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
img2 = affine.filter(img, null);
ImageIO.write(img2, "jpeg", file);
} else {
ImageIO.write(img, "jpeg", file);
}
file.close();
formData.put("thumb", filename.getName());
return more;
}
}
0815>>799 その11
05/01/27 10:16:29<?xml version="1.0" encoding="Shift_JIS" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2e"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4" >
<context-param>
<param-name> username </param-name>
<param-value> root </param-value>
</context-param>
<context-param>
<param-name> password </param-name>
<param-value> root </param-value>
</context-param>
<welcome-file-list>
<welcome-file> /ib.jsp </welcome-file>
</welcome-file-list>
</web-app>
0816デフォルトの名無しさん
05/01/27 11:48:32ツールバーをコンテナに追加したいのですが、
その際、BorderLayoutで配置させる必要があると調べました。
しかし、コンテナのsetLayoutをnullにしてあるので、
BorderLayoutでの配置ができません。
この場合、どうしたらよいのでしょうか?
0817デフォルトの名無しさん
05/01/27 13:15:11BorderLayoutのCENTERの部分のレイアウトをNULLにする
0818デフォルトの名無しさん
05/01/27 13:44:36ご回答ありがとうございます。
もう少し詳しく教えていただけないでしょうか?
0819デフォルトの名無しさん
05/01/27 13:50:53こっちは宿題を答えるスレなのでJava質問・相談スレッドの方に行ってくれ
0820デフォルトの名無しさん
05/01/27 14:04:09すいません。そうします。
0821デフォルトの名無しさん
05/01/27 19:11:03を何とぞお願い致します・・・・M(_ _)m
0822デフォルトの名無しさん
05/01/27 22:19:01お願いorz
0823おながいします。
05/01/27 22:54:45A.txtがない場合、引数のディレクトリの下位ディレクトリから探す。
A.txtを取得したら、その中の"aaa"という文字列を"bbb"に書き換える。
よろしくおながいします。漏れには無理です……。
0824デフォルトの名無しさん
05/01/27 23:57:51public static void main(String[] args) throws Exception {
String fileName = searchFile(args[0], "A.txt");
if (fileName == null) {
System.out.println("見つかりません");
System.exit(1);
}
BufferedReader br = new BufferedReader(new FileReader(
new File(fileName)));
String str = "";
while (br.ready()) {
str += br.readLine() + "\n";
}
br.close();
str = str.replaceAll("aaa", "bbb");
FileOutputStream fos = new FileOutputStream(new File(fileName));
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter out = new BufferedWriter(osw);
out.write(str);
out.flush();
fos.close();
osw.close();
out.close();
System.out.println("変えました。");
}
0825デフォルトの名無しさん
05/01/27 23:58:43File file = new File(path);
File[] listFiles = file.listFiles();
for (int i = 0; i < listFiles.length; i++) {
if (listFiles[i].isDirectory()) {
String goal = searchFile(listFiles[i].getAbsolutePath(),
fileName);
if (goal != null) {
return goal;
}
} else {
if (listFiles[i].getName().equals(fileName)) {
return listFiles[i].getAbsolutePath();
}
}
}
return null;
}
0826tatata
05/01/28 15:38:54今考えているのは 64人のトーナメント制です。
つきましては 魅力的なオセロゲームのプログラムと、スムーズに
進行できるような インターフェースを考えてくれませんか?
0827デフォルトの名無しさん
05/01/28 17:45:510828虚数を配列を使って表現する
05/01/28 21:24:44現在学校で取り組んでるプロジェクトの中で出てくるプログラム「
虚数クラス」で、配列を利用して虚数を表現(a + bi の型)するのですが、
toString関数 http://java.sun.com/j2se/1.3/docs/api/
この虚数をStringで返すtoString関数の使い方がいまいちわかりません。
API読みましたが、シンタックスのレベルでの使い方がいまいちです。
よろしくお願いします。
0829デフォルトの名無しさん
05/01/28 22:08:53http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/Object.html#toString()
toString()はそのクラスオブジェクトの文字列表現を返すメソッドです。
虚数クラスだったらa+biの形の文字列を帰せばいいのでは?
0830デフォルトの名無しさん
05/01/28 23:02:53getClass().getName() + '@' + Integer.toHexString(hashCode())
はどういう意味なのでしょうか?
0831デフォルトの名無しさん
05/01/28 23:22:49getClass().getName() + '@' + Integer.toHexString(hashCode())
このオブジェクトのクラスを取得し名前をStringで取得。
charの@を付加。
このオブジェクトのハッシュコードの16進表現Stringを付加。
虚数をint[2]の配列で表現しているのなら
public String toString(){
return Integer.toString(i[0])+"+"+i[1]+"i";
}
みたいな感じでいいんでないでしょか。
0832デフォルトの名無しさん
05/01/28 23:41:15すると、getClass().getName() + '@' + Integer.toHexString(hashCode()) の
Integer.toHexString(hashCode()) の部分が return される部分ということですね。
ハッシュコードの16進表現String、というのはこの場合、数値(double)の、表示上
は数値のString化という理解の仕方でよろしいのでしょうか?
0833デフォルトの名無しさん
05/01/28 23:49:34全体がreturnされます。
また、ハッシュコードはintの整数値であり、
この場合、これを16進表現したStringが連結されます。
0834デフォルトの名無しさん
05/01/29 00:05:45また調べて何かわからないことがあったら質問させてください。
どうも有り難うございました。
0835デフォルトの名無しさん
05/01/29 01:28:01質問スレ行って。
http://pc5.2ch.net/test/read.cgi/tech/1105691367/
0836デフォルトの名無しさん
05/01/29 20:00:08と科目ごとおよび総得点の平均点を出力するプログラム。
1234567 83 78 82
1234568 79 82 73
1234569 76 80 71
:
:
1234590 72 78 80
<結果の表示例>
学籍番号 国語 数学 英語 合計
--------------------------------
1234567 83 78 82 243
1234568 79 82 73 234
1234569 76 80 71 237
:
:
1234590 72 78 80 230
-------------------------------
平均 73.2 75.4 77.8 225.4
read_student:学籍番号、得点を格納
print_student:氏名と得点を出力
calc_total_of_student:生徒一人について総得点を計算
add_student_to_sum:生徒一人分の得点を合計点に積算
(2)(1)に継承を用いて、成績を国語、数学、英語の3教科から理科、社会を加えた5教科に拡
張せよ。
(3)(1)(2)それぞれファイル入力にし、生徒ごとの全科目の総得点と科目ごとおよび総得
点の平均点を追加したファイルを出力するプログラム。
0837デフォルトの名無しさん
05/01/29 22:38:44できた。今から貼ります。
0838837
05/01/29 23:04:28http://www.wikiroom.com/java/?%A5%BD%A1%BC%A5%B9%C5%BD%A4%EA%C9%D5%A4%B13
0839デフォルトの名無しさん
05/01/30 00:07:32・ナップザック問題:それぞれ異なる大きさと価格が割り当てられているn個の荷物と、制限された容量を持つナップザックが与えられた時、
価格の和が最大となるようにナップザックに詰めこめる荷物を選べ。
教えていただけませんか、よろしくお願いします
0840デフォルトの名無しさん
05/01/30 01:08:16一つ聞きたいのだが、それは本気で依頼をしてるのですか?
返答次第では作成してもいいのだが・・・
0841デフォルトの名無しさん
05/01/30 08:55:27実行できる環境にいないので実行して問題があれば
またお願いします
0842デフォルトの名無しさん
05/01/30 15:23:05お願いします。
0844デフォルトの名無しさん
05/01/30 16:01:46これ以上詳しくしたら一行ごとにコメント書くことになりそうな予感。
0846デフォルトの名無しさん
05/01/30 16:19:540847tatata
05/01/30 17:42:09学校が休みに入り なにか楽しい事がやりたいと思い 考えましたが
なにぶん 知識を 技術もほとんど無く、困っていた時にここを知りました。
どうにか お願いできないでしょうか。
0848デフォルトの名無しさん
05/01/30 18:08:30既にあるからリサーチから始めなさい
0849tatata
05/01/30 18:17:22ありがとう ございました。 探してみます。
0850837
05/01/30 18:19:29コメント書いた。これ以上詳しく書けと言われたらたぶんキレます。
http://www.wikiroom.com/java/?%A5%BD%A1%BC%A5%B9%C5%BD%A4%EA%C9%D5%A4%B13
0851kkk
05/01/30 18:24:180852デフォルトの名無しさん
05/01/30 18:24:32(1)は実行できたのですが(2)はエラーがでて
実行できませんでした。どこがだめなんでしょう?
0854デフォルトの名無しさん
05/01/30 18:29:300855デフォルトの名無しさん
05/01/30 18:35:04"23 0 165\n"
…
こういうデータがそれぞれ1行の配列として与えられたとき、
int Age[50000];
int Sex[50000];
int Height[50000];
この3つの変数に順に代入していくにはどういう文を書けばいいんですか?
てか Java には scanf みたいな機能って付いてないんですか?
0856デフォルトの名無しさん
05/01/30 18:37:06質問スレに池
0857デフォルトの名無しさん
05/01/30 18:37:44�@ 問題文は自己省略せずに、直接全部貼り付けてください。
宿題&課題をそのまま丸投げするのが、一番好ましい提示法です。
�A 数学問題は何々法でせよだけでなく、その解を出す為の数式を
具体的に詳細に説明してください。
ただ、数学問題の回答率は低いです・・・。
�B 宿題&課題とその回答プログラムに対する質問はOKですが、
それ以外の質問はここではしないでください。
�C JavaScriptなど、他言語の課題はやめてください。
�D もし自分の提示課題への回答プログラムが返って来たら、
動いた動かなかった位の返レスをお願いします。
�E コードをwikiに張ることは禁止です。
0858デフォルトの名無しさん
05/01/30 18:39:40六箇条じゃん
0859デフォルトの名無しさん
05/01/30 18:40:04ScoreEx.java:76 'class'または'interface'がありません
import java.io.BufferedReader;
^
ScoreEx.java:77 'class'または'interface'がありません
import java.io.IOException;
^
ScoreEx.java:78 'class'または'interface'がありません
import java.io.InputStreamReader;
^
ScoreEx.java:79 'class'または'interface'がありません
import java.util.ArrayList;
^
ScoreEx.java:80 'class'または'interface'がありません
import java.util.Iterator;
^
ScoreEx.java:81 'class'または'interface'がありません
import java.util.StringTokenizer;
^
0861デフォルトの名無しさん
05/01/30 19:30:47Javaを実行できる環境を持っているのなら、簡単なサーバープログラムを
作りますが・・・
0862デフォルトの名無しさん
05/01/30 19:33:41Javaを実行&コンパイルできる環境を持っているのなら、
簡単なサーバープログラムを 作りますが・・・
0863デフォルトの名無しさん
05/01/30 19:46:25URLConnectionとgetHeaderFieldをつかってヘッダ情報を取得するまでは出来ました。
そこから先、ドキュメント部分の情報を取得したいのですが、どうすればいいかわかりません。
0864デフォルトの名無しさん
05/01/30 19:54:100865デフォルトの名無しさん
05/01/30 19:56:53URLConnectionとgetOutputStreamでgoogleったらそれらしきページが見つかりました
ありがとうございますm( )m
0866デフォルトの名無しさん
05/01/30 19:57:54レイアウトは下記の通りとし、情報の登録が1つ終わった
時点でプログラム終了させる。
入力画面:
情報を入力してください。
番号:
名前:
情報を登録しました。
出力ファイルレイアウト:
――――――――――――
番号:1
名前:aaa
番号:2
名前:bbb
番号:3
名前:ccc
――――――――――――
という課題です。どうかよろしくおねがいします。
0867デフォルトの名無しさん
05/01/30 20:24:440868デフォルトの名無しさん
05/01/30 21:14:22ScoreEx.javaの76行より前には何が書いてあるの?
コピペミスじゃないの?
ScoreEx.javaというファイルを作ってWikiからそのままコピペすれば
そんなことにはならない。
0869デフォルトの名無しさん
05/01/30 21:16:50import java.io.*;
public class Q866 {
private static final File FILE = new File("file866.txt");
private static final String LINE_STRING = "――――――――――――";
StringBuffer buf = new StringBuffer();
String id;
String name;
public static void main(String[] args) {
Q866 self = new Q866();
try {
self.open(FILE);
self.start();
self.write(FILE);
} catch( IOException ioe ) {
ioe.printStackTrace();
}
}
private void open(File file) throws IOException {
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while( (line=br.readLine())!=null ) {
if( !line.equals(LINE_STRING) ) buf.append(line + "\n");
}
} catch( FileNotFoundException fnfe ) {
System.out.println( FILE.getName() + "がないので作成します。" );
if(file.createNewFile()) open(file);
}
}
0870デフォルトの名無しさん
05/01/30 21:17:32つづき
private void start() throws IOException {
System.out.println("情報を入力してください。");
System.out.print("番号:");
BufferedReader br1 = new BufferedReader(new InputStreamReader(System.in));
id = br1.readLine();
System.out.print("名前:");
BufferedReader br2 = new BufferedReader(new InputStreamReader(System.in));
name = br2.readLine();
}
private void write(File file) throws IOException {
buf.append("番号:" + id + "\n");
buf.append("名前:" + name + "\n\n");
BufferedWriter bw = null;
try {
bw = new BufferedWriter(new FileWriter(file));
bw.write(LINE_STRING + "\n");
bw.write(buf.toString());
// bw.write("\b" + LINE_STRING + "\n");
bw.write(LINE_STRING + "\n");
} catch( IOException ioe ) {
ioe.printStackTrace();
} finally {
if( bw != null ) bw.close();
}
}
}
\bのバックスペースがうまくきかない。。
0871デフォルトの名無しさん
05/01/30 21:49:47ありがとうございました。
やっと寝れそうです・・・
0872デフォルトの名無しさん
05/01/30 21:57:160873デフォルトの名無しさん
05/01/30 21:57:43わざわざWikiに、(1)(2)(3)とファイルごとに項目を分けて書いてくれて、
各ファイルの名前までコメントに書いてくれた親切な回答を受け取っておきながら、
なんですべて一つのファイルにまとめるんだよ。
ScoreEx.javaは72行しかないのにどうやって76行目でエラー出すんだよ。魔法か?
念力か?
(1)(2)(3)それぞれ別ファイルに分けろや。
0874デフォルトの名無しさん
05/01/30 22:17:31C:\java>javac ScoreEx.java
ScoreEx.java:4: シンボルを解決できません。
シンボル: クラス Score
場所 : ScoreEx の クラス
public class ScoreEx extends Score {
^
ScoreEx.java:16: シンボルを解決できません。
シンボル: メソッド getClass ()
場所 : ScoreEx の クラス
System.out.println( self.getClass().getName() );
^
ScoreEx.java:18: シンボルを解決できません。
シンボル: メソッド read_student ()
場所 : ScoreEx の クラス
self.read_student();
^
ScoreEx.java:32: シンボルを解決できません。
シンボル: 変数 super
場所 : ScoreEx の クラス
super.print_student_loop();
^
ScoreEx.java:34: シンボルを解決できません。
シンボル: メソッド getAllList ()
場所 : ScoreEx の クラス
int count = getAllList().size();
システムリソースが不足しています。
詳細は次のスタックトレースで調査してください。
java.lang.OutOfMemoryError
0875デフォルトの名無しさん
05/01/30 22:25:10ScoreExはScoreを継承しているのだから、コンパイルするにも実行するにも
Score.classがクラスパスに必要。
クラスパスって何?とか言うつもりなら、とりあえずScore.javaもScoreEx.javaも
同じフォルダに置いて、先にScore.javaをコンパイルしてから、ScoreEx.javaを
コンパイルしろ。
0876デフォルトの名無しさん
05/01/30 22:28:37String OTZ = 何か入ってる , orz = 何か入ってる;
OTZ = orz;
じゃだめでつか?
0877デフォルトの名無しさん
05/01/30 22:31:11C:\java>javac Score.java
C:\java>javac ScoreEx.java
ScoreEx.java:4: シンボルを解決できません。
シンボル: クラス Score
場所 : ScoreEx の クラス
public class ScoreEx extends Score {
^
ScoreEx.java:16: シンボルを解決できません。
シンボル: メソッド getClass ()
場所 : ScoreEx の クラス
System.out.println( self.getClass().getName() );
^
ScoreEx.java:18: シンボルを解決できません。
シンボル: メソッド read_student ()
場所 : ScoreEx の クラス
self.read_student();
0878デフォルトの名無しさん
05/01/30 22:35:31コマンドブロンプトで
set classpath
と打った結果を表示してくれ
0879デフォルトの名無しさん
05/01/30 22:36:27CLASSPATH=C:\Program Files\pcdNavi\bin\pcdnavi.zip;
0880デフォルトの名無しさん
05/01/30 22:37:27質問スレ行って。
0881デフォルトの名無しさん
05/01/30 22:39:05set classpath=%classpath%;.
と入力してからやってくれ
0882881
05/01/30 22:39:45最後のドットを見落とさないように
0883デフォルトの名無しさん
05/01/30 22:43:21つきやる時(コマンドプロンプトを終了した時、PCの電源切ったとき)は
またset classpath=%classpath%;.と入力しなくちゃいけないんですか?
0884デフォルトの名無しさん
05/01/30 22:47:150885デフォルトの名無しさん
05/01/30 22:55:39OSによって違ってくるんで環境変数なりautoexec.batなりでぐぐれ
0886デフォルトの名無しさん
05/01/30 23:10:17せっかくやってもらったんですが
出力ファイルレイアウト:
――――――――――――
番号:1
名前:aaa
番号:2
名前:bbb
番号:3
名前:ccc
――――――――――――
の部分の上下のラインが邪魔といわれてしまって
自分で書き換えてみたのですが、実行するごとに
ファイルが上書きされてしまってうまくいかないんです。
どうにかならないでしょうかorz
、
0888デフォルトの名無しさん
05/01/30 23:15:49winXPで、tomcatを動かそうとしたんです。
JAVA_HOMEが設定されていないので、tomcat起動できないんですよ。
でautoexec.batを捜したら、ないんですよ。。。
みなさんは、どこに設定してますか?
0889デフォルトの名無しさん
05/01/30 23:17:01システムプロパティ→環境変数
0890デフォルトの名無しさん
05/01/30 23:17:220891デフォルトの名無しさん
05/01/30 23:21:06おお、configもない!!
ま、configはすでに実質的に書き換えることなく7,8年過ごしていたから、
違和感はなかったです、はい。
やっぱ環境変数なのですね、ありがとうございます。
少し、システマティックな人間にverUpしてみます。
0892869
05/01/30 23:24:59フィールド宣言の
private static final String LINE_STRING = "――――――――――――";
を削除。
open()メソッドの
if( !line.equals(LINE_STRING) )
を削除。
write()メソッドの
bw.write(LINE_STRING + "\n");
を削除(2箇所あります)。
でどーでしょ。
つーか出題者が悪いよコレは。。。
0894デフォルトの名無しさん
05/01/31 00:33:22国語、数学、英語各200人分(学籍番号1〜200)の成績データファイル
(score.dat)をプログラムに読み込み、以下の条件を満たす、
また処理を行うことが可能な成績処理プログラムを作成しなさい。
1.個人の3教科の平均点(小数点第2位を四捨五入)の算出と表示
2.各教科の平均点の算出(小数点第2位を四捨五入)
3.各教科の最高点、最低点の検出
4.3教科の合計点数の良い順に並べ替え、学籍番号、各教科得点、
合計点数と並べて表示させる
5.メニュー画面を設ける
6.各処理においてメソッドを分割し、オブジェクト指向を確立したプログラムとする
読み込むデータファイルscore.datは
Japanese
72
99
Math
88
48
English
13
77
こんな縦一列のデータです。数字は省略しましたが各200ずつ計600で、
データ数はJapanese・Math・Englishの行含め全部で603です。
上から順に出席番号1番2番・・・200番となります。
外部から読み込んだファイルデータ、しかも数値と文字の混じったデータの
数値だけ抜き出しての配列変換の仕方がまずわかりません。
ご教授下さい。
0895894
05/01/31 00:35:50ttp://jp.y42.briefcase.yahoo.co.jp/bc/hsawqipg/lst?&.dir=/%a5%de%a5%a4%a5%c9%a5%ad%a5%e5%a5%e1%a5%f3%a5%c8&.src=bc&.view=l&.last=1
0896デフォルトの名無しさん
05/01/31 01:00:11歴史に名を刻むのか。
0897デフォルトの名無しさん
05/01/31 01:36:48それはむしろ構造化プログラミングの範囲内だと思うのだが・・・
0898デフォルトの名無しさん
05/01/31 12:34:45ゲームの種類は自由にするとの課題が出ました。
お願いします
0899894
05/01/31 21:17:09成績だけ読み込んで配列に割り当てたんですが、
文字列型のデータを数値に変換する方法がわかりません。
import java.io.*;
public class java05 {
public static void main(String args[]) throws IOException{
String ss;
int i=0, j=0, k=0, m=0, n=0, x=0;
int data[] =new int[200];
String a[][] =new String[4][201];
BufferedReader fin = new BufferedReader(
new FileReader("score.dat"));
for(i=1; i<=3; i++){
for(j=0; j<=200; j++){
ss=fin.readLine();
if(j!=0){
a[i][j]=ss;
System.out.println("("+i+","+j+")="+a[i][j]);
}
}
}
fin.close();
}
}
どうか、よろしくお願いします…
0900デフォルトの名無しさん
05/01/31 22:00:47Integer.parseInt()
などを使ってみてはいかがか。
0901デフォルトの名無しさん
05/01/31 22:21:24>5.メニュー画面を設ける
正直この一行でやる気が一気になくなる。
0902894
05/01/31 22:33:13ありがとうございます。この2行追加したらちゃんと
数値に変換できました。
int data[][] =new int[4][201];
data[i][j]=Integer.parseInt(ss);
>>901
申し訳ありません…
各処理ごとのメソッドだけでもお助けくださると
嬉しいです
0903901
05/01/31 22:46:35途中までやったんで後は神を待って。4と5がまだ。
import java.io.*; import java.util.*;
public class Q894 {
private static final File FILE = new File("score.dat");
private static final String JAPANESE = "Japanese";
private static final String MATH = "Math";
private static final String ENGLISH = "English";
private static final int HEAD_COUNT = 200;
ArrayList japaneseList = new ArrayList(HEAD_COUNT);
ArrayList mathList = new ArrayList(HEAD_COUNT);
ArrayList englishList = new ArrayList(HEAD_COUNT);
public static void main(String[] args) {
Q894 self = new Q894();
try {
self.read(FILE);
for( int i=0; i<HEAD_COUNT; i++ ) {
System.out.println( (i+1) + "さんの平均点:" + Math.round(self.calculatePersonScore(i)*10.0/3)/10.0 );
}
System.out.println( "国語平均点:" + self.calculateScoreAverage(self.japaneseList) );
System.out.println( "数学平均点:" + self.calculateScoreAverage(self.mathList) );
System.out.println( "英語平均点:" + self.calculateScoreAverage(self.englishList) );
System.out.println( "国語最高点:" + self.getMax(self.japaneseList) );
System.out.println( "国語最低点:" + self.getMin(self.japaneseList) );
System.out.println( "数学最高点:" + self.getMax(self.mathList) );
System.out.println( "数学最低点:" + self.getMin(self.mathList) );
System.out.println( "英語最高点:" + self.getMax(self.englishList) );
System.out.println( "英語最低点:" + self.getMin(self.englishList) );
} catch( IOException ioe ) {
ioe.printStackTrace();
}
}
0904901
05/01/31 22:47:11private void read(final File file) throws IOException {
BufferedReader br = null;
try {
br = new BufferedReader(new FileReader(file));
String line;
int i=0; int j=0; int k=0;
// 国語読み込み
if(!br.readLine().equals(JAPANESE)) System.exit(1);
while( !(line=br.readLine()).equals(Q894.MATH) ) {
japaneseList.add( new Integer(line) );
i++;
}
if( i!=HEAD_COUNT ) throw new IllegalArgumentException("国語の受験者数が変です");
// 数学読み込み
while( !(line=br.readLine()).equals(Q894.ENGLISH) ) {
mathList.add( new Integer(line) );
j++;
}
if( j!=HEAD_COUNT ) throw new IllegalArgumentException("数学の受験者数が変です");
// 英語読み込み
while( (line=br.readLine()) != null ) {
englishList.add( new Integer(line) );
k++;
}
if( k!=HEAD_COUNT ) throw new IllegalArgumentException("英語の受験者数が変です");
} catch( FileNotFoundException fnfe ) {
fnfe.printStackTrace();
} catch( IOException ioe ) {
ioe.printStackTrace();
} catch( NumberFormatException nfe ) {
nfe.printStackTrace();
0905901
05/01/31 22:48:09} catch( IllegalArgumentException iae ) {
iae.printStackTrace();
} finally {
if( br!=null ) br.close();
}
}
private int calculatePersonScore(int pos) {
int japaneseScore = ((Integer)japaneseList.get(pos)).intValue();
int mathScore = ((Integer)mathList.get(pos)).intValue();
int englishScore = ((Integer)englishList.get(pos)).intValue();
return japaneseScore+mathScore+englishScore;
}
private double calculateScoreAverage(ArrayList scoreList) {
Iterator iterator = scoreList.iterator();
int sum = 0;
while(iterator.hasNext()) {
sum += ((Integer)iterator.next()).intValue();
}
return Math.round( sum*10.0 / scoreList.size() )/10.0;
}
private int getMax(ArrayList scoreList) {
Integer[] scores = (Integer[])scoreList.toArray(new Integer[0]);
Arrays.sort(scores);
return scores[HEAD_COUNT-1].intValue();
}
private int getMin(ArrayList scoreList) {
Integer[] scores = (Integer[])scoreList.toArray(new Integer[0]);
Arrays.sort(scores);
return scores[0].intValue();
}
}
0906デフォルトの名無しさん
05/02/01 00:13:56問題1
コマンドライン引数として受け取った四則演算を行い
その結果を表示するプログラムCalc.javaを作成せよ
※掛け算は実行できなくて良い
※引数は、3つ固定(数値、記号、数値)
※Swich文を使う
実行例1
>java Calc 1 + 2
3
実行例2
>java Calc 5 + 2
2.5
実行例3
>java Calc 1.2 - 0.3
0.9
---------------------------------------------------
問題2
コマンドライン引数として整数を1つ(文字列として)受け取り
その文字列尾整数に変換し5倍した値を表示するプログラム
Parse5.javaを作成せよ
※Integer.parseIntメソッドなどを利用してはいけない(手動で)
※整数以外が与えられた場合のことは考えなくても良い
実行例
>java Parse5 123
612
0907894
05/02/01 00:20:05どうもありがとうございます!
平均点、最高点、最低点がきっちり出ました!
しかし本当に、、申し訳ないのですが、
内容が私には少し高度すぎてわかりません…
フローチャートを描かなくてはならないので、内容をそれなりに
把握できないとだめなんです。
ArrayListもselfもわかりません。まだ入門レベルの本が終わった位です。
もう少し…易しくしてください…
0908デフォルトの名無しさん
05/02/01 10:50:49大丈夫。おじさんはやさしいよ
0909デフォルトの名無しさん
05/02/01 11:10:06次の処理を行うプログラムを作成しなさい。なお、ソースファイル名はTest1.javaにしてください。
�@背景色が灰色のアプレットのほぼ中央に、「ネットワークプログラミング」という文字列を黄色で描き、
その文字列の周囲を白色の線で囲みます。
以上です。よろしくおねがいします。
0910>>909
05/02/01 15:18:37import java.applet.Applet;
import java.awt.*;
public class Test1 extends Applet{
private Image img;
public void init(){
Dimension d = getSize();
int width = d.width, height = d.height;
img = createImage(width, height);
int centerX = width/2;
int centerY = height/2;
Graphics g = img.getGraphics();
g.setColor(Color.GRAY);
g.fillRect(0, 0, width, height);
g.setColor(Color.YELLOW);
g.drawString("ネットワークプログラミング", centerX-75, centerY+4);
g.setColor(Color.WHITE);
int sx = 100, sy = 15;
g.drawRect(centerX-sx, centerY-sy, sx*2, sy*2);
}
public void paint(Graphics g){
g.drawImage(img, 0, 0, this);
}
public void update(Graphics g){
paint(g);
}
}
0911GPS
05/02/01 16:47:36携帯の画面に現在地を表示させるプログラム(経度・緯度はプログラムに書いて)を
作ったんですけど、誰かこの2つを1つのプログラムにしてくれませんか?
GPSを使って現在地の経度・緯度を求めるプログラム(GPSReader.java)
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import com.kddi.system.*;
public class GPSReader extends MIDlet implements CommandListener{
GPSCanvas gpsCanvas;
Command exitCommand, gpsCommand;
Display display;
public GPSReader(){
display = Display.getDisplay(this);
exitCommand = new Command("Exit",Command.EXIT,1);
gpsCommand = new Command("GPS",Command.SCREEN,1);
gpsCanvas = new GPSCanvas(); gpsCanvas.setCommandListener(this);
gpsCanvas.addCommand(exitCommand); gpsCanvas.addCommand(gpsCommand);
display.setCurrent(gpsCanvas);}
public void startApp(){ } public void pauseApp(){ } public void destroyApp(boolean unconditional){ }
public void commandAction(Command command,Displayable screen){
if(command==exitCommand){
destroyApp(false); notifyDestroyed();
}if(command==gpsCommand){
gpsCanvas.showLocation();
}}
0912GPS
05/02/01 16:49:53public class GPSCanvas extends Canvas
{
Location location;
String latitude = "", longitude = "";
Font font;
int width, height;
public GPSCanvas(){
font = Font.getFont(Font.FACE_MONOSPACE,Font.STYLE_PLAIN,Font.SIZE_SMALL);
width = getWidth(); height = getHeight();}
public void showLocation(){
location = GpsLocation.getLocation();
latitude = location.getLat(); longitude = location.getLon(); repaint();
}public void paint(Graphics g) {
g.setColor(255,255,200); g.fillRect(0,0,width,height);
g.setColor(0,0,0); g.setFont(font);
g.drawString("位置情報取得結果",width/2,30,Graphics.HCENTER | Graphics.VCENTER );
g.drawString("緯度",width/2,50,Graphics.HCENTER | Graphics.VCENTER );
g.drawString(latitude,width/2,60,Graphics.HCENTER | Graphics.VCENTER );
g.drawString("経度",width/2,80,Graphics.HCENTER | Graphics.VCENTER );
g.drawString(longitude,width/2,90,Graphics.HCENTER | Graphics.VCENTER );
}}}
0913GPS
05/02/01 16:54:09携帯の画面に現在地を表示させるプログラム(GraphicsCanvas.java)
import javax.microedition.lcdui.*;
final class GraphicsCanvas extends Canvas {
private Image image; private int sx = 0;
private int sy = 0; private int sc = 10;
public GraphicsCanvas() {
try {image=Image.createImage("/Img2.png");
} catch (Exception e) {}}
public void paint(Graphics g) {
g.setColor(21,67,55);
g.fillRect(0,0,getWidth(),getHeight());
g.drawImage(image,getWidth()/2,getHeight()/2,g.VCENTER|g.HCENTER);
g.setColor(21,67,55);
g.fillArc(sx+((131*60*60*100+36*60*100+4431)-(131*60*60*100+36*60*100+4141))*130/510,sy+((33*60*60*100+10*60*100+1710)-(33*60*60*100+10*60*100+1427))*140/462,5,5,0,360);
} //*****スクロール処理*****
protected void keyPressed(int code){
int pushedkey = getGameAction(code);
switch(pushedkey){
case UP: if(sy>-100) sy-=sc; break; case DOWN: if(sy<100) sy+=sc; break;
case LEFT: if(sx>-100) sx-=sc; break; case RIGHT: if(sx<100) sx+=sc; break;
default: return;} repaint();}}
##座標を求める計算の説明##
(131*60*60*100+36*60*100+4431)-(131*60*60*100+36*60*100+4141))*130/510
(現在地の経度-画面の左上の経度)*画面の横のドット数/画面の横の経度の差
sy+((33*60*60*100+10*60*100+1710)-(33*60*60*100+10*60*100+1427))*140/462
(画面の左上の緯度-現在地の緯度)*画面の縦のドット数/画面の縦の緯度の差
ほんと、誰かお願いします!!
0914デフォルトの名無しさん
05/02/01 19:44:42学校でしかjavaできないので学校で試したいと思います。
javaについていけなくて苦戦しています。もっと勉強します。
どうもありがとうございました。
0915デフォルトの名無しさん
05/02/01 20:32:54// Calc.java
import java.math.BigDecimal;
public class Calc {
public static void main(String[] args) {
if( args.length!=3 ) System.exit(1);
BigDecimal v1=null, v2=null;
char ope = 0;
v1 = new BigDecimal(args[0]);
if( args[1].length()!=1 ) System.exit(1);
ope = args[1].charAt(0);
v2 = new BigDecimal(args[2]);
switch(ope) {
case '+': System.out.println( v1.add(v2).toString() ); break;
case '-': System.out.println( v1.subtract(v2).toString() ); break;
case '/': System.out.println( v1.divide(v2).toString() ); break;
}
}
}
0916915
05/02/01 20:34:58// Parse5.java
public class Parse5 {
public static void main(String[] args) {
int result = 0;
boolean negative = false;
int i = 0, max = args[0].length();
int limit;
int multmin;
int digit;
if (args[0].charAt(0) == '-') {
negative = true;
limit = Integer.MIN_VALUE;
i++;
} else limit = -Integer.MAX_VALUE;
multmin = limit / 10;
if (i < max) {
digit = Character.digit(args[0].charAt(i++), 10);
result = -digit;
}
while (i < max) {
digit = Character.digit(args[0].charAt(i++), 10);
result *= 10;
result -= digit;
}
if (negative) System.out.println(result * 5);
else System.out.println(-result * 5);
}
}
ちなみにInteger.parseInt()メソッドのほぼコピペ。例外処理は取り除いた。
ワケわからん出題者へのアンチテーゼとして。
品質が確保されているコードを使ったらアカンという意味が分からん。
0917906
05/02/01 22:29:21どうもありがとうございました
しかし、915のソースが
java.lang.Error: コンパイル問題が未解決です。
型 BigDecimal のメソッド divide(BigDecimal, int) は引き数 (BigDecimal) に適用できません。
というエラーでコンパイル通りませんでした
出来ればまた力添えお願いできませんでしょうか
0918915
05/02/01 23:20:45BigDecimal#divide(BigDecimal)は1.5からのメソッドなんだそうです。
俺が今の>>915に手を加えると
divide(BigDecimal)の中を実装して性格の悪いソースになるから、
1.5をインストールするか他の人に頼んでください。
0919デフォルトの名無しさん
05/02/02 00:37:34>>21-23によるとテンプレ間違ってるらしいから修正できるひと降臨キボン
0920デフォルトの名無しさん
05/02/02 03:34:510921w
05/02/02 03:45:11static double average(double num[],int n){
double average = 0;
for(int i=0;i<n;i++){
average += num[i];
}
return average/n;
}
static double varience(double num[],int n){
double varience = 0;
for(int i=0;i<n;i++){
varience += Math.pow(num[i]-average(num,n),2);
}
return varience/n;
}
static double standard_deviation(double num[],int n){
return Math.sqrt(varience(num,n));
}
}
0922w
05/02/02 03:48:45他にも4つプログラムがあるんで、よろしければアドバイスいただきたく思います。明後日テストなのでヤバいです...
0923デフォルトの名無しさん
05/02/02 05:06:36問題
1.何を求めるプログラムか
2.誤差について考察せよ
0924無職33歳 ◆9r1KO5EG3I
05/02/02 06:54:20average >> num[i] の時、どうなるかだな…
num[i] ≒ average(num,n) の時も、i が小さい(varienceも小さい)時と i が n に近付いた(varienceも大きい)時にもどうなるかだな…
(1 * 10 ** 10) + (1 * 10 ** (-6)) がどうなるか…
0925無職33歳 ◆9r1KO5EG3I
05/02/02 06:59:12何を求めるかって、そりゃぁσに決まってるだろ!!
無職(日雇い建築現場作業員)の漏れでもそんな事位知ってるぞ!!!
0927デフォルトの名無しさん
05/02/02 17:13:49課題:キーワードから指定された音楽ファイルをwwwから検索し再生するプログラムを作成せよ。
要求1:ユーザインターフェースはGUIとし、以下を実装せよ。
・キーワード(日本語)入力欄 ・検索開始ボタン ・検索結果のヒット数表示欄
・検索結果のURLを表示する欄 ・音楽ファイル再生ボタン ・停止ボタン
・次の音楽ファイルのURL表示ボタン(検索結果が多数の場合は1つだけURLを表示し、このボタンを押すことで
次の音楽ファイルのURLを表示)
要求2:検索は、ユーザから与えられたキーワードを既存のロボット型検索エンジンにリダイレクトして行うこと。
但し、ロボット型検索エンジンは本プログラム作成に適したものを選ぶこと(GoogleはJavaプログラムからアクセスできないので注意)
要求3:キーワードでロボット型検索エンジンに検索をかけた場合、音楽ファイルを含まないページなどがヒットすることも考えられる。
そこで、次のヒューリスティックを利用し、絞込みを行い、音楽ファイルを抽出すること
・「<embed src="URL">がページに含まれていてURLの末尾の拡張子が音の拡張子である」かつ
「<title>TEXT</title>のTEXTにキーワードが含まれている」
・「検索エンジンが返してきたページ内に<a href="URL">TEXT</a>が含まれていてURLの末尾の拡張子が音楽ファイルの拡張子」
かつ「TEXTにキーワードが含まれている」
・「検索エンジンが返してきページに<a href="URL"><img src="URL1" [alt="TEXT"]></a>が含まれていてURL
の末尾の拡張子が音楽ファイルの拡張子」かつ「ALT情報があればALT情報にキーワードが含まれている。
省略されている場合は<title>TEXT</title>のTEXTにキーワードが含まれている」
以上のどれかを満たす場合にURLをキーワードに対応する音楽ファイルと認定する。
要求4:複数キーワードには対応しなくてよい。また、非常に多くの検索結果が返ってきた場合は
適当な数に対してのみ絞込み処理を行えばよい
GUI部分とかはできてるんですが肝心の中身がサッパリです…
どうかよろしくお願いします
0928デフォルトの名無しさん
05/02/02 18:39:36のMってキーボードの何やねん?
0929デフォルトの名無しさん
05/02/02 18:42:450930デフォルトの名無しさん
05/02/02 19:19:24Windows系には無いから止むを得ずAltになった。
0931日雇建築現場作業員 ◆9r1KO5EG3I
05/02/02 19:28:16<ESC>キーを押して放しても同じ動作するね。
MetaキーってSunのキーボードで◆のやつだったっけ?
0932デフォルトの名無しさん
05/02/02 20:35:23やってみたのですがうまくいきません。このメソッドではできないのでしょうか?
0933デフォルトの名無しさん
05/02/02 20:42:52レス数が900を超えています。1000を超えると表示できなくなるよ。