インクリメントとデクリメント
1 増やすだけなのに、毎回同じことを 2 回書いている
カウンタを進める、次の行に移る、スコアを 1 点足す。プログラムを書いていると「変数を 1 だけ動かす」操作が異様に多く出てきます。そのたびに count = count + 1; と変数名を 2 回書くのは面倒ですし、片方だけ打ち間違えても Java は気づいてくれません。
そこで用意されているのが ++ と -- です。
Java
int count = 0;
count++; // count は 1
count++; // count は 2
count--; // count は 1count++ は count = count + 1 と同じ、count-- は count = count - 1 と同じです。変数名が 1 回で済むぶん、打ち間違いも減ります。
動かせるのは変数だけで、5++ のように数値へ直接書くことはできません。
代入と混ぜた瞬間、答えが変わる
++ は変数の前にも後ろにも置けます。単独の文として書くかぎり x++; と ++x; はまったく同じ動きで、差は出ません。違いが出るのは、ほかの式と組み合わせたときだけです。
Java
int a = 5;
int b = ++a; // 先に a を 6 にしてから b へ渡す。a=6, b=6
int c = 5;
int d = c++; // 先に今の 5 を d へ渡してから c を 6 にする。c=6, d=5前置は「増やしてから渡す」、後置は「渡してから増やす」。同じ 5 から始めても b は 6、d は 5 になります。
迷ったら 2 行に分けます。
a++;とint b = a;のように書けば、読む人も自分も順番を考えずに済みます。慣れてから式の中に混ぜても遅くありません。
動かしたあと、元の値はもう残っていない
++ と -- は変数そのものを書き換えます。あとで動かす前の値も使いたいなら、動かす前に別の変数へ控えておきます。
Java
int stock = 10;
int before = stock; // 出荷前の在庫を控えておく
stock--; // 出荷して 9 になる
System.out.println(before + " から " + stock + " へ");控えを取らずに stock-- を実行してしまうと、10 という値はどこにも残りません。受け取った値を保ったまま、その前後の値がどちらも欲しい場面では、先に控えを作ってから動かす、という順番が効いてきます。
要件
- クラス名は
Solution、メソッド名はnextAndPrev、引数はint n1 つ、戻り値の型はString - メソッドの中で
++と--演算子を必ず使うこと (n - 1やn + 1のような算術演算で代用しない) - 戻り値は
"prev = X, next = Y"の形式 (=の前後と,の後ろに半角スペース 1 つずつ)
入出力例
nextAndPrev(5) → "prev = 4, next = 6"
nextAndPrev(0) → "prev = -1, next = 1"
nextAndPrev(-3) → "prev = -4, next = -2"ヒント
編集 ゆめさく編集部