【Java代码笔记】

1、类的基本结构

//所属包
package code00;
//公共的类,类名为:Demo
public class Demo {

}

main函数

package code00;

public class Demo {
    
    public static void main(String[] args) {
        //main函数(主函数)
        //程序的入口
        //有main函数程序才能执行
        //代码需要放到main函数中
    }
    
}

2、Scanner用户输入

package wdb2021;
import java.util.Scanner;
public class MyScanner {
	public static void main(String[] args) {
		//往程序中引入了scanner类型的数据
		//scanner类型的就是负责接收键盘数据的
		//因为他要获取数据,数据再电脑里以数据流的形式存在
		Scanner abc = new Scanner(System.in);
		
		//String a = abc.next();//接受一个字符串到程序中
		//boolean b = abc.nextBoolean();//接受一个布尔类型到程序中
		System.out.println("请你输入整数类型的内容");
		int c = abc.nextInt();
		System.out.println("你输入的整数是");
		System.out.println(c);
			
		//用完之后要关闭
		abc.close();		
	}
}

3、if选择结构

1、if…else…结构

public class Demo {

	public static void main(String[] args) {
		
		int a = 1;
		int b = 2;
		if (a > b) {
			System.out.println("a更大");
		} else {
			System.out.println("b更大");
		}
	}
}

2、if…结构

public class Demo {

	public static void main(String[] args) {
		
		int a = 1;
		int b = 2;
		if (a > b) {
			System.out.println("a更大");
		} 
	}
}

3、if…else if…结构

package code00;

public class Demo {

    public static void main(String[] args) {
        /**
         * 0~59     D等级
         * 60~79    C等级
         * 80~89    B等级
         * 90~100   A等级
         */
        int a = 60;
        if (a >= 0 && a <= 59){
            System.out.println("成绩是D等级");
        }else if (a >= 60 && a <= 79){
            System.out.println("成绩是C等级");
        }else if (a >= 80 && a <= 89){
            System.out.println("成绩是B等级");
        }else {
            System.out.println("成绩是A等级");
        }
    }

}

4、Scanner+if结合

package code00;

import java.util.Scanner;

public class Demo {

    public static void main(String[] args) {
        /**
         * 成绩判定系统
         * 0~59     D等级
         * 60~79    C等级
         * 80~89    B等级
         * 90~100   A等级
         */
        //从键盘获取成绩
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入你的成绩:");
        int a = scanner.nextInt();
        System.out.println("你的成绩是:" + a +"分。");
        scanner.close();

        //对获取到的成绩利用if选择结构进行分类
        if (a >= 0 && a <= 59){
            System.out.println("成绩是D等级");
        }else if (a >= 60 && a <= 79){
            System.out.println("成绩是C等级");
        }else if (a >= 80 && a <= 89){
            System.out.println("成绩是B等级");
        }else {
            System.out.println("成绩是A等级");
        }
    }

}

4、期中测试答案

package code00;

import java.util.Scanner;

/**
 * @author lichu
 * 题目:让用户依次录入三个整数,求出三个数中的最大值,并打印到控制台。
 */
public class Demo {

    public static void main(String[] args) {
        /*
        1、从键盘获取三个整数
        */
        Scanner scanner = new Scanner(System.in);

        System.out.println("请输入第一个整数:");//获取前进行提示
        int a = scanner.nextInt();//获取一个整数
        System.out.println("你输入的第一个整数是:"+a);//获取后进行展示

        System.out.println("请输入第二个整数:");//获取前进行提示
        int b = scanner.nextInt();//获取第二个整数
        System.out.println("你输入的第二个整数是:"+b);//获取后进行展示

        System.out.println("请输入第三个整数:");//获取前进行提示
        int c = scanner.nextInt();//获取第三个整数
        System.out.println("你输入的第三个整数是:"+c);//获取后进行展示

        scanner.close();
        /*
        2、对获取的到三个整数a,b,c利用if语句进行大小比较
         */
        /*
        整体思路:
            1、先对于ab进行大小比较选出较大的那个数d
            2、让c和ab中较大的数进行比较:
                2.1、若c大于ab中较大的,那么c是最大
                2.2、若c小于ab中较大的,那么ab中较大的那个数是最大
         */

        //方法一:嵌套if...else(推荐答案)
        if (a >= b){
            //若ab中较大的是a,让a和c进行比较
            if (a >= c){
                System.out.println("最大的数是:" + a);
            }else {
                System.out.println("最大的数是:" + c);
            }
        }else {
            //若ab中较大的是b,让b和c进行比较
            if (b >= c){
                System.out.println("最大的数是:" + b);
            }else {
                System.out.println("最大的数是:" + c);
            }
        }
        
        //*****************分割线*********************************
        
        /*
        //方法二:多条件if...else if...
        if (a >= b && a >= c){
            System.out.println("最大的数是:" + a);
        }else if (b <= a && b >= c){
            System.out.println("最大的数是:" + b);
        }else {
            System.out.println("最大的数是:" + c);
        }
        */
        
        //*****************分割线*********************************
        
        /*
        //方法三:普通if...else
        int d;
        if (a >= b){
            d = a;
        }else {
            d = b;
        }
        if (c >= d){
            System.out.println("最大的是数是:" + c);
        }else {
            System.out.println("最大的是数是:" + d);
        }
        */



    }

}

5、Switch case语句

5.1 switch case 语句有如下规则:

    1、switch 语句中的变量类型可以是: byte、short、int、 char、String 类型

    2、switch 语句可以拥有多个 case 语句。每个 case 后面跟一个要比较的值和冒号。
    case 语句中的值的数据类型必须与变量的数据类型相同。

    3、当变量的值与 case 语句的值相等时,那么 case 语句之后的语句开始执行。
    直到 break 语句出现才会跳出 switch 语句。

    4、当遇到 break 语句时,switch 语句终止。程序跳转到 switch 语句后面的语句执行。
    case 语句不是必须要包含 break 语句。如果没有 break 语句出现,
    程序会继续执行下一条 case 语句,直到出现 break 语句。

    5、switch 语句可以包含一个 default 分支,该分支一般是 switch 语句的最后一个分支
    (可以在任何位置,但建议在最后一个)。default 在没有 case 语句的值和变量值相等的时候执行。
    default 分支不需要 break 语句。

5.2 switch语句基本结构:

 /*
        switch语句基本结构:

        switch(变量){
            case 对应值1 :
                //语句
                break; //可选
            case 对应值2 :
                //语句
                break; //可选
            //你可以有任意数量的case语句
            default : //可选
                //语句
        }
         */   

5.3 Switch case正常使用情况
(每个case后都有一个break,在case之后有一个default)

public class Test {
public static void main(String args[]){
 int a = 1;
   switch(a)
   {
      case 1 :
         System.out.println("优秀"); 
         break;
      case 2 :
         System.out.println("良好");
         break;
      case 3 :
         System.out.println("及格");
         break;
      default :
         System.out.println("未知等级");
   }
}
}
输出结果:
优秀

5.4 没有break时,会挨个匹配结果,匹配不上输出默认值

public class Test {
public static void main(String args[]){
 int a = 0;
   switch(a)
   {
      case 1 :
         System.out.println("优秀"); 
      case 2 :
         System.out.println("良好");
      case 3 :
         System.out.println("及格");
      default :
         System.out.println("未知等级");
   }
}
}
输出结果:
未知等级

5.5 没有break时,会挨个匹配结果,匹配成功输出当前case后所有结果

public class Test {
public static void main(String args[]){
 int a = 1;
   switch(a)
   {
      case 1 :
         System.out.println("优秀"); 
      case 2 :
         System.out.println("良好");
      case 3 :
         System.out.println("及格");
      default :
         System.out.println("未知等级");
   }
}
}
输出结果:
优秀
良好
及格
未知等级

5.6 当前没有break,匹配成功后,后边的case里含有break

   public class Test {
   public static void main(String args[]){
 	int a = 1;
      switch(a)
      {
         case 1 :
            System.out.println("优秀"); 
         case 2 :
            System.out.println("良好");
         case 3 :
            System.out.println("及格");
            break;
         default :
            System.out.println("未知等级");
      }
   }
}
输出结果:
优秀
良好
及格

6、while和do…while循环

6.1 while基本结构

while( 布尔表达式 ) {//满足条件就进入循环,一直到不满足条件为止,才可以跳出循环
  //循环内容
}

6.2 while循环例子

public class Test {
   public static void main(String[] args) {
      int a = 1;
      while( a < 10 ) {
         System.out.println("a的值是 : " + a );
         a++;
      }
   }
}

6.3 do…while循环基本结构

//先进行一次循环操作之后再去判断是否可以跳出循环
do {
       //代码语句
}while(布尔表达式);

6.4 do…while循环例子

public class Test {
   public static void main(String[] args) {
      int a = 1;
      do {
         System.out.println("a的值是 : " + a );
         a++;
      }while( a < 10 )
   }
}

6.5 while循环和do…while循环的区别

	1while 循环和 do-while 循环的相同处是:
	都是循环结构,使用 while(循环条件) 表示循环条件,使用大括号将循环操作括起来。

	2while 循环和 do-while 循环的不同处如下:
		2.1.语法不同:
		与 while 循环相比,do-while 循环将 while 关键字和循环条件放在后面,而且前面多了 do 关键字,后面多了一个分号。
		2.2.执行次序不同:
		while 循环先判断,再执行。do-while 循环先执行,再判断。一开始循环条件就不满足的情况下,while 循环一次都不会执行,do-while 循环则不管什么情况下都至少执行一次。

7、for循环 和 增强for循环

for循环语法格式如下:

for(条件表达式1;条件表达式2;条件表达式3) {
    语句块;
}

for 循环中 3 个条件表达式的含义如下表所示:
for 关键字后面括号中的 3 个条件表达式之间必须用“;”隔开。
在这里插入图片描述
for 循环语句执行的过程为:
1. 首先执行条件表达式 1 进行初始化
2. 然后判断条件表达式 2 的值是否为 true
3. 如果为 true,则执行循环体语句块;否则直接退出循环。
4. 最后执行表达式 3,改变循环变量的值,至此完成一次循环。
5. 接下来进行下一次循环,直到条件表达式 2 的值为 false,才结束循环

for循环例子

//循环打印数字1-100
public class Test {
   public static void main(String[] args) {
 
      for(int i = 1; i <= 100; i++) {
         System.out.println(i);
      }
      
   }
}

8、函数、方法

8.1. 定义:
习惯把函数也叫成方法,都是一个意思;函数是具备特定功能的一段代码块,解决了重复性代码的问题。
8.2. 函数存在的意义(定义函数的目的):
目的是为了提高程序的复用性和可读性。
8.3. 函数格式

修饰符  返回值类型  函数名( 形式参数类型  参数名 ){
	函数体语句;
	return  返回值;
}

详细内容参考:Java方法

9、练习题

题目1:

某银行推出了整存整取定期储蓄业务,其存期分为一年、两年、三年、五年,到期凭存单支取本息。存款年利率表如下:
​ 存期 年利率(%)
​ 一年 2.25
​ 两年 2.7
​ 三年 3.25
​ 五年 3.6
请存入一定金额(1000起存),存一定年限(四选一),计算到期后得到的本息总额。
提示:
​ 存入金额和存入年限均由键盘录入
​ 本息计算方式:本金+本金×年利率×年限
参考答案:

package code00;

import java.util.Scanner;

public class Bank {
    public static void main(String[] args) {
        /*
        要求:
            1、存款金额不少于1000元(少于1000元提示重新输入)
            2、存款时长只能选择1、2、3、5四种定期存款类型(不是以上四种时长提示重新输入)
            3、年利率:
                    1   2.25%
                    2   2.7%
                    3   3.25%
                    4   3.6%
            4、本息金额 = 本金 + 本金 * 年利率 * 存款时间
         */
        //存款金额使用int类型变量money表示
        //存款时长使用int类型变量mytime表示
        //本息(本金+利息总额)使用double类型变量total表示

        Scanner scanner = new Scanner(System.in);

        //一、使用scanner获取金额
        System.out.println("请输入存款金额:");
        int money = scanner.nextInt();//先获取一次金额
        while(money < 1000){
            //如果金额小于1000进入循环,直到金额满足要求为止
            System.out.println("你所存金额数目小于1000元,请重新输入存款金额:");
            money = scanner.nextInt();
        }
        //如果金额满足要求,输出提示,告知用户存款金额
        System.out.println("你所存的金额是"+money+"元");


        //二、使用scanner获取存款时长
        System.out.println("请输入存款时长:");
        int mytime = scanner.nextInt();//先获取一次时长
        while (mytime != 1 && mytime != 2 && mytime != 3 && mytime != 5){
            //当用户输入不是1.2.3.5任何一种时,就进入循环让用户重新输入
            System.out.println("你所存时长应该是1.2.3.5四种之一,请重新输入时长:");
            mytime = scanner.nextInt();
        }
        //如果时长满足要求,输入提示,告知用户存款时长
        System.out.println("你的存款时长是"+mytime+"年");

        scanner.close();

        //三、利用已经获取的的money和mytime两个变量,分别计算不同时长的本息总额
        if (mytime == 1){//当存款时长为1年时
            double total = money + money*0.0225*1;
            System.out.println("你存入"+money+"元"+mytime+"年的本息总额是"+total+"元");
        }else if (mytime == 2){//当存款时长为2年时
            double total = money + money*0.027*2;
            System.out.println("你存入"+money+"元"+mytime+"年的本息总额是"+total+"元");
        }else if (mytime == 3){//当存款时长为3年时
            double total = money + money*0.0325*3;
            System.out.println("你存入"+money+"元"+mytime+"年的本息总额是"+total+"元");
        }else if (mytime == 5){//当存款时长为5年时
            double total = money + money*0.036*5;
            System.out.println("你存入"+money+"元"+mytime+"年的本息总额是"+total+"元");
        }
    }
}

输入样例(不唯一):
在这里插入图片描述

题目2:

某商场购物可以打折,具体规则如下:
​ 普通顾客购不满100元不打折,满100元打9折;
​ 会员购物不满200元打8折,满200元打7.5折;
​ 不同打折规则不累加计算。
请根据此优惠计划进行购物结算,键盘录入顾客的类别(0表示普通顾客,1表示会员)和购物的折前金额(整数即可),输出应付金额(小数类型)。
参考答案:

package code00;

import java.util.Scanner;

public class VIP {
    public static void main(String[] args) {
        /*
        要求:
            1、普通顾客:
                不满100元不打折;      满100元打9折;
            2、会员:
                不满200元打8折;      满200元打7.5折;
            3、键盘录入顾客的类别(0表示普通顾客,1表示会员)其他数字重新输入
            4、键盘录入购物的折前金额(整数即可)付款金额小于0时应重新输入
         */
        Scanner scanner = new Scanner(System.in);
        //一、获取客户类型(int类型变量pelple表示)
        System.out.println("请输入顾客类型(0表示普通顾客,1表示会员):");
        int people = scanner.nextInt();//先获取一次
        while (people != 0 && people != 1){
            //当输入不是0也不是1时,进入循环,重新输入
            System.out.println("你输入的顾客类型有误,请重新输入0/1:");
            people = scanner.nextInt();
        }//输入正确后跳出循环,给出提示,告知顾客类型
        if (people == 0){
            System.out.println("你是普通顾客,非会员!");
        }else if (people == 1){
            System.out.println("您是本店VIP顾客,欢迎光临本店~");
        }

        //二、获取打折前金额(int类型变量money表示)
        System.out.println("请输入打折前金额:");
        int money = scanner.nextInt();//先获取一次
        while (money < 0){
            System.out.println("金额有误,请重新输入");
            money = scanner.nextInt();
        }//金额没问题后提示用户金额
        System.out.println("你打折前的总金额是"+money+"元");

        scanner.close();

        //三、根据顾客类型进行分类计算(折后金额用double类型变量total表示)
        if (people == 0){//普通顾客
            if (money < 100){
                //不满100元不打折
                double total = money;
                System.out.println("非会员不满100元不打折");
                System.out.println("你的消费总额是"+total+"元");
            }else {
                //满100元打九折
                double total = money*0.9;
                System.out.println("非会员满100元打九折");
                System.out.println("你的消费总额是"+total+"元");
            }
        }else {//VIP顾客
            if (money < 200){
                //不满200元打八折
                double total = money*0.8;
                System.out.println("会员不满200元打八折");
                System.out.println("您的消费总额是"+total+"元");
            }else {
                //满200元打七五折
                double total = money*0.75;
                System.out.println("会员满200元打七五折");
                System.out.println("您的消费总额是"+total+"元");
            }

        }

    }
}

效果展示(所有可能的结果):
1.普通不满100
在这里插入图片描述

2.普通满100
在这里插入图片描述

3.vip不满200
在这里插入图片描述

4.vip满200
在这里插入图片描述

题目3:

利用所学知识在控制台打印输出如下所示的“圣诞树”:

    *
   ***
  *****
 *******
*********
   ***   
   ***
   ***
   ***
package code00;
**参考答案:**
public class MyTree {
    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("   ***   ");
        System.out.println("   ***   ");
    }
}

输出样例:
在这里插入图片描述


文章标签:

原文连接:https://blog.csdn.net/weixin_43915293/article/details/124116538

相关推荐

云徙科技CTO李楠:技术和技术人,与数字化共同进化

Java通过反射注解赋值

Java开发学习(十五)----AOP入门案例及其工作流程解析

2022-07-21 第四组 java之继承

JavaScript进阶内容——BOM详解

注意 new BigDecimal(double val) 的使用

创建私有CA,我就用openSSL

JavaScript必须掌握的四大基础知识(数据类型、原型和原型链、闭包、异步 promise)

百度APP Android包体积优化实践(二)Dex行号优化

814. 二叉树剪枝 : 简单递归运用题

【综合笔试题】难度 3.5\u002F5,多解法热门二叉树笔试题

【java刷算法】牛客—剑指offer3栈、数组、递归、二分法的初步练习

JavaScript中一些流行的模块、vite快速搭建、vue3简梳理

JavaScript进阶内容——DOM详解

JavaScript基础系列(6):`this`这六种使用方式

【跟着大佬学JavaScript】之数组去重(结果对比)

Java开发学习(十四)----Spring整合Mybatis及Junit

Java代码优化的30个小技巧

JavaScript 中的单例内置对象(Global & Math)

JavaScript:聊聊作用域、作用域链与它的一些优化