顺序结构
分支机构
循环结构
第二节、分支结构if分支:
1.if后面的大括号可以省略(后面只有一条语句的时候)
2.if后面的语句有多条的时候,一定要加大括号
3.else同理
建议:不管分支条件后面有几条语句,一定要加大括号,把多条语句变为一个整体
- if(){}
- if(){}else{}
- if(){}else if(){}else if(){} else{}
分支结构主要控制代码是否执行。
案例:输入你的java成绩,如果在90以上,输出 秀儿! 在 70--90之间输出,有点秀儿! 60-70 之间输出 一般般!60以下输出 垃圾!
switch case
//与if分支的区别:
1.if的条件是一个范围
2.switch的条件是一个固定值
switch:用于固定值的分支判断,后面可以跟char,byte,short,int,String
不能跟 float,double,long
break可以省略,省略之后,代码会贯穿执行
switch(参数){
case value1:
代码块1;
break;
case value2:
代码块2;
break;
case value3:
代码块3;
break;
case value4:
代码块4;
break;
default:
代码块:
break;
}
首先用switch后边括号中的参数跟下边的value依次比较,如果第一个不满足就比较第二个,如果满足执行后边对应的代码块。(如果前边的条件都不满足)到 default为止。
案例:输入年和月,输出该年的该月有多少天?
//输入年和月,输出该年的该月有多少天?
public static void main(String[] args) {
System.out.println("请输入年");
Scanner sc1 = new Scanner(System.in);
int year = sc1.nextInt();
System.out.println("请输入月");
int month = sc1.nextInt();
//逻辑
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("该月有31天");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("该月有30天");
break;
case 2:
//闰年的条件 能被400整除 或者 能被4整除并且不能被100整除
if (year%400==0 || year%4==0 && year%100!=0){
System.out.println("该月有29天");
}else{
System.out.println("该月有28天");
}
break;
default:
System.out.println("输入数据不合法");
break;
}
第三节、循环结构//创建java输入工具类对象
Scanner scanner = new Scanner(System.in);
String name = scanner.next(); //next():接受输入的字符串内容
int age = scanner.nextInt(); //nextInt():可以将用户输入的字符串转为整型
double tall = scanner.nextDouble(); //nextDouble():可以将输入的字符串转为小数
boolean hasFriend = scannner.nextBoolean(); //nextBoolean():将输入的内容转为布尔值
循环分类: 固定次数循环,不定次数循环
1.while 循环可以用于固定次数循环,也可用于不定次数循环,先进行条件判断,再做循环处理
循环四要素: ①初始化变量,②循环条件,③循环体,④循环变量的自增。
注意避免:
while(true) 如果这样,循环永远出不来。
while(false) 循环进不去。
案例1:
代码实现:
三要素:条件,执行的代码,变量自增
2. do while循环可以用于固定次数循环,也可用于不定次数循环,先做一次处理,再进行条件判断
while 先判断再执行
do while 先执行一次再判断
do while至少会执行一次。
3.for循环一般用于固定次数循环
for( 初始化变量①;判断条件②;步进表达式④){
循环体③;
}
① 初始化变量
②判断条件
③循环体
④循环变量的自增
①-》②-》③-》④-》②-》③-》④-》②-》③-》④。。。-》②如果条件不满足直接结束循环。
案例:99乘法表
//99乘法表
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
System.out.println("---------------------------------");
for (int i = 9; i >=1; i--) {
for (int j = 1; j <=i; j++) {
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
System.out.println("---------------------------------");
for (int i = 1; i < 10; i++) {
for (int j = 9; j >=i; j--) {
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
System.out.println("---------------------------------");
for (int i = 9; i >=1; i--) {
for (int j = 9; j >= i; j--) {
System.out.print(j+"*"+i+"="+i*j+" ");
}
System.out.println();
}
输出时,这些符号有特殊含义:
4.循环控制关键字 break和continuebreak:遇到break循环终止执行,与循环结合使用,代码会继续向下执行循环后面的内容
如果有多重循环,break只退出离他最近的循环
return:与方法结合使用,当遇到return关键字的时候,方法执行结束,return后面的代码不再执行
continue:遇到continue会跳过continue后面的代码不执行,换行进入下次循环
不定次数循环:
//吃包子
Scanner scanner = new Scanner(System.in);
//定义变量,统计包子的个数
int count = 0;
while(true){
System.out.println("吃一个包子");
count++;
//询问
System.out.println("请问你吃饱了吗(Y/N)");
//回答
String answer = scanner.next();
//作为循环终止的条件
if(answer.equals("Y")){ //字符串判断不能用==
System.out.println("下次再来!");
break;
}
}
System.out.println("一共吃了"+count+"个包子");
循环:
1.循环录入五次成绩,求和 求平均值 求最大值 求最小值。
//循环录入数据,求和 求平均值 求最大值 求最小值。
double sum = 0;
double max = 0;
double min = 0;
for (int i = 1; i <= 5; i++) {
System.out.println("请输入第"+i+"次成绩");
Scanner sc = new Scanner(System.in);
double score = sc.nextDouble();
sum+=score;
//假设:默认第一个输入的数既是最大值 也是最小值 比武招亲打擂台
if(i==1){
max = score;
min = score;
}
if(max < score){
max = score;
}
if(min > score){
min = score;
}
}
System.out.println("和是"+sum+",平均值是"+sum/5+",最大值:"+max+";最小值:"+min);
有一个等式 12()34()56()78()9 = 59,括号中只能放加和减,如果要使等式成立,那么每个括号中应该放哪些符号。
有一个等式 12(a*)34(b*)56(c*)78(d*)9 = 59,括号中只能放加和减,如果要使等式成立,那么每个括号中应该放哪些符号。
for(int a=-1;a<2;a+=2){
for(int b=-1;b<2;b+=2){
for(int c=-1;c<2;c+=2){
for(int d=-1;d<2;d+=2){
if(12+a*34+b*56+c*78+d*9==59){
System.out.println(a+","+b+","+c+","+d);
}
}
}
}
}
计算sum=1-1/2+1/3-1/4+1/5-……+1/99的值。
//计算sum=1/1-1/2+1/3-1/4+1/5-……+1/99-1/100的值。
//sum = 1 - (1/2+...+1/100) + (1/3+...+1/99);
//方法一
//方法二
//方法三
double a = 0;
double b = -1;
for (double i = 1; i <=100; i++) {
b = b*(-1);
a += b*(1/i);
}
System.out.println(a);
Math.round() //取整 double--->int
Math.round()方法会将浮点值四舍五入到最接近的long值。然后我们可以将其转换为int类型



