こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

無限ループからの脱出

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文の中に処理が移っていないのです。なぜでしょうか?
宜しくお願いします。

投稿日時 - 2005-11-21 15:49:49

QNo.1792658

困ってます

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

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

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

投稿日時 - 2005-11-21 15:54:41

お礼

文字列比較の場合、equalsというメソッドがありましたね!
ありがとうございます。

投稿日時 - 2005-11-21 17:20:05

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

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

これが間違い。

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

ただ、ソースべた貼りで人にデバック頼むのはやめようよ。。。

投稿日時 - 2005-11-21 16:48:34

お礼

ありがとうございます。

投稿日時 - 2005-11-21 17:17:34