Java!宿題!
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG・丸投げOK
・前提条件も全部出しておくれよ 数学関係は数式も出しておくれよ
・GUI 関係などは基本的に放置
・内容単純でも規模デカすぎるのはめんどくさいから省略
・JavaScript など、他言語の課題は徹底的にゴルァ
前スレ
Java の宿題ここで答えます。
http://pc5.2ch.net/test/read.cgi/tech/1089527630/
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGスレタイがいまいち。
=終了=
0004デフォルトの名無しさん
NGNG0005古代帝國富士皇朝総帥・伯壬旭
NGNGこれじゃ何のスレなのか分からないではないか!
ネタスレに間違えられて、質問者の多くが宿題スレと気付かない恐れもある。
世界帝国神聖皇帝ならびに宇宙神ザインの名のもとに命ずる。
即刻立て直せ。
タイトルは「JAVAの宿題はここで答えます」だ。
さもないと、この1を霊斬し、魂を消滅させる。
0006デフォルトの名無しさん
NGNGまず手始めにそのHNから直せ
0007デフォルトの名無しさん
NGNG00081
NGNG0009デフォルトの名無しさん
NGNG5とユーザが入力すると
ひし形になるやつです。
つまり
はじめに
>数値を入力してください。
と出力して
>5
と入力すると。
□□*□□
□*□*□
*□□□*
□*□*□
□□*□□
(□は空白すぺースです。)
と出力する。
どうかよろしくお願いします。
0010デフォルトの名無しさん
NGNG宿題は自分でやれ。馬鹿。
0011デフォルトの名無しさん
NGNG2点
0012M.B.
NGNGすみません。
□□*
□*□*
*□□□*
□*□*
□□*
じゃいけませんか?
0013デフォルトの名無しさん
NGNGそれです。
ちょっと分りやすく書きました。
それでOKです。
0014デフォルトの名無しさん
NGNGd.after(n);としたときにdのn日後の日付を持ったDate型のオブジェクトを返すインスタンスメソッドを
Dateクラスに付け加えよ。
ただし、nは30以下とし、30以下でなかったらエラーメッセージをプリントするようにせよ。
また、d自身の日付は変わらないものとする。
(d自身の日付を変更し値は返さないメソッド(void型)、
d自身の日付を変更してからそれ自身を返すメソッドなども考えてみよ)
↑こんな宿題が出ました。
ご教授お願いします。
ちなみに分野は「アクセス制御 と コンストラクタの多重化」です。
もうサッパリですorz
001514
NGNGpublic class Date {
private int month; // 1-12
private int day; // 1-31 based on month
private int year; // any year
// コンストラクタ.
public Date( int mn, int dy, int yr )
{
if ( mn > 0 && mn <= 12 ) // 月の妥当性チェック
month = mn;
else {
month = 1;
System.out.println( "Month " + mn +
" invalid. Set to month 1." );
}
year = yr; // 年の妥当性チェックも可能だが
day = checkDay( dy ); // 日の妥当性チェック
System.out.println(
"Date object constructor for date " + toString() );
}
001614
NGNGprivate int checkDay( int testDay )
{
int daysPerMonth[] = { 0, 31, 28, 31, 30,
31, 30, 31, 31, 30,
31, 30, 31 };
if ( testDay > 0 && testDay <= daysPerMonth[ month ] )
return testDay;
if ( month == 2 && // 2月: うるう年のチェック
testDay == 29 &&
( year % 400 == 0 ||
( year % 4 == 0 && year % 100 != 0 ) ) )
return testDay;
System.out.println( "Day " + testDay +
" invalid. Set to day 1." );
return 1; // leave object in consistent state
}
// month/day/yearの形のStringを返すメソッド
public String toString()
{ return month + "/" + day + "/" + year; }
}
0017デフォルトの名無しさん
NGNG↓
0018デフォルトの名無しさん
NGNGスレタイが短すぎます。さっさと立て直してこい!!
0019デフォルトの名無しさん
NGNGもっとまともにできると思うんだけど、とりあえず、、、、。
import java.io.*;
class Lesson {
public static void main(String args[]) {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
while (execute(in));
}
public static boolean execute(BufferedReader in) {
try {
System.out.print("数値を入力してください。(終了はq): ");
String input = in.readLine();
if (input.equals("q")) return false;
int num = new Integer(input).intValue();
int a = num / 2; int b = num % 2;
int ix1 = a; int ix2 = num - (a + b);
if (b == 0) { ix1--; }
for (; ix2 < num; ix1--, ix2++) printLine(num, ix1, ix2);
ix1 = 0; ix2 = num - 1;
if (b == 1) { ix1++; ix2--; } else { a--; }
for (; ix1 <= a; ix1++, ix2--) printLine(num, ix1, ix2);
return true;
} catch (Exception ex) {
System.out.println("無効な入力値です。"); return true;
}
}
static private void printLine(int n, int ix1, int ix2) {
for (int i = 0; i < n; i++) { if (i == ix1 || i == ix2) System.out.print("*"); else System.out.print(" "); }
System.out.print("¥n");
}
}
0020デフォルトの名無しさん
NGNGpublic final class MyDate extends Date {
// n日後の日付を返す。
public Date after(int n){
if(n > 30){
System.err.println("エラーメッセージ");
}
// 足し算
Calendar cal = Calendar.getInstance();
cal.setTime(this);
cal.add(Calendar.DATE, n);
return cal.getTime();
}
// n日進める。
public void add(int n){
setTime(after(n).getTime());
}
// n日進めて返す。
public Date append(int n){
add(n);
return this;
}
}
アクセス制御 と コンストラクタの多重化に全く絡まない答えで申し訳ないけど
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNGありがとうございます。
僕ももっといろいろ
考えてみます。
0023デフォルトの名無しさん
NGNG蛇足だけど、違うやり方をひとつ。入力のところは省略
int n = 999; // ←入力してもらった数字が入る
boolean[][] canvas = new boolean[n][n];
int k = n % 2;
if(n == 1){
System.out.println("●");
return;
}
for(int i=0;i<n/2;i++){
int x = i, y = n/2-i-1;
canvas[y][x+k] = true;
canvas[y+k][n-1-x] = true;
canvas[n-1-y-k][x] = true;
canvas[n-1-y][n-1-x-k] = true;
}
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
System.out.print(canvas[i][j] ? "●" : "□");
}
System.out.println();
}
四角形を四つ切りにして、そのうちの一枚に対角線を引いて、それをコピーするような感じ
0024デフォルトの名無しさん
NGNGおおコレわかりやすい。
恩に着ます。
ありがとうございます。
0025デフォルトの名無しさん
NGNGこの問題↓をよろしくお願いします。
問題
[数字を入力して計算する]
条件
�@ 40文字以内で入力40字を越えたらエラー表示を出す。
�A 小数点以下の計算はしない。
入力例
80X5+2=
出力例
402
0026デフォルトの名無しさん
NGNG0027デフォルトの名無しさん
NGNG0028デフォルトの名無しさん
NGNGありがとうございました。
できればどなたかDateクラスにメソッド付け加えた答えをお願いします。
0029デフォルトの名無しさん
NGNG・nまでの整数の中から、素数を拾い出して表示するプログラムを作れ。
(n=100とする)
0030デフォルトの名無しさん
NGNG0031その1
NGNG//Nまでの整数の中から素数を拾い出して表示するプログラム。
public class MyClass1 {
public static final int N = 100;
public static void main(String[] args) {
int[] primes = new int[N]; //判明した素数のリスト
int numberOfPrimes = 1; //判明した素数の数
int candidate = 1; //素数の候補
//単純に3以上のすべての奇数に対して素数であるかテスト。
primes[0] = 2;
for (int i = 0; i < N; i++) {
candidate += 2;
boolean isPrime = true;
//候補が判明しているすべての素数で割り切れないなら、その候補は素数。
for (int j = 0; j < numberOfPrimes; j++) {
if (candidate % primes[j] == 0) {
isPrime = false;
break;
}
}
0032その2
NGNG//素数だと判明した候補をリストに追加。
if (isPrime) {
primes[numberOfPrimes] = candidate;
numberOfPrimes++;
}
}
//判明した素数を表示。
for (int i = 0; i < numberOfPrimes; i++) {
System.out.print(primes[i]+" ");
}
System.out.println();
}
}
0033デフォルトの名無しさん
NGNGboolean prime[] = new boolean[N + 1];
for (int i = 2; i <= N; i++) { prime[i] = true; }
for (int i = 2; i <= N; i++) { if (prime[i]) { for (int j = 2; i * j <= N; j++) { prime[i * j] = false; } } }
for (int i = 2; i <= N; i++) { if (prime[i]) { System.out.print(i + " "); } }
System.out.print("\n");
}
0034デフォルトの名無しさん
NGNG0035デフォルトの名無しさん
NGNG適当にアルゴリズムだけ
しかも Perl で w
$i=$ARGV[0];
for($a=0;$a<=$i;$a++){
for($s=0;$s<=$i;$s++){
$a[$a][$s]=' ';
if($a==$s or ($a+$s)==$i){$a[$a][$s]='Q';}
}}
for($a=$i/2;$a>=0;$a--){
for($s=0;$s<=$i;$s++){
print"$a[$a][$s]"; }
print"\n"; }
for($a=0;$a<=$i/2;$a++){
for($s=0;$s<=$i;$s++){
print"$a[$a][$s]"; }
print"\n"; }
0036デフォルトの名無しさん
NGNGすれ違い。失せろハゲ。
0038デフォルトの名無しさん
NGNGばーか
0039デフォルトの名無しさん
NGNGループの終了条件とStringBufferを使うだけで劇的に改善するよな。
0040デフォルトの名無しさん
NGNGスレタイださすぎ。0点
----------------------終了----------------------
0041デフォルトの名無しさん
NGNGここのサイトを見ながら勉強していたのですが、
この例題が実行できません。
無知な私には何が違うのかわかりません…お願いします…
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGコピペしてコンパイルすればOK
0044デフォルトの名無しさん
NGNG004541
NGNGそれをやってもダメでした。
>44
以下、エラー内容です
piggyBank.java:8: メソッド本体がないか、abstract として宣言されています。
void putCoin(int money); //3
^
piggyBank.java:10: シンボルを解決できません。
シンボル: 変数 money
場所 : PiggyBank の クラス
totalMoney = totalMoney + money; //4
^
piggyBank.java:10: 互換性のない型
検出値 : java.lang.String
期待値 : int
totalMoney = totalMoney + money; //4
^
piggyBank.java:11: シンボルを解決できません。
シンボル: 変数 money
場所 : PiggyBank の クラス
System.out.println("貯金箱に" + money + "円をいれました");
0046デフォルトの名無しさん
NGNG8行目にあるセミコロンはなんだよ?
コピペすらまともにできねーのかよ。
0047デフォルトの名無しさん
NGNGああ失礼と言いたいところだが、本文の方が間違ってたんだから
仕方ないだろ。
大体、なんだよ、その言い方は。
ったく世間じゃよくJAVA厨なんて言われるけど、本当に常識知らずの
香具師が多いな。
0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG0050デフォルトの名無しさん
NGNGどうせテストで現実を思い知らされるだけだよ?
0051デフォルトの名無しさん
NGNGスレタイがいまいち。立て直してこい
0052デフォルトの名無しさん
NGNGあのな、宿題スレだからといってやさしく教えてくれるとは限らんぞ。
そもそも自分の宿題を「たのむやってくれ」ってスレで、相手に紳士的な対応を頼むおまえは
何様だ? すみませんメソッド宣言にセミコロンがついててもおかしいとも思わずそのまま
入力しちゃいました、と謝ったっていいくらいだ。
さっぱりわからんで宿題やってほしいなら、罵られようがバカにされようが利用してやる、
くらいの心意気でこい。
0053デフォルトの名無しさん
NGNGこのプログラム完成させてもらえませんか?
お願いします。
public QuickSortAlgorithm() {
}
public static void main(String[] args) {
int[] array = new int[ELEMENT_NUMBER];
QuickSortAlgorithm quickSort = new QuickSortAlgorithm();
array = quickSort.makeRandomInteger(ELEMENT_NUMBER, MAX_NUMBER);
quickSort.doPrint(array);
quickSort.doSort(array, 0, array.length - 1);
quickSort.doPrint(array);
}
public void doSort(int[] array, int left, int right) {
int pivot;
if ( doSortの終了する条件 ) {
return;
} else {
// doSortがすべき処理を書く
pivot = array[ right ];// 一番右端をpivotに設定する
0054デフォルトの名無しさん
NGNG// pivotより小さい場合左からサーチを続ける
while (array[leftNumber] < pivot) {
leftNumber++;
}
// pivotより大きい場合右からサーチを続ける
while (pivot < array[rightNumber]) {
rightNumber--;
}
// 入れ替えの処理
// doSortのすべき処理として、このサーチと入れ替え作業をいつまで繰り返せばいいのかを考える
doPrint(array);// これを記述すると現在のソート状況がわかる
doSort( array, ????????, ???????? );
doSort( array, ????????, ???????? );
}
}
public void doPrint(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println("");
}
public int[] makeRandomInteger(int number, int max) {
int[] array = new int[number];
for (int i = 0; i < number; i++) {
array[i] = (int)(max * Math.random());
}
return array;
}
}
0055デフォルトの名無しさん
NGNGpu
0056クイックソート
NGNGint pivot;
if ( left==right/*doSortの終了する条件*/ ) {
return;
} else {
// doSortがすべき処理を書く
int leftNumber=left;
int rightNumber=right-1;
pivot = array[ right ];// 一番右端をpivotに設定する
// pivotより小さい場合左からサーチを続ける
while (array[leftNumber] < pivot) {
leftNumber++;
}
// pivotより大きい場合右からサーチを続ける
//問題の↓下の行がおかしいので ”&& left<rightNumber”の一文を追加
while (pivot < array[rightNumber] && left<rightNumber) {
rightNumber--;
}
// 入れ替えの処理
// doSortのすべき処理として、このサーチと入れ替え作業をいつまで繰り返せばいいのかを考える
array[right]=array[leftNumber];
array[leftNumber]=pivot;
doPrint(array);// これを記述すると現在のソート状況がわかる
doSort( array, left, rightNumber );
doSort( array, rightNumber+1, right );
}
}
0057>>53への回答 クイックソート
NGNG上に回答を書きましたが、この問題文のコードのクイックソートの
やり方は、ちょっと効率が悪いように思います。
それを穴埋めさせるとは、何と言いますか。。。
0058デフォルトの名無しさん
NGNG何だよ、その屁理屈は?
大体、「できねーのかよ」なんて言い草は、優しく教えるだとか
紳士的な対応以前の、あまりに非常識な礼儀知らずの言動じゃないか。
そっちこそ何様だよ。それに何で問題文の方が間違ってたのに
この自分が謝罪しなきゃならないんだよ。どう考えてもおかしいだろが。
罵られようが来いなんてのは、アンタだけの理屈じゃないか。
勝手に押し付けるな。世間じゃJAVA厨なんて言葉があるが、そうやって
JAVAを貶めてるのは自分だって事に気付くべきじゃないのか?
JAVA以前に礼儀を学ぶべきだね。
0059デフォルトの名無しさん
NGNG大変有難う御座います。
とても感謝してます。
形に当てはめられるとやりずらいですね。
自分でも調べては見たんですが、
やはりもっとスマートプログラムばかりでした。
こんどはリファクタリングしろとかいう宿題がでるのかな?
0060デフォルトの名無しさん
NGNGpublic static void main(String[] args) {
// 変数宣言
int[] menber_id = {5289,3328,2576,4981,8341,3496,6755}; // 会員番号データの定義
int comp = Integer.parseInt(args[0]);
boolean flg=true;
int i = 0;
// 会員番号の検索
while (i != menber_id.length-1){
if (menber_id[i] == comp){
System.out.println((i+1) + "番目の会員:" + menber_id[i]);
flg = false;
break;
}
i++;
}
// エラーメッセージの表示
if (flg) {
System.out.println("指定された会員番号はありません");
}
}
}
0061デフォルトの名無しさん
NGNG>>58
普通に本読んでれば、変なセミコロンくらい気づくと思うが
コンパイラが「そこがおかしい」って言ってるんだから、
一歩立ち止まって考えろ
自分で考えられないなら、プログラミングなんてできねーぞ
一生コピペ元に責任押し付けて、コンパイルできないってわめいてたいのか?
0062dotkansai
NGNGjavaのfor文の例で以下のように一部だけ掲載されていたのですが、
これを軽く説明していただけませんでしょうか?
for(Node n = listHead; n = null ; n = n.nextNode( ))
process(n);
です。よろしくお願いします。
0063デフォルトの名無しさん
NGNGそのfor文間違ってるな。
n=nullじゃ条件式になってないし。
0064デフォルトの名無しさん
NGNGfor文の第2引数は、n == null だと思いますが、
初めのlistHeadがnullだった場合にループを開始して、process(n)メソッド内で
nにNode型オブジェクトを代入して、n.NextNode()でnの子Nodeを取得して
それがnull、つまり子Nodeが存在しなかったら、またprocess(n)を呼び出して
nに新しいNode型オブジェクトを代入する、の繰り返しでしょう。
つまり最初の指定Nodeである、ListHeadが無効だったら、
外のツリーリストの頭ノードを、precessメソッドで見つけてきて
その頭ノードが一つも子ノードを所持していなかったら、またprocessメソッドで
外の頭ノードを見つけてくる。1個以上の子ノードを持つ頭ノードが
見つかったらループを終了して、次の処理に行くとそんな感じだと思います。
006564
NGNGおそらくprocessメソッド内で引数として渡されたnにNodeオブジェクトを
代入すると同時に、listHeadにも同じNodeオブジェクトを代入してると
思います。
つまり、このfor文の目的は、listHeadが無効=nullだった場合に
他のツリーリストの1個以上の子ノードを所持する頭ノードを
processメソッドで見つけてきて、それをlistHeadに代入させる事
だと思います。
0066M.B.
NGNGポインタをたぐりながらnullが来るまでprocess()を繰り返すCプログラムを、
Javaに移植しようとして失敗しているように思われ。
元はたぶんこんな感じ(listHeadが構造体へのポインタ。nextNodeは要素)。
for(n = listHead;n = n.nextNode;) process(n);
while文を使ったほうが綺麗になるのとちゃうん?
0067M.B.
NGNGNode node = listHead;
while (node != null) {
process(node);
node = node.nextNode();
}
0068M.B.
NGNG> おそらくprocessメソッド内で引数として渡されたnにNodeオブジェクトを
代入する
そういう方法があるんなら教えてくれ。
swap(x, y)とかいうメソッドが書けそうに思うので。
0069デフォルトの名無しさん
NGNG64の文章で1行目の後に
「おそらくprocess(n)は、process(new Node[]{n})だと思いますが」
の一文を加えるのを忘れてた。
007064の訂正
NGNGおそらくprocess(n)は正しくは、process(new Node[]{n})で
for文の第2引数は、n == null だと思いますが、
初めのlistHeadがnullだった場合にループを開始して、process(n)メソッド内で
nにNode型オブジェクトを代入して、n.NextNode()でnの子Nodeを取得して
それがnull、つまり子Nodeが存在しなかったら、またprocess(n)を呼び出して
nに新しいNode型オブジェクトを代入する、の繰り返しでしょう。
0072M.B.
NGNG「これを軽く説明していただけませんでしょうか?」つーのがよくわからん。
「ザッと教えていただけないでしょうか?」つーのもどっかにあったが、
その時も前提条件が部分的にしか提示されてなくて、背景をあれこれ想像しながら
レスを書いた覚えがある(「どうだ解るまい」みたいな挑戦的な臭いがしたので、
ついムキになった)。
こういう言い回し(つーか下手に出ながら相手の力量を試すような
挑戦的な態度)は最近の流行りなのか?
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNG「なにぶん初心者ですので」
「まだ基本もわかっていませんが」
みたいな自分の努力不足を言い訳にするセリフとか、
「どなたかご回答願います」
みたいな暗にさっさと答えろヴォケと言いたげなセリフがムカつく。
0075デフォルトの名無しさん
NGNG努力不足っつーのは、無茶苦茶だ。
はじめたばかりじゃ努力のしようがないからな。
0076デフォルトの名無しさん
NGNG0077M.B.
NGNG> はじめたばかりじゃ努力のしようがないからな。
事前に問題文のキーワードを元にググるくらいの努力はしろっつーか、
コンパイルエラーの原因を考えるくらいの努力はしろっつーか、
"Hello world!"くらい動かしておけとか、
その程度の意味だろ。
「クラスライブラリのソースは全部読め」とか、
「オブジェクトの意味が分かるまで山に篭って滝に打たれろ」とか、
そういうのまで要求はせん。
0078デフォルトの名無しさん
NGNGなんか文句あるかコノヤロー
0079M.B.
NGNGべつに文句はないが、
適切な回答が得られる努力と、
ネタにされて馬鹿を見るのを避ける努力は、
したほうがいいと思うぞ。
0080デフォルトの名無しさん
NGNG0081デフォルトの名無しさん
NGNG2chのプログラム関係板で質問するとき、頭低いとなぜか余計に叩かれる。
質問がわかりにくいとかは実は2の次。
0082デフォルトの名無しさん
NGNG目の付け所がいいな。確かにそうだ。
プログラミングマニアの本質が分かるってもんだな。
つまり、礼儀正しい人には尊大に接し、強そうな香具師には
卑屈に振舞う、現実世界そのままの卑劣な姿がここネット内の
書き込みだと余計に出てしまうんだろうな。情けないね。
普通は逆なんだがな。礼儀には礼儀で接し、強そうなのにはこっちも
横暴に接する。しかしここのプログラミングマニアときたら
強きにへつらい弱気をいじめる、人間として最低の事をしてる。
んなだから世の中から蔑まれるんだよ。
そういうのを卑怯の極みっていうんだよ。
0083デフォルトの名無しさん
NGNGimport java.text.DateFormat;
のみで
現在の年、月、日
のみを取得したいのですがどうすればいいでしょうか?
年、月、日、00:00でもいいですが
コマンドラインからYYYY/MM/DDを取得して現在の年月日と比較するプログラムなのですが
Date now = new Date();
だと時間も取得してしまって比較になりません。
0084デフォルトの名無しさん
NGNGString today = format(new Date());
条件を同じくしたからあとはできるだろ?
0085デフォルトの名無しさん
NGNG0086デフォルトの名無しさん
NGNGDate now = 【ここを埋める】 ;
0087M.B.
NGNG単に、「腰の低い香具師に限って『説明の切り口』とかいった説明する側の都合を考えてない」だけの話だと思われ。
「考えるだけ考えたがここがどうしても分からん。漏れの知りたいのはこれだ!」というのを示せば、ポイントを突いた回答が返ってくるなり。
0088デフォルトの名無しさん
NGNG0089M.B.
NGNG0090デフォルトの名無しさん
NGNGあるんですか?
Stringクラス
やたら便利なキーワードだと思ってたよ
0091デフォルトの名無しさん
NGNG0092デフォルトの名無しさん
NGNGCalendar.getInstance().getTime();
というかちょっと前の発言くらい読め....
009383=86です
NGNGうーんわかりにくいかったかな
import java.util.Date;
import java.text.DateFormat;
で一行で書きたいんですが
0094デフォルトの名無しさん
NGNG比較の部分ってどうなってるの?
日付だけを比較すれば時間が入っても問題ない気もするけど
邪道?
0095デフォルトの名無しさん
NGNGDate now = DateFormat.getDateInstance().parse(DateFormat.getDateInstance().format(new Date()));
0096デフォルトの名無しさん
NGNGむしゃくしゃしてやった。
83だとは思わなかった。
今は反省している。
009783=86
NGNG!
実は比較の部分も空白です。比較で年月日だけで比較は可能なのでしょうか?
argDate.compareTo(now)<0
の比較では時間も考慮してしまいます
比較をいじるとは検討もしてなかった…
>>95
長いけどサンクス
それでいけました
でも少し>>93さんに期待age
>>96
いえいえ
お気にせずに
0098デフォルトの名無しさん
NGNG正しくソートされないしw
できないのか
0099デフォルトの名無しさん
NGNGどのように書いたらいいんでしょうか?
0100デフォルトの名無しさん
NGNGpublic class MyClass {
public static void main(String[] args) {
hoge(true, true);
hoge(true, false);
hoge(false, true);
hoge(false, false);
System.out.println("以上より、やっぱりド・モルガンは正しかった。Q.E.D");
}
static void hoge(boolean p, boolean q) {
System.out.print("p=="+p+", q=="+q+"のとき、");
if ( (!(p&&q) == (!p || !q)) && (!(p || q) == (!p && !q)) ) { //←ド・モルガンの法則
System.out.println("ド・モルガンは正しい。");
}
else {
System.out.println("ド・モルガンは嘘つき。死ね。");
}
}
}
0101デフォルトの名無しさん
NGNG省略
class GameTile{
boolean tileStat;
boolean getStat(){
if(com.compareTo("表")==0){
return true; }
else if(com.compareTo("裏")==0){
return false; } }
void setStat(boolean){
tileStat=boolean; }
void reverseStat(){
if(tileStat == true){
tileStat=false; }
else if(tileStat == false){
tileStat=true; }}
String toString(){
if(tileStat == true){
System.out.println("*"); }
else if(tileStat == false){
System.out.println("."); } }
GameTile(){
tileStat=false; }
}
で実行すると
void setStat(boolean){
の )と{の間に矢印が出て<identifier>がない
最後の}のところで ) がないといわれ
この2つのエラーだけがどうしても消せません
お助けください!
0102デフォルトの名無しさん
NGNGとでもすれば。
0103デフォルトの名無しさん
NGNG勘弁して....
void setStat(boolean) {
tileStat=boolean;
}
このメソッド宣言をみてどう思う? え、わからんって?
booleanの後ろに変数名が必要だろ!
しかも tileStat=boolean; って、booleanはキーワードですってな
エラーが出ないか?
もしこれ読んでも分からんかったら、教科書みて、「引数」ってところを
10回読み直せ。できれば「キーワード」も。
0104デフォルトの名無しさん
NGNGなんとかそこを解決できたと思ったら
また新たなエラーが出ました;;
勉強し直します
0105デフォルトの名無しさん
NGNG処理
}catch(IOException e){
System.err.println(e.toString());
この場合の(e.toString())の意味を教えてください
0106デフォルトの名無しさん
NGNGSystem.err.println(e);
と書くのと同じ。内部的に
System.err.println(e.toString());
に変換されるだけ。
ちなみにtoString()はオブジェクトを人間が読めるように表現した
Stringクラスの文字列を返すメソッドね。
0107デフォルトの名無しさん
NGNG0108dotkansai
NGNGオブジェクトリテラルの例で、nullとはどういうことなんですか?教えてください。
String s = null;
0109デフォルトの名無しさん
NGNG0110デフォルトの名無しさん
NGNG0111キリ番ゲッター ◆Q5W244LhJU
NGNG0112デフォルトの名無しさん
NGNG簡単に言うと「中身が空っぽ」ということを表す値で、単に
String s;
とだけ書いて何も代入しない状態では null が入ってる。
これを空っぽだと明示したいときや、入ってるものを除いて空っぽにしたいときに
String s = null; //空っぽだと明示
hoge = null; //何か入ってたけどこの時点で空っぽ
みたいに書く。
ちなみに、ほんとうに null が値かどうかは知らないけど、値だと考えると
if (s == null) ...
みたいな使い方も納得できる。
0113デフォルトの名無しさん
NGNGありゃ? メソッドローカルに
String s;
ってしてもsがnullとは限らないんじゃなかったっけ?
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG0116デフォルトの名無しさん
NGNGhttp://www.google.co.jp/search?hl=ja&c2coff=1&q=%E3%82%BF%E3%83%BC%E3%83%88%E3%83%AB%E3%82%AF%E3%83%A9%E3%82%B9&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0117デフォルトの名無しさん
NGNGnullとは限らないというよりも
ローカルでそのまま使ったらコンパイル通らないね。
0118デフォルトの名無しさん
NGNG複雑な絵を描くためのクラス
0119デフォルトの名無しさん
NGNGですよね。ちょいと混乱した。
さんくーです。
0120デフォルトの名無しさん
NGNG0121デフォルトの名無しさん
NGNG釣れますか?
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNGmainクラスでプライベートコンストラクタしかもたいないクラスのメソッドを利用したいのですが
そのメソッドはstaticじゃないので使えません。
よってmainクラスででそのクラスをなんかするのだと思うんですけど
どなたか教えてください
0125デフォルトの名無しさん
NGNG一筆書きクラス?
0126デフォルトの名無しさん
NGNGリフレクション
0127デフォルトの名無しさん
NGNGそれってたぶんSingletonパターンのクラスだから、生成用のstaticメソッドが別にあるはず
getDefaultXXX()とか、getInstance()とか、getCurrentInstance()とか、、、。
staticメソッドのAPIを調べて、そのクラスのインスタンスを返すメソッドを探してみな。
0128デフォルトの名無しさん
NGNGhttp://www.is.titech.ac.jp/~wakita/classes/2004/cs1/assignments/1-calendar.html
0129デフォルトの名無しさん
NGNG0130デフォルトの名無しさん
NGNGServletでURLを指定してそのソースを取得・ブラウザで表示したいんですが、
ソースのUnicodeへのエンコードが上手くいかず、文字化けします。
取得したソースに
return new String(s.getBytes("ISO8859_1"), "JISAutoDetect");
を通しても駄目でした。JAVAアプリとして作った時はこれでうまくいったのですが。
ページによってエンコードが違うのが原因かと思っています。
response.setContentType("text/html; charset=Shift_JIS");
で、シフトJISのページは正しく表示されるのですが、EUC(Yahooニュースなど)
とかは駄目 なんです。
Tomcat5.0を使用です。
どうすればいいかわかりますか?
0131デフォルトの名無しさん
NGNGすごいサンクス
getInstanceがありました
こういう風に使うんですね^^;
0132デフォルトの名無しさん
NGNGターゲットマシン、CASLまたはJVM
・取り扱える数値は整数値のみでよい(実数なら最高)
・演算は加減乗除のみでよい(それ以外あってもいい)
・演算子の優先順位を考慮し、括弧も扱えること
数値と演算子の区切り文字は特に設けず、トークンは
4桁固定とする。
_は空白一文字を意味する
簡単化のためにトークンの文字数を4桁に固定する。
例
入力A =(2+8)/(2+3)
B =A+3
出力 AAA STRAT
LD GR3,=2
LD GR1,=8
・
・
・
みたいになればいいんです。
よろしくおねがいします。遅れてすいませぬ
0133デフォルトの名無しさん
NGNGAAA START
LD GR3,=2
LD GR1,=8
ADDA GR3,GR1
LD GR4,=2
LD GR1,=3
ADDA GR4,GR1
LD GR1,GR3
LD GR2,GR4
CALL DIV
LD GR5,GR1
ST GR5,A
LD GR3,A
LD GR1,=3
0134デフォルトの名無しさん
NGNGST GR3,B
LD GR0,A
CALL NUMOUT
LD GR0,B
CALL NUMOUT
RET
A DS 1
B DS 1
END
0135M.B.
NGNG0136デフォルトの名無しさん
NGNGこのプログラムは、java Say helloと入力するとhelloと表示する。
java Say somethingと入力するとsomethingと表示するものである
(つまり最後の文字をオウム返しするだけのプログラム)。
[ヒント]Sayの後の文字をコマンドライン引数という。
この文字はmain(String [] argv)中でargv[0]として参照できる。
っていう課題が講義で出たんですが、まだ勉強を始めたばかりで
ヒントの意味すらわかりません。助けてください。
0137デフォルトの名無しさん
NGNGpublic class Say {
public static void main(String[] args) {
if (args.length != 1) { System.err.println("usage: java Say [string]"); }
else { System.out.println(args[0]); }
}
}
0138デフォルトの名無しさん
NGNGペポ。仕様エラーがでますたー。引っ掛けです!
>(つまり最後の文字をオウム返しするだけのプログラム)。
なので、例とこの文章が一致していません。解なしです。
最後の「文字列」をオウム返しするプログラムは次の通り
public class Say {
public static void main(String[] args) {
if (args.length == 0) { System.err.println("usage: java Say [string]..."); }
else { System.out.println(args[args.length-1]); }
}
}
だな。
0139デフォルトの名無しさん
NGNGアフォな俺には何がなんだか orz
0140デフォルトの名無しさん
NGNGJ2MEのSunによるリファレンス実装の中にサンプルがある。
0141デフォルトの名無しさん
NGNGsay helloって、REXXみたいだな
0142デフォルトの名無しさん
NGNG昔見たときはなんかビット演算みたいの使ってたのでわけわからんかった
0143デフォルトの名無しさん
NGNGあれ、変態的なコーディングだよな。
初めて見た時、ワロタ。
0144デフォルトの名無しさん
NGNGとりあえず、有名なアルゴリズムを一つ授けておく。
実装も簡単だ。
コンピュータ側は、今までに戦った手順を全て覚えておき、
負けた手順 "だけ" は打たないようにする。
あとは適当。ランダムに打つ。
人間と戦っているうちに、コンピュータが
段々強くなっていくのが面白い。
0145デフォルトの名無しさん
NGNG9*8*7*6*5*4*3*2/8 通りより少ないくらいしかないし。
0146デフォルトの名無しさん
NGNGゲームの局面を考えなければ 3^9 通り
0147デフォルトの名無しさん
NGNG?
0148M.B.
NGNG要は「全部×」とか「全部○」とかも含めちゃってるワケ。
最初が○、っていうのが決まってるわけだから、9!通りのうち、
勝負がついた時点で枝刈りした残りが総数。
>>145 の「/8」っていうのは、たぶん回転・鏡像を考慮した場合と思われ。
0149デフォルトの名無しさん
NGNG1/n (n は2以上の整数) の十進小数展開の小数点以下の各桁の値(0〜9)が順に返ってくるように、
クラス Reciprocal を定義する。
next() が呼ばれつづける限り、何百万桁でも正しい値が返るようにすること。
という課題が出ました。
が、さっぱりわかりません。
どなたか助けてください。
0150デフォルトの名無しさん
NGNG求まった有効数字より大きい桁が要求されるたびに
さらに近似計算を進めていくというのはどう?
任意精度の十進数はjava.math.BigDecimalを使えばいいかと。
0151デフォルトの名無しさん
NGNG0152デフォルトの名無しさん
NGNGまでもないよね。余りだけ内部状態として持っておけばいいわけだから。
0153デフォルトの名無しさん
NGNG0154___
NGNG0155154
NGNG取り込み方がわからないのですが。。。
0156U ◆CZtFsGiu0c
NGNGpublic class Reciprocal {
private int current = 1;
private int n;
public Reciprocal(int n) {
this.n = n;
}
public int next() {
int ret = current * 10 / n;
current = current * 10 % n;
return ret;
}
public static void main(String args[]) {
int n = Integer.parseInt(args[0]);
Reciprocal obj = new Reciprocal(n);
for(int i = 0; i < 100; i++) {
System.out.println(obj.next());
}
}
}
0157デフォルトの名無しさん
NGNGおねがいします、
0158デフォルトの名無しさん
NGNGpublic static void main (String[] args) {
int i = 1;
int n = 2;
int t = 0;
boolean isPrime =false;
while(n <=10000){
while(n >= i-1){
if(n % i == 0){
t = t + i;
}
i++;
}
if(n == t)
isPrime = true;
if(isPrime)
System.out.println(n);
n++;
}
}
}
完全数を求める宿題ですが、以上のようなプログラムを作りました。
しかし、うまく行きません。どこがおかしいのでしょうか?
0159これでOK
NGNGclass Perfect {
public static void main (String[] args) {
int n = 2;
while(n <=10000){
int i = 1;
int t = 0;
boolean isPrime =false;
while(n > i){
if(n % i == 0){
t = t + i;
}
i++;
}
if(n == t)
isPrime = true;
if(isPrime)
System.out.println(n);
n++;
}
}
}
0160又はこれでOK
NGNGclass Perfect {
public static void main (String[] args) {
int n = 2;
while(n <=10000){
int i = 1;
int t = 0;
while(n > i){
if(n % i == 0){
t += i;
}
i++;
}
if(n == t)
System.out.println(n);
n++;
}
}
}
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNGちょっと英語で言ってくれんか?
0163デフォルトの名無しさん
NGNGありがとうございました
0164デフォルトの名無しさん
NGNGありがとうございました!
きっちり動いてくれました。
0165デフォルトの名無しさん
NGNGできます。
0167デフォルトの名無しさん
NGNGイコールだったらfalseを返すようにすればいいのです。
しかし、混乱を生むだけだと思います。
0168デフォルトの名無しさん
NGNG!str.equals( str2 );
0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG使えばいいじゃんとしか。
class MyClass {
public static void main(String[] args) {
MyClass.hoge();
}
static void hoge() {
・・・
}
}
0171デフォルトの名無しさん
NGNGmain関数で他のクラスのstaticなメソッドを(ry
0172デフォルトの名無しさん
NGNG使えばいいじゃんとしか。
class MyClass {
public static void main(String[] args) {
OtherClass.hage();
}
}
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGstaticじゃなくてpublicでしたorz
0175デフォルトの名無しさん
NGNG使えばいいじゃんとしか。
class MyClass {
public static void main(String[] args) {
AnotherClass ac = new AnotherClass();
ac.hige();
}
}
0176デフォルトの名無しさん
NGNG}
^
というエラーが出て何度か数え直したんですが原因の所が見つかりません。
お願いします。
class Stack{
private int index=-1;
private Object a[]=new Object[1000];
public void push(Object o){
index++;
a[index] = o; /* 受け取ったったデータを配列に入れる*/
}
public Object pop(){
index--;
System.out.println(a[index+1]); // 配列の中身を出力
}
}
class StackTest {
public static void main(String[] args) {
int i;
if(args.length < 1){
System.out.println("Put a word as the argument!");
System.exit(1);
}
Stack s = new Stack();
for(i=0;i<args.length;i++){
s.push(args[i]);
}
s.pop();//コマンドライン引数を順番にpopして1ずつ表示
}
}
0177デフォルトの名無しさん
NGNG|
|
ぱくっ|
/V\
/◎;;;,;,,,,ヽ
_ ム::::(,,゚Д゚)::| そんなネタで俺さまが釣られると思ってんのか!
ヽツ.(ノ:::::::::.:::::.:..|)
ヾソ:::::::::::::::::.:ノ
` ー U'"U'
とりあえず
> public Object pop()
ってのが何を意味してるのか分かるまで入門書を全編音読。
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNGpublic Object pop(){
index--;
System.out.println(a[index+1]); // 配列の中身を出力
}
を
public Object pop(){
index--;
System.out.println(a[index+1]); // 配列の中身を出力
return a[index+1];
}
とすればOK
0181デフォルトの名無しさん
NGNGワロタ
0182デフォルトの名無しさん
NGNG0183デフォルトの名無しさん
NGNGクラスの宣言→金型の作成
クラスの生成→金型をつかって成型(モノをつくる)
無理やり当てはめるとこんな感じ
0184デフォルトの名無しさん
NGNGクラスの生成はオブジェクト作成とみてFA?
0185デフォルトの名無しさん
NGNGでもクラスのキャスト(鋳造)という用語があるから生成はちょと違う言い方したほうがいいような・・・
0186デフォルトの名無しさん
NGNG例えば、A・Bという2つのクラスがあったとして、
new A(new B)
とさせたいのです。
0187デフォルトの名無しさん
NGNG何がやりたいのかわからん。
例通りのことなら B を引数にとる A のコンストラクタを定義すれば可能だが
それとここは宿題スレな
0188デフォルトの名無しさん
NGNGSimpleDateFormat b;
cは?
try{
a = b.parse(c);
}
catch(ParseException e){
System.out.println("err");
throw e;
}
メインクラスにある、日付をチェックするコードなのですがこれを抜き出して他のクラスのメソッドにしたい
(つまりチェックのコードだけを抜き出してチェック専用のクラスを作成)のですが
うまくメソッドにできません
どうか手助け願いますorz
0189デフォルトの名無しさん
NGNGいえ、これがそのまま宿題なんです。
0190デフォルトの名無しさん
NGNGB型の引数をもつコンストラクタを設定する
0191デフォルトの名無しさん
NGNG質問の意味がわからない。
0192デフォルトの名無しさん
NGNGいいから問題文全部を一字一句変えることなくそのまんまカキコしる。
0193デフォルトの名無しさん
NGNG問題は>>149の続きで、
new ReciprocalSum(new Reciprocal(m), new Reciprocal(n)) によって生成したオブジェクトの next() メソッドを
呼ぶたびに、 1/m + 1/n の十進小数展開の各桁の値(0〜9)が順に返ってくるように、クラス ReciproalSum を定義する。
注: ReciprocalSum は、もらってきた二つの Reciprocal オブジェクトのフィールド(インスタンス変数)に
直接アクセスして分母の値を読んではいけないものとします。
つまり、観測手段としては next() メソッドの呼出しだけを使って下さい。
という物なのです。
聞いてばかりで申し訳ないのですが、私にはいくら考えてもわかりませんでした。
よろしくお願いします。
0194デフォルトの名無しさん
NGNGpublic class ReciprocalSum {
private Reciprocal reciprocal1, reciprocal2;
public ReciprocalSum(Reciprocal reciprocal1, Reciprocal reciprocal2) {
this.reciprocal1 = reciprocal1;
this.reciprocal2 = reciprocal2;
}
public int next() {
return reciprocal1.next() + reciprocal2.next();
}
}
でいいんじゃないの?
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
NGNGそれ以外のときは一の位は0。
0197デフォルトの名無しさん
NGNG加算による桁上がりも考慮しなきゃな
0198デフォルトの名無しさん
NGNG>>196
0199M.B.
NGNG数値計算の問題なのか、プログラミングの問題なのかがちと微妙。
『プログラミング・セミナー』(共立出版)の「定跡を拾う」の章に、
1/nの小数展開の話があって、(「番兵」とか「生贄」とかの)コーディング技法の話が詳しく解説されてた。
コーディング技法を問われているのなら、ちょっと調べてみそ。
0200デフォルトの名無しさん
NGNG桁上がりが発生するのは一の位だけじゃないよ。
1/13 + 1/17とか考えてみな。
循環小数同士の加算では連続して数桁の桁上がりも考えられるしな。
この課題では分子が1だから適切な例ではないが、0.004444445 + 0.005555555とかな。
0201デフォルトの名無しさん
NGNG・ReciprocalSumを想定している。(まともなら、Reciprocal.add(Reciprocal r)だろ)
この二つだけで、この課題は糞。
こんな糞課題を出す講師からはまともなプログラマは生まれんな。
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNG201に対するささやかな反論のつもりかもしれないが、
StringTokenizerはトークン化の目的にしか使用されていない。
対象の文字列値は、別に存在するわけだ。
いわば、ユーティリティとしての設計になっている。
String→]StringTokenizer[→String[]
ゆえに、StringTokenizerは再初期化はせず、一回ごとに
インスタンス化するという設計になっている。
イテレータを外部化した形だね。
ゆえにStringTokenizerの挙動は元の文字列の動作に何の影響も与えない。
一方、Reciprocalは分数という数値としての実体をもちつつ、
イテレータとしても動くという馬鹿な設計になっている。
next()を既に呼び出したReciprocalのオブジェクトを別な場所に送ると、
次にnext()を呼び出した人は誤った値を受け取ることになる。
これはオブジェクトとして不完全であり、これを回避するには、
Iteratorパターン(内部化)や、StringTokenizer(外部化)のように
イテレータを別なオブジェクトとして独立させることになる。
0204デフォルトの名無しさん
NGNGReciprocalSumクラスをこうすればOK
class ReciprocalSum {
Reciprocal r1, r2;
LinkedList stack=new LinkedList();
static int MAX_SIZE=100;
ReciprocalSum(Reciprocal r1, Reciprocal r2) {
this.r1=r1;
this.r2=r2;
}
int next() {
if(stack.size()<=1) {
do {
stack.addLast(new Integer(r1.next()+r2.next()));
} while(((Integer)stack.getLast()).intValue()<=8 && stack.size()<MAX_SIZE);
int ka=0;
for(int i=stack.size()-1; i>=0; --i) {
int value=((Integer)stack.get(i)).intValue() + ka;
stack.set(i, new Integer(value%10));
ka=value/10;
}
}
return ((Integer)stack.removeFirst()).intValue();
}
}
0205204
NGNGあとMAX_SIZEは任意の数値で。
0206デフォルトの名無しさん
NGNGたまたまJava使ってるだけで、別にオブジェクト指向の勉強じゃないから。
0207見直したら間違えてた訂正
NGNGReciprocalSumクラスをこうすればOK
class ReciprocalSum {
Reciprocal r1, r2;
LinkedList queue=new LinkedList();
static final int MAX_SIZE=100;
ReciprocalSum(Reciprocal r1, Reciprocal r2) {
this.r1=r1;
this.r2=r2;
}
int next() {
if(queue.size()<=1) {
if(queue.isEmpty()) {
queue.addLast(new Integer(r1.next()+r2.next()));
}
do {
queue.addLast(new Integer(r1.next()+r2.next()));
} while(((Integer)queue.getLast()).intValue()>8 && queue.size()<MAX_SIZE);
int ka=0;
for(int i=queue.size()-1; i>=0; --i) {
int value=((Integer)queue.get(i)).intValue() + ka;
queue.set(i, new Integer(value%10));
ka=value/10;
}
}
return ((Integer)queue.removeFirst()).intValue();
}
}
0208デフォルトの名無しさん
NGNGそれはよくない。何でJavaなんだよぅ。そんなことするから
訳わかんないJavaコード書くやつが増えるんじゃないか・・・
0209デフォルトの名無しさん
NGNGJavaとしてマトモかどうかはともかく。
0210デフォルトの名無しさん
NGNG表面的なとこからして平気でクラス名を小文字で書いたり変数名は1〜3文字ばっかだったり。
とてもJava(というか現代プログラミング言語)の理念を理解しているとは思えん。
0211デフォルトの名無しさん
NGNGの解をニュートン法or逐次代入法で
求めるプログラムを教えて下さい。
初期値は0.5
収束判定は10^-10
です。
0212デフォルトの名無しさん
NGNG>>151の恥をそそげ!
0213デフォルトの名無しさん
NGNGそれは学生にわかりやすくしているだけだろう。
それにJavaを使っているからといって、SUNのコーディングスタイルに従わないと
いけないわけでもない。
君はSUNのコーディングスタイルが全ての人から共通の理解を得ているとでも勘違い
しているのか?
どうももう少し他の言語や思想を勉強してみる必要がありそうだね。
0214デフォルトの名無しさん
NGNGその程度なら JavaじゃなくてCでいいんじゃないの?
さっきの話だと、クラス構成も何だか無理やりな感じだったから
その辺りが、「理念」っていうことになったのかと。
常々思うのは、学生には負担になるがアルゴリズムの勉強とかを
複数言語を使って教えるっていうのはできないのかなぁ?
「アルゴリズムの勉強なんだから・・・」という話もでるだろうけど、純粋にアルゴリズムが
学びたければ、特定の実在(?)言語に依存して教えないで
psudo languageを作って、それで教えたほうが言語の癖がなくていいと思ってるし。
0215デフォルトの名無しさん
NGNGバカの代表はけーん
0216デフォルトの名無しさん
NGNGつまり、反論がないということか。
0217デフォルトの名無しさん
NGNGおもしろい馬鹿ですね
0218デフォルトの名無しさん
NGNGオブジェクト指向がさっぱりわからん。
例を示されてもよけい混乱する。JAVA歴4ヵ月独学じゃ無理なのか?
そんな漏れがオブジェクト指向が何か、理解できるいい手段を知っていたら教えてくださいです。。。
0219デフォルトの名無しさん
NGNGJava以外の言語歴は?Javaだけではよさが分かりにくいですよ。
0220デフォルトの名無しさん
NGNG0221213
NGNG書き込みだよ。
>>214の「JavaじゃなくてCでいいんじゃないの?」はJavaスレから逸脱するもので、
スレ違い。
そもそも>>210の講師はJavaで講義することが前提にある。
>>214後半については、アルゴリズムの重要性は確かに納得できるが、
疑似言語での講義は具体性を欠くことからあまり推奨すべきではないと思う。
多くの場合、それは座学に終わると思う。
プログラミングは実学である。
0222デフォルトの名無しさん
NGNG煽るわけじゃないんだけど、アルゴリズムの授業で使う言語の特性(性質?)で
アルゴリズムの本質の理解が妨げられるといやだな、と思ったもので。
何らかのプログラム言語を知っていたら、コードの意味がアルゴリズムのエッセンスかどうか
わかるような気はするんですが・・・
0223デフォルトの名無しさん
NGNG0224デフォルトの名無しさん
NGNG最初の1文から意味がわかりません。
0225デフォルトの名無しさん
NGNG本を読む。
概念自体は全然難しくない・・・ていうかむしろ自然なはずだけど。
0226デフォルトの名無しさん
NGNG0227218
NGNGC 9ヵ月(やっとポインタが分かった程度)
Perl 半年(ゲストブック程度,オブジェクト指向サパーリ)
PHP 1ヵ月
Visual〜 買ったばかり
です。言語の違いは…処理がC,PHP,Perlの準に早いということぐらいしか…
といっても、CはWebProgではやっていません。
>225
多分理解できればすごく簡単なことだろう、とは思うのですが… ちなみに入門書は持っています。
でもクラスやらインスタンスやら言われると分からなくなります。。。
0228デフォルトの名無しさん
NGNGオブジェクト指向の理解でつまづいてる場合じゃないよ。
これからは、オブジェクト指向をさらに発展させたアスペクト指向が
メインになるのだから。
アスペクト指向の方も力を入れて勉強しないと。
若いプログラマーほど、どんどん先に進んでるからね。
0229デフォルトの名無しさん
NGNGそういえば何度か聞いたあります。オブジェクト指向が余計分からなくなるとか…
0230デフォルトの名無しさん
NGNG0231M.B.
NGNGオブジェクト志向はそれほど意識せずともよいと思われ。
だいたい、通常のプログラムはほとんど基本型だけで間に合うなり。
オブジェクトもCの構造体の代りに使うことがほとんどだし、クラス定義とインスタンスも宣言と実体と考えてさほど問題なし。
漏れ自身は動的なメモリ管理(参照カウンタによるメモリ管理と自動ちり集め)が使えるというメリットが一番重要と考えている。
0232デフォルトの名無しさん
NGNGここの第2章はすばらしい洞察。
初心者には結構難しいかもしれないが
0233デフォルトの名無しさん
NGNGそれはちょっとあまりに。。。
例えるなら、2〜30年前に「構造化プログラミングはそれほど意識せず
とも良いと思われ」と言ってるのと同じだよ。。。
0234M.B.
NGNG「(数十行程度の、Cなら関数レベルの)プログラムが書ける」程度の段階だと構造化プログラミングの有難みがよく分からんのと同じで、
オブジェクト志向の有難みは「使い回しのきくコード」がある程度蓄積されないとわからんような気がする。
確かにオブジェクト志向のコードは再利用が楽っちゅーか、保守改修が安全かつ効率よく行なえるというメリットがあるのだが、
(インタフェースにしろ内部構成にしろ)ある程度こなれたコードがないと、そのメリットが活かせないうらみがある。
もともと他の言語でしててJavaに乗り換えるんなら確かにJavaのオブジェクト志向というありかたは重要だが、
プログラム初心者は「とにかく動かす」ところから始めて(Javaはそういう使い方に向いている)、それからオブジェクト志向を意識したプログラムに書き換えたほうがよさそうに思われ。
0235デフォルトの名無しさん
NGNGああ、初心者は最初はオブジェクト指向を意識しなくてもよいということか。
まあオブジェクト指向とオブジェクト指向プ(ry
0236デフォルトの名無しさん
NGNGやつがいたなあ。ほとんどくだらん精神論だったけど。
0237デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG0240M.B.
NGNGとはいえ「ありものを適当にギッてきてちょこっと直したらそれらしく動き、
しかもヘンなことが起きない」っつーのは開発の王道だし。
それ以外に「どこをどう直したらいいかの見当がつけやすい」っつーのも、
オブジェクト志向のメリットとしてあるけどさ。
「なんでもかんでもオブジェクト」っつーのは、理念としては美しいんだが、
やっぱり設計レベルの話っしょ。初心者はそこまで大規模なシステム組まんと思う。
0241デフォルトの名無しさん
NGNG0242デフォルトの名無しさん
NGNG属性や動作や継承などについて説明してるけど、あれなら初心者でも理解し易いと思うけどな
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNGSunのJavaチュートリアルは自転車だったね。
0245デフォルトの名無しさん
NGNGモノに例える場合ですが、それでパラメータとメソッドと戻り値の関係は分かりましたが、オブジェクトとクラスとインスタンスとパッケージの関係がどうしても分かりません。何かいい例はありませんか?
0246デフォルトの名無しさん
NGNGオブジェクト- 実際の自転車
0247U ◆CZtFsGiu0c
NGNGオブジェクト = クラスのインスタンス です。クラスってのは単なる定義であって、実際に
クラスから生成されて実行可能になったものがインスタンスつまりオブジェクトです。
パッケージは単なる名前空間、つまりクラス名が衝突しないためのクラスカテゴリです。
0248デフォルトの名無しさん
NGNGオブジェクト-自転車という概念
クラス-自転車の設計図
インスタンス(オブジェクト)-本物の自転車
パッケージ-ブランド名
0249デフォルトの名無しさん
NGNG結局我々は >>245に オブジェクト指向という名のクラスのインスタンスを求められているのか?
0250デフォルトの名無しさん
NGNG九九の表を System.out.print(); を使って
for文、while文、do while文を作成しなさいという問題なのですが
表示が
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 ,,,,,,,
,,,,,,,
9 18 27 36 45 54 63 72 81
こんな感じです
初歩かもしれませんが、よろしくお願いします(*- -)(*_ _)ペコリ
0251デフォルトの名無しさん
NGNGpublic static void main(String[] args) {
System.out.print("for (int y = 1; y < 10; y++) {¥n");
System.out.print(" for (int x = 1; x < 10; x++) {¥n");
System.out.print(" System.out.print((x*y)+" ");¥n");
System.out.print(" System.out.println();¥n");
System.out.print(" }¥n");
System.out.print("}");
}
0252デフォルトの名無しさん
NGNGclassとmainも出力してやれよ
0253M.B.
NGNG> for文、while文、do while文を作成しなさいという問題なのですが
ここんとこが意味不明だが
for (int n = 1;n < 10;n += 1) {
for (int m = 1;m < 10;m += 1) {
int x = n * m;
if (m < 9) {
System.out.print("" + x + " ");
} else {
System.out.print("" + x + "\n");
}
}
}
0254デフォルトの名無しさん
NGNGfor(int a=1; a<10; ++a) {
for(int b=1; b<10; ++b) {
System.out.print(a*b + " ");
}
System.out.println("");
}
0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNG0258M.B.
NGNGこれでどうだ。
for (int n = 1;n < 10;n += 1) {
while (true) {
int m = 1;
do {
System.out.print((n * m) + " ");
m += 1;
} while(m < 9);
System.out.print((n * m) + "\n");
break;
}
}
0259デフォルトの名無しさん
NGNG0261M.B.
NGNG言われると思った……orz
0262M.B.
NGNGじゃあ、こんなもんで。
for (int n = 1;n <= 9;n += 1) {
int [] dan = new int[9];
int sum = 0;
int cnt = 1;
while (cnt <= 9) {
sum += n;
dan[cnt - 1] = sum;
cnt += 1;
}
StringBuffer linebuf = new StringBuffer("");
cnt = 1;
do {
linebuf.append(dan[cnt - 1] + " ");
cnt += 1;
} while(cnt < 9);
linebuf.append(dan[cnt - 1] + "\n");
System.out.print(linebuf.toString());
}
0263MーH
NGNGおねがいします。
0264デフォルトの名無しさん
NGNG0265デフォルトの名無しさん
NGNG色相画像から色相ヒストグラムを表示する方法教えてください
0266250
NGNG256さんのいう通り3パターンで作るということです
0267デフォルトの名無しさん
NGNGって宿題なんですが、どなたかよろしくお願いします。
配列を使った簡単な問題にもかかわらずわからないです。。。
0268デフォルトの名無しさん
NGNGあなたの使うTurtleクラスがどんなものかわからないので無理です。
>>267
配列を使わなきゃいけないんですか?
0269267
NGNGそうらしいです。
入力した整数または実数の値を、入力した順番と逆順に表示するプログラム
っていう問題なんですが・・・
0270デフォルトの名無しさん
NGNGなんていう無茶な課題が出ました。
助けてください。
0271デフォルトの名無しさん
NGNG/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< くっちゃらはぴはぴ!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< くっちゃらはぴはぴ!
Py厨〜〜〜〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」  ̄ / /
0272デフォルトの名無しさん
NGNGああ、「入力順と逆」か。
"ABCDE"→"EDCBA"かと思った。
import java.io.*;
public class Inverse {
public static void main(String[] args) {
String[] strings = new String[100];
int index = 0;
System.out.println("Input some strings. ('@' to quit)");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
try {
String str = br.readLine();
if (str.equals("@")) break;
strings[index] = str;
index++;
}
catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("== RESULT ==");
while (true) {
if (index == 0) break;
index--;
System.out.println(strings[index]);
}
}
}
0273デフォルトの名無しさん
NGNGま た お ま え か !
・・・がんがれ
0274デフォルトの名無しさん
NGNGpublic class E {
private final Random random = new Random();
public int next() {
return random.nextInt(10);
}
}
0275デフォルトの名無しさん
NGNGないならマクローリン展開で計算しちゃおうか・・・
0277デフォルトの名無しさん
NGNGEクラスをこうすればOK
class E {
double e = Math.E % 1;
int next() {
e*=10;
int num=(int)(e/1);
e%=1;
return num;
}
}
0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNG0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNGSystem.ou.println( "△" );
System.ou.println( "▲" );
System.ou.println( "▽" );
System.ou.println( "▼" );
好きなのを選べ
0282デフォルトの名無しさん
NGNG0283M.B.
NGNGfor (int n = 1;n <= 9;n += 1) {
StringBuffer linebuf = new StringBuffer("");
int sum = 0;
for (int m = 1;m <= 9;m += 1) {
sum += n;
linebuf.append(sum);
if (m < 9) {
linebuf.append(" ");
}
}
System.out.print(linebuf.toString() + "\n");
}
0284M.B.
NGNGint n = 0;
while(++n <= 9) {
StringBuffer linebuf = new StringBuffer("");
int sum = 0;
int m = 1;
while(m++ < 9) {
sum += n;
linebuf.append(sum + " ");
}
sum += n;
linebuf.append(sum + "\n");
System.out.print(linebuf.toString());
}
0285M.B.
NGNGint n = 1;
do {
StringBuffer linebuf = new StringBuffer("");
int sum = 0;
int m = 1;
do {
sum += n;
linebuf.append(sum + " ");
} while (++m < 9);
sum += n;
linebuf.append(sum + "\n");
System.out.print(linebuf.toString());
} while (++n <= 9);
0286M.B.
NGNGfor (int n = 1;n <= 9;n += 1) {
StringBuffer linebuf = new StringBuffer("");
int sum = 0;
for (int m = 1;m < 9;m += 1) {
sum += n;
linebuf.append(sum + " ");
}
sum += n;
linebuf.append(sum + "\n");
System.out.print(linebuf.toString());
}
0287M.B.
NGNGint n = 1;
while(n <= 9) {
StringBuffer linebuf = new StringBuffer("");
int sum = 0;
int m = 1;
while(m++ < 9) {
sum += n;
linebuf.append(sum + " ");
}
sum += n;
linebuf.append(sum + "\n");
System.out.print(linebuf.toString());
n += 1;
}
0288デフォルトの名無しさん
NGNG乙
0289デフォルトの名無しさん
NGNG例えば、コンソール上で以下のようなコマンドライン引数を使うとします。
java Test 123a456b789c0 098d765e432f1 8g8h8 9i9j9
で、以下の
abcdefghij
12345678900987654321888999
ように、文字列と数字をわけてそれぞれ出力するコードの書き方がわかりません。。。
どなたか、ご教授頂ければ、幸いです。。。
0290デフォルトの名無しさん
NGNGpublic class Test {
public static void main(String[] args) {
StringBuffer alphabets = new StringBuffer();
StringBuffer numbers = new StringBuffer();
for ( int i = 0; i < args.length; i++ ) {
for ( int j = 0; j < args[i].length(); j++ ) {
char ch = args[i].charAt(j);
if ( '0' <= ch && ch <= '9' ) {
numbers.append( ch );
} else if ( 'a' <= ch && ch <= 'z' ) {
alphabets.append( ch );
}
}
}
System.out.println( alphabets.toString() );
System.out.println( numbers.toString() );
}
}
0291289
NGNGああああ、ありがとうございます!!動きました!
僕は一日中考えてもわからなかったのに、数分で答え頂けるとは。。。
本当に感謝です!
0292289
NGNGコンソール上で以下のように、一個だけコマンドライン引数を使うとして
java Test 1235679
下のようにカンマ編集して出力するコードを教えていただけないでしょうか?
12,356,79
度々ですが、よろしくお願いします。。。
0293デフォルトの名無しさん
NGNGそれどういうルールでカンマ入れてるのよ。
0294289
NGNGいや、特にルールは気にせず、結果がそうなればおっけーです。。。
0295デフォルトの名無しさん
NGNG下のソースをrecursion treeにしてあらわしたいのですがいまいちわかりません。
よろしくおねがいします。。。
import java.io.*;
public class Hanoi {
private final static int disks = 3;
public static void Move(int count, char start, char finish, char tmp) {
if (count > 0) {
Move(count - 1,start,tmp,finish);
System.out.println("Moving a disk from " + start + " to " + finish);
Move(count - 1,tmp,finish,start);
}
}
public static void main(String[] args) {
Move(disks,'A','C','B');
}
}
0296デフォルトの名無しさん
NGNGどうやったらいいでしょうか?
お願いします!助けてください・・・・!
0297デフォルトの名無しさん
NGNGルール気にせずだと、
System.out.println("12,356,79");
でもいいって事になっちゃうんだけど。
前提条件はちゃんとしよう!
0298デフォルトの名無しさん
NGNG>いや、特にルールは気にせず、結果がそうなればおっけーです。。。
では、お言葉に甘えて・・・
class Test{
public static void main(String[] args) {
if (args[0].equals("1235679"))
System.out.println("12,356,79");
}
}
0299デフォルトの名無しさん
NGNGそのプログラムで何をしたいのか、もう少し具体的に書いてください。
>>296
もうちょっと具体的に質問を書いてください。
ちなみに、日本語で済む所に無闇に横文字を使うと、
某朝鮮人東大教授みたいに空知識の空威張りと見られやすいです。
0300デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
NGNG>>295ではクラス名からハノイの塔であることがわかります。
>>296のfillOvalはGraphicsクラスのメソッド名です。
ちなみに、知識がないのに発言してると、
某元総理大臣みたいに空知識の空威張りと見られやすいです。
0303デフォルトの名無しさん
NGNGMove(3,A,C,B)
/ \
Move(2,A,B,C) Move(2,B,C,A)
/
こんな感じで。
0304デフォルトの名無しさん
NGNGMove(3,A,C,B)
/ \
Move(2,A,B,C) Move(2,B,C,A)
/
どういう順序になっているのか、どの動きのときにどの表示(例えばMove a disk to A fromC)
になるのかわかりません。
よろしくおねがいします。。
0305デフォルトの名無しさん
NGNGどなたか教えてください。
1+1=2みたいに表示させたいのですがどうしたらいいですか?
あと+を入力したら足し算、−を入力したら引き算という具合に。
import java.io.*;
class Inputcalc{
public static void main(String[] args) throws IOException {
InputStreamReader stream = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(stream);
String str;
double xx, yy;
System.out.print("Enter: ");
str = in.readLine();
xx = Double.parseDouble(str);
//ここで+-*/のいずれかを入力する。
System.out.print("Enter: ");
str = in.readLine();
yy = Double.parseDouble(str);
//計算結果をだす
in.close();
}
}
0306デフォルトの名無しさん
NGNGimport java.io.*;
class Inputcalc{
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String str;
double xx, yy;
String operator;
System.out.print("Enter x: ");
str = in.readLine();
xx = Double.parseDouble(str);
System.out.print("Enter operator: ");
operator = in.readLine();
System.out.print("Enter y: ");
str = in.readLine();
yy = Double.parseDouble(str);
String result;
if (operator.equals("+")) {
result = xx + yy;
} else if (operator.equals("-")) {
result = xx - yy;
} else if 以下略
System.out.println(xx+" "+operator+" "+yy+" = "+result);
}
}
0307デフォルトの名無しさん
NGNGおいおい、なんでこっちが質問者の真意を汲んであげなきゃいけないんだよ。
泣いてる幼稚園児を相手にしてるんじゃないんだから。
何を聞きたいのかを整理して相手に伝えることもできない香具師はJava以前に国語の勉強(ry
まあ>>299がバカっぽいことには同意だが。
0308デフォルトの名無しさん
NGNGディスクを移動するたびに「手順」オブジェクトを作ってツリーに格納してゆき
移動がすべて終わったらツリーの中身をまとめて表示するのがいいと思う。
移動のたびにSystem.out.println()ではツリーに見えるように表示できないっぽい。
0309デフォルトの名無しさん
NGNGもっと具体的に書いてくれよ。
とりあえず描画色を変えるのはjava.awt.GraphicsクラスのsetColor(java.awt.Color)で。
例えば、配列y[x]に「xに対応するyの値」が入ってるとすると
public void paint(Graphics g) {
for (int x=0; x < y.length; x++) {
if (y[x] < 0) {
g.setColor(Color.RED);
}
else {
g.setColor(Color.BLACK);
}
g.fillOval(x, y[x], 1, 1);
}
}
とすればy[x] < 0のとき赤色、そうでないとき黒色になる。
x = 10 以降を赤色にしたいなら if (x >= 10) にすればいい。
0310ハノイの塔・ツリー図 その1
NGNGコンソール出力だと難しいのでグラフィックにしてみました。
下記のプログラムをコンパイルして表示してみてください。
ツリー図面が出ますので。
各マス内の左上のカッコ内の数字が、実行順序です。
上の段がメソッドの各引数です。下の段がメッセージです。
0311デフォルトの名無しさん
NGNG0312>>295 ハノイの塔・ツリー図 その2
NGNGimport java.awt.image.*;
import java.awt.*;
import java.awt.color.*;
import javax.swing.*;
public class Hanoi {
private static final int disks = 3;
private static final int WID=160;
private static final int HEI=40;
private static BufferedImage img=new BufferedImage((1<<disks-1)*WID, disks*HEI*2, BufferedImage.TYPE_INT_ARGB);
private static Graphics2D g=img.createGraphics();
private static int order=1;
private static int[] drawC=new int[disks];
public static void Move(int count, char start, char finish, char tmp, Point apt) {
if(count > 0) {
int index=disks-count;
int x = (img.getWidth()-(1<<index)*WID)/2 + WID*drawC[index];
int y = index*HEI*2;
g.drawRect(x, y, WID, HEI);
Point pt=new Point(x+WID/2, y);
if(apt!=null) g.drawLine(apt.x, apt.y, pt.x, pt.y);
pt.translate(0, HEI);
++drawC[index];
Move(count-1, start, tmp, finish, pt);
g.drawString("("+order+") Move("+count+","+start+","+finish+","+tmp+")", x, y+16);
g.drawString("Moving a disk from "+start+" to "+finish, x, y+(HEI/2)+16);
++order;
System.out.println("Moving a disk from " + start + " to " + finish);
Move(count-1, tmp, finish, start, pt);
}
}
0313>>295 ハノイの塔・ツリー図 その3
NGNGg.setColor(Color.white);
g.fillRect(0,0,img.getWidth(),img.getHeight());
g.setColor(Color.black);
Move(disks,'A','C','B', null);
JFrame frame=new JFrame();
JLabel label=new JLabel(new ImageIcon(img));
JScrollPane scroll=new JScrollPane();
scroll.getViewport().add(label);
frame.getContentPane().add(scroll);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
0314デフォルトの名無しさん
NGNGswingをつかってJtableの中のJTextArea(JTextField?)内に
Loadボタンを押したとき別ファイルから最初の行を除いて表示させたいのですが、
どうやればいいんでしょうか?
えっとたとえば、
1234
Apple
Banana
って書いてある別ファイル(.txt)をFileReaderでプログラムの中に読み込んで
このうち
Apple
Banana
のみをJtable内のボタンを押したときにJTextAreaに表示したいのです。
よろしければご教授くださいませ。
0315デフォルトの名無しさん
NGNG実行したところ
2.java:23: 互換性のない型
検出値 : double
期待値 : java.lang.String
{ result = xx + yy; }
^
2.java:26: 互換性のない型
検出値 : double
期待値 : java.lang.String
{ result = xx - yy; }
^
2.java:29: 互換性のない型
検出値 : double
期待値 : java.lang.String
{ result = xx * yy; }
^
2.java:32: 互換性のない型
検出値 : double
期待値 : java.lang.String
{ result = xx / yy; }
というメッセージが出ます。
何とかしようと考えましたがどうしたらいいかわかりません。
どうすればこの問題を解決できますか?
0316デフォルトの名無しさん
NGNG手元にあるJavaの入門書、特に「変数の型」について書いてある部分を読むと
幸せになれると思う。
とこれだけじゃ何だから、
> double xx, yy;
> String result;
と
> result = xx + yy;
をよーく見比べてみよう。
0317デフォルトの名無しさん
NGNGもうしわけない。
String result;
↓
double result;
に直してくれ。
0318デフォルトの名無しさん
NGNGプログラム修正後エラーが1つありましたが
今回は自分で解決することができました。
いろいろ教えてくれてどうもありがとうございました。
0319デフォルトの名無しさん
NGNG「乱戦の中敵や銃弾から逃げ回り、残りの敵が1体となったとき攻撃に移る」
ようなロボットを作らないといけないんです。
よろしくお願いします。
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNGちょっと曖昧過ぎない?
逃げ回るアルゴリズムが肝だと思うんだが・・・
0322デフォルトの名無しさん
NGNG見事な丸投げだ。
感動した。
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNG0325289
NGNGあー、そうなっちゃいますよね。
ごめんなさい。。。
>298
返答遅くなって申し訳ありません。
あと、ご回答ありがとうございます!感謝です!
やはり、僕のすごい説明不足でした。ごめんなさい。
ルールとしては、与えられるコマンドライン引数は可変するものだと考え、
三桁ごとにカンマを入れていきます。
つまり、コンソール上で
java Test 123456789
と入力すれば、
123,456,789
と三つくぎりで出力され、
java Test 75612893
と入力すれば、
75,612,893
と出力されるコードです。わがまま言って、申し訳ないです。
どうか、よろしくお願いします。。。
0326デフォルトの名無しさん
NGNGimport java.io.*;
public class Comma {
public static void main(String[] args) {
try {
System.out.print("Input number:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
for (int i = str.length()-3; i > 0; i -= 3) {
str = str.substring(0, i)+","+str.substring(i, str.length());
}
System.out.println("Result: "+str);
}
catch (IOException e) {
e.printStackTrace();
}
}
}
0327289
NGNGさすがです!ありがとうございます!
僕にとっては複雑なコードなので、後でAPIリファレンスを見ながら勉強させて頂きます。
ただ、ここでも僕の説明下手が出ちゃったのですが、
コンソールではなく、コマンドプロンプトで、、、という考えに修正させてください(汁)。
コマンドプロンプトで、インタプリタを実行時にコマンドライン引数を使うということです。
コマンドプロンプトで以下のように
java Test 123456789
と入力したら、
123,456,789
と、三桁区切りで出力されるコードです。
ほんと、度々、すみません。。。
0328デフォルトの名無しさん
NGNGあのね、説明不足じゃなくてね、
最初の例は二桁目と五桁目でカンマが入っていて三桁ごとに
カンマが入ってなかったわけ。
だからみんなルールを確認していたわけ。
不足じゃなくて間違っていたんだよ、それ理解してる?
0329289
NGNGあ、そうですね。。。
今気がつきました。
みなさん、申し訳ないです。。。
0330M.B.
NGNG……しかし何だな、C プログラマ生活が長かった漏れとしては、
Java のファイル I/O の表現っつーのはどうも馴染めんな。
もちろん、ただ FILE * と書いてあって何をするのかわからん C のほうが
設計として悪いっつーのは重々承知しとるんだが。
0331デフォルトの名無しさん
NGNGバイトストリームと文字ストリームが切り分けられていて、
行指向文字ストリームなど扱おうとするとインスタンス生成のときマンドクサイが
慣れてみるとこれはこれで便利だお。
0332M.B.
NGNG> 慣れてみるとこれはこれで便利だお。
その境地にはまだ達しておりませぬ……ガクシorz
修行します。サンクス。
0333デフォルトの名無しさん
NGNGストリーム自体、C++のパクリじゃないですか?
0334デフォルトの名無しさん
NGNGimport java.text.*;
public class Test
{
public static void main(String[] args){
try{
long l = Long.parseLong(args[0]);
Format f = new DecimalFormat("#,###");
System.out.println(f.format(l));
for(int i=1; i<args.length; i++){
f = new DecimalFormat(args[i]);
System.out.println(f.format(l));
}
}
catch(ArrayIndexOutOfBoundsException ex){
System.out.println("値入れれ");
}
catch(NumberFormatException ex){
System.out.println("変なの入れるな");
}
}
}
長いのはむりぽ。
0335289
NGNGありがとうございました。
最初に頂いた、ソースで自分なりにいじって出来るようになりました。
今回はすごく勉強になりましたです。
もう少し勉強して、出直します!でわでわ。
0336デフォルトの名無しさん
NGNG0337デフォルトの名無しさん
NGNGCから入るとなかなかiostreamを使う気にはならんよ
わざわざiostreamを使う利点といえば標準入力の入力チェックが出来るくらいだからなぁ・・・
0338デフォルトの名無しさん
NGNG縦軸がピクセル数、横軸が色相です。
0339古代帝國富士皇朝総帥・伯生旭
NGNG下記に色相ヒストグラムを表示するプログラムを書きますので
コピペしてコンパイルしてみてください。
0340色相ヒストグラムその1
NGNGimport java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class Hue {
public static void main(String[] args) {
showGraph( getHueMap() );
}
0341色相ヒストグラムその2
NGNGJFileChooser fc=new JFileChooser();
fc.showDialog(null, "イメージ選択");
File file=fc.getSelectedFile(); if(file==null) System.exit(0);
BufferedImage img=null;
try {
img=ImageIO.read(file);
} catch(Exception ex) {
System.exit(0);
}
int[] hMap=new int[100];
for(int y=0; y<img.getHeight(); ++y) {
for(int x=0; x<img.getWidth(); ++x) {
Color col=new Color(img.getRGB(x,y));
float[] hsb=Color.RGBtoHSB(col.getRed(), col.getGreen(), col.getBlue(), null);
++hMap[(int)(hsb[0]*100)];
}
}
int max=0;
for(int i=0; i<hMap.length; ++i) if(hMap[i]>max) max=hMap[i];
for(int i=0; i<hMap.length; ++i) {
hMap[i]=(int)((double)hMap[i]/max*100);
}
return new int[][] {hMap, {max}};
}
0342色相ヒストグラムその3
NGNGint[] hMap=param[0];
int max=param[1][0];
BufferedImage graph=new BufferedImage(680,420, BufferedImage.TYPE_INT_ARGB);
Graphics2D g=graph.createGraphics();
g.setBackground(Color.white);
g.clearRect(0,0,graph.getWidth(),graph.getHeight());
g.setColor(Color.black);
g.drawRect(0,0,600,400);
for(int i=0; i<hMap.length; ++i) {
if(hMap[i]==0) continue;
g.setColor(Color.blue); g.fillRect(i*6, (100-hMap[i])*4, 6, hMap[i]*4);
g.setColor(Color.black); g.drawRect(i*6, (100-hMap[i])*4, 6, hMap[i]*4);
}
g.drawString("色相0", 0,416);
g.drawString("色相50", 280,416);
g.drawString("色相100", 550,416);
g.drawString(max+"ピクセル", 600,16);
g.drawString("0ピクセル", 600,400);
g.dispose();
JFrame frame=new JFrame();
JLabel label=new JLabel(new ImageIcon(graph));
frame.getContentPane().add(label);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
}
0343古代帝國富士皇朝総帥・伯壬旭
NGNG適当なイメージファイルを選択してください。
そうすると、そのイメージの色相ヒストグラムが出ますので。
0344デフォルトの名無しさん
NGNGさすがは神。
乙。
0345古代帝國富士皇朝総帥・伯壬旭
NGNGほほほ。その通り。
私は宇宙神ザイン(時霊ザイン)でもある。
ちなみ富士皇朝は実在の組織だ。
0346デフォルトの名無しさん
NGNGマジかよ。
組織も何もない>>345だけのオリジナル神のほうが好感が持てたが、
それはこのスレとは別の話だな。
0348338
NGNG/*
<APPLET CODE="Hue.class" WIDTH=650 HEIGHT=500 >
</APPLET>
*/
とタグを埋め込んでappletviewerを起動したのですが
アプレットは初期化されていませんとでます何が間違えているんでしょうか?
0349デフォルトの名無しさん
NGNGアプレットじゃないから。
シェルから実行しる。
0350古代帝國富士皇朝総帥・伯壬旭
NGNGコンパイルした実行ファイルを、そのままjava.exeで起動してください。
0351デフォルトの名無しさん
NGNG0352古代帝國富士皇朝総帥・伯壬旭
NGNGアップレットに直したので、これをコピペしてアプレットで実行してください。
アプレットサイズは、横680、縦420で。
0353色相・その1
NGNGimport java.awt.*;
import java.awt.image.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class Hue extends JApplet {
public void start() {
showGraph( getHueMap() );
}
int[][] getHueMap() {
JFileChooser fc=new JFileChooser();
fc.showDialog(null, "イメージ選択");
File file=fc.getSelectedFile(); if(file==null) System.exit(0);
BufferedImage img=null;
try {
img=ImageIO.read(file);
} catch(Exception ex) { System.exit(0); }
int[] hMap=new int[100];
for(int y=0; y<img.getHeight(); ++y) {
for(int x=0; x<img.getWidth(); ++x) {
Color col=new Color(img.getRGB(x,y));
float[] hsb=Color.RGBtoHSB(col.getRed(), col.getGreen(), col.getBlue(), null);
++hMap[(int)(hsb[0]*100)];
}
}
int max=0;
for(int i=0; i<hMap.length; ++i) if(hMap[i]>max) max=hMap[i];
for(int i=0; i<hMap.length; ++i) hMap[i]=(int)((double)hMap[i]/max*100);
return new int[][] {hMap, {max}};
}
0354色相・その2
NGNGint[] hMap=param[0];
int max=param[1][0];
BufferedImage graph=new BufferedImage(680,420, BufferedImage.TYPE_INT_ARGB);
Graphics2D g=graph.createGraphics();
g.setBackground(Color.white);
g.clearRect(0,0,graph.getWidth(),graph.getHeight());
g.setColor(Color.black);
g.drawRect(0,0,600,400);
for(int i=0; i<hMap.length; ++i) {
if(hMap[i]==0) continue;
g.setColor(Color.blue); g.fillRect(i*6, (100-hMap[i])*4, 6, hMap[i]*4);
g.setColor(Color.black); g.drawRect(i*6, (100-hMap[i])*4, 6, hMap[i]*4);
}
g.drawString("色相0", 0,416);
g.drawString("色相50", 280,416);
g.drawString("色相100", 550,416);
g.drawString(max+"ピクセル", 600,16);
g.drawString("0ピクセル", 600,400);
g.dispose();
JLabel label=new JLabel(new ImageIcon(graph));
getContentPane().add(label);
setSize(label.getPreferredSize().width, label.getPreferredSize().height);
setVisible(true);
}
}
0355338
NGNG>>353-354をコピペ→コンパイル→アプレット実行したんですが
やはりNoClassDefFoundErrorでてしまいます。
何が原因かもわからないペーペーですいません。
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGパッケージを意識してない罠とみた
ファイルは untitled60 というディレクトリに入ってて、javaコマンドを実行しているのは
そのディレクトリの一つ上のディレクトリでつか?
0358338
NGNG公開されているSwingのアプレットは問題なく実行できました
>>357
D:\JAVA\untitled60の中にHue.java
コマンドプロンプトから
C:\xxxxxxx\yyyyyyyy>d:
D:>cd\java
D:\JAVA>javac untitled60\Hue.java
D:\JAVA>appletviewer untitled60\Hue.java
としたんですがアプレットは初期化されていませんとでます。
これは思いっきり間違えてますか?
0359デフォルトの名無しさん
NGNG・・・・・・・・・orz
いつからJavaはスクリプト言語になったのだろう?
0360338
NGNG初心者中の初心者ですorz
こんな知識でスレに丸投げで頼んだ自分の愚かさに気づきました
ttp://www2.ocn.ne.jp/~notes/java/java2-13.html
0361デフォルトの名無しさん
NGNG0363デフォルトの名無しさん
NGNGそれなら>>358のどこが間違ってるのか想像がつくはずだ
0364338
NGNGわかりましたorz本当に申し訳ありません。勉強してきます
ここでふと疑問が
>>339さんの書いてくれたやつには色相0、50、100となってますが
色相は0°〜359°までのはずなんですがただの表記ミスってだけですよね?
それともこのコードだと100°までしかないんですかね?
0365M.B.
NGNGスレ違いどころか板違いだが解説しよう。
ここで言ってる「色相」はマンセルカラー(HSB系)の色相。
マンセル系では色をH(Hue)色相・S(Saturation)彩度・B(Brightness)明度で表し、
0.0 <= H < 1.0 (1.0は含まず)
0.0 <= S <= 1.0
0.0 <= B <= 1.0
つーことになっとるのよ。それを100で正規化してるワケ。
ちなみに明度・彩度の場合は、(sMap とか bMapとかやった場合)配列の次元を+1せんと、領域外参照になる。
詳細は「色 HSB系」あたりでググれ。
0366デフォルトの名無しさん
NGNG0367M.B.
NGNG色覚とかに関係する画像処理プログラムを書いたときに、上司に教わった。
なんでも上司の親父さんが塗料製造会社で塗料の開発とかやってた人で、
家にはマンセル・カラーチャートやら『色材協会誌』やら『色の常識』(日本規格協会)やらが
普通にあったんだそうだ。
0368M.B.
NGNG池田 光男/芦沢 昌子『どうして色は見えるのか―色彩の科学と色覚』
池田光男『眼はなにを見ているか―視覚系の情報処理』
(ともに平凡社)
0369デフォルトの名無しさん
NGNGここを参考にすればいけるはかな? 私は画像処理やったことないので判りません
http://tomari.org/main/applets/iro/hsb.html
http://tomari.org/main/applets/img/image2a.html
0370古代帝國富士皇朝総帥・伯壬旭
NGNGそなたの富士皇朝への入朝を認め、帝士の資格を授与する。
0371M.B.
NGNG有難き幸せヘヘーツorz
0372デフォルトの名無しさん
NGNG自分で書いたアイコンに入れ替えたいのですが
どうにも替わってくれません。
何が悪いのでしょうか?
0373デフォルトの名無しさん
NGNGimport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Lesson{
public static void main(String argv[]){
GameFrame gf=new GameFrame();
}}
class GameFrame extends JFrame{
MenuBar menubar;
Menu game;
Menu help;
MenuItem MenuItem1;
MenuItem MenuItem2;
MenuItem MenuItem3;
ImageIcon icon = new ImageIcon("ii.jpg");
GameFrame(){
setSize(500,500);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("あ");
//ここでアイコンを入れ替えようとしています
ImageIcon icon = new ImageIcon("icon.jpg");
game = new Menu("あ");
help = new Menu("あ");
menubar = new MenuBar();
menubar.add(game);
menubar.add(help);
}}
0374デフォルトの名無しさん
NGNG上から16行目の
ImageIcon icon = new ImageIcon("ii.jpg");
は消し忘れです
0375デフォルトの名無しさん
NGNGsetTitle("あ");
の次に
setIconImage(icon.getImage());
の一文を加えればOK
0376デフォルトの名無しさん
NGNG0377デフォルトの名無しさん
NGNG0378デフォルトの名無しさん
NGNG宿題文をコピペしてください。
0379372
NGNGありがとうございます!
うまく動作しました
0380デフォルトの名無しさん
NGNG0381デフォルトの名無しさん
NGNG0382デフォルトの名無しさん
NGNG0383デフォルトの名無しさん
NGNG藻前さんが出された宿題の内容なんぞ誰もしらん。もっぺん先生に聞いといで。
中身が分かったらカキコしんさい。誰か答えてくれる(かもしれん)から。
0384デフォルトの名無しさん
NGNGどうもありがとうございます。
質問させてもらいます。
0,1,1,2,3,5,8,13,21,34,55,89、・・・の数列の規則性を
見つけて、この数列を1000より小さいものまで表示するプログラムを作成せよ。
お願いします。規則性すら分かりません・・・
0385デフォルトの名無しさん
NGNGフィボナッチ数列。
a(n) = a(n-1) + a(n-2)
0386デフォルトの名無しさん
NGNGどうもありがとうございます。
でも、それは習ってません・・・
0387デフォルトの名無しさん
NGNG習わなくてもわかれ。
public class Seq
{
public static void main(String[] args){
int a = 0;
int b = 1;
System.out.print(a+","+b);
for(int c; (c=a+b)<=1000; ){
System.out.print(","+c);
a = b;
b = c;
}
}
}
0388デフォルトの名無しさん
NGNG本当にありがとうございます!
感動して涙がポロリ。
0389デフォルトの名無しさん
NGNGpublic class Seq
{
public static void main(String[] args){
int a = 0;
int b = 1;
System.out.print(a+","+b);
for(int c; (c=a+b)<1000; a=b, b=c){
System.out.print(","+c);
}
}
}
0390デフォルトの名無しさん
NGNGすいません、うまくできません。
0391デフォルトの名無しさん
NGNGでけました。
0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNGそうでした。・・・
0394デフォルトの名無しさん
NGNG学生数? 3
学生1の科目1の点数? 60
学生1の科目2の点数? 80
学生1の科目3の点数? 75
学生2の科目1の点数? 70
学生2の科目2の点数? 85
学生2の科目3の点数? 80
...
...
学生 科目1 科目2 科目3 合計
1 60 80 75 215
2 75 85 80 240
...
...
平均
最高
最低
0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNG失礼しました。
これを表示するプログラム(数字はキーボードで)を
教えてください。
0397デフォルトの名無しさん
NGNGx=0のとき、「正解!2」
x≠0のとき、「間違い!(他の数字)」
と表示させたんです。とりあえず、
import java.io.*;
class keisan{
public static void main(String args[]){
double x=0,y;
System.out.println("数値は?");
y = Math.sqrt(x+4);
x = keyInput.calc;
if(x== 0){
System.out.println("正解!"+y);
}
else{
System.out.println("間違い!"+y);
}
}
}
と考えたんですが、
x = keyInput.calc;
のところで、シンボルを解決できませんとエラーがでます。
どうすればいいか教えていただけないでしょうか?
0398デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1098282928/411
マルチ(・A・)イクナイ!!
0399M.B.
NGNG○keyInput.calc();
0400M.B.
NGNGそういう無意味な問題を出す教師を漏れんとこに連れてこい。
小一時間問い詰めてやる。
そもそも実数値を==で比較する基本的にイケナイ。
sqrt()の引数だったら負値、0.0、正値で分岐しる。その場合のみオッケー。
0401デフォルトの名無しさん
NGNG表示するだけならSystem.out.println()でも使えばいいじゃない
0402M.B.
NGNGimport java.io.*;
public class Seiseki {
public static void main(String[] args) throws Exception {
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
System.out.print("学生数? ");
int gakuseisuu = Integer.parseInt(in.readLine());
if (gakuseisuu < 1) System.exit(1);
int [] kamoku1 = new int[gakuseisuu];
int [] kamoku2 = new int[gakuseisuu];
int [] kamoku3 = new int[gakuseisuu];
for (int cnt = 0;cnt < gakuseisuu;cnt += 1) {
System.out.print("学生" + (cnt + 1) + "の科目1の点数? ");
kamoku1[cnt] = Integer.parseInt(in.readLine());
System.out.print("学生" + (cnt + 1) + "の科目2の点数? ");
kamoku2[cnt] = Integer.parseInt(in.readLine());
System.out.print("学生" + (cnt + 1) + "の科目3の点数? ");
kamoku3[cnt] = Integer.parseInt(in.readLine());
}
0403M.B.
NGNGfor (int cnt = 0;cnt < gakuseisuu;cnt += 1) {
int goukei = kamoku1[cnt] + kamoku2[cnt] + kamoku3[cnt];
System.out.println((cnt + 1) + " " + kamoku1[cnt] + " " + kamoku2[cnt] + " " + kamoku3[cnt] + " " + goukei);
}
int souwa1 = kamoku1[0];int souwa2 = kamoku2[0];int souwa3 = kamoku3[0];
int saikou1 = kamoku1[0];int saikou2 = kamoku2[0];int saikou3 = kamoku3[0];
int saitei1 = kamoku1[0];int saitei2 = kamoku2[0];int saitei3 = kamoku3[0];
for (int cnt = 1;cnt < gakuseisuu;cnt += 1) {
souwa1 += kamoku1[cnt];souwa2 += kamoku2[cnt];souwa3 += kamoku3[cnt];
if (saikou1 < kamoku1[cnt] ) saikou1 = kamoku1[cnt];
if (saikou2 < kamoku2[cnt] ) saikou2 = kamoku2[cnt];
if (saikou3 < kamoku3[cnt] ) saikou3 = kamoku3[cnt];
if (saitei1 > kamoku1[cnt] ) saitei1 = kamoku1[cnt];
if (saitei2 > kamoku2[cnt] ) saitei2 = kamoku2[cnt];
if (saitei3 > kamoku3[cnt] ) saitei3 = kamoku3[cnt];
}
0404M.B.
NGNGSystem.out.println("平均 " + (souwa1 / gakuseisuu) + " "+ (souwa2 / gakuseisuu) + " "+ (souwa3 / gakuseisuu) + " " );
System.out.println("最高 " + saikou1 + " "+ saikou2 + " "+ saikou3 + " " );
System.out.println("最低 " + saitei1 + " "+ saitei2 + " "+ saitei3 + " " );
}
}
0405289
NGNG二日かけてもとけない宿題があるので、戻ってきました。。。
/*
java Test 123 578 5778 k89s 1234
引数(可変)をすべて足す。
ただし、以下のことを行う
1.アルファベットは除外する。
k89sの場合、89となる
2.全角の1〜9は半角数字とみなし、計算する
1234は1234となる。
上記の答は、
7802
*/
よろしければ、このコードを教えてください。
よろしくお願いします。
0406デフォルトの名無しさん
NGNGSystem.outが指すPrintStreamのインスタンスでautoflushが有効になっている
のはかならずしも仕様ではないから、ユーザの入力を促すプロンプトを
出したらflush()しておいたほうが好ましいね。
0407M.B.
NGNG設計イクナイ!!(・A・)入力間違エタドウスルカ!! 出題者ハ謝罪シル!!
0408M.B.
NGNGimport java.util.*;
public class Test {
public static void main(String[] args) throws Exception {
final String nums = "0123456789";
final String zennums = "0123456789";
int sum = 0;
for (int cnt = 0;cnt < args.length;cnt += 1) {
StringBuffer buf = new StringBuffer("");
String arg = args[cnt];
for (int pos = 0;pos < arg.length();pos += 1) {
int idx;
if ((idx = nums.indexOf(arg.charAt(pos))) >= 0) {
buf.append(nums.charAt(idx));
continue;
}
if ((idx = zennums.indexOf(arg.charAt(pos))) >= 0) {
buf.append(nums.charAt(idx));
continue;
}
}
String str = buf.toString();
if (str.length() > 0) sum += Integer.parseInt(str);
}
System.out.println(sum);
}
}
0409289
NGNGありがとうございます!
まだ試していませんが、後でソースながめながら走らせてみようと思います。
感謝です。
0410デフォルトの名無しさん
NGNG昨日宿題が出たんですが
do while文なんですけど
これをfor文とwhile文2つに直せという問題です
表示結果がまったく同じにといわれたので
やってみたのですが、こんがらがってしまったので助けてください;;
import java.io.*;
public class mondai {
public static void main(String[ ] args) {
int i = 1;
do {
System.out.print("\t"+(i));
i = i + 1;
} while (i < 10);
System.out.println();
i = 1;
do {
System.out.print(i);
int j = 1;
do {
System.out.print("\t" + (i*j));
j++;
} while (j < 10);
i++;
System.out.println();
} while (i < 10);
}
}
0411デフォルトの名無しさん
NGNGdo whileをforのみとwhileのみの二つ作れと?
これ全部をforとwhile一つづつにしろと?
0412デフォルトの名無しさん
NGNGは電子透かしか?
0413デフォルトの名無しさん
NGNG引数ごとに文字列バッファを初期化する以外の意味はないと思うが。
0414デフォルトの名無しさん
NGNG点数を入れるときに名前も入れられるようにして、点数順位が名前順で出てくるなどの工夫があるとなお良い。
名前を点数とまとめて処理する方法がわからなくて困ってます。助けてください。
0415デフォルトの名無しさん
NGNGあしたです。。。。
まっててください。。。
0416デフォルトの名無しさん
NGNG一応できたけど、汚くて見せられません。
書き直します。
0417デフォルトの名無しさん
NGNGpublic class Stat
{
private static final int NUMBER = 5;//人数
private static final String[] SUBJECT = {"国語", "算数", "理科"};//教科名 & 教科数
private static Data[][] list = new Data[SUBJECT.length][NUMBER];
private static void read()throws IOException{
String s = SUBJECT[0];
for(int i=1; i<SUBJECT.length; i++) s += " "+SUBJECT[i];
System.out.println("\"名前 "+s+"\"のように"+NUMBER+"人の値を入力してください");
for(int i=0; i<NUMBER ; i++){
System.out.println(i+1+"人目の値を入力してください");
System.out.print(":");
StreamTokenizer st = new StreamTokenizer(new InputStreamReader(System.in));
st.eolIsSignificant(true);
st.nextToken();
String name = st.sval;
for(int j=0; j<SUBJECT.length; j++){
list[j][i] = new Data();
list[j][i].name = name;
st.nextToken();
list[j][i].point = (int)st.nval;
}
}
}
0418デフォルトの名無しさん
NGNGint sum = 0;
for(int i=0; i<NUMBER; i++) sum += list[subject][i].point;
return (double)sum/NUMBER;
}
private static void print(){
for(int i=0; i<SUBJECT.length; i++){
System.out.println(SUBJECT[i]+" "+getAverage(i));
Arrays.sort(list[i]);
for(int j=0; j<NUMBER; j++) System.out.println(list[i][j].name+" "+list[i][j].point);
}
}
public static void main(String[] args)throws IOException{
read();
print();
}
}
0419デフォルトの名無しさん
NGNGいちばん上にこれを・・・orz
import java.io.*;
import java.util.*;
class Data implements Comparable{
String name;
int point;
public int compareTo(Object o){
return ((Data)o).point-point;
}
}
そして、もっといい方法があるかもしれない。
それと、408みたいに書くにはどうすればいいんだろう。
0420デフォルトの名無しさん
NGNGst.eolIsSignificant(true);は不要。
0421M.B.
NGNG行頭の半角スペースはHTMLの表示で除去されるので、
エディタを使って半角スペース二個を全角スペース一個で置換してから投稿。
コードとして利用するときは逆に全角スペース一個を半角スペース二個で置換。
ただしSunのコーディングルールだと1タブ8スペースのインデントで、
ネスト一段について1タブが推奨。
漏れは1インデント4スペース(タブ不使用)なので本当は変則。
なお、プリティプリンタ(プログラムを自動的にインデントするフィルタ)は、
(インデントのルールは各自決めるとして)演習問題として適当と思われ。
0422M.B.
NGNGimport java.io.*;
public class mondai {
public static void main(String[ ] args) {
int i = 1;
for (;;) {
System.out.print("\t"+(i));
i = i + 1;
if (!(i < 10)) break;
}
System.out.println();
i = 1;
for (;;) {
System.out.print(i);
int j = 1;
for (;;) {
System.out.print("\t" + (i*j));
j++;
if (!(j < 10)) break;
}
i++;
System.out.println();
if (!(i < 10)) break;
}
}
}
0423M.B.
NGNGimport java.io.*;
public class mondai {
public static void main(String[ ] args) {
int i = 1;
while(true) {
System.out.print("\t"+(i));
i = i + 1;
if (!(i < 10)) break;
}
System.out.println();
i = 1;
while(true) {
System.out.print(i);
int j = 1;
while(true) {
System.out.print("\t" + (i*j));
j++;
if (!(j < 10)) break;
}
i++;
System.out.println();
if (!(i < 10)) break;
}
}
}
0424デフォルトの名無しさん
NGNG0425M.B.
NGNGimport java.io.*;
public class mondai {
public static void main(String[ ] args) {
int i = 1;
System.out.print("\t"+(i));
for (i = i + 1;i < 10;i = i + 1) {
System.out.print("\t"+(i));
}
System.out.println();
i = 1;
System.out.print(i);
int j = 1;
System.out.print("\t" + (i*j));
for (j++;j < 10;j++) {
System.out.print("\t" + (i*j));
}
i++;
System.out.println();
while(i < 10) {
System.out.print(i);
j = 1;
System.out.print("\t" + (i*j));
for (j++;j < 10;j++) {
System.out.print("\t" + (i*j));
}
i++;
System.out.println();
}
}
}
0426駒
NGNG320135→Jでおながいしまつ。
0427駒
NGNG320135→Jでおながいしまつ。
0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNGマルチなのでクローズ
0431U ◆CZtFsGiu0c
NGNG>ただしSunのコーディングルールだと1タブ8スペースのインデントで、
ネスト一段について1タブが推奨。
漏れは1インデント4スペース(タブ不使用)なので本当は変則。
いや、推奨はスペース4個でしょ? だから変則ではないよ。
http://java.sun.com/docs/codeconv/html/CodeConventions.doc3.html#262
http://www.tcct.zaq.ne.jp/ayato/programming/java/codeconv_jp/CodeConventions.doc3.html#262
0432デフォルトの名無しさん
NGNGあの暗号デコード式ですよ。
0433デフォルトの名無しさん
NGNGありがとう。いい人だ。
0434デフォルトの名無しさん
NGNGその前にマルチしてやがったかorz
……階段踏み外して落っこちて逝け
0435デフォルトの名無しさん
NGNG今思うとData.nameを入力順の番号にして、
名前の配列を参照させた方がよかったかもしれないです。
0436M.B.
NGNG誤訳してた…… orz
0437M.B.
NGNGスペース入力しても勝手にタブに置換しくさって、
しかもタブストップのデフォルトが8なもんだから、
プロジェクト全体が「1インデント1タブ8スペースタブストップ」で往生したような記憶があるのだが……
漏れの記憶違いか?
0438デフォルトの名無しさん
NGNG0439デフォルトの名無しさん
NGNGまあ、いいじゃないか。
0440M.B.
NGNGなるほど。了解した。サンクスコ
0442デフォルトの名無しさん
NGNGpublic char test( String number ) {
number = number.substring( number.length() - 4 );
int count = 0;
for ( int i = 0; i < 4; i++ ) {
char ch = number.charAt( i );
count += ch - '0';
}
return (char)(count + 'A' );
}
0443デフォルトの名無しさん
NGNGあのなあ……
最 初 か ら、 暗 号 化 ア ル ゴ リ ズ ム も 含 め て 宿 題 に な っ て る と 書 け
しかし底意地の悪い宿題だな。同情はするが。
0444デフォルトの名無しさん
NGNG0445デフォルトの名無しさん
NGNG0446デフォルトの名無しさん
NGNG計プロ1からやりなおせ
0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNG0449デフォルトの名無しさん
NGNGSystem.out.print(OwO);
0450デフォルトの名無しさん
NGNGもらった
0451410
NGNGM.B.さんありがとうございます
助かりました
0452デフォルトの名無しさん
NGNG普通そんな規則なんぞ入学後数ヶ月程度で気づく。
それができないのはよっぽどの阿呆なのでとっとと南棟屋上あたりから飛び降りるなどしてください
by十数年前の指導員
0453M.B.
NGNG律儀なのは好感が持てるが、
> これをfor文とwhile文2つに直せという問題です
とかいった文意不明の質問をしてはイカン。
とりあえず問題文を読みこなして理解し、
自分の言葉で問題の内容を整理して、
「問題が解けん!」という認識を持ってから質問しる。
でなかったら問題文をコピペして、
「問題文の意味すらわからん!」と書け。
0454M.B.
NGNG>>422 と >>423 は(漏れ的には)ネタである。
do 文ではループの最後で判断が行なわれるため、
条件判断をせずにループの中身が一回実行される。
だから、「i == 1 のときと j == 1 のときに比較が行なわれない」という
元のプログラムの動作(10を1に書き換えても1*1が出る)を尊重すると、
どうしてもループの中身を二度書くことになる。
そこを変えていいのなら、for文を使ってもっとシンプルに書ける。
for文とwhile文の書き換えは、機械的に行なえる。
0455M.B.
NGNG【for か らwhile 】
仮に
for(int i = 0;i < n;i += 1) {ループの中身}
となってたら、
int i = 0;
while (i < n) {
{ループの中身}
i += 1;
}
※ループ変数 i のスコープを制限したいときは、全体を{}で括る。
【while から for】
while(条件式) → for(;条件式;)
0456M.B.
NGNGこれが普通のforを使ったコードなり。
既知外じみたインデントは勉強だと思って自分で直すべし。
while版は>>455を参考にすべし。
import java.io.*;public class mondai {
public static void main(String[ ] args) {
for (int i = 1;i < 10;i += 1) { System.out.print("\t"+(i));
} System.out.println();
for (int i = 1;i < 10;i += 1) { System.out.print(i);
for (int j = 1;j < 10;j += 1) { System.out.print("\t" + (i*j));
} System.out.println();
}}}
0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG0459M.B.
NGNG暇なんだよ。だれか宿題出してくれよ。
>>458
とりあえず、
「助かりました! 本当にありがとうございました!」と書いておけば、
次も助けてもらえる確率が上がると思われ。
それが大人の判断というものだ。
0460デフォルトの名無しさん
NGNG分かりました。
頑張ります!
0461デフォルトの名無しさん
NGNG>暇なんだよ。だれか宿題出してくれよ。
「入力した多項式のグラフを描くプログラムをつくれ。範囲は問わないが、素直じゃなかったら減点。」
宿題じゃなくてお題スマソ。暇だったらやってくれ。
コードを読んで勉強したいです。
0462デフォルトの名無しさん
NGNG食べ物に関するアンケートの回答をひとつずつ順番に入力します。
すべてを回答(入力)
すると、入力された情報の一覧を表示するプログラムを作成しなさい
質問の順序は問わないものとし、質問には必ず回答するものと考えてよい。
仕様1
プログラムの起動は以下のようにする
>java FoodResearch "パラメータ名"
仕様2
プログラムは以下のようにする。
"TypeA":好きな食べ物・嫌いな食べ物を質問する
"TypeB":好きな食べ物・嫌いな食べ物・今食べたいものを質問
"help" :プログラムの使い方を(パラメータの説明)表示
仕様3
このプログラムの使い方は次のようにする
1。ユーザーがパラメータを指定してプログラムを起動する
2。プログラムはパラメータで指定された項目の入力を促す、メッセージを表示
3。ユーザはプログラムに指定された項目を入力する
4。すべての項目を入力するとシステムは入力された項目の一覧を表示して終了する
0463デフォルトの名無しさん
NGNG仕様4
パラメータがついていない場合、存在しないパラメータが指定された場合は、エラー
メッセージを表示して、プログラムを終了する
仕様5
ソースコードはクラスごとにファイルお作成する。ひとつのファイルに複数のクラス
を記述してはいけない
追加昨日
好きな寿司ネタ・嫌いなすしネタ・こんなすし屋は嫌だ、を質問するパラメータ
"TypeC"を追加せよ。
お願いします(*´Д`*)ハァハァ
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNG子宮!お願いします
(((((( ゜д゜))))))
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG……ちょっと待てい。
現在進行形で授業中、で、授業中に完成させんといかんのか?
タイムリミット教えれ。できそうならやるが。
0468M.B.
NGNG巾乗は^を使うのか**を使うのか。
項と項の間の*は省略できるのかできないのか。
2.0*x^2+3.0*y^2なんていうのも多項式だが、
こういうのは三次元表示でもするのか。
もうちょい練った問題持ってきてくれ。
0469デフォルトの名無しさん
NGNG0470デフォルトの名無しさん
NGNGとりあえずつくってみたけど、用件を満たしているのか疑問。
import java.io.*;
public class FoodResearch
{
private static final String[] typeA = {"好きな食べ物は?", "嫌いな食べ物は?"};
private static final String[] typeB = {"好きな食べ物は?", "嫌いな食べ物は?", "今食べたいものは?"};
private static final String[] typeC = {"好きな寿司ネタは?", "嫌いな寿司ネタは?", "どんな寿司屋が嫌だ?"};
public static void main(String[] args)throws IOException{
if(args.length != 1){
System.out.println("エラーです。");
return;
}
0471デフォルトの名無しさん
NGNGString[] question;
if(args[0].equals("help")){
System.out.println("こしょこしょ。授業中なのか!");
return;
}
else if(args[0].equals("TypeA")){
question = typeA;
}
else if(args[0].equals("TypeB")){
question = typeB;
}
else if(args[0].equals("TypeC")){
question = typeC;
}
else{
System.out.println("エラーだ。");
return;
}
0472デフォルトの名無しさん
NGNGBufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] answer = new String[question.length];
for(int i=0; i<question.length; i++){
System.out.println(question[i]);
answer[i] = br.readLine();
}
for(int i=0; i<question.length; i++){
System.out.println(question[i]+" "+answer[i]);
}
}
}
0473デフォルトの名無しさん
NGNGまさにキタ━(゜∀゜)━━!!って言う奴ですね。
更新ボタン何回押したことか
0474デフォルトの名無しさん
NGNG今コピペしてコンパイル中です!
ありがとうございましたぁっ!
0475M.B.
NGNGimport java.io.*;
import java.util.*;
public class FoodResearch {
public static void main(String [] args) throws Exception {
if ((args.length != 1) || (args[0].equals("help"))) {
System.err.println("java FoodResearch \"パラメータ名\"");
System.err.println("パラメータ名:TypeA, TypeB, TypeC, help のいづれか");
System.exit(-1);
}
final String [] QuesA = {"好きな食べ物は?", "嫌いな食べ物は?" };
final String [] QuesB = {"好きな食べ物は?", "嫌いな食べ物は?", "今、何が食べたい?" };
final String [] QuesC = {"好きな寿司ネタは?", "嫌いなすしネタは?", "「こんな寿司屋は嫌だ!」という寿司屋はどんな店?" };
String [] Ques = null;
if (args[0].equals("TypeA")) Ques = QuesA;
if (args[0].equals("TypeB")) Ques = QuesB;
if (args[0].equals("TypeC")) Ques = QuesC;
if (Ques == null) {
System.err.println("パラメータ名:TypeA, TypeB, TypeC, help のいづれか");
System.exit(-1);
}
ArrayList answer = new ArrayList();
for (int cnt = 0;cnt < Ques.length;cnt += 1) {
System.out.print(Ques[cnt]);
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
System.out.flush();
answer.add(in.readLine());
}
System.out.print(answer.toString());
}
}
0476デフォルトの名無しさん
NGNGスマソ。
巾乗は^で、項の間の*は省略可能で、
1元の多項式でやってくだされ。
0477デフォルトの名無しさん
NGNG型の開始が不正です
identfierがありません
とか計4つ
0478デフォルトの名無しさん
NGNG0479デフォルトの名無しさん
NGNG全角スペースを半角スペースまたはtabにちゃんと直したか?
0480デフォルトの名無しさん
NGNGでも(´・ω・`)
つか2個目のでできました!
神いすぎ。あんたら最強や
0481デフォルトの名無しさん
NGNG皆さんどうもわざわざありがとうございました
0482デフォルトの名無しさん
NGNGttp://rerere.zive.net/res/up/source/up3998.zip
462-3の解、めちゃくちゃ凝り倒した?バージョン。
0483M.B.
NGNG式の解析だけでも結構面倒なんだがな(-_-!)。
それに、範囲はどうする。-1.0〜1.0とか-π〜+πとかいろいろあるが。
変曲点求めて値の範囲求めて表示域決めて正規化して目盛振って……とかやってもいいんだが、
それやってると数学的にもけっこう複雑になって、
しかも数式処理に近いことまでやるからけっこうウザいプログラムになるぞ。
数値計算の勉強したかったら、戸川隼人先生の
『微分方程式の数値計算』と『UNIXワークステーションによる科学技術計算ハンドブック』(Cのソースつき)でも
読んだほうがいいんじゃないか?
でなかったらマンデルブロア集合とかジュリア集合とかの計算とか、
小分かりのしそうな例題は他にありそうに思うが。
0484デフォルトの名無しさん
NGNGわかった。レスありがとう。
数値計算は面倒そうな雰囲気だし、Javaによるアルゴリズム事典でも読んで遊ぶことにするよ。
0485デフォルトの名無しさん
NGNGNO2.Hogeko
NO3.hogehoge
とかいう感じで一回ファイルに保存させて(プログラム中で最初に保存させる)
JTextField二つと検索ボタンと書き込みボタンがあり
片方のJTextField1にNO1と打ち込み検索ボタンを押したら最初に保存させたファイルの中を検索して
もう一つのJTextField2にHogeoと表示させ、JTextField2のHogeoをHoooとか適当に変えて書き込みボタン押したら
新しくファイルに保存し直したいんですけど
どうやってファイルに保存してどうやってファイルの中を検索すればいいですか?
0486デフォルトの名無しさん
NGNGttp://wisdom.sakura.ne.jp/programming/java/java39.html
てきとうにぐぐったら
こんなんでましたけど。
0487デフォルトの名無しさん
NGNGそこURL削ったらすごいな……
D言語にObjective-Cまで書いてるよ
マカーでもなさそうなのになにゆえ??
0488デフォルトの名無しさん
NGNG本を出してるのにこれだけ載せてくれるのはありがたいね。
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGおれも大学なんて行ってる場合じゃない・・・のか?
0491デフォルトの名無しさん
NGNG1.名前
2.生年月日(yy/mm/dd)
3.部署コード
4.給料
を繰り返し入力して、データベースを作るプログラムを作りなさい。
部署は部署コードを主キーにして部署名を表示させます。
機能として入力と閲覧、変更、削除を出来るようにすること。
という宿題が出ました。
dos窓で操作します。
javaからmysqlを操作する方法がまったく分かりません。誰か助けてくださいm(_ _)m
0492M.B.
NGNGJavaのデータ構造の一部としてデータベースを利用する方法もありますが、
通常は SQL のコードを DB に向かって吐きます。
詳細は "JDBC Java MySQL" でおググりなさい。
0493M.B.
NGNGいまさら言っても詮無いが
ファイルのオープンはfor文の前に移動
……無念 orz
0494デフォルトの名無しさん
NGNGJavaはC++と同じ記述が出来ない上に遅いからグズ。
とか煽っておきながら、オブジェクト指向の話が大嘘。
Objective-CとObjective-C++を混同してるし、
言語仕様と実装の区別がつかないみたいでgcc独自部分を言語仕様と誤解してる。
初心者が読むのは危険ナリ。
0495デフォルトの名無しさん
NGNG書いてる人も初心者でしょ?
0496デフォルトの名無しさん
NGNG書いてあるのは初級〜中級レベルの事だけだし、それなら
一つの言語につき2週間くらいで学べる。問題はそこからなんだけどね。
しかし、猫娘がかわいいので許す。ハァハァ。。。
0497デフォルトの名無しさん
NGNGJavaの問題です。
『int型の変数a,bにデータを入力し、反復によりa÷bの商を求める。
ただし、小数点第一位で四捨五入し、答えは整数である。』
ついでにa,bは手入力ってことで。商は求められたんですけど、
四捨五入がどうやってやるかわかりません。どうか教えてください。お願いします。
0498デフォルトの名無しさん
NGNGんだな。ここまで来たら是非SmallTalkもやってもらいたいw
0499デフォルトの名無しさん
NGNG迷惑掛けついでに>497
「四捨五入」って具体的に数値をどうすること?
まずそれを日本語で書いてみて、それからそれをどうやってJavaで書くか考えてみ。
(まぁ」四捨五入は定型句があるけど、それをポンと書いてもなんだかなと思うので)
0500デフォルトの名無しさん
NGNG(c/1) > 0.5 ? c+0.5 : ('A' )
0501デフォルトの名無しさん
NGNG0502デフォルトの名無しさん
NGNG「MySQLのDBに登録した座標(40,40)をAWTアプレットで表示させる」
座標の点は画像を表示させています。
アプレットだけなら簡単に作れました。また、MySQLに登録した座標を
Javaから呼び出すことにも成功しました。
多分、この2つを合わせればいいのでしょうが・・・どうかお願いします。
0503デフォルトの名無しさん
NGNG0504502
NGNGどうやって組み合わせればいいのかさっぱりさっぱり。
0505デフォルトの名無しさん
NGNGSwingでやった方がいいと思うがね
0506デフォルトの名無しさん
NGNGhttp://rightp2p.s68.xrea.com/node/
http://www.stereoz.net/node/
http://moejump.s6.x-beat.com/node.php
関連サイト(本体・BBS・その他)
http://rightp2p.s68.xrea.com/
http://phphp.s58.xrea.com/
http://www.stereoz.net/
0507r
NGNGイジワルすぎ
0508デフォルトの名無しさん
NGNGそのままたどれって課題かなと俺は思った。
0509デフォルトの名無しさん
NGNG↓のコードをimmutableにせよっていう宿題なのですが・・・・テストケースも貼らせていただきます。
import java.awt.Point;
public class Passenger {
private int id;
private Point pickupLocation;
private Point deliveryLocation;
public Passenger(int aId, Point pickup, Point destination)
{
if ((pickup == null) || (destination == null))
throw new NullPointerException();
id = aId;
pickupLocation = pickup;
deliveryLocation = destination;
}
public Point getDeliveryLocation() {
return deliveryLocation;
}
public int getId() {
return id;
}
public Point getPickupLocation() {
return pickupLocation;
}
}
0510509
NGNGimport junit.framework.TestCase;
public class ImmutablePassengerTest extends TestCase {
Passenger passenger;
final int id = 2663;
Point pickup;
Point destination;
protected void setUp() throws Exception {
super.setUp();
pickup = new Point(1, 1);
destination = new Point(2, 2);
passenger = new Passenger(id, pickup, destination);
}
private void checkImmutable() {
assertEquals("pickupLocation.x", 1, passenger.getPickupLocation().x);
assertEquals("pickupLocation.y", 1, passenger.getPickupLocation().y);
assertEquals("deliveryLocation.x", 2, passenger.getDeliveryLocation().x);
assertEquals("deliveryLocation.y", 2, passenger.getDeliveryLocation().y);
}
0511509
NGNGpublic void testModifyConstructorParams() {
pickup.x = 0;
pickup.y = 0;
destination.x = 0;
destination.y = 0;
checkImmutable();
}
public void testModifyGetResult() {
Point p = passenger.getPickupLocation();
p.x = 0;
p.y = 0;
Point d = passenger.getDeliveryLocation();
d.x = 0;
d.y = 0;
checkImmutable();
}
}
よろしくお願いします。
0512>>509の回答
NGNGpublic class Passenger {
private int id;
private Point pickupLocation;
private Point deliveryLocation;
public Passenger(int aId, Point pickup, Point destination)
{
if ((pickup == null) || (destination == null))
throw new NullPointerException();
id = aId;
pickupLocation = new Point( pickup );
deliveryLocation = new Point( destination );
}
public Point getDeliveryLocation() {
return new Point( deliveryLocation );
}
public int getId() {
return id;
}
public Point getPickupLocation() {
return new Point( pickupLocation );
}
}
0513デフォルトの名無しさん
NGNGすげー!テストパスした!本当にありがとうございます!!
もう一問あるのですが、そっちはとりあえずこれを参考にがんばってみようとおもいます!!!
もし無理だったらまた質問させてください・・・。
本当にありがとうございました!
今見てみてちょっと疑問に思ったのですが、インスタンスフィールドのpickupLocationとdeliveryLocation
はfinalじゃなくてもいいのですか?
0514デフォルトの名無しさん
NGNGfinalでもいいと思います。
0515509
NGNG今もう一個もやってるのですが・・・・・わかんない・・・・。
もうちょっとがんばってみます。
0516514
NGNG訂正です。
言われる通り、finalの方がいいと思います。
0517デフォルトの名無しさん
NGNG了解です。どうも!
0518デフォルトの名無しさん
NGNG□■□■□■□■□■□■
階乗の値を求めてみるのさ
■□■□■□■□■□■□
整数nの階乗の値を求めてみます!
整数nの値を入力しておくれやす
n => 3 [Enter]
---------------------------
3の階乗の値(3!)は6でござる!
---------------------------
C: \...>
以上お願いします。
0519デフォルトの名無しさん
NGNGclass Sample_00 {
BufferedReader br;
public Sample_00() {
br = new BufferedReader(new InputStreamReader(System.in));
}
private String dataInput() {
try {
return (br.readLine());
}
catch(IOException e) {
System.out.println("IOエラー" + e);
}
return null;
}
public int kaijou(int num) {
int kNum=1;
for(int i=2; i <= num; i++) {
kNum *= i;
}
return kNum;
}
0520519
NGNGboolean flag=false;
int kNum=0;
String buff="";
System.out.println("階乗の値を求めるプログラム\n");
while(true) {
System.out.print("n = ");
if((buff=dataInput())==null) continue;
try {
kNum = Integer.parseInt(buff);
}
catch(NumberFormatException e) {
System.out.println("\n数字のみ入力してください\n");
continue;
}
if(kNum <= 2) {
System.out.println("n に代入する値は 2 より上を入力してください");
continue;
}
System.out.println("\n---------------------");
System.out.println(kNum + "の階乗(" + kNum + ")の答えは");
System.out.println(kaijou(kNum));
System.out.println("---------------------\n");
0521519
NGNGSystem.out.println("\n\nもう一度計算しますか? [yes!=終了]");
if((buff=dataInput())==null) continue;
if(!(buff.equals("yes"))) flag=true;
else flag=false;
break;
}
if(flag) break;
}
System.out.println("\n終了します。");
}
public static void main(String[] args) {
new Sample_00().start();
}}
>>518
一応動いた、汚いけど我慢してくだはい
0522509
NGNGまたImmutableなのですが、とりあえずスーパークラス、サブクラス、テストケースすべてはらせて頂きます。
import java.awt.Point;
import java.util.Date;
public abstract class Event {
private Date date;
private Passenger passenger;
public Event(Passenger aPassenger){
assert aPassenger != null;
date = new Date();
passenger = aPassenger;
}
public abstract Point getLocation();
public Date getDate(){
return date;
}
public Passenger getPassenger() {
return passenger;
}
}
0523デフォルトの名無しさん
NGNGimport java.awt.Point;
public class PickupEvent extends Event {
public PickupEvent(Passenger aPassenger) {
super(aPassenger);
}
public Point getLocation() {
return getPassenger().getPickupLocation();
}
}
と
import java.awt.Point;
public class DeliveryEvent extends Event {
public DeliveryEvent(Passenger aPassenger) {
super(aPassenger);
}
public Point getLocation(){
return getPassenger().getDeliveryLocation();
}
}
0524522
NGNGimport java.awt.Point;
import java.util.Date;
import junit.framework.TestCase;
public class ImmutableEventTest extends TestCase {
Passenger passenger;
final int id = 2663;
Point pickup;
Point destination;
PickupEvent pickupEvent;
DeliveryEvent deliveryEvent;
protected void setUp() throws Exception {
super.setUp();
pickup = new Point(1, 1);
destination = new Point(2, 2);
passenger = new Passenger(id, pickup, destination);
pickupEvent = new PickupEvent(passenger);
deliveryEvent = new DeliveryEvent(passenger);
}
public void testModifyPickupEventDate() {
Date pickupDate = pickupEvent.getDate();
pickupDate.setDate(0);
assertFalse("modified date",
pickupDate.equals(pickupEvent.getDate()));
}
public void testModifyDeliveryEventDate() {
Date deliveryDate = deliveryEvent.getDate();
deliveryDate.setDate(0);
assertFalse("modified date",
deliveryDate.equals(deliveryEvent.getDate()));
} }
です。どうぞよろしくお願いします。
0525502
NGNGコード貼ります
/* <applet code="Nagarebosi.class"
width="400" height="500"></applet>
*/
import java.awt.*;
import java.applet.*;
import java.sql.*;
public class Graph extends Applet{
Image back,hosi;
public void init(){
//背景を取得
back = getImage(getDocumentBase(),"back.jpg");
//星を取得
hosi = getImage(getDocumentBase(),"hosi.gif");
}
public void paint(Graphics g) {
//イメージファイルを表示
g.drawImage(back,10,10,this);
g.drawImage(hosi,60,50,this);
}
}
0526502
NGNGMySQLに登録している座標を元に星を動かしたいのですが・・・
どうやれば動くのかわかりません・・・
よろしくお願いします。
import java.sql.*;
public class zahyou {
public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
String url = "jdbc:mysql://localhost/kadai?user=root&useUnicode=true&characterEncoding=SJIS";
Connection con = DriverManager.getConnection(url);
Statement stmt = con.createStatement();
String sql = "select * from hosi where date = 40";
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
int date = rs.getInt("x");
int kai = rs.getInt("y");
System.out.println(x + " " + y);
}
stmt.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
0527502
NGNG0528デフォルトの名無しさん
NGNG522のコードをこうすればOK
import java.awt.Point;
import java.util.Date;
public abstract class Event {
private Date date;
private Passenger passenger;
public Event(Passenger aPassenger){
assert aPassenger != null;
date = new Date();
passenger = aPassenger;
}
public abstract Point getLocation();
public Date getDate(){
return new Date( date.getTime() ); //←ここだけこう変える
}
public Passenger getPassenger() {
return passenger;
}
}
0529522
NGNGどうもありがとうごいます!
だめだー、ぜんぜんわかりません・・・・。
もしよろしければなぜこうなるのか簡単でいいので
説明していただけたりしないですか?おねがいします・・・。
いろいろサイトを漁っていたのですが、ぜんぜんいい所が見つからず・・・。
0530>>526 その1
NGNGImage back,hosi;
int date, kai;
public void init() {
final Timer timer=new Timer();
back = getImage(getDocumentBase(),"back.jpg");
hosi = getImage(getDocumentBase(),"hosi.gif");
String url = "jdbc:mysql://localhost/kadai?user=root&useUnicode=true&characterEncoding=SJIS";
String sql = "select * from hosi where date = 40";
try {
Class.forName("org.gjt.mm.mysql.Driver");
final Connection con = DriverManager.getConnection(url);
final Statement stmt = con.createStatement();
final ResultSet rs = stmt.executeQuery(sql);
TimerTask task=new TimerTask() {
public void run() {
try {
if(!rs.next()) {
stmt.close(); con.close(); timer.cancel(); return;
}
date = rs.getInt("x");
kai = rs.getInt("y");
repaint();
} catch (Exception e) { e.printStackTrace(); }
}
};
timer.schedule(task, 1000, 500);
} catch (Exception e) { e.printStackTrace(); }
}
0531>>526 その2
NGNGg.drawImage(back,10,10,this);
g.drawImage(hosi,date,kai,this);
}
public void update(Graphics g) {
paint(g);
}
}
0532デフォルトの名無しさん
NGNG自分のクラスが所持してるデータをそのまま渡すのではなく
そのデータをもとにして新しいオブジェクトを作成して、それを渡せば
自分が所持してるデータと、相手に渡したデータは、内容は同じですが
全く別個のものになりますので、結果的にinmutableになります。
0533デフォルトの名無しさん
NGNGどうもありがとうございます!
0534533
NGNGテストのほうはsetDate()後にgetDate()で返ってくる値を求めている(?)のですが、
EventのほうでgetTime()を使用したのはなぜでしょうか?
getTime()は月、日にち、年などすべて返すからなんでしょうか?
わかりづらかったらごめんなさい。
0535526
NGNGありがとうございます!これから試してみます!
0536デフォルトの名無しさん
NGNGEventクラスが所持するDate型オブジェクトdateと同じ内容の
新しいDate型オブジェクトを作成する為には、dateの情報が必要と
なります。つまりDate#getTime()で得られるlong値(1970年1月1日からの
ミリ秒数)が必要なのです。
getTime()で得られるlong値を、新しくDate型オブジェクトそ作成する時の
コンストラクタの引数に指定すると、Eventクラスが所持するdateと
同じ内容のDate型オブジェクトができるのです。
同じオブジェクトを作成する為の情報を得る為にgetTime()を使ってるのです。
0537デフォルトの名無しさん
NGNGDate.clone()の方がいいのでは?
0538デフォルトの名無しさん
NGNGというかリファレンスの存在も教えないクズ教師ばっかりなのはなぜ?
0539デフォルトの名無しさん
NGNGそれぞれ具体例をあげてどう使い分けたらいいか述べよ
0540デフォルトの名無しさん
NGNG私は2〜3回目の講義で紹介しているよ。
0541デフォルトの名無しさん
NGNGえろい!
0542526
NGNG0543デフォルトの名無しさん
NGNGわかりやすい説明どうもありがとうございます!
いつも英語での授業なので日本語で説明されると・・・嬉し涙が・・・・。
0544デフォルトの名無しさん
NGNGまぁまぁお茶でも飲んで落ち着いて
つ旦
0545M.B.
NGNGpublic class div {
public static void main(String [] args) throws Exception {
if (args.length < 2) System.exit(1);
int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);
int x = a + a + b;
int y = b + b;
int syou = 0;
while (x >= y) {
x -= y;
syou += 1;
}
System.out.print(syou);
}
}
0546M.B.
NGNG> メソッドを定義する時、voidにする場合と値を返す場合とで
> それぞれ具体例をあげてどう使い分けたらいいか述べよ
同じです。
voidの場合はvoidという値が常に帰ってくるというだけです。
Cと違って、intをvoidで受けて無視するようなマネはJavaではできません。
問うなら例外が起きたときに値で返すか例外を投げるか、
そっちの方を問いましょう。
0547デフォルトの名無しさん
NGNG……
0548U ◆CZtFsGiu0c
NGNG戻り値の型にvoidを指定するということは、void型の戻り値があるというわけでは
なく、戻り値がない、ということを示す。それはCでも同じはずだけど、もしかして
void*と勘違いしてない? それからJavaでも戻り値のあるメソッドを、戻り値を
無視して実行することは可能だし、List#removeとか無視する場合のほうが多い
メソッドもある。
0549デフォルトの名無しさん
NGNGそ、そんな。。。
どこで、どうエラーが出るのですか?
0550M.B.
NGNG空集合も集合のうち。
戻ってきた値を利用するかしないかはプログラマの勝手だが、
それなりの理由があって値を返しているはずだから、
できればチェックしておくのが安全だし、
利用しないにしても変数で受けて「不使用」とコメントするぐらいのことは
しておくのが親切。
本当の意味で「戻り値がない」というのは、exit()くらいのものだと
個人的には思っている。
(個人的には、Cプログラマー時代に
「printf()の戻り値をチェックしていないのはデバッグ用出力」
とかいった使い方までしていた。本人もやりすぎだと思ったが。)
0551M.B.
NGNGRuntime.getRuntime().exec()の戻り値を拾い忘れて
エラー出力は喰われっちゃうわ、
ちょいと時間のかかる処理があるとその先の前提条件が成立しないわで、
しばらくmakeの役に立ちまへんでした。
lint みたいに「戻り値取ってないぞ」「使ってない変数があるぞ」とか、
小うるさい警告を出してくれる javac のオプションはないのかにゃ?
0552U ◆CZtFsGiu0c
NGNGいや、空集合がどうのってのは関係なく、voidはメソッドが戻り値を返さないこと
を示す、ってのは言語仕様に明記されていることです。
http://java.sun.com/docs/books/jls/second_edition/html/classes.doc.html#40420
http://www.y-adagio.com/public/standards/tr_javalang/8.doc.htm#40420
わざわざ初心者が混乱するようなことを書くのはどうかと思います。
>戻ってきた値を利用するかしないかはプログラマの勝手だが、
それなりの理由があって値を返しているはずだから、
できればチェックしておくのが安全だし、
利用しないにしても変数で受けて「不使用」とコメントするぐらいのことは
しておくのが親切。
必要ならチェックするし、不要ならチェックしないというのは当たり前のことでは
ないですか?
#ところで、「intをvoidで受けて無視する」ってのはどういう意味?
0553デフォルトの名無しさん
NGNGすいません、当方の単純なミスでした・・・
バッチリ動きました!ありがとうございます!
0554M.B.
NGNGC という言語は「値渡し用の汎用レジスタが一個だけある」状況を想定して設計されてて、
「汎用レジスタに残ってる値がとりあえずの戻り値」(それでも足りないときは
スタックに積む)で、
しかも「レジスタの中身は int とアドレスのどっちと解釈してもオッケー」
というカラクリになっています
(つまり配列の添え字をマイナスにしてシステム領域に手を突っ込んだりする荒業も可能)。
だから、呼ばれる側が int や アドレスを返していたとして、
呼ぶ側が void で宣言すると、それは「レジスタの中身を考慮しません」という宣言になります。
これを逆にいうと、「レジスタの中に何が入ってても無視します」っていう意味になるわけ。
Java の場合は、現行の仕様では「0 個以上 1 個以下の値を戻せます」ということに
なっていて、実行時に引数の型と個数が厳密にチェックされます。だから、
呼ぶ側で void を宣言してると、呼ばれる側も void で辻褄を合わせないといけません。
反面、オブジェクトに関しては、とりあえずオブジェクトで受けておいてから、
呼ぶ側で型のチェックをしてから、戻り値の型に応じて
ダウンキャスト(ナローイング)して利用するということもできます。
0555U ◆CZtFsGiu0c
NGNGしなきゃいかんのかわからんのだが、ISO/ANSI仕様までは知らないので
置いておきます。
>Java の場合は、現行の仕様では「0 個以上 1 個以下の値を戻せます」ということに
なっていて、実行時に引数の型と個数が厳密にチェックされます。だから、
呼ぶ側で void を宣言してると、呼ばれる側も void で辻褄を合わせないといけません。
「呼ぶ側でvoidを宣言する」ってどうやるの? 戻り値を受ける変数を宣言
しないってこと? もしそうなら、「呼ばれる側も void」なんてことない
でしょ?
0556M.B.
NGNG> 当たり前のことではないですか?
私の場合、チェックするしないの問題よりも、
呼ぶ側で戻り値を受けていないと、「そこだけを見た場合に」、
そのメソッドが void なのか、それとも戻り値があるんだけど
利用していないのかが分からない点を重視しています
(「そのくらい調べろ」っていう意見もあるかもしれないけど)。
だから、「戻り値を利用しないのが一般的な場合」を除いて、
*戻り値を受けていなければ、戻り値は 0 個。
*戻り値があっても利用しない場合は、その場で宣言して戻り値の型を明確にし、
なおかつその用途が分かるような名前を付ける。
というのが親切かと。
それに、デバッガ使って追いかけるときにも、そうやっとくと便利そうだし
(私はデバッガ使わないけど)。
0557M.B.
NGNG前スレ 423〜425 でも参照してくらはい。
ついでに藤本裕之『叫ぶ! C プログラマ―プロが説くC のカラクリと落とし穴』
の第 VI 章の『「printf()」が書けますか?』も参考にしていただけると
ありがたく思います。
(ついでながら ANSI C だと main() は int 型)
0558デフォルトの名無しさん
NGNGここですか?
0559M.B.
NGNGファイル Foo.java
public class Foo {
public static void main(String[] args) {
Bar bar = new Bar();
bar.baz();
}
}
ファイル Bar.java
public class Bar {
int baz() {
return 0;
}
}
として、Foo.java をコンパイルして実行するとOKですが、
それからBar.java を
public class Bar {
void baz() {
}
}
と書き換え、Bar.java のみをコンパイルして Foo を実行すると、
java.lang.NoSuchMethodError を出して落ちます。
0560M.B.
NGNG> Javaの宿題を無料でやってくれるスレは
> ここですか?
いえ、Javaの宿題を無料でやってくれるヒトが
現れやすいスレがここです(スレッドに宿題をやってくれるメソッドは実装されていません)。
釣れるか釣れないかは、人柄やネタによります。
>>1 を参考にしてください。
0561デフォルトの名無しさん
NGNG面白い。ためになります。
0562M.B.
NGNGじゃあ、ついでに補足。Bar.javaを
public class Bar {
int baz() {
return 0;
}
void baz() {
}
}
とやってコンパイルすると、
「Bar.java:5: baz() はBar で定義されています。」
と、コンパイラに蹴られます。
このあたり、カラクリをじっくり考えると、
安全性と可読性を考えた言語仕様と、
効率のよい実行を考えた実装の相克が垣間見えて、
なかなかにムズムズします。
本当は代入文を無くして、メソッドで代入を実現してしまうのが
オブジェクト志向としては王道なんですが、
こんどは null とか new の扱いに困ったりするわけです。
また新しい言語とか出てくるのかなぁ……
0563デフォルトの名無しさん
NGNGそれは void とは全く関係ない。
メソッド呼び出しを名前と引数型で解決してるから、
同名で同引数型のメソッドを一つのクラスで複数回定義できないだけ。
0564U ◆CZtFsGiu0c
NGNGそんな俺様ルールを宿題の答えとして返されてもね。
というか、戻り値を利用していないときになんで戻り値があるかどうかとか気に
なるのか全然わからん。
>>559
これをもって何を主張しようとしているのか不明。
それが「呼ぶ側でvoidを宣言する」ってことなんですか? 呼ばれる側が勝手に
インタフェース変えたら実行時エラーが出て当然でしょう。
>>562
言語仕様に当たった上で書いてますか?
0565デフォルトの名無しさん
NGNG文章の端々で「私はプログラムだけじゃないんですよフッ」と言いたげでウザイ。
0566デフォルトの名無しさん
NGNGそれぞれ具体例をあげてどう使い分けたらいいか述べよ」
という宿題に「同じです。」と答えちゃ
それが真実かどうかに関わらずアレだと思うんだ。
あとクールにストイックにソースコードだけ書いてるときのM.B.は
あまりウザくなくてかっこいいと思うんだ
0567デフォルトの名無しさん
NGNGpublic static void main ( String [] args ) {}
の中から
static 宣言されていないメソット(同じクラス内にある)を
使いたいんですが、当然のようにコンパイルエラーがでます。
何か方法はありますか?
使いたいメソットを static にすることはできません。
0568デフォルトの名無しさん
NGNGだーかーら、staticってのが何を意味してるのかちゃんと覚えんさい。
とりあえず、ありがちだと思う解は、
a. main()の中で、main()を含むクラスのインスタンスを作る。
b. そのインスタンスを使えばstaticじゃないメソッドは当然呼べる。
class Foo
{
public static void main(String[] args)
{
Foo instance = new Foo();
Foo.hoge();
}
private void hoge()
{
System.out.println("Foo.hoge()");
}
}
// インデント全角スペース使ってるのでちうい。
0569デフォルトの名無しさん
NGNGstaticコンテキストはクラスのインスタンスと隔離された領域にあるので、同一クラス内のインスタンスメンバー
を直接参照できません。一度自分自身のインスタンスを作成してインスタンス変数経由で呼び出します。
ちなみにそうした点でとまどう様なコードは、たいていの場合2つ以上に分解すべきクラスを1つにまとめています。
その「アクセス不能なメンバー」は別のクラスに分離すべきではありませんか?
0570デフォルトの名無しさん
NGNG0571567
NGNGもう少してを加えれば完成できそうです。
>>568->>569 さんありがとうございます。
>>568
corejavaもう一周読み直します・・・
>>569
>その「アクセス不能なメンバー」は別のクラスに分離すべきではありませんか?
その通りだと思います。
しかし宿題が穴埋め形式だったので、そのようなことはできませんでした。
0572デフォルトの名無しさん
NGNG0573デフォルトの名無しさん
NGNGうざい。
そろそろ次の宿題来ないかな。
0574デフォルトの名無しさん
NGNGという宿題をお願いします。
0575デフォルトの名無しさん
NGNGキーを押すとテキストフィールドに文字が出るのと同時に
コンソールにも出力されるプログラム。。。
package hw2;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.text.*;
public class App extends JFrame {
public static void main(String[] args) {
JTextField tf=new JTextField();
tf.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
try {
String text=e.getDocument().getText(e.getOffset(), e.getLength());
System.out.print(text);
} catch (BadLocationException e1) { }
}
public void changedUpdate(DocumentEvent e) { }
public void removeUpdate(DocumentEvent e) { }
});
JFrame frame=new JFrame();
frame.getContentPane().add(tf);
frame.setSize(400,64);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
0576M.B.
NGNG>>565
> 文章の端々で「私はプログラムだけじゃないんですよフッ」と
> 言いたげでウザイ。
いや、あれは自分の本業がプログラマだと思ってないだけだろ(-_-;)。
コンピュータっつーものを見てる視線が素人っつーかユーザの立場だし。
プロを自称する奴のレベルが低いからああいいう物言いになるだけ。
0577M.B.
NGNGだいたい「手続き」と「関数」って本来別物でしょうが。
それを C が手続きを「void を返す関数」で代用したのと、
大域脱出の手段が longjump() くらいしか存在しなかったんで
戻り値でなんとかするしかなかったっつーのが
もともとあって、その C のプログラムを Java に移植する際の利便を考えて、
ああいう文法仕様になってる訳っしょ?
関数の引数への副作用を防止して、
そのかわり OOP で明示的に記述するようにしただけっつー見方もできるわけで、
「値として戻す」っていう形式自体や、戻り値によってはメソッドが区別されないことに
そんなに意味があるとは思えんのだが。
0578U ◆CZtFsGiu0c
NGNGああいう文法仕様になってる訳っしょ?
Cからの移植性なんぞ大して考慮していないと思うんですが、どこからこう
いう解釈になったんでしょう。メソッドに戻り値を持たせないOOPLって
一般的ではない(というか私は知らない)と思うのですが。
>関数の引数への副作用を防止して、
そのかわり OOP で明示的に記述するようにしただけっつー見方もできるわけで、
「引数への副作用」は防止されていません。
>「値として戻す」っていう形式自体や、戻り値によってはメソッドが区別されないことに
そんなに意味があるとは思えんのだが。
「戻り値によってはメソッドが区別されない」ではなく、「戻り値の型は
メソッドシグネチャに含まれない」です。
#「戻り値によっては」って区別される場合もあると思ってるのかな
これは想像ですが、戻り値の型がメソッドシグネチャに含まれないのは、
戻り値を受けなくてもメソッドを呼び出せるようにするためでしょうね。
M.B.さんがJavaの言語仕様について何か不満がある、というのはわかるの
だけど、何が不満なのかいまいち理解できないです。
0579デフォルトの名無しさん
NGNG実装上の手抜きだとD.Ritcheも書いているし、traditionalなCにはvoidはもともと存在しない。
存在しなかったものに何の根拠をもとめているのだろうか?
、、と書けばきっと全然別の話を持ち出すんだろうなMBは。自分の意見を
文章に変換する時点で相手に説明する理論展開ができていない。というか
自分の脳内妄想を日本語に変換する能力に決定的に欠けている。
それに言語仕様から“わざと”目を背けて仕様と実装を混同する話は、
つい最近もこのスレで見た気がするのだが。
0580462
NGNG今度で最後にしますからお願いします(><
課題
指定されたファイルの内容を出力するプログラムを作成
またディレクトリ内にあるすべてのファイルのファイル名と最初の一行を一覧表示する機能も実装
ファイル名および一覧昨日はコマンドラインで指定するものとします
仕様1
プログラム起動は以下のようにする
>java FileException
仕様2
パラメータは以下のようにする
"List":ディレクトリ内にあるすべてのファイルとファイル名と最初の一行を一覧表示する
これ以外のパラメータの場合はファイル名の指定とみなし、該当するファイルの内容を表示する
(パラメータ名と同じ名前のファイルはない物と考えてよい)
仕様3
このプログラムの使い方は次のようにする
1.ユーザがパラメータを指定してプログラムを起動する
2-1.パラメータが"List"だった場合、プログラムはディレクトリ内にあるすべてのファイルのファイル名と最初の一行を表示して終了する
2-2.パラメータが"List"以外であったら、ファイル名とみなし該当するファイルの内容をすべて表示して終了する
(仕様4)
プログラムの置かれるディレクトリに"files"フォルダを作成する。このプログラムで表示するファイルはすべてこのフォルダの中に置くファイルの内容はテキスト形式とする
仕様5
パラメータがついていない場合、存在しないファイルが指定された場合は、エラーメッセージを表示してプログラムを終了する
仕様6
ソースコードはクラスごとにファイルを作成する。ひとつのファイルに複数のクラスを記述してはいけないまたファイル名とクラス名を同じにすること
追加機能
ディレクトリ内にあるすべてのファイル名とファイルの最後の1行を表示するパラメータ"RList"を追加
追加機能2
指定したファイルのファイル名を変更する機能を追加、その際のパラメータは次のようにする
>java FileException ReName"変更前ファイル名""変更後ファイル名"
パラメータの数が足らない場合はエラーメッセージを表示。
0581デフォルトの名無しさん
NGNG書いてみたさ。慣れないChannelとか使ってみたさ。
import java.io.*;
import java.nio.*;
import java.nio.channels.*;
public class FileException
{
private static String readList()throws IOException{
File[] filelist = new File(".").listFiles();
StringBuffer sb = new StringBuffer();
for(int i=0; i<filelist.length; i++){
sb.append(filelist[i].getName()+"\n");
BufferedReader br = new BufferedReader(new FileReader(filelist[i]));
sb.append(br.readLine()+"\n");
br.close();
}
return sb.toString();
}
0582M.B.
NGNG> メソッドに戻り値を持たせないOOPLって
> 一般的ではない(というか私は知らない)と思うのですが。
「戻り値を無視できる」というのが、「行儀はよくないが楽」なのよ。
> 「引数への副作用」は防止されていません。
それがJavaの中途半端なところなのだが、
それを完全に防止しちゃうと不便でしかたがないし、
真面目にやってると重くなってしょうがない。
> M.B.さんがJavaの言語仕様について何か不満がある、というのは
> わかるのだけど、何が不満なのかいまいち理解できないです。
Java の仕様はバランスがとれていてよくできていると思う。
おかげで自分用のツールをちゃかちゃかっと作るのにも使えるし
きっちりした業務用アプリケーションを大勢で書くのにも使える。
ただ、用途によってスタイルは使い分けないと、
落とし穴に嵌って痛い目を見るぞ、と。
0583デフォルトの名無しさん
NGNGFile[] filelist = new File(".").listFiles();
StringBuffer sb = new StringBuffer();
for(int i=0; i<filelist.length; i++){
sb.append(filelist[i].getName()+"\n");
BufferedReader br = new BufferedReader(new FileReader(filelist[i]));
String s=null, c;
while((c=br.readLine())!=null){
s = c;
}
sb.append(s+"\n");
br.close();
}
return sb.toString();
}
private static String readFile(String f)throws IOException{
FileChannel fc = new FileInputStream(f).getChannel();
ByteBuffer bb = ByteBuffer.allocate((int)fc.size());
fc.read(bb);
bb.clear();
byte[] bytes = new byte[bb.capacity()];
bb.get(bytes);
String data = new String(bytes);
fc.close();
return data;
}
0584M.B.
NGNGあ、割り込んじゃった。スマソ。
0585デフォルトの名無しさん
NGNGif(args.length==1){
if(args[0].equals("List")) System.out.println(readList());
else if(args[0].equals("RList")) System.out.println(readRList());
else System.out.println(readFile(args[0]));
}
else if(args.length==3){
if(args[0].equals("ReName")) new File(args[1]).renameTo(new File(args[2]));
}
else{
System.out.println("エラー。");
}
}
}
0586デフォルトの名無しさん
NGNG気にしないで下さいな。
エラーメッセージとか例外処理とかいろいろいい加減ですみませぬ。
0587M.B.
NGNG0588デフォルトの名無しさん
NGNG9行目にエラーメッセージを追加で。
でもきれいじゃないな。
0589デフォルトの名無しさん
NGNG0590M.B.
NGNG> Fortrun
キッシュイータが綴りを間違えとるなw
ついでに言っとくと、本物のプログラマは大文字の「FORTRAN」を使うんだよ。
> traditionalなCにはvoidはもともと存在しない。
「traditional な C」って何だそりゃw
C なんてもんは他のハードからシステムをギッてきて
自前の環境を立てるための手段でしかないんだから、
マシンコードレベルの動作が端的かつ簡潔に見えりゃいいんだし、
移植をやってる人間が理解できりゃいいんだよ。
その後ツールを融通するのに、いちいちコードの隅々まで理解してると面倒臭いから、
void だのなんだのといった行儀作法の話が出てきたんだが、
それでも「移植性や可読性なんぞより実行効率を優先しろ」という了解があって使ってる。
C と ラ ー メ ン に ス タ ン ダ ー ド な ん ぞ ね え ん だ よ
……趣味や好き嫌いや美学はあるがね。
0591U ◆CZtFsGiu0c
NGNGimport java.io.*;
public class FileException {
private static final String PATH = "files";
public static void main(String[] args) {
if(args.length != 1) {
System.out.println("usage : java FileException List | filename");
return;
}
try {
if(args[0].equals("List")) {
try {
displayFiles();
} catch(FileNotFoundException e) {
System.out.println("wrong directory.");
}
} else {
try {
displayFile(args[0]);
} catch(FileNotFoundException e) {
System.out.println(args[0] + " does not exist.");
}
}
} catch(IOException e) {
e.printStackTrace();
}
}
0592U ◆CZtFsGiu0c
NGNGFile src = new File(PATH);
if(!src.exists()) {
throw new FileNotFoundException();
}
File[] files = src.listFiles();
for(int i=0;i<files.length;i++) {
System.out.println("filename : " + files[i].getName());
BufferedReader reader = new BufferedReader(new FileReader(files[i]));
String line = reader.readLine();
if(line != null) {
System.out.println(line);
}
reader.close();
}
}
private static void displayFile(String filename) throws FileNotFoundException, IOException {
BufferedReader reader = new BufferedReader(new FileReader(PATH + "/" + filename));
String line = null;
while((line = reader.readLine()) != null) {
System.out.println(line);
}
reader.close();
}
}
0593デフォルトの名無しさん
NGNGCは、ポインターを渡す分、そのポインターが、どこのアドレスを入れているかに
かなり注意しないと、怖いらしい。M.B.サンのおしゃってることは、
かなり、的を得ていることもありかと、JAVAは、そういう点では、考えなくてすみ、
らくなのかも、ーーーと初心者の意見です。
0594デフォルトの名無しさん
NGNG0595デフォルトの名無しさん
NGNG0596M.B.
NGNGC には「右値と左値」っつーのがあって、
x = y というのは、「アドレス &x に *y を sizeof(x の型) 分だけ memcopy() しろ」みてーな
すっげー即物的な記述を言い換えただけみたいなところがある。
だから、「 C はコンパイラじゃなくて高級マクロアセンブラだ」っつー奴もいる。
元がシステム記述言語だけあって、やりたい事は大抵できる事になってて、
いざとなったらインライン・アセンブラという手だってある。
そういう世界から Java に来ると、「こんなんでプログラムが書けるかぁ!」と思うことはあるのだが、
ちゃんとツボは押さえていてくれるのが Java のいいところだし、
反面「ワケわからん初心者はお行儀のいいプログラムを書こうね」と言いたい部分でもある。
0597デフォルトの名無しさん
NGNGC#とはいわないけどC++くらいは勉強したほうが良いんじゃないかい?
0598デフォルトの名無しさん
NGNG>>591
君は底が浅いなぁ
0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNG>>598
空気の読めない奴だなぁ
0601デフォルトの名無しさん
NGNG空気ってなんですか
0602デフォルトの名無しさん
NGNGすっかり雑談スレになってる
0603デフォルトの名無しさん
NGNG右辺値と左辺値かな?
0604デフォルトの名無しさん
NGNGあんまりイジメないように(w
0605デフォルトの名無しさん
NGNGFortran77でいいじゃない。
90がでたころはもうすでにFortranの時代は終わっていた。
0606デフォルトの名無しさん
NGNG英語だとlvalueだな。rvalueってのは見たことないかも。
まー、「左値」でも悪くないとは思うが、「左辺値」と
「辺」を入れるほうが一般的とは思う。
0607M.B.
NGNGすまんこってす。『数学セミナー』で C 言語が紹介された頃には、
まだ適切な訳語がのうて、『右の値』ち『左の値』ちて言っとったばい。
OOL も、『もの志向言語』『算体主導型言語』とか言ってたし。
0608M.B.
NGNGC++ つーぐらいだから評価が終わった時にはもう中身が変わってるw
0609デフォルトの名無しさん
NGNGM.B.さんは上司に欲しいと思ったよ。
雑談スマソ。
0610M.B.
NGNG0611デフォルトの名無しさん
NGNGいや、相手した俺らか
0612デフォルトの名無しさん
NGNG>>596
Cは、私にとって魔法使いが、えいって魔法掛けてるように思えますよ。
何でもできちゃいそうで、
JAVAは、Classを組み立てる段階が、面白いなって感じます。
でも、機械に近い部分が、どのような組み立てになっているのか
すごく好奇心はあるので、Cがんばって習おうかなと思います。
0613デフォルトの名無しさん
NGNG>>612
実際にCを勉強したときにCのイメージが変わりそうだな
0614M.B.
NGNGいや、そこまで年寄りに気ぃ使わんでも。
Java つうのがそもそも SmallTalk やら C やらのしがらみをひきずってる部分があるので、
「お前ら、それっておかしいだろう!」っつー批判はむしろ出てこないと
先行き暗い部分はあるのだよ。
だから、機械寄りの抜け穴にこだわって、
「オレってこんな使い方も知ってるんだぜ」みたいな方面に行っちゃうのは、
正直( Java 的には)悲しいわけ。
サラっと書くなら Java 、だけど脱いでもスゴいんです、みたいな感じで C 、
そういうのがカッコいいように思う。
0615古代帝國富士皇朝総帥・伯壬旭
NGNGさあ、もっと論じ合うがよい!
今日は無礼講だ。
大いに語るがよい!
0616デフォルトの名無しさん
NGNG残りのほとんどは、構造化なり、擬似OOなりしないと結局収拾つかない。
Cだって、Java的(というかOO)な考え方が必要なんだよ。
てかプログラミングってのはそういうもんだ。規模が大きくなればよけいにな。
0617デフォルトの名無しさん
NGNGささ、毒酒をどうぞ
0618デフォルトの名無しさん
NGNGSmallTalk > Smalltalk
とか指摘される側になっても何にも感じてないんだろうなあ
0619M.B.
NGNGC の場合はそれを「見立て」というか、文法以外のスタイル(文体)の部分で解決してるものだから、
結局個人の資質の問題になっちゃって、大規模開発には向かない部分があるだろ。
C++ だって Objective-C だってプリプロセッサで皮を被せる形で OOL 化するとかいった便法だし。
構造化とか OO 的な思想とかいったことを考えるんだったら、「Java に乗り換える」ってのが一番簡単でしょ。
確かに C から Java に乗り換えるともどかしい部分があるけどさ、そのあたりの見極めが Java は割と適切だから、
処理系の中身まで解っててプログラム組んでるような人間だったら、それほどストレスを感じないと思う。
0620M.B.
NGNG書いてから気づいたが、それほど思い入れのある言語ではないので。
ただ、あの言語は OO の具合が半端ではないので、
3 + 4 * 5 が 35 になったりする(+ や * は演算子ではなくセレクタ扱い)。
あれに比べると Java というのは「Cと似たり寄ったりの言語」であって、
「オブジェクト志向」というコンセプトはあんまり表に出ていないような
気がする。
0621デフォルトの名無しさん
NGNGn => 3 [Enter]
1人目の得点を教えておくれ => 50 [Enter]
2人目の得点を教えておくれ => 60 [Enter]
3人目の得点を教えておくれ => 70 [Enter]
最高点:70点
最低点:50点
平均点:60点
yoro
0623M.B.
NGNGimport java.io.*;
public class Seiseki0 {
public static void main(String[] args) throws Exception {
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
System.out.println("受験者の人数を教えておくれ");
System.out.print("n => ");
System.out.flush();
int gakuseisuu = Integer.parseInt(in.readLine());
if (gakuseisuu < 1) System.exit(1);
int [] tensuu = new int[gakuseisuu];
for (int cnt = 0;cnt < gakuseisuu;cnt += 1) {
System.out.print((cnt + 1) + "人目の得点を教えておくれ => ");
System.out.flush();
tensuu[cnt] = Integer.parseInt(in.readLine());
}
int goukei = 0;
for (int cnt = 0;cnt < gakuseisuu;cnt += 1) {
goukei += tensuu[cnt];
}
int saikou = tensuu[0];
int saitei = tensuu[0];
for (int cnt = 1;cnt < gakuseisuu;cnt += 1) {
if (saikou < tensuu[cnt] ) saikou = tensuu[cnt];
if (saitei > tensuu[cnt] ) saitei = tensuu[cnt];
}
System.out.println("最高点:" + saikou + "点");
System.out.println("最低点:" + saitei + "点");
System.out.println("平均点:" + (goukei / gakuseisuu) + "点" );
}
}
0624デフォルトの名無しさん
NGNG暇そうだな。
0625デフォルトの名無しさん
NGNGプログラムを作成してください。見つかった場合は,その要素番号を,見つからなかった場合は「見つかりませんでした」と出力
条件:
検索対象の配列dataは
int data[] = {23, 35, 60, 73, 95, 102, 112, 150, 182, 200, 350 };
です。
検索対象は,Findクラスの中のクラスメソッドとして実装し, メソッド名は binSreach と
します。引数や戻り値の型は任意ですが,要求した結果が求めれるようにしてください。
さらに,検索状況も表示するようにしてください。
検索範囲が変わったら,右側か左側どちらに,狭まったか。
また,その要素の場所を表示
例:
0番目の要素より右にあり,9番目の要素より左を探します。
3番目の要素より左にあります。
7番目の要素より右で,9番目の要素より左を検索します。
7番目の要素より右にあります。
3番目の要素にありました。
よろしくおねがいします。
0626M.B.
NGNGけど行きたくねぇんだよ。
だから逃避してんだよ。悪いかよ。
0627デフォルトの名無しさん
NGNGだからたとえばSmalltalkのような思想がちがちの言語の仲間ではなく、OOのような理念と言語としてのJavaを直接結びつけるのは変だと思う。
0628デフォルトの名無しさん
NGNG0629462
NGNG581さん,591さん
あ、この前はありがとうございました。礼も言わず失礼しました。
自分いっぱいいっぱいだったんで。
【課題】
標準入力から入力した内容を指定のファイルに保存するプログラムを作成しなさい
入力は1行だけでなく最大20行まで連続して入力できるようにしなさい。
行の先頭で":end"が入力されたら、終了してファイルに保存される物とします。また、保存するファイル名はコマンドラインで指定するものとします。
仕様1
プログラムの起動は以下のようにする
仕様2
プログラムの使い方は次のようにする
1.ユーザーがファイル名を指定してプログラムを起動する
2.プログラムは入力を促す
3.ユーザーは文章を入力する。文章は繰り返し入力できる
4.入力行が100行に達するか”end”が入力されたら、プログラムは今まで入力された内容を指定された
ファイルに保存して、終了仕様3
プログラムの置かれるディレクトリに"files"フォルダを作成する。
このプログラムで保存するファイルはすべてこのフォルダの中に置く
仕様4
パラメータがついていない場合は、エラーメッセージを表示して、プログラムを終了する
仕様5
すでに存在するファイルが指定された場合は、そのファイルを上書きして保存する。
存在しないファイルが指定された場合は新規にファイルを作成して保存する
仕様6
ソースコードはクラスごとにファイルを作成する。ひとつのファイルに複数のクラスを記述してはいけない。
またファイル名とクラス名を同じにすること
とりあえず自分でやってみることにします。
んでも参考までに見てみたいんで、ネ申の方々できたらお願いします
0630古代帝國富士皇朝送水・伯壬旭
NGNGその1
package hw3;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Find {
static int data[] = {23, 35, 60, 73, 95, 102, 112, 150, 182, 200, 350 };
public static void main(String[] args) {
int target=0;
try {
if(data.length==0) throw new Exception;
System.out.print("数値の入力: ");
String param=new BufferedReader(new InputStreamReader(System.in)).readLine();
target=Integer.parseInt(param);
} catch (IOException e) {
System.out.println("入力が不正");
System.exit(0);
}
int ans=binSearch(target);
if(ans!=-1) {
System.out.println((ans+1)+"番目の要素にありました");
} else {
System.out.println("見つかりませんでした");
}
}
0631古代帝國富士皇朝送水・伯壬旭
NGNGその2
static int binSearch(int target) {
int length=data.length;
int head=0;
int tail=length-1;
while(length>0) {
int index=length/2+head;
System.out.println("探索範囲の中央、"+(index+1)+"番目の要素と比較します");
if(target>data[index]) {
length=tail-index;
head=index;
if(length<=0) break;
++head;
System.out.print((index+1)+"番目の要素より右にあり、");
} else if(target<data[index]){
length=index-head-1;
tail=index;
if(length<=0) break;
--tail;
System.out.print((index+1)+"番目の要素より左にあり、");
} else {
return index;
}
System.out.println((head+1)+"番目から"+(tail+1)+"番目の範囲を探します");
}
if(target==data[head]) return head;
else return -1;
}
}
0632古代帝國富士皇朝送水・伯壬旭
NGNG失礼。一部書き間違えた。
>>630の12行目
if(data.length==0) throw new Exception;
の部分を
if(data.length==0) throw new Exception();
と訂正してください。
0633古代帝國富士皇朝送水・伯壬旭
NGNG失礼。一部書き間違えた。
>>630の12行目
if(data.length==0) throw new Exception;
の部分を
if(data.length==0) throw new IOException();
と訂正してください。
0634古代帝國富士皇朝送水・伯壬旭
NGNGpackage hw4;
import java.io.*;
public class App {
public static void main(String[] args) {
if(args.length==0) {
System.out.println("パラメーターファイル名がない"); System.exit(0);
}
System.out.println("テキスト入力開始");
StringBuffer text=new StringBuffer();
int count=0;
BufferedReader bufR=new BufferedReader(new InputStreamReader(System.in));
while(true) {
try {
String line=bufR.readLine();
if(line.startsWith("end")) break;
text.append(line + "\r\n");
if(++count >= 100) break;
} catch (IOException e) { }
}
try {
File dir = new File("files");
if (!dir.exists()) dir.mkdir();
File file=new File(dir, args[0]);
BufferedWriter bufW = new BufferedWriter(new FileWriter(file));
bufW.write(text.toString());
bufW.close(); bufR.close();
} catch (IOException e) {
System.out.println("ファイル書き込みエラー"); System.exit(0);
}
}
}
0635M.B.
NGNGimport java.io.*;
import java.util.*;
public class Filter {
public static void main(String [] args) throws Exception {
if (args.length != 1) {
System.err.println("usage: java Filter filename");
System.exit(1);
}
System.out.println("行頭に \"end\" があったら入力終了。");
System.out.flush();
BufferedReader in =
new BufferedReader(new InputStreamReader(System.in));
ArrayList text = new ArrayList();
for (int lineNumber = 0;lineNumber < 100;lineNumber += 1) {
String line = in.readLine();
if (line.startsWith("end")) break;
text.add(line);
}
try {
BufferedWriter bufWtr = new BufferedWriter(new FileWriter(args[0]));
ListIterator liter = text.listIterator();
while (liter.hasNext()) {
bufWtr.write((String)liter.next());
bufWtr.newLine();
}
bufWtr.close();
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
0636デフォルトの名無しさん
NGNGnはあとから入力するもので、特別に与えられたメソッドint n = KeyboardInput.inputInt();を使います。
完成品だと起動したとき
数字を入力してください
と出て、例えば5を入力すると
a=0 b=5 c=5
a=3 b=4 c=5
a=0 b=4 c=4
a=0 b=3 c=3
a=0 b=2 c=2
a=0 b=1 c=1
a=0 b=0 c=0
7個です
とか出るものです。
どうかよろしくお願いします。
次のレスで自分が考えたのも貼ってみます。
0637デフォルトの名無しさん
NGNGSystem.out.print("数字を入力してください");
int n = KeyboardInput.inputInt();
for (int c = n; c <= n && c >= 0; c--) {
for (int b = c; b <=c && b >= 0 ; b-- ) {
for (int a = b; a <= b && a >= 0; a--) {
if (c * c == a * a + b * b) {
System.out.println("a=" + a +" b=" + b + " c=" + c);
} else {
[ここにいれるべき、何もしないで次へ行くという命令がわかりません]
}
}
}
}
}
あとabcの組の個数を出力する方法もわからないのです。
0638M.B.
NGNGpublic class Sqr {
public static void main(String [] args) throws Exception {
int n = 0;
for (int c = 5;c < 100;c += 1) {
int cc = c * c;
for (int a = 1;a < c;a += 1) {
for (int b = a;b < c;b += 1) {
if (((a * a) + (b * b)) == cc) {
n += 1;
System.out.println(n + ": a = " + a +", b = " + b + ", c = " + c);
}
}
}
}
}
}
0639デフォルトの名無しさん
NGNG3平方ということは、a^2+b^2=c^2なのではないでしょうか?
public class Square
{
public static void main(String[] args){
int n = KeyboardInput.inputInt();//Integer.parseInt(args[0]);
int counter = 0;
for(int c=2; c<=n; c++){
int rt = (int)Math.sqrt(n);
for(int a=0; a<=rt; a++){
for(int b=0; b<=rt; b++){
if(c == a*a+b*b){
System.out.println("a="+a+" b="+b+" c="+c);
counter++;
}
}
}
}
System.out.println(counter/*(counter/2+counter%2*/);
}
}
0640デフォルトの名無しさん
NGNGありがとうございます。ですがそれをコンパイルしようとしたらエラーが95個とかでました…。
public static void main(String[] args) {
System.out.print("数字を入力してください");
int n = KeyboardInput.inputInt();
for (int c = n; c <= n && c >= 0; c--) {
for (int b = c; b <=c && b >= 0 ; b-- ) {
for (int a = b; a <= b && a >= 0; a--) {
if (c * c == a * a + b * b) {
System.out.println("a=" + a +" b=" + b + " c=" + c);
}
}
}
}
}
これでとりあえずa,b,cを表示するプログラムはできたのですが、組の個数を表示する方法がさっぱりわからないのです。
0641デフォルトの名無しさん
NGNG8行目のc=2をc=0に。
9行目のsqrt(n)をsqrt(c)に。
0642M.B.
NGNGこういう怖いもの知らずの若さが好きだ。
0643M.B.
NGNGコピペしましたね?
エディタで全角スペース一個を半角スペース二個に置換してからコンパイルなさい。
0644デフォルトの名無しさん
NGNGcounterも1周ごとにチェックしなければ・・・
>>642
すみません。。
0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNG拠点を構え、業績急上昇中!未経験者大募集中!の
ソフトウェア開発会社
グリーンシステムを応援するHPです。
http://www.geocities.jp/grs_hp/
応援するスレはこちら!
http://school4.2ch.net/test/read.cgi/job/1077432387/
最高の会社にするため、みんな頑張ってます!
0648あらやっこ
NGNGポインタを使って、たがいの値を変換するプログラムを作りなさい。
ただし int a, b,sumを利用。
お願いします。(C言語ですが)
0649M.B.
NGNGついでにいうと漏れ自身は 0 を自然数に含めているが、
今回は常識に従った。
で、直角二等辺三角形は斜辺と底辺の長さの比が無理数だから、
b = a + 1 で初期化しても結果は変わらず。
>>648
スレタイを千回叫んで(ry
0650デフォルトの名無しさん
NGNGとっとと報告しる!
http://qb5.2ch.net/test/read.cgi/sec2chd/1098799252/l50
0651M.B.
NGNG> すみません。。
謝ることはない。若さは特権なのだ!
【問題】
7^2 + 24^2 = 15^2 + 20^2 = 25^2
14^2 + 48^2 = 30^2 + 40^2 = 50^2
のように、複数通りの平方数の和で表される平方数がある。
問1)上限値 n (自然数)が与えられている。
二通り以上の平方数の和で表される、n^2 以下の平方数をすべて求め、
a, b の組合せを表示せよよ。
問2)また、その中で、a と b、a' と b' が互いに素である組合せから
なるもののみを選んで表示せよ。
がんがれ若人、雪辱を果たすのだ!
0652M.B.
NGNG> とっとと報告しる!
広告じゃなくてマ板かなんかから流れてきたネタだと主他。
0653コピペ推奨
NGNGhttp://news16.2ch.net/test/read.cgi/dqnplus/1090682935/
0654コピペ推奨
NGNG┃┃ / ヽ ┃┃ もういくつ寝ると 出て行くの
┏┻┻ |======| ━━┻┻┓
┗┳┳ ヽ__ ¶_ ノ ━━┳┳┛ 朝鮮人は ウソついて
┃┃ (/) ┃┃
┃┃ (/) ┃┃ 日本に居座り たかります
凸┃┃ (/) ┃┃凸
Ш┃┃ (/) ┃┃Ш 早く出て行け 朝鮮人♪
.|| ┃┃ (/) ┃┃.||
∧_∧ (/) ∧_∧ ∧ ∧
( ・∀・) (/)(´∀` ) <゜Д゜ > 元歌:童謡「お正月」
(つ つミ (/)(⊃⊂ ) ⊂ ⊃
|_|_|_�I(/)_|_|_|__| |
/////ノ,,,,,,ヽ ////|| |〜
//////////// |∪∪
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 奉 納 |
0655コピペ推奨
NGNG特にヨーロッパ・アメリカ・オーストラリアなど先進国たちの一部ネチズンたちはチャット空間で韓国人だと明らかにすれば弾き出す
とか集団的に退場して捨てるなど韓国人に対して反感を持っていることで現われた.
バンクフェワンドルの海外ペンパル(http://www.prkorea.com/vankop10_5.html)と海外チャットサイト訪問経験(http://www.prkorea.com/vankop10_4.html)
を打ち明けた掲示板には外国ネチズンたちに ‘門前薄待’当ぎりネチズンたちの事情が並んでいる.
海外チャットを始めてからひと月頃なったと言うバンクフェワン精米領さんは
“韓国出身だと言えば有り難がらない場合が 70%ほどされた”と “その時ごとに気持ちが悪かった”と打ち明けた
0656デフォルトの名無しさん
NGNGint array[ ][ ] = { { 1 } , { 2 , 3 , 4 } , { 5 , 6 } };
array の全要素の値を表示するプログラムを作成しなさい。
【条件】
・配列要素の値の表示には、ネストしたfor文(for文の二重ループ)を使用する。また、各for文の継続条件には「length」を使用すること。
・プログラム実行時の画面表示
1
234
56
お願いします。
0657デフォルトの名無しさん
NGNG0658デフォルトの名無しさん
NGNG長くなったのでアップロードしました。
http://49uper.com:8080/html/img-s/21004.zip
>>656
for(int i=0; i<array.length; i++){
for(int j=0; j<array[i].length; j++){
System.out.print(array[i][j]);
}
System.out.print("\n");
}
0659デフォルトの名無しさん
NGNGpublic class HomeWork {
public static void main(String[] args) {
for(int x=0; x<array.length; ++x) {
for(int y=0; y<array[x].length; ++y) {
System.out.println(array[x][y]);
}
}
}
}
0660デフォルトの名無しさん
NGNGpublic class HomeWork {
public static void main(String[] args) {
int array[ ][ ] = { { 1 } , { 2 , 3 , 4 } , { 5 , 6 } };
for(int x=0; x<array.length; ++x) {
for(int y=0; y<array[x].length; ++y) {
System.out.println(array[x][y]);
}
}
}
}
0661デフォルトの名無しさん
NGNG0662デフォルトの名無しさん
NGNG0663デフォルトの名無しさん
NGNG1
234
56
とでるようにならないのですか?
0664M.B.
NGNGpublic class Sqr {
public static void main(String [] args) throws Exception {
int n = 10000; // n >= 5;
int counter = 0;
for (int c = 5;c <= n;c += 1) {
int counter2 = 0;
int c2 = c * c;
int ax = 0;int bx = 0;
for (int a = 1;a < c;a += 1) {
int a2 = a * a;
if ((c2 - a2) < a2) break;
for (int b = a + 1;b < c;b += 1) {
int b2 = b * b;
if ((a2 + b2) > c2) break;
if (!primal(a,b)) continue;
if ((a2 + b2) == c2) {
counter2 += 1;
switch(counter2) {
case 1:
ax = a;bx = b;
break;
case 2:
counter += 1;
System.out.print(counter + ": " + ax +"^2 + " + bx + "^2");
System.out.println(" = " + a + "^2 + " + b + "^2 = " + c + "^2");
break;
default:
System.out.println(" = " + a + "^2 + " + b + "^2");
}}}}}}
0665M.B.
NGNGdo {
int m2 = m % n;
if (m2 == 0) return false;
m = n;
n = m2;
} while (n != 1);
return true;
}
}
0666M.B.
NGNGSystem.out.println(array[x][y]);
}
を、
System.out.print(array[x][y]);
}
System.out.println();
とすればいいはず。(違うかもしれん。自分で試してみれ)
0667デフォルトの名無しさん
NGNG勉強になります。
0668デフォルトの名無しさん
NGNGできました。
ありがとうございます
0669M.B.
NGNG> 数学関係は数式も出しておくれよ
とあるので註しておくと、
>>665 はユークリッドの互除法という算法。
swap の使えない言語だとちとつらい。
再帰を使って書くとスマートだが重い。
0670デフォルトの名無しさん
NGNGアダプティブ・ルンゲ・クッタ法を用いて、積分しなさい。
積分範囲は0<x<10でお願いします。
アダプティブ・ルンゲ・クッタ法
http://www.ee.ucl.ac.uk/~mflanaga/java/RungeKutta.html
のページの
http://www.ee.ucl.ac.uk/~mflanaga/java/RungeKutta.html#cash
です。
0671M.B.
NGNG加速度 V が変位 x に逆比例っつーことはフックの式で単振動っつーことか?
k は「ばね計数」だな。
答えは x0 = 1 だから振幅 1 の正弦波になると思うが……
だったら積分範囲が「0<x<10」っておかしくね?
0.0 <= t <= 1.0 で定数 k を 0.1 単位で 0.1 から 10.0 まで変えて
x の挙動を見ろ、とかいうのがありそうな話だが。
0672M.B.
NGNG○速度 V
×0.0 <= t <= 1.0 で定数 k を 0.1 単位で 0.1 から 10.0 まで変えて
○0.0 <= t <= 10.0 の範囲で定数 k を 0.1 単位で 0.1 から 10.0 まで変えて
0673M.B.
NGNGもうライブラリになってんじゃん。
だったら呼ぶだけだろ…… orz
0674デフォルトの名無しさん
NGNGそのページも何を言ってるのかわかりませんでした。。
ルンゲ・クッタ法で、0<t<10、k=1の場合をやってみました。
public class RK
{
private static double F(double x){
double k = 1;//kの値
return -k*x;
}
public static void main(String[] args){
double x0 = 1;
double v0 = 0;
double t0 = 0;
double dt = 0.1;//dtの値
while(t0 < 10){
double x1 = dt*v0;
double v1 = dt*F(x0);
double x2 = dt*(v0+v1/2);
double v2 = dt*F(x0+x1/2);
double x3 = dt*(v0+v2/2);
double v3 = dt*F(x0+x2/2);
double x4 = dt*(v0+v3);
double v4 = dt*F(x0+x3);
x0 += (x1+2*x2+2*x3+x4)/6;
v0 += (v1+2*v2+2*v3+v4)/6;
t0 += dt;
System.out.println("t="+t0+" x="+x0+" v="+v0);
}
}
}
0676M.B.
NGNGおおすばらしい。パチパチ
アダプティブってのは「適応的」とか「適応型」とかいって、
刻み幅(ここではdt)を高次の量(この場合、速度とか加速度とは)を見ながら
動的に変えてゆくことをいうのだ。
0677M.B.
NGNG人類が月に行ったんじゃ。
その時の軌道計算がのう、地球と月と太陽の重力が全部効いてくるので、
解析的にはムリだったのじゃ。
そこで数値積分で解いたんじゃが、
その時に使われたのが「8次のルンゲ・クッタ・ジル」だったのじゃ。
ルンゲ・クッタ法はニュートン法ほど簡便ではないが、
タフなので工学的な問題にしばしば使われる標準的な手法なのじゃ。
だからライブラリを探せばたいていどっかで見つかるのじゃ。
詳しくは戸川隼人先生の『微分方程式の数値計算』を読むとよいのじゃ。
0678r
NGNGああ、ポルノグラフィティの歌詞って、そういう意味だったのか。
0679M.B.
NGNG「これは小さな一歩だが、人類にとっては大きな飛躍である」
つー名台詞がある。
ついでにいうと、その有人月面着陸プロジェクトの名前が
『アポロ』で、
そのプロジェクトが終わって退職したエンジニアが作った
コンピュータ会社が
アポロ・コンピュータだっつー話。ホントかどうか知らんけど。
0680M.B.
NGNGttp://spaceinfo.jaxa.jp/note/yujin/j/yuj08_j.html
アポロ・コンピュータ
ttp://apollo.maxnt.co.jp/apollo/
0681r
NGNGそしてそのときに、宇宙飛行士が好んで食していたのが
アポロチョコレート
0682M.B.
NGNGほんまかいな。
そしてそのとき NASA のスタッフが被っていたのが
アポロキャップ。
ポイントは月桂樹の刺繍(太陽神アポロンに関係)。
0683M.B.
NGNGttp://www.citywave.com/tokyo/tokusyu/040827/01.html
「アポロ11号」が由来ではなかった! アポロ
1969年7月21日、アメリカの宇宙船「アポロ11号」によって
成功した人類初の月面着陸。1969年に発売された「アポロ」も
それにあやかったと思われがちですが、明治製菓が「アポロ」の
名前を登録したのはアポロが打ち上げられる前の1966年。
ギリシャ神話に出てくる太陽神アポロンに由来したものです。
でも、三角形のかわいい形状は宇宙船の形をイメージして作られました。
0684M.B.
NGNG0685デフォルトの名無しさん
NGNG全てのトランプをごちゃまぜにした結果を表示するプログラムを作成しましょう.なお,ジョーカーもちゃんと2枚入っています.配列は二次元配列を用いるようにしましょう(片方はトランプの種類の配列,片方は数字の配列).
【動作例】
C: \...> java ren93 [Enter]
□■□■□■□■□■□■
ハートのエースがでてこない
■□■□■□ ■□■□■□
まぜました.房州さん,八百長なんてなしですよ.
---------------------------
ハートのキング
スペードの3
ジョーカー
・
・
・
ダイヤのクイーン
---------------------------
C: \...>
たびたびですがお願いします。
0686デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1071815622/l50
【雑談】C/C++【その1】
http://pc5.2ch.net/test/read.cgi/tech/1098817686/l50
とかあるけど、
【雑談】JavaっぽいけどJavaに限らず【0x01】
とかつくります?
質問・宿題に書くには微妙過ぎるけどJavaな話題とか。
火星探査車のJavaとかSunの経営状態とか。ロボコードとかカブロボとか。
言語仕様の分析・要望・愚痴とか。アポロ計画のトリビアとか。
0687デフォルトの名無しさん
NGNGimport java.security.*;
import java.util.*;
public class Shuffle
{
private static final String[] number = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
private static final String[] pattern = {"ハート", "スペード", "ダイヤ", "クローバー"};
private static final String joker = "ジョーカー";
public static void main(String[] args){
int[] a = new int[54];
for(int i=0; i<54; i++) a[i] = i;
Random r;
try{
r = SecureRandom.getInstance("SHA1PRNG");
}
catch(NoSuchAlgorithmException ex){
r = new Random();
}
0688デフォルトの名無しさん
NGNGfor(int i=0; i<54; i++){
int p = r.nextInt(54);
int c = a[i];
a[i] = a[p];
a[p] = c;
}
for(int i=0; i<54; i++){
int p = a[i]/13;
if(p==4){
System.out.println(joker);
continue;
}
System.out.println(pattern[p]+"の"+number[a[i]%13]);
}
}
}
0689687
NGNGチェックはしてません。どこか間違ってるかもしれません。
SeaureRandomは使わなくてもいいかもしれません。
もっとシャッフルしたい時は、
>>688の1行目のループの回数を増やしてください。
0691687
NGNG0692M.B.
NGNGfor (int n = 0;n < (deck.length - 1);m += 1) {
m = n 以上 deck.length 未満の乱数;
deck[m] と deck[n] を swap; // m == n の場合も気にせず実行。
}
※ deck を class として定義して、
swap を private なメソッド化としておいて、
shaffle を呼ぶようにすると綺麗になるかも。
0693M.B.
NGNG……狙いすぎたか。orz
0694デフォルトの名無しさん
NGNG0695M.B.
NGNG【ネタ拝借】Java ショートプログラム一本勝負【質問・相談可】
与えられた仕様に基づく Java プログラムを書くスレ
・「こういうプログラムが欲しい」という注文をUPしておくれ
・ただし機能は単純に 仕様も簡潔・明快に提示しておくれ
・屑な仕様は容赦なく放置 犯罪的な奴も放置
・回答者は原則として単独で動くプログラム(アプレット可)をキボンヌ
・コードは原則的に、丸ごと・ここにコピペしる(てなワケで必然的に長いのは×)
・可能な範囲で可読性も考慮しておくれよ 出題者はそれ見て勉強しておくれよ
・複数回答OK ただし差別化はしておくれ(添削はOK)
・質問・相談可 ヒマネタ・雑談も流れに乗ってりゃOK
・JavaScript 等、他言語の課題は徹底的にゴルァ
0696中学1年生
NGNG「4と6の積は、24です。」と表示するプログラムを作りなさい。
なお積(24)は、関数呼び出しで結果を求めて表示させること。
という宿題が出たんですけど、中々上手くできません。
よろしくお願いします。
0697デフォルトの名無しさん
NGNGalertメッセージに応答してってどういうことですか?
import javax.swing.*;
public class Alert
{
private static int product(int x1, int x2){
return x1*x2;
}
public static void main(String[] args){
int x1 = 4;
int x2 = 6;
String message = x1+"と"+x2+"の積は、"+product(x1, x2)+"です。";
JOptionPane.showMessageDialog(null, message, "Alert", JOptionPane.WARNING_MESSAGE);
}
}
0698デフォルトの名無しさん
NGNG試してみましたがうまく動作しませんでした。
0699デフォルトの名無しさん
NGNGパッケージを確認してないせいじゃないですか?
1行目のpackage hw2;文を消してみてください。
0700デフォルトの名無しさん
NGNGもしくは、
まさかコンソール画面が確認できないという事では。。。
まあ、>>575のプログラムを見るに、キーストロークすると
JTextFiledとコンソール出力の両方に文字が出るだけの仕様みたいだが
(末尾への追加だけで、削除や変更には対応してない)
0701デフォルトの名無しさん
NGNG1行目を削除したら動作しました。
ありがとうございました。
ところで日本語を入力してみたのですが、1文字ずつ表示せずに
表示がおかしくなってしまいます。
(恐らく削除や変更ができないことと関連しているのでしょうが)
これを直すにはどの辺りに手を付ければいいのでしょうか。
0702デフォルトの名無しさん
NGNG変換のせいですね。
InputMethodEventとかを捕まえていぢると上手くいくかも知れませんが、
保障は出来ません。
0703デフォルトの名無しさん
NGNG一番簡単な方法ですが、JTextFieldに文を入力してリターンキーを
押すと、コンソールに出力されるやつです。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class App extends JFrame {
public static void main(String[] args) {
final JTextField tf = new JTextField();
tf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(tf.getText());
tf.setText("");
}
});
JFrame frame = new JFrame();
frame.getContentPane().add(tf);
frame.setSize(400, 64);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
0704デフォルトの名無しさん
NGNGなんとなくこの板じゃなく情シス板向けなスレな気がした。個人的に。
ところで本当はアポロは月面に着陸してなかったと(ry
0705デフォルトの名無しさん
NGNGInputMethoEventが発生したら、
KeyEventでENTERキーが入力されるまで、DocumentEventを無視するとか。
0706デフォルトの名無しさん
NGNG0707デフォルトの名無しさん
NGNGアポロ月着陸を当時生放送で見たが、月面に立てられたアメリカ国旗が
ゆらゆらと動き、星や宇宙船の光がまたたいていたのは有名な話なのじゃ。
それらは、空気が存在する場所でしか決して起きない現象なのじゃ。
あの月着陸の映像が本当だとしたら、月面には空気がある事になってしまう。
つまり、あの映像は地球の映画セット内で撮られたものなのじゃ。
同時期に上映された「2001年宇宙の旅」を見ても分かるとおり、当時の
ハリウッドは、あれ位リアルな月面映像を撮る事は十分に可能だったのじゃ。
アメリカは月着陸プロジェクトに結局失敗してしまい、国家の威信失墜を
防ぐ為に、あのような一大捏造劇を行ったのじゃ。
0708デフォルトの名無しさん
NGNG【雑談】Javaから月まで【0x01】
が必要ですね。
0709M.B.
NGNGそれってピーター・ハイアムズ監督の『カプリコン1』のネタ。
誰かさっさと宿題持ってきなさい。
0710デフォルトの名無しさん
NGNGどこからどうやって始めればいいのか分かりません。
具体的には、LexicalAnalyzerクラスが短いテキストファイルを読み込んで、
lexメソッドが呼び出される度に1語(Token)ずつ返す感じで考えているのですが。
Tokenはint typeとString valueとint lineNumから成り立ってる単純なクラスです。
1字先を常に保存するnextCharみたいな変数がいるとかいらないとか・・・。
0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNG基本は1文字ずつ読んでいく
原則空白・タブは読み飛ばす
最初に読んだ文字の種類によってどんなTokenか決める
(決まらない場合はとりあえず中間状態として、次の文字を読み込んで決まるまで繰り返すか↓の処理のあとに判断)
Tokenの条件に合致しない文字が出てくるまで読み込んでいく
1字先を常に保存するのは↑の処理で読んだ条件に合致しない文字が次のTokenの一部だった場合に読み飛ばされるのを防ぐため
(C言語ではそれを戻すためのungetc()なんてのがあるがJavaにあるのかな・・・?)
0713M.B.
NGNGFORTANみたいに「空白を一切無視する」なんてのもあるわけだし。
あと、GNU 関連のツールは一度ぜんぶメモリにロードしちゃうスタイルのものが多いから、
「一文字戻す」とかいう処理は書かなくて済む。
0714r
NGNGBNFがあればインタプリタパターンでパーサーを書くのがらくちんだね。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1027870433_326/parse.zip
フレームワークだけ書いてみた。
こいつらを実装すればいい。
0715デフォルトの名無しさん
NGNGExcel から値を読み込んで、指定した保存先に Excelのシートの名前で保存する
┏━━━━━┳━━┓
┃肉まん2個. ┃280. ┃
┣━━━━━╋━━┫
┃肉まん4個. ┃560. ┃
┗━━━━━┻━━┛
Excel こんな感じでもいいので適当なExcel
ただし、文字列、数値は必ず含む
┏━━━━━━━━┓
┃肉まん2個 ┃
┃280円 ┃
┃肉まん4個 ┃
┃560円 ┃
┗━━━━━━━━┛
っていうのやってくれませんか?
Excelから値、文字を取得する方法
J2SDKのバージョンは 1.4.2 でお願いします。
できれば肉まん、餃子とExcelに書き込んでグループセルも作ってほしいです。
グループセルの値でフォルダを作ってその下にシート名のファイルを作ってみて下さい。
0716r
NGNG0717デフォルトの名無しさん
NGNGimport java.io.*;
import java.sql.*;
class ExcelDb {
static String BookName = "TestBook";
static String OutFileName = BookName + ".txt";
public static void main(String[] args) throws Exception {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String url = "jdbc:odbc:" + BookName;
Connection conn = DriverManager.getConnection(url , "" , "" );
Statement stmt = conn.createStatement();
ResultSet r = stmt.executeQuery("select * from test1");
r.next();
StringBuffer buf = new StringBuffer();
for(int i = 0; i < 2; i++){
buf.append( r.getString(1) + "\n");
buf.append( r.getInt(2) + "円\n");
r.next();
}
BufferedWriter w = new BufferedWriter(new FileWriter(OutFileName));
w.write(buf.toString());
w.close();
r.close();
stmt.close();
conn.close();
}
}
0718717
NGNGisLast() も FOWIRD_ONLYだって怒られる。
ActiveX使って、Cell 移動したほうが楽そうだけど、やったこと無い。
0719デフォルトの名無しさん
NGNGどうしたらいいですか?
お願いします
0720デフォルトの名無しさん
NGNG本に書いてあるだろ
0721デフォルトの名無しさん
NGNG0722r
NGNGString[] line = new String[100];
BufferedReader br = new BufferedReader( new FileInputReader( "filename" ) );
lines[i] = br.readLine();
0723M.B.
NGNGfor 文が抜けてますぜ旦那。
0725デフォルトの名無しさん
NGNGちなみに文法は以下のような感じです。
Program = Block.
Block = "{" [VarDecl] Statementlist "}".
VarDecl = "int" Iddef {"," Iddef} ";".
Iddef = Identifier ["=" Expression].
Statementlist = Statement {";" Statement}.
Statement = Assignment | PrintStatement | Block | Empty.
Assignment = Identifier AssignmentOperator Expression.
AssignmentOperator = "=" | "+=" | "-=".
PrintStatement = "print" "(" Expression ")".
Expression = [AddingOp] Term {AddingOp Term}.
AddingOp = "+" | "-".
Term = Factor {MultOp Factor}.
MultOp = "*" | "/".
Factor = Constant | Identifier | "(" Expression ")".
Constant = Digit {Digit}.
Identifier = Letter {Letter | Digit}.
Letter = "a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"|"j"|"k"|"l"|"m"|"n"|"o"|
"p"|"q"|"r"|"s"|"t"|"u"|"v"|"w"|"x"|"y"|"z".
Digit = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9".
Emptyは非終端記号ではなく単純に空という意味です。
0726デフォルトの名無しさん
NGNG次の宿題がコンパイラ全部になるようです。
一度メモリに全部ロードするっていうのは
今回はしない方がいいって先生が言ってました。
0727デフォルトの名無しさん
NGNG長ったらしくて申し訳ないのですが、よろしくおねがいします。
package com.swifttaxi.domain.operations;
import java.awt.Point;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Taxi extends Vehicle {
/** The current pickup request */
private PickupRequest pickupRequest;
/** @see Vehicle#Vehicle(int, Point) */
public Taxi(int aId, Point aLocation) {
super(aId, aLocation);
}
/** Clear all pickup requests. */
private void clearPickupRequests() {
setPickupRequest(null);
}
0728デフォルトの名無しさん
NGNG* Perform the Taxi's activity. If the Taxi is idle, update the idle
* records. If the Taxi is driving, drive to the next location. If the Taxi
* is offloading, offload the Passenger. If the Taxi is picking up, pick up
* the Passenger.
*
* @see com.swifttaxi.domain.operations.Vehicle#doActivity()
*/
public void doActivity() {
if (isFree()) {
//idle
} else if (isDrivingToPickup() || isDrivingToDelivery()) {
//drive to next location
drive();
} else if (isPickingUp()) {
pickupPassengers();
} else if (isOffloading()) {
offloadPassengers();
} else {
// unknown state - log it as a bug
final Logger logger = Logger.global;
logger.log(Level.SEVERE, "Unknown state for " + this + " at "
+ getLocation());} }
/**
* Drive to the next location in the path to the target.
*/
public void drive() {
final Point next = nextLocation();
setLocation(next);
}
0729デフォルトの名無しさん
NGNGpublic PickupRequest getPickupRequest() {
return pickupRequest;}
/**
* Determine whether this Taxi is driving to a delivery location.
*
* @return true if this Taxi is diving to its target.
*/
public boolean isDrivingToDelivery() {
return !getLocation().equals(getTarget())
&& !getPassengers().isEmpty(); }
/**
* Determine whether this Taxi is driving to a pickup location.
*
* @return true if this Taxi is diving to a pickup location.
*/
public boolean isDrivingToPickup() {
return !getLocation().equals(getTarget())
&& (getPickupRequest() != null); }
/**
* Determine whether this Taxi is free. It is free if it has no target
* Location.
*
* @see Vehicle#isFree()
*/
public boolean isFree() {
return getTarget() == null; }
0730デフォルトの名無しさん
NGNG* Determine whether this Taxi is offloading passengers.
*
* @return true if this Taxi is offloading passengers.
*/
public boolean isOffloading() {
return getLocation().equals(getTarget())
&& !getPassengers().isEmpty();
}
/**
* Determine whether this Taxi is picking up passengers.
*
* @return true if this Taxi is picking up passengers.
*/
public boolean isPickingUp() {
return getLocation().equals(getTarget())
&& (getPickupRequest() != null);
}
/**
* Offload the Passenger.
*
* @pre the state of this Taxi is 'offloading passenger'
* @post this Taxi recorded a DeliveryEvent for its Passenger
* @post this Taxi has no associated Passenger
* @post this Taxi became free
*/
public void offloadPassengers() {
//TODO }
0731デフォルトの名無しさん
NGNG* Pick up the Passenger waiting at the Taxi's location.
*
* @pre the state of this Taxi is 'picking up passenger'
* @pre the Passenger of the pending PickupRequest is not null
* @pre the destination location of the PickupRequest's Passenger is not
* null
* @post the Passenger set of the Taxi became the Passenger alone
* @post the target of this Taxi became the Passenger's destination
* @post the PickupRequest was removed from this Taxi
*/
public void pickupPassengers() {
//TODO }
/**
* Handle the request for a Passenger pickup.
* @pre this Taxi is free
* @pre aPassenger != null
* @pre aPassenger's pickup location != null
* @post a PickupRequest for aPassenger was created and was associated with this Taxi
* @post the target of this Taxi became the pickup location
* @param aPassenger the Passenger to pick up.
* @see Vehicle#requestPickup(Passenger)*/
public void requestPickup(Passenger aPassenger) {
assert isFree();
assert aPassenger != null;
final Point pickupLocation = aPassenger.getPickupLocation();
assert pickupLocation != null;
setTarget(pickupLocation); //1.2.2
final PickupRequest request = new PickupRequest (aPassenger); //1.2.3
setPickupRequest(request); //1.2.4
}
0732デフォルトの名無しさん
NGNG/**
* @param aPickupRequest
* the pickup request for this Taxi.
*/
public void setPickupRequest(PickupRequest aPickupRequest) {
pickupRequest = aPickupRequest;
}
/** @see java.lang.Object#toString() */
public String toString() {
return "Taxi[" + getId() + "]";
}
}
ここまでがひとつのクラスです・・・。すみません、長いですね・・。
0733727
NGNGTODOがあるのは、VehicleクラスとTaxiクラスだけです・・・。
http://haiiro.info/up/file/1957.zip
テストファイルも同封されてます。あと8Failなのですが・・・。
よろしくお願いします。
0734733
NGNGどうもお騒がせいたしました・・・。
また何かあったらお邪魔させていただきます。
0735デフォルトの名無しさん
NGNGtextfield内に計算式と計算結果を表示させたいのですがどうすればよいのでしょうか?
例えば1+1と入力して=を押すと2と表示されるように。
それとバックスペースキーも教えていただけるとありがたいです。
よろしくお願いします。
0736M.B.
NGNGまず、コンストラクタの最初の方に
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
を足しとけ。終わらんで迷惑だ。
次に、String inputValueをコンストラクタの外に出せ。イベントリスナーから見えん。
それから、actionPerformed(ActionEvent event) {
の中で、
JButton button = (JButton)(event.getSource());
if (button == zeroButton) {
if (inputValue.equals("0")) {
inputValue = "0";
} else {
inputValue = inputValue + "0";
}
}
ってな具合に入力値を溜めこむルーチンを書け。
こっから先はしばらく考えてからまた質問。んじゃ。
0737M.B.
NGNGtextfield.setText(inputValue);
と差し替え。
……ところで「全画面」ボタンを殺のと、
リサイズを禁止するのはどうするんだろう。
GUI の素人が手を出したのは失敗だったか orz
0738289
NGNG年月日を2つ渡し、その差の日数をもとめるコードが書けません。。。
例えば、2004年01月12日と2004年01月14日日の差の日数を求める場合、
コマンドライン上で、
java Test 20040112 20040114
と、二つの引数をわたし、この場合、
2
と出力されるコードです。Calendarクラスを使うのは予想がつくのです
が、調べても日数の差を求めるメソッドが見当たりません。。。
よろしければ、ご教授よろしくお願いします。
0739デフォルトの名無しさん
NGNGけど、最小化の禁止手段はないです。
最小化されるのを感知してすぐ元のサイズに戻すのは可能だけど、動きは見
えてしまいます。
0740デフォルトの名無しさん
NGNGミリ秒の差を86400000で割るしかない。
閏秒の問題は誤差だと思ってあきらめる。
0741M.B.
NGNGサンクス!
0742M.B.
NGNG仕様とはちょっと違っちゃったがまあ勘弁してくれ。
現在のところ足し算だけしかできない。あとは工夫すること。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class CalcMain {
public static void main(String[] args) {
Calculator.setDefaultLookAndFeelDecorated(true);
Calculator calculator = new Calculator();
}
}
0743M.B.
NGNGimplements ActionListener {
final String [] nums =
{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"};
private JTextField textfield;
private JButton [] numBotton;
private JButton plusButton, minusButton, multipleButton, divideButton;
private JButton equalButton, clearButton;
private String inputValue;
private String operator;
private boolean isOperator, numInput;
private int mem;
0744M.B.
NGNGthis.setSize(220, 280);
this.setLocation(100, 100);
this.setResizable(false);
this.setTitle("Calculator");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = getContentPane();
contentPane.setLayout(null);
contentPane.setBackground(Color.blue);
numBotton = new JButton[nums.length];
for (int cnt = 0;cnt < nums.length;cnt += 1) {
numBotton[cnt] = new JButton(nums[cnt]);
numBotton[cnt].addActionListener(this);
}
0745M.B.
NGNGequalButton = new JButton("=");
plusButton = new JButton("+");
minusButton = new JButton("-");
multipleButton = new JButton("*");
divideButton = new JButton("/");
numBotton[7].setBounds(5,40,50,50);
numBotton[4].setBounds(5,90,50,50);
numBotton[1].setBounds(5,140,50,50);
numBotton[0].setBounds(5,190,50,50);
numBotton[8].setBounds(55,40,50,50);
numBotton[5].setBounds(55,90,50,50);
numBotton[2].setBounds(55,140,50,50);
clearButton.setBounds(55,190,50,50);
numBotton[9].setBounds(105,40,50,50);
numBotton[6].setBounds(105,90,50,50);
numBotton[3].setBounds(105,140,50,50);
equalButton.setBounds(105,190,50,50);
plusButton.setBounds(155,40,50,50);
minusButton.setBounds(155,90,50,50);
multipleButton.setBounds(155,140,50,50);
divideButton.setBounds(155,190,50,50);
0746M.B.
NGNGcontentPane.add(numBotton[cnt]);
}
contentPane.add(clearButton);
contentPane.add(equalButton);
contentPane.add(plusButton);
contentPane.add(minusButton);
contentPane.add(multipleButton);
contentPane.add(divideButton);
textfield = new JTextField("0");
textfield.setBounds(5,5,200,30);
textfield.setEditable(true);
contentPane.add(textfield);
plusButton.addActionListener(this);
minusButton.addActionListener(this);
multipleButton.addActionListener(this);
divideButton.addActionListener(this);
equalButton.addActionListener(this);
clearButton.addActionListener(this);
inputValue = "0";
mem = 0;
isOperator = false;
numInput = false;
show();
}
0747M.B.
NGNGJButton button = (JButton)(event.getSource());
for (int cnt = 0;cnt < nums.length;cnt += 1) {
if (button == numBotton[cnt]) {
if (!numInput) {
inputValue = nums[cnt];
numInput = true;
} else {
if (inputValue.length() < 10) {
inputValue = inputValue + nums[cnt];
} else {
// ビープ音とか出す。
}
}
}
}
0748M.B.
NGNGyy = Integer.parseInt(inputValue);
operator = "+";
isOperator = true;
numInput = false;
}
if (button == clearButton) {
inputValue = "0";
numInput = false;
}
if ((button == equalButton) && isOperator) {
mem += Integer.parseInt(inputValue);
Integer result = new Integer(mem);
inputValue = result.toString();
numInput = false;
}
textfield.setText(inputValue);
}
}
……いまさらながら何て長いんだorz
0749M.B.
NGNG0751デフォルトの名無しさん
NGNGよくよく読んでみると以下のような注文がありましたので再度お願いします。
・java.awt.event.* をインポートすること
・クラス定義の最初でimplements ActionListenerをすること
・表示は入力と同時に行うこと
・バックスペースでの削除にも対応させること(任意)
0752デフォルトの名無しさん
NGNGimport java.awt.event.*;
public class Kadai extends Frame implements TextListener {
TextField TextBox;
Kadai(){
addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });
TextBox = new TextField(10);
TextBox.addTextListener(this);
add(TextBox);
pack();
setVisible(true);
}
public void textValueChanged(TextEvent e){
System.out.println(TextBox.getText());
}
public static void main(String[] args){
new Kadai();
}
}
0753752
NGNGと教授に言っといてください。
0754デフォルトの名無しさん
NGNGこれはどうやって回避すればいいですか?
0755デフォルトの名無しさん
NGNG0756デフォルトの名無しさん
NGNGtry & catchじゃ。
0757デフォルトの名無しさん
NGNG↑のスレに書き込んだところ
ここに誘導されてきましたんで伺いたいのですが
このプログラムで
Hello World!!の出力文字を変更して
mainメソッドにmathlibを1つ使う部分を追加したいのですが
例えばどんなものがあるのですか?
class Hello {
public static void main (String[] args) {
System.out.println("Hello, world!!");
}
}
0759デフォルトの名無しさん
NGNGありがとうございます!
動作しました。
>>753の件は教授に言っておきます。
0760289
NGNGなるほど。ありがとうございます!
0761デフォルトの名無しさん
NGNG以下のことを満足させる電卓のアプレットを完成させよ。
・電卓はラベル、またはテキストフィールドとボタンから構成される。ボタンはグリッドレイアウト
で配置する。
・1〜9の数字ボタン・・・・電卓に数値を入力するときに押す。
・四則演算ボタン・・・・加減剰余を計算するときに押す。
・=(イコール)・・・・計算の答えを求めるときに押す。
・AC(オールクリアーボタン)・・・・今までの計算と表示されている数値をすべて消去する
・C(クリアーボタン)・・・・今までの計算を残して表示されている数値のみを消去する。
・電卓に入力できる数値は整数のみである。ただし、出力できる数値は整数と小数である。
・電卓に入出力できる数値の範囲は小数点やマイナスを含めて8桁である。
・計算途中や答えの数値に桁あふれが発生した場合や、0で除するなどの数学的に誤った操作を
した場合にエラー処理をする。
・エラー処理はテキストフィールドあるいはラベルにエラーの内容が分かるようなエラーメッ
セージを表示させる。
・エラーメッセージが表示されているときは、オールクリアボタンのみが有効であるようにする。
0762M.B.
NGNGまた出やがったか orz
つーか、ちょっと前のカキコくらい嫁。
>>742-748 だ。アプレットではなく Java アプリだが。
ついでにいうとボタンはグリッドレイアウトでは配置していないので、
ボタンを格納する JPanel を new するときにグリッドレイアウトを指定しる。
「1〜9の数字ボタン」は「0〜9の数字ボタン」が正。
小数点とクリアボタンを加えて横3縦4に配置するのが定跡。
なお、「AC」と「C」はカシオ、シャープは「C」と「CE」。
エラーメッセージが表示されているときは、オールクリア、クリア、
小数点および数字キーのみが有効であるようにすると使い勝手が向上。
なお、数字は(向かって)右詰で表示するのが本当だが、
今のところ漏れにも方法がわからん。
なお、内部表現としては int を使っているが、
BigDecimalを使うと波瀾に富んで面白くなる。
ついでに初等関数の数値計算は一松信先生の『初等関数の数値計算』を読んで自分で書こう。
逆数の逆数が元の数になるよう工夫するのもまた一興。
……がんがれ。
0763デフォルトの名無しさん
NGNGすみません、軽率でした。
参考にがんばってみます。
0764計算機 その1
NGNGpackage hw6;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HW6 extends JApplet {
double value;
boolean initFlag = true;
char opeFlag;
JLabel label = new JLabel("0");
JPanel panel = new JPanel(new GridLayout(5, 4));
JButton[] btn = new JButton[17];
ActionListener ne = new Number(), oe = new Operator(), ee = new Equal(), ce = new Clear();
public void init() {
label.setFont(new Font("Dialog", 1, 30));
getContentPane().add(label, BorderLayout.NORTH);
getContentPane().add(panel);
ActionListener[] als = new ActionListener[] { ne, ne, ne, oe, ne, ne,
ne, oe, ne, ne, ne, oe, ne, ce, ee, oe, ce };
String[] btnLabel = { "7", "8", "9", "/", "6", "5", "4", "*", "3", "2",
"1", "−", "0", "C", "=", "+", "A" };
for (int i = 0; i < btnLabel.length; ++i) {
btn[i] = new JButton(btnLabel[i]);
btn[i].addActionListener(als[i]);
btn[i].setFont(new Font("Dialog", 1, 15));
panel.add(btn[i]);
}
setVisible(true);
}
0765計算機 その2
NGNGopeFlag = 0;
value = 0;
initFlag = true;
label.setText(text);
Component[] cs = panel.getComponents();
for (int i = 0; i < cs.length - 1; ++i) cs[i].setEnabled(false);
}
class Number implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (opeFlag == 0) value = 0;
StringBuffer sb = new StringBuffer(label.getText());
if (initFlag) sb.delete(0, sb.length());
initFlag = false;
String text = sb.insert(sb.length(), ((JButton) e.getSource()).getText()).toString();
if (text.length() > 8) { error("エラー(桁あふれ)"); return; }
label.setText(text);
}
}
class Operator implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (opeFlag != 0) ee.actionPerformed(e);
if (label.getText().startsWith("エラー")) return;
opeFlag = ((JButton) e.getSource()).getText().charAt(0);
value = Double.parseDouble(label.getText());
initFlag = true;
}
}
0766計算機 その3
NGNGpublic void actionPerformed(ActionEvent e) {
if (initFlag || opeFlag==0) return;
double num = Double.parseDouble(label.getText());
switch (opeFlag) {
case '+': value += num; break; case '−': value -= num; break;
case '*': value *= num; break; case '/': value /= num; break;
}
if (value == Double.POSITIVE_INFINITY || value == Double.NEGATIVE_INFINITY) { error("エラー(不正計算)"); return; }
if (value % 1 != 0) {
if (String.valueOf(value).length() > 8) { error("エラー(桁あふれ)"); return; }
label.setText(String.valueOf(value));
} else {
if (String.valueOf((int) value).length() > 8) { error("エラー(桁あふれ)"); return; }
label.setText(String.valueOf((int) value));
}
initFlag = true; opeFlag = 0;
}
}
class Clear implements ActionListener {
public void actionPerformed(ActionEvent e) {
if (((JButton) e.getSource()).getText().equals("C")) {
if (initFlag) return;
} else {
opeFlag = 0; value = 0;
Component[] cs = panel.getComponents();
for (int i = 0; i < cs.length; ++i) cs[i].setEnabled(true);
}
initFlag = true; label.setText("0");
}
}
}
0767古代帝國富士皇朝総帥・伯壬旭
NGNG400×300のサイズで。
0768古代帝國富士皇朝総帥・伯壬旭
NGNG上記の計算機プログラムは、>>761氏への回答です。
0770デフォルトの名無しさん
NGNGこんな感じでいいのかな?
class Hello {
public static void main (String args[]) {
System.out.println("Javaプログラム");
System.out.println("4.17の平方は"+Math.pow(4.17,2.0)+"です");
}
}
0771デフォルトの名無しさん
NGNG注意: どちらも Windows の API は使用しないで作って下さい。
課題1
標準入力からテキストファイルを読み込み、 行を短い順に出力しなさい。 但し、行は最大 80 文字とし、 80 文字以上の行は先頭 80 文字だけの行として取扱い 出力し、空行は出力しないで下さい。
また、同じ長さの行は入力した順番に出しなさい。
レポートでは、実行例として、作成したソースプログラムをプログラムに入力 した出力と、 http://www.bbn.com/index.html のホームページのソースを入力した結果を先頭 5 行、最後の 5 行を示しなさい。
なお、取り扱える行数は実行時のコンピュータのメモリーのサイズのみに依存 しなければなりません。 勝手な上限を設けてはいけません。
0772M.B.
NGNG「こんな課題が出たのですが、[ここに言い訳を書く]ので、
どうしたらいいかわかりません。どうかお願いします!」
くらい書け。
0773デフォルトの名無しさん
NGNG申し訳ない。まったく手がつけられません。
どうかよろしくお願いします。
0774M.B.
NGNGC で書くのが面白いのだが、スレ違いなのでパス。
C++ の場合は業務的には STL かなんかを使うのが定跡なんだろうが、
学生の演習となると、なんかあざとい感じがしてイヤ。
Java でやる場合、すでに自前のライブラリがあるので、
解りやすく一本のプログラムにまとめるのがマンドクセ。
てなワケでこのスレで神に祈りを捧げなさい。
あなたの信仰があなたを救い、神が降臨されるでしょう。
……ア〜メェ〜ン。
0775自前でソートするのが求められているからこれではダメだろうが
NGNGimport java.util.*;
public class SortSample{
public static void main(String[] args) throws Exception{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
List list = new ArrayList();
for(String line;(line = reader.readLine()) != null;){
list.add(line);
}
String[] lines = (String[])list.toArray(new String[0]);
Arrays.sort(lines,new Comparator(){
public int compare(Object o1,Object o2){
try{
return ((String)o1).getBytes("ASCII").length - ((String)o2).getBytes("ASCII").length;
}catch(Exception e){
throw new RuntimeException(e);
}
}
public boolean equals(Object o){
return false;
}
});
for(int i=0;i<lines.length;i++){
if(lines[i].length() > 0){
byte[] output = new byte[80];
System.arraycopy(lines[i].getBytes("ASCII"),0,output,0,Math.min(lines[i].getBytes("ASCII").length,80));
System.out.println(new String(output).trim());
}
}
}
}
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGimport java.util.*;
public class LineSorter {
public static void main(String[] args) throws Exception {
BufferedReader rd = new BufferedReader( new InputStreamReader( System.in ));
ArrayList lines = new ArrayList();
String line;
while( null != ( line = rd.readLine() ) ){
line = line.substring(0, Math.min(80, line.length()));
int i;
for(i = 0; i < lines.size(); i++){
String cmp_str = (String)(lines.get(i));
if( line.length() < cmp_str.length() ){
break;
}
}
lines.add(i, line);
}
Iterator it = lines.iterator();
while(it.hasNext()){
System.out.println((String)it.next());
}
}
}
0779777
NGNG>>777だと、全角文字も一文字と数えられちまう。
import java.io.*;
import java.util.*;
public class LineSorter {
public static void main(String[] args) throws Exception {
BufferedReader rd = new BufferedReader( new InputStreamReader( System.in ));
ArrayList lines = new ArrayList();
String line;
while( null != ( line = rd.readLine() ) ){
if( line.length() == 0 ) continue;
line = line.substring(0, Math.min(80, line.length()));
int i;
for(i = 0; i < lines.size(); i++){
String cmp_str = (String)(lines.get(i));
if( line.getBytes().length < cmp_str.getBytes().length ){
break;
}
}
lines.add(i, line);
}
Iterator it = lines.iterator();
while(it.hasNext()){
System.out.println((String)it.next());
}
}
}
0780デフォルトの名無しさん
NGNG短いプログラムだと思うんですけどねぇ・・
0781M.B.
NGNGあの手のトークンリーダーはマンドクセなうえに、
分かりやすい解説書があまりないのだ。
中西正和『やさしいコンパイラの作り方』(共立出版)でも読んで
自助努力しる。
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGhanako 20
pochi 50
を数値をみてpochi 50,tarou 40,hanako 20の順に並べ替えて、その後
数値を除いたpochi,tarou,hanakoの順番を取り出したいと思っています。
ご教授いただければうれしいです。
0784デフォルトの名無しさん
NGNGimport java.util.*;
public class LineSorter{
class Line implements Comparable{
private String line;
Line(String line){this.line = line;}
public int compareTo(Object o){return line.length() - ((Line)o).line.length();}
public String toString(){return line.substring(0,80);}
}
public static void main(String[] args) throws Exception {
BufferedReader rd = new BufferedReader( new InputStreamReader( System.in ));
TreeSet lines = new TreeSet();
String line;
while( null != ( line = rd.readLine() ) ){
if( line.length() == 0 ) continue;
lines.add(new Line(line));
}
for(Iterator it = lines.iterator();it.hasNext();System.out.println(it.next()));){
}
}
0785デフォルトの名無しさん
NGNGimport java.util.*;
public class LineSorter783{
class Line implements Comparable{
private String name;
private int val;
Line(String line){
this.name = line.substring(0,line.indexOf(" "));
this.val = Integer.parseInt(line.substring(line.indexOf(" ")));
}
public int compareTo(Object o){return ((Line)o).val-val;}
public String toString(){return name;}
}
public static void main(String[] args) throws Exception {
BufferedReader rd = new BufferedReader( new InputStreamReader( System.in ));
TreeSet lines = new TreeSet();
String line;
while( null != ( line = rd.readLine() ) ){
if( line.length() == 0 ) continue;
lines.add(new Line(line));
}
for(Iterator it = lines.iterator();it.hasNext();System.out.println(it.next()));){
}
}
0786M.B.
NGNGいま >>725 の文法を眺めていて思ったんだが、
符号も AddingOp なんだな。
で、int と print は予約語、と。
シンボル(ここでは Identifier 。「識別子」ってところか)と
予約語を区別するには文脈によるしかないので
字句解析ルーチンの仕様としてはあんまり嬉しくないんだよな。
「予約語と同一綴りのシンボルを禁止する」っていう制限を入れると、
クラス定義や関数定義ができなくなっちゃうので、
字句読取りルーチン(が返す Token の属性値)では
どっちも「シンボル」としておいて、
符号と加減算演算子みたいに、
上位ルーチン(解析部)で区別するというのではダメか?
0787M.B.
NGNGProgram = Block;
Block = "{" [VarDecl] Statementlist "}";
VarDecl = %VarType Iddef {"," Iddef}* ";";
%VarType = Identifier;
Iddef = %VarName ["=" Expression];
%VarName = Identifier;
Statementlist = Statement {";" Statement}*;
Statement = Assignment | Procedure | Block | (void);
Assignment = %VarName AssignmentOperator Expression;
AssignmentOperator = "{:=|+=|-=}"; // 代入は ":=" にしてしまう。
Procedure = %ProcName "(" Expression ")";
%ProcName = Identifier;
Expression = (%Sign) Term {%AddingOp Term};
%Sign = PlusMinus;
%AddingOp = PlusMinus;
PlusMinus = [+-];
Term = Factor {MultOp Factor}*;
MultOp = [*/];
Factor = Constant | Identifier | "(" Expression ")";
Constant = [0-9]+;
Identifier = [a-z][a-z0-9]*;
0788M.B.
NGNG"{", "}", "(", ")", ",", ";", "=",
AssignmentOperator, PlusMinus, MultOp, Constant, Identifier,
EOF のいずれかの値。なお、
%:文脈依存の属性
():省略可能
{}:区切りを示す括弧
*:0回以上の繰り返し(後に置く)
+:一回以上の繰り返し(後に置く)
[]:文字のどれか
"{|}":文字列のどれか
\:エスケープ文字
;:終端
(void):空
この仕様なら作譜も楽だろ。
0789デフォルトの名無しさん
NGNG(jtextfieldに文字入力し、メモ帳に保存の繰り返し)
メモ帳を見ると、単語↑単語↑単語・・・
というふうになっています
これを
単語
単語
単語 としたいのですが、わかりません。write()の括弧の中をかえればいいんでしょうか。
あと、単語を20文字入力しても15文字でメモ帳に書き出したいのですが
初心者で、質問もおかしいかもしれませんが、おねがいできないでしょうか
0790M.B.
NGNGあと、String クラスの subString メソッド調べてみな。
0791デフォルトの名無しさん
NGNGダウソ('A`)マンドクセ
0792M.B.
NGNGあとな、エラーメッセージに出したい情報、
たとえば行番号とカラム位置なんていうのは、
Token クラスに持たせておくこと。
構文解析のときになんとかしようと思うと、
訳わかんなくなる。
0793782
NGNG一応その仕様が宿題みたいです。で、次の宿題でコンパイラ全体を作る時に
字句解析ともども根本から見直しさせられるっていう感じみたいです。
どうもありがとうございました。今日とりあえず書いてみます。
0794M.B.
NGNG> 分かりました。でも予約語と識別子の区別は字句解析でしないといけないです。
だったら識別子を切り出した後に、int と print だけチェックするルーチンを書け。
で、そのコードは本番用では捨てて、ちゃんとした型チェックが行なえるように修正しろ。
> で、次の宿題でコンパイラ全体を作る時に
> 字句解析ともども根本から見直しさせられるっていう感じみたいです。
ということなら、ボロが出る前に用済みになる。
ついでに、言っとくと、
通常「予約語」っつーのは if とか while とか do とか、
switch とか case とか break とか(repeat とか until とか)、
あるいは class とか extends とか、そういうものをいう。
で、そういう予約語は変数を含めてシンボルとしては使えんようになっている。
逆に(相当に変態的だが)数字や変数型はシンボルとして使えるようにしても、
それほどややこしいことは起きない。
int int = 3; int 2 = int + int; System.out.println( 2 + 2 );
とかやって 6 が出力されるとかいうのはかなり変態的だが、
それで処理系が複雑になるとかいったことはないので安心しろ。
0795M.B.
NGNG捨てる神あれば拾う神あり
0796デフォルトの名無しさん
NGNGC言語なら追加するときに追加する行よりも長い行の前に追加すれば
ばchar[81]のリスト構造でもできないことはないな
0797デフォルトの名無しさん
NGNGしかもCだし。
0798M.B.
NGNG0799デフォルトの名無しさん
NGNGtypedef struct _tag_NODE {
char linedata[81];
struct tag_NODE* next;
}NODE;
のリスト構造作って追加するときはヘッドから走査して
追加するデータより長い行の前に追加するようにすれば
C言語でも課題がこなせるのではないかと思っただけ
0800M.B.
NGNG「C言語でも」つーか「C言語なら」だな。
むしろ Java でやろうとすると悩む。
まあ、当該 NODE の linedata で新しい NODE を new して、
linedata を差し替えたうえで tag に新 NODE の参照を
セットすりゃいいだけの話なんだが。
0801デフォルトの名無しさん
NGNG0802782
NGNGpublic class LexicalAnalyzer {
private FileReader file;
private char current;
private char next;
private int line;
public LexicalAnalyzer(String name) {
try {
file = new FileReader(name);
next = (char) file.read();
line = 1;
} catch (FileNotFoundException e) {
System.err.println("cannot open " + name);
System.exit(1);
} catch (IOException e) {
System.err.println(e);
}
}
public static void main(String[] args) {
LexicalAnalyzer lex = new LexicalAnalyzer(args[0]);
LexicalToken token = lex.getNextToken();
while (token != null) {
System.out.println(token);
token = lex.getNextToken();
}
}
0803782
NGNGtry {
current = next;
next = (char) file.read();
} catch (IOException e) {
System.err.println(e);
}
}
public boolean hasMoreToken() {
int c = (int) current;
if (c == 65535) return false;
else return true;
}
0804782
NGNGString value = "";
value += current;
while ((Character.isLowerCase(next)) || (Character.isDigit(next))) {
value += next;
read();
}
if (value.equals("int")) {
read();
return new LexicalToken(LexicalToken.VARDECL,line,value);
}
else if (value.equals("print")) {
read();
return new LexicalToken(LexicalToken.PRINT,line,value);
}
else return new LexicalToken(LexicalToken.VAR,line,value);
}
public LexicalToken makeConstant() {
String value = "";
value += current;
while (Character.isDigit(next)) {
value += next;
read();
}
return new LexicalToken(LexicalToken.CONSTANT,line,value);
}
}
0805782
NGNGread();
if (!hasMoreToken()) return null;
if ((current == '\r') || (current == '\n') ||
(current == '\t') || (current == ' ')) {
if (next == '\n') {
line++;
read();
}
return getNextToken();
}
if (current == '+') {
if (next == '=') {
read();
return new LexicalToken(LexicalToken.PLUSEQUAL,line);
}
else return new LexicalToken(LexicalToken.PLUS,line);
}
if (current == '-') {
if (next == '=') {
read();
return new LexicalToken(LexicalToken.MINUSEQUAL,line);
}
else return new LexicalToken(LexicalToken.MINUS,line);
}
if (Character.isLowerCase(current)) return makeIdentifier();
if (Character.isDigit(current)) return makeConstant();
0806782
NGNGcase '{' : return new LexicalToken(LexicalToken.C_BRA,line);
case '}' : return new LexicalToken(LexicalToken.C_KET,line);
case '(' : return new LexicalToken(LexicalToken.BRA,line);
case ')' : return new LexicalToken(LexicalToken.KET,line);
case ',' : return new LexicalToken(LexicalToken.COMMA,line);
case ';' : return new LexicalToken(LexicalToken.SEMICOLON,line);
case '=' : return new LexicalToken(LexicalToken.EQUAL,line);
case '*' : return new LexicalToken(LexicalToken.MULTI,line);
case '/' : return new LexicalToken(LexicalToken.DIVIDE,line);
default : return new LexicalToken(LexicalToken.UNKNOWN,line,Character.toString(current));
}
}
0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGこのプログラムのEatingMan#eat()メソッドは、
if〜elseが入り組んでいてとても複雑な上に、
新しい種類のFoodクラスを作成する度に変更を加える必要があります。
適切なデザインパターンを用いて、このプログラムを書き換えなさい。
なお、すべての食べ物について、その食べ方は1通りしかないものとします。
ソースコードは次のレス。
0809八百屋
NGNGvoid eat(Food food){
if(food instanceof Rice){
// お箸を使ってfoodを食べる
}
else if(food instanceof Bread){
// 手づかみでfoodを食べる
}
else if(food instanceof Steak){
// ナイフとフォークを使ってfoodを食べる
}
}
}
class Food{
}
0810デフォルトの名無しさん
NGNG0811デフォルトの名無しさん
NGNG二次元配列 String [] hoge = new String [7]があり、
表形式の行列で表すと次のような形になります。
(,は見やすくするため、CとDの文字列は何でもよい)
列→
A B C D
0, 0, hogeA, hogeI
行 0, 1, hogeM, hogeG
↓ 0, 2, hogeS, hogeV
1, 0, : :
1, 1, : :
1, 2, : :
2, 0, : :
表では列名に便宜上A,B,C,Dと名前をつけました。
0812デフォルトの名無しさん
NGNG二次元配列 String [] hoge = new String [7]があり、
表形式の行列で表すと次のような形になります。
(,は見やすくするため、CとDの文字列は何でもよい)
列→
A B C D
0, 0, hogeA, hogeI
行 0, 1, hogeM, hogeG
↓ 0, 2, hogeS, hogeV
1, 0, : :
1, 1, : :
1, 2, : :
2, 0, : :
表では列名に便宜上A,B,C,Dと名前をつけました。
0813デフォルトの名無しさん
NGNGすみません。
質問があります。
二次元配列 String [] hoge = new String [7]があり、
表形式の行列で表すと次のような形になります。
(,は見やすくするため、CとDの文字列は何でもよい)
A B C D
0, 0, hogeA, hogeI
0, 1, hogeM, hogeG
0, 2, hogeS, hogeV
1, 0, : :
1, 1, : :
1, 2, : :
2, 0, : :
表では列名に便宜上A,B,C,Dと名前をつけました。
0814813
NGNGどうしたよいですか。
列Aの行の値が「0」の部分をひとまとめにして列B、列C、列Dそれぞれで一次元配列をつくる。
→ 列B {0, 1, 2} 列C {"hogeA", "hogeM", "hogeS"} 列D {"hogeI", "hogeG", "hogeV"}
列Aの行の値が「1」の部分をひとまとめにして・・・
列Aの行の値が「2」の部分をひとまとめにして・・・
おねがいします。
0815M.B.
NGNGLexicalToken クラスの宣言はどこだ?
0816デフォルトの名無しさん
NGNGpackage hw8;
public class HW8 {
static String[] column={
"0001112", /*列A*/
"0120120", /*列B*/
"abcdefg", /*列C*/
"hijklmn" /*列D*/
};
public static void main(String[] args) {
char target='0'; //指定文字
String[] s=pickup(target);
System.out.println("列A内の文字「"+target+"」に対応して抽出作成された各文字列");
for(int i=0; i<s.length; ++i) System.out.println(s[i]);
}
static String[] pickup(char target) {
String[] answer=new String[column.length-1];
for(int i=0; i<answer.length; ++i) {
answer[i]=new String();
}
for(int i=0; i<column[0].length(); ++i) {
if(column[0].charAt(i)==target) {
for(int k=0; k<answer.length; ++k) {
answer[k]=answer[k].concat(String.valueOf(column[k+1].charAt(i)));
}
}
}
return answer;
}
}
0817デフォルトの名無しさん
NGNGclass EatingMan{
void eat(Food food){
food.eat();
}
}
abstract class Food {
abstract void eat();
}
class Rice extends Food {
void eat() { /*お箸を使ってfoodを食べる*/; }
}
class Bread extends Food {
void eat() { /*手づかみでfoodを食べる */; }
}
class Steak extends Food {
void eat() { /*ナイフとフォークを使ってfoodを食べる*/; }
}
0818デフォルトの名無しさん
NGNG友人たちに聞いても分からなかったので教えてください。
「mxn 行列 A と n 次元ベクトル b の積 A*bを計算して m 次元ベクトル c に格納し、表示するプログラム」
を作りたいです。
結果は
行列 A =
[ xx.x xx.x xx.x xx.x xx.x ]
[ xx.x xx.x xx.x xx.x xx.x ]
[ xx.x xx.x xx.x xx.x xx.x ]
[ xx.x xx.x xx.x xx.x xx.x ]
ベクトル b (の転置) =
[ xx.x xx.x xx.x xx.x xx.x ]
--- 計算結果 ---
ベクトル c (の転置) =
[ xx.x xx.x xx.x xx.x ]
こうなるようにしたいのですが・・。
どなたかご教示願います。
0819間違えた 訂正します
NGNGclass EatingMan{
void eat(Food food){
food.eat();
}
}
interface Food {
void eat();
}
class Rice implements Food {
void eat() { /*お箸を使ってfoodを食べる*/; }
}
class Bread implements Food {
void eat() { /*手づかみでfoodを食べる */; }
}
class Steak implements Food {
void eat() { /*ナイフとフォークを使ってfoodを食べる*/; }
}
0821813
NGNGもとの配列が一次元ではなくて二次元配列でした。
せっかく書いてくれたのにすみません。もう一度お願いします。
[訂正版]
二次元配列 String [][] hoge = new String[7][4]があり、
表形式の行列で表すと次のような形になります。
(,は見やすくするため、CとDの文字列は何でもよい)
hoge = {
{0, 0, hogeA, hogeI},
{0, 1, hogeM, hogeG},
{0, 2, hogeS, hogeV},
{1, 0, },
{1, 1, },
{1, 2, },
{2, 0, },
}
0822デフォルトの名無しさん
NGNGpackage hw9;
public class HW9 {
static int[][] A = {
{0, 1, 2, 3, 4},
{5, 6, 7, 8, 9},
{10,11,12,13,14},
{15,16,17,18,19}
};
static int[] B = {1,2,3,4,5};
static int[] C = new int[A.length];
public static void main(String[] args) {
for(int x=0; x<A.length; ++x) {
for(int y=0; y<A[x].length; ++y) {
C[x]+=A[x][y]*B[y];
}
}
System.out.print("―計算結果―\nベクトル c (の転置) =\n[");
for(int i=0; i<C.length;) {
System.out.print(C[i]);
if(++i >= C.length) break;
System.out.print(",");
}
System.out.println("]");
}
}
0823818
NGNGありがとうございます!
申し訳ないのですが、この結果をフレームに表示したいです。
書き込みに不備があってすみません。
import java.awt.*;
import java.awt.event.*;
public class HW9 extends Frame {
public HW9() {
setSize(400,300);
addWindowListener(new WindowAdaptor() {
public void windowClosing(WinowEvent e){
System.exit(0);
}
});
}
この後どう書き換えていけばよいでしょうか。
スレ違いだとは思いますが助けてください。
0824古代帝國富士皇朝総帥・伯壬旭
NGNGpackage hw8;
public class HW8 {
// static String[][] hoge = new String[7][4];
static String[][] hoge = {
{"0", "0", "hogeA", "hogeI"},
{"0", "1", "hogeM", "hogeG"},
{"0", "2", "hogeS", "hogeV"},
{"1", "0", "hogeW", "hogeX"},
{"1", "1", "hogeY", "hogeZ"},
{"1", "2", "hogeJ", "hogeK"},
{"2", "0", "hogeM", "hogeL"},
};
public static void main(String[] args) {
String target="0"; //指定文字列
String[] s=pickup(target);
char label='B';
for(int i=0; i<s.length; ++i) {
System.out.print("列"+(label++)+"{");
System.out.print(s[i]); System.out.println("}");
}
}
static String[] pickup(String target) {
String[] answer=new String[hoge[0].length-1];
for(int i=0; i<answer.length; ++i) answer[i]=new String();
for(int a=0; a<hoge.length; ++a) {
if(!target.equals(hoge[a][0])) continue;
for(int b=1; b<hoge[a].length; ++b) answer[b-1]=answer[b-1].concat(" " + hoge[a][b] + ",");
}
return answer;
}
}
0825デフォルトの名無しさん
NGNGpackage hw9;
import java.awt.*; import java.awt.event.*;
public class HW9 extends Frame {
static int[][] A = {
{0, 1, 2, 3, 4},
{5, 6, 7, 8, 9},
{10,11,12,13,14},
{15,16,17,18,19}
};
static int[] B = {1,2,3,4,5};
static int[] C = new int[A.length];
public static void main(String[] args) {
for(int x=0; x<A.length; ++x) {
for(int y=0; y<A[x].length; ++y) C[x]+=A[x][y]*B[y];
}
new HW9();
}
HW9() {
TextArea ta=new TextArea(); ta.setFont(new Font("Dialog", 0, 15)); add(ta);
ta.append("―計算結果―\nベクトル c (の転置) =\n[");
for(int i=0; i<C.length;) {
ta.append(String.valueOf(C[i]));
if(++i >= C.length) break;
ta.append(",");
}
ta.append("]");
setSize(400,300);
addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e){ System.exit(0); } });
setVisible(true);
}
}
0826782
NGNGダメなのは分かってるんですがどこらへんをどう改良すればいいのか
是非教えていただきたいです・・・。最初は1文字のTokenのタイプナンバーは
各キャラクターを整数型にキャストしたもので割り当てていたんですけど、
宿題の詳細をよく読んだらタイプナンバーは0から始めろってことだったので
仕方なく改良したらこんなことになっちゃったのです。
public class LexicalToken
{
public final static int BRA = 0; /* Single char tokens */
public final static int KET = 1;
public final static int C_BRA = 2;
public final static int C_KET = 3;
public final static int COMMA = 4;
public final static int SEMICOLON = 5;
public final static int EQUAL = 6;
public final static int MULTI = 7;
public final static int DIVIDE = 8;
public final static int PLUS = 9;
public final static int MINUS = 10;
public final static int PLUSEQUAL = 11; /* Multi char tokens */
public final static int MINUSEQUAL = 12;
public final static int VARDECL = 13; /* Complex tokens */
public final static int PRINT = 14;
public final static int VAR = 15;
public final static int CONSTANT = 16;
0827782
NGNGprivate int type;
private int line;
private String value;
public LexicalToken(int type, int line) {
this.type = type;
this.line = line;
switch (type) {
case 0: value = "OpenBracket"; break;
case 1: value = "CloseBracket"; break;
case 2: value = "OpenCurlyBracket"; break;
case 3: value = "CloseCurlyBracket"; break;
case 4: value = "Comma"; break;
case 5: value = "Semicolon"; break;
case 6: value = "AssignmentOp: ="; break;
case 7: value = "MultOp: *"; break;
case 8: value = "MultOp: /"; break;
case 9: value = "AddingOp: +"; break;
case 10: value = "AddingOp: -"; break;
case 11: value = "AssignmentOp: +="; break;
case 12: value = "AssignmentOp: -=";
}
}
0828782
NGNGthis.type = type;
this.line = line;
switch (type) {
case 13: this.value = "ReservedWord: " + value; break;
case 14: this.value = "ReservedWord: " + value; break;
case 15: this.value = "Identifier: " + value; break;
case 16: this.value = "Constant: " + value; break;
case 99: this.value = "UnknownToken: " + value;
}
}
public String toString() {
return "type " + type + " | " + value + " | line: " + line;
}
}
0829デフォルトの名無しさん
NGNG可視性が下がってる気がする。
0830M.B.
NGNGできてんじゃん。すごいすごい。
ただ、いかんせん設計つーか問題自体が悪いところがあって、
制約を緩めないとこれ以上綺麗なコードにはならんだろうね。
それを踏まえてアドバイスしておくと、
1)一文字づつ入力するより一行づつ入力し、
トークン切り出しの部分ではfor文を使う。
行をまたがるトークンはないので、改行符号のチェックが省略できて
全体の見通しがよくなる。
また、こういうふうにしておくと、
+= と -= のチェックを二重の if 文ではなく、
String オブジェクトの Matches メソッドで行なえるようになるので、
コードがすっきりする。
2)唯一、行をまたがって現れるのがコメントなので、
まずファイルの終わりにぶちあたった時の例外を定義して、
トークン切り出しルーチンの入口のところで try & catch で
待ち構えて、空白とコメントを読み飛ばすところで
ファイルの終わりを検出したら、throw しろ。
以上。がんがれ。
0831デフォルトの名無しさん
NGNGカプセル化して情報隠蔽を図れば、当然に可視性を下げるんじゃないでせうか。
とJavaもOOPもどしろーとな漏れが畏れ多くも口を出してみるテスト。
0832デフォルトの名無しさん
NGNGそれとも、もしかして可視性って可読性とは別ですか
0833829
NGNGなんか俺の言いたいことと違う。
「interface内のメソッドは自動的に
public abstract
になるのに、それをimplementsしてるクラスのeat()メソッドが
パッケージの可視性しかないから、
このままではコンパイルエラーになると思う。」
ということを言いたかった。
0834デフォルトの名無しさん
NGNG別です。残念!
0835デフォルトの名無しさん
NGNG0836M.B.
NGNG逝ってよし!
0837831
NGNG「可視性」はアクセス許可のつもりで書いていた。
可読性については同意。
>833
はい、すっかり見落としてました。
ということで829、832とも正直スマンカッタorz
0838782
NGNG行入力にするかどうかは実は結構迷ってたんですが、
確かに行をまたがるTokenはないですね。なぜか気付きませんでした。
あとStringクラスのMatchesメソッド見たんですがイマイチ使い方がピンときません。
どうやるんでしょう?この場合 +=か-=か=て感じでマッチさせるのですか?
(+-)*= みたいな?
0839デフォルトの名無しさん
NGNG0840818
NGNGレス遅れてすみません。本当助かります!
そのプログラムをそのまま実行したらエラーが出ました。
Exception in thread "main" java.lang.NoClassDefFoundError:HW9(wrong name:hw9/HW9)
とのことなのですが・・。
ちなみにファイル名はHW9.javaとしました。
コンパイルエラーはでてないですが、実行できません。
どうすればよいのでしょうか、たびたびすみません。
0841M.B.
NGNG紛らわしいこと言ってスマソ。
regionMatches()で長いほう(部分文字列でないほう)
を先に比較すればオッケー。つまりは、
"+=" を '+' より先に、"-=" を '-' より先にチェックする。
case 文では条件判断を書けず、
if 〜 else は向かって右へ右へとインデントしちゃってウザいので、
関数(メソッド)で定義して return で戻すのが定跡になっている。
まあ、他にも手はあるのだけどね、あまり一般的でないので、
見た香具師が混乱する。
0842デフォルトの名無しさん
NGNG0843M.B.
NGNG> package hw9;
を削れ。
0844M.B.
NGNGdo {
} while (false);
でくくっといて、breakで抜ける。
0847デフォルトの名無しさん
NGNGprivate int ID;
private String name;
private int[]reportScores;
public String getStudentName(){return name;}
}
class Prog3Students{
private Student[] students;
public Prog3Students(int n){
students = new Student[n];
}
public void InsertionSortByName(){
int i,j;
Student s;
for (i=0; i < a.length; i++){
s = students[i];
for (int j=i;(j > 0) &&
s.getStudentName().compareTo(students[j-1]).getStudentName());
j--){
students[j] = students[j-1];
}
students[j] = s;
}
}
}
0848847
NGNGpublic static void main(String[] argv){
Prog3Students p3s = new Prog3Students(100);
p3s.InsertionSortByName();
}
}
上記のプログラム例を参考にして、学生情報(学籍番号、名前、
レポートの平均点)を下記のような実行例になるように、アルファベット順で
ソート(挿入ソート)するプログラムを作成しなさい。
作成するクラスは、Student, Prog3Students, TestProg3Studentsの3つとする。
変数やメソッドを適切に追加・修正して完成させなさい。
ソーティング前:
StudentID: 16000009, StudentName: Yamashita Daisuke, AverageScore: 95
StudentID: 16000010, StudentName: Yamamoto Gorou, AverageScore: 78
StudentID: 16000012, StudentName: Wada Kyouko, AverageScore: 80
StudentID: 16010001, StudentName: Asada Jirou, AverageScore: 88
StudentID: 16010002, StudentName: Okada Hanako, AverageScore: 90
StudentID: 16020005, StudentName: Kimura Tarou, AverageScore: 66
StudentID: 16020007, StudentName: Suzuki Ichirou, AverageScore: 70
ソーティング後:
StudentID: 16010001, StudentName: Asada Jirou, AverageScore: 88
StudentID: 16020005, StudentName: Kimura Tarou, AverageScore: 66
StudentID: 16010002, StudentName: Okada Hanako, AverageScore: 90
StudentID: 16020007, StudentName: Suzuki Ichirou, AverageScore: 70
StudentID: 16000012, StudentName: Wada Kyouko, AverageScore: 80
StudentID: 16000010, StudentName: Yamamoto Gorou, AverageScore: 78
StudentID: 16000009, StudentName: Yamashita Daisuke, AverageScore: 95
0849847
NGNGimport java.io.*;
import java.util.*;
class SortableData {
private int[] a;
public SortableData(int initSize) {
}
public void bubbleSort() {
}
public void selectionSort() {
}
public void insertionSort() {
}
0850847
NGNGpublic void fillRandomData() {
for (int i = 0; i < a.length; i ++) {
a[i] = (int) (java.lang.Math.random() * 10000.0);
}
}
public void fillOrderedData() {
}
public void fillRevOrderedData() {
}
public void print(String header) {
System.out.print(header);
System.out.print(a[0]);
for (int i = 1; i < a.length; i ++) {
System.out.print("," + a[i]);
}
System.out.println();
}
}
0851847
NGNGpublic static void main(String[] argv) {
SortableData sd = new SortableData(10);
System.out.println("BubbleSort");
sd.fillRandomData();
sd.print("Random: ");
sd.bubbleSort();
sd.print("------> ");
sd.fillOrderedData();
sd.print("Ordered: ");
sd.bubbleSort();
sd.print("-------> ");
sd.fillRevOrderedData();
sd.print("Reverse: ");
sd.bubbleSort();
sd.print("-------> ");
}
}
(1)上記に示したソート可能なデータを保持するクラスSortableData,およびこのクラスの
オブジェクトを利用してソートを行うクラスTestSortとを完成させて以下のデータに対して、
正しくソートできることを確認しなさい。
(a)正順に並べたデータ (1,2,3,4,5 → 1,2,3,4,5)
(b)逆順に並べたデータ (5,4,3,2,1 → 1,2,3,4,5)
(c)ランダムに並べたデータ (3,5,1,2,4 → 1,2,3,4,5)
0852847
NGNG変化するかを調べ、考察せよ。
import java.lang.*;
import java.io.*;
import java.util.*;
class SortableData {
...
}
class TestSortPerformance {
public static void main(String[] argv) {
if (argv.length == 0) {
System.out.println("Usage: java TestSortPerformance size1 size2 ...");
return;
}
0853847
NGNGfor (int i = 0; i < argv.length; i ++) {
int size = Integer.parseInt(argv[i]);
SortableData sd = new SortableData(size);
long start,end;
System.gc();
sd.fillRandomData();
start = new Date().getTime();
sd.bubbleSort();
end = new Date().getTime();
System.out.println("bubble sort for " + size +
" data took " + (end - start) +
"milliseconds");
// 選択ソートの実行計測
...
// 挿入ソートの実行計測
...
}
}
}
を参考にすること。
0854847
NGNGどうかお力をお貸し下さい。お願いします。
0855古代帝國富士皇朝総帥・伯壬旭
NGNGimport java.util.*;
public class TestProg3Students {
static String data =
"StudentID: 16000009, StudentName: Yamashita Daisuke, AverageScore: 95\n" +
"StudentID: 16000010, StudentName: Yamamoto Gorou, AverageScore: 78\n" +
"StudentID: 16000012, StudentName: Wada Kyouko, AverageScore: 80\n" +
"StudentID: 16010001, StudentName: Asada Jirou, AverageScore: 88\n" +
"StudentID: 16010002, StudentName: Okada Hanako, AverageScore: 90\n" +
"StudentID: 16020005, StudentName: Kimura Tarou, AverageScore: 66\n" +
"StudentID: 16020007, StudentName: Suzuki Ichirou, AverageScore: 70\n";
public static void main(String[] argv) {
Prog3Students p3s = new Prog3Students(data);
p3s.InsertionSortByName();
p3s.showSortedList();
}
}
class Student {
private int ID;
private String name;
private int[] reportScores;
private int averageScore;
Student(int id, String n, int average) {
ID=id; name=n; averageScore=average;
}
public String getStudentName() {
return name;
}
public String getStudentInfo() {
return "StudentID: "+ID+", StudentName: "+ name+", AverageScore: "+averageScore;
}
}
0856古代帝國富士皇朝総帥・伯壬旭
NGNGclass Prog3Students {
private Student[] students;
public Prog3Students(String data) {
StringTokenizer st=new StringTokenizer(data, ",\n");
String label1="StudentID:", label2="StudentName:", label3="AverageScore:";
int id=0; String name=""; int average=0;
List list=new ArrayList();
while(st.hasMoreTokens()) {
String token=st.nextToken().trim();
if(token.startsWith(label1)) {
id=Integer.parseInt(token.substring(label1.length()).trim());
} else if(token.startsWith(label2)) {
name=token.substring(label2.length()).trim();
} else if(token.startsWith(label3)) {
average=Integer.parseInt(token.substring(label3.length()).trim());
list.add(new Student(id, name, average));
}
}
students=new Student[list.size()];
for(int i=0; i<list.size(); ++i) students[i]=(Student)list.get(i);
}
public void InsertionSortByName(){
for (int i=0; i < students.length; i++){
for (int j=i;(j > 0) && students[j].getStudentName().compareTo(students[j-1].getStudentName())<0; j--){
Student swap = students[j]; students[j] = students[j-1]; students[j-1] = swap;
}
}
}
public void showSortedList() {
for(int i=0; i<students.length; ++i) System.out.println(students[i].getStudentInfo());
} }
0857デフォルトの名無しさん
NGNGJOptionPane.showMessageDialogの辺りが怪しいと思うのですが、
どう修正していいのか分からないので教えて頂けないでしょうか。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Kadai extends Frame implements TextListener {
static int width;
TextField TextBox;
Kadai(String width){
Integer.parseInt(width);
addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });
TextBox = new TextField(width);
TextBox.addTextListener(this);
add(TextBox);
pack();
setVisible(true);
}
public void textValueChanged(TextEvent e){
System.out.println(TextBox.getText());
}
public static void main(String[] args){
JOptionPane.showMessageDialog(null, "入力内容表示プログラム");
width = JOptionPane.showInputDialog("文字数を入力");
new Kadai(width);
}
}
0858古代帝國富士皇朝総帥・伯壬旭
NGNGTestSortクラスはそのままで
class SortableData {
private int[] a;
public SortableData(int initSize) {
a=new int[initSize];
}
public void fillRandomData() {
Set set=new TreeSet();
for (int i = 0; i < a.length;) {
int num=(int)(Math.random()*a.length);
if(!set.contains(new Integer(num))) {
set.add(new Integer(num));
a[i]=num;
++i;
}
}
}
public void fillOrderedData() {
for(int i=0; i<a.length; ++i) a[i]=i;
}
public void fillRevOrderedData() {
for(int i=0; i<a.length; ++i) a[i]=a.length-1-i;
}
public void print(String header) {
System.out.print(header);
System.out.print(a[0]);
for (int i = 1; i < a.length; i++) System.out.print("," + a[i]);
System.out.println();
}
0859古代帝國富士皇朝総帥・伯壬旭
NGNGpublic void bubbleSort() {
for(int i=0; i<a.length; ++i) {
for(int j=1; j<a.length-i; ++j) {
if(a[j]<a[j-1]) {
int swap=a[j]; a[j]=a[j-1]; a[j-1]=swap;
}
}
}
}
public void selectionSort() {
for(int i=0; i<a.length; ++i) {
for(int j=i; j<a.length; ++j) {
if(a[i]>a[j]) {
int swap=a[j]; a[j]=a[i]; a[i]=swap;
}
}
}
}
public void insertionSort() {
for(int i=1; i<a.length; ++i) {
for(int j=i; j>0 && a[j]<a[j-1]; --j) {
int swap=a[j]; a[j]=a[j-1]; a[j-1]=swap;
}
}
}
}
0860古代帝國富士皇朝総帥・伯壬旭
NGNGclass TestSortPerformance {
public static void main(String[] argv) {
if (argv.length == 0) {
System.out.println("Usage: java TestSortPerformance size1 size2 ..."); return;
}
for (int i = 0; i < argv.length; i++) {
int size = Integer.parseInt(argv[i]);
SortableData sd = new SortableData(size);
long start,end;
System.gc();
sd.fillRandomData();
start = new Date().getTime();
sd.bubbleSort();
end = new Date().getTime();
System.out.println("bubble sort for "+size+" data took "+(end - start)+"milliseconds");
sd.fillRandomData();
start = new Date().getTime();
sd.selectionSort();
end = new Date().getTime();
System.out.println("selection sort for "+size+" data took "+(end - start)+"milliseconds");
sd.fillRandomData();
start = new Date().getTime();
sd.insertionSort();
end = new Date().getTime();
System.out.println("insertion sort for "+size+" data took "+(end - start)+"milliseconds");
}
}
}
0861古代帝國富士皇朝総帥・伯壬旭
NGNG>ランダムな場合でよいので、ソートの実行時間がどのように
>変化するかを調べ、考察せよ。
bubble sort for 10000 data took 735milliseconds
selection sort for 10000 data took 797milliseconds
insertion sort for 10000 data took 266milliseconds
>>860のコードで、引数を10000にしてテストした結果は上記のようになる。
0862デフォルトの名無しさん
NGNGwidth = JOptionPane.showInputDialog("文字数を入力");
を
String width = JOptionPane.showInputDialog("文字数を入力");
とすればOK
0863デフォルトの名無しさん
NGNG0864デフォルトの名無しさん
NGNGありがとうございます
修正を加えたところ、とりあえずは動作するようになりましたが
肝心のTextField()で引数のwidthがintではなくStringとなっているのか
ダイアログの大きさが変わってくれません。
どうすればよいのでしょうか。
0865デフォルトの名無しさん
NGNG>>819
Food#eat() よりも
Food#eatenBy(EatingMan) というメソッドであるべきと思います。
食べるという行為が、食べる人について全く関与せずに行われることは
あまり無いと思うので。
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNG混ぜっ返しかもしれんけど
EatingMan#eat(Food)でいいのと違うだろうか。
で、インターフェース(abstractクラスの方がいいかな? )Foodには
bitten()とか、getTaste()とか用意しておいて。
0868デフォルトの名無しさん
NGNGクラス名に対するメソッド名は
主格関係でも目的格関係でもいいじゃないの?
食べるという行為は常に人が絡むものだからってことで
Food#eatenBy(Man) にするっていうのは分かる気がするけど。
0869867
NGNG(「なんとなく」人間中心に考えた方が座りがいいなぁ、という程度の話)
異論のある方は867はさくっと見逃して下せえまし。スレ汚し失礼しやした。
↓以下何事もなかったかのように宿題と回答
0870M.B.
NGNGあからさまに混ぜっ返しなのだが、
getTaste() とか getColour() とかいうメソッドは、
Manのメソッドにせんとイカン。
亜鉛が足りないとかいうと味がわからん。
0871デフォルトの名無しさん
NGNG0872デフォルトの名無しさん
NGNG宿題文を省略せず全文書いてください。
0873M.B.
NGNG「 Java のプリティプリンタ(とりあえずインデントのみ)を書け」
とかいう宿題を持ってきてくれる親切や香具師が
出てきてくれるんじゃないかなと期待しておるのだが。
いちいちインデントしてコードを確認するのも面倒なのだが、
かといって率先して書こうという気にもならんので……
0874デフォルトの名無しさん
NGNGかわいい印刷屋たん?
0875デフォルトの名無しさん
NGNG自分で宿題を書いて自分で回答。これ最強。
0876M.B.
NGNGワシの正体はトーベ・ヤンソンの『ムーミン谷の夏まつり』に出てくる、
「飛行おに」なのじゃ。
「ルビーの王さま」と「ルビーの女王」を求めて、
世界中をさまよっておるのじゃ。
0878デフォルトの名無しさん
NGNGムーミン……
あれを読んでファンタジックな世界に浸っていた時代が
俺にもありました……(AAry
ついでだ、でっちあげ宿題。
「飛行おに」「ルビーの王様」「ルビーの女王」の3クラスを作り、
それぞれに適当な思考ロジックを与えて鬼ごっこするプログラムを作成せよ。
追いかけ・逃げはターン制で順次行ってもよし、3つスレッド走らせてバラバラに動かすもよし。
表示もAWT、Swingは言うに及ばずコマンドコンソールでもOK。さぁどうだ。
# なお、ルビーの王様/女王をRubyで実装するとかいうベタなギャグは却下。
0879M.B.
NGNGそれなら「公園番」と「スナフキン」と「子供たち」だろう。
で、アイテムとして「ニョロニョロ」を加える。
0880デフォルトの名無しさん
NGNGなぜわかった!
さては貴様、Googleの中の人だな!!
0881M.B.
NGNG『bit 悪魔の辞典』の時代から、
そっち方面はアンテナ張ってるのよ。
0882M.B.
NGNG馬鹿だ _| ̄|○
0883デフォルトの名無しさん
NGNG0885847
NGNG0886デフォルトの名無しさん
NGNG* 鳥類を表すクラスです.
*/
abstract class Bird{
/**
* 翼を使って空を飛びます.
*/
void fly();
}
/**
* 哺乳類を表すクラスです.
*/
abstract class Mammal{
Mammal bear();
}
A君は、このような抽象基底クラスを作り、
すべての動物を、これらのクラスを継承することで表現しようとした。
しかし、これらのクラスは、一部の動物を表現する際に問題となる。
「こうもり」という動物を用いて、その問題点を簡潔に説明せよ。
また、その問題が解決するようにソースを修正せよ。
ただし、「すべての鳥は飛ぶことが出来る」という命題を
前提としても構わない。
------------------------------------
日本語が難しくてよくわからない…。
0887デフォルトの名無しさん
NGNGJava特有の話なら両方の特性を持つこうもりは多重継承になるから
abstractではなくinterfaceにしようってことかな?
最後の文は多分ペンギンはどうなるよって突っ込みを避けるためのものなんだろうなw
0888デフォルトの名無しさん
NGNG二次元配列
String [][] array = { {"0", "0", "value", "value"},
{"0", "1", "value", "value"},
:
{"3", "2", "value", "value"},
:
}
表形式にすると、
0, 0, value, value
0, 1, value, value
0, 2, value, value
1, 1, value, value
1, 3, value, value
2, 4, value, value
2, 0, value, value
3, 2, value, value
1列目は0から始まり不定期行?あらわれます。
1列目の値は増加のみで減ることはありません。
行数は可変です。
0889888
NGNG修正したいのですがどのように書いたらよいのですか。
列1が「0」が3つあるのとき列2の値は順に「0, 1, 2, ・・・」と増加する。
列1が「1」に繰り上がった時に、列2の値は「0, 1, 2, ・・・」と増加する。
0, 0, value, …
0, 1, value, …
0, 2, value, …
1, 0, value, …
1, 1, value, …
2, 0, value, …
2, 1, value, …
3, 0, value, …
配列は同じメソッド内に記述していますので、そのメソッド内で
このような操作を実現できるようにお願いします。
0890デフォルトの名無しさん
NGNGString prevStr="";
int count=0;
for(int i=0; i<array.length; ++i) {
if(array[i][0].equals(prevStr)) {
++count;
} else {
count=0;
prevStr=a[i][0];
}
a[i][1]=String.valueOf(count);
}
0891M.B.
NGNG「ペンギンは飛ばない」という例は、
「非単調論理」という名前で、
ロジック・プログラミングでは有名な問題。
中島秀之『Prolog』に、
「スーパーヒーローは飛ぶ」「8マンは飛ばない」という
例題で出てくる。
現在、 Java で Lisp を記述しているところなので、
その Lisp 上に Prolog(Lisp で六百行くらい) を積んで、
その上で実現するという手もあるが。
何考えてんだ俺 _| ̄|○
0892デフォルトの名無しさん
NGNGスペースを連打して女性を逝かせるゲームです
まず自分のチンコの太さと長さを入力します
チンコの太さ(a)と長さ(b)として
a*b*(0.1*スペース数)=感度値(KANNDO)で
制限時間1分間の間に
女性のHP=感度値になれば女性が「あふ〜ん」と言います
女性は(SATIKO、TIE、JONE)の三人
SATIKOのHPは100
TIEのHPは200
JONEのHPは400
0893デフォルトの名無しさん
NGNG「文字数を入力」のところで、
例えば30と入力すると横30文字になり、
100と入力すると100文字になったりして欲しいのです。
今だと、TextField()にStringで引数を与えているので
初期値で表示される文字にしかなってくれないのです。
0894デフォルトの名無しさん
NGNG// 悪いプログラム進化をたどることになります。
// 早々にリファクタリングをしてください。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Kadai extends Frame implements TextListener {
static String width;
TextField TextBox;
Kadai(String width){
addWindowListener( new WindowAdapter(){ public void windowClosing(WindowEvent e){ System.exit(0);} });
TextBox = new TextField(Integer.parseInt(width));
TextBox.addTextListener(this);
add(TextBox);
pack();
setVisible(true);
}
public void textValueChanged(TextEvent e){
System.out.println(TextBox.getText());
}
public static void main(String[] args){
JOptionPane.showMessageDialog(null, "入力内容表示プログラム");
width = JOptionPane.showInputDialog("文字数を入力");
System.out.println(width);
new Kadai(width);
}
}
0895デフォルトの名無しさん
NGNGSystem.out.println(width);
これいらない。
0896デフォルトの名無しさん
NGNGなんとなくJava上のLispが欲しいと思っちまったじゃねぇかコン畜生。
0897デフォルトの名無しさん
NGNG>>896
つくりたい!
詳細希望。
0899M.B.
NGNGそもそもは Java で自然言語処理をやっていたのだ
(こっちは一応動いている(ttp://homepage.mac.com/jane_doe/)。
で、そのときに使うデータを管理するのにTSV形式を用いていたのだが、
項目によっては 0 個だったり複数個だったりするので、
もうちょい融通が利いて、しかもテキスト形式で見られる形式の
データ構造が欲しくなったのだ。
そんでもって XML とかも考えたのだが、いかんせんウザい
(ウザい理由はいろいろあるが省略)。
そんでもって、データ管理用に Lisp 処理系を作っちまえ、
と思ったのである。
0900デフォルトの名無しさん
NGNG名前はJLispで行くんですか?
0901M.B.
NGNGでまあ、Java を使えば簡単な処理系(なにせ基本関数が五つだかしかなく、
他の関数はその組合せで全部定義できる)ならそれほど面倒臭くなく
実現できると思ったのである。
で、実際に
ttp://www.cobalt.co.jp/writing/index.html
みたいに Lisp を作った香具師もいるのだが、
この処理系、リストを表現するのに LinkedList かなんかを
使っているので、eq と equal の区別(== と equals の違いみたいなもん)
ができない。つまりアドレスの直接比較に相当するものがないため、
テキスト処理とかに使うとめっちゃオーバーヘッド大きそうだったのだ。
Lisp の処理系の中身については、
中西正和『Lisp入門 システムとプログラミング』近代科学社
黒川利明『LISP入門』培風館
竹内郁雄『初めての人のためのLISP』サイエンス社
あたりがあるので、まあイケるだろう、と踏んだのだ。
0902M.B.
NGNGatom や car や cdr は List クラスのメソッドにするとして、
read/write は何のメソッドにするのか。
たとえば入出力ストリームを extend して List を扱えるようにするのか?
あるいはeval は何のメソッドにするのか。
ListProcceser とかいうクラスを定義して eval メソッドを実装するのか?
こんなことをやってると、主体と客体の区別がつかんようになり、
なんやらオブジェクト同士のつかみ合いみたいになって、
設計が綺麗くならん。
で、次に他のシステムから呼んで利用するのに、
まんま List の格好だとけっこうウザいことに気づいた。
でもって、階層化した ArrayList かなんかに押し込むことを考えたのだが、
裸の Atom を ArrayList を extend したものに代入すると訳わかんなくなる。
そこで Object を extend して外部アクセス用のクラスを定義したら、
こんどは代入ができなくて orz
0903M.B.
NGNGそのクラスを extend して外部アクセス用のクラスを作り、
それをまた extend して処理系が直接扱えるクラスを extend する
とかいった構成で、ようやく Lisp の全体像が見えてきたところなんである。
0904M.B.
NGNG> 名前はJLispで行くんですか?
「なんとかLisp」という名前のリスプ以外に、
LipQ(リップク)とかLipX(リッペケ)とかいう処理系があるので、
まだ悩んでいる。
これ以外に、「ellisp」(「不足した」という ellipse と、
「舌足らずの」の lisp に引っかけている)という名前も
候補に入っている。
0905デフォルトの名無しさん
NGNGeclipseと見間違えそう。
0906M.B.
NGNGいつもの宿題スレに戻る。
そのうち独立スレ立てでもしまつ。
0907デフォルトの名無しさん
NGNG0908M.B.
NGNGいや、今んとこ実装ダサダサなのよ。
Atom のサブクラスとして NIL と T を定義するところで、
ああこいつは Singleton パターンつーのが使えるらしいが
どうやったらいいかわからん orz とかいって悪戦苦闘しとるし。
で、今はシンボルの実装をどうするかで悩んでたりする。
だいたいマシンコードレベルの動作は分かるんだがどうやったら
Java Like なコードになるかわかんねぇよウワァァァン状態だから、
とりあえず動くやつができたらどっかに晒して徹底的にボコられると、
可読性の高いコードになると思う。そんときはよろしく。
0909デフォルトの名無しさん
NGNG待ってます。
自分でも書いてみます。
ライセンスはどうなるんですか?
0910M.B.
NGNGそんなもんフリーに決まってる!!
FSF万歳!! ストールマン最高!! リーナス・トロバルスに祝福あれ!!
そ し て あ の 請求書(bill) 野 郎 に 呪 い あ れ
0911デフォルトの名無しさん
NGNGこのプログラムのAの配列を小数にすると
コンパイルエラーがおきます。
小数にしても大丈夫にするにはどうしたらようでしょうか。
教えてください。
public class HW10{
public static void bekutoru(int[][] a,int[] b,int[] s){
int c=0;
for(int i=0;i<a.length;i++){
for(int j=0;j<a[0].length;j++){
c+=a[i][j]*b[j];
}
s[i]=c;
c=0;
}
}
public static void syuturyoku1(int a,int b,int c,int[][] d){
int i,j;
String[] gyou={"A"};
System.out.print("行列"+gyou[a]+"=");
System.out.println();
for(i=0;i<b;i++){
System.out.print(" ");
System.out.print("(");
for(j=0;j<c;j++){
System.out.print(" "+d[i][j]);
}
System.out.println(" )");
}
System.out.println();
}
0912911(続き)
NGNGint j;
String[] gyou={"B","C"};
System.out.print("行列"+gyou[a]+"=");
System.out.println();
System.out.print(" ");
System.out.print("(");
for(j=0;j<b;j++)
System.out.print(" "+d[j]);
System.out.println(" )");
System.out.println();
}
public static void main(String[] args){
int i,j,k;
int[][] a={{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
{17,18,19,20}};
int[] b={1,2,3,4};
int[] c=new int[a.length];
bekutoru(a,b,c);
syuturyoku1(0,a.length,a[0].length,a);
syuturyoku2(0,b.length,b);
syuturyoku2(1,a.length,c);
}
}
0913M.B.
NGNGもちっと具体的に説明してみれ。
それから、ベクトルを bekutoru と書くのは可能ならやめてくれ。
書くなら vector だ。
0914デフォルトの名無しさん
NGNGint[][] a={{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
{17,18,19,20}};
int[] b={1,2,3,4};
をたとえば
int[][] a={{1.7,2,3.6,4},
{5,6,7,8.4},
{9,10,11.1,12.6},
{13.5,14,15.4,16},
{17,18,19.6,20}};
int[] b={.1.9,2,3.4,4};
とするとエラーがでてしまいます。
でないようにしたいのですが・・。
Vectorになおしておきます・・。
0915デフォルトの名無しさん
NGNG「int」のキーワードを全部「double」に置き換えればOK
0916デフォルトの名無しさん
NGNG0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNG目を疑った。
0920デフォルトの名無しさん
NGNGpublic class M
{
public static void main(String[] args){
for(int i=0; i<1000; i++){
String s = String.valueOf(i);
while(i.length < 4) s = "0"+s;
System.out.println(s);
}
}
}
0921デフォルトの名無しさん
NGNGDecimalFormat df = new DecimalFormat("0000");
System.out.println(df.format(i));
の方がいいのかも。
0922M.B.
NGNG藻 前 の 修 正 ミ ス を 疑 っ た こ と は あ る か。
0923デフォルトの名無しさん
NGNG0924M.B.
NGNGいかがですか総帥閣下。
0925デフォルトの名無しさん
NGNG回答者は這いつくばるくらいの態度じゃないとな。
0926M.B.
NGNG> まずスレタイを昔の「学校の宿題は俺にやらせて下さい」に戻すとこからだね。
> 回答者は這いつくばるくらいの態度じゃないとな。
「やらせて下さい」と「回答者は這いつくばるくらいの態度じゃないと」は
なんか矛盾してないか?
「貴様ら教育してやる。Javaの宿題持ってこい!」くらいでないと。
0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNG・丸投げOK
・前提条件も全部出しておくれよ 数学関係は数式も出しておくれよ
・エラーが出たらエラーメッセージをコピペ汁
・内容単純でも規模デカすぎるのはめんどくさいから省略
・JavaScript など、他言語の課題は徹底的にゴルァ
前スレ
Java!宿題!
http://pc5.2ch.net/test/read.cgi/tech/1096959843/
0929M.B.
NGNG「を」は余計。読み筋は小林源文の『黒騎士』シリーズ。
「俺のケツをなめろ!」っていうのもあるのだが、
軍事板ではないので。
0930古代帝國富士皇朝総帥・伯壬旭
NGNGそうですな。幾つか加えるべきですな
0931デフォルトの名無しさん
NGNG0932デフォルトの名無しさん
NGNGいまさらながら、BeanShellとJode使ってみましたよ。最高でしたよ。
0933M.B.
NGNGそう。決めAAとか作っといてコピペする。
> 御指導御鞭撻宜しくお願いしまつヘヘーッ ○| ̄|_
とか。
0935919
NGNGいちおうintをすべてdoubleにかえましたが・・。
11,13,,20,26,35,40行目に「精度が落ちている可能性」とエラーがでます。
検出値:doubleで期待値:intなのですが・・。
どなたかお願いします。
public class HW11{
public static void bekutoru(double[][] a,double[] b,double[] s){
double c=0;
for(double i=0;i<a.length;i++){
for(double j=0;j<a[0].length;j++){
c+=a[i][j]*b[j];
}
s[i]=c;
c=0;
}
}
public static void syuturyoku1(double a,double b,double c,double[][] d){
double i,j;
String[] gyou={"A"};
System.out.print("行列"+gyou[a]+"=");
System.out.println();
for(i=0;i<b;i++){
System.out.print(" ");
System.out.print("(");
for(j=0;j<c;j++){
System.out.print(" "+d[i][j]);
}
System.out.println(" )");
}
System.out.println();
}
0936続き
NGNGdouble j;
String[] gyou={"B","C"};
System.out.print("行列"+gyou[a]+"=");
System.out.println();
System.out.print(" ");
System.out.print("(");
for(j=0;j<b;j++)
System.out.print(" "+d[j]);
System.out.println(" )");
System.out.println();
}
public static void main(String[] args){
double i,j,k;
double[][] a={{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
{17,18,19,20}};
double[] b={1,2,3,4};
double[] c=new double[a.length];
vector(a,b,c);
syuturyoku1(0,a.length,a[0].length,a);
syuturyoku2(0,b.length,b);
syuturyoku2(1,a.length,c);
}
}
0937デフォルトの名無しさん
NGNG君は本当にバカだな。
なんで配列の値じゃなくてインデックスでdoubleなんて使ってるんだ。
0938デフォルトの名無しさん
NGNGええと・・どこを変えればよいのでしょうか・・。
教えてください。
0940M.B.
NGNGimport java.util.*;import java.io.*;
public class javapp {
public static void main( String [] args ) throws Exception {
ArrayList code = read();
int indent = 0;
ListIterator liter = code.listIterator();
while (liter.hasNext()) {
StringBuffer buf = new StringBuffer("");
String line = (String) liter.next();
line = line.trim();
if (line.startsWith("}") && (indent > 0)) {
indent -= 1;
}
buf.append(tabs(indent));
if (line.endsWith("{")) {
indent += 1;
}
buf.append(line);
System.out.println(buf.toString());
}
}
0941M.B.
NGNGArrayList arrayList = new ArrayList();
try {
BufferedReader bufRdr =
new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = bufRdr.readLine()) != null) {
arrayList.add(line);
}
bufRdr.close();
return arrayList;
} catch (Exception e) {
System.err.println(e.toString());
return null;
}
}
0942M.B.
NGNGfinal int tabstop = 4;
StringBuffer buf = new StringBuffer("");
for (int cnt = 0;cnt < tabstop * n;cnt += 1) {
buf.append(' ');
}
return buf.toString();
}
0943デフォルトの名無しさん
NGNG>>938
こうすればOK
package hw12;
public class HW12{
public static void bekutoru(double[][] a,double[] b,double[] s){
double c=0;
for(int i=0;i<a.length; i++){
for(int j=0;j<a[0].length; j++){
c+=a[i][j]*b[j];
}
s[i]=c;
c=0;
}
}
public static void syuturyoku1(int a,int b,int c,double[][] d){
int i,j;
String[] gyou={"A"};
System.out.print("行列"+gyou[a]+"=");
System.out.println();
for(i=0;i<b;i++){
System.out.print(" ");
System.out.print("(");
for(j=0;j<c;j++){
System.out.print(" "+d[i][j]);
}
System.out.println(" )");
}
System.out.println();
}
0944>>938 その2
NGNGpublic static void syuturyoku2(int a,int b,double[] d){
int j;
String[] gyou={"B","C"};
System.out.print("行列"+gyou[a]+"=");
System.out.println();
System.out.print(" ");
System.out.print("(");
for(j=0;j<b;j++)
System.out.print(" "+d[j]);
System.out.println(" )");
System.out.println();
}
public static void main(String[] args){
double i,j,k;
double[][] a={{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,16},
{17,18,19,20}};
double[] b={1,2,3,4};
double[] c=new double[a.length];
bekutoru(a,b,c);
syuturyoku1(0,a.length,a[0].length,a);
syuturyoku2(0,b.length,b);
syuturyoku2(1,a.length,c);
}
}
0945M.B.
NGNGpublic class HW11{
public static void main( String[] args ){
// 5 * 4 の行列だ。
double [][] a = {
{ 1, 2, 3, 4},
{ 5, 6, 7, 8},
{ 9,10,11,12},
{13,14,15,16},
{17,18,19,20}};
double [] b = {1,2,3,4};
double [] c = new double[a.length];
vector(a,b,c);
System.out.println("行列A");
printMatrix(a);
System.out.println("ベクトルB");
printVector(b);
System.out.println("ベクトルC");
printVector(c);
}
0946M.B.
NGNGpublic static void vector( double[][] a, double[] b, double[] s){
for(int i = 0;i < a.length;i += 1){
double c = 0.0;
for(int j = 0;j < a[0].length; j++){
c += a[i][j] * b[j];
}
s[i] = c;
}
}
0947M.B.
NGNGSystem.out.println("(");
for(int i = 0;i < matrix.length;i += 1){
System.out.print(" (");
for(int j = 0;j < matrix[i].length;j += 1){
System.out.print(" "+ matrix[i][j]);
}
System.out.println(" )");
}
System.out.println(")");
}
public static void printVector(double [] vector){
System.out.println("(");
for(int i = 0;i < vector.length;i++) {
System.out.println(" "+vector[i]);
}
System.out.println(" )");
}
0948M.B.
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/)
いかがか。
0949デフォルトの名無しさん
NGNG0950デフォルトの名無しさん
NGNG0951M.B.
NGNGいや、他人のせいにするわけじゃないが、
Part3って逝ってる香具師がいたもんだから。
> 927 :デフォルトの名無しさん :04/11/15 00:13:52
> 【貴様らを】Javaの宿題持ってこい!Part3【教育してやる】
0953938
NGNGできました!助かりましたありがとうございます(*- -)(*_ _)
0954デフォルトの名無しさん
NGNGGUI & API関係はわしが引き受けるぞ。
まあ、答えはほとんど嘘だが。
0956デフォルトの名無しさん
NGNG0957938
NGNGM.Bさんのプログラムの結果をコマンドではなくフレーム表示にするにはどうしたらよろしいでしょうか。
度々すみません。
0958M.B.
NGNGimport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
2)標準出力に出力している値を、全部一個のtext という String に押し込む形に書き換える。
3)以下のコードを付け足す。
SimpleTextViewer simpleTextViewer = new SimpleTextViewer("計算結果", text);
4)以下のクラスを追加する。
class SimpleTextViewer extends JFrame implements ActionListener {
public SimpleTextViewer( String title, String text ) {
this.setResizable(false);
this.setTitle(title);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = this.getContentPane();
JTextArea textArea = new JTextArea(40,80);
textArea.setLineWrap(true);
textArea.setEditable(false);
JScrollPane textPane = new JScrollPane(textArea);
JPanel displayPanel = new JPanel(new GridLayout( 1, 1 ));
displayPanel.add(textPane);
textArea.setText(text);
contentPane.add(displayPanel);
this.setSize(320,240);
this.setLocation(100, 100);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {}
}
0959デフォルトの名無しさん
NGNGマチクタビレター
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< 宿題マダー?
\_/⊂ ⊂_)_ \____________
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄  ̄ ̄ ̄ ̄ ̄ ̄:| |
| 淡路たまねぎ .|/
0960デフォルトの名無しさん
NGNGせめて林檎にしろ。
0961938
NGNG帰宅したらやってみます。
0962デフォルトの名無しさん
NGNGアルファベットか数字を入力したとき
別のダイアログボックスが現れ、何を入力したのかを確かめる事が出る
プログラムを書きたいのですが。
コンポーネンツ
インターフェイス
KeyPressed
KeyEvent
の4つを使ってください。
よろしくお願いします。
0963古代帝國富士皇朝総帥・伯壬旭
NGNGimport javax.swing.*; import java.awt.*; import java.awt.event.*;
public class HW13 extends JDialog implements KeyListener {
JDialog dsp; JLabel label;
public static void main(String[] args) { new HW13(); }
HW13() {
super((Frame)null, "文字の入力", false);
JTextField tfd=new JTextField();
tfd.setPreferredSize(new Dimension(400,20)); tfd.setFont(new Font("Dialog", 0, 14));
getContentPane().add(tfd); tfd.addKeyListener(this);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) { System.exit(0); }
});
pack(); setVisible(true);
}
public void keyPressed(KeyEvent e) {
char c=e.getKeyChar(); if(c==-1) return;
if(dsp==null) {
dsp=new JDialog(this, "入力文字の表示", false); label=new JLabel();
label.setPreferredSize(new Dimension(400,20));
label.setFont(new Font("Dialog", 0, 14)); label.setForeground(Color.blue);
dsp.getContentPane().add(label); dsp.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE);
dsp.pack(); dsp.setLocation(this.getX(), this.getY()+this.getHeight()+32);
dsp.setVisible(true); requestFocus();
}
label.setText(label.getText() + String.valueOf(c));
}
public void keyReleased(KeyEvent e) { }
public void keyTyped(KeyEvent e) { }
}
0964デフォルトの名無しさん
NGNG☆ チャンチキ マチクタビレタ
マチクタビレター
☆ チャンチキ 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< 宿題マダー?
\_/⊂ ⊂_)_\______
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ :| |
| 青森りんご :| |
| _______ :|/
0965デフォルトの名無しさん
NGNGあと三十五と押し詰まって参りました
年賀状のご用意は
よろしいでしょうか。
0966M.B.
NGNG判然としなくなってきたな orz
全然関係のない話題なのだが、Java で Lisp を書くと
Lisp の仕様がなぜああなっているのかが非常によくわかる。
atom という関数はポインタの先に cons がない場合に
*T* を返すのだとか、
nil がなぜアトムであると同時にリストでもあるかというと、
nil の car なり cdr なりを取ると
やっぱり nil が帰ってきちゃうというのがよくわかる。
多言語と違って、オブジェクト志向だと、クラス定義によって
「データとしては同じでも意味づけが違う」ものの区別が
プログラムの動作の中に意味を持って現れてくるので、
意味構造が非常にわかりやすくなると同時に、
曖昧さが排除されるのがすばらしい。
0967デフォルトの名無しさん
NGNG気のせいだよ
0968デフォルトの名無しさん
NGNG0969938
NGNG・・が、例のごとく2)の部分がよく分からない状況です。
3)と4)は最後に付け足せばよいのでしょうか。
すみません、お手数かけます。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class HW10{
public static void main( String[] args ){
double [][] a = { { 1.5, 2, 3, 4},
{ 5, 6, 7, 8},
{ 9,10.4,11,12},
{13,14.3,15,16},
{17.9,18,19,20.6}};
double [] b = {1,2.9,3,4};
double [] c = new double[a.length];
vector(a,b,c);
System.out.println("行列A=");
printMatrix(a);
System.out.println("ベクトルb=");
printVector(b);
System.out.println("ベクトルc=");
printVector(c);
}
0970938(続き)
NGNGfor(int i = 0;i < a.length;i += 1){
double c = 0.0;
for(int j = 0;j < a[0].length; j++){
c += a[i][j] * b[j];
}
s[i] = c;
}
}
public static void printMatrix( double [][] matrix){
for(int i = 0;i < matrix.length;i += 1){
System.out.print(" (");
for(int j = 0;j < matrix[i].length;j += 1){
System.out.print(" "+ matrix[i][j]);
}
System.out.println(" )");
}
}
public static void printVector(double [] vector){
System.out.print("(");
for(int i = 0;i < vector.length;i++) {
System.out.print(" "+vector[i]);
}
System.out.println(" )");
}
}
0971M.B.
NGNG素数 "列挙" アルゴリズムを極めるスレ
http://pc5.2ch.net/test/read.cgi/tech/1018657457/
0972M.B.
NGNGimport javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class HW13{
public static void main( String[] args ){
// 5 * 4 の行列だ。
double [][] a = {
{ 1, 2, 3, 4},
{ 5, 6, 7, 8},
{ 9,10,11,12},
{13,14,15,16},
{17,18,19,20}
};
double [] b = {1,2,3,4};
double [] c = new double[a.length];
vector(a,b,c);
StringBuffer buf = new StringBuffer("");
buf.append("行列A\n");
buf.append(sprintMatrix(a));
buf.append("ベクトルB\n");
buf.append(sprintVector(b));
buf.append("ベクトルC\n");
buf.append(sprintVector(c));
SimpleTextViewer simpleTextViewer =
new SimpleTextViewer("計算結果", buf.toString());
}
0973M.B.
NGNGpublic static void vector( double[][] a, double[] b, double[] s){
for(int i = 0;i < a.length;i += 1){
double c = 0.0;
for(int j = 0;j < a[0].length; j++){ c += a[i][j] * b[j]; }
s[i] = c;
}
}
public static String sprintMatrix( double [][] matrix){
StringBuffer buf = new StringBuffer("");
buf.append("(\n");
for(int i = 0;i < matrix.length;i += 1){
buf.append(" (");
for(int j = 0;j < matrix[i].length;j += 1){ buf.append(" "+ matrix[i][j]); }
buf.append(" )\n");
}
buf.append(")\n");
return buf.toString();
}
public static String sprintVector(double [] vector){
StringBuffer buf = new StringBuffer("");
buf.append("(");
for(int i = 0;i < vector.length;i += 1) { buf.append(" "+vector[i]); }
buf.append(")\n");
return buf.toString();
}
}
0974M.B.
NGNGimplements ActionListener {
public SimpleTextViewer( String title, String text ) {
this.setResizable(true);
this.setTitle(title);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
Container contentPane = this.getContentPane();
JTextArea textArea = new JTextArea(40,80);
textArea.setLineWrap(true);
textArea.setEditable(false);
JScrollPane textPane = new JScrollPane(textArea);
JPanel displayPanel = new JPanel(new GridLayout( 1, 1 ));
displayPanel.add(textPane);
textArea.setText(text);
contentPane.add(displayPanel);
this.setSize(320,240);
this.setLocation(100, 100);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
}
}
0975デフォルトの名無しさん
NGNGあっしつれいなこときいちゃいましたかね。
0976M.B.
NGNGimport java.io.*;
public class Sosu {
public static void main( String [] args ) throws Exception {
for (int n = 2;n <= 100;n += 1) {
boolean isPrime = true;
for (int cnt = 2;cnt < n;cnt += 1) {
if ((n % cnt) == 0) {
isPrime = false;
break;
}
}
if (isPrime) System.out.println(n);
}
}
}
0977M.B.
NGNGタミヤのキングタイガーなら作ったことがある(嘘)
モデリングって何。
0978デフォルトの名無しさん
NGNG☆ チャンチキ マチクタビレタ
マチクタビレター
☆ チャンチキ 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・)< 宿題マダー?
\_/⊂ ⊂_)_\______
/ ̄ ̄ ̄ ̄ ̄ ̄ ̄/|
|  ̄ ̄ ̄ ̄ ̄ ̄ ̄ :| |
| トントカ芋 :| |
| _______ :|/
0980デフォルトの名無しさん
NGNGhttp://pc5.2ch.net/test/read.cgi/tech/1076446411/l50
いつも回答すごいなってみてつやつっす。
そんで、どうしても、なかなか、構造体??つうんですか。
つかめなくて、今回本でもかって、勉強しようかと
0981M.B.
NGNGカーニハン/プローガー『プログラム書法』(The Elements of Programming Style)共立出版(会社)
カーニハン/パイク『プログラム作法』アスキー
カーニハン/プローガー『ソフトウェア作法』(Software Tools)共立出版
藤原博文『改訂新版 Cプログラミング診断室』技術評論社
ヨードン『ソフトウェアの構造化ウォークスルー 第二版』近代科学社
0982デフォルトの名無しさん
NGNG第二回から第七回までの範囲の理解を確認するために課題を実施します。
これは成績評価の対象になります。全員提出してください。
図形描画命令を解析して実行するプログラムDrawCommand.javaを作成
しましょう。
その際、復習課題で作成したプログラムDrawObject.javaをパッケージ
として改造しておき(「演習問題解答例のBBSに提示します)、
DrawCommand.javaからDrawObject.javaのクラスを使うようにしましょう。
また、DrawCommand.javaでは図形描画命令をファイルから読み込む様
にしましょう。
質問などは「演習問題解答例」のBBSに、DrawObject.javaの例に連なる
形でお願いします。
DrawCommand.javaを提出して下さい。
期限は11/21とします。
なお、その後の提出義務のある課題の期限は、中間課題2が12/19、期末
課題が1/23までとなります。それぞれの課題内容については近日中に提
示します。
0983982
NGNG//Author : H.Kikuchi([email protected])
//Date : 2003/10/04
package prog2.DrawObject;
class Square {
private int x, y, l;
private char pattern;
void setCoordinateSquare(int nx, int ny, int nl){
this.x = nx;
this.y = ny;
this.l = nl;
}
void setPattern(char c){
this.pattern = c;
}
void drawSquare(Screen s){
int i,j;
for(j=this.y-1;j<this.y+this.l-1;j++){
for(i=this.x-1;i<this.x+this.l-1;i++){
s.drawPoint(i,j,pattern);
}
}
}
}
0984982
NGNGclass Rectangle {
private int x, y, w, h;
private char pattern;
void setCoordinateRectangle(int nx, int ny, int nw, int nh){
this.x = nx;
this.y = ny;
this.w = nw;
this.h = nh;
}
void setPattern(char c){
this.pattern = c;
}
void drawRectangle(Screen s){
int i,j;
for(j=this.y-1;j<this.y+this.h-1;j++){
for(i=this.x-1;i<this.x+this.w-1;i++){
s.drawPoint(i,j,pattern);
}
}
}
}
0985982
NGNGclass Screen {
private char screen [][] = new char [10][];
Screen(){
this.init();
}
void init(){
int i,j;
for(i=0;i<10;i++){
screen[i] = new char[10];
for(j=0;j<10;j++){
screen[i][j]='x';
}
}
}
void flush(){
int i,j;
for(j=0;j<10;j++){
for(i=0;i<10;i++){
System.out.print(this.screen[i][j]+" ");
}
System.out.println();
}
}
void drawPoint(int x, int y, char c){
this.screen[x][y] = c;
}
}
まったくのさっぱり解りません。誰かお願いします
0986デフォルトの名無しさん
NGNGやれやれ。
しかし早稲田ってacつかないんだね。
0987デフォルトの名無しさん
NGNG面白いプログラミングだと思います。ってか、あと15…
以下のプログラムのデータが不足しているので、可能ならSpruce Gooseの写真を探して、主翼、主翼フロート、機体出入口のデータを付加してください。
�@データを書き出してファイル”Goose001.dat"に格納するプログラムを書いて下さい。
�Aファイル”Goose001.dat"から、データを読み出し表示するプログラムを書いて下さい。
�B読み出しファイルと書き出しファイル名を引数で指定できるようにして下さい。
�CX座標 Y座標 | フラグ の形でデータを書き込み、読み込み表示するプログラムを書いて下さい。バッファ入出力を使います。
�DGooseクラスを適切に定義してください。Point_x、Point_y、Flagなどでも良いでしょうし、Point、Flagなどでも良いでしょう。
�Eオブジェクト入出力を使ってデータを書き出し、読み込み表示するプログラムを書いて下さい
0988987
NGNG* PrintWriterでGoose001.datに出力
*
*/
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class Test179 {
public static void main(String[] args) {
try {
int[] Data = {
80, 1306, 2, 120, 1666, 1, 132, 1707, 1, 153, 1747, 1,
174, 1778, 1, 196, 1798, 1, 228, 1818, 1, 258, 1824, 1,
293, 1812, 1, 320, 1795, 1, 358, 1746, 1, 621, 1333, 1,
195, 1799, 2, 221, 1729, 1, 232, 1679, 1, 239, 1610, 1,
257, 1405, 1, 159, 1387, 1, 258, 1380, 1, 318, 1379, 1,
402, 1381, 1, 456, 1387, 1, 488, 1394, 1, 505, 1404, 1,
511, 1413, 1, 503, 1423, 1, 481, 1430, 1, 452, 1431, 1,
413, 1427, 1, 357, 1420, 1, 257, 1405, 1, 258, 1380, 2,
265, 1316, 1, 118, 1670, 2, 139, 1667, 1, 115, 1308, 1,
108, 1553, 2, 132, 1553, 1, 82, 1308, 2, 377, 1321, 1,
624, 1334, 1, 1341, 1368, 1, 1381, 1407, 1, 1412, 1414, 1,
1471, 1431, 1, 1517, 1435, 1, 1545, 1437, 1, 1586, 1430, 1,
0989987
NGNG1819, 1420, 1, 1832, 1412, 1, 1848, 1412, 1, 1873, 1402, 1,
1853, 1390, 1, 1834, 1387, 1, 1826, 1378, 1, 1778, 1376, 1,
1764, 1376, 1, 1772, 1361, 1, 1730, 1356, 1, 1705, 1359, 1,
1695, 1371, 1, 1651, 1368, 1, 1673, 1377, 1, 1683, 1385, 1,
1687, 1393, 1, 1678, 1405, 1, 1657, 1414, 1, 1768, 1423, 2,
1770, 1375, 1, 1777, 1418, 2, 1778, 1375, 1, 1693, 1371, 2,
1706, 1378, 1, 1723, 1382, 1, 1741, 1382, 1, 1759, 1380, 1,
1763, 1379, 1, 1818, 1420, 2, 1822, 1378, 1, 1831, 1413, 2,
1833, 1386, 1, 1873, 1405, 2, 1889, 1403, 1, 1900, 1393, 1,
1890, 1384, 1, 1875, 1382, 1, 1862, 1381, 1, 1861, 1391, 1,
1862, 1380, 2, 1851, 1371, 1, 1850, 1388, 1, 1850, 1370, 2,
1771, 1365, 1, 1903, 1395, 2, 1916, 1393, 1, 1927, 1386, 1,
1916, 1377, 1, 1891, 1375, 1, 1890, 1383, 1, 1885, 1404, 2,
1878, 1364, 1, 1877, 1382, 1, 1877, 1363, 2, 1812, 1358, 1,
1807, 1366, 2, 1811, 1353, 1, 1749, 1348, 1, 1732, 1355, 1,
1926, 1388, 2, 1945, 1384, 1, 1953, 1378, 1, 1945, 1370, 1,
1918, 1366, 1, 1917, 1375, 1, 1918, 1365, 2, 1905, 1357, 1,
1905, 1373, 1, 1905, 1356, 2, 1834, 1351, 1, 1823, 1359, 1,
1836, 1345, 1, 1787, 1343, 1, 1766, 1350, 1, 1885, 1404, 2,
2155, 1405, 1, 2205, 1367, 1, 2203, 1362, 1, 2097, 1373, 1,
2098, 1397, 1, 2163, 1398, 1, 2109, 1398, 2, 2110, 1380, 1,
2137, 1404, 2, 2137, 1379, 1, 2158, 1401, 2, 2159, 1376, 1,
0990987
NGNG2195, 1374, 1, 1960, 1406, 2, 2016, 1398, 1, 2053, 1390, 1,
2082, 1382, 1, 2100, 1374, 1, 2195, 1370, 2, 2257, 1352, 1,
2296, 1337, 1, 2330, 1320, 1, 2354, 1302, 1, 2363, 1275, 1,
2358, 1247, 1, 2334, 1217, 1, 2287, 1191, 1, 2227, 1166, 1,
2145, 1140, 1, 2058, 1122, 1, 1973, 1108, 1, 1873, 1095, 1,
1759, 1082, 1, 1530, 1060, 1, 1527, 1132, 1, 1447, 1135, 1,
1333, 1133, 1, 1235, 1128, 1, 1127, 1118, 1, 1014, 1105, 1,
107, 1259, 1, 90, 1268, 1, 79, 1281, 1, 78, 1294, 1,
80, 1307, 1, 1013, 1105, 2, 1139, 1120, 1, 1220, 1126, 1,
1318, 1133, 1, 1397, 1136, 1, 1468, 1135, 1, 1529, 1133, 1,
1015, 1105, 2, 1530, 1093, 1, 1529, 1096, 2, 1650, 1107, 1,
1755, 1117, 1, 1880, 1133, 1, 2000, 1153, 1, 2104, 1175, 1,
2181, 1197, 1, 2258, 1227, 1, 1350, 1362, 2, 1360, 1341, 1,
1375, 1331, 1, 1416, 1362, 1, 1405, 1358, 1, 1379, 1357, 1,
1348, 1363, 1, 1360, 1343, 2, 1341, 1346, 1, 1355, 1329, 1,
1378, 1317, 1, 1417, 1346, 1, 1393, 1344, 1, 1360, 1324, 2,
1342, 1325, 1, 1327, 1331, 1, 1346, 1311, 1, 1360, 1302, 1,
1417, 1330, 1, 1394, 1325, 1, 1342, 1314, 2, 1330, 1316, 1,
1313, 1320, 1, 1359, 1288, 1, 1411, 1312, 1, 1380, 1309, 1
};
PrintWriter fout = new PrintWriter(new FileWriter("Goose001.dat"));
0991987
NGNGfor (int i = 0; i <= 219 ; i++) {
fout.print(Data[3 * i] + "\t|\t");
fout.print(Data[3 * i + 1] + "\t|\t");
fout.println(Data[3 * i + 2]);
}
fout.close();
}
catch(IOException e) {
System.out.print("Error: " + e);
System.exit(1);
}
}
}
0992デフォルトの名無しさん
NGNG解析する「図形描画命令」について具体的に書いてください。
0993>>987 その1
NGNGimport java.awt.*; import java.awt.event.*;
import java.io.*; import java.util.*;
public class HW14 extends JFrame implements InitData {
JButton[] btn=new JButton[] {new JButton(" 新行追加 "), new JButton(" 新行削除 "), new JButton("ファイル読込"),new JButton("ファイル書込")};
JTextField[] tfd=new JTextField[] {new JTextField("Goose001.dat"), new JTextField("Goose001.dat")};
DefaultTableModel model;
JTable table;
Vector clmname=new Vector() { { add("X座標"); add("Y座標"); add("Flag"); } };
static class Goose implements Serializable {
int Point_x, Point_y, Flag;
Goose(Vector vec) {
Point_x=Integer.parseInt((String)vec.get(0));
Point_y=Integer.parseInt((String)vec.get(1));
Flag=Integer.parseInt((String)vec.get(2));
}
Vector toVector() {
Vector vec=new Vector();
vec.add(String.valueOf(Point_x)); vec.add(String.valueOf(Point_y)); vec.add(String.valueOf(Flag));
return vec;
}
}
0994>>987 その2
NGNGHW14() {
table=new JTable();
JScrollPane scroll=new JScrollPane(table);
for(int i=0; i<tfd.length; ++i) tfd[i].setMaximumSize(new Dimension(240,20));
for(int i=0; i<tfd.length; ++i) tfd[i].setPreferredSize(new Dimension(20,20));
Box box=Box.createVerticalBox();
box.add(btn[0]); box.add(btn[1]); box.add(Box.createGlue()); box.add(tfd[0]); box.add(btn[2]);
box.add(Box.createGlue()); box.add(tfd[1]); box.add(btn[3]); box.add(Box.createGlue());
getContentPane().add(scroll);
getContentPane().add(box, BorderLayout.EAST);
Object[][] newdat=new Object[Data.length/3][3];
for(int i=0; i<Data.length; ++i) newdat[i/3][i%3]=String.valueOf(Data[i]);
model=new DefaultTableModel(newdat, clmname.toArray());
table.setModel(model);
btn[0].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int idx=table.getSelectedRow(); if(idx==-1) return;
model.insertRow(idx, new Object[]{"0", "0", "0"});
table.setRowSelectionInterval(idx, idx);
}
});
btn[1].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(table.getSelectedRow()==-1) return;
model.removeRow(table.getSelectedRow());
}
});
setEventToButton();
setSize(480,480); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true);
}
0995>>987 その3―1
NGNGbtn[2].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try { StreamTokenizer st=new StreamTokenizer(new FileReader(tfd[0].getText()));
st.eolIsSignificant(true); st.whitespaceChars('|', '|');
Vector row=new Vector(); Vector clm=new Vector();
while(st.nextToken()!=StreamTokenizer.TT_EOF) {
if(st.ttype==st.TT_EOL) {
if(clm.size()==3) { row.add(clm); clm=new Vector(); } else { clm.clear(); }
} else {
clm.add(String.valueOf((int)st.nval));
}
} model.setDataVector(row, clmname);
} catch (Exception e1) { }
}
});
btn[3].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try { BufferedWriter bw=new BufferedWriter(new FileWriter(tfd[1].getText()));
Vector row=model.getDataVector();
for(int i=0; i<row.size(); ++i) {
Vector clm=(Vector)row.get(i);
for(int k=0; k<clm.size();) {
bw.write(clm.get(k++).toString()); if(k>=clm.size()) break; bw.write("|");
} bw.write("\r\n");
} bw.close();
} catch (Exception e1) { }
}
});
} }
0996>>987 その3―2
NGNGbtn[2].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
ObjectInputStream io=new ObjectInputStream(new FileInputStream(tfd[1].getText()));
Goose[] list=(Goose[])io.readObject();
Vector row=new Vector();
for(int i=0; i<list.length; ++i) {
row.add(list[i].toVector());
}
model.setDataVector(row, clmname);
io.close();
} catch (Exception e1) { }
}
});
btn[3].addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
ObjectOutputStream oo=new ObjectOutputStream(new FileOutputStream(tfd[1].getText()));
Vector row=model.getDataVector();
Goose[] list=new Goose[row.size()];
for(int i=0; i<row.size(); ++i) {
list[i]=new Goose((Vector)row.get(i));
}
oo.writeObject(list);
oo.close();
} catch (Exception e1) { }
}
});
}
}
0997>>987 その4
NGNGinterface InitData {
//ここに>>988->>990までの、int[] Dataの配列データを記入する。
}
0998古代帝國富士皇朝総帥・伯壬旭
NGNG>>987の�@〜�Cの課題は、
「その1」「その2」「その3―1」「その4」を組み合わせればできる。
>>987の�D〜�Eの課題は、
「その1」「その2」「その3―2」「その4」を組み合わせればできる。
0999982
NGNG○図形描画命令として以下のようなものを考えます。
形式:"図形タイプ,X座標,Y座標,パラメータ1,パラメータ2,模様,"
図形タイプ:
r - 長方形(rectangle)
s - 正方形(square)
X座標、Y座標:
長方形・正方形の場合は左上の角のX座標、Y座標
パラメータ1:
長方形・正方形の場合は横の長さ
パラメータ2:
長方形・正方形の場合は縦の長さ
模様:
1byteのテキストで表現される模様
例:"r,3,2,5,3,o"
( (3,2)を左上の角とする横5、縦3の長方形を'o'の模様で作成する)
○図形描画命令の受け取り方は以下の3段階で実装してみる
といいでしょう。
(1) プログラム内部で受け取る(連続して複数の命令を受け取る)
(2) 引数から受け取る(一度に一つの命令だけを受け取る)
例: %java DrawCommand r,3,2,5,3,o
(3) ファイルから読み込む(同時に複数の命令を受け取る)
最終的に提出して欲しいのは(3)の段階のものですが、実装
ができなかった場合は(1)や(2)のものでも結構です。
1000982
NGNGStringTokenizer st = new StringTokenizer(str,",");
if(st.nextToken().equals("r")){//分割された文字列が"r"と等しいなら
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
char pattern = st.nextToken().charAt(0);
}else if(st.nextToken().equals("s")){//分割された文字列が"s"と等しいなら
//以下省略
}
このようにして、"StringTokenizer"という、文字列を分割
する便利なクラスを利用します。StringTokenizerクラスの
nextToken()メソッドは、分割された文字列を一つずつ先に
進めることができます。この戻り値はStringクラスなので、
その後でcharAt()メソッドを使えば分割された文字列の最
初の一文字をとってくることもできます。
詳しくは教材の"JAVA API"ボタンからAPI仕様にアクセス
して調べて下さい。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。