Java学习第三天:
前一天内容回顾:
1、类型转换
自动类型转换:同类型间由小往大转
float f1=3.14;
double d1=f1;
double d2=3.14f;
int int1=f1;(false)
f1=123;
强制转换:由大往小转 会失去精度
double d1=3.14;
float f1=(float)d1;
2、算术运算符
int / int 结果还是int类型
%(模运算)
3、比较运算符
计算结果是布尔值(boolean)
练习1:
声明两个变量,交换值,两种方法实现
package cn.qc.javaproject1706.day3;
public class Ex1 {
public static void main(String[] args){
//方式一
int num1=1;
int num2=2;
System.out.println("交换前,num1="+num1+",num2="+num2);
int ret=0;
ret=num1;
num1=num2;
num2=ret;
System.out.println("交换后,num1="+num1+",num2="+num2);
//方式二
int num4=1;
int num5=2;
System.out.println("交换前,num4="+num4+",num5="+num5);
//另一种 num4=num4+num5;
//num5=num4-num5;
//num4=num4-num5;
num4=num5-num4;
num5=num5-num4;
num4=num5+num4;
System.out.println("交换后,num4="+num4+",num5="+num5);
}
}
练习2:
请输入一个数,判断是奇数还是偶数
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Ex2 {
public static void main(String[] args){
Scanner ip=new Scanner(System.in);
System.out.println("请输入一个数:");
int num=ip.nextInt();
if(num%2!=0){
System.out.println("这个数是奇数");
}
else{System.out.println("这个数是偶数");
ip.close();
}
}
}
今日内容:
1、运算符
2、程序三大结构:
顺序结构
选择结构
循环结构
运算符:
表达式:变量与运算符的组合
int num1=1;
int num2=3;
int ret=num1+num2;
逻辑运算符:
与或非
在编程中,往往需要多个条件,要同时满足 需要满足其一
例子:
登录功能 需要账号和密码,同时正确
逻辑与:&& 表示同时满足 同时为真(true)
login.java
表达式1 表达式2 结果
&& true true true
false true false
true false false
false false false
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Login {
public static void main(String[] args){
Scanner ip=new Scanner(System.in);
System.out.println("请输入账号:");
String userId=ip.next();
System.out.println("请输入密码:");
String userPwd=ip.next();
if(userId.equals("admin")&&"123456".equals(userPwd)){
System.out.println("登陆成功!");
}else{
System.out.println("账号或密码错误!");
}
}
}
逻辑或:|| 满足其中任何一个条件就可以(只要一个为true)
例子:
征兵条件:你是否为大学生或年满18岁
Levy.java
表达式1 表达式2 结果
|| true true true
false true true
true false true
false false false
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Levy {
public static void main(String[] args){
Scanner ip=new Scanner(System.in);
//年龄要求
int age=18;
//是否是大学生
boolean isStudent=false;
System.out.println("请输入你的年龄:");
int ipAge=ip.nextInt();
System.out.println("你是否是在籍大学生?");
int flag=ip.nextInt();
if(flag==1){
isStudent=true;
}
//是否满足条件之一
if((ipAge>=age)||(isStudent==true)){
System.out.println("你满足征兵条件!");
}else{
System.out.println("你不满足征兵条件!");
}
}
}
逻辑非: ! 颠倒是非
IsExit.java
表达式1 结果
! true false
false true
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class IsExit {
public static void main(String[] args){
Scanner ip=new Scanner(System.in);
System.out.println("你是否要退出!");
int select=ip.nextInt();
// if(select==1){
// System.out.println("程序退出!");
// System.exit(0);
// }else{
// System.out.println("程序继续使用");
// }
if(!(select==1)){
System.out.println("程序继续使用");
}else{
System.out.println("程序退出!");
//程序关闭
System.exit(0);
}
}
}
练习3:
员工管理系统功能之一
条件一:绩效为优的月数在5个月以上
或者
工作年限在三年以上 同时 正常出勤的月数为10以上
通过输入来判断员工能否被评为优秀
Ex3.java
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Ex3 {
public static void main(String[] args) {
Scanner ip=new Scanner(System.in);
System.out.println("请输入绩效为A的月数:");
int isA=ip.nextInt();
System.out.println("请输入你的工作年限:");
int years=ip.nextInt();
System.out.println("请输入正常出勤的月数:");
int months=ip.nextInt();
if((isA>5)||(years>3&&months>10)){
System.out.println("被评为优秀!");
}else{
System.out.println("不能被评为优秀!");
}
}
}
练习4:
员工晋升职称条件
PG 程序员 编码 码农
SE 组长 不编码 设计(业务流程、页面等) 控制质量
PM 项目经理
在本公司参与项目十个以上,并且每个项目平均参与时间五个月以上
或者
工作年限在三年以上,且有两年被评为优秀员工
Ex4.java
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Ex4 {
public static void main(String[] args) {
Scanner ip=new Scanner(System.in);
System.out.println("请输入您参与的项目个数:");
int proNum=ip.nextInt();
System.out.println("请输入您每个项目参与的时长:");
int avgTime=ip.nextInt();
System.out.println("请输入您的工作年限:");
int years=ip.nextInt();
System.out.println("请输入您被评为优秀员工的次数:");
int count=ip.nextInt();
if((proNum >= 10 && avgTime >= 5) || (years >= 3 && count >= 2)){
System.out.println("恭喜您可以晋升!");
}else{
System.out.println("您需要努力了!");
}
}
}
赋值运算符:
= int age=10;
int age=age+2;
赋值运算符作用:把=的右边的计算结果赋值给=左边的变量或表达式
先计算=右边
+= -= *= /= %=
见Demo.java
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
import java.util.Scanner;
public class Demo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner ip=new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age=ip.nextInt();
//age=age+5;
//简化为
age+=5;
System.out.println("5年后的年龄为:"+age);
//age-=3 age=age-3
//age*=3 age=age*3
}
}
总结:
算术运算符、比较运算符、逻辑运算符、赋值运算符
(优先级由高到低)
程序的结构:
顺序结构、选择结构(条件结构)、循环结构
顺序结构:按照编码顺序自上而下逐行编译、执行的
选择结构:是根据条件来执行代码块,符合条件时执行,不符合条件就不执行
if语句:
fi(条件){
语句块1;
}
if(条件){
语句块1;
}else{
语句块2;
}
多重if选择结构
if(条件1){
//
}else if(条件2){
//
}else{
//
}
成绩判断:
输入一个百分制的分数
输入对应的五分制成绩
见代码Score.java
注意要用:(String strScore = "";)
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Score {
public static void main(String[] args) {
Scanner ip=new Scanner(System.in);
System.out.println("请输入一个成绩:");
int score=ip.nextInt();
String strScore = "";
if(score<60){
strScore = "不及格";
}else if(score >= 60 && score<70){
strScore ="及格";
}else if(score >= 70 && score<80){
strScore ="中等";
}else if(score >= 80 && score<90){
strScore ="良好";
}else if(score >= 90 && score<=100){
strScore ="优秀";
}else{
strScore ="成绩不合理!";
}
System.out.println("你的五分制成绩为:"+strScore);
}
}
使用场合:区间值判断 或多情况判断吗
薪资等级查询
3000~5000 1
5001~7000 2
7001~8000 3
8001~10000 4
10000以上 5
嵌套if选择结构
if(条件){
if(条件){
}
}
Ex5.java
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Ex5 {
public static void main(String[] args) {
Scanner ip=new Scanner(System.in);
System.out.println("请输入你的薪资:");
int money=ip.nextInt();
String strMoney = "";
if(money >= 3000 && money <=5000){
strMoney = "为1级";
}else if(money >= 5001 && money <= 7000){
strMoney = "为2级";
}else if(money >= 7001 && money <= 8000){
strMoney = "为3级";
}else if(money >= 8001 && money <= 10000){
strMoney = "为4级";
}else if(money > 10000){
strMoney = "为5级";
}
System.out.println("你的薪资为:"+strMoney);
}
}
前提条件:是否为在籍学生
条件:性别:男 100米速度 15S
性别:女 18S
Demo2.java
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Demo2 {
public static void main(String[] args) {
Scanner ip=new Scanner(System.in);
System.out.println("你是否在籍? 1是 0否");
int is =ip.nextInt();
if(is==1){
System.out.println("请输入你的性别:");
char sex=ip.next().charAt(0);
System.out.println("请输入你的百米速度:");
float speed=ip.nextFloat();
if(sex=='男' && speed <= 15){
System.out.println("你可以参加男子组百米竞赛!");
}else if(sex=='女' && speed <= 18){
System.out.println("你可以参加女子组百米竞赛!");
}else{
System.out.println("你跑的太慢了,不具备参赛资格!");
}
}else{
System.out.println("你不在籍,不具备参赛资格!");
}
}
}
签订劳动合同条件审核
前提:体检是否通过
条件:是否有上家公司的离职证明
是否是本科生或者专科生
技术面试是否通过
可以签订劳动合同
Ex6.java
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Ex6 {
public static void main(String[] args) {
Scanner ip = new Scanner(System.in);
System.out.println("你的体检是否通过? yes/no");
String isCheck = ip.next();
if (isCheck.equals("yes")) {
System.out.println("是否在上一家公司离职?yes/no");
String leave = ip.next();
System.out.println("你的学历是?本科/专科");
String study = ip.next();
System.out.println("技术方面是否通过?yes/no");
String isPass = ip.next();
if (leave.equals("yes") && (study.equals("本科") || study.equals("专科")) && isPass.equals("yes")) {
System.out.println("恭喜你,成为公司的一员!");
} else {
System.out.println("你的入职未通过!");
}
} else {
System.out.println("不可以签订劳动合同!");
}
}
}
开关switch等同于 if
switch(表达式){
case 值1;
//语句块
break;
case 值2;
//语句块;
break;
default;
//语句块;
break;
}
判断身份:
见代码Switch.java
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Switch {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner ip = new Scanner(System.in);
System.out.println("请输入要验证的身份编号:");
int num = ip.nextInt();
String roleName = "";
switch (num) {
case 1:
roleName = "超级管理员";
break;
case 2:
roleName = "一级管理员";
break;
case 3:
roleName = "二级管理员";
break;
case 4:
roleName = "普通用户";
break;
default:
roleName = "编号不存在,输入错误!";
break;
}
System.out.println("对应的角色名称:" + roleName);
}
}
[说明:]
1、switch表达式的类型
在JDK1.6以前 只能是int byte short char 类型
在JDK1.6及以后 增加了String
eg:float f=3.14f;
switch(f){
} 是不允许的
2、break不是必须的,但是省略后会直接进入下一个case里面
break的作用是跳出switch语句块
3、default不是必须的 位置可以放在switch的任何位置
4、case后面的值不允许重复
switch和多重选择结构很多情况可以通用,选择的标准
多重if选择结构更适用于:区间值判断
switch更适用于:等值判断
员工管理系统的应用
Hr.java
package cn.qc.javaproject1706.day3;
import java.util.Scanner;
public class Hr {
public static void main(String[] args) {
Scanner ip = new Scanner(System.in);
System.out.println("********************************");
System.out.println("***********员工管理系统**********");
System.out.println("********************************");
System.out.println("1、查看员工信息");
System.out.println("2、员工入职办理");
System.out.println("3、优秀员工评选");
System.out.println("4、工资发放");
System.out.println("请输入你要操作的功能序号");
int menu = ip.nextInt();
switch (menu) {
case 1:
System.out.println("查看员工信息");
break;
case 2:
System.out.println("员工入职办理");
break;
case 3:
System.out.println("优秀员工评选");
break;
case 4:
System.out.println("工资发放");
break;
default:
System.out.println("输入错误!");
break;
}
}
}
明天内容:
单目运算符:++ --
循环运算符