-
循环语句组成部分
-
for循环
语法格式
执行过程
①-②-③-④-②-③-④-②-③-④-.....-②
说明:
②循环条件部分为
boolean
类型表达式,当值为
false
时,退出循环
①初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
④可以有多个变量更新,用逗号分隔
在for循环内定义的变量,在for循环内有效。出了for循环就失效了。
public static void main(String[] args) {
int i = 1;
for (System.out.print('a');i < 3; System.out.print('b'),i++) {
int num = 0;//(num在for循环内有效。)
System.out.print('c');
}
//System.out.println(i + num);//找不到变量num(num出了for循环就失效了)
}//循环结果为acbcb
不在循环条件部分限制次数的结构(无限循环):for(;;) 或 while(true) 结束循环的二种方式:
方式一:循环条件部分返回false
方式二:在循环体中,执行break
Scanner s = new Scanner(System.in);
int evenNumber = 0;//记录偶数的个数
int oddNumber = 0;//记录奇数的个数
for (;;){//while(true) //无限循环
System.out.println("请输入整数");
int number = s.nextInt();
if (number % 2 == 0){
evenNumber++;
if (evenNumber == 5){
break;//遇到break循环结束
}
}else if (number % 2 == 1){
oddNumber++;
if (oddNumber == 5){
break;
}
}
}
System.out.println("偶数个数为:"+ evenNumber + "\n" + "奇数个数为:" + oddNumber);
for_嵌套循环
外层循环控制行数,内层循环控制列数
/*
******
******
******
******
*/
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 6; j++) {
System.out.print("*");
}
System.out.println();
}
/*
*
**
***
****
*****
*/
for (int i = 0; i < 6; i++) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
/* i(行号) j(*的个数) 规律:i + j = 5 换句话说:j = 5 - i;
**** 1 4
*** 2 3
** 3 2
* 4 1
*/
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 5-i; j++) {
System.out.print("*");
}
System.out.println();
}
//九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i ; j++) {
System.out.print(j + "*" + i + "=" + j*i + " ");
}
System.out.println();
}
Test_输出100000以内的所有质数及其个数
//质数:素数,只能被1和它本身整除的自然数。-->从2开始,到这个数-1结束为止,都不能被这个数本身整除。
boolean isFlag = true;//设置一个标识 i是否被j除尽,一旦除尽,修改其值
int count = 0;//记录质数的个数
for (int i = 2; i <= 100; i++) { //遍历100以内的自然数
for (int j = 2; j < i; j++) { //让j被i去除,因为最小的质数为2,故从2开始
if (i % j == 0){//i被j除尽
isFlag = false;
}
}
if (isFlag == true){
System.out.print(i + " ");
count++;
}
isFlag = true;//重置isFlag
}
System.out.println("质数的个数为:" + count);
System.out.println("-------------------");
//第一次优化该程序
boolean isFlag1 = true;
int count1 = 0;
for (int i = 2; i <= 100; i++) {
//for (int j = 2; j < i ; j++) {
for (int j = 2; j <= Math.sqrt(i); j++) {//调用math方法给i开平方
if (i % j == 0){
isFlag1 = false;
break; //@优化:如果出现跳出内循环,进行新的一次外循环(只对本身非质数的自然数是有效的。)
}
}
if (isFlag1 == true){
System.out.print(i + " ");
count1++;
}
isFlag1 = true;
}
System.out.println("质数的个数为:" + count1);
//第二次优化该程序
int count3 = 0;
//获取当前时间距离1970-01-01 00:00:00 的毫秒数
long startTime = System.currentTimeMillis();
Label:for (int i = 2; i <= 100000; i++) {
for (int j = 2; j <= Math.sqrt(i); j++) {
if (i % j == 0){
continue Label;
}
}
count++;//能执行到此步骤的,都是质数
}
//获取当前时间距离1970-01-01 00:00:00 的毫秒数
long endTime = System.currentTimeMillis();
System.out.println("质数的个数为:" + count);
System.out.println("所花费的时间为:" + (endTime - startTime));
-
while循环
语法格式
执行过程
① - ② - ③ - ④ - ② - ③ - ④ - ... - ②
说明
1.写while循环千万小心不要丢了迭代条件。一旦丢了,就可能导致死循环!
2.我们写程序,要避免出现死循环。
3.for循环和while循环是可以相互转换的!
区别:for循环和while循环的初始化条件部分的作用范围不同。
//遍历100以内的所有偶数
int i = 1;
while (i < 100){
if (i % 2 == 0){
System.out.println(i);
}
i++;
}
//出了while循环以后,仍可以调用。
System.out.println(i);
-
do-while循环
语法格式
执行过程
① - ③ - ④ - ② - ③ - ④ - ... - ②
说明
1.do-while循环至少会执行一次循环体!
2.开发中,使用for和while更多一些。较少使用do-while
//遍历100以内的偶数,并计算所有偶数的和及偶数的个数
int num = 1;
int sum = 0; //记录总和
int count = 0; //记录个数
do{
if (num % 2 == 0){
System.out.println(num);
sum += num;
count++;
}
num++;
}while (num < 100);
System.out.println("总和为:" + sum);
System.out.println("个数为:" + count);
-
特殊关键字的使用
break
使用范围 :switch-case 、循环结构中
循环中使用的作用:结束当前循环
特点:关键字后面不能声明执行语句
continue
使用范围 :循环结构中
循环中使用的作用:结束当次循环
特点:关键字后面不能声明执行语句
for (int i = 1; i < 10; i++) {
if (i % 4 == 0){
//break;//输出:123
continue;//跳过i=4、8 输出:1235679
//System.out.println("是否执行"); //关键字后面不能声明执行语句
}
System.out.print(i);
}
添加标识,结束指定标识的一层循环结构
label:for(int i = 1;i <= 4;i++){
for(int j = 1;j <= 10;j++){
if(j % 4 == 0){
//break;//默认跳出包裹此关键字最近的一层循环。
//continue;
//break label;//结束指定标识的一层循环结构
continue label;//结束指定标识的一层循环结构当次循环
}
System.out.print(j);
}
System.out.println();
}
附加:
return
:并非专门用于结束循环的,它的功能是结束一个方法。当一个方法执行到一个return
语句时,这个方法将被结束。
与
break
和
continue
不同的是,
return
直接结束整个方法,不管这个return
处于多少层循环之内
特殊关键字的使用
说明:本篇文章部分内容和图片引用尚硅谷官网内容,特此说明。@尚硅谷官网地址