循环结构
while 循环
while( 布尔表达式 ) { //循环内容 }
只要布尔表达式为 true,循环就会一直执行下去。循环条件一直为true就会造成无限循环【死循环】,少部分情况需要循环一直执行,比如服务器的请求响应监听等。我们正常的业务编程中应该尽量避免死循环。
用while循环实现1+2+...+100
public class Hello {
public static void main(String[] args){
int i=0;
int sum=0;
while(i <= 100){
sum=sum+i;
i++;
}
System.out.println(sum);//5050
}
}
do…while 循环
对于while语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和while循环相似,不同的是,do…while循环至少会执行一次。
do {
//代码语句
}while(布尔表达式);
public class Hello {
public static void main(String[] args){
int i=0;
int sum=0;
do {
sum=sum+i;
i++;
} while(i <= 100);
System.out.println(sum);//5050
}
}
for循环
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
for循环执行的次数是在执行前就确定的。语法格式如下:
for(初始化; 布尔表达式; 更新) { //代码语句 }
//死循环
for(;;){}
//idea快捷键 100.for
public static void main(String[] args) {
int a = 1; //初始化
while(a<=100){ //条件判断
System.out.println(a); //循环体
a+=2; //更新
}
System.out.println("while循环结束!");
for(int i = 1;i<=100;i++){ //初始化//条件判断 //更新 更新不止i++,也可以i=i+2等
System.out.println(i); //循环体
}
System.out.println("while循环结束!");
}
计算0到100的奇数和与偶数和
public static void main(String[] args){
int oddsum=0;//奇数和
int evensum=0;//偶数和
for (int i=0;i<=100;i++){
if (i%2!=0){
oddsum=oddsum+i;
}else{
evensum=evensum+i;
}
}
System.out.println("奇数的和为:"+oddsum);//2500
System.out.println("偶数的和为:"+evensum);//2550
}
输出1-90能被5整除的数,并且每行输出3个
public class Hello {
public static void main(String[] args) {
for (int i = 1; i <= 90; i++) {
if (i % 5 == 0) {
System.out.print(i + "\t");
}
if (i % (5 * 3) == 0) {//每行输出3个5的倍数的数字,每行第3个必定是15的倍数
System.out.println();
//System.out.print("\n")
}
}
}
}
打印九九乘法表
第一步:我们先打印第一行
public static void main(String[] args) {
for (int i=1;i<=9;i++){
System.out.print(1+"*"+i+"="+(1*i)+"\t");
}
第二步:完整的九九乘法表有9行9列,刚才的for循环只打印了其中1行,还需要把打印其他行,故再用一个for循环把第一步的语句循环执行将另外8行也打印出来
即写一个外循环,内循环每循环一遍换行一次。
public static void main(String[] args) {
for(int j=1;j<=9;j++){
for (int i=1;i<=9;i++){
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
}
第三步:九九乘法表只需要保留成一个下三角矩阵,所以要去除每行中重复的项。观察可知,第n行有n列。行是不变的,一共9行。
列是变量,而内循环是控制列数的,所以要改变内循环的条件判断。i<=9使得每行有9列,可知i<=n使得每行有n列。
因为第几行是外循环的j控制的,所以结论变成第j行有j列,即i<=j;
public static void main(String[] args) {
for(int j=1;j<=9;j++){
for (int i=1;i<=j;i++){
System.out.print(j+"*"+i+"="+(j*i)+"\t");
}
System.out.println();
}
}
第四步:观察九九乘法表a*b=ab的排版是:列数在前,行数在后。
所以System.out.print(j+"*"+i+"="+(j*i)+"\t");交换j+"*"+i中ij的位置
public static void main(String[] args) {
for(int j=1;j<=9;j++){
for (int i=1;i<=j;i++){
System.out.print(i+"*"+j+"="+(j*i)+"\t");
}
System.out.println();
}
}
增强for循环
Java5 引入了一种主要用于数组或集合的增强型 for 循环
for(声明语句 : 表达式) { //代码句子 }
实例
public static void main(String[] args) {
int[] numbers={10,20,30,40,50}; //定义了一个数组
//常规
for (int i=0;i<5;i++){
System.out.print(numbers[i]+"\t");
}
System.out.println();
System.out.println("==================================");
//增强型
//它把numbers中的数组每项都遍历出来赋值给了x
for (int x:numbers){
System.out.print(x+"\t");
}
}
break&continue
continue请假,break离职,return换个星球生活。
break关键字
break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。
public static void main(String[] args) {
int i=0;
while (i<10){
i++;
System.out.print(i+"\t");
if (i==7){
break;
}
}
}
continue关键字
continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。
在 for 循环中,continue 语句使程序立即跳转到更新语句。
在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。
public static void main(String[] args) {
int i=0;
while (i<30){
i++;
if (i%10==0){
System.out.println();
continue;
}
System.out.print(i+"\t");
}
}