循环结构*
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.println(1+"*"+i+"="+(1*i));
}
}
第二步:我们把固定的1再用一个循环包起来,一列的乘法已经搞定再考虑其他列怎么实现,故再用for循环实现其他列
public static void main(String[] args) {
for (int j=1;j<=9;j++){
for (int i=1;i<=9;i++){
System.out.println(j+"*"+i+"="+(j*i));
}
}
}
??.
??.
??.
先不论排版,这里发现出现了重复,现在再考虑去掉重复项,而乘法表第几行就有几列,去掉重复项即去掉每行中多余的列数
for (int i=1;i<=9;i++) i<=9决定了有9行,内循环的i能控制的是行数,外循环的j控制列数
j在外循环故列数是固定了的,需要做的是确保列数为几就在第几行,如j=1,结果就要在第一行;j=2,输出的结果要在第二行...
故在内循环中令i<=j
public static void main(String[] args) {
for (int j=1;j<=9;j++){
for (int i=1;i<=j;i++){
System.out.println(j+"*"+i+"="+(j*i));
}
}
}
再来考虑排版的问题,做出9列
列数j+1就换行
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");
}
}