同じ for ループで値をインクリメントおよびデクリメントしたい状況がいくつかあるとします。この一連の状況では、状況の性質を利用してこれを「ごまかす」ことができる場合があります。たとえば、文字列を逆にします。
文字列を構築する性質上、反復を操作したり、追加のカウンターを追加したりする必要はありません。
public static void stringReversal(){
String str = "Banana";
String forwardStr = new String();
String backwardStr = new String();
for(int i = str.length()-1; i >= 0; i--){
forwardStr = str.charAt(i)+forwardStr;
backwardStr = backwardStr+str.charAt(i);
}
System.out.println("Forward String: "+forwardStr);
System.out.println("Backward String: "+backwardStr);
}
しかし、初期値から 0 まで減分された値と、0 から初期値まで増分された値を出力したいという別のケースが存在するとします。
public static void incrementAndDecrement(){
int counter = 0;
for(int i = 10; i >= 0; i--){
System.out.println(i);
System.out.println(counter);
counter++;
}
}
これは十分に機能しますが、インクリメントするために 2 つ目のカウンターを作成する必要があるのは面倒です。counter
冗長になる for ループを使用できる数学的なトリックやトリックはありますか?