第五 Java循环结构之while循环

时间:2022-04-11 09:41:41

C语言中的循环结构


需求:需要打印一行字符串"今天天气特别好",100次

就需要将该语句打印100遍System.out.println("hellogzitcast");

那么如何解决该问题?

    Java提供个一个称之为循环的结构,用来控制一个操作的重复执行。

                int count = 0;
while (count < 100) {
System.out.println("今天天气特别好");
count++;
}
System.out.println("over");

变量count初始化值为0,循环检查count<100是否为true,如果为true执行循环体(while后{}之间的语句),输出"hellogzitcast"语句,然后count自增一,重复循环,直到count是100时,也就是count<100为false时,循环停止。执行循环之后的下一条语句。

    Java提供了三种类型的循环语句:while循环,do-while循环和for循环。

 

1、while语句格式

while(条件表达式)

{

    执行语句;

}

 

 

定义需求:想要打印5次helloworld

public static void main(String[] args) {
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
System.out.println("hello world");
}

第二种方式

public static void main(String[] args) {
int x = 0;
while (x < 5) {
System.out.println("hello java ");
}
}

如果是在dos里编译和运行,是不会停止,除非系统死机。需要ctrl+c来结束。

这就是真循环或者死循环。因为x<5永远为真。


public static void main(String[] args) {
int x = 0;
while (x < 5) {
System.out.println("hello java ");
x++;
}
}


让x自增,那么就会有不满足条件的时候。循环就会结束。


注意:要精确控制循环的次数。常犯错误是是循环多执行一次或者少执行一次。

例如会执行101次,想要执行100次,要么是count初始值为1,然后count<=100

要么是count初始值为0,coung<100


                int count = 0;
while (count <=100) {
System.out.println("hello");
count++;
}
System.out.println("over");



猜数字游戏:

编写程序随即生成一个0-100之间的随机数。程序提示用户输入一个数字,不停猜测,直到猜对为止。最后输出猜测的数字,和猜测的次数。并且如果没有猜中要提示用户输入的值是大了还是小了。

思考:

如何生成1-100之间随机数?

(int)(Math.random()*100)+1;

如何提示用户输入数字,

Scanner  sc=new Scanner(System.in);

int guessNum= sc.nextInt();

需要将随机数和用户输入的数字进行比较。

 

猜一次:

                Scanner sc = new Scanner(System.in);
int num = (int)(Math.random()*100)+1;
System.out.println("请输入0-100之间整数");
int guessNum = sc.nextInt();
if (guessNum == num) {
System.out.println("中啦");
} else if (guessNum < num) {
System.out.println("小啦");
} else {
System.out.println("大了");
}

这个程序只能才一次,如何让用户重复输入直到猜对?

可以使用while循环


public static void main(String[] args) {
int num = (int)(Math.random()*100)+1;
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入1-100之间整数");
int guessNum = sc.nextInt();
if (guessNum == num) {
System.out.println("中啦");
} else if (guessNum < num) {
System.out.println("小啦");
} else {
System.out.println("大了");
}
}
}


该方案发现了问题,虽然实现了让用户不停的输入,但是即使猜中了程序也不会停止。

那么就需要控制循环次数了。也就是while()括号中的条件表达式。当用户猜测的数和系统生成的数字不相等时,就需要继续循环。


int num = (int)(Math.random()*100)+1;
Scanner sc = new Scanner(System.in);

int guessNum = -1;
while (guessNum != num) {
System.out.println("请输入1-100之间整数");
guessNum = sc.nextInt();
if (guessNum == num) {
System.out.println("中啦");
} else if (guessNum < num) {
System.out.println("小啦");
} else {
System.out.println("大了");
}
}

为什么将guessNum初始化值为-1?因为如果初始化为0到100之间程序会出错,因为可能是要猜的数。

1:首先程序生成了一个随机数

2:用户输入一个数字

3:循环检查用户数字和随机数是否相同,知道相同位置,循环结束