今天的课主要是讲了以下几个部分(目前出于Java的基础巩固部分,知识点比较详细):
1.java中的运算符
public class Test3{
public static void main(String[] args){
//&相当于串联电路,同时为1时结果为1
//00011011
//00001110
//结果为00001010
// | 相当于并联电路,有一个一时结果为1,也可以发生在布尔表达式
//00011011
//00001110
//00011111
//&&和||主要发生在逻辑运算中,作用于多个布尔表达式
System.out.println(1 == 5 && 73 == 64);//false
//在进行逻辑判断时,建议将复杂的表达式添加括号
System.out.println(1 == 5 || 64 == 64);//true
//位运算要求表达式两边都得出结果(执行)
System.out.println(1 == 5 & 64 == 64);//false
System.out.println(1 == 5 | 64 == 64);//true
}
}
2.异或的原理以及引用
public class Test4{
public static void main(String[] args){
//对对碰原则:相同为0相异为1
//00000001
//00000010
//00000011
byte a = 2;
byte b = 1;
//与0异或
//与1异或
//a^0=a
//a^b=b^a(满足交换律)
//a^(b^c)=(a^b)^c(满足结合律)
System.out.println(a ^ b);
System.out.println(a ^ 0);
System.out.println(a ^ a);
System.out.println(a ^ 1);
}
}
与本身异或为0
与0异或为本身
可以用异或来完成两个数的值交换{
a=a^b;
b=a^b;
a=a^b;
}
3.if语句的讲解与实列(一个小型的专家系统);
public class Test6{
public static void main(String[] args){
int a = 6;
if(a == 5){
System.out.println("a的值为5");
}else{
System.out.println("a的值不为5");
}
System.out.println("if后的代码");
if(a == 5){
System.out.println("a的值为5");
}else if(a == 6){
System.out.println("a的值为6");
}else{
System.out.println("a的值为5或者6");
}
//专家系统:经过多次判断,在相应的结果中找出最符合的
//数据唯独:性别-》年龄-》工作-》收入
String sex = "男";
int age = 25;
String job = "讲师";
double salary = 9999.99;
//第一级判断
if(sex == "男"){
//第二级判断
if(age >= 20&& age <30){
//第三级判断
if(job == "蓝领"){
}else if(job == "白领"){
//第四级判断
if(salary < 20000 && salary >= 1000){
//输出结果
System.out.println("活着挺好的");
}
}
}else if(job == "讲师"){
if(salary < 10000 && salary >= 8000){
System.out.println("你活得还可以,不错");
}else if(salary < 8000 && salary >= 6000){
System.out.println("你还能活着");
}
}
}
if(age >= 30&& age < 40){
if(job == "蓝领"){
}else if(job == "白领"){
}else if(job == "讲师"){
if(salary < 9000 && salary >= 7000){
System.out.println("你活得还可以,不错");
}else if(salary < 7000 && salary >= 5000){
System.out.println("你还能活着");
}
}
}
}
}
例子中很好的运用if条件语句,并将if语句深化,对其进行嵌套,做出小型的专家系统;
4.switch语句及case的讲解与应用
//import:用来导入预定义(jdk中以及自定义)的类文件
import java.util.Scanner;
public class Test7{
public static void main(String[] args){
// jdk1.6之后支持String类型
Scanner sc = new Scanner(System.in);
//初始化Scanner对象-》初始化一个工具类
//将控制台的内容以字符串的类型读入
//根据相应的方法进行数据转换
System.out.println("请输入年龄:");
int age = sc.nextInt();
System.out.println("请输入性别:");
sc = new Scanner(System.in);
//如果在程序输出时出现连续输出情况时需要用到sc = new Scanner(System.in);
String sex = sc.nextLine();
System.out.println("请输入职业:");
String job = sc.nextLine();
System.out.println("请输入薪资:");
sc = new Scanner(System.in);
double salary = sc.nextFloat();
switch(sex){
// 如果不使用break语句,代码将从匹配case开始一直执行
// 直到整个结构结束,或者遇到break语句
// break用于跳出循环结构,或者switch当中的case
case "男":
System.out.println("性别为男");
switch(age / 10){
case 2:
System.out.println("年龄段在20-30之间");
switch(job){
case "讲师":
System.out.println("讲师工作");
switch((int)salary / 2000){//根据两千分档
case 3:
System.out.println("工资在6000-8000");
break;
case 4:
System.out.println("工资在8000-10000");
break;
}
switch((int)salary / 1000){//根据一千分档
case 6:
case 7:
System.out.println("工资在6000-8000");
break;
case 8:
case 9:
System.out.println("工资在8000-10000");
break;
}
break;
}
break;
case 3:
System.out.println("年龄段在30-40之间");
break;
}
break;
case "女":
System.out.println("性别为女");
break;
default:// 当所有的case都没有匹配时进入执行,必须放在最后
默认情况,必须写好放置在匹配语句的最后;因为需要在默认情况的前面对所有的条件进行匹配。
System.out.println("defalut部分");
}
}
5.while循环的讲解以及循环的应用
在循环体当中如果需要跳出当前循环,用break,break只能跳出当前的一层!!!
public static void main(String[] args){
int i = 1;
//实现求和,1+.....+10
//循环体结构,小括号中填写循环终止条件(boolean)
//用于标识循环次数的变量
//先判断条件,为真则执行循环体内容,假则结束循环
int sum =0;
while(i <= 10){
//循环体中执行的是重复性的代码
sum +=i;//第一次:1
i ++;//自增1
}
System.out.println(sum);
//先执行第一次循环体中的内容,再判断
int j = 1;
sum = 0;
do{
sum += j;
j++;
}while(j<=10);
System.out.println(sum);
int k ;
sum = 0;
//小括号中的第一部分:初始化变量;循环体之前最先执行的代码
//第二部分:循环体的终止条件;
//第三部分:循环体执行之后执行的代码
for (k=1;k<=10;k++){
sum += k;
System.out.println(sum);
}
}
}
6.死循环(死循环有很多的应用场景,多看多理解多敲)
public class Test9{
//死循环
public static void main(String[] args){
//当循环次数不确定时,数据库查询出的数据
//死循环中可以使用if语句手动控制结束(break)
while(true){
sum +=i;//第一次:1
i ++;//自增1
//手动控制循环跳出时与循环条件相反(补集)
//if(!(i <= 10)){
if(i >= 10){
//只能跳出临近自身最接近的一层循环
break;
}
}
System.out.println(sum);
int j = 1;
sum = 0;
//当某些必要初始化过程,供后续程序使用
do{
sum += j;
j++;
}while(true);
System.out.println(sum);
//循环次数可控,最常用的集合遍历方式
//foreach加强for循环
int k = 1;
for (;;){
//循环体中出现定义语句时,需要注意
sum += k;
k++;
if(k>=10){
break;
}
System.out.println(sum);
}
}
}
7.例题:打印9行数据为1-9
public class Test10{
public static void main(String[] args){
//打印9行数据为1-9//1 2 3 4 5 6 7 8 9
//1 2 3 4 5 6 7 8 9
int i;
int j;
for(i=1;i<10;i ++){
System.out.print("第"+i+"行");//只打印不换行
for(j=1;j<10;j ++){
System.out.print(j+" ");
}
System.out.println();
}
}
}
8.例题:对字符串进行比较
public class Test11{
public static void main(String[] args){
String sex1 = "男";String sex2 = "男";
System.out.println(sex1 == sex2);
String s1 = "12";
String s2 = "3"
//==比较的时地址
System.out.println("123" == (s1 + s2));
//equals ->判断两个字符串的长度->按次序比较每一个字符
System.out.println("123".equals (s1 + s2));
}
}
作业部分:用if和swith写一个简单的专家系统,需要用到最少4层循环();控制台手动输入数据,需要对数据进行验证
import java.util.Scanner;
public class Price2{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("欢迎来到酒店查询系统");
while(true){
while(true){
String provence;
char[] chs;
boolean flag = false;
while(true){
System.out.println("请输入需要查询的省: ");
provence = sc.nextLine();
chs = provence.toCharArray();
for(int i=0; i<chs.length; i++){
int n = 0;
try{
n = String.valueOf(chs[i]).getBytes("UTF-8").length;
}catch(Exception e){
e.getMessage();
}
if(n > 1){
flag = true;
}else{
flag = false;
break;
}
}
if(flag){
break;
}else{
System.out.println("数据输入有误,请重试!");
}
}
if(!provence.equals("广东") && !provence.equals("江西") ){
System.out.println("该地区暂不提供服务");
}
if(provence.equals("广东") || provence.equals("江西")){
break;
}
}
while(true){
System.out.println("请输入需要查询的市: ");
String city = sc.nextLine();
if((((!city.equals("深圳") && !city.equals("江门")) && (!city.equals("南昌"))) && (!city.equals("赣州")))){
System.out.println("该地区暂不提供服务");
continue;
}
if((((city.equals("深圳") || city.equals("江门")) || (city.equals("南昌"))) || (city.equals("赣州")))){
break;
}
}
while(true){
System.out.println("请输入要查询的地区:");
String area = sc.nextLine();
if(((((!area.equals("宝安区") && !area.equals("福田区")) && (!area.equals("东风乡"))) && (!area.equals("红谷滩")))) && (!area.equals("章贡区"))){
System.out.println("该地区暂不提供服务");
continue;
}
if(((((area.equals("宝安区") || area.equals("福田区"))|| area.equals("东风乡")) || area.equals("红谷滩")) || area.equals("章贡区"))){
System.out.println("请输入要查询的价格: ");
sc = new Scanner(System.in);
int price = sc.nextInt();
if(area.equals("宝安区")){
if(price <=100){
System.out.println("附近无此价格的酒店或旅馆!");
}else if (price >100 && price <=200){
System.out.println("领航精品酒店");
}else if (price >200 && price <= 400){
System.out.println("深圳美豪酒店");
}else if (price >400 && price <= 600){
System.out.println( "深圳中濠精致酒店");
}else if(price >600){
System.out.println("暂无此价格的酒店");
}
break;
}
if(area.equals("福田区")){
switch( price / 100){
case 0:
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;
}
if(area.equals("东风乡")){
switch( price / 100){
case 0:
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;
}
if(area.equals("红谷滩")){
switch( price / 100){
case 0:
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;
}
if(area.equals("章贡区")){
switch( price / 100){
case 0:
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;
}
}
}
System.out.println("是否需要重新查询(Y/N)?");
sc = new Scanner(System.in);
String select = sc.nextLine();
if ("N".equals(select) || "n".equals(select)){
System.out.println("感谢您的使用");
break;
}
}
}
}
写死的酒店查询系统,有数据验证等功能,并且有多于4层的这样一个循环。
写该系统的过程中所用到的部分测试代码:
测试1(对输入的数据验证其是否是中文,直接裸写在代码里面)
import java.util.Scanner;
public class CeShi1{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String provence;
while(true){
while(true){
System.out.println("请输入需要查询的省: ");
provence = sc.nextLine();
char[] chs = provence.toCharArray();
boolean flag = false;
for(int i=0; i<chs.length; i++){
try{
int n = 0;
n = String.valueOf(chs[i]).getBytes("UTF-8").length;
if(n > 1){
flag = true;
break;
}else{
System.out.println("数据输入有误,请检查后重试");
continue;
}
}catch(Exception e){
e.getMessage();
}
}
}
if(!provence.equals("广东") && !provence.equals("江西") ){
System.out.println("该地区暂不提供服务");
continue;
}
if(provence.equals("广东") || provence.equals("江西")){
break;
}
}
}
}
测试2(验证数据是否是中文,用方法和方法调用)
import java.util.Scanner;
public class CeShi2{
public static void main(String[] args){
Scanner sc;
sc = new Scanner(System.in);
System.out.println("欢迎来到酒店查询系统");
System.out.println("请输入需要查询的省: ");
String provence = sc.nextLine();
char[] chs = provence.toCharArray();
CeShi(chs);
CeShi1(chs);
System.out.println("神经病");
}
public static void CeShi(char[] chs){
Scanner sc;
sc = new Scanner(System.in);
boolean flag = false;
for(int i=0; i<chs.length; i++){
int n = 0;
try{
n = String.valueOf(chs[i]).getBytes("UTF-8").length;
}catch(Exception e){
e.getMessage();
}
if(n > 1){
flag = true;
}else{
flag = false;
break;
}
}
if(flag){
}else{
System.out.println("数据输入有误,请检查后重试!");
}
}
}