4日目①(2025.02.03)<While Loop>



お疲れ様です!!

4日目の振り返り・復習いきます!!
Tim先生は、良いテンポで進めてくれるのでありがたいですね!!

【While】

Tim先生によると、Whileループはforループに似ていて、forループでできることは、全てWhileループでできるとのこと。

具体的には、指定した条件がtureである間、処理を繰り返すといったものだそうです。

では、forループとの違いは何かというと、、

【whileとforの違い】

while:
条件がtrueの間、処理を繰り返す
→ 繰り返し回数が事前に決まっていない場合に使う。また、ユーザー入力に基づいて条件が変わる場合
条件次第で、ループを抜け出す必要がある時に最適。

for:
決まった回数だけループを繰り返す
→繰り返し回数が決まっている場合はforループを使った方がコードが簡潔で見やすい。

なるほど、なるほど。
しっかり使い分けができるようにならないとですね!!

さて、Tim先生のコードに倣ってコードを書いていきますか!!

【コーディング例】

(例)
whileを使ってユーザーが入力するまで継続的に入力を求め続ける。
→ユーザーが入力した数字が10でない限り、ループを続け、ループに基づいた実行を繰り返す。

Scanner sc = new Scanner(System.in);
System.out.print(“Type a number: “);
int x = sc.nextInt();
while(x != 10 ){


ここら辺までノートを見ながらこの記事に書いてましたが、2月12日の自分なら、自分で書ける!!
と思って、自分で書いてみました。

public class main {
public static void main(String[]args) {

    System.out.print("番号: ");
    Scanner sc = new Scanner(System.in);
    int x = sc.nextInt();
    while(x != 10) {
        System.out.print("10を入力してください");
        System.out.print("番号: ");
    }

}
}


よし、我ながら自信がある!!
満を持して「実行!!」










あれ??

いや、処理はされてるんやけど、、、









終わらん。

なんか番号を入力した瞬間にSystem.out~で設定したコメントが怖いくらいに表示されている、、、
ホラーやな。


そしてソフトが落ちました。


調べたところ、これが「無限ループ」ってやつみたいです。


なるほど、処理を終わらせて次のアクションにいかせないとダメなのか、、、

ということで、ノートを見て修正!!


※赤字が追記した場所です。


System.out.print("番号: ");
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
while(x != 10) {
System.out.println("10を入力してください");
System.out.print("番号: ");
x = sc.nextInt();
 }
if(x == 10) {
   System.out.println("お疲れ様でした");


    }

}
}



これで問題なく無限ループに陥ることなく処理できました。

x = sc.nextInt();をwhileループの最後に入れることによって、
「10じゃなかったら、もう一回文字入力させて!!」
とプログラムに伝えられたみたいです。
ここをint x = sc.nextInt()とすると、「重複してます」ということでエラーになりました。

あと、「10を入力してください」というところは、
System.out.printだと、横にズラーっとなったので、
System.out.printlnにして改行、見やすくなりました。

最後のif文は遊び心で勝手に入れました。
こんな程度で喜ぶなと思われるかもしれませんが、ほんの少しでも自分オリジナルを入れてちゃんと処理ができた時、すごく嬉しいんです。。。


ちなみに、Tim先生のコードは

Scanner sc = new Scanner(System.in);
System.out.print(“Type a number: “);
int x = sc.nextInt();

while(x != 10){
System.out.print(“Type 10… “);
System.out.print(“Type a number: “);
x = sc.nextInt();
}


でした。
最初のスキャナーの宣言と、Type a numberの表示のコードが僕がやってみたやつと場所が反対なのですが、ちゃんと動いたからどっちでもいいのかな、、、


【countを増やしたい】

何回入力して目的の10に辿り着いたのかを表示させたい場合ですね!!
Tim先生、よろしくお願いします!!

Scanner sc = new Scanner(System.in);
System.out.print(” Type a number: “);
int x = sc.nextInt();
int count = 0;

While(x != 10){
x = sc.nextInt();
System.out.print(“Type a 10… “);
System.out.print(“Type a number: ” )

count++;
}
System.out.println(“You tired” + count + ” timies”);


こんな感じです!!

僕も自分でやってみました!!

public class main {
public static void main(String[]args) {

System.out.print(“番号: “);
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
int count = 0;
while(x != 10) {
System.out.println(“10を入力してください”);
System.out.print(“番号: “);
x = sc.nextInt();
count++;

}
System.out.println(“お疲れ様でした” + count + “回失敗しましたね”);

}

}



番号:3
番号:4
番号:10
お疲れ様でした2回失敗しましたね


ちゃんと処理できました!!


Tim先生は次に「do while」を紹介してくださりました。


【do while】

do whileは、「まず最初に処理を実行し、その後で条件式を見てそれに基づいて再度処理をする」ということとのこと。
最初に条件式を見て、処理をするwhileとの違いは、「doは、必ず1回は処理を行う」という点とのことです。

なので、
★処理を少なくとも一回は実行したい時は「do while」
★条件によって処理の内容を変えたい、実行するか分からない時は「while」

みたいな感じでしょうか。

では、Tim先生、よろしくお願いします!!


Scanner sc = new Scanner(System.in);
int x;

do{
System.out.print(“Type a number”);
x = sc.nextInt();
}while(x != 10);
}
}


うむ、
スキャナー機能の宣言とあとで使うためにint xの宣言を先にする。
doを使って、Type a numberを表示させて、ユーザー入力をさせる
whileで処理が終わる条件を教える。

みたいな感じですかね!!

この動画を見ている時は「わかった!」となって次に進みましたが、
2月12日の僕は、自分なりにアレンジしてみようと思います!!


int x;
Scanner sc = new Scanner(System.in);
do {
System.out.print(“Type a number”);
x = sc.nextInt();
if(x != 10) {
System.out.println(“不正解”);
}
else {
System.out.println(“正解!お疲れ様でした!”);
}

}while(x != 10);

}
}


ちゃんと処理ができた!!

10以外だったら、「不正解」
10だったら、「正解」
って感じにしました!!


4日目はまだ終わってませんが、
キリがいいのでここらへんで!!

ではでは!!


コメントを残す