java基础_循环结构
程序员文章站
2022-03-19 23:43:23
...
循环结构的概念
什么是循环结构?循环就是反复的重复去做一件事。
为什么需要有循环?因为生活中有很多要重复去做的事情,对应的计算机语言中也有相应的机制去描述。
循环的要素:
- 循环的初始值;比如:sum=0;n=1;
- 循环的控制条件;比如:n<=3;
- 循环中反复执行的代码;比如:接收输入,求和。
-
过渡到下一次循环;比如:n++;
while循环
while循环的语法结构:
int n =1;//循环的初始化
while(控制循环的条件){
执行循环的语句;
n++;//过渡到下一次
}
while循环执行过程:
案例:计算3个人的平均分(while)。
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double sum = 0 ;
int n = 1;
while (n<=3){
System.out.println("请输入第"+n+"个人的成绩");
sum += sc.nextDouble();
n++;
}
System.out.println("三个人的平均分是:"+sum/3);
}
}
结果:
案例:实现100以内的自然数求和(do while)。
public class Demo {
public static void main(String[] args) {
int n = 1;
int sum = 0;
do {
sum = sum+n;
n++;
}while (n<=100);
System.out.println(sum);
}
}
结果:
案例:实现100以内的自然数求和(while)。
public class Demo {
public static void main(String[] args) {
int n =1;//初始值
int sum=0;//初始和
while (n<=100){
sum +=n;
n++;
}
System.out.println("100以内和="+sum);
}
}
结果:
while和do while:
- 基本用法差不多,只不过while是先判断后执行,do while是先执行后判断。
- do while后面的分号";"一定不要忘记。
- do while和while就大多数是结果是完全一样的,只有在极端情况下才有差异,比如:条件一开始就不成立,那么while一次都不会执行;而do whil执行一次,并且输出执行一次后的结果。
for循环
for循环的语法结构
for(int n=1;n<3;n++){
反复循环的语句;
}
for循环的执行过程:
案例:求100以内自然数求和(for)。
public class Demo {
public static void main(String[] args) {
int sum = 0;
for (int i = 1;i<=100;i++){
sum += i;
}
System.out.println(sum);
}
}
结果:
比较while、do while、for:
- 其实这三个循环都没有本质上的差异,只是其表现形式不同
- for循环相对于其他两个的优点是简洁
- for循环括号里跟的表达式是什么含义:比如;for(int n=1;n<=3;n++),可以理解为:在[1,3]的范围内,步长为1,执行循环语句。
for循环要在已知循环次数的情况下使用,循环次数未知的情况下使用while和do while。
循环辅助语句
break:结束当前的switch语句或者循环结构;
continue:结束当前循环,"继续"下次循环;
在什么时候循环使用辅助语句?
break和continue,可以使程序的可读性更强,也就是说,在执行程序时,可以把先不符合条件的先排除,然后再去处理符合条件的情况。(一般都是循环主体)。一般一个循环有两个判断条件的时候,但是,如果执行语句,会复杂很多,那么这个程序的可读性就差。就如下:
For(……){
If(判断条件1){
If(判断条件2){
执行语句;假设有很多行语句。(循环主体代码)。
}else{
错误提示2;
}
}else{
错误提示1;
}
}
换一种思路:实现的结果不会改变,但是可读性就更强了,如下:
For(……){
If(!判断条件1){
错误提示1;
Continue;
}
If(!判断条件2){
错误提示2;
Continue;
}
执行语句。(循环主体语句)
}
break和continue的联系和区别:
在循环时只要遇到break和continue,他们后边的代码都不会执行了,只是,break直接结束了循环结构,而continue只是结束了当次循环,下一次循环还会”继续“,直到不满足循环条件时,循环结束。如图:
案例:判断输入的数是不是素数?
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数:");
int num = sc.nextInt();
int num2 = (int)Math.sqrt(num);//加上这句话有什么用?提高代码时效,及运行速度。
boolean flag = true;//是否为素数的标记。
for (int i =2;i<=num2;i++){
if (num>=2){
if (num%i==0){
flag=false;
break;
}
}
}
System.out.printf("%d %s 素数",num,flag?"是":"不是");
}
}
结果:
上一篇: Nginx