【笔记】Java相关大杂烩②

if单分支情况下,如果没有加 {},那么默认只包含第一条语句。

if 和 else 分支后面如果包含多条语句,那么需要使用 {} 括起来。

不能随意地使用数学上的表达方式 90<=score<=100,需要改写成计算中的表达方式 score>=90 && score<=100。

判断闰年可以使用如下的逻辑来判断 year % 4 == 0 && year % 100 != 0 || year % 400 == 0。

switch 中的case语句,如果没有break结尾,会自动执行后面的语句,直到遇到break;

现有一景区为提高游客数量,增加门票收入,针对淡旺季和游客身份灵活制订价格。其规则如下:

每年的 1 月,2 月,6 月,7 月,8 月,12 月为旺季,在原价基础上打 8 折。

每年的 3 月,4 月,5 月,9 月,10 月,11 月为淡季,在原价基础上打 6 折。

如果游客是学生,在淡旺季的基础上再继续打 7 折。

如果游客是老师,在淡旺季的基础上再继续打 8 折。

其他游客不再继续打折。

原价为 100 元。

请根据以上信息帮助景区收银员完成门票订价工作。

import java.util.Arrays;
import java.util.List;
import java.util.Scanner; public class IfChallenge1{ public static void main(String[] args) {
System.out.println("请输入您的职业:");
Scanner zhiye = new Scanner(System.in);
String zhiye1 = zhiye.nextLine();
System.out.println("请输入您入园的月份:");
Scanner yuefen = new Scanner(System.in);
int yuefen1 = yuefen.nextInt();
int yuanjia = 100;
int c = 0;
//每年的 1 月,2 月,6 月,7 月,8 月,12 月为旺季
//在原价基础上打 8 折
List<String> yueList = Arrays.asList("1","2","6","7","8","12");
for (int i = 0;i<yueList.size();i++){
String aa = yueList.get(i);
int bb = Integer.valueOf(aa).intValue();
if (yuefen1 == bb){
c = 1;
}
}
//每年的 3 月,4 月,5 月,9 月,10 月,11 月为淡季
//在原价基础上打 6 折。
List<String> yue1List = Arrays.asList("3","4","5","9","10","11");
for (int i = 0;i<yue1List.size();i++){
String aaa = yue1List.get(i);
int bbb = Integer.valueOf(aaa).intValue();
if (yuefen1 == bbb){
c = 2;
}
}
int d = 0;
if (zhiye1.equals("学生")){
d = 1;
}else if(zhiye1.equals("老师")){
d = 2;
}
if (c==1){
yuanjia = 80;
}else if (c==2){
yuanjia = 60;
}
float dd = (float) 0.0;
if(d==1){
dd = (float) (yuanjia*0.7);
}else if (d==2){
dd = (float) (yuanjia*0.8);
}else if(d==0){
dd = (float) yuanjia;
}
System.out.println("您的门票价格为"+dd);
}
}
---------or 用类进行------------
import java.util.Arrays;
import java.util.List;
import java.util.Scanner; public class IfChallenge1{ public static String input(String aaa){
System.out.println("请输入您的职业:");
Scanner zhiye = new Scanner(System.in);
String zhiye1 = zhiye.nextLine();
return zhiye1;
}
public static Integer input1(Integer bbb){
System.out.println("请输入您入园的月份:");
Scanner yuefen = new Scanner(System.in);
int yuefen1 = yuefen.nextInt();
return yuefen1;
} public static void main(String[] args) {
String zhiye11 = input("a");
int yuefen11 = input1(1);
int yuanjia = 100;
int c = 0;
//每年的 1 月,2 月,6 月,7 月,8 月,12 月为旺季
//在原价基础上打 8 折
List<String> yueList = Arrays.asList("1","2","6","7","8","12");
for (int i = 0;i<yueList.size();i++){
String aa = yueList.get(i);
int bb = Integer.valueOf(aa).intValue();
if (yuefen11 == bb){
c = 1;
}
}
//每年的 3 月,4 月,5 月,9 月,10 月,11 月为淡季
//在原价基础上打 6 折。
List<String> yue1List = Arrays.asList("3","4","5","9","10","11");
for (int i = 0;i<yue1List.size();i++){
String aaa = yue1List.get(i);
int bbb = Integer.valueOf(aaa).intValue();
if (yuefen11 == bbb){
c = 2;
}
}
int d = 0;
if ("学生".equals(zhiye11)){
d = 1;
}else if("老师".equals(zhiye11)){
d = 2;
}
if (c==1){
yuanjia = 80;
}else if (c==2){
yuanjia = 60;
}
float dd = (float) 0.0;
if(d==1){
dd = (float) (yuanjia*0.7);
}else if (d==2){
dd = (float) (yuanjia*0.8);
}else if(d==0){
dd = (float) yuanjia;
}
System.out.println("您的门票价格为"+dd);
}
}

如果是那个蓝桥的课程,最好用下面的这个

import java.util.Arrays;
import java.util.List;
import java.util.Scanner; public class IfChallenge1{ public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入您的职业:");
String zhiye1 = sc.nextLine();
System.out.println("请输入您入园的月份:");
String yuefen = sc.nextLine();
int yuefen1 = Integer.valueOf(yuefen.trim()).intValue();
int yuanjia = 100;
int c = 0;
//每年的 1 月,2 月,6 月,7 月,8 月,12 月为旺季
//在原价基础上打 8 折
List<String> yueList = Arrays.asList("1","2","6","7","8","12");
for (int i = 0;i<yueList.size();i++){
String aa = yueList.get(i);
int bb = Integer.valueOf(aa).intValue();
if (yuefen1 == bb){
c = 1;
}
}
//每年的 3 月,4 月,5 月,9 月,10 月,11 月为淡季
//在原价基础上打 6 折。
List<String> yue1List = Arrays.asList("3","4","5","9","10","11");
for (int i = 0;i<yue1List.size();i++){
String aaa = yue1List.get(i);
int bbb = Integer.valueOf(aaa).intValue();
if (yuefen1 == bbb){
c = 2;
}
}
if (c==1){
yuanjia = 80;
}else if (c==2){
yuanjia = 60;
}
int d = 0;
if ("学生".equals(zhiye1)){
d = 1;
}else if("老师".equals(zhiye1)){
d = 2;
}
float dd = (float) 0.0;
if(d==1){
dd = (float) (yuanjia*0.7);
}else if (d==2){
dd = (float) (yuanjia*0.8);
}else if(d==0){
dd = (float) yuanjia;
}
System.out.println("您的门票价格为"+dd);
}
}

代码中使用三个变量接收控制台输入的三个整型数值。

然后,声明第四个整型变量 max 用来保存最大值。

最后,通过嵌套选择结构完成需求。

import java.util.Arrays;
import java.util.List;
import java.util.Scanner; public class IfChallenge2{ public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入第一个数字:");
String a = sc.nextLine();
int aa = Integer.valueOf(a.trim()).intValue();
System.out.println("请输入第二个数字:");
String b = sc.nextLine();
int bb = Integer.valueOf(b.trim()).intValue();
System.out.println("请输入第三个数字:");
String c = sc.nextLine();
int cc = Integer.valueOf(c.trim()).intValue(); int max = aa;
if(bb>cc){
if (bb>max){
max = bb;
}
}
if(cc>bb){
if (cc>max){
max = cc;
}
}
System.out.println("三个数字中最大的数字是"+max);
}
}
---------or 输入为20 60 30的情况------------
import java.util.Arrays;
import java.util.List;
import java.util.Scanner; public class IfChallenge2{ public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String aaa = in.nextLine();
String[] arr = aaa.split(" ");
System.out.println(arr[0] + arr[1] + arr[2]);
int aa = Integer.valueOf(arr[0]).intValue();
int bb = Integer.valueOf(arr[1]).intValue();
int cc = Integer.valueOf(arr[2]).intValue();
System.out.println("请输入第一个数字:");
System.out.println("请输入第二个数字:");
System.out.println("请输入第三个数字:"); // Scanner sc = new Scanner(System.in);
// System.out.println("请输入第一个数字:");
// String a = sc.nextLine();
// int aa = Integer.valueOf(a.trim()).intValue();
// System.out.println("请输入第二个数字:");
// String b = sc.nextLine();
// int bb = Integer.valueOf(b.trim()).intValue();
// System.out.println("请输入第三个数字:");
// String c = sc.nextLine();
// int cc = Integer.valueOf(c.trim()).intValue(); int max = aa;
if(bb>cc){
if (bb>max){
max = bb;
}
}else if(cc>bb){
if (cc>max){
max = cc;
}
}
System.out.println("三个数字中最大的数字是"+max);
}
}

打印出九九乘法表

程序如下:

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

伪随机数的生成

Math.random() 可以生成 0-1 之间的小数,但是不包含 1 。

结束循环的方式

结束循环的方式可以通过 break 和 continue 等语句外,还可以使用 return ,关闭虚拟机等形式,如果是在多重循环中也可以使用 break 标签名的方式进行流程控制。 这就相当于实现了 C 语言 goto 的效果。也许就是这个原因,在 java 中 goto 才一直做为保留的关键字

运行结束后i和j的值分别是?

int i=1,j=10;
do{
if(i++>--j)
continue;
}while(i<5);

初始化时 i = 1,j = 10,do-while 循环是先执行后判断的结构,所以第一次进入循环,条件判断 i++ > --j 等于 1 > 9,循环条件判断 i < 5,则是 2 < 5,第二次进入循环,条件判断 i++ > --j 等于 2 > 8,循环条件判断 i < 5,则是 3 < 5,第三次进入循环,条件判断 i++ > --j 等于 3 > 7,循环条件判断 i < 5,则是 4 < 5,第四次进入循环,条件判断 i++ > --j 等于 4 > 6,循环条件判断 i < 5,则是 5 < 5,这样循环就结束了,循环体中的 if 语句条件一直没有满足过,因此最终 i = 5 j= 6 。

顺序结构

是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的

选择结构

选择结构也被称为分支结构,它有特定的语法规则,程序根据要执行具体的逻辑运算结果来进行判断,选择执行不同的代码流程。

选择结构分为 if 结构 和 switch 结构

if 分支特点:

  • 可以针对一个范围的判断
  • 可以针对固定个数的常量值进行判断
  • 表达式的结果只能是 boolean 表达式

switch 分支特点:

  • 适合针对固定个数的常量值进行判断,在这种场景下性能优于 if 分支
  • default 相当于 if 分支中的 else
  • case 表达式的值只能是常量,switch (表达式) 只能是 byte、short、int、char、枚举(JDK5 以后)和 String(JDK7 以后)

循环结构

循环结构可以在程序满足指定条件的情况下,重复执行某一段代码来实现预期的功能。

循环结构分为 while 循环 、do ... while 循环 和 for 循环

三种循环语句进行互相转化,区别如下:

  • do ... while 循环先执行一次循环体再进行判断是否继续执行
  • for 循环和 while 循环只有在条件成立的时候才会去执行循环体
  • do ... while 和 while 适合在循环次数不确定的情况下使用
  • for 循环适合循环次数确定的场景

循环中控制循环执行的方式的语句称为循环的跳转语句,其方式有:

  • break: 结束当前的循环,继续执行当前循环外的语句
  • break lable: 在多重循环中,结束当前的循环跳到指定标签的循环处
  • continue: 跳过当次循环后面的代码,进入下一次循环的执行
  • return: 不仅结束循环,还结束当前方法
  • System.exit(0): 不仅结束当前方法,还关闭了 JVM(虚拟机)

如果是嵌套循环结构,则一般建议最多嵌套 3 层,多了结构太复杂容易出错

如果一个if语句条件为if((++i>0)||(++j>0)),其中i=0,j=0,则执行if以后的i和j分别是多少?

初始化 i = 0 ,j = 0,条件 ++i > 0 表达式返回 true ,那么 ++j > 0 表达式就不用执行了,所以结果 i = 1,j = 0

五子棋

棋子 1 使用

棋子 2 使用

棋盘组件使用

要求:棋盘最大不超过 16 X 16

程序如下:

import java.util.Scanner;
//五子棋
public class FiveInLine { public static void main(String[] args) {
//玩家A棋子
String playerA="";
//玩家B棋子
String playerB="";
//判断是否先手
boolean initiative=true;
//棋盘组件
String boardCompent="";
//横坐标
int horizontal =0;
//纵坐标
int vertical =0;
//键盘录入
Scanner input=new Scanner(System.in);
System.out.print("请设置正方形棋盘的大小:");
int size=input.nextInt();
//玩家姓名
String name=null;
//使用死循环不停下棋
while(true){
name=initiative?"张三":"李四";
//显示棋盘
System.out.println(" 壹贰叁肆伍陆柒捌玖拾屲亗岌岄岪峘");
for(int i=1;i<=size;i++){
System.out.print(i+(i<10?" ":""));
for (int j = 1; j <=size; j++) {
if(i==horizontal && j==vertical){
//落子的位置 此处仅为演示落子功能
System.out.print(initiative?playerA:playerB);
}else{
System.out.print(boardCompent);
}
}
System.out.println();
}
while(true){
System.out.print(name+"请输入落子的横坐标:");
horizontal=input.nextInt();
System.out.print(name+"请输入落子的纵坐标:");
vertical=input.nextInt();
if((vertical<=0|| vertical>size) || horizontal<=0 || horizontal>size){
System.out.println("落子不在棋盘中,请重新落子");
continue;
}
//切换先手轮流下棋
initiative=!initiative;
break;
}
}
}
}

面向对象和面向过程哪个性能高?

面向过程性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、 Linux/Unix等一般采用面向过程开发,性能是最重要的因素。面向对象易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护

【笔记】Java相关大杂烩②的更多相关文章

  1. 《深入了解java虚拟机》高效并发读书笔记——Java内存模型,线程,线程安全 与锁优化

    <深入了解java虚拟机>高效并发读书笔记--Java内存模型,线程,线程安全 与锁优化 本文主要参考<深入了解java虚拟机>高效并发章节 关于锁升级,偏向锁,轻量级锁参考& ...

  2. 找工作--Java相关

    Hi 各位 首先自我描述一下,80后程序员,现在在做Eclipse插件开发. 求Java相关职位(Java/Swing/Eclipse Plugin/Python etc), 或者Linux下C相关职 ...

  3. PHP笔记——java程序员看懂PHP程序

    PHP笔记——java程序员看懂PHP程序   php是一种服务器端脚本语言,类型松散的语言. <?php   ?>       xml风格 <script language=”ph ...

  4. 收集一些java相关的文章

    有些文章看了,以后想再看已经忘了在哪里了.故在此一一记录下那些值得看的文章. 1:如何确定Java对象的大小 中文版本 :http://article.yeeyan.org/view/104091/6 ...

  5. [java学习笔记]java语言核心----面向对象之this关键字

    一.this关键字 体现:当成员变量和函数的局部变量重名时,可以使用this关键字来区别:在构造函数中调用其它构造函数 原理:         代表的是当前对象.         this就是所在函数 ...

  6. [java学习笔记]java语言核心----面向对象之构造函数

    1.构造函数概念 特点: 函数名与类名相同 不用定义返回值类型 没有具体的返回值 作用:                给对象进行初始化 注意: 默认构造函数 多个构造函数是以重载出现的 一个类中如果 ...

  7. 分享一些JAVA相关资源

    前言 以前在学习JAVA时,因为搜索相关资源过于不便,所以在搜集了一些好用的资源之后,将此分享. 文档主要包括面试文档, JAVA的技术文档(如JAVA并发实战.设计模式之类),LINUX的相关文档以 ...

  8. 【java】Java相关学习参考链接(持续更新)

    How to do in java,https://howtodoinjava.com/,Java手册,分版本,并且有每个版本的新特性的详细解析. Java World,https://www.jav ...

  9. MySQL学习笔记-事务相关话题

    事务机制 事务(Transaction)是数据库区别于文件系统的重要特性之一.事务会把数据库从一种一致状态转换为另一个种一致状态.在数据库提交工作时,可以确保其要么所有修改都已经保存了,要么所有修改都 ...

  10. Java 笔记 —— java 和 javac

    Java 笔记 -- java 和 javac h2{ color: #4ABCDE; } a{ text-decoration: none !important; } a:hover{ color: ...

随机推荐

  1. folder-alias vscode左侧目录树 起别名 插件 (git decorations)

    folder-alias vscode左侧目录树 起别名 插件 插件 效果 不足 文件路径或目录路径中包含中文 会挂不上别名,纯英文路径没问题 有修改后,git会覆盖,不显示别名 个人意见 我的项目都 ...

  2. 摆脱鼠标系列 - vscode 单词自动翻译 快捷键 Alt + Z

    为什么 摆脱鼠标系列 - vscode 单词自动翻译 快捷键 Alt + Z 单词函数 省得每次都查字典了 插件名称 translate speaker 翻译朗读者API 截图

  3. ohmyposh 安装 - 基于 powershell7.2.1 - 最后改成 profile自定义

    今天偶然下载了 powershell7.2.1 https://mydown.yesky.com/pcsoft/468254.html 这想着 vscode也支持了,得装一个 ohmyposh的主题啊 ...

  4. k8s创建Pod的流程

    Kubernetes(k8s)中Pod的创建过程是一个涉及多个组件协作的复杂流程,下面将详细描述这个过程,确保内容的详尽性和深度. 一.用户提交创建请求 Pod的创建始于用户通过kubectl命令行工 ...

  5. 基于python的生理电信号采集的数据转换和处理软件

    一 前记 团队开发了几款生物电信号采集系统,可数据处理和转换工具刚开始用的都是matlab.这对一些客户来说,使用门槛还是有些高了.开发一套配套的软件,满足广大用户的需求,已经是迫在眉睫的事情了.最近 ...

  6. PDF的分割与合并

    1.进行PDF切割 python代码如下: # 20220521 # 1.选择要分割的文件 # 2.选择要保存的位置,分割为多个文件时,可自动用页码命名 # 3.输入要分割的页码,可以是一个范围1-2 ...

  7. vivado的非嵌入ILA的使用

    vivado非嵌入ILA的使用 1.实验原理 前面在vivado中联合vitis设计时接触过ila,那个时候采用的方法是直接调用IP核在原理图中连接.这个方法简单直接,可以将自己所需的测量信号转移到I ...

  8. KingbaseES V8R6集群运维案例-- 备库数据库服务意外down分析

    案例说明: KingbaseES V8R6一主二备架构的集群,两个备库节点sys_log日志分别不同时间点收到'fast shutdown request'的日志信息,导致备库数据库服务down,需要 ...

  9. KingabseES执行计划-分区剪枝(partition pruning)

    概述 分区修剪(Partition Pruning)是分区表性能的查询优化技术 .在分区修剪中,优化器分析SQL语句中的FROM和WHERE子句,以在构建分区访问列表时消除不需要的分区.此功能使数据库 ...

  10. debootstrap 命令行安装 debian12(stable) btrfs文件系统 uefi引导 (像arch一样)

    1,制作debian12 live 启动盘 2.联网,可以手机usb共享,可以用wpasupplicant连wifi 3.修改镜像列表 sudo nano /etc/apt/source.list 修 ...