dポイントプレゼントキャンペーン実施中!

例えば、
class exe{
public static void main(String args[])throws IOException{
BufferedReader Buf = new BufferedReader
(new InputStreamReader(System.in));
System.out.println("整数を2つ入力して下さい");
String str1 = Buf.readLine();
String str2 = Buf.readLine();
int a = Integer.parseInt(str1);
int b = Integer.parseInt(str2);
System.out.println(a + "+" + b + "=" + (a + b));
}
}
というプログラム(要するにa+bの足し算)があると仮定します。
コマンドプロンプトでデバッグをしているのですが
結果を出力したあと、毎回java exeと入力して実行させてるので
プログラムが終わらないで自動的?に
また最初の「整数を2つ入力して下さい」に戻りたいのですが何か方法はありますか?
forとかwhileとかを使うという意味ではなくて、プログラムを終わらせたくないっていう意味なんですが、
forやwhileを最初につけてcontinueもしくは条件を合わさないようにしてムリヤリ無限ループさせるしか方法はないでしょうか?

A 回答 (4件)

>例えば整数に1を入れたらこう動くけど10を入れたらだめみたいな処理がしたい時、テストで1を入れたら動いた、じゃあ10を入れたらどうなるかな?っていうようなテストを何回もしたい時に


>毎回実行コマンド入れてると大変じゃないですか?って事なんですが…
>つまりプログラム的にループさせたいんじゃなくて
何回もコマンドを入れないでテストがしたいという事です。

テストしたい部分を別のメソッドなりクラスなりに分けて、メインメソッドから繰り返し呼び出せばいいのではないでしょうか?

作成したプログラムを変更せずに繰り返しテストしたいというのであれば上記のような方法、またはバッチでループ(バッチファイルを作成してjavaコマンドを何度も実行させるという意味です)

情報処理の勉強をなさっているのであれば、ボトムアップテストでのドライバクラスを作成するといえばご理解できるかと。
    • good
    • 0
この回答へのお礼

ありがとうございます。
まだそのボトムアップテストでのドライバクラスを作成する
という事の意味がわからない程の初心者で…
個々の名前だけは知ってるのですが。
ちょっとその件勉強してみます。
その前のご説明でイメージはつかめました。
ありがとうございました!

お礼日時:2008/10/16 07:52

なるほど、何となく感覚のズレが分かってきたかもしれません。



class exe{
public static void main(String args[])throws IOException
{
BufferedReader Buf = new BufferedReader(new InputStreamReader(System.in));
while (true)
{
System.out.println("整数を2つ入力して下さい");
String str1 = Buf.readLine();
String str2 = Buf.readLine();
if ((str1 == " ") || (str2 == " "))
{
break;
}
int a = Integer.parseInt(str1);
int b = Integer.parseInt(str2);
System.out.println(a + "+" + b + "=" + (a + b));
}
}
}

while構文と、if分を差し挟んでみました。
これは、二つの引数のうちのいずれかが1個の半角スペースの入力になるまで、『整数を2つ入力して下さい』の処理を繰り返すというものです。
これであれば、おそらく0mie0さんの求めている結果(≒処理)になるのではないでしょうか。

一般的にループ処理は、一度コンパイルして実行してしまえば、その処理はループの終了条件になるまで何度でも実行されます。
    • good
    • 0
この回答へのお礼

なるほど。ありがとうございます。WhileとIF文で分けてみるんですね。
何だか面倒な質問してしまったのに何度もお付き合いいただいてありがとうございました。

お礼日時:2008/10/16 07:49

while (true)


{
~繰り返したい処理~
}
という形が簡単なような気がしますが・・・

>forとかwhileとかを使うという意味ではなくて、プログラムを終わらせたくないっていう意味なんですが、

プログラムを終わらせないということと、繰り返し処理を実行することの違いを詳しく書いていただけたら、もっといい回答ができる方が現れると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
下の方へのお返事で書いたとおりなんですが…
要するに本当に書いたプログラムが動くかどうかを
何回もテストしたい場合
いちいちjava exe って打ち込まないといけないんですか?って
言いたいんです…
例えば整数に1を入れたらこう動くけど10を入れたらだめみたいな処理がしたい時、テストで1を入れたら動いた、じゃあ10を入れたらどうなるかな?っていうようなテストを何回もしたい時に
毎回実行コマンド入れてると大変じゃないですか?って事なんですが…
つまりプログラム的にループさせたいんじゃなくて
何回もコマンドを入れないでテストがしたいという事です。

お礼日時:2008/10/13 20:33

質問の意味がよくわからないですね・・・



>また最初の「整数を2つ入力して下さい」に戻りたいのですが何か方法はありますか?

繰り返して処理したいんだからforやwhileしてくださいとしか・・・
だって、そういうプログラムにしたいんですよね?

それともjava hogegehogeというコマンドを何度も実行したいんでしょうか?
それならばバッチでループすればいいんじゃありませんか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
説明が下手ですみません。
つまり、例えばjavaのプログラムが出来たらコマンドプロンプトで
javac exe.java(例の場合)とか入力して
その後実行するためにjava exe (Enter)で実行されますよね。
そして実行されたら終わりますよね。
でもそこで終わらないでまた
「整数を入力して下さい」みたいに出せないかな?と
つまり、またjava exeって入力しないで最初に戻れないのかなって。
バッチでループとは…?検索かけてみたけど結局意味がわからなくて…
ちなみにまだやっとfor文の使い方とか覚えたばかりなんですみません…
バッチっていうのは、何か文章の中に書けばいいんですか?

お礼日時:2008/10/11 18:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!