Java 第三章

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

猜你喜欢

转载自blog.csdn.net/yangyuCISCO/article/details/82942649