Tips

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

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

プログラム作成練習問題33回となります。

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

問題

3桁の数値の中で、同じ数字が含まれているか判定するプログラム
例) 123 → 同じ数字は含まれていません
121 → 同じ数字が含まれています

解答例1
[java] public class Excercise_033 {
public static void main(String[] args) {
int num = 121;
String strNum = String.valueOf(num);

String result = "同じ数字は含まれていません";

outerFor: for (int i1 = 0; i1 < strNum.length() – 1; i1++) {
for (int i2 = 1; i2 < strNum.length(); i2++) {
if (i1 == i2) {
continue;
}
if (strNum.charAt(i1) == strNum.charAt(i2)) {
result = "同じ数字が含まれています";
break outerFor;
}
}
}
System.out.println(result);
}
}
[/java]


解答例2
[java] public class Excercise_033 {
public static void main(String[] args) {
int num = 121;
String strNum = "" + num;

if (strNum.charAt(0) == strNum.charAt(1) ||
strNum.charAt(0) == strNum.charAt(2) ||
strNum.charAt(1) == strNum.charAt(2)) {
System.out.println("同じ数字が含まれています");
} else {
System.out.println("同じ数字は含まれていません");
}
}
}
[/java] 三桁であれば全てのパターンを書き出してしまうという手があります。
しかし桁数が増えると対応が難しくなります。


間違い例

[java] public class Excercise_033 {
public static void main(String[] args) {
int num = 123;
String strNum = String.valueOf(num);

String result = "同じ数字は含まれていません";

outerFor: for (int i1 = 0; i1 < strNum.length() – 1; i1++) {
for (int i2 = 1; i2 < strNum.length(); i2++) {
if (strNum.charAt(i1) == strNum.charAt(i2)) {
result = "同じ数字が含まれています";
break outerFor;
}
}
}
System.out.println(result);
}
}
[/java]

解答例1の間違いになります。
1で書いていたcontinueの処理がないと、同じインデックスの文字を判定してしまい、必ず同じ文字が含まれる結果になってしまいます。


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

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search