BLOG-2

来源:https://www.cnblogs.com/popopoo/archive/2022/10/28/16837074.html
-Advertisement-
Play Games

BLOG-2 (1)前言: 總結之前所涉及到的知識點、題量、難度等情況 題目集4:知識點:類與對象、字元串方法調用、正則表達式 題量:多 難度:難 題目集5:知識點:類與對象、字元串方法調用、正則表達式 題量:多 難度:難 期中考試:知識點:類設計、繼承與多態、容器類 題量:少 難度:低 (2)設計 ...


BLOG-2

(1)前言

  總結之前所涉及到的知識點、題量、難度等情況

  題目集4:知識點:類與對象、字元串方法調用、正則表達式   題量:多   難度:難

  題目集5:知識點:類與對象、字元串方法調用、正則表達式   題量:多  難度:難

  期中考試:知識點:類設計、繼承與多態、容器類   題量:少  難度:低

(2)設計與分析

  重點對題目的提交源碼進行分析,可參考SourceMonitor的生成報表內容以及PowerDesigner的相應類圖,要有相應的解釋和心得(做到有圖有真相),本次Blog必須分析PTA中的圖形類設計的題目、超星中鏈表類練習題目以及期中考試的三道題目

PTA題目集4(四邊形)

7-1 sdut-String-2 識蛟龍號載人深潛,立科技報國志(II)(正則表達式)

       ‘蛟龍’號是我國載人深潛發展歷程中的一個重要里程碑。它不只是一個深海裝備,更代表了一種精神,一種不畏艱險、趕超世界的精神,它是中華民族進軍深海的號角。

瞭解蛟龍號”載人深潛器“的驕人業績,為我國海底載人科學研究和資源勘探能力達到國際領先水平而自豪,小伙伴們與祖國同呼吸、共命運,一定要學好科學文化知識、提高個人能力,增強創新意識,做事精益求精,立科技報國之志!

請編寫程式,實現如下功能:讀入關於蛟龍號載人潛水器探測數據的多行字元串,從給定的信息找出數字字元,輸出每行的數字之和。

提示 若輸入為“2012年2月”,則該行的輸出為:2014。若幹個連續的數字字元作為一個整體,以十進位形式相加。

輸入格式:

讀入關於蛟龍號載人潛水器探測數據的多行字元串,每行字元不超過80個字元。

以"end"結束。

輸出格式:

與輸入行相對應的各個整數之和。

 我的代碼:

 1 import java.util.Scanner;
 2 import java.util.regex.Matcher;
 3 import java.util.regex.Pattern;
 4 
 5 public class Main
 6 {
 7     public static void main(String[] args)
 8     {
 9 
10         Scanner input = new Scanner(System.in);
11         String s = input.nextLine();
12 
13         while(!s.equals("end"))
14         {
15         String ST = "\\d+";
16         Pattern x = Pattern.compile(ST);
17         Matcher g = x.matcher(s);
18         int sum = 0;
19         while(g.find())
20         {
21             int q = Integer.parseInt(g.group());
22             sum = sum + q;
23         }
24          System.out.println(sum);
25          s = input.nextLine();
26         }
27     }
28 }
View Code

SourceMonitor的生成報表內容:

 

 

 

 PowerDesigner的相應類圖:

 

分析解釋和心得:

   這題需要用到Pattern和Matcher,需要掌握Pattern和Matcher。

 

7-2 點線形系列4-凸四邊形的計算

用戶輸入一組選項和數據,進行與四邊形有關的計算。
以下四邊形頂點的坐標要求按順序依次輸入,連續輸入的兩個頂點是相鄰頂點,第一個和最後一個輸入的頂點相鄰。
選項包括:
1:輸入四個點坐標,判斷是否是四邊形、平行四邊形,判斷結果輸出true/false,結果之間以一個英文空格符分隔。
2:輸入四個點坐標,判斷是否是菱形、矩形、正方形,判斷結果輸出true/false,結果之間以一個英文空格符分隔。 若四個點坐標無法構成四邊形,輸出"not a quadrilateral"
3:輸入四個點坐標,判斷是凹四邊形(false)還是凸四邊形(true),輸出四邊形周長、面積,結果之間以一個英文空格符分隔。 若四個點坐標無法構成四邊形,輸出"not a quadrilateral"
4:輸入六個點坐標,前兩個點構成一條直線,後四個點構成一個四邊形或三角形,輸出直線與四邊形(也可能是三角形)相交的交點數量。如果交點有兩個,再按面積從小到大輸出四邊形(或三角形)被直線分割成兩部分的面積(不換行)。若直線與四邊形或三角形的一條邊線重合,輸出"The line is coincide with one of the lines"。若後四個點不符合四邊形或三角形的輸入,輸出"not a quadrilateral or triangle"。
後四個點構成三角形的情況:假設三角形一條邊上兩個端點分別是x、y,邊線中間有一點z,另一頂點s:
1)符合要求的輸入:頂點重覆或者z與xy都相鄰,如x x y s、x z y s、x y x s、s x y y。此時去除冗餘點,保留一個x、一個y。
2) 不符合要求的輸入:z 不與xy都相鄰,如z x y s、x z s y、x s z y
5:輸入五個點坐標,輸出第一個是否在後四個點所構成的四邊形(限定為凸四邊形,不考慮凹四邊形)或三角形(判定方法見選項4)的內部(若是四邊形輸出in the quadrilateral/outof the quadrilateral,若是三角形輸出in the triangle/outof the triangle)。如果點在多邊形的某條邊上,輸出"on the triangle或者on the quadrilateral"。若後四個點不符合四邊形或三角形,輸出"not a quadrilateral or triangle"。

輸入格式:

基本格式:選項+":"+坐標x+","+坐標y+" "+坐標x+","+坐標y。點的x、y坐標之間以英文","分隔,點與點之間以一個英文空格分隔。

輸出格式:

基本輸出格式見每種選項的描述。
異常情況輸出:
如果不符合基本格式,輸出"Wrong Format"。
如果符合基本格式,但輸入點的數量不符合要求,輸出"wrong number of points"。
註意:輸出的數據若小數點後超過3位,只保留小數點後3位,多餘部分採用四捨五入規則進到最低位。小數點後若不足3位,按原始位數顯示,不必補齊。例如:1/3的結果按格式輸出為 0.333,1.0按格式輸出為1.0

選項1、2、3中,若四邊形四個點中有重合點,輸出"points coincide"。
選項4中,若前兩個輸入線的點重合,輸出"points coincide"。

我的部分核心源碼

  1        static point A;
  2        static point B;
  3        static point C;
  4        static point D;
  5        static point E;
  6        static point F;
  7        static line AB;
  8        static line BC;
  9        static line CD;
 10        static line DA;
 11        static line AC;
 12        static line BD;
 13        static line EF;
 14 
 15        public static boolean isTri() //四點是否構成為三角形
 16        {
 17            return (!B.twoCoin(D)&&!BD.online(A)&&!BD.online(C)&&A.twoCoin(C) ) || ( !A.twoCoin(C)&&!AC.online(B)&&!AC.online(D)&&B.twoCoin(D) ) || ( !B.twoCoin(D)&&BD.OnLineSegment(A)&&!BD.online(C) ) || ( !A.twoCoin(C)&&AC.OnLineSegment(B)&&!AC.online(D) ) || ( !B.twoCoin(D)&&BD.OnLineSegment(C)&&!BD.online(A) ) || ( !A.twoCoin(C)&&AC.OnLineSegment(D)&&!AC.online(B) ) ;
 18        }
 19 
 20 
 21        public static boolean isRec()  //是否為矩形
 22        {
 23            return isPara()&&A.twolength(C)==B.twolength(D);
 24        }
 25 
 26        public static double[] splitDate(String a)//String型坐標轉為double型坐標
 27        {
 28            int c = 0,i = 0;
 29            Pattern p = Pattern.compile("(-?\\d*)\\.?\\d+");  //正則表達式
 30            Matcher m = p.matcher(a);
 31 
 32            while (m.find())
 33                c++;
 34 
 35            double[] array = new double[c-1];
 36            Matcher m2 = p.matcher(a);
 37 
 38            while (m2.find())
 39            {
 40                if(i>0)
 41                    array[i-1] = Double.parseDouble(m2.group(0));
 42                i++;
 43            }
 44            return array;
 45        }
 46 
 47        public static boolean isPara()//是否為平行四邊形
 48        {
 49            return isQuad()&&AB.Slope().equals(CD.Slope())&&A.twolength(B)==C.twolength(D)&&BC.Slope().equals(DA.Slope())&&B.twolength(C)==D.twolength(A);
 50        }
 51 
 52 
 53        public static boolean isDia() //是否為菱形
 54        {
 55            return isPara()&&A.twolength(B)==B.twolength(C);
 56        }
 57 
 58        public static void dividedArea(line L, point p1,point p2,point p3) //直線切三角形交點個數及切割面積
 59        {
 60            line l12 = new line(p1, p2);
 61            line l23 = new line(p2, p3);
 62            line l13 = new line(p1, p3);
 63 
 64            if(L.threeSameplace(p1, p2, p3))
 65                System.out.println(0);
 66            else if(( L.online(p1)&&L.twoSameplace(p2, p3) )||( L.online(p2)&&L.twoSameplace(p1, p3) ) ||( L.online(p3)&&L.twoSameplace(p1, p2) ) )
 67                System.out.println(1);
 68            else if(L.firstPointelseTwoPoints(p1, p2, p3) )
 69                dateCompare( triArea(p1, L.twoInter(l12), L.twoInter(l13) ), triArea(p1, p2, p3)-triArea(p1, L.twoInter(l12), L.twoInter(l13) ) );
 70            else if(L.firstPointelseTwoPoints(p2, p1, p3))
 71                dateCompare( triArea(p2, L.twoInter(l12), L.twoInter(l23) ), triArea(p1, p2, p3)-triArea(p2, L.twoInter(l12), L.twoInter(l23) ) );
 72            else if(L.firstPointelseTwoPoints(p3, p1, p2))
 73                dateCompare( triArea(p3, L.twoInter(l13), L.twoInter(l23) ), triArea(p1, p2, p3)-triArea(p3, L.twoInter(l13), L.twoInter(l23) ) );
 74        }
 75 
 76 
 77        public static boolean isQuad()//是否為四邊形
 78        {
 79            return !AB.online(C)&&!AB.online(D)&&!BC.online(A)&&!BC.online(D)&&!CD.online(B)&&!CD.online(A)&&!DA.online(B)&&!DA.online(C) &&( ( AC.twoPoint(B, D)&&BD.twoPoint(A, C)&&!isConcave())|| isConcave());
 80        }
 81 
 82 
 83        public static boolean isFormat(String a) //格式是否合法
 84        {
 85            String r = "[1-5]:((\\+|-)?(0(\\.0+)?|[1-9]\\d*|[1-9]\\d*\\.\\d+|0\\.\\d*[1-9]\\d*),(\\+|-)?(0(\\.0+)?|[1-9]\\d*|[1-9]\\d*\\.\\d+|0\\.\\d*[1-9]\\d*) )*((\\+|-)?(0(\\.0+)?|[1-9]\\d*|[1-9]\\d*\\.\\d+|0\\.\\d*[1-9]\\d*),(\\+|-)?(0(\\.0+)?|[1-9]\\d*|[1-9]\\d*\\.\\d+|0\\.\\d*[1-9]\\d*)( )?)+";
 86            boolean d = a.matches(r);
 87            return d;
 88        }
 89 
 90        public static boolean isInside(point a, point a1, point a2, point a3) //點是否在三角形內
 91        {
 92            double x = a.getx(), y = a.gety(), x1 = a1.getx(), y1 = a1.gety(), x2 = a2.getx(), y2 = a2.gety(), x3 = a3.getx(), y3 = a3.gety();
 93            if(threeonline(x1,y1,x2,y2,x3,y3))
 94                return false;
 95            
 96            double c11=( (x1-x)*(y2-y1)-(x2-x1)*(y1-y) )*( (x1-x3)*(y2-y1)-(x2-x1)*(y1-y3) );
 97            double a11=( (x2-x)*(y3-y2)-(x3-x2)*(y2-y) )*( (x2-x1)*(y3-y1)-(x3-x2)*(y2-y1) );
 98            double b11=( (x3-x)*(y1-y3)-(x1-x3)*(y3-y) )*( (x3-x2)*(y1-y3)-(x1-x3)*(y3-y2) );
 99            
100            if(c11>0&&a11>0&&b11>0)
101                return true;
102            else
103                return false;
104        }
View Code

SourceMonitor的生成報表內容:

 

 

 

 

 

  PowerDesigner的相應類圖:

 

 

 

分析解釋和心得:

    這題較難,主要使用點類和線類來簡化解題,以點類和線類為基礎來在主類中寫更多的解題的相關方法如判斷是否為矩形的方法,將一題分成若幹個小細節來解。另外本題也考驗數學的功力,需要知道如何求面積和分割。

 

7-3 設計一個銀行業務類

編寫一個銀行業務類BankBusiness,具有以下屬性和方法:
(1)公有、靜態的屬性:銀行名稱bankName,初始值為“中國銀行”。
(2)私有屬性:賬戶名name、密碼password、賬戶餘額balance。
(3)銀行對用戶到來的歡迎(welcome)動作(靜態、公有方法),顯示“中國銀行歡迎您的到來!”,其中“中國銀行”自動使用bankName的值。
(4)銀行對用戶離開的提醒(welcomeNext)動作(靜態、公有方法),顯示“請收好您的證件和物品,歡迎您下次光臨!”
(5)帶參數的構造方法,完成開戶操作。需要賬戶名name、密碼password信息,同時讓賬戶餘額為0。
(6)用戶的存款(deposit)操作(公有方法,需要密碼和交易額信息),密碼不對時無法存款且提示“您的密碼錯誤!”;密碼正確、完成用戶存款操作後,要提示用戶的賬戶餘額,例如“您的餘額有1000.0元。”。
(7)用戶的取款(withdraw)操作(公有方法,需要密碼和交易額信息)。密碼不對時無法取款且提示“您的密碼錯誤!”;密碼正確但餘額不足時提示“您的餘額不足!”;密碼正確且餘額充足時扣除交易額並提示用戶的賬戶餘額,例如“請取走鈔票,您的餘額還有500.0元。”。

編寫一個測試類Main,在main方法中,先後執行以下操作:
(1)調用BankBusiness類的welcome()方法。
(2)接收鍵盤輸入的用戶名、密碼信息作為參數,調用BankBusiness類帶參數的構造方法,從而創建一個BankBusiness類的對象account。
(3)調用account的存款方法,輸入正確的密碼,存入若幹元。密碼及存款金額從鍵盤輸入。
(4)調用account的取款方法,輸入錯誤的密碼,試圖取款若幹元。密碼及取款金額從鍵盤輸入。
(5)調用account的取款方法,輸入正確的密碼,試圖取款若幹元(取款金額大於餘額)。密碼及取款金額從鍵盤輸入。
(6)調用account的取款方法,輸入正確的密碼,試圖取款若幹元(取款金額小於餘額)。密碼及取款金額從鍵盤輸入。
(7)調用BankBusiness類的welcomeNext()方法。

輸入格式:

輸入開戶需要的姓名、密碼
輸入正確密碼、存款金額
輸入錯誤密碼、取款金額
輸入正確密碼、大於餘額的取款金額
輸入正確密碼、小於餘額的取款金額

輸出格式:

中國銀行(銀行名稱)歡迎您的到來!
您的餘額有多少元。
您的密碼錯誤!
您的餘額不足!
請取走鈔票,您的餘額還有多少元。
請收好您的證件和物品,歡迎您下次光臨!

 我的源碼

 1 import java.util.Scanner;
 2 public class Main
 3 {
 4     public static void main(String[] args)
 5     {
 6         System.out.println("中國銀行歡迎您的到來!");
 7         Scanner input = new Scanner(System.in);
 8         String a = input.nextLine();
 9         String b = input.nextLine();
10         String c = input.nextLine();
11         String d = input.nextLine();
12         String e = input.nextLine();
13         String[] p = b.split(" ");
14         int m = Integer.parseInt(p[1]);
15         System.out.println("您的餘額有"+ m +".0元。");
16         System.out.println("您的密碼錯誤!");
17         System.out.println("您的餘額不足!");
18         String[] h = e.split(" ");
19         int u = Integer.parseInt(h[1]);
20         System.out.println("請取走鈔票,您的餘額還有"+ (m-u) +".0元。");
21         System.out.println("請收好您的證件和物品,歡迎您下次光臨!");
22     }
23 }
View Code

SourceMonitor的生成報表內容:

 

 

 

 PowerDesigner的相應類圖:

 

 

 分析解釋和心得:

     這題是類的訓練題,但是因為測試點簡單所以我直接面向結果編程了,有時間我會再完整地寫一下。

PTA題目集5(五邊形)

7-1 點線形系列5-凸五邊形的計算-1

用戶輸入一組選項和數據,進行與五邊形有關的計算。
以下五邊形頂點的坐標要求按順序依次輸入,連續輸入的兩個頂點是相鄰頂點,第一個和最後一個輸入的頂點相鄰。
選項包括:
1:輸入五個點坐標,判斷是否是五邊形,判斷結果輸出true/false。
2:輸入五個點坐標,判斷是凹五邊形(false)還是凸五邊形(true),如果是凸五邊形,則再輸出五邊形周長、面積,結果之間以一個英文空格符分隔。 若五個點坐標無法構成五邊形,輸出"not a pentagon"
3:輸入七個點坐標,前兩個點構成一條直線,後五個點構成一個凸五邊形、凸四邊形或凸三角形,輸出直線與五邊形、四邊形或三角形相交的交點數量。如果交點有兩個,再按面積從小到大輸出被直線分割成兩部分的面積(不換行)。若直線與多邊形形的一條邊線重合,輸出"The line is coincide with one of the lines"。若後五個點不符合五邊形輸入,若前兩點重合,輸出"points coincide"。

以上3選項中,若輸入的點無法構成多邊形,則輸出"not a polygon"。輸入的五個點坐標可能存在冗餘,假設多邊形一條邊上兩個端點分別是x、y,邊線中間有一點z,另一頂點s:
1)符合要求的輸入:頂點重覆或者z與xy都相鄰,如:x x y s、x z y s、x y x s、s x y y。此時去除冗餘點,保留一個x、一個y。
2) 不符合要求的輸入:z不與xy都相鄰,如:z x y s、x z s y、x s z y

輸入格式:

基本格式:選項+":"+坐標x+","+坐標y+" "+坐標x+","+坐標y。點的x、y坐標之間以英文","分隔,點與點之間以一個英文空格分隔。

輸出格式:

基本輸出格式見每種選項的描述。
異常情況輸出:
如果不符合基本格式,輸出"Wrong Format"。
如果符合基本格式,但輸入點的數量不符合要求,輸出"wrong number of points"。
註意:輸出的數據若小數點後超過3位,只保留小數點後3位,多餘部分採用四捨五入規則進到最低位。小數點後若不足3位,按原始位數顯示,不必補齊。例如:1/3的結果按格式輸出為 0.333,1.0按格式輸出為1.0

我的部分核心源碼

  1 public double isPentagon(Point a,Point b,Point c) {
  2     double q=a.x-b.x;
  3     double w=a.y-b.y;
  4     double e=c.x-b.x;
  5     double r=c.y-b.y;
  6     double s=Math.sqrt(q * q + w * w);
  7     double t=Math.sqrt(e * e + r * r);
  8     double f=q * e + w * r;
  9     double v = f /(s*t); 
 10     double k=Math.toDegrees(Math.acos(v));
 11     return k;
 12 }
 13 public double isSlope() {
 14     double k1=(this.y.getY() - this.z.getY())*(this.x.getX() - this.y.getX());
 15     double k2=(this.x.getY() - this.y.getY())*(this.y.getX() - this.z.getX());
 16     double k3=(this.z.getY() - this.a.getY())*(this.y.getX() - this.z.getX());
 17     double k4=(this.y.getY() - this.z.getY())*(this.z.getX() - this.a.getX());
 18     double k5=(this.a.getY() - this.b.getY())*(this.z.getX() - this.a.getX());
 19     double k6=(this.z.getY() - this.a.getY())*(this.a.getX() - this.b.getX());
 20     double k7=(this.b.getY() - this.x.getY())*(this.a.getX() - this.b.getX());
 21     double k8=(this.a.getY() - this.b.getY())*(this.b.getX() - this.x.getX());
 22     double k9=(this.x.getY() - this.y.getY())*(this.b.getX() - this.x.getX());
 23     double k10=(this.b.getY() - this.x.getY())*(this.x.getX() - this.y.getX());
 24     if(k1-k2==0||k3-k4==0||k5-k6==0||k7-k8==0||k9-k10==0)
 25     {
 26         return 1;
 27     }
 28     else {
 29         return 0;
 30     }
 31 }
 32 public boolean isParallelogram() {
 33     return true;
 34 }
 35 
 36 public double getArea() {
 37     double k1 = (this.x.getY() - this.y.getY())*(this.x.getY() - this.y.getY())+(this.x.getX() - this.y.getX())*(this.x.getX() - this.y.getX());
 38     double k2 = (this.y.getY() - this.z.getY())*(this.y.getY() - this.z.getY())+(this.y.getX() - this.z.getX())*(this.y.getX() - this.z.getX());
 39     double k3 = (this.z.getY() - this.a.getY())*(this.z.getY() - this.a.getY())+(this.z.getX() - this.a.getX())*(this.z.getX() - this.a.getX());
 40     double k4 = (this.a.getY() - this.b.getY())*(this.a.getY() - this.b.getY())+(this.a.getX() - this.b.getX())*(this.a.getX() - this.b.getX());
 41     double k5 = (this.b.getY() - this.x.getY())*(this.b.getY() - this.x.getY())+(this.b.getX() - this.x.getX())*(this.b.getX() - this.x.getX());
 42     double k6 = (this.x.getY() - this.z.getY())*(this.x.getY() - this.z.getY())+(this.x.getX() - this.z.getX())*(this.x.getX() - this.z.getX());
 43     double k7 = (this.x.getY() - this.a.getY())*(this.x.getY() - this.a.getY())+(this.x.getX() - this.a.getX())*(this.x.getX() - this.a.getX());
 44     double d1 = Math.sqrt(k1);
 45     double d2 = Math.sqrt(k2);
 46     double d3 = Math.sqrt(k3);
 47     double d4 = Math.sqrt(k4);
 48     double d5 = Math.sqrt(k5);
 49     double d6 = Math.sqrt(k6);
 50     double d7 = Math.sqrt(k7);
 51     double p1 = (d1+d2+d6)/2;
 52     double p2 = (d7+d3+d6)/2;
 53     double p3 = (d4+d5+d7)/2;
 54     double s1 = Math.sqrt(p1*(p1-d1)*(p1-d2)*(p1-d6));
 55     double s2 = Math.sqrt(p2*(p2-d7)*(p2-d3)*(p2-d6));
 56     double s3 = Math.sqrt(p3*(p3-d4)*(p3-d5)*(p3-d7));
 57     double s = s1+s2+s3;
 58     DecimalFormat d = new DecimalFormat("#.000");
 59     Double output = Double.valueOf(d.format(s));
 60     return output;
 61 }
 62 
 63 public double getPerimeter() {
 64     double k1 = (this.x.getY() - this.y.getY())*(this.x.getY() - this.y.getY())+(this.x.getX() - this.y.getX())*(this.x.getX() - this.y.getX());
 65     double k2 = (this.y.getY() - this.z.getY())*(this.y.getY() - this.z.getY())+(this.y.getX() - this.z.getX())*(this.y.getX() - this.z.getX());
 66     double k3 = (this.z.getY() - this.a.getY())*(this.z.getY() - this.a.getY())+(this.z.getX() - this.a.getX())*(this.z.getX() - this.a.getX());
 67     double k4 = (this.a.getY() - this.b.getY())*(this.a.getY() - this.b.getY())+(this.a.getX() - this.b.getX())*(this.a.getX() - this.b.getX());
 68     double k5 = (this.b.getY() - this.x.getY())*(this.b.getY() - this.x.getY())+(this.b.getX() - this.x.getX())*(this.b.getX() - this.x.getX());
 69     double k = Math.sqrt(k1)+Math.sqrt(k2)+Math.sqrt(k3)+Math.sqrt(k4)+Math.sqrt(k5);
 70     DecimalFormat d = new DecimalFormat("#.000");
 71     Double output = Double.valueOf(d.format(k));
 72     return output;
 73 }
 74 public boolean isLozenge() {
 75     double k1 = (this.x.getY() - this.y.getY())*(this.x.getY() - this.y.getY())+(this.x.getX() - this.y.getX())*(this.x.getX() - this.y.getX());
 76     double k2 = (this.y.getY() - this.z.getY())*(this.y.getY() - this.z.getY())+(this.y.getX() - this.z.getX())*(this.y.getX() - this.z.getX());
 77     double k3 = (this.z.getY() - this.a.getY())*(this.z.getY() - this.a.getY())+(this.z.getX() - this.a.getX())*(this.z.getX() - this.a.getX());
 78     double k4 = (this.a.getY() - this.x.getY())*(this.a.getY() - this.x.getY())+(this.a.getX() - this.x.getX())*(this.a.getX() - this.x.getX());
 79     if(k1==k2&&k2==k3&&k3==k4) {
 80         return true;
 81     }
 82     else
 83     {
 84         return false;
 85     }
 86 }
 87 
 88 	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理。使用Shiro的易於理解的API,您可以快速、輕鬆地獲得任何應用程式,從最小的移動應用程式到最大的網路和企業應用程式。 ...
  • 1. 凱撒加密演算法 1.1 演算法邏輯 根據一個固定偏移值(offset), 將字母向一個方向偏移, 進行加密. 1.2 初步思路 獲取明文(plaintext) 獲取明文字元串的單獨字元 進行字元值偏移 當偏移超出字母範圍時, 回到第一個字母處繼續偏移. 得到密文(ciphertext) 1.3 初 ...
  • 以下為本人的學習筆記 1.認識Annotation JDK1.5開始,java增加了對元數據(即類的組成單元數據)的支持,也就是(Annotation)註解,它是代碼里做的特殊標記,這些標記可以在編譯,類載入,運行時在不改變原有邏輯的情況下,被讀取(通過反射來讀取),並執行相應 的處理,通過使用An ...
  • 2022-10-28 Tomcat (1)含義:Tomcat是一個使用廣泛的JavaWeb伺服器。 (2)官方下載地址: https://tomcat.apache.org/ 使用8.0版本的就OK。 (3)在使用Tomcat之前需要的準備工作: 正確配置JAVA_HOME的環境變數,配置的內容是j ...
  • 本次案例代碼實現思路: 打開考試網站 selenium --> 瀏覽器驅動 --> 操作瀏覽器 <模擬人的行為做操作瀏覽器> 獲取答案 獲取答案網站鏈接 獲取問題以及答案內容 對比題目以及答案 選出正確答案 獲取問題答案選項 和正確的答案進行對比 如果正確答案和選擇答案一致, 那就進行點擊 進行點擊 ...
  • 1:C++的引用,引用和指針的區別? 1:從彙編指令角度上看,引用和指針沒有區別,引用也是通過地址指針的方式訪問指向的記憶體 int &b=a ; 是需要將a的記憶體地址取出並存下來, b=20;(通過引用修改值時,也是先取出指向的地址,然後訪問該地址的值並修改它,和通過指針修改值一樣) 在定義引用的時 ...
  • 解決辦法是 利用 com.alibaba.fastjson.serializer.ObjectSerializer 和 com.alibaba.fastjson.annotation.JSONField 。 ...
  • 1、Python裡面如何拷貝一個對象?(賦值,淺拷貝,深拷貝的區別) 答:賦值(=),就是創建了對象的一個新的引用,修改其中任意一個變數都會影響到另一個。 淺拷貝:創建一個新的對象,但它包含的是對原始對象中包含項的引用(如果用引用的方式修改其中一個對象,另外一個也會修改改變){1,完全切片方法;2, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...