public class Fan {
public static void main(String[] args) {
Fan fan1 = new Fan(), fan2 = new Fan();
fan1.modifySpeed(FAST);
fan1.modifyRadius(10);
fan1.modifyColor("yellow");
fan1.modifyOn(true);
System.out.println(fan1.toString());
fan2.modifySpeed(MEDIUM);
fan2.modifyRadius(5);
fan2.modifyColor("blue");
fan2.modifyOn(false);
System.out.println(fan2.toString());
}
public Fan() {
speed = SLOW;
on = false;
radius = 5;
color = "blue";
}
public int getSpeed() {
return speed;
}
public boolean getOn() {
return on;
}
public double getRadius() {
return radius;
}
public String getColor() {
return color;
}
public void modifySpeed(int speed) {
this.speed = speed;
}
public void modifyOn(boolean on) {
this.on = on;
}
public void modifyRadius(double radius) {
this.radius = radius;
}
public void modifyColor(String color) {
this.color = color;
}
public String toString() {
if (on == true) return new String(speed + " " + color + " " + radius);
else return new String("fan is off" + " " + color + " " + radius);
}
final static int SLOW = 1, MEDIUM = 2, FAST = 3;
int speed = SLOW;
boolean on = false;
double radius = 5;
String color = "blue";
}

  

import java.util.Scanner;
public class Cross {
static Line l1, l2;
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Enter the endpoints of the first line segment:");
l1 = new Line();
l2 = new Line();
l1.read();
System.out.println("Enter the endpoints of the second line segment:");
l2.read();
Point ans = getCrossPoint(l1, l2);
System.out.println("The intersecting point is: " + ans.toString());
}
public static Point getCrossPoint(Line l1, Line l2) {
double a = l1.b.y - l1.a.y;
double b = l1.a.x - l1.b.x;
double p = l1.a.x * l1.b.y - l1.b.x * l1.a.y;
double c = l2.b.y - l2.a.y;
double d = l2.a.x - l2.b.x;
double q = l2.a.x * l2.b.y - l2.b.x * l2.a.y;
double u, v;
if (Math.abs(b * c - a * d) > 1e-10) {
v = (p * c - q * a) / (b * c - a * d);
if (Math.abs(a) > 1e-10) u = (p - b * v) / a;
else u = (q - d * v) / c;
}
else {
u = (p * d - q * b) / (a * d - c * b);
if (Math.abs(b) > 1e-10) v = (p - a * u) / b;
else v = (q - c * u) / d;
}
return new Point(u, v);
}
public static class Point {
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public Point() {
x = y = 0;
}
public void read() {
x = input.nextDouble();
y = input.nextDouble();
}
public String toString() {
return new String("(" + x + ", " + y + ")");
}
double x, y;
}
public static class Line {
public Line(Point a, Point b) {
this.a = a;
this.b = b;
}
public Line() {
a = new Point();
b = new Point();
}
public void read() {
a.read();
b.read();
}
Point a, b;
}
}

  

public class Triangle2D {
public static void main(String[] args) {
Triangle2D t1 = new Triangle2D(new MyPoint(2.5, 2), new MyPoint(4.2, 3), new MyPoint(5, 3.5));
System.out.println("Area is: " + t1.getArea() + "\nPerimeter is: " + t1.getPerimeter());
System.out.println(t1.contains(new MyPoint(3, 3)));
System.out.println(t1.contains(new Triangle2D(new MyPoint(2.9, 2), new MyPoint(4, 1), new MyPoint(1, 3.4))));
System.out.println(t1.overlaps(new Triangle2D(new MyPoint(2, 5.5), new MyPoint(4, -3), new MyPoint(2, 6.5))));
}
public Triangle2D() {
p1 = new MyPoint();
p2 = new MyPoint(1, 1);
p3 = new MyPoint(2, 5);
}
public Triangle2D(MyPoint p1, MyPoint p2, MyPoint p3) {
this.p1 = p1;
this.p2 = p2;
this.p3 = p3;
}
public double getArea() {
double a = MyPoint.distance(p1, p2);
double b = MyPoint.distance(p2, p3);
double c = MyPoint.distance(p3, p1);
double p = (a + b + c) / 2;
return Math.sqrt(p * (p - a) * (p - b) * (p - c));
}
public double getPerimeter() {
double a = MyPoint.distance(p1, p2);
double b = MyPoint.distance(p2, p3);
double c = MyPoint.distance(p3, p1);
return a + b + c;
}
public boolean contains(MyPoint p) {
MyPoint pa = new MyPoint(p1.x - p.x, p1.y - p.y);
MyPoint pb = new MyPoint(p2.x - p.x, p2.y - p.y);
MyPoint pc = new MyPoint(p3.x - p.x, p3.y - p.y);
double angle = getAngle(pa, pb) + getAngle(pb, pc) + getAngle(pc, pa);
if (Math.abs(angle) > 1e-5) return true;
return false;
}
public boolean contains(Triangle2D t) {
return contains(t.p1) && contains(t.p2) && contains(t.p3);
}
//假定坐标系范围为[-10,10]
public boolean overlaps(Triangle2D t) {
if (contains(t) || t.contains(this)) return true;
if (contains(t.p1) || contains(t.p2) || contains(t.p3)) return true;
MyPoint P = new MyPoint();
for (int i = 0; i < 10000000; i ++) {
P.x = Math.random() * 20 - 10;
P.y = Math.random() * 20 - 10;
if (contains(P) && t.contains(P)) return true;
}
return false;
}
public static double getAngle(MyPoint v1, MyPoint v2) {
double ans = Math.acos(v1.mul(v2) / v1.abs() / v2.abs());
if (v1.x * v2.y - v1.y * v2.x < 0) return ans;
else return -ans;
}
public void setP1(MyPoint p1) {
this.p1 = p1;
}
public void setP2(MyPoint p2) {
this.p2 = p2;
}
public void setP3(MyPoint p3) {
this.p3 = p3;
}
public MyPoint getP1() {
return p1;
}
public MyPoint getP2() {
return p2;
}
public MyPoint getP3() {
return p3;
}
public static class MyPoint {
public MyPoint() {
x = y = 0;
}
public MyPoint(double x, double y) {
this.x = x;
this.y = y;
}
public double getx() {
return x;
}
public double gety() {
return y;
}
public double mul(MyPoint that) {
return x * that.x + y * that.y;
}
public double abs() {
return Math.sqrt(x * x + y * y);
}
public static double distance(MyPoint A, MyPoint B) {
double x = A.x - B.x, y = A.y - B.y;
return Math.sqrt(x * x + y * y);
}
public static double distance(double x1, double y1, double x2, double y2) {
double x = x1 - x2, y = y1 - y2;
return Math.sqrt(x * x + y * y);
}
double x, y;
}
MyPoint p1, p2, p3;
}

  

public class CourseSelection {
public static void main(String[] args) {
CourseSelection cs = new CourseSelection();
cs.addStudent("大神");
cs.addStudent("郑涛");
cs.addStudent("邓时庆");
cs.addCourse("大学语文");
cs.addCourse("理论物理");
cs.addCourse("宇宙的起源");
cs.selectCourse("大神", "宇宙的起源");
cs.selectCourse("大神", "理论物理");
cs.selectCourse("邓时庆", "大学语文");
cs.selectCourse("郑涛", "理论物理");
cs.selectCourse("邓时庆", "理论物理");
cs.selectCourse("郑涛", "大学语文");
cs.showStudents();
cs.showCourses();
System.out.println();
cs.dropCourse("郑涛", "理论物理");
cs.dropCourse("邓时庆", "大学语文");
cs.dropCourse("大神", "宇宙的起源");
cs.dropCourse("大神", "理论物理");
cs.selectCourse("大神", "大学语文");
cs.selectCourse("郑涛", "宇宙的起源");
cs.selectCourse("邓时庆", "宇宙的起源");
cs.showStudents();
cs.showCourses();
}
public void showStudents() {
System.out.println("--------------sutdents--------------");
for (int i = 0; i < numberOfStudents; i ++) {
System.out.print(students[i].getStudentName() + ":");
for (int j = 0; j < students[i].numberOfCourses; j ++) {
System.out.print("___" + students[i].getCourses()[j]);
}
System.out.println();
}
}
public void showCourses() {
System.out.println("--------------courses--------------");
for (int i = 0; i < numberOfCourses; i ++) {
System.out.print(courses[i].getCourseName() + ":");
for (int j = 0; j < courses[i].numberOfStudents; j ++) {
System.out.print("___" + courses[i].getStudents()[j]);
}
System.out.println();
}
}
public void addStudent(String studentName) {
students[numberOfStudents] = new Student(studentName);
numberOfStudents ++;
}
public void addCourse(String courseName) {
courses[numberOfCourses] = new Course(courseName);
numberOfCourses ++;
}
public void selectCourse(String studentName, String courseName) {
for (int i = 0; i < numberOfStudents; i ++) {
if (students[i].studentName.equals(studentName)) {
students[i].addCourse(courseName);
}
}
for (int i = 0; i < numberOfCourses; i ++) {
if (courses[i].courseName.equals(courseName)) {
courses[i].addStudent(studentName);
}
}
}
public void dropCourse(String studentName, String courseName) {
for (int i = 0; i < numberOfStudents; i ++) {
if (students[i].studentName.equals(studentName)) {
students[i].dropCourse(courseName);
}
}
for (int i = 0; i < numberOfCourses; i ++) {
if (courses[i].courseName.equals(courseName)) {
courses[i].dropStudent(studentName);
}
}
}
public CourseSelection() {
numberOfCourses = numberOfStudents = 0;
}
public static class Course {
public Course() {
numberOfStudents = 0;
}
public Course(String courseName) {
this.courseName = courseName;
}
public String[] getStudents() {
return students;
}
public int getNumberOfStudents() {
return numberOfStudents;
}
public String getCourseName() {
return courseName;
}
public void addStudent(String student) {
students[numberOfStudents] = student;
numberOfStudents ++;
}
public void dropStudent(String student) {
for (int i = 0; i < numberOfStudents; i ++) {
if (this.students[i].equals(student)) {
for (int j = i + 1; j < numberOfStudents; j ++) {
this.students[j - 1] = this.students[j];
}
numberOfStudents --;
i --;
}
}
}
public void clear() {
numberOfStudents = 0;
}
String courseName;
String[] students = new String[100];
int numberOfStudents;
}
public class Student {
public Student() {
numberOfCourses = 0;
}
public Student(String studentName) {
this.studentName = studentName;
}
public void addCourse(String course) {
courses[numberOfCourses] = course;
numberOfCourses ++;
}
public void dropCourse(String course) {
for (int i = 0; i < numberOfCourses; i ++) {
if (this.courses[i].equals(course)) {
for (int j = i + 1; j < numberOfCourses; j ++) {
this.courses[j - 1] = this.courses[j];
}
numberOfCourses --;
i --;
}
}
}
public String[] getCourses() {
return courses;
}
public int getNumberOfCourses() {
return numberOfCourses;
}
public String getStudentName() {
return studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}
String studentName;
String[] courses = new String[100];
int numberOfCourses;
}
Course[] courses = new Course[100];
Student[] students = new Student[100];
int numberOfCourses, numberOfStudents;
}

  

[java作业]Fan、求直线交点、Triangle2D、选课的更多相关文章

  1. UVa 11437:Triangle Fun(计算几何综合应用,求直线交点,向量运算,求三角形面积)

    Problem ATriangle Fun Input: Standard Input Output: Standard Output In the picture below you can see ...

  2. POJ_1269_Intersecting Lines_求直线交点

    POJ_1269_Intersecting Lines_求直线交点 Description We all know that a pair of distinct points on a plane ...

  3. Uva 11178 Morley's Theorem 向量旋转+求直线交点

    http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=9 题意: Morlery定理是这样的:作三角形ABC每个 ...

  4. poj 1269 Intersecting Lines——叉积求直线交点坐标

    题目:http://poj.org/problem?id=1269 相关知识: 叉积求面积:https://www.cnblogs.com/xiexinxinlove/p/3708147.html什么 ...

  5. poj1269 (叉积求直线的交点)

    题目链接:https://vjudge.net/problem/POJ-1269 题意:给出4个顶点,表示两条直线,求这两条直线的相交情况,重合输出LINE,平行输出NONE,相交于一点输出该点的距离 ...

  6. 谈谈"求线段交点"的几种算法(js实现,完整版)

    "求线段交点"是一种非常基础的几何计算, 在很多游戏中都会被使用到. 下面我就现学现卖的把最近才学会的一些"求线段交点"的算法总结一下, 希望对大家有所帮助.  ...

  7. 计算几何——直线交点poj1269

    求直线交点还是要推一个公式的.. 见博客https://blog.csdn.net/u013050857/article/details/40923789 还要学一下向量的定点比分法 另外poj精度好 ...

  8. 个人项目作业$\cdot$求交点个数

    个人项目作业\(\cdot\)求交点个数 一.作业要求简介 本次作业是北航计算机学院软件工程课程的个人项目作业,个人开发能力对于软件开发团队是至关重要的,本项目旨在通过一个求几何图形的交点的需求来使学 ...

  9. hdu 2528:Area(计算几何,求线段与直线交点 + 求多边形面积)

    Area Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. timer和ScheduledThreadPoolExecutor定时任务和每日固定时间执行

    //ScheduledThreadPoolExecutor每三秒执行一次 public static void main(String[] args) {        ScheduledThread ...

  2. MYSQL和SQL Server 的区别

    注意MYSQL使用注释 -- 时 要后面加上空格 使用 #不用 一.数据类型 MYSQL:支持enum和set类型 ;SQL SERVER:不支持 MYSQL:不支持nchar,nvarchar,nt ...

  3. 2020新Asp.NET敏捷快速开发框架7.0.5旗舰版源码asp.net mvc框架,工具类CRM,工作流

    演示地址: http://frame3.diytassel.com  用户名:system  密码:0000    需要的联系QQ:22539134 一.新添加了 1.多语言功能: 2.代码生成器模版 ...

  4. 泛微ecology OA系统在数据库配置信息泄露

    漏洞描述 攻击者可通过该漏洞页面直接获取到数据库配置信息,攻击者可通过访问存在漏洞的页面并解密从而获取数据库配置信息,如攻击者可直接访问数据库,则可直接获取用户数据,由于泛微e-cology默认数据库 ...

  5. 常见web漏洞整理之进击吧xss!!!

    XSS在线测试环境: http://xss-quiz.int21h.jp/ https://brutelogic.com.br/xss.php 这两个站对xss的理解很有帮助!!! 参考链接: htt ...

  6. ASP.Net内置对象之网页之间传参(一)

    Response对象 主要运用于数据从服务器发送到浏览器,可以输出数据.页面跳转.各个网页之间传参数等操作. 以下讲解几个常用例子: 在页面中输出数据 主要通过Write .WriteFile方法输出 ...

  7. Nacos - 阿里开源配置中心

    配置中心相信大家都有听过,zookeeper.apollo等等都是配置中心的代表,但大部分都是JAVA系为主的,笔者主要开发语言使用的是Golang当然也有类似于ETCD这样的组件,但是并不方便管理也 ...

  8. java集合List

    需求:List集合存储字符串并遍历.List集合的特点: 有序(存储和取出的元素一致),可重复的.package javatest; import java.util.ArrayList;import ...

  9. JDBC 进阶:使用封装通用DML DQL 和结构分层以及at com.mysql.jdbc.PreparedStatement.setTimestamp空指针异常解决

    准备: 数据表 CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(10) DEFAULT ...

  10. JasperReports入门教程(三):Paramters,Fields和Detail基本组件介绍

    JasperReports入门教程(三):Paramter,Field和Detail基本组件介绍 前言 前两篇博客带领大家进行了入门,做出了第一个例子.也解决了中文打印的问题.大家跟着例子也做出了de ...