Lession5 流程语句句
1 while循环
while(){ //条件表达式 持行后能返回true或false的一个表达式
//执行语句
}
特别强调 绝对不要加分号=> while() ;
//例子 int age=1;
while循环死循环
while(age<=10){
System.out.println("学习了"+age+"年");
age++;
}
//例子
while循环输出一年365天
int day=1;
while(day<=365)
{
System.out.println("第"+day+"天");
++day;
}
//例子 输入一个数字,如果这个数字是8888,就结束,如果不是,把它打印出来,继续输入
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int num =scan.nextInt(); //从键盘输入一个数字
while(num!= 8888)
{
System.out.println("您输入的数字是"+num);
System.out.println("输入的不对,请再输入");
num=scan.nextInt(); //再输入
}
System.out.println("输入正确,程序结束");
scan.close();
}
}
//例子 死循环
标准死循环
while(true) //这是一个死循环
{
System.out.println("我要杀小日本儿");
}
//对于死循环后面编写的代码,编译将出错,因为它不可能被执行到
System.out.println("我还有机会执行到吗"); //错误 Unreachable code
//例子 跳出死循环
int a=10;
while(true)
{
System.out.println("我要杀小日本儿");
a++;
if(a>100){
break; //从循环中跳出
}
}
System.out.println("我还有机会执行到吗"); //可达
2 do while
while(条件表达式) {
循环体
}
//这是do while 循环
do{
循环体
}
while(条件语句);
和 while 循环的区别
do while 会先执行一遍循环体中的内容 (不管三七二十一 )
//例子 输出12个月
int month=0;
do{
month++;
System.out.println("当前是第"+month+"月");
}
while(month<12);
//例子,输入一个数字,如果这个数字是8888,就结束,如果不是,把它打印出来,继续输入
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
int num=0; //变量在使用前,必须初始化 The local variable num may not have been initialized
Scanner scan=new Scanner(System.in);
do {
num=scan.nextInt();
System.out.println("你输入的数字是"+num);
}
while(num!=8888);
System.out.println("输入正确,程序结束");
scan.close();
}
}
//例子,随机生成10个数,值在1-9之关, 并把最大的挑出来
1) 随机数生成的方法
//java.lang 包下的类,使用的时候,可以不用导包
//Math.random() 能生成一个随机数 ,是个小数,值在 0(包含)-1(不包含)之间
//double num=Math.random(); //生成一个0-1之间的随机小数
double num=(int)(Math.random()*10); //注意优先级,扩号不能少
System.out.println(num);
2) 本题
public class Test {
public static void main(String[] args) {
int max=0;
int i=0;
do{
int num= -(int) (Math.random()*10);
if(i==0) {
//v如果是第一次循环,直接把生成的数赋值给max
max=num;
}
if(max
max=num;
}
System.out.print(num+"\t");
i++;
}
while(i<10);
System.out.println("最大的数是"+max);
}
}
3 for循环
for(初始化表达式;条件表达式;循环后的操作表达式){
//循环体
}
//例一
for(int i=0; i<10;i++){
System.out.println("hello world"+"第"+(i+1)+"遍");
}
//1 执行初始化表达式,只执行一次
//2 执行条件表达式
//3 如果条件成立,执行循环体,条件不成立,循环结束
//4 执行完循环体,执行循环后的执行语句
//例二
int i=0;
for(System.out.println("哈哈,我就这么初始化不行咋地?");i<3; System.out.println("这就是我循环完要做的事")){
System.out.println("这是循环体");
}
编译报错,第二个表达式,必须是条件表达式(能返回true或false) 才行 //System.out.println("这就是我家的条件表达式");出错
//例三 本例可以编译通过
int i=0;
for(System.out.println("哈哈,我就这么初始化不行咋地?"); i<3; System.out.println("这就是我循环完要做的事")){
i++;
System.out.println("这是循环体");
}
结果:
哈哈,我就这么初始化不行咋地?
这是循环体
这就是我循环完要做的事
这是循环体
这就是我循环完要做的事
这是循环体
这就是我循环完要做的事
//例四 用for 写的死循环
for(;;){
//操作使条件表达式永远成立
}
//例五 输出 0-99
int i;
for(i=0;i<100;i++) { //如果这里写成 int i=0,则和上面的定义重复出,编译将出现错误: Duplicate local variable 重复的局部变量
System.out.println(i);
}
System.out.println("现在i的值是"+i); //这个i是局部变量,在for循环中定义的 i=>100
//例六 求1+2+3+...100 的合
int s=0;
for(int i=1;i<=100;i++){
s=s+i;
}
System.out.println("合是"+s);
//例七 求0-10000之间所有能被888整除的数,还有它们的个数
int count = 0;
for (int i = 0; i < 10000; i++) {
if (i % 888 == 0) {
System.out.println(i);
count++;
}
}
System.out.print("能被888整除的数一共有" + count + "个");