热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

IF分支结构(如何判断是否为整数)

Java学习第四天,内容是ifelse结构,Scanner语法的掌握练习,今天自己想出来一个判断整数的语句,很开心,语句如下:numsc.nextFloat();if((int)n

Java学习第四天,内容是if else结构,Scanner 语法的掌握练习,今天自己想出来一个判断整数的语句,很开心,语句如下:

num = sc.nextFloat();
if ((int)num != num )
把用户输入的数字赋值给 num ,然后把这个数字整型化,如果得出的结果不变,说明输入的是整数,如果整型后的num与之前不一样,说明输入的数字不是整数

今天笔记如下:

if分支结构

1. 代码运行过程中的常见结构

顺序结构
代码从上到下,从左至右执行,最基本原则。
分支结构
路上的风景不一样,向左走向右走结果不一样。
代码满足不同的条件,执行不同的结果
循环结构
吃饭,睡觉,撸猫,辅导,上课
代码中存在需要多次执行的情况,这里会使用到循环结构

2. 分支结构

2.1 if 分支结构

if (/* 条件判断 */) {
// 语句体
}
/* 执行流程: 当前程序运行到if结构时,首先执行条件判断,条件判断的结果是一个boolean类型,如果条件判断为true,执行语句体,为false,不能执行语句体。 最后都会执行到大括号之外 */

/* if 分支结构演示 */
class Demo2 {
public static void main(String[] args) {
// 假设你兜里有10块钱
// int mOney= 10;

// 假设你兜里有1块钱
int money = 10;

// money > 5 是一个条件判断,结果是一个boolean
if (money >= 5) {
System.out.println("煎饼果子来一套");
money -= 5;

System.out.println("余额 :" + money + "元");
}

System.out.println("if大括号之外的代码~~~~");
}
}

/* 1. 判断一个字符是不是大写英文字母 */
class Demo3 {
public static void main(String[] args) {
// 定义一个字符类型char 的变量
char ch = '我';

/* 代码结构安排的明明白白的!!! */
if (ch >= 'A' && ch <= 'Z') {
System.out.println("这里是一个大写字母!!!");
}

System.out.println("大括号之外的语句!!!");
}
}

/* 2. 判断一个字符是不是英文字符 */
class Demo4 {
public static void main(String[] args) {
// 判断字符,需要使用一个char类型变量
char ch = '1';

/* (ch >= 'A' && ch <= 'Z') 大写字母范围 (ch >= 'a' && ch <= 'z') 小写字母范围 */
if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z')) {
System.out.println("这是一个英文字母");
}

System.out.println("if 大括号之外的代码");
}
}

/* 3. 判断一个年份是不是闰年 能被4整除但是不能被100整除,或者能被400整除 */
class Demo5 {
public static void main(String[] args) {
// 年份是一个整数,这里使用int类型
int year = 2009;

/* year % 4 == 0 && year % 100 != 0 || year % 400 == 0 */
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
System.out.println("是闰年");
}
}
}

2.2 if else 分支结构

/* if 分支结构中只能处理条件满足的情况,条件不满足没有任何的处理语句。 if else分支结构。 */
if (/* 条件判断 */) {
// true语句体
} else {
// false语句体
}
/* 执行流程: 代码执行到if else结构运行,首先判断if之后的条件判断,如果条件判断为true,执行true语句体,如果条件判断为false,执行false语句体。 世界上最遥远的距离是我在if里,你在else里 */

/* 1. 工资判断 月收入5000以上缴税 月收入5000以下不需要缴税 */
class Demo6 {
public static void main(String[] args) {
// 工资是一个浮点类型数据,这里使用double类型
double salary = 4999.0;

/* 语句体: 大括号以内的内容,也可以称之为代码块 */
if (salary > 5000) {
System.out.println("我为国家做贡献");
} else {
System.out.println("我会继续努力,为国家做贡献");
}
}
}

/* 2. 是否有女朋友 有 true 没有 false */
class Demo7 {
public static void main(String[] args) {
// 是否有女朋友就两种情况,true or false
boolean hasGirlFriend = false;

/* if () 小括号内需要的数据类型是boolean类型 hasGirlFriend 该变量就是一个boolean类型数据,可以直接用于 if 直接的判断 */
if (hasGirlFriend) {
System.out.println("奶茶买一送一");
} else {
System.out.println("路见不平一声吼,你还没有女朋友");
}
}
}

/* 3. 判断一个字符是不是数字字符 */
class Demo8 {
public static void main(String[] args) {
// 需要判定的是一个数字字符,这里需要char类型
char ch = '我';

/* 这里操作判断的是一个字符类型数据 */
if (ch >= '0' && ch <= '9') {
System.out.println("该字符是一个数字字符");
} else {
System.out.println("该字符不是一个数字字符");
}
}
}

2.3 if else if 分支结构

学生成绩的等级划分:
90 ~ 100 秀儿
80 ~ 90 良儿
70 ~ 80 中儿
60 ~ 70 格儿
60 以下 让你爹穿着拖鞋来学校一趟
用户购物VIP等级
100 ~ 1000 铜牌会员
1001 ~ 5000 银牌会员
5001 ~ 10000 金牌牌会员
10001 ~ 50000 钻石会员
50001 黑钻会员

if (/* 条件匹配1 */) {
// 处理方式1
} else if (/* 条件匹配2 */) {
// 处理方式2
} else if (/* 条件匹配3 */) {
// 处理方式3
} else {
// 无匹配项最终处理方式
}
/* 执行流程: 代码执行到if else if结构,从上至下,匹配if之后小括号里面的内容,条件匹配成功,执行对应的处理方式,结束分支结构运行。如果没有任何的一个条件匹配,执行else中的语句,也会终止条件匹配 【注意】 else if个数不限制,可以有多个!!! */

/* 用户购物VIP等级 100 ~ 1000 铜牌会员 1001 ~ 5000 银牌会员 5001 ~ 10000 金牌牌会员 10001 ~ 50000 钻石会员 50001 黑钻会员 */
class Demo9 {
public static void main(String[] args) {
// 用户的消费数据按照int类型考虑
int money = 50001;

if (money >= 100 && money <= 1000) {
System.out.println("铜牌会员");
} else if (money > 1000 && money <= 5000) {
System.out.println("银牌会员");
} else if (money > 5000 && money <= 10000) {
System.out.println("金牌会员");
} else if (money > 10000 && money <= 50000) {
System.out.println("钻石会员");
} else if (money > 50000) {
System.out.println("黑钻会员");
} else {
System.out.println("非会员...");
}
}
}

/* 学生成绩的等级划分: 90 ~ 100 秀儿 80 ~ 90 良儿 70 ~ 80 中儿 60 ~ 70 格儿 60 以下 让你爹穿着拖鞋来学校一趟 */
class Demo10 {
public static void main(String[] args) {
/* 成绩考虑存在0.5的情况,需要使用浮点类型数据 这里采用float类型 */
float score = 59F;

/* 成绩等级判断 */
if (score >= 90 && score <= 100) {
System.out.println("秀儿");
} else if (score >= 80) {
System.out.println("良儿");
} else if (score >= 70) {
System.out.println("中儿");
} else if (score >= 60) {
System.out.println("格儿");
} else {
System.out.println("让你爹穿着拖鞋来学校一趟");
}
}
}

【补充知识点 Scanner 复制粘贴就可以了】

以上代码每一次的结果都是需要用户修改代码,保存,重新编译之后才可以进行执行结果。对于普通用户而言,该操作可行吗?
我们需要给程序提供一种方式,用于接受用户输入的数据!!!
Scanner是Java中提供的用于从控制台输入数据到代码中的一种方式,存在一些弊端,容易导致一些错误,这里只要求大家了解一些必要的方法。
【Scanner操作哪里需要沾哪里】

Scanner使用流程
1. 点技能点,Java程序本身是没有直接使用Scanner的能力,这里需要点技能点。
官网操作【导包】
固定格式:
import java.util.Scanner;
放在class代码上一行

2. 需要得到一个Scanner的变量
固定格式:
Scanner sc = new Scanner(System.in);

3. 选择执行对应的方法,从键盘上获取对应的数据
获取int类型
int类型的变量 = sc.nextInt();
获取float类型
float类型的变量 = sc.nextFloat();
获取double类型
double类型的变量 = sc.nextDouble();
获取char类型
char类型的变量 = sc.nextLine().charAt(0);

【补充知识点 用户友好性提示】

代码运行需要站着用户的角度来思考问题。用户进行操作时,需要给予用户足够的提示和引导,告知用户当前操作如何完成,考虑代码的友好性!!!
用户粘性问题!!!用户提示!!!用户友好性!!!

【补充知识点 用户输入数据合法性判断】

就算在提示中告知用户需要输入的数据范围是多少,但是用户在实际使用的过程中,依然存在输入错误的情况。需要对于用户输入的数据进行合法性判断,如果用户输入的内容符合我们的判断逻辑需求,进入数据处理过程。如果不符合要求,直接终止程序!!!

/* 学生成绩的等级划分: 90 ~ 100 秀儿 80 ~ 90 良儿 70 ~ 80 中儿 60 ~ 70 格儿 60 以下 让你爹穿着拖鞋来学校一趟 */
// 导包,让当前Java代码可以使用Scanner
import java.util.Scanner;
class Demo10 {
public static void main(String[] args) {
/* 成绩考虑存在0.5的情况,需要使用浮点类型数据 这里采用float类型,这里赋值一个初值 */
float score = 0.0F;

// 需要得到一个Scanner的变量
Scanner sc = new Scanner(System.in);

/* 提示用户操作 */
System.out.println("请输入学生的成绩1 ~ 100:");
score = sc.nextFloat();

/* 验证用户输入数据的合法性 如果用户输入的数据不合法,终止程序!!! 不合法: 输入数据 > 100 或者 <0 */
if (score > 100 || score < 0) {
System.out.println("输入数据不合法!!!");
// 程序退出
System.exit(0);
}

/* 成绩等级判断 */
if (score >= 90 && score <= 100) {
System.out.println("秀儿");
} else if (score >= 80) {
System.out.println("良儿");
} else if (score >= 70) {
System.out.println("中儿");
} else if (score >= 60) {
System.out.println("格儿");
} else {
System.out.println("让你爹穿着拖鞋来学校一趟");
}
}
}

3. 总结

分支结构用于处理代码中出现的一些需要判断,并且按按条件处理的情况!!!
1. 条件约束考虑清楚
2. 处理的过程考虑清楚
3. 数据类型选择

4. 作业

1. 整理笔记,整理笔记,整理笔记!!!一定要整理笔记
2. 今天所有代码三遍以上!!!
3. 练习题
a. 用户输入一个【整数】,判断该整数是奇数还是偶数
奇数,打印 这是一个奇数
偶数,打印 这是一个偶数
b. 用户输入一个【浮点类型数据(float类型)】
判断大于99.99F 告知用户,您是VVIP
小于等于99.99F 告知用户 您不是VIP
c. 用户输入一个【整数】,判断当前用户的游戏段位是什么
【考虑用户输入合法性问题】
小于等于1000,青桐
1000 - 1200 白银
1200 - 1400 黄金
1400 - 1600 白金
1600 - 1800 钻石
1800 - 2000 大师
2000以上 王者

推荐阅读
  • 深入解析Java枚举及其高级特性
    本文详细介绍了Java枚举的概念、语法、使用规则和应用场景,并探讨了其在实际编程中的高级应用。所有相关内容已收录于GitHub仓库[JavaLearningmanual](https://github.com/Ziphtracks/JavaLearningmanual),欢迎Star并持续关注。 ... [详细]
  • 本文介绍如何从字符串中移除大写、小写、特殊、数字和非数字字符,并提供了多种编程语言的实现示例。 ... [详细]
  • 实用正则表达式有哪些
    小编给大家分享一下实用正则表达式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文介绍 Java 中如何使用 Year 类的 atMonth 方法将年份和月份组合成 YearMonth 对象,并提供代码示例。 ... [详细]
  • 深入解析动态代理模式:23种设计模式之三
    在设计模式中,动态代理模式是应用最为广泛的一种代理模式。它允许我们在运行时动态创建代理对象,并在调用方法时进行增强处理。本文将详细介绍动态代理的实现机制及其应用场景。 ... [详细]
  • 深入解析ArrayList与LinkedList的差异
    本文详细对比了Java中ArrayList和LinkedList两种常用集合类的特性、性能及适用场景,通过代码示例进行测试,并结合实际应用场景分析其优缺点。 ... [详细]
  • 本文深入探讨了 Java 中 LocalTime 类的 isSupported() 方法,包括其功能、语法和使用示例。通过具体的代码片段,帮助读者理解如何检查特定的时间字段或单位是否被 LocalTime 类支持。 ... [详细]
  • 为了解决不同服务器间共享图片的需求,我们最初考虑建立一个FTP图片服务器。然而,考虑到项目是一个简单的CMS系统,为了简化流程,团队决定探索七牛云存储的解决方案。本文将详细介绍使用七牛云存储的过程和心得。 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • ------------------------------————————————————————————————1.定义一个类,实现与被增强对象相同的接口2.在类中定义一个对象,记住被增强 ... [详细]
  • 本文探讨了在Java中如何正确地将多个不同的数组插入到ArrayList中,避免所有数组在插入后变得相同的问题。我们将分析代码中的问题,并提供解决方案。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 本文详细介绍了装饰者(Decorator)模式,这是一种动态地为对象添加职责的方法。与传统的继承方式不同,装饰者模式通过组合而非继承来实现功能扩展,从而提供更大的灵活性和可维护性。 ... [详细]
author-avatar
verde公寓_401
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有