一、basic
3、day03
0) day03_all.txt
回顾:
1.变量:存数的
int a; int b,c;
int a=5; int a; a=5;
int b=a+10; System.out.println(b);
a=a+10;
System.out.println(m);
int m;
System.out.println(m);
int m = 4.5;
2.基本数据类型:
1)int:整型,4个字节,5,25,250...
2)long:长整型,8个字节,5L,250L,10000000000L...
3)double:浮点型,8个字节,3.14,5.678,0.5,56.0...
4)boolean:布尔型(默认false),1个字节,true,false
5)char:字符型,2个字节,'你','y','0',' '...
3.基本数据类型的转换:
1)两种方式:
1.1)自动类型转换:小到大
1.2)强制类型转换:大到小
(要转换为的数据类型)变量
有可能会溢出或精度丢失
2)两点规则:
byte b1 = 5;
byte b2 = 6;
byte b3 = b1+b2;
byte b3 = (byte)(b1+b2);
4.Scanner的用法:
import java.util.Scanner;
Scanner scan = new Scanner(System.in);
int age = scan.nextInt();
double price = scan.nextDouble();
作业时间:30:40—32:25
笔记:
1.运算符:
1)算术运算符:+-*/%,++,--
(1)%取余/取模:适用于整数,char类型(本质为int)以及浮点数
System.out.println(8.2345%2);
(2)++/--:
1>单独使用时,在前后无差别,eg:++a; a++;
2>被使用时,在前在后有差别. a++的值为a ++a的值为a+1
int a=5,b=5;
int c=a++;
int d=++b;
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
int a=5,b=5;
System.out.println(a++);
System.out.println(a);
System.out.println(++b);
System.out.println(b);
2)关系运算符:>,<,>=,<=,==,!= 注意:结果为boolean型 ————单条件控制
3)逻辑运算符:短路与(&&),短路或(||),非(!) 结果为boolean型 ————多条件控制
&&:两边都为真才为真,见false为false,当第一个为false,发生短路(即后面不在执行)
||:有一边为真则为真,见true为true,当第一个为true时,发生短路
逻辑运算是建立在关系运算之上的
int a=5,b=10,c=5;
boolean b3=a>b&&c++>2;
System.out.println(b3);
System.out.println(c);
4)赋值运算符:=,+=,-=,*=,/=,%=
5)字符串连接运算符:+
6)三目运算符:boolean?数1:数2
2.分支结构:
1)if:1条路
2)if...else:2条路
3)if...else if:多条路
4)switch...case:多条路
优点:效率高、结构清晰
缺点:整数、相等
break:跳出switch
练习:
1.完成AgeRange年龄判断程序
2.完成LeapYear闰年判断程序
3.完成Cashier柜台收银程序
4.完成ScoreLevel成绩等级判断程序
5.完成CommandBySwitch命令解析程序
课后作业:
1)第2天:完成第11、12题
2)第3天:完成所有
int num=2;
if(num==1){
111
}else if(num==2){
222
}else if(num==3){
333
}else{
666
}
如果需求正好是对整数来判断相等,首选switch...case
if(score>=0 && score<=100){
if(score>=90){
System.out.println("A-优秀");
}else if(score>=80){
System.out.println("B-良好");
}else if(score>=60){
System.out.println("C-中等");
}else{
System.out.println("D-不及格");
}
}else{
System.out.println("成绩不合法");
}
A:成绩大于等于90
B:成绩大于等于80并且小于90
C:成绩大于等于60并且小于80
D:成绩小于60
1)ABCD四个档,只有可能走其中之一
2)若没有最后的else,ABC并非必走其中之一
3)若有最后的else,ABCD必走其中之一
int score = 45;
if(score>=90){
A-优秀
}else if(score>=80){
B-良好
}else if(score>=60){
C-中等
}else{
D-不及格
}
int score = 95;
if(score>=90){
A-优秀
}else{
if(score>=80 && score<90){
B-良好
}else{
if(score>=60 && score<80){
C-中等
}else{
if(score<60){
D-不及格
}
}
}
}
满足条件就干事,不满足就不干事-------------if
满足条件就干事,不满足干另一个事-----------if...else
满500打8折,不满500不打折------if
满500打8折,不满500打9折-------if...else
任何复杂的程序逻辑都可以通过三种结构来实现:
1)顺序结构:从上往下逐行执行,每句必走
2)分支结构:有条件的执行某语句,并非每句必走
3)循环结构:
打8折------------------有条件的执行
减100------------------有条件的执行
满500打8折
满499减100
3件7折,2件8折,1件9折
数量-------------超市购物系统(double)
-------------淘宝系统(int)
-------------股票系统(int)
闰年的判断公式:
1)能被4整除并且不能被100整除
或者
2)能被400整除
1)year%4==0 && year%100!=0
||
2)year%400==0
(year%4==0 && year%100!=0) || year%400==0
2000是闰年
2004是闰年
2001不是闰年
并且,或者
age>=18
&&
age<=50
1)AgeRange.java
package day03;
import java.util.Scanner;
public class AgeRange {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入年龄:");
int age = scan.nextInt();
System.out.println(age>=18 && age<=50);
}
}
2) Cashier.java 柜台收银程序
package day03;
import java.util.Scanner;
public class Cashier {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入单价:");
double unitPrice = scan.nextDouble();
System.out.println("请输入数量:");
double amount = scan.nextDouble();
System.out.println("请输入金额:");
double money = scan.nextDouble();
double totalPrice = unitPrice*amount;
if(totalPrice>=500){
totalPrice*=0.8;
}
if(money>=totalPrice){
double change = money-totalPrice;
System.out.println("总价为:"+totalPrice+",找零为:"+change);
}else{
System.out.println("ERROR!您给的钱不够");
}
}
}
3) CommandBySwitch.java 命令解析程序
package day03;
import java.util.Scanner;
public class CommandBySwitch {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请选择功能: 1.显示全部记录 2.查询登录记录 0.退出");
int command = scan.nextInt();
switch(command){
case 1:
System.out.println("显示全部记录");
break;
case 2:
System.out.println("查询登录记录");
break;
case 0:
System.out.println("欢迎下次再来");
break;
default:
System.out.println("输入错误");
}
}
}
4) ConditionDemo.java 分支结构的演示
package day03;
public class ConditionDemo {
public static void main(String[] args) {
int num = 7;
switch(num){
case 1:
System.out.println(111);
break;
case 2:
System.out.println(222);
break;
case 3:
System.out.println(333);
break;
default:
System.out.println(666);
}
}
}
5) LeapYear.java 闰年的判断
package day03;
import java.util.Scanner;
public class LeapYear {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入年份:");
int year = scan.nextInt();
boolean flag = (year%4==0 && year%100!=0)
||
year%400==0;
String str = flag ? year+"是闰年" : year+"不是闰年";
System.out.println(str);
}
}
6) OperDemo.java 运算符的演示
package day03;
public class OperDemo {
public static void main(String[] args) {
}
}
7) ScoreLevel.java 成绩等级判断
package day03;
import java.util.Scanner;
public class ScoreLevel {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
System.out.println("请输入成绩");
int score = scan.nextInt();
if(score<0 || score>100){
System.out.println("成绩不合法");
}else if(score>=90){
System.out.println("A-优秀");
}else if(score>=80){
System.out.println("B-良好");
}else if(score>=60){
System.out.println("C-中等");
}else{
System.out.println("D-不及格");
}
}
}