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. Equalizing by Division

    The only difference between easy and hard versions is the number of elements in the array. You are g ...

  2. 常见web漏洞的整理之SQL注入

    SQL注入: 简介: 全称Structured Query Language,即结构化查询语言,是一种特殊的编程语言,用于数据库中的标准数据查询语言.也被作为关系式数据库管理系统的标准语言. 原理: ...

  3. redis: 事务管理(九)

    redis的事务 不保证原子性 三个步骤:开启事务.命令入队.执行事务 开启事务:multi 执行事务:exec 127.0.0.1:6379> multi #开启事务 OK 127.0.0.1 ...

  4. 白话理解https

    为什么需要加密? 因为http的内容是明文传输的,传输过程有可能被劫持或被篡改(中间人攻击),如何解决? 当然是加密.最简单的方式就是对称加密(快). 对称机密 就是一个密钥,可以理解为一把钥匙,我们 ...

  5. 从"UDF不应有状态" 切入来剖析Flink SQL代码生成

    从"UDF不应有状态" 切入来剖析Flink SQL代码生成 目录 从"UDF不应有状态" 切入来剖析Flink SQL代码生成 0x00 摘要 0x01 概述 ...

  6. python小白入门之导入指定的模块

    在python中导入模块是通过关键字import进行导入的,下面演示一下,模块的导入,指定模块别名,指定函数别名,调用模块中所有的函数运行结果:  1.模块的导入Study.py文件里面的内容是:形式 ...

  7. thinkphp5.0.x

    payload5.0.24 http://-----/index.php?s=index/think\app/invokefunction&function=call_user_func_ar ...

  8. cocos2dx初体验

    我们创建工程后总会自带一个HelloWorld类,短短的几行代码就出来了一个游戏的雏形,请问我们真的理解它了吗?如果我们能早一点弄明白这几行代码,我们或许会比现在走得更远. 理解HelloWorld类 ...

  9. HTML后台管理页面布局

    设计网页,让网页好看:网上找模板 搜 HTML模板 BootStrap 一.内容回顾: HTML 一大堆的标签:块级.行内 CSS position background text-align mar ...

  10. 利用POI工具读取word文档并将数据存储到sqlserver数据库中

    今天实现了利用POI工具读取word文档,并将数据存储到sql数据库中,代码如下: package word; import java.io.File; import java.io.FileInpu ...