★★ Java の宿題ここで答えます part51 ★★
931 :
デフォルトの名無しさん:2005/06/19(日) 22:16:32
>>930 IPはダミーですのですれ違いなら他にいきます。
すみませんでした
932 :
デフォルトの名無しさん:2005/06/19(日) 22:40:03
ほぼ丸投げに近いのですが
例えば、java Find3 the < sample.txt を実行すると、sampleファイ
ル中に出現するtheの単語の数を数えてその数を画面上に表示する。
ただし、指定された文字列の大文字小文字は区別しないものとする。
つまり、theとTheは一致する。また、the とtheyは一致してはなら
ない。
標準入力から入力されるファイルは一般的な英文であるとし、指定
した文字列が正確に数えられるように工夫せよ。
大文字小文字の区別はできたのですが、文末や改行のところの単語、つまり
スペースに挟まれていない単語の検索方法がわかりません。
お願いします。
933 :
932:2005/06/19(日) 22:41:32
プログラムはこんなかんじです。
import java.io.*;
public class Find2 {
public static void main (String[] args) {
if (args.length !=1) {
System.out.println("使用法:java Find2 検索文字列 < 検索対象ファイル");
System.out.println("例:java Find2 System < Find2.java");
}
String findstring = " "+args[0]+" ";
System.out.println("検索文字列は「" + findstring + "」です。");
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int p = 0;
934 :
933続き:2005/06/19(日) 22:42:05
try {
String line;
int linenum = 0;
while((line = reader.readLine()) !=null) {
line = line.toLowerCase();
int n = line.indexOf(findstring);
while(n >= 0) {
p++;
line = line.substring(n+args.length);
n = line.indexOf(findstring);
}
linenum++;
}
}catch (IOException e) {
System.out.println(e);
}
System.out.println(findstring + "が出てきた回数は" + p + "回です。");
}
}
935 :
927:2005/06/19(日) 23:51:29
すいません、訂正です。
0.0056とか.00065とか-2.3600などの数値はOKだが
それ以外はNGとしたいんです。全角とかもNGです。
お願いします。
>>933 char c = args[0].charAt(0);
String w = "[" + Character.toLowerCase(c) + Character.toUpperCase(c) + "]" + args[0].substring(1, args[0].length());
Matcher m = Pattern.compile("\\s" + w + "\\s").matcher(text);
int i = 0;
while (m.find()) i++;
こういうのが欲しいんじゃないよね。
>>935 try{
double d = Double.parseDouble(string);
}catch(Exception e){
System.out.println("だめ");
}
0.--.....
こう言うのが通っちゃうのはいやん。
^-?\d*\.?\d*$
こんな感じ?
939 :
877:2005/06/20(月) 01:40:49
現在学校で多分木に関する課題を行っています。
括弧表記法で入力された物をコンピューターに理解させるアルゴリズムの部分がまったく見当もつきません。
どなたか教えていただけないでしょうか?
よろしくお願いします。
>>936 textをtoLowerCase()するならこれでいいじゃん。
Matcher m = Pattern.compile("\\s" + args[0].toLowerCase() + "\\s").matcher(text.toLowerCase());
int i = 0;
while (m.find()) i++;
>>940 もっと詳しく。
942 :
940:2005/06/20(月) 10:53:57
コマンドライン引数として
"(AA (BA BB) (CA CB))"
このような形のものが与えられるので、それをコンピュータ内部に取り込ませて、そこから
括弧表記
後置表記
図表現
の3種類の方法で出力するということをやりたいのです。
がこの「コンピュータ内部に取り込ませて」の部分のアルゴリズムがまったくわかりません。
一応
class Node {
String word;
Node left, right;
Node(String str) {
word = str;
left = null;
right = null;
}
}
のような形で2分木の場合におけるクラスがヒントとして与えられているのですが・・・。
どなたかよろしくお願いします。
943 :
デフォルトの名無しさん:2005/06/20(月) 15:09:23
この課題では、多分木のノードと二分木のノードのどちらを作成するのですか?
ノードの内容となる文字列の区切りは、括弧とスペース(空白)でよいのですか?
944 :
940:2005/06/20(月) 19:41:45
基本的に作成するのは2分木で、それの応用として多分木を作るそうです。
私はその最初の2分木のアルゴリズムすら理解できなくて・・・。
また区切りはそれでよいです。
945 :
デフォルトの名無しさん:2005/06/21(火) 08:53:36
しかし、これだと
AA (BA BB) (CA CB))
ルートの下に3つノードがあるのですが・・・
2分木ではムリです・・・
>>945 import java.util.Vector;
class Node {
String word;
Vector<Node> children; //いくつでもどーんと来やがれ!
}
>>946 あ、それです。
構文解析部分も作りなさい。
セパレータは先に述べた括弧と半角空白です。
お願いします。
2分木ではないね。
VectorはArrayListでいいんじゃない?
Vectorはマルチスレッドセーフだけど、ArrayListはそうじゃないから
拡張性からしたらVectorの使用の方が正しいね。
並列プログラミングも視点にいれないと駄目だよ。
マルチスレッドは難しいとはいえ、シングルスレッドプログラミング
だけのJavaでは、正に牛肉の無い牛丼と言った感じだ。
Vectorは古いから、ArrayListの方がいいんじゃないかと…。
スレッドセーフにも出来るし。
>>951 > Vectorは古いから
すると時代は StringBuffer より StringBuilder?
953 :
デフォルトの名無しさん:2005/06/21(火) 13:14:29
おお、M.Bたんが。懐かしい。
このスレってみんなどっか行っちゃうのだよな・・・
>>952 Enumeration より Iterator
Vector より ArrayList
Dictionary より Map
Hashtable より HashMap
Stream より Channel
StringBuffer より StringBuilder
が密かなトレンド。
>>953 俺も帰ってきたぞ。名無しだが。
2ch より @IT?
955 :
デフォルトの名無しさん:2005/06/21(火) 14:30:48
パッケージの作り方教えてください。
>>954 2ch より人間レベルが低いが Java House がいい。
スレNo.はもうこのまま52, 53, 54, …となってしまうのだろうか。。。
>>954 >Hashtable より HashMap
javadocによるとHashtableはスレッドセーフで、HashMapはそうじゃないみたいなことが
書いてあるけど、それでもHashMapのほうがいいのかな?
>>959 Collections/ConcurrentHashMap
>>959 synchronized されているからといって
スレッドセーフとは限らない。
当初考えられてたよりもスレッドセーフは微妙で、
長い?議論の末やっと 5.0 になって
メモリモデルが改善されたなどという微妙なところがあったりする。
Map の同期化については、いい題材で、
IBMの記事になってたりする。
でも、5.0 では標準ライブラリに
ダグリーのスレッドセーフなコレクションが載ってると思うから、
必要ならばそれを使うのが吉かと。
962 :
デフォルトの名無しさん:2005/06/23(木) 21:21:29
名前を入力したら学生番号が出力されるプログラムってありませんか?
あるだろうな。
>>962 1人/日ってとこだな。\70000で請け負うぞ。
965 :
デフォルトの名無しさん:2005/06/23(木) 21:39:47
留年しちゃいます。誰か作って下さい。
全く分かりません
>>965 それが自分の実力じゃないか
留年しろよ
>>965 ///// 使い方
///// java Meibo [名前]
/////
class Meibo {
public static void main(String args[]) {
// ここに名前を入れておく
String storageName[] = {"Java", "C" , "Pascal"};
// ここに学生番号を入れておく
String storageNumber[] = {"001", "002", "003"};
// 当たり前だが名前と学生番号は対応する順序で無いと駄目
for(int i=0; i<storageName.length; i++)
if(storageName[i].equals(args[0])) {
System.out.println("学生番号は "+ storageNumber[i] +" です。");
System.exit(0); }
System.out.println("見つかりませんでした。");
}}
969 :
デフォルトの名無しさん:2005/06/23(木) 23:55:51
>>967 ありがとうございます
これを実行すればいいんですか?
>>969 仕様が分からないからなんともいえないけど
>>967の配列部分に自力で学生番号と名前を入力しておけば動くよ。
971 :
デフォルトの名無しさん:2005/06/24(金) 00:38:02
967さん、本当にありがとうございます。
そんなのでいいのか?
文句があるならもっといいものを貼り付ければいいのに
RDBから実装してくれるんだろうな。楽しみだ。
975 :
デフォルトの名無しさん:2005/07/01(金) 10:01:16
ラジオボタンの判定について質問なのですが、
メインとは違うクラスでボタン、ラジオボタン等の設置をしていて、
メインクラスで
public void actionPerformed(ActionEvent e) {
if(ボタンを押されたとき){
if(ラジオボタンAが押されていれば){
処理1;
}
else if(ラジオボタンBが押されていれば) {
処理2;
}
else if(ボタンBを押したとき){
if(ラジオボタンAが押されていれば){
処理1;
}
else if(ラジオボタンBが押されていれば) {
処理2;
}
}
のような判定を行いたいのですが、ラジオボタンの判定だけどうも上手くいきません。
どなたかご教授お願いします(´・ω・`)
ちなみに ボタンAが押されたとき はif(e.getSource() == window.A)で上手く処理できています。
window はボタン設置等をおこなっている違うバウンダリクラスです。
976 :
デフォルトの名無しさん:2005/07/01(金) 10:04:48
ちなみに、ボールを複数表示し、それぞれのボールを選択でき、
上下左右の4つのボタンで任意に動かせるプログラムを作るという課題です。
ボタン設置などと、判定処理などは違うクラスで実装しないといけません。
>708
激亀レスだが
MySQLのJDBCはAspectJのライブラリを要求されます。
AspectJをダウンロードしてインストール後、Tomcatの/common/lib
に格納すれば動きます
978 :
デフォルトの名無しさん:2005/07/11(月) 01:38:51
Color c[] = {Color.yellow, Color.blue, Color.red,
Color.orange, Color.green};
こう書いておいて、
ランダムでこの中から色が選ばれるようにするにはどうすればいいんでしょうか?
>>978 int tmp = (int)(Math.random() * 10.0) % c.length;
Color random_color = c[tmp];
.wavファイルの特定の周波数と周波数の間のみを再生(または新しくフィルタを通った結果の.wavファイルを出力する)
するバンドパスフィルタを作れ。
バンドパスフィルタとは特定の周波数の間のみを残して、他の周波数成分をカットしてしまうフィルタである。
・wavファイルを開く機能を実装
・周波数帯を指定する機能を実装
・指定された周波数帯のバンドパスフィルターとして機能する
・バンドパスフィルタを通った後の結果を再生、またはファイルへ出力する機能を実装
*1 演算速度は求めない。
*2 .wavファイルのフォーマットはモノラル16bit 44.1kHzに固定するが、長さは不定とする。
よろしくお願いします。