お疲れ様です!!
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日目はまだ終わってませんが、
キリがいいのでここらへんで!!
ではでは!!