Java 基本语句介绍

329 阅读6分钟

Java 基本语句介绍

一 输入与输出

1. 输出:

​ 1) 语句结构

   System.out.println("hello word");

​ 2) 输出与转义字符的使用

 System.out.println("姓名\t  性别\t籍贯\n唐执兴\t男\t山东");

输出结果 :
    姓名	  性别	籍贯
    唐执兴	  男	     山东

2. 输入:

1)语法结构

public class input {
    public static void main(String [] args){
        // 输入
        Scanner myScanner = new Scanner(System.in);
       
        System.out.println("请输入名字");
        String name = myScanner.next();
        
        System.out.println("请输入年龄");
        int age = myScanner.nextInt();
        
        //char 类型写法略有不同
        char ch = myScanner.next().charAt(0);
        
        // 总结 :1. 先调用Scanner 类  :  import java.util.Scaaner;
        //       2.再写 Scanner myScanner = new Scanner(System.in);
        //       3.System 变量名 +  =  myScanner.next+ 数据类型 + ()
        //       4.注意根据所需变量的数据类型



    }
}

二 分支结构

一 if-else分支结构

1)单分支

//基本语法:
    if(条件表达式){
    执行代码块;  (不限一条语句)
}
// 条件表达式为 true 执行;  否则不执行

2)双分支

//基本语法:
    if(条件表达式){
    执行代码块1;  
}
     else{
         执行代码块2;
     }
    

3 ) 多分支

//基本语法:
      if(条件表达式1){
    执行代码块1;  
}
     else if(条件表达式2){
          执行代码块2;
     }

   ......
       
     else{
         执行代码块n;
     } 
// 也可以没有最后的else
    
    
//分支结构案例:
     马保国的信用分
        Scanner myScanner = new Scanner(System.in);
        System.out.print("请输入马保国的信用分:");
        int score =myScanner.nextInt();
        if (score >=0 && score <= 100) {
            if (score == 100) {
                System.out.println("信用极好");

            } else if (score > 80 && score < 100) {
                System.out.println("信用优秀");
            } else if (score >= 60 && score <= 80) {
                System.out.println("信用良好");
            } else {
                System.out.println("马保国被揍了");
            }

        }
        else {
            System.out.println("马保国成神了");
        }

4)嵌套分支

 ~~~java
 //基本介绍: 在一个分支结构中又完整的嵌套了另外一个完整的分支结构,里面的分支结构称为内层分支,外面的叫做外层分支。 最好不要超过三层。
     
 基本语法:
     if(){
     if (){
         // if else ......
     }
     else {
         // if else ......
     }
     
 }
 ~~~
//嵌套分支案例:
     Scanner myScanner = new Scanner(System.in);
        System.out.print("请输入你的比赛成绩:");
        int score =myScanner.nextInt();
        System.out.print("请输入你性别:");
        char gender =myScanner.next().charAt(0);
        if(score > 8){
            System.out.println("恭喜你进入决赛!");
            if(gender == '男'){
                System.out.println("你被分到了男子组!");
            }
            else{
                System.out.println("你被分到了女子组!");
            }
        }
        else{
            System.out.println("sorry你没有进入决赛!");
        }


二 switch 分支结构

1)switch 分支

// switch 语句结构
         switch(表达式)
        {
            case 常量1:
                语句一;
                break;
                ......
                ......
             case 常量n;
                 语句n;
         
            default:
                default语句块
                        break;
        }
  // *** 细节讨论
        //1.表达式数据类型 应和 case 后的常量类型一样 或者是 可以相互自动转换成相互比较的类型 例如int short char || String -> char
        //2.switch()表达式里面的返回值必须是(byte short int char String enum)
        //3.case 子句里面的值必须是常量
        //4.default 可以没有
// switch分支案例:
        Scanner myScanner = new Scanner(System.in);
        System.out.print("请输入月份:-");
        int month = myScanner.nextInt();
        switch(month){
            case 3:
            case 4:
            case 5:
                System.out.print("是春天");
                break;
            case 6:
            case 7:
            case 8:
                System.out.print("是夏天");
                break;
            case 9:
            case 10:
            case 11:
                System.out.print("是秋天");
                break;
            case 12:
            case 1:
            case 2:
                System.out.print("是冬天");
                break;

            default:
                System.out.print("是爱你的每一天");
        }



三 循环结构

1. for循环

// 语句结构:
        for(循环变量初始化;循环条件;循环变量迭代)
        {
            代码块;
        }
//执行顺序:循环变量初始化->循环条件->代码块->循环变量迭代->:循环变量初始化->循环条件(当不符合循环条件退出循环)-> ......
            
            // for 细节
        //  1.循环条件是返回一个布尔值的表达式
        //2.for循环的变量的初始化;变量迭代可以写到其他位置  ** 但是;不可以省略
        //        int i = 1;
        //        for (;i < 11;){
        //
        //            System.out.println("酷盖" + i);
        //            i++;
        //
        //        }
        //        // 当上面为假时进行下下面的操作
        //        System.out.println( i);  // 11

        // **  死循环
        //       for (;;){
        //        System.out.println("奶盖");
        //        }
        //3.循环标量初始化可以有多条初始化语句,但要求类型一样,并且中间要用逗号隔开,
        //      变量迭代也可以有多条迭代语句,中间用逗号隔开
         
// for循环控制习题
        // 1.打印1-100之间所有是9的倍数的整数,统计个数和总和
        int i =1;
        int count = 0;
        int sum = 0;
        for (i = 1;i < 101;i++)
        {
            if (i % 9 ==0)
            {

                count++;
                sum += i;
                System.out.println("i = " + i + " count = "+ count + " sum = " + sum);
                //最后i的值为恰好符合循环条件的值

            }

        }

        System.out.println("i = " + i + " count = "+ count + " sum = " + sum); 
               // count sum值不变 i变(i的值为恰好不符合循环条件的值)

2. while循环

// 语句结构
         循环变量初始化;
           while (循环条件){
                  循环语句;
                循环变量迭代;
           }
// 1.while循环和for循环四要素相同,只是位置不同。
// 2.执行循序也相同
//while循环案例:
       输出40-200的偶数
        int i = 40;
        while (i < 201){
            if (i % 2 == 0)
            {
                System.out.println("偶数i= " + i);
            }
            i++;
        }

3. do while 循环

//  语句结构:
         循坏变量初始化;
        do{
            循环语句;
            循环变量迭代;


        }while(循环条件);  
//   1.执行顺序不同,先判断在执行   ** 至少执行一次
//   2.do while循环和for循环四要素相同,只是位置不同。


//1. 1 - 200 能被5整除不能被3整除
        int i = 1;
        int count = 0;
        do{
            if (i % 5 ==0 && i % 3 != 0)
            {
                count++;
                System.out.println("i = " + i + " count = "+ count);

            }
            i++;
        }while(i < 201);

 // 2.还钱
        char answer;
        do{

            System.out.println("旋风三连踢");
            System.out.println("松鼠还钱");
            System.out.println("是否还钱 Y/N");

            answer = myScanner.next().charAt(0);
            System.out.println("他的回答是" + answer);



        }while(answer != 'y');
        System.out.println("松鼠还钱了");
// 与别的循环想比,do while 先执行(在该程序中先揍再问有钱吗没有继续揍)

4. 多重循环控制 (重点)

//基本介绍:
    1.将一个循环放在另外一个循环体内,就形成了嵌套循环。其中for while do while 都可以当作外层循环和内层循环。 (一般使用两层,否则可读性不高。)
    2.嵌套循环就是把内层循环当作外层循环的循环体,当内层循环条件为false 在执行下一次外层循环    
 基本语法:
        for (1. int i = 0; 2. i < 4; 3.i++){
            for (4.int j = 0; 5.j < 3; 6.j++){
               7. System.out.println("j = " + j);
            }
        }
      // **  执行顺序 1-> 2(判断是否符合外循环条件,不符合结束循环)->4->5(判断是否符合内循环条件,不符合跳出内循环执行->3->1->2同上。若符合内循环条件)->7->6->4->5(直到内循环条件不符合跳入外循环)
 //嵌套循环习题
      //练习1   三个班,每班五人,输入每班成绩,输出总成绩,及格人数
        int i = 1;
        int j = 1;
        int count = 0;
        double totalSum = 0;
        for (j = 1;j < 4 ; j++) {  // 三个班循环三次
            double sum = 0;
            for (i = 1; i < 6; ++i) {    每班五人 循环输入五次
                System.out.println("请输入第"+ j+"个班级第" + i + "个人的成绩");  // 输入每班五个人成绩
                int score =  myScanner.nextInt();
                if (score > 6)
                   ++count;
                sum += i;

            }
            totalSum += sum;
            System.out.println("第"+j+"个班的总成绩 =" + sum + " 平均成绩 = " + sum / 5.0);

        }
        System.out.println(j+"个班的总成绩 = "+totalSum);
        System.out.println("及格的人数 = " + count);


        // 练习2. 99乘法表

        int i = 1;
        int j = 1;
        int result = 0;
        for (i = 1;i < 10;++i) {  // 打印九次
            for (j = 1; j <= i; ++j) { //每一行公式的个数恰好与行数相等
                result = i * j;
                System.out.print(i + "*" + j + " = " + result + "\t");
            } System.out.println(); // 换行


        }
// 经典例题
// 金字塔 与 空心金字塔
//化繁为简  分析:
//              个数                    空格
//    *      第一层  1                     4
//   ***     第二层  3                     3
//  *****    第三层  5   2 * 层数 -1        2    5-层数
// *******   第四层  7                     1
//*********  第五层  9                     0

        int i = 1; //i 代表层数
        int j = 1;
        System.out.println("请输入金字塔有多少层:");
        int n = myScanner.nextInt();


         for (i = 1;i<=n;i++ ) {
             for (int k = 1;k <= n - i;k++)     // 每层""个数  分析见上图
             {
                 System.out.print(" ");
             }
             for (j = 1; j <= 2 * i - 1; j++) {  // 每层*个数
                 System.out.print("*");
             }
             System.out.println();

         }


        // 空心金字塔
        // 化繁为简  个数
//    *      第一层  1
//   * *     第二层  3
//  *   *    第三层  5
// *     *   第四层  7
//*********  第五层  9

        int i = 1; //i 代表层数
        int j = 1;
        System.out.println("请输入金字塔有多少层:");
        int n = myScanner.nextInt();


        for (i = 1;i<=n;i++ ) {
            for (int k = 1;k <= n - i;k++)
            {
                System.out.print(" ");
            }
            for (j = 1; j <= 2 * i - 1; j++) {

                if (j == 1||j == 2*i-1 || i == n) {   //  ** 只输出每行第一个和最后一个 还有最后一行
                    System.out.print("*");
                }
                else {
                    System.out.print(" ");  // 其他情况输出空格
                }
            }
            System.out.println();

        }