20.java中的while循环
需求:需要打印⼀⾏字符串"hello gzitcast",100次
就需要将该语句打印100遍System.out.println("hello gzitcast");
那么如何解决该问题?
Java提供个⼀个称之为循环的结构,⽤来控制⼀个操作的重复执⾏。
int count = 0;
while (count < 100) {
System.out.println("hello gzitcast");
count++;
}
System.out.println("over");
变量count初始化值为0,循环检查count<100 是否为true,如果为true执⾏循环体(while后{}之间的语句),输出"hello gzitcast"语句,然后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");
}
2、
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⾃增,那么就会有不满⾜条件的时候。循环就会结束。
练习:想要打印出1-100之间的奇数
public static void main(String[] args) {
int x = 1;
while (x < 100) {
System.out.println(x);
x = x + 2;
}
}
public static void main(String[] args){
int x=1;
while(x<100){
if(x%2!=0){
System.out.print(x);
}
x++;
}
System.out.println();
}
练习2:计算1+2+3+4+5+6+7+8+9 的值
int sum = 0;
int i = 1;
while (i < 10) {
sum = sum + i;
i++;
}
system.out.println(sum);
注意:要精确控制循环的次数。常犯错误是是循环多执⾏⼀次或者少执⾏⼀次。
例如会执⾏101次,想要执⾏100次,要么是count初始值为1,然后count<=100
要么是count初始值为0,coung<100
int count = 0;
while (count <=100) {
System.out.println("hello gzitcast");
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:循环检查⽤户数字和随机数是否相同,知道相同位置,循环结束
do while 语句
do while语句格式:
do
{
执⾏语句;
}while(条件表达式);
do while特点是条件⽆论是否满⾜,
循环体⾄少被执⾏⼀次。
public static void main(String[] args) {
int x = 0, y = 0;
do {
System.out.println(x);
x++;
} while (x < 0);
// do while do会先执⾏⼀次,不管是否满⾜循环条件。
while (y < 0) {
System.out.println(y);
y++;
}
}
while:先判断条件,只有条件满⾜才执⾏循环体。
do while: 先执⾏循环体,再判断条件,条件满⾜,再继续执⾏循环体。
简单⼀句话:do while:⽆论条件是否满⾜,循环体⾄少执⾏⼀次。
注意⼀个细节do while 后⾯的分号;
案例:改写猜数字游戏
public static void main(String[] args) {
// 记录⽤户输⼊的数字
int guess = -1;
// 记录⽤户输⼊次数
int count = 0;
// ⽣成1-100之间随机数
int num = (int) (int)(Math.random()*100)+1;
Scanner sc = new Scanner(System.in);
// 循环猜数字
do {
System.out.println("请输⼊1-100之间的数字");
guess = sc.nextInt();
if (guess > num) {
System.out.println("哥们,太⼤了");
} else if (guess < num) {
System.out.println("哥们,太⼩了");
} else {
System.out.println("恭喜,中啦");
}
count++;
} while (num != guess);
System.out.println("你猜测的数字是:" + num + "猜测了" + count + "次");
}
案例:计算器
系统⾃动⽣成2个随机数⽤于参与运算。
系统⽣成0-4之间的随机数,表⽰加减乘除取模运算。
使⽤switch 进⾏匹配
class Couter {
用java编写一个简单的计算器public static void main(String[] args) throws InterruptedException {
// ⽣成随机数Math.random()⽣成0-1值,不包含0和1,
//乘以10得到0和10之间的数(double类型),不包含0和10
//强转为int,并加1得到1和10之间的数,包含1和10
int x = (int)(Math.random()*10)+1;
int y = (int)(Math.random()*10)+1;
System.out.println(x);
System.out.println(y);
// 创建0-4随机数 0 1 2 3 4 各表⽰加减乘除取模
int z = (int) (int)(Math.random()*5);
System.out.println(z);
switch (z) {
case 0:
System.out.println(x + "+" + y + "=?");
System.out.println("哥们快猜。。。。");
Thread.sleep(2000);
System.out.println(x + "+" + y + "=" + (x + y));
break;
case 1:
System.out.println(x + "-" + y + "=?");
System.out.println("哥们快猜。。。。");
Thread.sleep(2000);
System.out.println(x + "-" + y + "=" + (x - y));
break;
case 2:
System.out.println(x + "*" + y + "=?");
System.out.println("哥们快猜。。。。");
Thread.sleep(2000);
System.out.println(x + "*" + y + "=" + (x * y));
break;
case 3:
System.out.println(x + "/" + y + "=?");
System.out.println("哥们快猜。。。。");
Thread.sleep(2000);
System.out.println(x + "/" + y + "=" + (x / y));
break;
case 4:
System.out.println(x + "%" + y + "=?");
System.out.println("哥们快猜。。。。");
Thread.sleep(2000);
System.out.println(x + "%" + y + "=" + (x % y));
break;
}
}
}
计算器2:上述中只能计算⼀次。可以使⽤whileu循环来不停计算。
程序⽣成了3个随机数,前两个数参与运算,第三个数⽤于匹配运算符。要注意除数为0的情况。int x = (int)(Math.random()*10)+1;
Math.random() ⽣成0-1之间的数字,double类型
Math.random()*10 就是0-9之间的数,是double类型
(int)(Math.random()*10)将double类型强转成int类型,去掉⼩数点,便于计算。(int)(Math.random()*10)+1,⽣成了1到10之间随机数。
int z = (int) (int)(Math.random()*5);
⽣成0-4之间的数字,可以⽤0表⽰加,1表⽰减,2表⽰乘,3表⽰除,4表⽰取模为了减慢程序,使⽤了
Thread.sleep(2000); 让程序等待⼀会。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论