Tips

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

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

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

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

問題

int型の変数nが0まで1ずつ増減するプログラムを作成せよ。
nが正の場合は減り、負の場合は増えていくこと。

解答例1
[java] package exercise;

public class Exercise_004 {
public static void main(String[] args) {
int n = -5;

if(n > 0) {
for(int i = n; i >= 0; i–) {
System.out.println(i);
}
} else {
for(int i = n; i <= 0; i++) {
System.out.println(i);
}
}
}
}
[/java]

ロジックとしてはこれが一番シンプルな書き方な気がします。


解答例2
[java] package exercise;

public class Exercise_004 {
public static void main(String[] args) {
int n = 5;

while(n != 0) {
if(n > 0) {
System.out.println(n–);
} else {
System.out.println(n++);
}
}
System.out.println(n);
}
}
[/java]

while文を使った書き方です。
増減処理を1つのwhile文にまとめると0が出力できなくなってしまうため、14行目で補っています。
インクリメントやデクリメントを前置にする場合は、14行目の処理がwhile文の前にきます。


解答例3
[java] package exercise;

public class Exercise_004 {
public static void main(String[] args) {
int n = 5;
incOrDecToZero(n);
}

static void incOrDecToZero(int n) {
System.out.println(n);
if(n > 0) {
incOrDecToZero(–n);
} else if(n < 0) {
incOrDecToZero(++n);
}
}
}
[/java]

少しマニアックに再帰を使ってみました。
あるメソッド内で同一メソッドを呼ぶことを再帰と言います。
再帰を使うとfor文やwhile文を使わずに繰り返し処理が書けます。


間違い例

[java] package exercise;

public class Exercise_004 {
public static void main(String[] args) {
int n = 5;

if (n > 0) {
for (int i = n; i > 0; i–) {
System.out.println(i);
}
} else {
for (int i = n; i < 0; i++) {
System.out.println(i);
}
}
}
}
[/java]

基本的な記述方法以外で間違えるとしたら、「0が表示されない」が多いかと思います。
問題文では「0まで」と指定しているので0が表示されていないといけません。
例ではfor文の条件式が間違っています。
8行目の「>」は「>=」、12行目の「<」は「<=」が正しい記述です。


  

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

はじめてのJAVA 連載

Recent News

Recent Tips

Tag Search