变量的概念: 变量是一块存储空间的表示,
8种基本数据类型:
整型: byte short int long
浮点型: float double
字符: char
布尔: boolean
引用数据类型:
class定义的类, String Scanner
interface定义的接口
数组类型 int[] nums = {1,2,3,4};
运算符:
算术运算符
关系运算符
逻辑运算符
三元运算符
赋值运算符
移位运算符
Scanner是一个类,该类是jdk提供的一个工具类,用来向程序输入数据的。输出语句System.out.println;程序还要能够接收用户的数据。打败你与你无关,降维打击:高纬度的生物消灭低纬度生物,人三维的环境,灭掉二维的蚂蚁,三体: 地球往事、黑暗森林、死神永生。一个人带领中国科幻走向世界之巅。 歌者: 二向箔,把三维的太阳系的坍缩成绝对的二维。
Scanner的使用分为三步:
案例:
import java.util.Scanner; //1.导入Scanner工具类
public class Demo8{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入姓名:");
String name = input.next();//3.调用next方法获取用户的输入
System.out.print("请输入年龄:");
int age = input.nextInt();
System.out.print("请输入身高:");
double height = input.nextDouble();
System.out.print("请输入性别:");
char sex = input.next().charAt(0);
System.out.println("姓名:"+name);
System.out.println("年龄:"+age);
System.out.println("身高:"+height);
System.out.println("性别:"+sex);
input.close();
}
}
程序的结构主要包括三种: ①顺序结构②分支结构③循环结构
所有的程序从宏观角度都是顺序执行,自上而下依次执行程序逻辑。也是最简单的程序结构。但是从具体的业务模块来说有肯能是其他的条件结构、或者是循环结构。微观角度是分支或者循环多一点。
上面的Scanner用法的案例就是顺序结构,没有条件,程序依次逐行执行。
分支结构是有条件判断的业务,有些业务逻辑需要满足一定的条件才可以执行;否则不执行。点外卖,条件是周围三公里之内的门店,否则不点商户的外卖。骑单车,如果有免费卡就骑单车,否则不骑车。分支结构的两种实现方式if结构,switch结构。
①简单结构
语法:
if ( 条件表达式 ){
//业务代码块
}
表达式处理则执行业务代码块
否则不执行业务代码块
需求:请输入小明的成绩,判断是否及格。
import java.util.Scanner; //1.导入Scanner工具类
public class Demo9{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入小明的成绩:");
int score = input.nextInt();//接收用户的输入
if(score > 60){
System.out.println("成绩及格");
}
System.out.println("程序结束....");
input.close();
}
}
②if—else结构
需求:请输入小明的成绩,判断是否及格。
import java.util.Scanner; //1.导入Scanner工具类
public class Demo10{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入小明的成绩:");
int score = input.nextInt();//接收用户的输入
if(score > 60){
System.out.println("成绩及格");
} else {
System.out.println("成绩不及格");
}
System.out.println("程序结束....");
input.close();
}
}
如果if结构或者else结构,只有一句话可以省略大括号,但是不建议省略。
import java.util.Scanner; //1.导入Scanner工具类
public class Demo10{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入小明的成绩:");
int score = input.nextInt();//接收用户的输入
if(score > 60)
System.out.println("成绩及格");
else
System.out.println("成绩不及格");
System.out.println("程序结束....");
input.close();
}
}
如果if结构超过一句必须加大括号,如果else语句块超过一句可以不加;但是注意业务逻辑。
③多重if结构
需求: 如果大宝的期末考试成绩大于90分奖励iPad,大于80分奖励小米手机,大于70分奖励苹果手环,大于60没有奖励,低于60分没收零花钱,
分析: 以上需求不是两种情况,而是多种情况,所以可以使用多重if结构实现。
import java.util.Scanner; //1.导入Scanner工具类
public class Demo11{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入小明的成绩:");
int score = input.nextInt();//接收用户的输入
if(score > 90){
System.out.println("奖励iPad平板电脑");
} 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("没收所有的零花钱,参加银河补习班");
}
System.out.println("程序结束....");
input.close();
}
}
以上是范围判读,也可以是等值判断;
需求: 请输入你喜欢的汽车品牌,1.大众 2.红旗 3.宝马 4.奔驰 5.奇瑞 其他为止品牌。
import java.util.Scanner; //1.导入Scanner工具类
import javax.lang.model.util.ElementScanner6;
public class Demo12{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入你喜欢的汽车品牌:");
int brand = input.nextInt();//接收用户的输入
if(brand == 1){
System.out.println("大众汽车");
} else if(brand ==2){
System.out.println("红旗汽车");
} else if(brand ==3){
System.out.println("宝马");
}else if(brand ==4){
System.out.println("奔驰");
}else if(brand ==5){
System.out.println("奇瑞汽车");
}else{
System.out.println("其他品牌");
}
System.out.println("程序结束....");
input.close();
}
}
④嵌套if结构
需求: 请输入你喜欢的汽车品牌,1.大众 2.红旗 ;
选择品牌之后,再选择汽车的型号 10 表示 : 帕萨特 11表示高尔夫
如果选择是红旗: 20 表示红旗h7 21表示红旗h9
import java.util.Scanner; //1.导入Scanner工具类
import javax.lang.model.util.ElementScanner6;
public class Demo13{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入你喜欢的汽车品牌:");
int brand = input.nextInt();//接收用户的输入
if(brand == 1){
System.out.println("你选择的是大众汽车,请选择汽车型号:10 表示帕萨特 11表示高尔夫");
int type = input.nextInt();
if(type == 10){
System.out.println("恭喜你选择帕萨特");
}else if(type == 11){
System.out.println("高尔夫");
}
} else if(brand ==2){
System.out.println("你选择的是红旗汽车,请选择型号:20 表示红旗h7 21表示红旗h9");
int type = input.nextInt();
if(type == 20){
System.out.println("恭喜你选择红旗h7");
}else if(type == 21){
System.out.println("恭喜你选择红旗h9");
}
}
System.out.println("程序结束....");
input.close();
}
}
switch也是用来实现分支结构的,多路分支。与多重if不同,主要是等值判断,switch不用于区间判断。老家的吊扇,开关有6个档位,开关上面有个单词: switch , 如果1档是一个转速, 如果是2档另一转速。自动档汽车1~6个档位,如果是1档位一个速度,2档位高一个速度等等。
语法:
int num = 3;//3档位
switch( 变量 ){
case 常量1:
业务代码块1
break;
case 常量2:
业务代码块2
break;
case 常量3:
业务代码块3
break;
case 常量4:
业务代码块4
break;
default:
默认业务
break;
}
switch: 转换,开关的意思
case: 如果,案例
break: 打断
default: 默认、缺省
需求:模拟点餐系统,星期一吃盖浇饭、星期二吃黄焖鸡、星期三吃米线、星期四吃拉面、星期五吃饺子默认吃红烧肉。周六周日改善生活。
import java.util.Scanner; //1.导入Scanner工具类
public class Demo14{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入星期几:");
int day = input.nextInt();
switch (day) {
case 1:
System.out.println("星期一吃盖浇饭");
break;
case 2:
System.out.println("星期二吃黄焖鸡");
break;
case 3:
System.out.println("星期三吃米线");
break;
case 4:
System.out.println("星期四吃拉面");
break;
case 5:
System.out.println("星期五吃鸡");
break;
default:
System.out.println("周末改善生活吃红烧肉...");
break;
}
System.out.println("程序结束....");
input.close();
}
}
可以支持的数据类: byte short int char String enum(枚举类型)
import java.util.Scanner; //1.导入Scanner工具类
public class Demo15{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入星期几:");
//int day = input.nextInt();
//byte day = 1;
//short day =1;
//long day = 1; //Demo15.java:11: 错误: 不兼容的类型: 从long转换到int可能会有损失
//char day = 1;//可以编译
String day = "1";
switch (day) {
case "1":
System.out.println("星期一吃盖浇饭");
break;
case "2":
System.out.println("星期二吃黄焖鸡");
break;
case "3":
System.out.println("星期三吃米线");
break;
case "4":
System.out.println("星期四吃拉面");
break;
case "5":
System.out.println("星期五吃鸡");
break;
default:
System.out.println("周末改善生活吃红烧肉...");
break;
}
System.out.println("程序结束....");
input.close();
}
}
需求: 输入月份判断该月多少天。
import java.util.Scanner; //1.导入Scanner工具类
import javax.lang.model.util.ElementScanner6;
public class Demo16{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入年份:");
int year = input.nextInt();
System.out.print("请输入月份:");
int month = input.nextInt();
int days = 0;//存储天数
switch(month){
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if( (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) ){
System.out.println(year + "是闰年");
days = 29;
}else{
days = 28;
}
break;
default:
days = 31;
break;
}
System.out.println(year + "年"+month + "有"+days+"天");
System.out.println("程序结束....");
input.close();
}
}
如果switch结构没有break语句,代码会依次向下执行,直到遇到break为止。
import java.util.Scanner; //1.导入Scanner工具类
public class Demo17{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入星期几:");
int day = input.nextInt();
switch (day) {
case 1:
System.out.println("星期一吃盖浇饭");
//break;
case 2:
System.out.println("星期二吃黄焖鸡");
//break;
case 3:
System.out.println("星期三吃米线");
//break;
case 4:
System.out.println("星期四吃拉面");
break;
case 5:
System.out.println("星期五吃鸡");
break;
default:
System.out.println("周末改善生活吃红烧肉...");
break;
}
System.out.println("程序结束....");
input.close();
}
}
输出:
D:\>java Demo17
请输入星期几:1
星期一吃盖浇饭
星期二吃黄焖鸡
星期三吃米线
星期四吃拉面
程序结束....
分为两种情况,①如果default有break语句,没有影响;②有default没有break语句,会执行break为止。
import java.util.Scanner; //1.导入Scanner工具类
public class Demo18{
public static void main(String [] args){
Scanner input = new Scanner(System.in);//2.创建Scanner对象
System.out.print("请输入星期几:");
int day = input.nextInt();
switch (day) {
//switch放到首位
default:
System.out.println("周末改善生活吃红烧肉...");
break;//注释到break测试一下。
case 1:
System.out.println("星期一吃盖浇饭");
break;
case 2:
System.out.println("星期二吃黄焖鸡");
break;
case 3:
System.out.println("星期三吃米线");
break;
case 4:
System.out.println("星期四吃拉面");
break;
case 5:
System.out.println("星期五吃鸡");
break;
}
System.out.println("程序结束....");
input.close();
}
}
如果有break,程序执行没有影响
D:\>java Demo18
请输入星期几:7
周末改善生活吃红烧肉...
程序结束....
如果没有break
D:\>java Demo18
请输入星期几:6
周末改善生活吃红烧肉...
星期一吃盖浇饭
程序结束....