第四单元 运算符结合语句
第一部分——运算符
1.1.1如何使用算是运算符
一,算数运算符
+,-,*,/,%,++,–
- 1-0.9的结果是非常接近于0.1的数字,浮点型在十进制转化为二进制时出现误差
- 整数相除得到整数
- 3.0/0在Java中正确,结果为无穷大(Infinity)
- 3.0%0正确,结果为NAN(Not A Number)
- a++事先输出后加1,++a是先加1后输出
- 常量不能进行自加自减
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yHoMBLg7-1591621293847)(https://file.moetu.org/images/2020/03/19/lALPDg7mLgAUgOjMus0BjA_396_186.png_720x720q90g38124ae2b3b2e8bc.jpg)]
示例
public class Operator {
public static void main(String[] args) {
System.out.println(3+4);
System.out.println("China"+3+4);//China34
System.out.println(3+4+"China");//7China
System.out.println(1-0.9);
System.out.println(2.0-1.9);
System.out.println(3/2);//1
System.out.println(2/3);//0
//System.out.println(3/0);
System.out.println(3.0/0);//Infinity OK 无穷大
System.out.println(3%2);//1
System.out.println(-3%2);//-1
System.out.println(2%3);//2
System.out.println(3.0%0);//NAN (Not A Number)
int age=20;
System.out.println(age++);
int grade=10;
System.out.println(++grade);
//System.out.println(300++);常量不能自加
grade +=20;//grade=grade+20
System.out.println(grade);
/*
* int score=98.5; byte lengh=900;
*/
short weight =100;
//weight+=1;
//weight=(short)(weight+1);
System.out.println(3==2);
System.out.println(3!=7);
System.out.println(3>=0);
System.out.println(weight++>10&&3<100);
}
}
二,编程实现两个整数的加减乘除秋雨计算,要求用户输入两个整数
三,用户输入学号姓名,学号,年龄,成绩,要求一句话输出
1.1.2如何使用赋值运算符
一,赋值
- 两侧类型问题
- 赋值范围问题
二,扩展的赋值运算符
short a=10;
a+=1;(正确)隐含强制类型转化
a=a+1;等号两边类型不匹配改为a=(short)(a+1),强制类型转化
1.1.3如何使用关系运算符
1.1.4如何使用逻辑运算符
- false就不输出
- &一般的与:所有的式子都执行
- &&短路与:前面的式子能够确定最终结果,后面的就不执行了
- |一般的或:所有的式子都执行
- ||短路或:前面的式子能确定最终结果,后面的就不执行了
- !取反,只能对布尔类型取反
示例:
public class LogicOperator {
public void calc() {
int a=100;
int b=200;
/*
* if (a<38&&++b>10) { System.out.println("&的使用。。。"); }
* System.out.println("b的值是:"+b);
*/
if(a>38||++b>10) { System.out.println("|的使用。。。"); }
System.out.println("b的值是"+b);
/*
* if(!(a<80)) { System.out.println("hello"); }
*/
}
public static void main(String[] args) {
LogicOperator logicOperator=new LogicOperator();
logicOperator.calc();
}
}
1.1.5如何使用位运算符
对二进制操作
- &与
- |或
- ^异或
1.1.6如何使用移位运算符
-
右移 高位补符号位,符号位就是开头的数字,1为负,0为正
-
<<左移 低位补0
-
无符号右移 高位一律补0
第二部分——语句
2.1.1 if语句
一,if语法规则
注意:if语句等这些句子后面,如果是变量的定义语句,大括号是必须要加的
if()括号中是Boolean类型
二,基数判断,用户输入一个数,输出是否是奇数
public class Odd {
/**
* 判断一个数是不是基数
* @param num 给定的数字
* @return 如果是基数则返回true否则返回false
*/
public boolean Odd(int num) {
if (num%2!=0) {
return true;
}else {
return false;
}
}public static void main(String[] args) {
Odd odd=new Odd();
System.out.println(odd.Odd(3));
System.out.println(odd.Odd(-3));
}
}
输入数据后判断
public class NewOdd {
public static void main(String[] args) {
System.out.println("奇偶数判断");
Scanner scanner =new Scanner(System.in);
System.out.println("输入一个整数:");
int n =scanner.nextInt();
if(n%2!=0) {
System.out.println("是奇数");
} else {
System.out.println("是偶数");
}
}
}
if else语句
1.用户输入成绩,如果大于等于60输出及格,否则输出不及格
public class Grade {
/**
* 输入,判断成绩是否及格
* @param n输入的成绩
*/
public void grade(int n) {
if(n>60) {
System.out.println("及格");
}else if(n<60){
System.out.println("不及格");
}
}
public static void main(String[] args) {
System.out.println("成绩");
Scanner scanner=new Scanner(System.in);
System.out.println("输入一个学生成绩:");
int g=scanner.nextInt();
Grade grade =new Grade();
grade.grade(g);
}
}
2.输入数学,英语,政治成绩,判断考研是否成功
public class Test {
/**
* 输入英语,数学,政治,专业课成绩,判断考研是否成功
* @param sum总和
*/
public void mark(int e,int m,int z,int i) {
int sum=e+m+z+i;
System.out.println("您的总成绩为:"+sum);
if(sum>=280) {
System.out.println("祝你考研成功!");
} else if (sum<280) {
System.out.println("真的是太遗憾了,继续努力!");
}
}
public static void main(String[] args) {
System.out.println("判断考研是否成功");
Scanner scanner =new Scanner(System.in);
System.out.println("请依次输入英语,数学,政治,专业课成绩");
int e =scanner.nextInt();
int m =scanner.nextInt();
int z =scanner.nextInt();
int i =scanner.nextInt();
Test t=new Test();
t.mark(e, m, z, i);
}
}
2.1.2 switch语句
一,switch语法规则
-
break可有可无
-
default可有可无
-
default的位置不一定在最后
-
switch的括号里面可以是那种数据类型?
byte,short,int。char,String
switch的括号中可以放整数和字符串,错!!!!在switch的括号中不能是长整型
public class SwitchDemo {
public static void main(String[] args) {
int age =200;
switch(age) {
case 10:
System.out.println("年龄是10");
break;
default:
System.out.println("都没有匹配");
break;
case 20:
System.out.println("年龄是20");
break;//break可有可无
case 30:
case 40:
System.out.println("年龄是30");
break ;
}
String name="fwz";
switch (name) {
case"fwz":
System.out.println("abc");
}
}
}
二,根据成绩等级输出分数段
public class Grade {
/**
* 输入,判断成绩是否及格
* @param n输入的成绩
*/
public void grade(int n) {
if(n>60) {
System.out.println("及格");
}else if(n<60){
System.out.println("不及格");
}
}
public static void main(String[] args) {
System.out.println("成绩");
Scanner scanner=new Scanner(System.in);
System.out.println("输入一个学生成绩:");
int g=scanner.nextInt();
Grade grade =new Grade();
grade.grade(g);
}
}
三,用户输入年份和月份,程序输出该月的天数
public class Day {
/**
* 计算闰年和非闰年各个年份月份天数
*
* @param year 年份
* @param month 月份
*/
public void day(int year, int month) {
int a = 4;
int b = 100;
boolean x;
x=(year % a == 0 && year % b != 0);
if (x||year%(a*b)==0) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(year + "年的" + month + "月的" + "天数是:" + "31");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(year + "年的" + month + "月的" + "天数是:" + "30");
break;
case 2:
System.out.println(year + "年的" + month + "月的" + "天数是:" + "29");
break;
default:
}
} else {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println(year + "的" + month + "的" + "天数是:" + "31");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println(year + "的" + month + "的" + "天数是:" + "30");
break;
case 2:
System.out.println(year + "的" + month + "的" + "天数是:" + "28");
break;
default:
}
}
}
public static void main(String[] args) {
System.out.println("天数小程序");
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您想查询的年份和月份:");
int y = scanner.nextInt();
int m = scanner.nextInt();
Day day = new Day();
day.day(y, m);
}
}
2.1.3 for语句
一,for语句规则
结束循环的方式有哪些?break,return,system.exit(0)
public class ForDemo {
public int getA() {
return 1;
}
public boolean getB() {
return true;
}
public void getC() {
}
public void test() {
for (getA();getB();getC()) {
System.out.println("hello");
}
}
public static void main(String[] args) {
/*
* for(;;) { System.out.println("success..."); }
*/
for (int i=0;i<10;i++) {
System.out.println(i);
if(i==7) {
break;//结束整个循环
//continue;结束本次循环
}
System.out.println("9090");
}
if(2>0);
http://www.qq.com
for (int i=0;i<10;i++)
{
System.out.println("hello");
}
}
}
二,计算1+2+3+……500的和
public class Add {
/**
* 计算0-500的和
* @param result 和
* @return 和
*/
public int add(int sum) {
int a=500;
for(int i=0;i<=a;i++) {
sum += i;
}
return sum;
}
public static void main(String[] args) {
Add add=new Add();
System.out.println(add.add(0));
}
}
的和
2.1.4 break/continue语句
break 可以结束整个循环
continue可以结束本次循环
一,计算1-50以内的奇数相加
public class OddSum {
/**
* 计算0-50奇数的和
* @param sum
*/
public void odd(int sum) {
int a=50;
for(int i=0;i<a;i++) {
if(i%2==1) {
sum += i;
}
}
System.out.println(sum);
}
public static void main(String[] args) {
OddSum oddSum= new OddSum();
oddSum.odd(0);
}
}
二,计算1-50以内的奇数相加,和大于90终止计算
public class DifSumOdd {
/**
* 计算0-50的奇数和到90输出,运用break
* @param sum和
*/
public void odd(int sum) {
int a = 90;
int x = 50;
for (int i = 0; i < x; i++) {
if (i % 2 == 1) {
sum += i;
if (sum > a) {
break;
}
}
}
System.out.println(sum);
}
public static void main(String[] args) {
DifSumOdd difSumOdd = new DifSumOdd();
difSumOdd.odd(0);
}
}
2.1.5 while语句
一,语法规则
先看条件在执行,注意变量定义要加大括号。
public class WhileDemo {
public static void main(String[] args) {
int i =100;
/*
* while(i<20) ;{ System.out.println("China"); i++; }
*/
/*
* while (true) {
*
* }
*/
do {
System.out.println("hello");
i++;
} while(i<10);
while (i<10) {
int age=90;
}
}
}
二,猜数字
public class Guess {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请猜一个0-10的数字:");
while (true) {
int a = scanner.nextInt();
if (a > 5) {
System.out.println("猜大了");
} else if (a < 5) {
System.out.println("猜小了");
} else {
System.out.println("猜对了");
}
}
}
}
2.1.6 do while语句
一,语法规则
先执行在看条件,注意变量定义要加大括号。
二,猜数字数字