流程控制语句
循环结构
特点,根据条件,反复执行
- while
- do-while
- for
- 嵌套
- break语句
- continue语句
while循环
格式
while(循环条件<boolean>){
循环执行的语句;
}
public class ReduceAdd {
public static void main(String[] args) {
//1+...+10
int n = 1;
int sum = 0;
while (n <= 10) {
sum += n;
n++;
}
System.out.println("sum:" + sum);
}
}
public class LoopOutPrint {
public static void main(String[] args) {
// 分两行循环输出26英文字母
char ch = 'a';
int count = 1;//控制什么时候换行
while (ch <= 'z') {
System.out.print(ch + " ");
if (count % 13 == 0) {
System.out.println();
}
ch++;
count++;
}
}
}
do-while循环
语法格式
do{
语句;
}while(循环条件);
注意:
- 至少执行一次循环
- 循环条件后的分号不能丢失
public class DoAddReduce {
public static void main(String[] args) {
//1+...+10
int n = 1;
int sum = 0;
do {
sum = sum + n;
n++;
} while (n <= 10);
System.out.println("Sum:" + sum);
}
}
猜数字,1-10
import java.util.Scanner;
public class GuessNumber {
public static void main(String[] args) {
//
int right_res = (int) (Math.random() * 10 + 1);//random->[0,1)
int guess;
System.out.println("猜1-10的数字游戏");
do {
System.out.println("输入猜测数字:");
Scanner sc = new Scanner(System.in);
guess = sc.nextInt();
if (guess > right_res) {
System.out.println("猜大了");
} else if (guess < right_res) {
System.out.println("猜小了");
}
} while (guess != right_res);
System.out.println("您猜中了(" + right_res + ")");
}
}
for循环
语法格式:
// 表达式1-初始条件
// 表达式2-循环条件
// 表达式3-初始条件的变化
for(表达式1;表达式2;表达式3){
循环的语句;
}
public class ForReduceAdd {
public static void main(String[] args) {
//1+...+10
int sum = 0;
for (int i = 1; i <= 10; i++) {
System.out.println(i);
sum += i;
}
System.out.println("Sum:" + sum);
}
}
变量定义在方法内部称之为局部变量,上述代码中的局部变量为
sum,i,而且sum和i两个局部变量的作用范围不同,i作用范围
中{局部变量的作用范围仅仅在所定义他的大括号中}
for循环的注意事项:
for循环有三个条件表达式,第一个初始化的条件表达式可以放在循环的外部定义
public class ForReduceAdd {
public static void main(String[] args) {
//1+...+10
int sum = 0;
int i = 1;
for (; i <= 10; i++) {
System.out.println(i);
sum += i;
}
System.out.println("Sum:" + sum);
}
}
第二个表达式是限制循环结束的,如果省略了,需要在循环体内部通过if条件+break结束循环
if(i==10)break;
第三个条件也可以去掉,但是需要在循环体内部执行条件的表化
循环嵌套
for嵌套
public class Factorial {
public static void main(String[] args) {
//阶乘 1!+2!+3!+...+10!
int s = 1, sum = 0;
for (int i = 1; i <= 10 ; i++) {
for (int j = 1; j <= i; j++) {
/*
i = 1 1*1
i = 2 1*1*2
... ...
* */
s = s * j;
}
//外层for循环对阶乘的结果进行累加
sum += s;
}
System.out.println("1-10阶乘的累加为:" + sum);
}
}
while循环嵌套
public class xx10x10 {
public static void main(String[] args) {
//
int m = 1,n;
System.out.println("输出10x10的*");
while (m <= 10) {
n = 1;//初始化n
while (n <= 10) {
//输出*
System.out.print("*");
n++;
}
//输出换行
System.out.println();
m++;
}
}
}
输出直角三角形
public class RightTriangle {
public static void main(String[] args) {
//直角三角形
int n = 1, m;
System.out.println("输出*直角三角形");
while (n <= 4) {
m = 1;
while (m <= n) {
System.out.print("*");
m++;
}
System.out.println();
n++;
}
}
}
输出等腰三角形
public class IsoscelesTriangle {
public static void main(String[] args) {
//等腰三角形
int x = 1, y, z;
while (x <= 4) {
y = 5 - x;
//控制输出的空格个数4,3,2,1
while (y > 0) {
System.out.print(" ");
y--;
}
z = x;
//控制输出"* "的个数 1,2,3,4
while (z > 0) {
System.out.print("* ");
z--;
}
//控制换行的次数
System.out.println();
x++;
}
}
}
break语句
跳出当前循环体{当前},在嵌套循环中,break只能跳出当前循环{一层},执行
break后,当前循环体中break一下的代码将不再执行
public class PrintK {
public static void main(String[] args) {
//
int k = 0;
for (int i = 1; i < 5; i++) {
for (int j = 1; j < 5; j++) {
k = i + j;
if (j == 3) break;
}
}
System.out.println("k=" + k);
}
}
//输出k=7
continue语句
只能用在循环体内部,continue语句执行后会结束当前循环执行,再次开始循环
public class SumOdd {
public static void main(String[] args) {
//1,3,5,7,9的和
int sum = 0;
for (int i = 1; i <= 9; i++) {
if (i % 2 == 0) continue;
sum += i;
}
System.out.println("Sum=" + sum);
}
}