JavaSEDay_03

选择

3.1 Boolean数据类型

要点提示:Boolean数据类型声明一个具有值true或者false的变量。
Java提供六种关系操作符(比较操作符),用于两个值得比较。
警告:相等的关系操作符是两个等号(==),而不是一个等号(=),后者是赋值操作符。

3.2 if语句

要点提示:if语句是一个结构,允许程序确定执行的路径。
单分支if语句是指当且仅当条件为true时执行一个动作。单分支if语句的语法如下:
if(布尔表达式){
语句(组);
}
if语句执行的流程图为:
在这里插入图片描述
注意:省略括号可以让代码更加简短,但是容易产生错误。当你返回去修改略去的代码时候,容易忘记加上括号。

3.3 双分支if-else语句

要点提示:if-else语句根据条件是真或者是假,决定执行的路径。
双分支if-else语句的语法:
if(布尔表达式){
布尔表达式为真时执行的语句(组);
}
else{
布尔表达式为假时执行的语句(组);
}
语句的流程图为:
在这里插入图片描述

3.4 常见的错误和陷阱

要点提示:忘记必要的括号,在错误的地方结束if语句,将==错用为=使用,悬空else分支,是选择语句的常见错误。if-else语句中重复的语句,以及测试双精度值相等是常见的陷阱。
常见错误有:
(1)忘记必要的括号
(2)在if行出现错误的分号
(3)对布尔值的冗余错误
(4)悬空else出现的歧义
(5)两个浮点数值的相等测试
常见的陷阱:
(1)简化布尔变量赋值
(2)避免不同情形中的重复代码

3.5 逻辑运算符

逻辑运算符!、&&、||和^可以用于产生复合布尔表达式。

3.6 switch语句

要点提示:switch语句基于变量或者表达式的值来执行语句。
Switch语句的完整语法是:
在这里插入图片描述
switch语句遵循的规则:
(1)switch表达式必须能计算出一个char、byte、short、int或者string类型值,必须总是用括号括住。
(2)关键字break是可选的。break语句会立即终止switch语句。
警告:不要忘记在需要的时候使用break语句。一旦匹配其中一个case,就从匹配的case处开始执行,直到遇到break语句或到达switch语句的的结束。

3.7 条件表达式

要点提示:条件表达式基于一个条件计算表达式的值。
产生随机数:Math.random()来获得一个0.0到1.0之间的随机double值,不包括1.0。

编写程序

1、 计算一元二次方程的两个根

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("函数没有实根");
		}
	}
}

2、解线性方程,输入六个数,计算x=(ed-bf)/(ad-bc).y=(af-ec)/(ad-bc)

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("方程无解");
		}
	}
}

3、输入代表今天日期的数字,0为周日,1为周一,2为周二…
在输入一个今天之后的天数,然后显示这天是星期几

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;

		}
	}
}

4、国际标准书号以前是一个十位整数d1d2d3d4d5d6d7d8d9d10,最后一位d10是校验和,是由前9为数字计算出来的

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);
    }
}

5、输入一个三位数,判断他是否是回文数字

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("不是");
	}}}

6、石头剪刀布游戏,输入0、1、2分别表示石头剪刀布。

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;
			}
	}
}

7、读取三角形的三边,如果输入值合法就计算这三角形的周长

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("输入的值不合法");
		}
}}

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);	
	}
}

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");
		}
		}
}

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("在矩形内");
		}
	}
}

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;
		}		
	}
}

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);
        }
}}

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");
	}
}

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");
        }
        
    }
}

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");
	}
	}
}

16、给定一个有向线段

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");
		}
	}
}

猜你喜欢

转载自blog.csdn.net/SQLserver2008gbg/article/details/82982569
03