选择控制注意事项
主要分为三种选择控制:
Boolean类型选择,分为true or false ;
在执行Boolean变量的时候,可以直接使用
if(event)
语句; //代替if(event=true)
// 语句;
简化例子`
if(event){
tuition=5000;
System.out.println("the tuition is" + tuition);
}
else{
tuition=15000;
System.out.println("the tuition is" + tuition);
}
//简化Boolean和重复语句
if (event) {
tuition =5000;
}
else {
tuition=15000;
}
System.out.println("the tuition is" + tuition);
Tips
- 在java中else的匹配永远是和最近的一个if匹配的。
- 比较两个浮点数的时候,由于小数点的位数比较大,因此可以通过|x-y|<a,a是一个阈值。
- !非
- &&与
- ||或
- ^异或
- 德摩根率:!(a&&b)!a||!b; !(a||b)!a&&!b;
例子:判定闰年(%4%100来做),计算利率,彩票(用math.random()来做)等。过于简单不佳赘述。
Switch语句
为了防止过多的if ,else if多层嵌套if语句,可以使用switch一步到位。
switch(表达式){
case n1 : do 1;//case n1的n1的值必须是常量表达式,代表switch传来的参数的可能匹配的值
break;//注意break实在运行时终止循环,而且case连接后面的执行 语句是用 : 来连接的。
case n2 : do 2;
break;
...
default : do default ;
}
上面若匹配到了case值而没有相应的break跳出循环,则会从上到下依次匹配,直到匹配到break位置
条件表达式
条件表达式很简单一个例子就能明白(Java唯一的三元运算组)
下面是两个等价代码
if (x>0)
y=1;
else
y=-1;
简化为,这样可以
y=(x>0)?1:-1
循环控制
主要分while do-while for
for 循环在直到循环次数的时候最好用,
while在控制变量一直会根据循环体语句变换的时候最好用。
do-while没什么大用,就是后侧循环,在特定的地点才需要使用。
注意点:
从某种意义上说,如果想要写一个非常复杂的循环语句,可以使用pad图或者N-S图来描述。
- java输入和输出的重定向
把保存的数据用空格隔开,存储在input.txt里面然后用以下命令java Sentine1Value < input.txt;
break 和 continue
这两个语句都要谨慎使用,防止出现代码难以读懂或者代码
break 表示跳出循环,结束循环。
continue 表示结束当前的迭代,跳出一次循环。在while和 do-while语句中continue会直接结束当前循环并计算判定条件,而在for循环里面,continue只会会结束当前执行语句,并执行下面的语句。
利用选择和循环设计判断回文串
package xdd;
import java.util.*;
public class distinguishPalindrome{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("enter a string :");
String s=input.nextLine();
int low=0;
int high=s.length()-1;
boolean isPalindrome =true;
while(low<high) {
if(s.charAt(low)!=s.charAt(high)) {
isPalindrome=false;
break;
}
low++;
high--;
}
if(isPalindrome)
System.out.print("it is a palindrome");
else
System.out.print("it is not a palindrome");
}
}
结果如图
例子二:判断素数以及计算100以内的素数个数
方法Function
定义方法的语句:
修饰符modifier 返回值类型return value 方法名(参数列表parameter list){
方法语句//;
}
two types of methods:
1,value-returning method
2,void method
define a parameter in method head,its name is formal parameter .when u delivered a value to it,it became actual parameter or argument
How to invoke(call) a method?
How to use void method?
调用method的时候,需要提供实参,而且必须与方法签名中所对应的形参次序相同,称为参数顺序匹配。
变量的作用域
method里面的变量称为局部变量。从声明的地方开始一直到这一部分的代码块结束为止,都是它的作用域。
*记住要自顶向下逐步求精!(divide and conquer,stepwise refinement)
avoid ambiguous invocation