Tips

【Java】プログラム作成練習問題19

【Java】プログラム作成練習問題19

プログラム作成問題の第19回となります。

※この出題形式に関しては答えは1つではありません。
解答例はできるだけ複数載せるつもりですが、問題文の要件を満たしていれば正解として下さい。

問題

yesと入力される限り、入力を繰り返すプログラムを作成せよ。
キーボードからの入力にはjava.util.Scannerクラスを使用すること

解答例1
[java] import java.util.Scanner;

public class Exercise_019 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

do {
System.out.print("もう一度実行する場合はyesと入力してください : ");
} while("yes".equals(sc.next()));
}
}
[/java]

sc.next().equals(“yes”)ではなく”yes”.equals(sc.next())と記述しているのがポイントで、
リテラルからメソッドを呼び出すと原理的にNullPointerExceptionが発生しなくなります。


解答例2
[java] package exercise;

import java.util.Scanner;

public class Exercise_019 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

while(true) {
System.out.print("もう一度実行する場合はyesと入力してください : ");
if(!"yes".equals(sc.next())) {
break;
}
}
}
}
[/java]


間違い例

[java] package exercise;

import java.util.Scanner;

public class Exercise_019 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);

do {
System.out.print("もう一度実行する場合はyesと入力してください : ");
} while("yes" == sc.next());
}
}
[/java]

yesと入力してもプログラムが終了してしまいます。
理由は前回ポイントでもあった、==演算子による比較です。
この場合、”yes”というリテラルと入力された”yes”は別々の参照先になるためfalseが返ってしまいます。


新連載はじまりました!新Java基礎 連載リンク

はじめてのJAVA 連載

一覧へ戻る

Recent News

Recent Tips

Tag Search