While循环
顺序结构只能执行一次,而循环结构可以执行多次或无数次。
While循环
格式
while(布尔表达式){
当布尔表达式成立时所要执行的命令
}
注意
若布尔表达式一直成立,则循环一直进行。而大多数情况下我们需要循环停止,因此括号内的布尔表达式需要让循环在合适的时候停止。
例
输出1~100:
public class WhileDemo01 {
public static void main(String[] args) {
int a = 0;
while (a<100){
a++;
System.out.println(a);
}
}
}
计算1+2+3+......+100:
public class WhileDemo02 {
public static void main(String[] args) {
int a = 0;
int sum = 0;
while (a<=100){
sum = sum +a;
a++;
System.out.println(sum);
}
}
}
do while循环
while循环先判断布尔表达式是否成立,再决定是否执行命令,而do while循环是先执行一遍命令,再去判断布尔表达式是否成立以及是否继续执行。即do while 循环至少会执行一次。
例
int a = 0;
while(a<0){
System.out.println(a);
a++
}
此时由于a=0而不小于零,所以布尔表达式不成立,所以后面的命令并不会被执行;
int a = 0;
do{
System.out.println(a)
}while(a<0);
此时运行程序会输出一个0,即先输出了a,再让a=a+1,接着才判断布尔表达式是否成立。
for循环(重要)
所有的循环都可以用while或者do while实现,但java中的for循环可以使一些复杂的循环变得更加简单。for循环是支持迭代的一种通用循环,是最有效、最灵活的循环结构。
格式
for(定义一个或几个变量;限制条件;循环内容){
执行的命令
}
定义变量:定义需要的数字变量或字符;
限制条件:使循环在合适的次数后停止;
循环内容:在限制条件成立的情况下和“执行的命令”同样进行循环的语句。
例
1.分别计算0到100之间奇数和偶数的和:
public class ForDemo01 {
public static void main(String[] args) {
int oddsum = 0;
int evensum = 0;
for (int a=0;a<=100;a++ ){
if (a%2!=0){
oddsum+=a;
}else{
evensum+=a;
}
}
System.out.println(oddsum);
System.out.println(evensum);
}
}
主要是运用取余运算判断奇数和偶数。
2.用while循环和for循环输出0到5000内能被5整除的数,且每行输出三个。
public class ForDemo03 {
public static void main(String[] args) {
for (int i = 0; i <= 5000; i++) {
if (i%5==0){
System.out.print(i+"\t");
}
if (i%(5*3)==0){
System.out.println();
}
}
}
}
特别注意:System.out.println( )输出一个内容后就会分行;
System.out.print( )持续在一行内输出所有内容。
本例题要求每三个数一行,则在输出三个能被5整除的数之后,即输出一个能被15整除的数之后分行,此处分行采用直接使用System.out.println( )输出一个空白行,也可以使用System.out.print( \n ).
3.输出九九乘法表:(while和for循环嵌套)
public class SwitchDemo03 {
public static void main(String[] args) {
int a = 9;
while(a>0){
for (int b = 1;b<=a;b++){
System.out.print(b+"*"+a+"="+a*b+"\t");
}a--;
System.out.println();
}
}
}
或者:(while和for循环嵌套)
public class SwitchDemo02 {
public static void main(String[] args) {
int a = 1;
while(a<10){
for (int b = 1;b<=a;b++){
System.out.print(a+"*"+b+"="+a*b+"\t");
}a++;
System.out.println();
}
}
}
或者:(for循环和for循环嵌套)
public class ForDemo02 {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(i+"*"+j+"="+i*j+"\t");
}
System.out.println();
}
}
}
当然,打印此乘法表也有一些笨方法,比如直接输出,但推荐遇到此类存在较多循环的问题时多使用循环结构,可以大大提高效率。