• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:dirコマンドを実行して、結果を表示するJavaプログラム(プログラム)

Javaプログラムでdirコマンドを実行する方法と結果の表示

このQ&Aのポイント
  • Javaプログラムでdirコマンドを実行し、結果を表示する方法について解説します。for文とwhile文を使用した場合の実行結果の違いについても説明します。
  • 試したコードでは、for文を使用する場合とwhile文を使用する場合で実行結果が異なることになります。for文では指定した回数分だけ繰り返されますが、while文では条件式がtrueの間は無限に繰り返されます。
  • したがって、for文の場合は指定した回数分だけ表示されますが、while文の場合は終了条件がないため、全ての行が表示されます。ループを抜けるためには、readLineメソッドがnullを返すかどうかを判定すれば良いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • bassslap
  • ベストアンサー率50% (1/2)
回答No.2

while文の実行結果がfor文の実行結果と比べて 必ず偶数行のみ出力されていませんか? ここにgetLine()の使い方に誤りがあると思います。 getLine()は実行毎に結果を返しますよね? 「 if(a.getLine()== null){ 」の時点でaの中身を1行取得し 結果がnullか判断されています。 nullでなければ「 System.out.println(a.getLine()); 」が実行されますが このときにはすでに2行目を出力していることになるのです。 ポイントはwhile文内で2回getLineを使わないことです。 と、ここまで偉そうなことを言っておいて解決策は 以下のようなものしか思い浮かびません・・・ 以下を参考により良くして頂けると幸いです。 ------------------------------------------------- public static void main(String [] args){ DirCmd a = new DirCmd(); while(true) { //getLineの結果を保持する変数 String temp = a.getLine(); if(null == temp){ break; } //nullでなければ保持している内容を出力 System.out.println(temp); } }

alternative4
質問者

お礼

回答有り難うございます。 最初の方が言っていたa.getLine()を理解していますか?というのは こういうことだったのですね^^; 確かに実行してると、ところどころ抜けて出力されていたのでなんでだろう? と思っていました。 理解不足でした。 本当に有り難うございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

a.getLine() がどういう動作なのか理解できていますか?

alternative4
質問者

補足

a.getLine()が呼びされるたびに、brに格納された値が入っているのだと思っているのですが、 違うでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A