🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

3404閲覧

5回の入力範囲で文字列"end"のみ入力されたら処理終了

nhm97392jp

総合スコア21

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

1クリップ

投稿2019/12/14 06:24

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
5回までの入力範囲で"end"という文字列が入力されるまで終了するプログラムを作成しています。
コマンドプロンプト上で、Javac Lesson3No007.java,Java Lesson3No007のコンパイル、実行コマンドでは成功しました。

発生している問題・エラーメッセージ

//"end"という文字列が存在するか確認 というコメントアウトしている次行のソースコード
//"end"という文字列が存在するか確認
if( s.equals( "end" ) ){
break;
}
ですが、
equalsをcontainsに書き換えても実行後に、WQend、end、endEWQを入力後ソースコードが終了します。
今回はendのみの入力でソースコードを終了したいソースコードを作成したいです。

どなたかご教授願いますでしょうか?

宜しくお願い致します。

該当のソースコード

//フルネームでインポートしている。 import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; //プログラム練習問題_スッキリわかるJava入門 //プログラム練習問題_第3章_条件分岐と繰り返し_007 /* 【タイトル】 条件分岐と繰り返し 【目的】 for文とif文への理解の確認。 【技術要素】 ・for文 ・if文 ・break 【問題】 任意の文字列を入力可能とする。 入力された文字列が"end"以外の場合、 入力された文字列を出力する。 出力後、再度入力可能とする。 最大5回まで入力可能とします。 <出力イメージ> 入力:AAA AAA 入力:BBB BBB 入力:end end 入力:AAA AAA 入力:BBB BBB 入力:CCC CCC 入力:DDD DDD 入力:EEE EEE */ // javadoc -d html Lesson3No007.java /* * @author M.S * @version 20191201.5 */ //クラス名:Lesson3No007で宣言している。 //どのクラスからもアクセスできる。 public class Lesson3No007{ /** * mainメソッド * @param args 文字列を入力 */ //メソッド名がmain, 引数としてString型の配列: String[] args, static修飾子が付与されている。 public static void main( String[] args )throws IOException{ //まとめてテキストを読み込むための処理を用意  /*BufferedReaderは文字、配列、行をバッファリングすることによって、 文字型入力ストリームからテキストを効率良く読み込みます。*/ /*InputStreamReaderはバイト・ストリームから文字ストリームへの橋渡しの役目を持ちます。  バイトを読み込み、指定されたcharsetを使用して文字にデコードします。*/ BufferedReader br = new BufferedReader( new InputStreamReader( System.in )); System.out.println( "文字列を入力してください" ); for( int i = 0; i < 5; i++ ){ System.out.print( "入力:" ); //改行を含まず内容がsに代入される。 String s = br.readLine(); //"end"という文字列が存在するか確認 if( s.equals( "end" ) ){ break; } } //閉じる。 br.close(); } }

試したこと

if( s == "end" ){
break;
}
と書き換えたら、endと入力してもif文のtrueの処理に入らず、5回入力までソースコード終了となります。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2019/12/14 06:28

> equalsをcontainsに書き換えても どのような目的で書き換えたのですか?
nhm97392jp

2019/12/14 06:38

equals:等しい contains :含む という意味で、if文の()内の条件文でequalsを使用してもダメだったので、試しにcontainsを使用してました。
LouiS0616

2019/12/14 06:46

ダメだったというのは、equalsを使った場合 end と入力しても終了しなかったということですか?
LouiS0616

2019/12/14 07:32

修正前の方法で endと入力されたら終わる ようなプログラムが組めている筈なので、どこか別の間違いあるいは勘違いをしている気がするのです。 もう一度試してみて下さい。
nhm97392jp

2019/12/14 08:07

上記のソースコードを再度見直し、 if文の()内の条件文を if( s.equals( "end" ) ) にしたら、 AAA BBB ABend end で実現できました。
LouiS0616

2019/12/14 08:13

つまり元のコードそのままで期待どおり動作したと言うことですね。 解決したようであれば、回答欄に解決方法を書き自己解決としてクローズしておいて下さい。
nhm97392jp

2019/12/14 08:19

ありがとうございます。
guest

回答1

0

自己解決

自力で上記のソースコードを再度見直し、
if文の()内の条件文を if( s.equals( "end" ) ) にしたら、
AAA
BBB
ABend
end

で実現できました。

投稿2019/12/14 08:18

nhm97392jp

総合スコア21

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問