程序结构
顺序结构:
此结构是程序中最简单的的一种结构,在程序执行过程中,它是按照顺序从主函数开始一行接一行的执行,因此语句流程很重要。
一般入门级的程序都是顺序结构。
选择结构:
选择结构分为if 和switch两种语句结构
if语句结构:
分为三种格式:
1.if(布尔表达式){语句体}
这种结构相对简单,先判断()中的语句其布尔值,如果为真,则执行语句体,如果为假,则直接跳过if语句。
在if结构中{}可以省略不写,但是if的语句体中只执行第一条语句,其余则不执行,因此,习惯上还是不要省略{}。例如如下代码:
class IFdemo{
public static void main(String[] args){
int a=2000;
if((a%4==0&&a%100!=0)||(a%400==0)){
System.out.println("是闰年");
System.out.println("is true");
}
System.out.println("不是闰年");
}
}
执行结果:
class IFdemo{
public static void main(String[] args){
int a=1000;
if((a%4==0&&a%100!=0)||(a%400==0))
System.out.println("是闰年");
System.out.println("is true");
System.out.println("不是闰年");
}
}
执行结果:
2.if(布尔表达式){语句体1}
else{语句体2}
这种方式比较常用,判断出两种情况进行执行,如果布尔表达式为真,则执行语句体1,否则执行语句体2,因此,这种情况下必须执行if语句,不可能直接跳出不执行,
三元运算可以可以转换为此if语句,但是在转换过程中注意条件判断的冗余。
3.if(布尔表达式){语句体1}
else if(布尔表达式){语句体2}
…
else if (布尔表达式){语句体n}
else{语句体n+1}
从第一个布尔表达式开始进行判断,在前n个布尔表达式中从前往后进行查询,如果哪个布尔表达式的值为true,则执行相应的语句体,否则执行else,值得注意的是,在写布尔表达式时,要注重选择的逻辑性。
/*
输入
数据:输入一个0到100的数
调整数据位置,(个位十位换位置);
指令:与随机数进行比对(三种情况)
输出
*/
import java.util.Scanner;
class demo5{
public static void main(String[] args){
double caipiao1=Math.random();
int caipiao=(int)(caipiao1*1000);
System.out.println(caipiao);
int cp=caipiao;
int cp1=caipiao/100;
caipiao=caipiao%100;
int cp2=caipiao/10;
caipiao=caipiao%10;
int cp3=caipiao;
System.out.println("enter a num:");
Scanner scanner=new Scanner(System.in);
int a=scanner.nextInt();
int a1=a;
int b=a/100;
a=a%100;
int c=a/10;
a=a/10;
int d=a;
if(a1==cp)
{
System.out.println("100000");
}
else if((b*100+d*10+c==cp)||(c*100+b*10+d==cp)||(c*100+d*10+b==cp)||(d*100+b*10+c==cp)||(d*100+c*10+b==cp))
{
System.out.println("30000");
}
else if((b==cp1&&c!=cp2&&d!=cp3)||(b!=cp1&&c==cp2&&d!=cp3)||(b!=cp1&&c!=cp2&&d==cp3))
{
System.out.println("10000");
}
else
{
System.out.println("0");
}
}
}
switch语句
格式:
switch(表达式){
case 值1:语句体1;break;
case 值2:语句体2;break;
…
default:
语句体n+1
break;
}
此语句从第一行开始执行,表达式在这里是一个变量,在jdk1.7之前,变量的类型可以是int short char byte ,这是因为这些类型可以隐形的向int类型转换,从而进行选择,比如(long,float,double)这些不可以隐形的转化为int,所以如果想使用,必须进行强制类型转换,在jdk1.7版本之后,整形,枚举类型,boolean,字符串都可以使用,但是jdk1.7版本之后并没有新的指令处理string,而是通过调用switch中的string.hashCode,将string转换为int进行判断选择。
在case后边的值只能是常量,不可以是变量,语句体后的break可以省略,如果省略,则不跳出switch语句,直到执行结束,例如:
class demo3{
public static void main(String[] args){
int x=3;
int y=4;
char n='+';
switch(n){
case '+':{
System.out.println(x+y);
}
case '-':{
System.out.println(x-y);
}
case '*':{
System.out.println(x*y);
}
case '/':{
System.out.println(x/y);
}
default:{
System.out.println(0);
}
}
}
}
最后的default也可以省略,也可以放在任一位置。不要使case后的常量一致或重叠
switch语句相对简单,在这里就不列举了。