• ベストアンサー
  • 困ってます

無限ループからの脱出

  • 質問No.1792658
  • 閲覧数569
  • ありがとう数3
  • 回答数2

お礼率 53% (132/248)

import java.io.*;

public class Test {
public static void main(String[] args) throws IOException {
String ss;
int idt;

while(true) {
try {
BufferedReader f = new BufferedReader(new InputStreamReader(System.in));

System.out.print("数字を入力してください : ");
ss = f.readLine();

if(ss == "end") break;

idt = Integer.parseInt(ss);

System.out.println("あなたの入力した数字は " + idt + " です。");
System.out.println();
}
catch(NumberFormatException e) {
System.out.println("error : " + e);
System.out.println();
}
}
}
}

上記は、コンソールに入力した数字をそのまま出力し、数字以外を入力すると例外処理するプログラムです。
見ていただくと分かるとおり、途中入力したものが「end」だとbreakして無限ループを脱出するということを予定して作りました。
しかしbreakしてくれません。if文の中に処理が移っていないのです。なぜでしょうか?
宜しくお願いします。

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 47% (95/202)

入力文字列の比較方法が間違っています。
文字列の場合は equals() を使用して比較しましょう。

if(ss.equals( "end" )) break;
お礼コメント
kamakuragengorou

お礼率 53% (132/248)

文字列比較の場合、equalsというメソッドがありましたね!
ありがとうございます。
投稿日時:2005/11/21 17:20

その他の回答 (全1件)

  • 回答No.2

ベストアンサー率 15% (44/285)

> if(ss == "end") break;

これが間違い。

if(ss.equals( "end" )) break;

ただ、ソースべた貼りで人にデバック頼むのはやめようよ。。。
お礼コメント
kamakuragengorou

お礼率 53% (132/248)

ありがとうございます。
投稿日時:2005/11/21 17:17
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ページ先頭へ