首页 > 其他分享 >3-控制流程

3-控制流程

时间:2023-09-17 19:48:16浏览次数:31  
标签:控制 String int 流程 System println public out

java数据类型

一、进制及其转换 (了解)

  • 软件
把事先编排好的数据跟用户交互。
  • 计算机的数据的单位
数据:文本、音频、视频、图片

数据最小的单位是  byte字节
1024byte = 1kb
1024k = 1m
1024m = 1g
1024g = 1t
...

  • 二进制 10101100
  • 八进制 123457
  • 十进制 257989
  • 十六进制
十六进制超过9就开始用字母表示
10----A
11----B
12----C
13----D
14----E
15----F
  • 十进制转换二进制

  • 二进制转换十进制

  • 打开计算器

二、关键字和标识符 (理解)

  • 关键字
系统赋予一些单词特定含义,这些单词就是关键字!
例如:
class 类的定义
public 修饰类,类名和源文件名必须一致

特点:全小写,且在editplus工具中都是蓝色字体!

  • 保留字
保留字是系统已经占用,但是不让程序员使用!
goto  const 背会
  • 标识符
取名字的部分就叫标识符
例如:类名

标识符命名官方的规定!
1.标识符是字母数字下划线_美元符$号组成!
2.数字不能开头
3.关键字和保留字不能作为标识符

国内类名命名规范:每一个单词的首字母大写
以下选项中哪些可以作为标识符(A E)
A.Class B.public C.goto  D.const  E.HelloWorld  

三、进制和E (掌握)

//定义类
public class Demo01{
  //定义主函数
  public static void main(String[] args){
  //输出语句
   //二进制 前缀0b
   System.out.println(0b10101010);
   //八进制 前缀0
   System.out.println(07777);
   //十进制
   System.out.println(7777);
   //十六进制 前缀0x
   System.out.println(0x4e2d);

   //E 
   System.out.println(3.14E2);
   System.out.println(314E-2);
  }

}

四、变量和常量 (掌握)

  • 字面值(数值)
他今年 10岁了   ---------  10    --- 整数
他体重 78.6kg   ---------  78.6  --- 小数
他叫 “小明”     ---------  “小明” --- 字符串
  • 变量语法
标准语法:数据类型  变量名 = 字面值;

java中 
整数用int表示
小数用double表示
字符串用String表示

变量名:标识符,自己取。   第一个单词小写,第二个单词开始首字母大写!
  • 变量理解
理解:一个变量是一个容器,它存储一个数据!
在java中只要有 = 号,代码一定是从右边往左边读!

把10这个字面值数据赋值给age,age是int类型的容器。
int  age = 10;
把20这个字面值数据赋值给age,age本来的10被覆盖掉。
     age = 20;
     

public class Demo01{
	public static void main(String[] args){
		//他今年 10岁了   ---------  10    --- 整数
		//他体重 78.6kg   ---------  78.6  --- 小数
		//他叫 “小明”     ---------  “小明” --- 字符串
		int age = 10;
        double weight = 78.6;
		String name = "小明";

		System.out.println("年龄:"+age);
		System.out.println("体重:"+weight);
		System.out.println("名字:"+name);
	}
}
  • 常量
常量是一旦赋值,就是最终值!

用final修饰变量就是常量!
public class Demo02{
	public static void main(String[] args){
		//a是常量
		//常量有两种表示:第一种,变量用final修饰  !
		//                第二种,直接表示的字面值都是常量!
	  final int A = 10;   
	  System.out.println(A);
	  System.out.println(10);
	}
}
练习题:
他今年25岁,他体重57.6kg,他叫“小明”!
他今年28岁,他体重77.5kg,他叫“小红”!

提取这里面的数据,定义变量,并输出!
输出的效果:

名字:小明
年龄:25
体重:57.6
-----------------------------
名字:小红
年龄:28
体重:77.5

五、八大基本数据介绍 (掌握)

  • 整数类型
数据类型           占用字节数          有符号表示整数的范围不同         大概范围
byte                  1                    -2^7 ~ 2^7-1             -128~127
short                 2                   -2^15 ~ 2^15-1             正负3万
int                   4                   -2^31 ~ 2^31-1             正负21亿
long                  8                   -2^63 ~ 2^63-1     

系统默认int类型,任何的整数,都先默认存储到int容器
  • 小数类型/浮点数
数据类型         占用的字节数        精确度        表示的小数位
float                4             单精度             7
double               8             双精度             15
系统默认double类型,任何的小数,都先默认存储到double容器
  • boolean类型/布尔类型/逻辑类型
boolean 表示是最基本的逻辑

字面值:true   对、真 、成立
       false  错、假、不成立
       
boolean  a1 = true;
         a1 = false;
  • char类型/字符类型

    char  字符类型  占用2个字节  
    
    char两种表示形式
    第一种:表示字符
    String 字符串类型  “abc”
    char   字符类型    ‘a’
    
    第二种:无符号表示整数  范围 0 ~ 2^16-1    大概 65535
    char  a1 = 97;
    
    
    
注意:整个java语言只有两种类型,一种基本数据类型,一种是引用数据类型!
基本数据类型:byte short int long float double boolean char
引用数据类型:String

六、八种基本数据类型的详解(掌握)

//定义类
public class Demo01{
 //定义主函数
 public static void main(String[] args){
   //整数类型
   //byte short int long
   byte a1 = 20;
   System.out.println("a1:"+a1);
   //字面值后面加L/l,直接存储到long容器
   //建议:只要用long类型就加L一定不错!
   long a2 = 2200000000L;
   System.out.println("a2:"+a2);

   //小数类型
   //float double
   float a3 = 3f;
   System.out.println("a3:"+a3);
   //字面值后面加F/f,直接存储到float容器
   //建议:只要用float类型就加f一定不错!
   float a4 = 3.14f;
   System.out.println("a4:"+a4);

   double a5 = 3.14;
   System.out.println("a5:"+a5);

   //精确度问题
   float  a6 = 3.123456789123456789f;
   double a7 = 3.123456789123456789d;
   System.out.println("a6:"+a6);
   System.out.println("a7:"+a7);
   //所有的小数表示都是近似值!
   System.out.println(2.0-1.1);

   //boolean类型
   boolean flag = true;
           flag = false;
   System.out.println(flag);

   //char 类型
   //第一种:表示字符 单引号,单个!
   char c1 = 'a';
   System.out.println("c1:"+c1);

   //第二种:无符号表示整数 0~65535
   char c2 = 97;
   System.out.println("c2:"+c2);


 }
}

七、变量五种定义方式 (掌握)

package com.bjpowernode.javastudy.day04.demo01;
public class Demo01 {
    public static void main(String[] args) {
        //1.声明变量 直接赋值
        int a1 = 10;
        System.out.println("a1:"+a1);
        //2.先声明,后赋值
        //变量必须给初始值
        int a2;
        a2 = 20;
        System.out.println("a2:"+a2);
        //3.声明多个变量,直接赋值
        int a3 = 30,a4 = 40;
        System.out.println("a3:"+a3);
        System.out.println("a4:"+a4);
        //4.先声明多个变量,后赋值
        int a5,a6;
        a5 = 50;
        a6 = 60;
        System.out.println("a5:"+a5);
        System.out.println("a6:"+a6);
        //5.混合
        int a7 = 70,a8,a9 = 90;
        a8 = 80;
        System.out.println("a7:"+a7);
        System.out.println("a8:"+a8);
        System.out.println("a9:"+a9);
    }
}

八、基本数据类型的类型转换 (掌握)

基本数据类型:byte short int long float double boolean char

能参与类型转换的只有7种:byte short int long float double char

容量正序排行:byte -> short(char) -> int -> long -> float -> double
  • 自动类型转换
把小容器的数据转换到大容器(小转大)

  • 强制类型转换
把大容器的数据转换到小容器(大转小)
只要是强制类型转换,就必须加强制类型转换符!

  • char和short之间转换问题

  • 常量和变量的转换问题
在强制类型转换中,如果是常量转换,不需要强制类型转换符,如果是变量才需要强制类型转换符!
  • byte short char 三者只要运算,先提升为int运算,结果也是int类型

  • 相同类型运行结果是相同类型,不同类型运算,结果是大的类型

package com.bjpowernode.javastudy.day04.demo02;

public class Demo01 {
    public static void main(String[] args) {
        //自动类型转换=============================
        //a1在等号左边表示变量a1,是容器的名字
        //a1在等号右边表示a1容器的数据
        //10放入a1这个容器
        int a1 = 10;
        //从a1这个容器取出10这个数据,存储到a2这个容器
        double a2 = a1;
        System.out.println("a2:" + a2);
        //强制类型转换=============================
        int a3 = 20;
        byte a4 = (byte) a3;
        System.out.println("a4:" + a4);

        //强制类型转换的两个问题
        //问题1:溢出
        int a5 = 200;
        byte a6 = (byte) a5;
        System.out.println("a6:" + a6);

        //问题2:精度缺失
        double b1 = 3.9999;
        int b2 = (int) b1;
        System.out.println("b2:" + b2);

        //char和short之间转换问题
        char c1 = 'a';
        short c2 = (short) c1;
        System.out.println("c2:" + c2);

        short c3 = 97;
        char c4 = (char) c3;
        System.out.println("c4:" + c4);

       //常量和变量的转换问题
        //常量转换不需要强制类型转换符
        byte d1 = 20;
        final int e1 = 10;
        byte d2 = e1;
        //变量转换需要强制类型转换符
        //  int e2 = 10;
        //  byte d3 = e2;

      //byte short char 三者只要运算,先提升为int运算,结果也是int类型
        byte m1 = 10;
        char m2 = 20;
        int sum1 = m1 + m2;
        System.out.println(sum1);

    //相同类型运行结果是相同类型,不同类型运算,结果是大的类型
        int m3 = 10;
        int m4 = 4;
        int m5 = m3/m4;
        System.out.println("m5:"+m5);


        int m6 = 10;
        double m7 = 20;
        double m8 = m6+m7;
        System.out.println("m8:"+m8);

        //课堂练习:下面输出什么?-------溢出
        int i1 = 2100000000;
        int i2 = 2100000000;
        int rs = i1 + i2;
        System.out.println(rs);


    }
}

一、算术运算符

+ - * / %  ++ --
package com.bjpowernode.javastudy.day04.demo03;

public class Demo01 {
    public static void main(String[] args) {
        //+ - * / %
        //+有三种使用方式
        //1.计算
        int a = 10,b = 20;
        System.out.println(a+b);
        //2.正负的正
        int a2 = +5;
        System.out.println(a2);
        //3.连接符
        //字符串 和 其他类型相加,结果还是字符串类型
        String s1 = "年龄:";
        int age = 18;
        String s2 = s1 + age;
        System.out.println(s2);
        System.out.println(s1+age);
        System.out.println("年龄:"+18);

        //练习:定义两个变量,x=10,y=20 连接出10+20=30
        int x = 10,y = 20;
        System.out.println(x+"+"+y+"="+(x+y));

        System.out.println("--------------------输出语句到底能输出什么?------------");
        //问题:输出语句到底能输出什么?
        //回答:输出的只要是符合某种数据类型的字面值就可以!
        System.out.println("HelloWorld");
        System.out.println(10);
        System.out.println(3.14);
        int a5 = 10;
        System.out.println(a5);
        System.out.println("abc"+"xyz");
        System.out.println('z');
        System.out.println(true);
        System.out.println("中国");
        System.out.println("-------------------------------------------------");
        //2. - 减号
        //2.1 计算
        System.out.println(6-7);
        //2.2 负
        System.out.println(-7);
        //3. * 乘以
        System.out.println(6*5);
        //4.  / 除以
        System.out.println(10/3);
        System.out.println(10.0/3);
        //System.out.println(5/0);
        //Infinity
        //System.out.println(5/0.0);

        //5. % 求余数
        System.out.println(7%5);
        System.out.println(7.2%5.7);
        System.out.println(8%8);
        System.out.println(3%8);
        System.out.println(0%8);

    }
}

  • ++和--
package com.bjpowernode.javastudy.day04.demo03;

public class Demo02 {
    public static void main(String[] args) {
        //++在变量之前或者之后,这个变量本身都自增1
        int a1 = 5;
        a1++;
        System.out.println("a1:"+a1);

        int b1 = 5;
        ++b1;
        System.out.println("b1:"+b1);
    }
}

package com.bjpowernode.javastudy.day04.demo03;

public class Demo03 {
    public static void main(String[] args) {
        //总结规律:++在变量之前,变量先自增1,然后其他操作
        //        ++在变量之后,先其他操作,再自增1
        //        小括号不影响!

        int a1 = 5;
        //运算过程:a1先赋值给b1,然后a1再自增1
        int b1 = (a1++);
        System.out.println("a1:"+a1);//6
        System.out.println("b1:"+b1);//5

        System.out.println("-------------------------------");
        int a2 = 5;
        //运算过程:a2先自增1,然后赋值给b2
        int b2 = ++a2;
        System.out.println("a2:"+a2);//6
        System.out.println("b2:"+b2);//6

    }
}

package com.bjpowernode.javastudy.day04.demo03;

public class Demo04 {
    public static void main(String[] args) {
        int a = 5;
        System.out.println(++a);//6
        System.out.println(a--);//6
        System.out.println(a);//5
    }
}

package com.bjpowernode.javastudy.day04.demo03;

public class Demo05 {
    public static void main(String[] args) {
        int a = 5;
        //a++变为6,但是把a原来的值5赋值a,所以a还是5
        a=a++;
        System.out.println(a);
    }
}

package com.bjpowernode.javastudy.day04.demo03;

public class Demo07 {
    public static void main(String[] args) {
        int m = 2,n = 5;
        /*
        * 到底是m++ +n 还是m+ ++n?
        * 如果是m++ +n  那么  m=3  n=5  x=7
        * 如果是m+ ++n  那么  m=2  n=6  x=8
        * */
        int x = m+++n;
        System.out.println("m:"+m);
        System.out.println("n:"+n);
        System.out.println("x:"+x);

    }
}

package com.bjpowernode.javastudy.day04.demo03;

public class Demo06 {
    public static void main(String[] args) {
        int m = 2,n = 5;
        /*
        *  int x = m++ +n               x=7   m=3  n=5
        *  int x = - ++m - n--          x=-2  m=4  n=4
        *  int x = -m + --m;            x=-3  m=3  n=4
        *
        * */
        int x = m+++n-++m-n---m+--m;
        System.out.println("m:"+m);//3
        System.out.println("n:"+n);//4
        System.out.println("x:"+x);//-3
    }
}

二、赋值运算符 (掌握)

=  += -= *= /= %=

package com.bjpowernode.javastudy.day04.demo04;

public class Demo01 {
    public static void main(String[] args) {
        // =  += -= *= /= %=
        int a = 5;
        int b = a = 10;
        System.out.println(b);
        System.out.println(b);

        //+=
        int a1 = 5;
        a1+=2;
        System.out.println("a1:"+a1);//7
        System.out.println(a1*=3);//21
        System.out.println(a1-=6);//15
        System.out.println(a1/=4);//3
        System.out.println(a1%=1);//0

        System.out.println("------------注意的问题----------------");
        //问题:a+=b;可以理解为这么运算 a=a+b;
        byte m1 = 5;
        m1+=2;
        System.out.println(m1);

        byte m2 = 5;
        m2=(byte)(m2+2);
        System.out.println("-------------------------------------");
        //问题:+= 和 =+
        int x = 5,y = 5;
        x+=2;
        y=+2;
        System.out.println(x);//7
        System.out.println(y);//2
        System.out.println("-------------------------------------");
        //问题:+=还赋值
        int x1 = 5;
        int y1 = x1+=2;
        System.out.println(x1);//7
        System.out.println(y1);//7

    }
}

三、比较运算符 (掌握)

> >= < <= == !=

比较运算符的结果都是boolean类型,要么是true,要么是false
package com.bjpowernode.javastudy.day04.demo04;

public class Demo02 {
    public static void main(String[] args) {
        //> >= < <= == !=
        int a = 5,b = 7;
        boolean flag = a>b;
        System.out.println(flag);
        System.out.println(a<b);
        System.out.println(++a>=--b);//a = 6   b = 6
        System.out.println(++a<=--b);//a = 7   b = 5
        System.out.println(1==1);
        System.out.println(true==true);
        System.out.println(1!=1);

        System.out.println(3.14 == 10);
        System.out.println(0 == 0.00000);
        System.out.println(3 == 3.4);
    }
}

四、逻辑运算符 (掌握)

至少两个比较运算连接用逻辑运算符,所以逻辑运算符最终的结果一定还是boolean类型的,true ? false
|  &  ^   !
package com.bjpowernode.javastudy.day04.demo05;

public class Demo01 {
    public static void main(String[] args) {
        // | 或者  -- 更偏向成立
        // 左边一个条件,右边一个条件,只要有一个条件成立,结果就成立!true
        // 除非两个条件都不成立结果不成立!false
        System.out.println(false | true);//true
        System.out.println(1 == 1 | 1 > 7);//true

        //& 与,并且 -- 更偏向不成立
        //左边一个条件,右边一个条件,只要有一个条件不成立,结果就不成立!false
        //除非两个条件都成立结果成立!true
        System.out.println(true & false);//false
        System.out.println(1 == 1 & 1 > 7);//false

        //^异或
        //左边一个条件,右边一个条件,只要两个条件不同(异),结果就成立!true
        //两个条件相同,结果是成立,true!
        //一个true一个false一定是true ,两个true,或者两个false一定是false
        System.out.println(true ^ false);//true
        System.out.println(false ^ true);//true
        System.out.println(true ^ true);//false
        System.out.println(false ^ false);//false
        System.out.println(1 > 7 ^ 3 < 6);//true


        //! 非 取反
        System.out.println(!true);
        System.out.println(!!!!!!!!(5>3));

    }
}

  • 短路或|| 短路与&&

    package com.bjpowernode.javastudy.day04.demo05;
    
    public class Demo02 {
        public static void main(String[] args) {
            // 短路或||
            //  短路或|| 和 或| 最终结果是一样的,只是运算过程不同!
            //  或|,无论第一个条件是否能判断最终的结果,第二个条件都必须执行!
            // 短路或|| ,如果第一个条件已经能判断最终的结果,第二个条件就不执行!
    
            //  或|
            int a = 5;
            System.out.println(1==1 | a++>5);//true
            System.out.println("a最终:"+a);
    
            //  短路或||
            int b = 5;
            System.out.println(1==1 || b++>5);//true
            System.out.println("b最终:"+b);
    
    
            int c = 5;
            System.out.println(1==2 || c++>5);//false
            System.out.println("c最终:"+c);
    
            System.out.println("--------------------------------------");
            //短路与&&
            //  短路与&& 和 与& 最终结果是一样的,只是运算过程不同!
            //  或&,无论第一个条件是否能判断最终的结果,第二个条件都必须执行!
            // 短路与&& ,如果第一个条件已经能判断最终的结果,第二个条件就不执行!
    
            int x = 5;
            System.out.println(1!=1 & x++>5);//false
            System.out.println("x:"+x);
    
            int y = 5;
            System.out.println(1!=1 && y++>5);//false
            System.out.println("y:"+y);
    
            int z = 5;
            System.out.println(1==1 && z++>5);//false
            System.out.println("z:"+z);
    
    
    
        }
    }
    
    

五、三目运算 (掌握)

语法:数据类型 变量名 = 条件表达式 ? 字面值1 : 字面值2;

数据类型:任意类型
变量名:  自己取名字
条件表达式: 结果是boolean类型
注意:字面值要和数据类型匹配!
理解:条件表达式成立true,那么字面值1赋值给变量,条件表达式不成立false,那么字面值2赋值给变量。

package com.bjpowernode.javastudy.day04.demo06;
public class Demo01 {
    public static void main(String[] args) {
        //语法:数据类型 变量名 = 条件表达式 ? 字面值1 : 字面值2;
        String s1 = false ? "哈哈" : "呵呵";
        System.out.println(s1);
        System.out.println(true ? "哈哈" : 10);

        //三目运算应用
        //小明考试,考试及格,小明爸带他去游乐场,否则,小明爸带他去补习班!
        double score = 59.9;
        String rs =  score>=60 ? "小明爸带他去游乐场" : "小明爸带他去补习班";
        System.out.println(rs);

        //求两个整数的最大值?
        int a = 10, b = 20;
        int max = a>b ? a : b;
        System.out.println("最大值:"+max);
    }
}

六、位运算符 (了解)

  • 按位运算符
| & ^ ~  

左边或者右边都是数值,不是条件,用来计算的,结果也不是boolean类型,结果是数值!
package com.bjpowernode.javastudy.day05.bitwiseoperation01;

public class Demo01 {
    public static void main(String[] args) {
        // 按照位运算的,把每一个十进制整数转换为32位的二进制然后进行计算
        // |或者,只要有一个是1,结果就是1
        /*
        * 00000000-00000000-00000000-00001001           --------- 9
        *              |
        * 00000000-00000000-00000000-00000111           --------- 7
        * ----------------------------------------------------------
        * 00000000-00000000-00000000-00001111
        * */
        System.out.println(9 | 7);

        // &并且,两个都是1,结果就是1
        /*
         * 00000000-00000000-00000000-00001001           --------- 9
         *              &
         * 00000000-00000000-00000000-00000111           --------- 7
         * ----------------------------------------------------------
         * 00000000-00000000-00000000-00000001
         * */
        System.out.println(9 & 7);

        // ^异或,一个是0一个是1,结果是1,两个都是0或者两个都是1结果是0
        /*
         * 00000000-00000000-00000000-00001001           --------- 9
         *              ^
         * 00000000-00000000-00000000-00000111           --------- 7
         * ----------------------------------------------------------
         * 00000000-00000000-00000000-00001110
         * */
        System.out.println(9 ^ 7);

        // ~非,取反
        /*
         * ~ 00000000-00000000-00000000-00001001           --------- 9
         * ----------------------------------------------------------
         *   11111111-11111111-11111111-11110110
         * */
        System.out.println(~9);



    }
}

  • 位移运算符
<<  左移
>>  有符号右移
>>> 无符号右移
package com.bjpowernode.javastudy.day05.bitwiseoperation01;

public class Demo02 {
    public static void main(String[] args) {
        /*
        *   <<左移  左边移动,右边补0
        *   规律:a<<b 相当于 a*2^b
        *   00000000-00000000-00000000-00000101 ------5
        *   2<<
        *   00000000-00000000-00000000-00101000
        * */
        System.out.println(5<<3);

        /*
         *   >>有符号右移  右边移动,这个数值是正数,左边补0,这个数值是负数,左边补1
         *   规律:a>>b 相当于 a/2^b
         *        如果a是负数,但是不能整除,a>>b 相当于 a/2^b-1
         *   00000000-00000000-00000000-00101000 ------40
         *         >>3
         *   00000000-00000000-00000000-00000101
         * */
        System.out.println(41>>3);

        /*
        *
        *   11111111-11111111-11111111-11011000    -40
        *          >>3
        *   11111111-11111111-11111111-11111011
        *
        * */
        System.out.println(-41>>3);

        /*
         *   >>>无符号右移  右边移动,无论这个数值是正数还是负数,左边都补0
         *   00000000-00000000-00000000-00101000 ------40
         *         >>>3
         *   00000000-00000000-00000000-00000101
         * */
        System.out.println(40>>>3);
        /*
         *
         *   11111111-11111111-11111111-11011000    -40
         *          >>>3
         *   00011111-11111111-11111111-11111011
         *
         * */
        System.out.println(-40>>>3);

    }
}

3.控制流程

print和println 掌握
转义符      掌握
if单选结构	掌握
if双选结构	掌握
if多选结构	掌握
switch选择结构	掌握
for循环结构	掌握
while循环结构	掌握
do-while循环结构	掌握
嵌套问题	掌握
break和continue关键字	掌握
带标签的break和continue	了解

二、print和println区别(掌握)

区别一:
print 不换行输出
println 输出后换行

区别二:
print()的小括号不写内容就报错
println()的小括号不写内容表示换行的意思

三、转义符(掌握)

\ 反斜杠---转义符
package com.bjpowernode.javastudy.day05.escapecharacter;

public class Demo01 {
    public static void main(String[] args) {
        //System.out.println(""");
        //System.out.println(''');
        System.out.println('"');
        System.out.println("'");
        //转义符:把歧义转换
        //我想:  输出 “
        //系统想:结尾的”
        System.out.println("\"");
        System.out.println('\'');
        System.out.println(10+"\t"+20);
        System.out.println(10+"\n"+20);
        System.out.println('\u4e2d');




    }
}

四、选择语句(掌握)

if语句

  1. 语法

if(条件表达式){ if执行体 }
条件表达式:结果是boolean
执行体:任意内容(输出语句、定义变量、选择语句...)

理解:条件表达式成立,执行if执行体,条件表达式不成立,不执行if执行体

1693535260019

  1. 案例
考试成绩不及格,爸爸带我去补习班!
package com.bjpowernode.javastudy.day05.if_demo;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        System.out.println("程序开始。。。");
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入您的考试成绩?");
        //3.接收
        double score = sc.nextDouble();
        //4.判断
        if(score<60){
            System.out.println("系统:考试不及格,去补习班学习!");
        }
        System.out.println("程序结束。。。");
    }
}

  1. if语句其他问题
1. { }可以规范变量的作用域
作用域:一个变量可使用的最大范围
作用域的范围:从变量的声明开始,一直到它所在的大括号结尾!

2.省略大括号
  只能有执行下一句话,以分号结尾,且不能定义变量,可以省略大括号(一个分号)
  
3.大括号后面不能加分号

if-else语句

  1. 语法
if(条件表达式){if执行体}else{else执行体}

理解:条件表达式成立,执行if执行体,条件表达式不成立(否则),执行else执行体

  1. 案例
考试成绩及格,爸爸带我去游乐场,考试成绩不及格,爸爸带我去补习班!
package com.bjpowernode.javastudy.day05.if_else_demo;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入您的考试成绩?");
        //3.接收
        double score = sc.nextDouble();
        //4.判断 if-else
        if(score>=60){
            System.out.println("系统:考试及格,去游乐场!");
        }else {
            System.out.println("系统:考试不及格,赶紧去补习班!");
        }
        //System.out.println(score>=60?"系统:考试及格,去游乐场!":"系统:考试不及格,赶紧去补习班!");

    }
}

  1. if-else其他问题
1. { }可以规范变量的作用域
2. 省略大括号
 只有一句话,且不能定义变量,可以省略大括号(一个分号)

if-else-if语句

  1. 语法
     if(条1){if执1}
else if(条2){if执2} 
else if(条3){if执3}
...
     else{else执行体}
     
理解:如果条件表达式1不成立,判断条件表达式2,如果还不成立,继续判断条件表达式3...直到所有的条件表达式都不成立,最终执行else执行体
     在判断期间,只要有一个条件表达式成立,执行它对应的执行体,程序结束
     

  1. 案例

90~100   优秀
80~90    良好
70~80    中等
60~70    及格
~60      不及格

小明考试后查询等级?
package com.bjpowernode.javastudy.day05.if_else_if_demo;
import java.util.Scanner;
public class Demo01 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入您的考试成绩0~100?");
        //3.接收
        double score = sc.nextDouble();
        //4.判断等级
        if(90<= score){
            System.out.println("优秀!");
        }else if(80<= score){
            System.out.println("良好!");
        }else if(70<= score){
            System.out.println("中等!");
        }else if(60<= score){
            System.out.println("及格!");
        }else {
            System.out.println("不及格!");
        }
        
    }
}

  1. if-else-if其他问题
1. { }可以规范变量的作用域
2. 省略大括号
 只有一句话,且不能定义变量,可以省略大括号(一个分号)

switch语句

  1. 语法
switch(字面值){
  case 字面值1: 
   语句1
  break;
  case 字面值2: 
   语句2
  break;
  ...
  default:
   结束语句
}

关键字
switch: 开关语句
case:一种情况,一种可能 
break:结束switch语句
default:以上所有情况都不执行,执行default语句,类似于else 

理解:switch的字面值 和 哪一个case的字面值相同,执行那个case语句,如果都不相同,执行default语句。

  • 案例
日计划

第一天--------------爬山
第二天--------------游泳
第三天--------------聚餐
第四天--------------打游戏
第五天--------------睡觉

查询哪一个干什么?

package com.bjpowernode.javastudy.day05.switch_demo;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入1~5,查询日计划!");
        //3.接收
        int day = sc.nextInt();
        //4.判断查询
        switch (day){
            case 1:
                System.out.println("系统:放假第1天,去爬山,哈哈哈!");
                break;
            case 2:
                System.out.println("系统:放假第2天,去游泳,哈哈哈!");
                break;
            case 3:
                System.out.println("系统:放假第3天,去聚餐,哈哈哈!");
                break;
            case 4:
                System.out.println("系统:放假第4天,去打游戏,哈哈哈!");
                break;
            case 5:
                System.out.println("系统:放假第5天,去睡觉,哈哈哈!");
                break;
            default:
                System.out.println("系统:输入有误,放假只有五天,请输入1~5");
        }
    }
}

  1. switch的其他问题
1. 作用域问题
   不能直接在{}中定义变量。
   不建议在case中定义变量。

2.case穿透(忘记写break)
package com.bjpowernode.javastudy.day05.switch_demo;
public class Demo02 {
    public static void main(String[] args) {
        switch (33){
            case 1:
                System.out.println(1);
            case 2:
                System.out.println(2);
            case 3:
                System.out.println(3);
            default:
                System.out.println("输入有误。。。");
            case 4:
                System.out.println(4);
            case 5:
                System.out.println(5);
        }
    }
}


3.case并列
3 4 5  ------ 春天  
6 7 8  ------ 夏天
9 10 11------ 秋天  
12 1 2 ------ 冬天  
package com.bjpowernode.javastudy.day05.switch_demo;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入月份
        System.out.println("系统:请输入月份,我可以告诉你季节?");
        //3.接收
        int month = sc.nextInt();
        //4.判断
        switch (month){
            case 3: case 4: case 5:
                System.out.println("系统:春天!");
                break;
            case 6: case 7: case 8:
                System.out.println("系统:夏天!");
                break;
            case 9: case 10: case 11:
                System.out.println("系统:秋天!");
                break;
            case 12: case 1: case 2:
                System.out.println("系统:冬天!");
                break;
            default:
                System.out.println("系统:输入有误,请输入地球的1~12个月!");
        }
    }
}

    
4.版本问题jdk8支持的类型
required: 'char, byte, short, int, Character, Byte, Short, Integer, String, or an enum' 
    

五、循环语句(掌握)

for

1.语法

for(初始表达式;条件表达式;迭代语句){ 循环体 }

初始表达式:定义一个有初始值的变量。 int a = 1;
迭代语句:i++  i+=2    i*=5 ...
循环体:任何语句(输出语句,变量...)

理解:先执行初始表达式,然后条件判断,如果成立,执行循环体,然后再执行迭代语句,然后继续条件判断...
     直到条件表达式不成立为止!

  1. 案例
打印1~5!
package com.bjpowernode.javastudy.day05.for_demo;

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

  1. for的其他问题
1. 扩大初始表达式的作用域

package com.bjpowernode.javastudy.day05.for_demo;

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

        System.out.println("i最终值:"+i);

        System.out.println("------------------");
        int j = 5;
        for (; j >=1; j--) {
            System.out.println(j);
        }

        System.out.println("j最终的值:"+j);



    }
}


2.省略大括号
    
package com.bjpowernode.javastudy.day05.for_demo;
public class Demo02 {
    public static void main(String[] args) {

        for (int i = 5; i > 0; i--)
            System.out.println(i);
       
    }
}


3.死循环问题
    
   package com.bjpowernode.javastudy.day05.for_demo;

public class Demo03 {
    public static void main(String[] args) {
        // for (int i = 0; true; i++) {
        //     System.out.println(i);
        // }
        for (int i = 0; ; i++) {
            System.out.println(i);
        }
        
    }
}
 


4.小括号后面没有分号
 package com.bjpowernode.javastudy.day05.for_demo;
public class Demo04 {
    public static void main(String[] args) {
        for (int i = 0; i < 5; i++); {
            System.out.println("我要变有钱~~~");
        }
    }
}

5.迭代语句的位置可以放循环体
  package com.bjpowernode.javastudy.day05.for_demo;

public class Demo05 {
    public static void main(String[] args) {
        for (int i = 0; i < 5; ) {
            i+=2;
            System.out.println(i);
        }
    }
}
  
6.多个初始表达式多个迭代语句
package com.bjpowernode.javastudy.day05.for_demo;

public class Demo06 {
    public static void main(String[] args) {
        for(int i=1,j=10;i<j;i++,j--){
            System.out.println(i+"-----------------"+j);
        }
    }
}
    
    

while

  1. 语法
while(条件表达式){ 循环体 }
理解:条件表达式成立,执行循环体...
  1. 案例
打印1~5的循环

package com.bjpowernode.javastudy.day05.while_demo;

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

  1. while的其他问题
1.省略大括号

2.死循环

do-while

  1. 语法
do{循环体}while(条件表达式);

理解:先执行循环体,再条件判断,如果成立再执行循环体,在条件判断...

  1. 案例
1~5的循环
package com.bjpowernode.javastudy.day05.do_while_demo;

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

  1. do-while的其他问题
1.省略大括号

2.死循环

六、嵌套问题 (掌握)

  • if-else嵌套
登录 用户名是 1234  密码也是1234

package com.bjpowernode.javastudy.day05.if_else_if_else;

import java.util.Scanner;

public class Login {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入用户名
        System.out.println("系统:请输入用户名?");
        //3.接收
        int username = sc.nextInt();
        //4.判断用户名
        if(username == 1234){
            //5.提示输入密码
            System.out.println("系统:请输入密码?");
            //6.接收
            int password = sc.nextInt();
            //7.判断密码
            if(password == 1234){
                System.out.println("系统:登录成功,正在调整主界面...");
            }else {
                System.out.println("系统:密码错误,程序结束!");
            }
        }else {
            System.out.println("系统:用户名错误,程序结束!");
        }
    }
}

  • for循环嵌套if
练习:打印1~100,能被2整除的数字?
package com.bjpowernode.javastudy.day05.for_if;

public class Demo01 {
    public static void main(String[] args) {
        for(int i=1;i<=100;i++){
            if(i%2==0){
                System.out.println(i);
            }
        }
    }
}

  • for循环嵌套
*
System.out.println("*");
*****

package com.bjpowernode.javastudy.day05.for_for;

public class Demo01 {
    public static void main(String[] args) {
        //*****
        //打印一行*,换行
        System.out.print("*");
        System.out.print("*");
        System.out.print("*");
        System.out.print("*");
        System.out.print("*");
        System.out.println();
        System.out.println("------------------------");
        //打印一行*,换行
        for (int i = 0; i < 5; i++) {
            System.out.print("*");
        }
        System.out.println();

    }
}


*****
*****
*****
package com.bjpowernode.javastudy.day05.for_for;
public class Demo02 {
    public static void main(String[] args) {
        //打印一行*,换行  *****
        for (int i = 0; i < 5; i++) {
            System.out.print("*");
        }
        System.out.println();
        //打印一行*,换行  *****
        for (int i = 0; i < 5; i++) {
            System.out.print("*");
        }
        System.out.println();
        //打印一行*,换行  *****
        for (int i = 0; i < 5; i++) {
            System.out.print("*");
        }
        System.out.println();

        System.out.println("-----------------------------");
        //从内往外看!
        for(int j=1;j<=3;j++){
            //打印一行*,换行  *****
            for (int i = 0; i < 5; i++) {
                System.out.print("*");
            }
            System.out.println();
        }

    }
}

七、break和continue关键字 (掌握)

continue:只能用于循环语句,跳出当次循环,继续进行下一次循环!
break:
1.用于switch语句,结束switch语句
2.用于循环语句,结束整个循环语句
return:
用于方法,结束方法体
package com.bjpowernode.javastudy.day05.keyword;

public class Demo01 {
    public static void main(String[] args) {
        System.out.println("程序开始。。。");
        for (int i = 1; i <=10; i++) {
            if(i==5){
                continue;
                //break;
                //return;
            }
            System.out.print(i+"\t");
        }
        System.out.println();
        System.out.println("程序结束。。。");
    }
}

八、带标签的break和continue (了解)

package com.bjpowernode.javastudy.day05.lable;

public class Demo01 {
    public static void main(String[] args) {
        haha:for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("j:"+j);
                break haha;
            }
            System.out.println("i:"+i);
        }
    }
}

综合练习

(1)将两个变量的值进行交换

int a = 10;
int b = 20;
//经过一些操作
System.out.println("a:"+a);//20
System.out.println("b:"+b);//10

package com.bjpowernode.javastudy.day06;

public class Demo01_01 {
    public static void main(String[] args) {
        int a = 10,b = 20;
        int temp = a;
        a = b;
        b = temp;
        System.out.println("a:"+a);
        System.out.println("b:"+b);
    }
}

package com.bjpowernode.javastudy.day06;

public class Demo01_02 {
    public static void main(String[] args) {
        int a = 10,b = 20;
        int sum = a+b;
        a = sum-a;
        b = sum-b;
        System.out.println("a:"+a);
        System.out.println("b:"+b);
    }
}

(2)从键盘接收一个整数,判断该数字的正负。

三种情况:if-else-if语句
package com.bjpowernode.javastudy.day06;

import java.util.Scanner;

public class Demo02_01 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入一个整数?");
        //3.接收
        int number = sc.nextInt();
        //4.判断
        if(number>0){
            System.out.println("系统:这是正数!");
        }else if(number<0){
            System.out.println("系统:这是负数!");
        }else {
            System.out.println("系统:这是零!");
        }
    }
}

多个if语句
package com.bjpowernode.javastudy.day06;
import java.util.Scanner;

public class Demo02_02 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入一个整数?");
        //3.接收
        int number = sc.nextInt();
        //4.判断
        if(number>0){
            System.out.println("系统:这是正数!");
        }
        if(number<0){
            System.out.println("系统:这是负数!");
        }
        if(number==0){
            System.out.println("系统:这是零!");
        }
    }
}

(3)从键盘接收一个整数,判断该数字的奇偶。

两种情况:if-else语句  或者 三目运算
package com.bjpowernode.javastudy.day06;

import java.util.Scanner;

public class Demo03_01 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入一个整数?");
        //3.接收
        int number = sc.nextInt();
        //4.判断
        if(number%2==0){
            System.out.println("系统:偶数!");
        }else{
            System.out.println("系统:奇数!");
        }
    }
}

package com.bjpowernode.javastudy.day06;
import java.util.Scanner;
public class Demo03_02 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入一个整数?");
        //3.接收
        int number = sc.nextInt();
        //4.判断
        System.out.println(number%2==0?"系统:偶数!":"系统:奇数!");
    }
}

(4)打车问题

打车起步价8元(3KM以内)
超过3KM,超出的每公里1.2元
超过5KM,超出的每公里1.5元
请在键盘上接收公里数,得出总价。

定义打车公里数是x公里
第一种:x <= 3    8

第二种:3<x<=5    8 + (x-3)*1.2

第三种:x>5       8 + (5-3)*1.2 + (x-5)*1.5 


package com.bjpowernode.javastudy.day06;
import java.util.Scanner;
public class Demo04_01 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入您的打车公里数?");
        //3.接收
        double x = sc.nextDouble();
        //4.判断
        if(x<=3){
            System.out.println("系统:您的打车费用是:"+(8)+"元!");
        }else if(x<=5){
            System.out.println("系统:您的打车费用是:"+(8 + (x-3)*1.2)+"元!");
        }else {
            System.out.println("系统:您的打车费用是:"+(8 + (5-3)*1.2 + (x-5)*1.5)+"元!");
        }
    }
}

package com.bjpowernode.javastudy.day06;
import java.util.Scanner;

public class Demo04_02 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入您的打车公里数?");
        //3.接收
        double x = sc.nextDouble();
        //怎么判断一个x是整数还是小数?
        if(x%1!=0){
            //强转int加1
            x = (int) x + 1;
        }
        System.out.println("测试:"+x);


        //4.判断
        if(x<=3){
            System.out.println("系统:您的打车费用是:"+(8)+"元!");
        }else if(x<=5){
            System.out.println("系统:您的打车费用是:"+(8 + (x-3)*1.2)+"元!");
        }else {
            System.out.println("系统:您的打车费用是:"+(8 + (5-3)*1.2 + (x-5)*1.5)+"元!");
        }
    }
}

(5)键盘输入月份,打印该月份所属的季节。

​ 3,4,5 春季

​ 6,7,8 夏季

​ 9,10,11 秋季

​ 12, 1, 2 冬季

package com.bjpowernode.javastudy.day06;

import java.util.Scanner;

public class Demo05 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入一个月份?");
        //3.接收
        int month = sc.nextInt();

        if(month<1 || month>12){
            System.out.println("系统:输入有误,请输入1~12!");
            return;
        }
        //4.判断
        if(month == 3 || month == 4 || month == 5){
            System.out.println("系统:春天到了!");
        }
        if(month == 6 || month == 7 || month == 8){
            System.out.println("系统:夏天到了!");
        }
        if(month == 9 || month == 10 || month == 11){
            System.out.println("系统:秋天到了!");
        }
        if(month == 12 || month == 1 || month == 2){
            System.out.println("系统:冬天到了!");
        }

    }
}

(8)通过符号”*”, 输出如下信息


**********
**********
**********
**********
**********
package com.bjpowernode.javastudy.day06;

public class Demo08_01 {
    public static void main(String[] args) {
        for(int j=1;j<=5;j++){
            for(int i=1;i<=10;i++){
                System.out.print("*");
            }
            System.out.println();
        }

    }
}

012345678910
1**********
2**********
3**********
4**********
5**********
package com.bjpowernode.javastudy.day06;

public class Demo08_02 {
    public static void main(String[] args) {
        for(int j=1;j<=6;j++){
            System.out.print(j-1+"\t");
            for(int i=1;i<=10;i++){
               if(j==1){
                   System.out.print(i+"\t");
               }else {
                   System.out.print("*\t");
               }
            }
            System.out.println();
        }

    }
}

(9)编写java 程序,打印如下的数值列表:

1	10	100	1000
2	20	200	2000
3	30	300	3000
4	40	400	4000
1	10	100	1000

package com.bjpowernode.javastudy.day06;

public class Demo09_01 {
    public static void main(String[] args) {
        //1	10	100	1000
        int i = 1;
System.out.println(i+"\t"+i*10+"\t"+i*100+"\t"+i*1000);
    }
}

1	10	100	1000
2	20	200	2000
3	30	300	3000
4	40	400	4000

package com.bjpowernode.javastudy.day06;

public class Demo09_02 {
    public static void main(String[] args) {
        for (int i=1;i<=4;i++) {
 System.out.println(i+"\t"+i*10+"\t"+i*100+"\t"+i*1000);
        }
        
    }
}

1	10	100	1000


package com.bjpowernode.javastudy.day06;

public class Demo09_03 {
    public static void main(String[] args) {
        //1	10	100	1000
        int sum = 1;
        for(int i=1;i<=4;i++){
            System.out.print(sum+"\t");
            sum*=10;
        }
        System.out.println();
    }
}

1	10	100	1000
2	20	200	2000
3	30	300	3000
4	40	400	4000

package com.bjpowernode.javastudy.day06;

public class Demo09_04 {
    public static void main(String[] args) {
        //1	10	100	1000
        for (int j=1;j<=4;j++) {
            int sum = j;
            for(int i=1;i<=4;i++){
                System.out.print(sum+"\t");
                sum*=10;
            }
            System.out.println();
        }
    }
}

package com.bjpowernode.javastudy.day06;

public class Demo09_05 {
    public static void main(String[] args) {
        for (int j=1;j<=4;j++) {
            for(int i=j;i<=4000;i*=10){
                System.out.print(i+"\t");
            }
            System.out.println();
        }
    }
}

(10)打印2 到100 的所有质数,每行显示5 个质数。

质数定义:除了1和它本身,不能被其他数整除!

7是不是质数?--- 拿着7除以2~6看看能不能除尽,只要有一个能除尽,说明7不是质数!
计算过程:
7除以2 ? false
7除以3 ? false
...
7除以6 ? false
控制台输入2~100的任意一个整数?判断它是不是质数?如果是,打印“它是质数!”如果不是,打印“它不是质数!”

package com.bjpowernode.javastudy.day06;

import java.util.Scanner;

public class Demo10_01 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入2~100的一个整数?");
        //3.接收
        int x = sc.nextInt();
        //试纸,初始状态是0
        int m = 0;
        //4.判断x是不是质数?
        // x除以 2 ~ x-1 如果有一个能除尽,说明x不是质数?除非所有的2 ~ x-1 都除不尽,说明x是质数!
        //2 ~ x-1 是连续的数据,可以循环出来
        for(int i=2;i<x;i++){
            if(x%i==0){
                m = 1;
                break;
            }
        }
        if(m == 0){
            System.out.println("系统:是质数!");
        }else {
            System.out.println("系统:不是质数!");
        }


    }
}

package com.bjpowernode.javastudy.day06;

public class Demo10_02 {
    public static void main(String[] args) {
        int count = 0;
        for (int x = 2; x <= 100; x++) {
            //求x是不是质数?
            boolean flag = true;
            for(int i=2;i<x;i++){
                if(x%i==0){
                    flag=false;
                    break;
                }
            }
            if(flag){
                System.out.print(x+"\t");
                count++;
                if(count%5==0){
                    System.out.println();
                }
            }
        }
    }
}

(11)编写程序,计算5 的阶乘。

1*2*3*4*5
package com.bjpowernode.javastudy.day06;

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

        System.out.println("---------1~100的和------------");
        int sum = 0;
        for (int i = 1; i <=100; i++) {
            sum+=i;
        }
        System.out.println(sum);
    }
}

(12)编写程序输出下图:

    *
   ***
  *****
 *******
*********
图形            行号         星星个数
*                1            1   
***              2            3
*****            3            5
*******          4            7  
*********        5            9

规律:行号*2-1 等于 星星个数

package com.bjpowernode.javastudy.day06;

public class Demo12_01 {
    public static void main(String[] args) {
        for (int j=1;j<=5;j++) {
            for(int i=1;i<=j*2-1;i++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

图形       行号    空格个数    一共5行
&&&&       1        4
&&&        2        3
&&         3        2 
&          4        1
0          5        0

规律:行数 - 行号 等于 空格个数

package com.bjpowernode.javastudy.day06;

public class Demo12_02 {
    public static void main(String[] args) {
        for (int j=1;j<=5;j++) {
            for(int i=1;i<=5-j;i++){
                System.out.print("&");
            }
            System.out.println();
        }
    }
}


    *
   ***
  *****
 *******
*********

package com.bjpowernode.javastudy.day06;

public class Demo12_01_02 {
    public static void main(String[] args) {
        for (int j=1;j<=5;j++) {
            for(int i=1;i<=5-j;i++){
                System.out.print(" ");
            }
            for(int i=1;i<=j*2-1;i++){
                System.out.print("*");
            }
            System.out.println();

        }

    }
}

*********
 *******
  *****
   ***
    *
 图形           倒行号      星星个数
*********       5          9
*******         4          7
*****           3          5 
***             2          3
*               1          1

规律:倒行号*2-1 等于 星星个数
package com.bjpowernode.javastudy.day06;

public class Demo12_03 {
    public static void main(String[] args) {
        for (int j=5;j>=1;j--) {
            for(int i=1;i<=2*j-1;i++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

图形    空格个数     倒行号
0         0          5
&         1          4 
&&        2          3
&&&       3          2 
&&&&      4          1

规律:行数 - 倒行号 等于 空格个数

package com.bjpowernode.javastudy.day06;

public class Demo12_04 {
    public static void main(String[] args) {
        for (int j=5;j>=1;j--) {
            for(int i=1;i<=5-j;i++){
                System.out.print("&");
            }
            System.out.println();
        }
    }
}


package com.bjpowernode.javastudy.day06;

public class Demo12_01_02_03_04 {
    public static void main(String[] args) {
        int high = 5;
        for (int j=1;j<=high;j++) {
            for(int i=1;i<=high-j;i++){
                System.out.print(" ");
            }
            for(int i=1;i<=j*2-1;i++){
                System.out.print("*");
            }
            System.out.println();

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

(13) 篮球问题

篮球从5 米高的地方掉下来,每次弹起的高度是原来的30%,经过几次弹起,篮球的高度小于等于0.1 米。

double high = 5.0;

第一次:high*=0.3;
第二次:high*=0.3;
...

思路1:不确定循环多少次,那么就假设无限次,达到条件让循环停止。
package com.bjpowernode.javastudy.day06;

public class Demo13_01 {
    public static void main(String[] args) {
        double high = 5.0;
        int count = 0;
        while (true){
            high*=0.3;
            count++;
            if(high<=0.1){
                break;
            }
        }
        System.out.println("经过计算弹起"+count+"次小于等于0.1");

    }
}

思路2:只要高度大于0.1,就继续循环!
package com.bjpowernode.javastudy.day06;

public class Demo13_02 {
    public static void main(String[] args) {
        double high = 5.0;
        int count = 0;
        while (high>0.1){
            high*=0.3;
            count++;
        }
        System.out.println("经过计算弹起"+count+"次小于等于0.1");
    }
}

(14)打印出所有的"水仙花数"

所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。


package com.bjpowernode.javastudy.day06;

public class Demo14 {
    public static void main(String[] args) {
        for(int i=100;i<1000;i++){
            //求153的个位、十位、百位 ?
            //求个位
            int x=i%10;
            //求十位
            int y = i / 10 % 10;
            //求百位
            int z = i / 100;

            if(x*x*x + y*y*y + z*z*z == i){
                System.out.println(i);
            }
        }
    }
}



(15)题目:兔子问题

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,控制台输入x个月后,输出兔子多少对?

月         兔子对数
1            1
2            1
3            2
4            3
5            5
6            8
7            13
8            21
9            34
10           55
...

斐波那契数列

package com.bjpowernode.javastudy.day06;
import java.util.Scanner;
public class Demo15 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入月份?");
        //3.接收
        int month = sc.nextInt();
        //4.判断
        //定义第一个月和第二个月的兔子
        int one = 1,two = 1,temp = 0;
        if(month == 1 || month == 2){
            System.out.println("系统:兔子有1对!");
        }else {
            //从第三个月开始,这个时候需要计算!
           for(int i=3;i<=month;i++){
              temp = one+two;
              one = two;
              two = temp;
           }
            System.out.println("系统:兔子有"+temp+"对!");
        }

    }
}

(16)完成以下九九乘法表

package com.bjpowernode.javastudy.day06;

public class Demo16 {
    public static void main(String[] args) {
        for(int i=1;i<=9;i++){
            for(int j=1;j<=i;j++){
                System.out.print(j+"×"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}

随机数问题

package com.bjpowernode.javastudy.day06;
import java.util.Random;
public class Demo17_01 {
    public static void main(String[] args) {
            //1.创建Random类的对象
            Random rd = new Random();
            //2.随机0~9
            int x = rd.nextInt(10);
            System.out.println(x);
    }
}

  • 随机点名
冯鹏举 --- 0
郭义   --- 1
贺吉祥 --- 2 

(17)猜数字游戏

​ 预先随机产生一个100以内的正整数x,从键盘接收一个正整数,对x进行猜测, 如果大了则提示大了,小了则提示小了,等于则提示猜测成功

package com.bjpowernode.javastudy.day06;
import java.util.Random;
import java.util.Scanner;
public class Demo17 {
    public static void main(String[] args) {
            //1.创建Random类的对象
            Random rd = new Random();
            //2.随机1~100的任意一个整数x
            int x = rd.nextInt(100)+1;
        while (true) {
            //3.创建Scanner类的对象
            Scanner sc = new Scanner(System.in);
            //4.提示输入
            System.out.println("系统:请输入一个1~100之内整数?");
            //5.接收
            int y = sc.nextInt();
            //6.判断
            if(y>x){
                System.out.println("系统:猜的大了!");
            }else if(y<x){
                System.out.println("系统:猜的小了!");
            }else {
                System.out.println("系统:恭喜你,猜对了!");
                break;
            }
        }
    }
}

附加练习1

等额本金:借支付宝借呗10万,年化率3.8%,借10个月,每个月怎么还款?
本金=总借款/月份;   1万

第一个月:本金:1万,利息:10万*(3.8%/12)
第二个月:本金:1万,利息: 9万*(3.8%/12)
第三个月:本金:1万,利息: 8万*(3.8%/12)
...


package com.bjpowernode.javastudy.day06;
import java.util.Scanner;
public class Test01 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in); 
        //2.提示用户输入 贷款
        System.out.println("系统:请输入贷款金额?(万)");
        //3.接收 贷款
        double loan = sc.nextDouble()*10000;
        //4.提示输入贷款时间
        System.out.println("系统:请输入贷款年限?");
        //5.接收 年限,要转换为月
        int month = sc.nextInt()*12;
        //6.提示输入利率
        System.out.println("系统:请输入利率?(%)");
        //7.接收 月利率
        double rate = sc.nextDouble()/100/12;
        //8.计算本金
        double principal = loan / month;
        //9.计算利息
        double interest = 0.0;
        //10.循环出还款计划同时计算利息
        System.out.println("还款计划表:=========================================");
        for(int i=1;i<=month;i++){
            interest = loan*rate;
            System.out.println("第"+i+"个月,本金:"+principal+"元,利息:"+interest+"元,合计:"+(principal+interest)+"元!");
            loan-=principal;
        }

    }
}

附加练习2

求1~10000的完全数
package com.bjpowernode.javastudy.day06;

public class Test02 {
    public static void main(String[] args) {

        for(int x=1;x<=10000;x++){
            int sum = 0;
            //求x是不是完美数?
            for(int y=1;y<=x/2;y++){
                if(x%y==0){
                    sum+=y;
                }
            }
            if(x == sum){
                System.out.println(x);
            }
        }
    }
}

附加练习3

package com.bjpowernode.javastudy.day06;

import java.util.Scanner;

public class Test03 {
    public static void main(String[] args) {
        //1.创建Scanner类的对象
        Scanner sc = new Scanner(System.in);
        //2.提示输入
        System.out.println("系统:请输入您的出生年份?");
        //3.获取
        int year = sc.nextInt();
        //4.计算
        switch (year%12){
            case 0:
                System.out.println("系统:您的生肖是---猴!");
                break;
            case 1:
                System.out.println("系统:您的生肖是---鸡!");
                break;
            case 2:
                System.out.println("系统:您的生肖是---狗!");
                break;
            case 3:
                System.out.println("系统:您的生肖是---猪!");
                break;
            case 4:
                System.out.println("系统:您的生肖是---鼠!");
                break;
            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:
                System.out.println("系统:您的生肖是---马!");
                break;
            case 11:
                System.out.println("系统:您的生肖是---羊!");
                break;
        }
    }
}

标签:控制,String,int,流程,System,println,public,out
From: https://www.cnblogs.com/wangxiangblog/p/17709573.html

相关文章

  • 渗透测试基本流程以及nmap基本命令
    1首先确认目标2信息收集3漏洞扫描4漏洞验证5提权6清除痕迹信息收集可以从编写报告信息收集可以从系统版本信息,应用信息,服务信息,以及相关防护信息方面入手nmap基本命令:端口扫描SYN  nmap-sS+ipconnectnmap-sT+ipUDPnmap-sU+ipFINnmap-sF+ip扫描常见端口nmap......
  • Spring Security 基于表单的认证和角色权限控制
    SpringSecurity是基于Spring框架提供的一套Web应用安全的完整解决方案,核心功能主要是认证和授权。认证主要是判断用户的合法性,主要体现在登录操作,最常用的认证方式是【基于表单的认证】和【基于OAuth2的认证】。授权主要体现在权限控制,也就是控制用户是否能够访问网站的相关......
  • “&”控制命令的运行方式
    在Unix、Linux和类Unix系统中,&符号有特定的意义,用于控制命令的运行方式。具体来说,&在命令末尾使用时表示将该命令放入后台运行。前台运行:如果你在终端输入一个命令,例如./a.out,默认情况下该命令会在前台运行,会占用终端并阻塞终端,直到该命令运行完毕。后台运行:如果你想让......
  • SQL——数据控制语言DCL(GRANT,REVOKE,COMMIT,ROLLBACK)
    DCL数据控制语言(DataControlLanguage,DCL)在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权。GRANT授权 GRANT权限1,…,权限nON数据库.*TO用户名@IP地址  // 权限、用户、数据......
  • 便利店用什么收银软件好 便利店收银系统操作流程
    便利店客流量大,日流水多,商品种类冗杂,如果没有收银系统辅助的话,每天的收银工作和库存管理工作会相当麻烦,因此很多便利店老板都会用收银软件,一般适合便利店的收银软件要求操作简便、支持多种付款方式、支持统计数据、有成熟的进销存管理模式。便利店收银系统的操作也很简单,在收银系统......
  • 渗透测试流程
    渗透测试概况一、网络渗透测试执行标准1、渗透测试的概念渗透测试(PenetrationTesting)是一种通过模拟攻击的技术与方法,挫败目标系统的安全控制措施并获得控制访问权的安全测试方法。网络渗透测试主要依据CVE(CommonVulnerabilitiesandExposures)已经发现的安全漏洞,模拟入......
  • Python开发实例(二十一)智能家居控制器:模拟一个简单的智能家居控制系统,控制虚拟设备的状
    在这个实例中,我们将模拟一个简单的智能家居控制系统,通过Python代码来控制虚拟设备的状态。我们将使用一个字典来表示设备及其状态,并提供用户界面来操作这些设备。下面是一个智能家居控制器的Python程序:#初始化设备状态字典devices={'灯':'关闭','空调':'关闭',......
  • 进程管理4以及信号控制进程
    一:Linux系统中的job和process这个job就是系统中的任务,系统会管理每个Shell并分配一个jobnumber(任务号码),如果你子啊一个命令行上执行了多个命令,系统会将整个过程看作一项任务。一个进程可以作为一项任务,多个进程也可以作为一项任务。任务也分前台任务和后台任务,前台任务会与键盘......
  • springboot+html使用sql语句能够在控制台输出相关数据信息list,但是输出的list=null(未
    问题描述具体来说,就是,连接上数据库之后,发现查询的sql语句能够正常在控制台输出数据,但是将sql语句的查询结果放到list里面,在控制台输出的list=[null];真的崩溃了!!!之前从来没有遇到过这种情况;尝试了网上的各种方法,也都解决不了,麻木ing~求解!......
  • linux下shell流程控制实例
    linuxshell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case)。下面我将通过例子介绍下,各个语句使用方法。一、shell条件语句(if用法)if语句结构[if/then/elif/else/fi]if条件测试语句thenaction[elif条件actionelseaction]fi如果对于:条件测试语......