java语法结构

Java的语法结构(流程控制)

      顺序结构

      分支结构

             单分支if  

                      if(值---Boolean){

                             {单行语句;}/  {多行语句;}

    

                      if(条件){

                             代码1

                       }else{

                            代码2

                       }

 

                   if(条件){

                         代码一

                }else if{

                         代码二

                }else{

                       代码三

               }

做一个小程序(学星期)

lib提供好的变量 Scanner  开发者给我们提供好的一个类文件 public final class Scanner

   Scanner y = new Scanner();  //创建引用类型的对象

想用Scanner需要三步

1.在类上面的第一行输入 import java.utli.Scanner

2.需要输入之前的Scanner input = new Scanner(System.in);

3.通过y. 来让它做事   int  = nextInt();    String = nextLine()   

import java.util.Scanner;
public class StudyEnglish{
  
    public static void main(String[] args){
        System.out.println("请输入一个数字,我告诉你对应星期的英文");
        Scanner input = new Scanner(System.in);  //对象
        int day = input.nextInt();   //可以读取我们输入的文字
                                     //input.nextLine();  读取字符串
        if(day == 1){
            System.out.println("Monday");
        }else if(day == 2){
            System.out.println("Tuesday");
        }else if(day == 3){
            System.out.println("wednesday");
        } else if(day == 4){
            System.out.println("Thusday");
        } }else if(day == 5){
            System.out.println("friday");
        } else if(day == 6){
            System.out.println("saturday");
        } else if(day == 7){
            System.out.println("sunday");
        }
        }else{
            System.out.println("小朋友你是不是傻,一周只有七天呀");
    }
}
}

如果明天不下雨就出去玩,出去玩,去哪玩?(嵌套)

if(明天下雨){

    在学校;
}else{
    出去玩;
    if(坐过山车){
        游乐场;
    }else{
        影院;
    }
}

 

小任务

 1.利用if语句实现一个判定给定月份对应的季节

写程序时需要注意如下问题:

1.增强可读性  起名字,缩进,注释

2.健壮性  判断时逻辑要严谨

3.实现功能的基础上 能不能优化(代码结构--简单 减少冗余 性能--  内存空间--)

import java.util.Scanner;
public class Season{
    public static void main(String[] args){
        //创建一个month的变量用来存储月份的值
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个月份,我帮您判断季节");
        int month = input.nextInt() ; //帮我们读取数字
        //通过month存储的值 进行季节的判断
        if(month>12 ||month <1){
            System.out.println("您输入的数据有误");
        }else if(month >= 3 && month <= 5){
            System.out.println("春天");
        }else if(month >= 6 && month <= 8){
            System.out.println("夏天");
        }else if(month >= 9 && month <= 11){
            System.out.println("秋天");
        }else{
            System.out.println("冬天");
        
        }
    }
}

2.用if语句实现一个 判断学生的对应区间

 

3.扩展:用if语句实现一个随机摇色子的游戏  Math.random()

              随机要一个骰子的点数

              玩家利用Scanner输入,猜大小

              利用if比较,猜对啦,猜错啦

import java.lang.Math;
import java.util.Scanner;
public class DiceGame{
    public static void main(String[] args){
        //随机摇骰子的过程 随机产生一个骰子的点数 1-6整数
        //Math -->Scanner(1.import 2,new 3,input.next();)
        double value = Math.random();
        int number =(int)(value*6+1);
        //value结果有范围 (0.0-1.0)
        //让玩家猜大小
        Scanner input = new Scanner(System.in);
        System.out.println("买大买小,买定离手");
        String choose = input.nextLine();//读取输入的数字
        //比较点数与猜测结果
        System.out.println("本次摇骰子的点数为:"+number);
         //点数123 小     点数456 大
         //(number <= 3 && choose.equals("小"))||(number >=4 && choose.equals("大")
         //==  equals();的区别    ==用于基本数据类型  另一个用于引用数据类型
        if((number <= 3 && choose.equals("小")||(number >=4 && choose.equals("大")){
            System.out.println("恭喜您,猜对啦");
        
        }else{
            System.out.println("对不起 猜错啦 麻烦付一下款");
        
        }
    }
}

多分支switch 

 switch(值){  //byte short int char enum  String

case 值1:

    代码1;

case值2:

    代码2;

default:

    代码

}

输入一个数字,写出对应星期的英文

import java.util.Scanner;
public class English{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请您输入一个数字,我帮您输出对应星期的英语");
        int day = input.nextInt();
        switch(day){
        case 1:
                System.out.println("Monday");
                break;
         case 2:
                System.out.println("tuesday");
                 break;
         case 3:
                System.out.println("wednesday");
                 break;
         case 4:
                System.out.println("thusday");
                 break;
         case 5:
                System.out.println("friday");
                 break;
         case 6:
                System.out.println("satusday");
                 break;
         case 7:
                System.out.println("sunday");
                 break;
        default:
                System.out.println("error");
         }
    }
}

if 好处在于可以写复杂的逻辑,缺点是执行比较慢

switch好处在于判断的过程效率更高,缺点在于只能固定值   

任务

1.利用switch语句实现一个判断学生成绩对应的区间

import java.util.Scanner;
public class Demo{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入学生的成绩,我来给你判断区间:");
        int score = input.nextInt();
        switch(score/10){
        case 0:
        case 1:
        case 2:
        case 3:
        case 4:
        case 5:
            System.out.println("不及格");
            break;
        case 6:
            System.out.println("及格");
            break;
        case 7:
            System.out.println("中等");
            break;
        case 8:
            System.out.println("良好");
            break;
        case 9:
            System.out.println("优秀");
            break;
        case 10:
            if(score == 100){
            System.out.println("满分");
            break;
            }
        default:
             System.out.println("不认识你");

2.利用Scanner输入一个值(代表星期几)

为小茗同学制定一个学习计划

135学习语文

246学习数学

7玩游戏

import java.util.Scanner;
public class DemoT{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请输入周几,我帮你制定计划");
        int day = input.nextInt();
        switch(day){
        case 1:
        case 3:
        case 5:
            System.out.println("语文");
            break;
        case 2:
        case 4:
        case 6:
            System.out.println("数学");
            break;
        case 7:
             System.out.println("玩游戏");
             break;
        default:
            System.out.println("小屁孩,想啥呢");
        }
    }
}


循环结构

循环:重复不停的做相同的事   从哪开始到哪结束?

循环的三个条件:初始值  终点判定条件  变化量

 for  (初始值;终点判定条件;变化量){     //允许将三个条件写在()内 

                 执行的代码

public class Run{
    public static void main(String[] args){
        for(int round = 1;round<=5;round++){
            System.out.println("这是第"+round+"圈啦");
        }

         //循环执行完毕 round==6;
        System.out.println("循环执行完毕:"+round);
        //变量的声明周期问题(变量 --栈--从声明楷书创建出来。用完立即回收)
    }
}
 


输出结果:
错误

改编1:

public class Run{
    public static void main(String[] args){
        int round = 1;
        for(;round<=5;round++){
            System.out.println("这是第"+round+"圈啦");
        }

         //循环执行完毕 round==6;
        System.out.println("循环执行完毕:"+round);
        //变量的声明周期问题(变量 --栈--从声明楷书创建出来。用完立即回收)
    }
}
 

输出结果:
这是第1圈啦
这是第2圈啦
这是第3圈啦
这是第4圈啦
这是第5圈啦
循环执行完毕:6

 改编二:

public class Run{
    public static void main(String[] args){
        int round = 1;
        for(;round<=5;){
            round++;
            System.out.println("这是第"+round+"圈啦");
        }

         //循环执行完毕 round==6;
        System.out.println("循环执行完毕:"+round);
        //变量的声明周期问题(变量 --栈--从声明楷书创建出来。用完立即回收)
    }
}

输出结果:
这是第2圈啦
这是第3圈啦
这是第4圈啦
这是第5圈啦
这是第6圈啦
循环执行完毕:6

改编三:

public class Run{
    public static void main(String[] args){
        int round = 1;
        for(;round<=5;){
            System.out.println("这是第"+round+"圈啦");
            round++;
        }

         //循环执行完毕 round==6;
        System.out.println("循环执行完毕:"+round);
        //变量的声明周期问题(变量 --栈--从声明楷书创建出来。用完立即回收)
    }
}


输出结果:
这是第1圈啦
这是第2圈啦
这是第3圈啦
这是第4圈啦
这是第5圈啦
循环执行完毕:6

改编四:

public class Run{
    public static void main(String[] args){
        int round = 1;
        for(;round<=5;){
            System.out.println("这是第"+round++ +"圈啦");
           
        }

         //循环执行完毕 round==6;
        System.out.println("循环执行完毕:"+round);
        //变量的声明周期问题(变量 --栈--从声明楷书创建出来。用完立即回收)
    }
}


输出结果:
这是第1圈啦
这是第2圈啦
这是第3圈啦
这是第4圈啦
这是第5圈啦
循环执行完毕:6

改编五:

public class Run{
    public static void main(String[] args){
        int round = 1;
        for(;round<=5;){
            System.out.println("这是第"+ ++round +"圈啦");
           
        }

         //循环执行完毕 round==6;
        System.out.println("循环执行完毕:"+round);
        //变量的声明周期问题(变量 --栈--从声明楷书创建出来。用完立即回收)
    }
}


输出结果为:
这是第2圈啦
这是第3圈啦
这是第4圈啦
这是第5圈啦
这是第6圈啦
循环执行完毕:6

改编六:

public class Run{
    public static void main(String[] args){
        int round = 1;
        for(;round<=5;round +=2){
            System.out.println("这是第"+ round +"圈啦");
           
        }

         //循环执行完毕 round==6;
        System.out.println("循环执行完毕:"+round);
        //变量的声明周期问题(变量 --栈--从声明楷书创建出来。用完立即回收)
    }
}

输出结果:
这是第1圈啦
这是第3圈啦
这是第5圈啦
循环执行完毕:7

需求:小学数学应用题

          操场上有一百多个人 让他们排队

         三人一组 多一个  四人一组多两个    五人一组多两个

        求解  操场上有多少人?

        解:设操场人数为x

         x%3==1   x%4 == 2  x%5 ==2 

        

public class Test{
    public static void main(String[] args){
        for(int x = 100 ; x < 200;x++){
            if(x%3==1 && x%4==2 && x%5==2){
                System.out.println("操场上的人数为:"+x);
            }
        }
    }
}


输出结果为:142

任务

甲乙丙丁四个人加工零件 加工零件的总数为370

如果甲加工的零件数多10个

如果乙加工 的零件数少20个

如果丙加工的零件数乘以二

如果丁加工的零件数除以二

则四个人加工的数量就相等啦

则四个人加工的零件分别是多少?

分析:设相等的那个值为x  

那么(x-10)+(x+20)+(x*2)+(x/2)=370

public class Test{
    public static void main(String[] args){
        for(int x = 45 ; x < 95;x++){
            if((x-10)+(x+20)+(x*2)+(x/2)==370){
                System.out.println("甲加工的零件数为:"+(x-10));
                System.out.println("乙加工的零件数为:"+(x+20));
                System.out.println("丙加工的零件数为:"+(x*2));
                System.out.println("丁加工的零件数为:"+(x/2));
            }
        }
    }
}

输出结果为:
甲加工的零件数为:70
乙加工的零件数为:100
丙加工的零件数为:160
丁加工的零件数为:40

2.鸡兔同笼

小鸡和小兔子总数为50只,脚的总数为160只

求小鸡和小兔各多少只?

public class Test{
    public static void main(String[] args){
        for(int x = 1 ; x < 50;x++){
            if(x*2 + (50-x)*4==160){
                System.out.println("鸡的个数为:"+x);
                System.out.println("兔子的个数为:"+(50-x));
               
            }
        }
    }
}


输出结果为:
鸡的个数为:20
兔子的个数为:30

3.。通过循环找寻三位数字的水仙花数

      153 --->1  5  3(然后各自立方)

                   1+125+27 = 153

public class Flower{
    public static void main(String[] args){
        for(int num = 100;num<1000;num++){
            int b = num/100;
            int s = num/10%10;
            int g = num%10;
            if(b*b*b + s*s*s +g*g*g == num){
                System.out.println(num+"是水仙花");
             }
        }
    }
}

输出结果为:
水仙花数为:153
水仙花数为:370
水仙花数为:371
水仙花数为:407

优化版本:

public class Flower{
    public static void main(String[] args){
        //double value = Math.pow(double a,double b);  //帮我们计算a的b次方
        for(int num = 100;num<1000;num++){
            int b = num/100;
            int s = num/10%10;
            int g = num%10;
            if(Math.pow(b,3)+Math.pow(s,3)+Math.pow(g,3) == num){
                System.out.println(num+"是水仙花");
             }
        }
    }
}

循环嵌套

需求:输出一行*

import java.util.Scanner;
public class Flower{
    public static void main(String[] args){
    //复用性
    System.out.println("尊敬的客户,您需要几个星星:");
    Scanner input = new Scanner(System.in);
    int count = input.nextInt();
    for(int i = 1;i<=count;i++){
        System.out.print("*");
    }
}
}

输出结果为:
尊敬的客户,您需要几个星星:
3
***

输出一列*   

import java.util.Scanner;
public class Flower{
    public static void main(String[] args){
    //复用性
    System.out.println("尊敬的客户,您需要几个星星:");
    Scanner input = new Scanner(System.in);
    int count = input.nextInt();
    for(int i = 1;i<=count;i++){
        System.out.println("*");
    }
}
}

输出结果为:
尊敬的客户,您需要几个星星:
3
*
*
*

输出四行*

import java.util.Scanner;
public class Flower{
    public static void main(String[] args){
    //复用性
    System.out.println("尊敬的客户,您需要几个星星:");
    Scanner input = new Scanner(System.in);
    int count = input.nextInt();
    for(int i = 1;i<=count;i++){
        for(int j = 1;j<=count;j++)
        System.out.print("*");
        }
         System.out.println("*");
    }
}
}

//i控制行数,j控制每行星星的个数

画出*

        **

        ***

        ****

public class Star{
    public static void main(Sting[] args){
        for(int i = 1;i<=4;i++){
            for(int j;j<=i;j++){
                System.out.print("*");
            }
            //换行
            System.out.println();
        }
    }
}

画出     *

           **

         ***

       ****

public class Star{
    public static void main(Sting[] args){
        for(int i = 1;i<=4;i++){   //控制行数
            //画占位符

            for(int j;j<=4-i;j++){
                System.out.print("$");
            }
            //画星星
             for(int j;j<=i;j++){
                System.out.print("*");
            }
            //换行
            System.out.println();
        }
    }
}

任务

1.*******    //画星星,换行

   ***#***    //画星星 画空格 画星星 换行

   **###**    //画星星 画空格 画星星 换行
   *#####*    //画星星 画空格 画星星 换行

public class HuaTu{
    public static void main(String[] args){
        for(int i;i<=4;i++){  //控制行数
            if(i=1){          //第一行的规则
                Syystem.out.print("*******");
            }else{            //后三行的规则
                for(j=1;j<=5-i ;j++);  //画星星
                   System.out.print("*");
                }
                for(j=1;j<=2*i-3 ;j++){  //画空格
                    System.out.print(" ");
                } 
            }
            System.out.println();    //换行
        }
    }
}

优化版本:提高了复用性

import java.util.Scanner;
public class HuaTu{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        System.out.println("请您输入行数:");
        int line = inpt.nextInt();
        for(int i;i<=line;i++){  //控制行数
            if(i=1){          //第一行的规则
                Syystem.out.print("*******");
            }else{            //后三行的规则
                for(j=1;j<=((line+1)-i ;j++);  //画星星
                   System.out.print("*");
                }
                for(j=1;j<=2*i-3 ;j++){  //画空格
                    System.out.print(" ");
                } 
            }
            System.out.println();    //换行
        }
    }
}

2.     1

       121

      12321

    1234321

分析:

空格占位

左边数字  改变--->利用变量   利用循环里的变量j来控制 j++

右边数字  改变--->利用变量  j--

public class JinZiTa{
    public static void main(String[] args){
        for(int i=1;i<=4;i++){  //控制行数
            for(int j;j<=4-i;j++){   //空格
                System.out.print("");
            }
             for(int j;j<=i;j++){//左边数字
                System.out.print("j");
            }
             for(int j;j>=1;j--){  //右边数字 
                System.out.print("j");
            }
            System.out.println();
        }
    }
}

3.九九乘法表

public class Test{
    public static void main(String[] args){
    //打印输出乘法表
    //控制行数
    for(i = 1;i <= 9;i++){
        //控制每一行表达式的个数
        for(int j = 1;j <= i;j++){
            System.out.println(j+"*"+i+"="+(j*i)+"\t"); 
        System.out.println();
    }
    }
}

4.找寻2-100之间的素数

   2是素数

   3是素数

  4不是素数

   5是素数

   6不是素数

public class SuShu{
    public static void main(String[] args){
    //2--100 之间的素数,每一个数字做一次输出
    for(int num=2;num<=100;num++){
        boolean x=false;
        //先把1和本身这两个数字刨除掉
        //把剩下的数字挨个找寻一遍  看一看还有没有整除的数字
        for (int i = 2; i < num/2;i++) {
            if(num %  i == 0) {
                System.out.println(num+"不是素数");
                x = true;
                break;   //当满足if条件的时候 终止循环
            }
        }
        if(x == false){
            System.out.println(num+"是素数");
    }
    }
    }
}

===================================================================================

转义字符

       \ 转义字符 ,将身后的一个字符意思发生转换

       转换特殊的符号,比如" ' \

        转换几个特殊的字母 比如 \n换行   \r回车  \t制表

两个重要的关键字

break

 

public class BreakTest{
    public static void main(String[] args){
        for(int i = 1;i <= 5;i++){
           
            System.out.println(i);
        }
    }
}

输出结果为:
1
2
3
4
5

执行完毕后,i的值是6
    
public class BreakTest{
    public static void main(String[] args){
        for(int i = 1;i <= 5;i++){
            if(i == 3){
                break;  //终断,终止 当满足if条件的时候终断循环
            }
            System.out.println(i);
        }
    }
}

输出结果为:
1
2
执行完毕后i的值为3
public class BreakTest{
    public static void main(String[] args){
        for(int i = 1;i <= 5;i++){
            for(int j = 1;j <= 5;j++){
                System.out.println("hello");
        }
    }
}

 //循环执行了多少次?25  hello输出了多少次?25
//循环执行完毕 i j 的值分别是几?  6 6 
public class BreakTest{
    public static void main(String[] args){
        for(int i = 1;i <= 5;i++){
            for(int j = 1;j <= 5;j++){
                if(j==3){
                    break;
                }
                System.out.println("hello");
        }
    }
}

 //循环执行了多少次?10  hello输出了多少次?10
//循环执行完毕 i j 的值分别是几?  6 3
public class BreakTest{
    public static void main(String[] args){
        int i = 1;
        int j = 1
        for(;i <= 5;i++){
            for(;j <= 5;j++){
                if(j==3){
                    break;
                }
                System.out.println("hello");
        }//i==1 j==3 执行两次输出  i==2 j==3无输出
    }
}

 //循环执行了多少次?2  hello输出了多少次?2
//循环执行完毕 i j 的值分别是几?  6 3

continue //终断本次循环,继续下一次循环

public class ContinueTest{
    public static void main(String[] args){
       
        for(i = 1;i <= 5;i++){
                if(i == 3){
                    continue;
                }
                System.out.println("hello");
        }
    }
}

 //执行过程中i的输出 1 2  4 5
//循环执行完毕 i 的值是几?  6 
public class BreakTest{
    public static void main(String[] args){
        for(int i = 1;i <= 5;i++){
            for(int j = 1;j <= 5;j++){
                if(j==3){
                   continue;
                }
                System.out.println("hello");
        }
    }
}

 //循环执行了多少次?20  hello输出了多少次?20
//循环执行完毕 i j 的值分别是几?  6 6

 

public class BreakTest{
    public static void main(String[] args){
        int i = 1;
        int j = 1
        for(;i <= 5;i++){
            for(;j <= 5;j++){
                if(j==3){
                    contine;
                }
                System.out.println("hello");
        }//i==1 j==6 执行四次输出  i==2 j==6无输出
    }
}

 //循环执行了多少次?4  hello输出了多少次?4
//循环执行完毕 i j 的值分别是几?  6 6
public class BreakTest{
    public static void main(String[] args){
        ok:for(int i = 1;i <= 5;i++){
           ko: for(int j = 1;j <= 5;j++){
                if(j==3){
                   break ok;
                }
                System.out.println("hello");
        }
    }
}

//输出几次?2 i 和 j 分别是几  1 3 
//break为什么终断的事内层循环? 就近原则 
//如何让break终断外层循环??  //给循环起名字 循环标记
public class BreakTest{
    public static void main(String[] args){
        ok:for(int i = 1;i <= 5;i++){
           ko: for(int j = 1;j <= 5;j++){
                if(j==3){
                  continue ok;
                }
                System.out.println("hello");
        }
    }
}

//输出几次?10 i 和 j 分别是几  6 3 
//break为什么终断的事内层循环? 就近原则 
//如何让break终断外层循环??  //给循环起名字 循环标记

while 

初始值;

while(终点判定条件){  //()内只允许写一个

        好多好多执行;

}

public class WhileTest{
    public static void main(String[] args){
        int i = 1;
        while(i <= 5){
            i++;
            System.out.println(i);
        }
    }
}




//执行输出什么: 1 2 3 4 5
//执行完毕后 i==6
//我的理解就是for的变体
//变量定义在循环外,生命周期长了
//变化量放在循环内(注意上下的顺序可能对执行产生影响)

do...while

do{

        好多好多执行;

          变化量;

}while(终点判定条件);

public class DoWhileTest{
    public static void main(String[] args){
        int i = 1;
        do{
            i++;
            System.out.println(i); //12345
        while(i <= 5);
        }
    }
}

whie是先判断后执行 条件不满足  不执行

do ..while先执行后判断  条件不满足 至少执行一次

 

小任务

1.有一个水池  已经盛满了120立方米的水

有一个进水管 每小时进水18立方米

有一个排水管  每小时排水30立方米

两个水管一起开 经过多少个小时 水池的水排放干净?

public class WhileTest{
    public static void main(String[] args){
        int sum = 120;  //表示水池中的水
        int hour = 0; // 记录经过的小时数
        while(sum > 0){
            sum +=18;
            sum -=30;
            hour++;
           
        }
         System.out.println(hour);
    }
}

画图

   *

  ***

 *****

*******

public class Test{
    public ststic void main(String[] args){
        int i = 1;
        while(i<=4){
            //画空格
            int j = 1;
            while(j<=4-i){
                System.out.println(" ");
                j++;
            }
            //画*
            int k = 1;
            while(k<=2*i-1){
                System.out.println("*");
                k++;
            }
            //换行
            Syatem.out.println();
            i++;
        }
    }
}

3.小茗同学从A点以7km/h的速度向B点出发

哥哥从B点以8km/h的速度向A点出发

A,B之间的距离是1000km 

求解小明和哥哥经过多少个小时才能相遇

public class WhileTest{
    public static void main(String[] args){
        int sum = 1000;  //表示总路程
        int hour = 0; // 记录经过的小时数
        while(sum > 0){
            sum -=18;
            sum -=7;
            hour++;
           
        }
         System.out.println(hour);
    }
}

4.有一个瓜农卖西瓜 一车西瓜总共1020个

每天卖掉总数的一半多两个

求解瓜农几天才能把所有的西瓜卖完

public class WhileTest{
    public static void main(String[] args){
        int sum = 1020;  //表示总路程
        int day = 0; // 记录经过的小时数
        while(sum > 0){
            sum = sum - 1020/2 - 2;
            
            day++;
           
        }
         System.out.println(day);
    }
}

 

写代码规范

1.可读性

         起名字 规范

2.健壮性

        程序严谨 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值