循环结构
while 循环
do...while循环
for循环
01 while循环
while(布尔表达式){
//执行内容
}
public class whileDemo {
public static void main(String[] args) {
int i=0;
int sum=0;
System.out.println("Calculating the 1+2+3+...+100=?");
while(i<=100){
sum+=i;
i++;
}
System.out.println("1+2+3+...+100="+sum);
}
}
- 避免死循环
- 有些情况需要循环一直执行,比如服务器的请求响应监听
02do...while循环
do{
//执行内容
}while(布尔表达式);
do...while循环和while基本相同,但是有一点重要区别:
- while是先判断布尔表达式是否成立,然后决定是否执行,而do...while是先执行{...}然后再判断布尔表达式是否成立。也就是说,while循环条件如果不成立就不能进入循环,而do...while先进入循环把里面的代码执行一次再判断。
下面我写个代码测试一下是否如此:
public class whileDemo {
public static void main(String[] args) {
int i=0;
String s="No";
System.out.println("Does the coding will be executive?");
do{
s="Yes";
}while(i>=100);
System.out.println(s);
}
}
显然i不可能大于100,但是s仍然被赋值为Yes。执行结果如下:
03for循环
下面几个练习题:
- 练习一:
public class forDemo {
public static void main(String[] args) {
int i = 0;
int sum_ji = 0;
int sum_ou = 0;
for (i = 1; i <= 100; i++) {//快捷生成for循环:输入100.for回车即可自动生成for(int i=1;i<=100;i++)
if (i % 2 == 0) {
sum_ji += i;
} else
sum_ou += i;
}
System.out.println("Odd sum is " + sum_ji);
System.out.println("Even number sum is " + sum_ou);
}
}
-
练习二:
public class forDemo { public static void main(String[] args) { System.out.println("The numbers of 1-1000 can be divide by 5 are:"); for(int i=1;i<=1000;i++){ if(i%5==0){ System.out.print(i+" "); if(i%3==0) // System.out.print("\n");//这里也发现了带不带ln的区别,带换行,不带不换行 System.out.println(); } } } }
篇幅关系,只截取这么多了
- 练习三:
public class forDemo {
public static void main(String[] args) {
for(int i=1;i<=9;i++){
for(int j=1;j<=9;j++){
if(i<=j)
{
System.out.println(i+"*"+j+"="+i*j);
if(j==9)
System.out.println();//if语句的执行内容只有一行,可以不用{}
}
}
}
}
}
篇幅关系,只截取这么多,乘法表的所有内容都可以输出,但是排版不对,暂时还没想到解决办法
- 幸运的是练习三我想到了解决办法:
public class forDemo {
public static void main(String[] args) {
for(int i=1;i<=9;i++){//快捷生成for循环:输入9.for回车即可自动生成for(int i=1;i<=9;i++)
for(int j=1;j<=i;j++) {
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}
04增强for循环
public class for_proDemo {
public static void main(String[] args) {
int[] num={1,2,3,4,5};
for (int i = 0; i < 5; i++) {//5.for
System.out.println(num[i]);
}
System.out.println("--------------------");
for(int x:num){//这种形式的for循环自动遍历一维数组num的所有索引
System.out.println(x);
}
}
}
05break&continue
public class breakDemo {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
System.out.println(i);
if(i==3)
break;
}
System.out.println("fada is pretty handsome.");
}
}
由这个例子可见,满足条件时break语句跳出循环,注意此处只是跳出来它所在的上一层循环,并不是程序终止运行,你看 You are pretty handsome.
public class continueDemo {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if(i%2==0)
continue;
System.out.print(i+"\t");//"\t"是Tab
}
}
06goto关键字
public class LabelDemo {
public static void main(String[] args) {
//求100-150之间所有的质数
//质数是指大于1的自然数中,除了1和它本身意外不再有其他因数的自然数
int count=0;
label:for (int i = 100; i < 150; i++) {
for(int j=2;j<i;j++){
if(i%j==0)
continue label;
}
System.out.print(i+" ");
}
}
}