Day3
异或 ^ 同为假 不同为真
双与&& 如果第一个条件为假,随后的条件无论真假结果都是假,后面的条件不运行。
单与& 全部执行 再将结果进行逻辑运算
双或 || 国第一个条件为真 随后的条件无论真假结果都是真,后面的条件不运行
单或| 全部执行 再将结果进行逻辑运算
布尔值 不能与数字进行计算
比较运算符->结果boolean
逻辑运算符 主要计算Boolean值之间的逻辑
&& 双与 有假则假 同真则真
|| 双或 有真则真 同假则假
! 非 取反
& 单与
| 单或
^ 异或
选择语句if语句
1.if语句
if语句是一个结构,允许程序确定执行的路径。
Java有几种类型的选择语句:单分支if语句,双分支if-else语句,嵌套if语句,多分支if-else语句,switch语句和条件表达式。
单分支if语句是指当且仅当条件为true时执行一个动作。语法如下:
if(布尔表达式){
语句(组);
}
如果花括号内只有一个语句,则可以省略花括号。注意:省略括号可以让代码更加简短,但是容易产生错误。
2.双分支if-else语句
if-else语句根据条件是真或者是假,决定执行的路径。可以指定不同的操作。
下面是双分支if-else语句:
if(布尔表达式){
布尔表达式为真时执行的语句(组);
}
else{
布尔表达式为假时执行的语句(组);
}
3.嵌套的if语句和多分支if-else语句
…A
if(条件1){
条件1 为真…B
if(条件2){
条件2 为真…B1
}else{
条件2 为假…B2
}
…B3
}else{
条件1为假…C
}
…D
条件1为真且条件2为真:A->B->B1->B3->D
条件1为真且条件2为假:A->B->B2->B3->D
条件1为假A->C->D
(2)多if-else分支
…A
if(条件1){ < > >= <= == !=
条件1为真…B
}else if(条件2){
条件2为真…C
}else if(条件3){
条件3为真…D
}else{
…E
}
…F
条件1为真:A->B->F
条件1为假,条件2为真:A->C->F
条件1为假,条件2为假,条件3为真:A->D->F
三者都假:A->E->F
选择语句switch
switch(变量){
case 选项一:
如果变量== 选项1执行的语句
break;
case 选项二:
如果变量== 选项2执行的语句
break;
…
default:
如果选项n中没有适合变量的值,则执行break;
}
if与switch的区别:
if可以对区间值进行比较,也可以对固定值进行比较
switch只能对固定的一个值进行比较 (推荐)
布尔表达式(条件表达式)(三目运算)
对于条件表达式b?x:y,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运行结果为x的值;否则,计算y的值,运行结果为y的值。一个条件表达式绝不会既计算x,又计算y。条件运算符是右结合的,也就是说,从右向左分组计算。
例如:a?b:c?d:e将按a?b:(c?d:e)执行。
简单理解方式:
if(b){
x
}else{
y
}
Text 1
问题:计算题中坐标的健康:
package yy;
import java.util.Scanner;
public class Day3text1 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.println("Enter your weight and height");
double weight=scanner.nextDouble();
double height=scanner.nextDouble();
double BMI=weight/height/height;
if (BMI>=30.0){
System.out.println("过胖");
}else if(BMI>=25.0){
System.out.println("超重");
}else if(BMI>=18.5){
System.out.println("正常");
}else {
System.out.println("偏瘦");
}
}}
运行结果:Enter your weight and height
45 164
偏瘦
Text 2:
判断闰年
package yy;
import java.util.Scanner;
public class Day3Text2 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.println("请输入年份:");
int year=scanner.nextInt();
if (year%4==0&&year%100==0||year%400==0){
System.out.println(year+"是闰年");
}
else{
System.out.println(year+"是平年");
}}}
运行结果:请输入年份:
9876
9876是平年
Text 3:
程序随机产生一个两位数彩票,提醒用户输入两位数,进行判断
package yy;
import java.util.Scanner;
public class Day3Text3 {
public static void main(String[] args){
int randomNumber=(int) (Math.random()*100);
System.out.print("输入一个数字n,(0-100):");
Scanner scanner=new Scanner(System.in);
int number=scanner.nextInt();
System.out.println("程序产生一个随机数"+randomNumber);
//用户输入一个两位数,一位数或两位数
//程序中随机产生一个数字
int a1=number%10;
number/=10;
int b1=number%10;
int a2=randomNumber%10;
randomNumber/=10;
int b2=randomNumber%10;
if (a1==a2&&b1==b2){
System.out.println("一等奖");
}else if(a1==a2||a1==b2||b1==a2||b1==b2){
System.out.println("三等奖");
}else if (a1==b2||b1==a2){
System.out.println("二等奖");
}else{
System.out.println("谢谢参与");
}
}
}
运行结果:输入一个数字n,(0-100):45
程序产生一个随机数51
三等奖
Day3_1:
计算一元二次方程的两个根
package yy;
import java.util.Scanner;
public class Day3_1 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//提醒用户输入三个数字
System.out.print("请输入a b c的值");
double a=scanner.nextDouble();
double b=scanner.nextDouble();
double c=scanner.nextDouble();
//先求出b^2-4ac的值
double m=b*b-4*a*c;
//判断b^2-4ac
if(m>0){
double r1=(-b+Math.sqrt(m))/2*a;
double r2=(-b-Math.sqrt(m))/2*a;
System.out.print("函数有两个实根"+r1+r2);
}else if(m==0){
double r1=-b/2*a;
System.out.print("函数有一个实根"+r1);
}else{
System.out.print("函数没有实根");
}
}
}
运行结果:请输入a b c的值1 2 3
函数没有实根
Day3_2:
解线性方程,输入六个数,计算x=(ed-bf)/(ad-bc).y=(af-ec)/(ad-bc)
package yy;
import java.util.Scanner;
public class Day3_2 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//提醒用户输入六个数字
System.out.println("输入六个值a b c d e f");
double a=scanner.nextDouble();
double b=scanner.nextDouble();
double c=scanner.nextDouble();
double d=scanner.nextDouble();
double e=scanner.nextDouble();
double f=scanner.nextDouble();
//先求出分母的值
double delt=a*d-b*c;
if(delt!=0){
double x=(e*d-b*f)/delt;
double y=(a*f-e*c)/delt;
System.out.print("x="+x);
System.out.print("y="+y);
}else{
System.out.print("方程无解");
}
}
}
运行结果:输入六个值a b c d e f
1 2 3 4 5 6
x=-4.0y=4.5
Day3_3:
输入代表今天日期的数字,0为周日,1为周一,2为周二…
在输入一个今天之后的天数,然后显示这天是星期几
package yy;
import java.util.Scanner;
public class Day3_3 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//获取今天周几
System.out.print("Enter today's day:");
int Today=scanner.nextInt();
//获取几天后
System.out.print("Enter the number of days elapsed since today:");
int since=scanner.nextInt();
switch (Today%7){
case 1:
System.out.print("Today is Monday");
break;
case 2:
System.out.print("Today is Thusday");
break;
case 3:
System.out.print("Today is Wednesday");
break;
case 4:
System.out.print("Today is Thursday");
break;
case 5:
System.out.print("Today is Friday");
break;
case 6:
System.out.print("Today is Saturday");
break;
case 7:
System.out.print("Today is Sunday");
break;
}
//输入今天周几几天后周几
switch ((Today+since)%7){
case 1:
System.out.print("Today is Monday");
break;
case 2:
System.out.print("Today is Thusday");
break;
case 3:
System.out.print("Today is Wednesday");
break;
case 4:
System.out.print("Today is Thursday");
break;
case 5:
System.out.print("Today is Friday");
break;
case 6:
System.out.print("Today is Saturday");
break;
case 7:
System.out.print("Today is Sunday");
break;
}
}
}
运行结果:Enter today’s day:6
Enter the number of days elapsed since today:656
Today is SaturdayToday is Thursday
Day3_4:
国际标准书号以前是一个十位整数d1d2d3d4d5d6d7d8d9d10,最后一位d10是校验和,是由前9为数字计算出来的
package yy;
import java.util.Scanner;
public class Day3_4 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//获取用户输入的前九位编号
System.out.print("Enter the first 9 digits of an ISBN as integer:");
//将九位编号取出s
int digit=scanner.nextInt();
int digitOri=digit;
System.out.println(digit);
int d9=digit%10;
digit/=10;
int d8=digit%10;
digit/=10;
int d7=digit%10;
digit/=10;
int d6=digit%10;
digit/=10;
int d5=digit%10;
digit/=10;
int d4=digit%10;
digit/=10;
int d3=digit%10;
digit/=10;
int d2=digit%10;
digit/=10;
int d1=digit%10;
//根据取出的九位计算第十位
int d10=(d1*1+d2*2+d3*3+d4*4+d5*5+d6*6+d7*7+d8*8+d9*9)%11;
System.out.println(d10);
String res="";
if (d1==0){
res+=0;
}
if(d10==10){
res=res+digitOri+"X";
// System.out.print(digitOri+"X");
}else{
res=res+digitOri+d10;
// System.out.print(""+digitOri+d10);
}
System.out.print(res);
}
}
运行结果:Enter the first 9 digits of an ISBN as integer:031013997
31013997
10
031013997X
Day3_5:
输入一个三位数,判断他是否是回文数字
package yy;
import java.util.Scanner;
public class Day3_5 {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
//输入一个三位数
System.out.print("Enter a number");
int number=scanner.nextInt();
//将三位数进行拆分
int a=number%10;
int b=number/100;
//对比个位跟百位
if(a==b){
System.out.print("是回文数字");
}else{
System.out.print("不是");
}}}
运行结果:
Enter a number543
不是
Day3_6:
石头剪刀布游戏,输入0、1、2分别表示石头剪刀布。
package yy;
import java.util.Scanner;
public class Day3_6 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
//输入任一数 0 1 2
System.out.print("scissor(0),rock(1),paper(2):");
int p=scanner.nextInt();
int c=(int)(Math.random()*3);
//随机生成的选择
System.out.print(c);
int result=-1;
String cStr="";
String pStr="";
if(p==0){
result=(p+c+3)%3;
}
if(p==1){
result=(p+c+1)%3;
}
if(p==2){
result=(p+c+2)%3;
}
if(p==0){
pStr="scissor";
}else if(p==1){
pStr="rock";
}else{
pStr="paper";
}
if(c==0){
cStr="scissor";
}else if(p==1){
cStr="rock";
}else{
cStr="paper";
}
System.out.print("The computer is"+cStr+".You are"+pStr+".");
switch(result){
case 0:
System.out.print("too!It is a draw.");
break;
case 1:
System.out.print("You lose");
break;
case 2:
System.out.print("You win");
break;
}
}
}
运行结果:scissor(0),rock(1),paper(2):2
2The computer ispaper.You arepaper.too!It is a draw.
Day3_7:
读取三角形的三边,如果输入值合法就计算这三角形的周长
package yy;
import java.util.Scanner;
public class Day3_7 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.println("Enter the three side of a triangle:");
double side1=scanner.nextDouble();
double side2=scanner.nextDouble();
double side3=scanner.nextDouble();
if(side1+side2>side3&&side1+side3>side2&&side2+side3>side1){
double l=side1+side2+side3;
System.out.print("The leigth of the triangle is"+l);
}else{
System.out.print("输入的值不合法");
}
}}
运行结果:Enter the three side of a triangle:
4 4 4
The leigth of the triangle is12.0
Day3_8:
计算某天是星期几,h是星期中的某一天(0为星期六,1为星期天,2为星期一…),q是某月的第几天,m是月份(3是三月,4是四月,。。。。一月跟二月分别记为上一年的13 14月。J是世纪数,K是该世纪的第几年。
package yy;
import java.util.Scanner;
public class Day3_8 {
public static void main(String[] args){
//获取年月日
Scanner scanner=new Scanner(System.in);
System.out.print("Ente year:");
int year=scanner.nextInt();
System.out.print("Ente month:");
int month=scanner.nextInt();
System.out.print("Ente the day of the month:");
int day=scanner.nextInt();
//隐含计算J世纪数,K该世纪第几年
if(month==1||month==2){
month+=12;
year--;
}
int j=year/100;
int k=year%100;
int h=(day+26*(month+1)/10+k+k/4+j/4+5*j)%7;
System.out.print(h);
}
}
运行结果:Ente year:2343
Ente month:12
Ente the day of the month:31
6
Day3_9:
输入一个点,判断这个点是否在圆内。
package yy;
import java.util.Scanner;
public class Day3_9 {
public static void main(String[] args){
//获取坐标点x y
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a point with two coordinates:");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
//求坐标点到圆心的距离
double deltX=x-0;
double deltY=y-0;
double distance=Math.sqrt(deltX*deltX+deltY*deltY);
//将距离和半径进行比较
if (distance>10){
System.out.print("Point("+x+","+y+")is not in the circle");
}else{
System.out.print("Point("+x+","+y+")is in the circle");
}
}
}
运行结果:Enter a point with two coordinates:1 2
Point(1.0,2.0)is in the circle
Day3_10:
输入一个点,判断这个点是否在以原点为中心,宽10,高5的矩形。
package yy;
import java.util.Scanner;
public class Day3_10 {
public static void main(String[] args){
//输入坐标点
Scanner scanner=new Scanner(System.in);
System.out.println("Enter a piont:");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
//判断是否在矩形内
if (x>5||y>2.5){
System.out.println("在矩形外");
}else{
System.out.println("在矩形内");
}
}
}
运行结果:Enter a piont:
4 5
在矩形外
Day3_11:
从52张牌随机选一张,程序显示出该牌的大小跟牌的花色。
package yy;
public class Day3_11_2 {
public static void main(String[] args){
//[1,13]
int number=(int)(1+Math.random()*13);
//[1,4]
int colour=(int)(1+Math.random()*4);
colour=number%4;
switch(number){
case 1:
System.out.print("The card you picked is Ace");
break;
case 2:
System.out.print("The card you picked is 2");
break;
case 3:
System.out.print("The card you picked is 3");
break;
case 4:
System.out.print("The card you picked is 4");
break;
case 5:
System.out.print("The card you picked is 5");
break;
case 6:
System.out.print("The card you picked is 6");
break;
case 7:
System.out.print("The card you picked is 7");
break;
case 8:
System.out.print("The card you picked is 8");
break;
case 9:
System.out.print("The card you picked is 9");
break;
case 10:
System.out.print("The card you picked is 10");
break;
case 11:
System.out.print("The card you picked is Jack");
break;
case 12:
System.out.print("The card you picked is Queen");
break;
case 13:
System.out.print("The card you picked is King");
break;
}
switch(colour){
case 1:
System.out.print(" of clubs");
break;
case 2:
System.out.print(" of Diamonds");
break;
case 3:
System.out.print(" of Hearts");
break;
case 4:
System.out.print(" of Spades");
break;
}
}
}
运行结果:
The card you picked is Ace of clubs
Day3_12:
判断两条直线是否相交还是平行。
package yy;
import java.util.Scanner;
public class Day3_12 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("4");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
double x3=scanner.nextDouble();
double y3=scanner.nextDouble();
double x4=scanner.nextDouble();
double y4=scanner.nextDouble();
double a=y1-y2;
double b=-x1+x2;
double c=y3-y4;
double d=x4-x3;
double e=a*x1-b*y1;
double f=c*x3-c*y3;
//判断方程组是否有解
double delt=a*d-b*c;
if(delt==0){
System.out.print("");
}else{
double x=(e*d-b*f)/delt;
double y=(a*f-e*c)/delt;
System.out.print("x="+x);
System.out.print("y="+y);
}
}}
运行结果:输入四个坐标1 2 3 4 5 4 2 5
x=2.5y=-0.5
Day3_13:
用户输入一个坐标点,判断这个点是否在该三角形中。
package yy;
import java.util.Scanner;
public class Day3_13 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter a point's x- and y-coordinates:");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
if(x>=0&&x<=200){
if((200-x)/y>=2);{
System.out.print("The point is in the triangle");
return;//直接结束函数
}
}
System.out.print("The point is in not the triangle");
}
}
运行结果:Enter a point’s x- and y-coordinates:1 2
The point is in the triangle
Day3_14:
输入两个矩形中的坐标,以及它的宽度和高,判断第二个是否在第一个内,还是和第一个重叠。
package yy;
import java.util.Scanner;
public class Day3_14 {
public static void main(String[] args){
//输入两个巨型的宽高和中心坐标
Scanner scanner=new Scanner(System.in);
System.out.print("Enter r1's center x-,y-coordnates,width,and height:");
double x0=scanner.nextDouble();
double y0=scanner.nextDouble();
double W=scanner.nextDouble();
double H=scanner.nextDouble();
System.out.print("Enter r2's center x-,y-coordnates,width,and height:");
double x=scanner.nextDouble();
double y=scanner.nextDouble();
double w=scanner.nextDouble();
double h=scanner.nextDouble();
if (x<=(W/2-w/2+x0)&&x>=(x0-W/2+w/2)&&y<=(H/2-h/2+y0)&&y>=(y0-H/2+h/2)){
System.out.print("r2 in r1");
}else if(x>=(W/2+w/2+x0)||y>=(H/2+h/2+y0)){
System.out.print("r2 out r1");
}else{
System.out.print("r2 overlaps r1");
}
}
}
运行结果:Enter r1’s center x-,y-coordnates,width,and height:1 1 2 2
Enter r2’s center x-,y-coordnates,width,and height:2 2 4 5
r2 overlaps r1
Day3_15:
输入两个圆的中心坐标和各自的半径,判断第二个是否在第一个内,还是与第一个重叠。
package yy;
import java.util.Scanner;
public class Day3_15 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter circle1's center x-,y-coordinates,and raudius:");
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double r1=scanner.nextDouble();
System.out.print("Enter circle2's center x-,y-coordinates,and raudius:");
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
double r2=scanner.nextDouble();
double distance=Math.sqrt(Math.pow(x1-x2,2)+Math.pow(y1-y2,2));
if(distance<=(Math.abs(r1-r2))){
System.out.print("circle2 is inside circle1");}
else if(distance>=r1+r2){System.out.print("circle2 does not overlap circle1");
}
else{System.out.print("circle2 overlaps circle1");
}
}
}
运行结果:Enter circle1’s center x-,y-coordinates,and raudius:
1 2 3
Enter circle2’s center x-,y-coordinates,and raudius:
2 3 4
circle2 overlaps circle1
Day3_16:
给定一个有向线段
package yy;
import java.util.Scanner;
public class Day3_16 {
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
System.out.print("Enter p0,p1,p2");
double x0=scanner.nextDouble();
double y0=scanner.nextDouble();
double x1=scanner.nextDouble();
double y1=scanner.nextDouble();
double x2=scanner.nextDouble();
double y2=scanner.nextDouble();
double res=(x1-x0)*(y1-y0)-(x2-x0)*(y2-y0);
if(res>0){
System.out.println("p2 left to line");
}else if(res==0){
System.out.println("p2 on the line");
}else{
System.out.println("p2 right to line");
}
}
}
运行结果:Enter p0,p1,p2
1 2 3 4 5 6
p2 right to line