sagantaf

なんでも自分の思ったこと、経験したことを書いて生きます。

ループ文は2通りの書き方がある

 

ループ文は2通りの書き方がある

 

例えば、aとbの値を入力させ、bがaよりも小さかったら、「aよりも大きな値を入力してください。」と表示させ、もう一度bを入力させるプログラムを書くとする。

 

Javaでコーディングすると以下のような形になる。

 

import java.util.Scanner;
class exercise1{
public static void main(String args){
System.out.print("Please input a number:");
Scanner stdIn = new Scanner(System.in);
int a = stdIn.nextInt();
int b = 0;
long start = 0;

do{
System.out.print("Please input second number:");
b = stdIn.nextInt();
start = System.nanoTime();
if ( b < a ){
System.out.println("aより大きい値を入力");
}
} while(b < a);

int res = b - a ;
System.out.println(res);
long end = System.nanoTime();
System.out.println((end - start) + "ms");
}
}

 

class exercise2{
public static void main(String args){
System.out.print("Please input a number:");
Scanner stdIn = new Scanner(System.in);
int a = stdIn.nextInt();
int b = 0;
long start = 0;

while(true){
System.out.print("Please input second number:");
b = stdIn.nextInt();
start = System.nanoTime();
if (b >= a) break;
}

int res = b - a ;
System.out.println(res);
long end = System.nanoTime();
System.out.println((end - start) + "ms");
}
}

 

exercise1とexercise2の2種類書いたが、これは、

 do while 文でループを継続させる判定をするか、

 if文でループを終了させる判定をするか、

の違いがある。

 

このようにどんな条件判定でも2種類で表せる。


 ①whileやdo whileで「継続するか?」を判定して、ループする
 ②if文で「終了するか?」を判定して、breakする

 

速い方を取る、より直感で理解できる方を取る、などその時々で選択してコーディングすることになる。

ちなみにSystem.nanoTime()を使って測定すると、exercise2の方が少し速いことがわかる。