while循环
grammar:
while (bool expression){
// looping content
}
只要布尔表达式为true,循环就会一直执行下去(死循环)
也有需要循环一直执行的情况,比如服务器的请求响应监听等
但我们需要一个让表达式失效的方式结束循环
package com.zepei.struct;
public class WhileDemo01 {
public static void main(String[] args) {
// output 1-100
int i = 0;
while (i<100){
i++;
System.out.println(i);
}
}
}
package com.zepei.struct;
public class WhileDemo03 {
//calculate sum of 1 to 100
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i <= 100){
sum = sum + i;
i++;
}
System.out.println(sum);
}
}
do while循环
grammer:
do{
//code
}while(bool expression);
While:先判断后执行
do while:先执行后判断,总是保证循环体会被至少执行一次
package com.zepei.struct;
public class DoWhileDemo01 {
public static void main(String[] args) {
int i = 0;
int sum = 0;
do {
sum = sum + i;
i++;
}while (i<=100);
System.out.println(sum);
}
}
比较while与do-while
package com.zepei.struct;
public class DoWhileDemo02 {
public static void main(String[] args) {
int a = 0;
while(a<0){
System.out.println("while " + a);
a++;
}
System.out.println("=============");
do{
System.out.println("do while "+ a);
}while(a<0);
}
}
for循环
grammar:
for (initialize; bool expression; update){
//code
}
package com.zepei.struct;
public class ForDemo01 {
public static void main(String[] args) {
int a = 1;//initialize
while (a<=100){ // condition judgement
System.out.println(a); // loop body
a+=2; // iteration
}
System.out.println("while loop done");
//initialize//condition//iteration
for(int i = 1;i<=100;i++){
System.out.println(i);
}
System.out.println("for loop done");
}
}
for循环是最有效,最灵活的循环结构
Practice1: 计算0-100的奇数和与偶数和
package com.zepei.struct;
public class ForDemo02 {
public static void main(String[] args) {
// cal 0-100 sum of odd number and even number
int oddSum = 0;
int evenSum = 0;
for (int i = 0; i <= 100; i++){
if (i%2 !=0){
oddSum+=i;
}else{
evenSum+=i;
}
}
System.out.println("sum of odd num "+ oddSum);
System.out.println("sum of even num "+ evenSum);
}
}
Practice2:用while和for循环输出1-1000之间能被5整除的数,每行输出三个
// for loop
package com.zepei.struct;
public class ForDemo03 {
public static void main(String[] args) {
for(int i = 1;i<=1000;i++){
if(i%5==0){
System.out.print(i+"\t");
}
if (i%15 == 0){
System.out.println();
//System.out.println("\n");
}
}
}
}
println输出完会换行
print输出完不会换行
// while loop
public class ForDemo04 {
public static void main(String[] args) {
int i = 1;
while(i<=1000){
if (i%5==0){
System.out.print(i+"\t");
}
if (i%15==0){
System.out.println();
}
i++;
}
}
}
practice3:打印九九乘法表
package com.zepei.struct;
public class ForDemo05 {
public static void main(String[] args) {
for (int i = 1;i < 10;i++){
for(int j = i; j < 10; j++){
int product = i * j;
System.out.print(i+" * "+j+" = "+product+"\t");
}
System.out.println();
}
}
}
增强for循环
主要用于遍历数组和集合
grammer:
for (statement:expression){
//code
}
example
package com.zepei.struct;
public class ForDemo06 {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50}; // define an array
for (int i = 0;i<5;i++){
System.out.println(numbers[i]);
}
System.out.println("=============");
//traverse array members
for (int x:numbers){
// assign each value in the array to x
System.out.println(x);
}
}
}
break; continue
break
用于终止循环,强制退出循环,但是并不会终止程序
public class BreakDemo {
public static void main(String[] args) {
int i = 0;
while(i<100){
i++;
System.out.println(i);
if (i == 30){
break; // for loop stop when i=30
}
}
System.out.println("123"); // still output
}
}
continue
用于终止某次循环过程,跳过循环体尚未执行的语句,接着进行下一次是否执行循环的判定
quiz
打印一个三角形
package com.zepei.struct;
public class TestDemo01 {
public static void main(String[] args) {
//print a triangle in 5 lines
for (int i = 1; i <= 5; i++) {
for (int j = 5; j>=i; j--){
System.out.print(" ");
}
for (int j = 1; j <= i;j++){
System.out.print("+");
}
for (int j = 1;j<i;j++){
System.out.print("-");
}
System.out.println();
}
}
}
output:
+
++-
+++--
++++---
+++++----