在Java中用一对大括号阔起来的若干Java语句为"块"
"块"确定了我们所使用的变量的作用域,一个块可以嵌套在另一个块中(嵌套的两个块不能用同名的变量)
条件语句if:
if(A>B){
A=100;
}
if/else语句,else部分是可选的。else子句与最邻近的if构成一组。
循环:
当条件为true时,while循环执行一条语句(也可以是一个语句块):
while(condition){
}
我们可以增加一个计数器,并在循环体中更新当前累积数量,直到总值超过目标值为止。
代码片段
Scanner in = new Scanner(System.in);
System.out.println("How much money do you need to retire?");
double mubiao = in.nextDouble();
System.out.println("How much money will you contribute every year?");
double cukuan = in.nextDouble();
System.out.println("Interest rate in %:");
double interestRate = in.nextDouble();
double mybox = 0;
int years = 0;
while(balance < goal) {
balance += payment;
double interest = balance * interestRate/100;
balance +=interest;
years++;
}
System.out.println("You can retire in" + years);
}
while循环语句首先检查循环条件,因此循环语句中的代码可能不被执行。如果希望循环体至少执行一次,则应该将检测条件放在最后,使用do/while循环语句可以实现这一功能。
代码片段
do {
mybox += cukuan;
double interest = mybox * interestRate/100;
mybox +=interest;
years++;
System.out.printf("After year %d,your balance is %,.2f%n",years,mybox);
System.out.println("Ready to retire?(Y/N)");
input = in.next();
}
while(input.equals("N"));
确定循环(for循环)
常见的for循环形式:
for(int i=0;i<10;i++){
......
}
当在for循环第一个部分声明了一个变量之后,这个变量的作用域就为for循环的整体(如果在for循环的内部定义了一个变量,这个变量就不能在循环体之外使用,如果希望在循环体之外使用循环计数器的最后结果,就要确保这个变量在循环体外声明)。
多重选择Switch语句
Switch(){
case 1:
......
break;
case 2:
......
break;
case 3:
......
break;
(default):
}
switch语句将从与选项值相匹配的case标签处开始执行,直到遇到break语句,或者switch语句的结束处,如果没有相应的case标签,有default子句,就执行这个子句(有可能触发多个case分支,如果在case语句中没有break语句,那么会接着执行下一个case语句,这种情况可能会引发错误。)可以在调用switch语句时添加JVM中的-Xlint:fallthrough,此时会在没有break语句时,及时报错。
case类型为char、byte、short、int的常量表达式、枚举常量,Java SE 7开始添加字符串字面量。
中断控制流程语句
利用break跳出循环,其中break分为带标签和不带标签:
带标签:用于跳出多重嵌套的循环语句,中断了所有迭代,并回到了标签,但不重新进入迭代(标签必须放在希望跳出的最外层循环之前,并且紧跟一个冒号)
不带标签:只跳出了内循环,回到外部迭代。
代码片段
Scanner in = new Scanner(System.in);
int n = 0;
read_data:
for(int i = 0;i<=10;i++) {
System.out.println("Enter your num");
n=in.nextInt();
if(n<5) {
break read_data;
}
n += n;
}
System.out.println(n);
continue语句与break语句一样,将中断正常的控制流程,continue语句将控制转移到最内层循环的首部。
如果continue语句带有标签,将跳到与标签匹配的循环首部。