首页 > 其他分享 >PTA题目集7~8的总结

PTA题目集7~8的总结

时间:2024-06-30 20:55:44浏览次数:1  
标签:总结 MLine 题目 get 引脚 PTA TLine ele elementLine

  1. 前言
    本次题目集的题量少,但是难度较高,尤其是题目集8.
  2. 设计与分析
    题目:
智能家居是在当下家庭中越来越流行的一种配置方案,它通过物联网技术将家中的各种设备(如音视频设备、照明系统、窗帘控制、空调控制、安防系统、数字影院系统、影音服务器、影柜系统、网络家电等)连接到一起,提供家电控制、照明控制、电话远程控制、室内外遥控、防盗报警、环境监测、暖通控制、红外转发以及可编程定时控制等多种功能和手段。与普通家居相比,智能家居不仅具有传统的居住功能,兼备建筑、网络通信、信息家电、设备自动化,提供全方位的信息交互功能。请根据如下要去设计一个智能家居强电电路模拟系统。以下题目介绍中加粗的部分为本次迭代在“家居强电电路模拟程序-3”的基础上增加的功能要求。

1、控制设备
本题模拟的控制设备包括:开关、分档调速器、连续调速器、互斥开关。

开关:包括0和1两种状态。

开关有两个引脚,任意一个引脚都可以是输入引脚(接往电源端),而另一个则是输出引脚(接网接地端)。开关状态为0时,无论输入电位是多少,输出引脚电位为0。当开关状态为1时,输出引脚电位等于输入电位。
互斥开关:

互斥开关有3个引脚:1个是汇总引脚,另两个是分支引脚。

 

开关电路示意图如图1所示,左边是汇总引脚,编号为1;右边两个是分支引脚,右上的输出引脚为2,右下输出引脚为3。图中1、2、3引脚均可以是输入引脚,当1为输入引脚时,2、3引脚为输出引脚;1为输出引脚时,2、3引脚为输入引脚。
互斥开关只有两种状态:开关接往上面的2号引脚、接往下面的3号引脚。开关每次只能接通其中一个分支引脚,而另一个分支引脚处于断开状态。
互斥开关的默认状态为1、2引脚接通,1、3引脚断开。
图1中所示的互斥开关可以反过来接入电路,即汇总引脚接往接地端,两个分支引脚接往电源端。
 

image.png 

图1 互斥开关

为避免短路,互斥开关设置了限流电阻,1、2引脚之间默认电阻为5,1、3引脚之间默认电阻为10。


分档调速器

按档位调整,常见的有3档、4档、5档调速器,档位值从0档-2(3/4)档变化。本次迭代模拟4档调速器,每个档位的输出电位分别为0、0.3、0.6、0.9倍的输入电压。
连续调速器

没有固定档位,按位置比例得到档位参数,数值范围在[0.00-1.00]之间,含两位小数。输出电位为档位参数乘以输入电压。
所有调速器都有两个引脚,一个固定的输入(引脚编号为1)、一个输出引脚(引脚编号为2)。当输入电位为0时,输出引脚输出的电位固定为0,不受各类开关调节的影响。

开关、调速器的初始状态/档位为0。

开关的两个引脚编号为1、2。
除互斥开关外,其他控制设备的电阻为 0。

2、受控设备
本题模拟的受控设备包括:灯、风扇。两种设备都有两根引脚,通过两根引脚电压的电压差驱动设备工作。

灯有两种工作状态:亮、灭。在亮的状态下,有的灯会因引脚电位差的不同亮度会有区别。
风扇在接电后有两种工作状态:停止、转动。风扇的转速会因引脚间电位差的不同而有区别。
本次迭代模拟两种灯具。

白炽灯:

亮度在0~200lux(流明)之间。
电位差为0-9V时亮度为0,其他电位差按比例,电位差10V对应50ux,220V对应200lux,其他电位差与对应亮度值成正比。白炽灯超过220V。
日光灯:

亮度为180lux。
只有两种状态,电位差为0时,亮度为0,电位差不为0,亮度为180。
本次迭代模拟两种风扇。

吊扇:

工作电压区间为80V-150V,对应转速区间为80-360转/分钟。80V对应转速为80转/分钟,150V对应转速为360转/分钟,超过150V转速为360转/分钟(本次迭代暂不考虑电压超标的异常情况)。其他电压值与转速成正比,输入输出电位差小于80V时转速为0。
落地扇:

工作电压区间为 80V-150V,对应转速区间为 80-360 转/分钟;[80V,100V) 对应转速为 80 转/分钟;[100,120)V 对应转速为 160 转/分钟;[120,140)V 对应转速为 260 转/分钟;大于等于 140V 转速 为 360 转/分钟(本次迭代暂不考虑电压超标的异常情况)。
 

本次迭代模拟一种受控窗帘:

受控串联的电路符号为S,其最低工作电压为50V,电压达到或超过50V,窗帘即可正常工作,不考虑室外光照强度和室内空间大小等因素,窗帘受室内灯光的光照强度控制。
当电路中所有灯光的光照强度总和在[0,50)lux范围内,窗帘全开;
在[50,100)lux范围内,窗帘打开比例为0.8;
在[100,200)lux范围内,窗帘打开比例为0.6;
在[200,300)lux范围内,窗帘打开比例为0.4;
在[300,400)lux范围内,窗帘打开比例为0.2;
在400lux及以上范围内,窗帘关闭。
当电压低于50V,窗帘不工作,默认为全开状态。
如果电路中没有灯或者灯全部关闭,光照强度为0,窗帘处于全开状态。
受控设备电阻:白炽灯的电阻为 10,日光灯的电阻为 5,吊扇的电阻为 20,落地扇的电阻为 20,窗帘电阻为15。


3、输入信息
1)输入设备信息

分别用设备标识符K、F、L、B、R、D、A、H、S、P分别表示开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、落地扇、互斥开关、受控窗帘、二极管(见第6部分说明)。

设备标识用标识符+编号表示,如K1、F3、L2等。

引脚格式:
设备标识-引脚编号,例如:K1-1标识编号为1的开关的1号引脚。
开关、分档调速器、连续调速器的两个引脚编号为1、2。
受控设备的两个引脚编号分别为1、2。
互斥开关的引脚编号已经在互斥开关的介绍部分说明。

约束条件:
不同设备的编号可以相同。
设备信息不单独输入,包含在连接信息中。


2)输入连接信息

一条连接信息占一行,用[]表示一组连接在一起的设备引脚,引脚与引脚之间用英文空格" "分隔。

格式:
"["+引脚号+" "+引脚号+"]"
例如:[K1-1 K3-2]表示K1的1号引脚,K3的2号引脚连接在一起。

约束条件:
不考虑调速器串联到其他调速器的情况。
考虑各类设备的并联接入。例如,K1 的输出接到 L2 的输入,L2 的输出再接其他设备属于串联接线。K1 的输出接到 L2 的输出,同时 K1 的输入接到 L2 的输入,这种情况属于并联。

连接信息不单独输入,包含在线路信息中。

 

3)输入控制设备调节信息

开关、互斥开关调节信息格式:

#+设备标识K+设备编号,例如:#K2,代表切换K2开关的状态。
#+设备标识H+设备编号,例如:#H2,代表切换H2互斥开关的状态。
分档调速器的调节信息格式:

#+设备标识F+设备编号+"+" 代表加一档,例如:#F3+,代表F3输出加一档。
#+设备标识F+设备编号+"-" 代表减一档,例如:#F1-,代表F1输出减一档。
连续调速器的调节信息格式:

#+设备标识L+设备编号+":" +数值 代表将连续调速器的档位设置到对应数值,例如:#L3:0.6,代表L3输出档位参数0.6。
4)电源接地标识:

VCC,电压220V,GND,电压0V。没有接线的引脚默认接地,电压为0V。


5)输入串联电路信息 

一条串联电路占一行,串联电路信息由 n 个连接信息组成,连接信息按从靠电源端到接地端顺序依次输入,连接信息之间用英文空格" "分隔。

串联电路信息格式:
"#T"+电路编号+":"+连接信息+" "+连接信息+...+" "+连接信息
例如:#T1:[IN K1-1] [K1-2 D2-1] [D2-2 OUT] 一个串联电路的第一个引脚是 IN,代表起始端,靠电源。最后一个引脚是 OUT,代表结尾端, 靠接地。

约束条件:
不同的串联电路信息编号不同。
输入的最后一条电路信息必定是总电路信息,总电路信息的起始引脚是 VCC,结束引脚是 GND。
连接信息中的引脚可能是一条串联或并联电路的 IN 或者 OUT。例如:
#T1:[IN K1-1] [K1-2 T2-IN] [T2-OUT OUT]
#T1:[IN K1-1] [K1-2 T2-IN] [T2-OUT M2-IN] [M2-OUT OUT]
 

6)输入并联电路信息 

一条并联电路占一行,并联电路由其包含的几条串联电路组成,串联电路标识之间用英文空格" "分隔。

格式:

"#M"+电路编号+":"+”[”+串联电路信息+" "+....+" "+串联电路信息+”]”
例如:#M1:[T1 T2 T3]
该例声明了一个并联电路,由 T1、T2、T3 三条串联电路并联而成,三条串联电路的 IN 短接在一起构成 M1 的 IN,三条串联电路的 OUT 短接在一起构成 M1 的 OUT。
 在本题中,并联电路M中的串联电路可以包含别的并联电路。

约束条件:

本题不考虑输入电压或电压差超过220V的情况。
输入信息以end为结束标志,忽略end之后的输入信息。
本题中的并联信息所包含的串联电路的信息都在并联信息之前输入,不考虑乱序输入的情况。
只要不因短路而造成无穷大的电流烧坏电路(如电路中的部分短接),都是合理情况。
本次迭代考虑多个并联电路串联在一起的情况。
本题考虑一条串联电路中包含其他串联电路和并联电路的情况。例如:
#T3:[VCC K1-1] [K1-2 T2-IN] [T2-OUT K2-1] [K2-2 T1-IN] [T1-OUT GND]
本例中T1\T2两条串联电路是T3的一个部分,本题考虑这种类型的输入。
4、输出信息:
按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、互斥开关、受控窗帘、二极管(见第6部分说明)的顺序依次输出所有设备的状态或参数。每个设备一行。同类设备按编号顺序从小到大输出。

输出格式:
@设备标识+设备编号+":" +设备参数值(控制开关的档位或状态、灯的亮度、风扇的转速,只输出值,不输出单位)+" "+设备所有引脚的电压(按编号从小到大顺序依次输出,电压的小数部分直接丢弃,保留整数输出,电压之间用”-”分隔)

说明:
连续调速器的档位信息保留两位小数,即使小数为0,依然显示两位小数.00。
开关状态为0(打开)时显示turned on,状态为1(合上)时显示closed
如:
@K1:turned on 32-15
@B1:190 68-17
@L1:0.60 220-176
互斥开关按1、2引脚的接通状态显示,1,2接通-1,3断开时显示closed,1,3接通-1,2断开时显示turned on。
如:
@H1:turned on
受控窗帘显示窗帘打开的百分比,如:
@S1:80%
 

5、家居电路模拟系列所有题目的默认规则
1)当计算电压值等数值的过程中,最终结果出现小数时,用截尾规则去掉小数部分,只保留整数部分。为避免精度的误差,所有有可能出现小数的数值用double类型保存并计算,不要作下转型数据类型转换,例如电压、转速、亮度等,只有在最后输出时再把计算结果按截尾规则,舍弃尾数,保留整数输出。

2)所有连接信息按电路从靠电源端到靠接地端的顺序依次输入,不会出现错位的情况。VCC/IN一定是第一个连接的第一项,GND/OUT一定是最后一个连接的后一项。

3)连接信息如果只包含两个引脚,靠电源端的引脚在前,靠接地端的在后。

4)调速器的输入端只会直连VCC,不会接其他设备。整个电路最多只有连接在电源上的一个调速器,且不包含在并联单路中。

 5)本系列题目中元件的管脚除了互斥开关的1引脚,其他所有引脚在电路中最多只出现一次。

6、本题新增内容:
1)增加管脚电压的显示

在输出每个电器的状态信息后,再依次输出该电器每个管脚的电压。(格式详见输出信息部分)


2)电流限制

电器在工作时,过大的电流会引起电器过热,从而烧坏电路。本次迭代,每个元器件都有最大电流的设置,当实时电流超过最大电流时,在该电器输出信息的最后加入提示“exceeding current limit error”,与前面的信息之间用英文空格分隔。

例如:@B1:190 68-17 exceeding current limit error

本题各类电器的最大限定电流如下:

开关20、分档调速器18、连续调速器18、白炽灯9、日光灯5、吊扇12、落地扇14、互斥开关20、受控窗帘12、二极管8。


3)短路检测

如果电路出现无穷大的电流造成短路,所有元器件信息不输出,仅输出提示“short circuit error”


4)并联电路中包含并联

本次迭代考虑并联电路中包含并联电路的情况,即构成并联电路的串联电路可以包含别的并联电路。例如如下输入的电路,并联电路M2的其中一条串联电路T4中包含了另一条并联电路M1:

#T1:[IN D2-1] [D2-2 H1-2] [H1-1 OUT]

#T2:[IN D1-1] [D1-2 H1-3] [H1-1 OUT]

#M1:[T1 T2]

#T4:[IN K3-1] [K3-2 M1-IN] [M1-OUT OUT]

#T5:[IN K1-1] [K1-2 B1-1] [B1-2 OUT]

#M2:[T4 T5]
5)二极管

增加二极管元件,其电路特性为:正向导通,反向截止;其电器符号如图4所示,当电流从左至右流过时,二极管导通”conduction”,电阻为0;电流从右至左流动时,二极管截止”cutoff”,电阻无穷大,相当于开关打开。

image.png 

图2 二极管符号

二极管的标识符为’P’,左侧管脚编号为1,右侧管脚编号为2。

二极管如果两端电压相等,没有电流流过,分以下两种情况输出:

1、如果两端电压为0,二极管的导通/截止状态由接入方向决定,1号引脚靠近电源则状态为导通,反之为截止。
2、如果两端电压不为0,二极管导通。
 

7、设计建议
本题包含以下电路图中的所有连接情况:


image.png

图3 电路示意图

1、电路设备类:描述所有电路设备的公共特征。

2、受控设备类、控制设备类:对应受控、控制设备

3、串联电路类:一条由多个电路设备构成的串联电路,也看成是一个独立的电路设备

4、并联电路类:继承电路设备类,也看成是一个独立的电路设备

其他类以及类的属性、方法自行设计。


image.png

图4:建议设计类图

输入样例1:
在这里给出一组输入。例如:

#T1:[IN P2-2] [P2-1 H1-2] [H1-1 OUT]
#T2:[IN D1-1] [D1-2 H1-3] [H1-1 OUT]
#M1:[T1 T2]
#T4:[IN K3-1] [K3-2 M1-IN] [M1-OUT OUT]
#T5:[IN K1-1] [K1-2 B1-1] [B1-2 OUT]
#M2:[T4 T5]
#T3:[VCC K2-1] [K2-2 M2-IN] [M2-OUT GND]
#K1
#K2
end
输出样例1:
在这里给出相应的输出。例如:

@K1:closed 220-220 exceeding current limit error
@K2:closed 220-220 exceeding current limit error
@K3:turned on 220-0
@B1:200 220-0 exceeding current limit error
@D1:0 0-0
@H1:closed 0-0-0
@P2:cutoff 0-0
输入样例2:
在这里给出一组输入。例如:

#T1:[IN P2-1] [P2-2 H1-2] [H1-1 OUT]
#T2:[IN D1-1] [D1-2 H1-3] [H1-1 OUT]
#M1:[T1 T2]
#T4:[IN K3-1] [K3-2 M1-IN] [M1-OUT OUT]
#T5:[IN K1-1] [K1-2 B1-1] [B1-2 OUT]
#M2:[T4 T5]
#T3:[VCC K2-1] [K2-2 M2-IN] [M2-OUT GND]
#K1
#K3
#K2
end
输出样例2:
在这里给出相应的输出。例如:

@K1:closed 220-220 exceeding current limit error
@K2:closed 220-220 exceeding current limit error
@K3:closed 220-220 exceeding current limit error
@B1:200 220-0 exceeding current limit error
@D1:0 220-220
@H1:closed 0-220-220 exceeding current limit error
@P2:conduction 220-220 exceeding current limit error
输入样例3:
在这里给出一组输入。例如:

#T1:[IN P2-2] [P2-1 H1-2] [H1-1 OUT]
#T2:[IN D1-1] [D1-2 H1-3] [H1-1 OUT]
#M1:[T1 T2]
#T4:[IN K3-1] [K3-2 M1-IN] [M1-OUT OUT]
#T5:[IN K1-1] [K1-2 B1-1] [B1-2 OUT]
#M2:[T4 T5]
#T3:[VCC K2-1] [K2-2 M2-IN] [M2-OUT GND]
#K1
#K3
#K2
end
输出样例3:
在这里给出相应的输出。例如:

@K1:closed 220-220 exceeding current limit error
@K2:closed 220-220 exceeding current limit error
@K3:closed 220-220
@B1:200 220-0 exceeding current limit error
@D1:0 220-220
@H1:closed 0-0-220
@P2:cutoff 0-220
输入样例4:
在这里给出一组输入。例如:

#T3:[VCC K2-1] [K2-2 GND]
#K2
end
输出样例4:
在这里给出相应的输出。例如:

short circuit error
输入样例5:
在这里给出一组输入。如果两端电压为0,二极管的导通/截止状态由接入方向决定,1号引脚靠近电源则状态为导通,反之截止。 例如:

#T3:[VCC K2-2] [K2-1 P1-1] [P1-2 K1-2] [K1-1 GND]
end
输出样例5:
在这里给出相应的输出。例如:

@K1:turned on 0-0
@K2:turned on 0-220
@P1:conduction 0-0
输入样例6:
在这里给出一组输入。如果两端电压为0,二极管的导通/截止状态由接入方向决定,1号引脚靠近电源则状态为导通,反之截止。 例如:

#T3:[VCC K2-2] [K2-1 P1-2] [P1-1 K1-2] [K1-1 GND]
end
输出样例6:
####### 。例如:

@K1:turned on 0-0
@K2:turned on 0-220
@P1:cutoff 0-0
类图设计:

class Electric  implements Comparable<Electric> {
    private String name;
    private boolean state;
    private double resistance=0;
    private double electricity=0;
    HashMap<String,String> pin = new HashMap<>();
    private double inVolt=0;
    private double outVolt=0;
    private double PD=inVolt-outVolt;
    private double maxElectricity=0;
    private String theState;
    private double Volt1=0;
    private double Volt2=0;
    private double Volt3=0;
    private boolean inversion;
    public Electric() {

    }

    public boolean isInversion() {
        return inversion;
    }

    public void setInversion(boolean inversion) {
        this.inversion = inversion;
    }

    public double getVolt1() {
        return Volt1;
    }

    public void setVolt1(double volt1) {
        Volt1 = volt1;
    }

    public double getVolt2() {
        return Volt2;
    }

    public void setVolt2(double volt2) {
        Volt2 = volt2;
    }

    public double getVolt3() {
        return Volt3;
    }

    public void setVolt3(double volt3) {
        Volt3 = volt3;
    }

    public String getTheState() {
        return theState;
    }

    public void setTheState(String theState) {
        this.theState = theState;
    }
    public double getMaxElectricity() {
        return maxElectricity;
    }

    public void setMaxElectricity(double maxElectricity) {
        this.maxElectricity = maxElectricity;
    }

    public double getResistance() {
        return resistance;
    }

    public void setResistance(double resistance) {
        this.resistance = resistance;
    }

    public double getElectricity() {
        return electricity;
    }

    public void setElectricity(double electricity) {
        this.electricity = electricity;
    }

    public double getPD() {
        return PD;
    }

    public void setPD(double PD) {
        this.PD = PD;
    }
    public boolean isState() {
        return state;
    }

    public void setState(boolean state) {
        this.state = state;
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getInVolt() {
        return inVolt;
    }

    public void setInVolt(double inVolt) {
        this.inVolt = inVolt;
    }

    public double getOutVolt() {
        return outVolt;
    }

    public void setOutVolt(double outVolt) {
        this.outVolt = outVolt;
    }

    Electric(String name){
        this.name=name;
    }
    void set(){
    }
    void set(String state){}
    void show(){}

    @Override
    public int compareTo(Electric o) {
        String[] str={"K","F","L","B","R","D","A","H","S","P"};
        for(int i=0;i<str.length;i++)
        {
            if(this.name.startsWith(str[i])){
                for(int j=0;j<str.length;j++)
                {
                    if(o.getName().startsWith(str[j])) {
                        if (i < j)
                            return -1;
                        else if (i == j)
                            return this.name.compareTo(o.getName());
                        else
                            return 1;
                    }
                }
            }
        }
        return 0;
    }
}

class KSwitch extends Electric{
    KSwitch(String name) {
        super(name);
        this.setMaxElectricity(20);
    }
    void set(){
        super.setOutVolt(super.getInVolt());
    }
    void set(String a){
        if(super.isState()){
            super.setState(false);
            super.setOutVolt(0);
            super.setPD(super.getOutVolt()-super.getInVolt());
        }
        else{
            super.setOutVolt(super.getInVolt());
            super.setPD(super.getOutVolt()-super.getInVolt());
            super.setState(true);
        }
    }
    void show(){
        if(super.isState()) {
            if(super.isInversion()){
                if(super.getElectricity()<=super.getMaxElectricity())
                    System.out.println("@" + super.getName() + ":closed"+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt());
                else
                    System.out.println("@" + super.getName() + ":closed"+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt()+" exceeding current limit error");
            }
            else{
                if(super.getElectricity()<=super.getMaxElectricity())
                    System.out.println("@" + super.getName() + ":closed"+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt());
                else
                    System.out.println("@" + super.getName() + ":closed"+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt()+" exceeding current limit error");
            }
        }
        else {
            if (super.isInversion()) {
                if (super.getElectricity() <= super.getMaxElectricity())
                    System.out.println("@" + super.getName() + ":turned on" + " " + (int) super.getOutVolt() + "-" + (int) super.getInVolt());
                else
                    System.out.println("@" + super.getName() + ":turned on" + " " + (int) super.getOutVolt() + "-" + (int) super.getInVolt() + " exceeding current limit error");
            }
            else{
                if (super.getElectricity() <= super.getMaxElectricity())
                    System.out.println("@" + super.getName() + ":turned on" + " " + (int) super.getInVolt() + "-" + (int) super.getOutVolt());
                else
                    System.out.println("@" + super.getName() + ":turned on" + " " + (int) super.getInVolt() + "-" + (int) super.getOutVolt() + " exceeding current limit error");
            }
        }
    }
}

class HSwitch extends Electric{
    HSwitch(String name){
        super(name);
        this.setResistance(5);
        this.setMaxElectricity(20);
    }
    void set(){
        if(super.getResistance()==5){
            super.setResistance(10);
        }else if(super.getResistance()==10)
            super.setResistance(5);
    }
    void show(){
        if(super.getResistance()==5){
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@" + super.getName() + ":closed"+" "+(int)super.getVolt1()+"-"+(int)super.getVolt2()+"-"+(int)super.getVolt3());
            else
                System.out.println("@" + super.getName() + ":closed"+" "+(int)super.getVolt1()+"-"+(int)super.getVolt2()+"-"+(int)super.getVolt3()+" exceeding current limit error");
        }else if(super.getResistance()==10)
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@" + super.getName() + ":turned on"+" "+(int)super.getVolt1()+"-"+(int)super.getVolt2()+"-"+(int)super.getVolt3());
            else
                System.out.println("@" + super.getName() + ":turned on"+" "+(int)super.getVolt1()+"-"+(int)super.getVolt2()+"-"+(int)super.getVolt3()+" exceeding current limit error");
    }
}

class FGovernor extends Electric{
    double[] gear= {0,0.3,0.6,0.9};
    private int position=0;

    FGovernor(String name) {
        super(name);
        this.setMaxElectricity(18);
    }

    public int getPosition() {
        return position;
    }

    public void setPosition(int position) {
        this.position = position;
    }
    void set(){
        super.setOutVolt(super.getInVolt()*gear[position]);
    }
    void set(String state){
        if(state.equals("+")){
            if(position<3)
                position++;
            super.setPD(gear[position]);
        }
        else if(state.equals("-")){
            if(position>0)
                position--;
            super.setPD(gear[position]);
        }
    }
    void show(){
        if(super.isInversion()){
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+position+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt());
            else
                System.out.println("@"+super.getName()+":"+position+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt()+" exceeding current limit error");
        }else{
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+position+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt());
            else
                System.out.println("@"+super.getName()+":"+position+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt()+" exceeding current limit error");
        }
    }
}

class LGovernor extends Electric{
    private double position;

    LGovernor(String name) {
        super(name);
        this.setMaxElectricity(18);
    }

    public double getPosition() {
        return Double.parseDouble(String.format("%.2f",position));
    }
    public void setPosition(double position) {
        this.position = position;
    }
    void set(){
        super.setOutVolt(super.getInVolt()*position);
    }
    void set(String state){
        position=Double.parseDouble(state);
        super.setPD(position);
    }
    void show(){
        if(super.isInversion()){
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+String.format("%.2f",position)+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt());
            else
                System.out.println("@"+super.getName()+":"+String.format("%.2f",position)+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt()+" exceeding current limit error");
        }else{
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+String.format("%.2f",position)+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt());
            else
                System.out.println("@"+super.getName()+":"+String.format("%.2f",position)+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt()+" exceeding current limit error");
        }
    }
}

class Lamp extends Electric{
    private Boolean state;

    Lamp(String name) {
        super(name);
    }

    public Boolean getState() {
        return state;
    }

    public void setState(Boolean state) {
        this.state = state;
    }

}

class Fan extends Electric{
    private Boolean state;

    Fan(String name) {
        super(name);
    }

    public Boolean getState() {
        return state;
    }

    public void setState(Boolean state) {
        this.state = state;
    }
}

class SCurtain extends Electric{
    private double luminance=0;
    private double position=1;
    SCurtain(String name) {
        super(name);
        super.setResistance(15);
        super.setMaxElectricity(12);
    }
    void set(String state){
        if(super.getPD()>=50){
            luminance=Double.parseDouble(state);
            if(luminance<50)
                position=1;
            else if(luminance<100)
                position=0.8;
            else if(luminance<200)
                position=0.6;
            else if(luminance<300)
                position=0.4;
            else if(luminance<400)
                position=0.2;
            else
                position=0;
        }else
            position=1;
    }

    void show() {
        if(super.isInversion()){
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)(position*100)+"%"+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)(position*100)+"%"+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt()+" exceeding current limit error");
        }else{
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)(position*100)+"%"+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)(position*100)+"%"+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt()+" exceeding current limit error");
        }
    }
}

class BLamp extends Lamp{
    private double luminance;

    BLamp(String name) {
        super(name);
        super.setResistance(10);
        super.setMaxElectricity(9);
    }

    void set(){
        if(super.getPD()<10)
            luminance=0;
        else if(super.getPD()>=10&&super.getPD()<220)
            luminance=50+(super.getPD()-10)*(5.0/7);
        else
            luminance=200;
    }
    void show(){
        double df1=Math.ceil(luminance)-luminance;
        double df2=luminance-Math.floor(luminance);
        if(df1<1e-10||df2<1e-10)
            luminance=Math.round(luminance);
        if(super.isInversion()){
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)luminance+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)luminance+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt()+" exceeding current limit error");
        }else{
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)luminance+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)luminance+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt()+" exceeding current limit error");
        }

    }
}

class RLamp extends Lamp{
    private double luminance;

    RLamp(String name) {
        super(name);
        super.setResistance(5);
        super.setMaxElectricity(5);
    }

    void set(){
        if(super.getPD()==0)
            luminance=0;
        else
            luminance=180;
    }
    void show(){
        if(super.isInversion()){
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)luminance+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)luminance+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt()+" exceeding current limit error");
        }else{
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)luminance+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)luminance+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt()+" exceeding current limit error");
        }
    }
}

class DFan extends Fan{
    private double speed;
    DFan(String name) {
        super(name);
        super.setResistance(20);
        super.setMaxElectricity(12);
    }
    void set(){
        if(super.getPD()<80)
            speed=0;
        else if(super.getPD()<=150)
            speed=80+(super.getPD()-80)*4;
        else
            speed=360;
    }
    void show(){
        double df1=Math.ceil(speed)-speed;
        double df2=speed-Math.floor(speed);
        if(df1<1e-10||df2<1e-10)
            speed=Math.round(speed);
        if(super.isInversion()){
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)speed+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)speed+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt()+" exceeding current limit error");
        }else{
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)speed+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)speed+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt()+" exceeding current limit error");
        }
    }
}
class AFan extends Fan{
    private double speed;
    AFan(String name) {
        super(name);
        super.setResistance(20);
        super.setMaxElectricity(12);
    }
    void set(){
        if(super.getPD()<80)
            speed=0;
        else if(super.getPD()<=100)
            speed=80;
        else if(super.getPD()<=120)
            speed=160;
        else if(super.getPD()<=140)
            speed=260;
        else
            speed=360;
    }
    void show(){
        if(super.isInversion()){
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)speed+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)speed+" "+(int)super.getOutVolt()+"-"+(int)super.getInVolt()+" exceeding current limit error");
        }else{
            if(super.getElectricity()<=super.getMaxElectricity())
                System.out.println("@"+super.getName()+":"+(int)speed+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt());
            else
                System.out.println("@"+super.getName()+":"+(int)speed+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt()+" exceeding current limit error");
        }
    }
}
class PDiode extends Electric{
    public PDiode(String name, String theState) {
        super(name);
        super.setTheState(theState);
    }
    void show(){
        if(super.getElectricity()<=super.getMaxElectricity())
            System.out.println("@"+super.getName()+":"+super.getTheState()+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt());
        else
            System.out.println("@"+super.getName()+":"+super.getTheState()+" "+(int)super.getInVolt()+"-"+(int)super.getOutVolt()+" exceeding current limit error");
    }
}
class ElementLine extends Electric{
    LinkedList<Electric> ele = new LinkedList<>();
    private boolean shortCircuit;
    private boolean pass;
    private int cnOfK;
    private int cnOfONK;
    private double luminance=0;

    public boolean isShortCircuit() {
        return shortCircuit;
    }

    public void setShortCircuit(boolean shortCircuit) {
        this.shortCircuit = shortCircuit;
    }

    public boolean isPass() {
        return pass;
    }

    public void setPass(boolean pass) {
        this.pass = pass;
    }

    public int getCnOfK() {
        return cnOfK;
    }

    public void setCnOfK(int cnOfK) {
        this.cnOfK = cnOfK;
    }

    public int getCnOfONK() {
        return cnOfONK;
    }

    public void setCnOfONK(int cnOfONK) {
        this.cnOfONK = cnOfONK;
    }

    public double getLuminance() {
        return luminance;
    }

    public void setLuminance(double luminance) {
        this.luminance = luminance;
    }

    ElementLine() {}
    ElementLine(String name) {
        super(name);
    }
}
class ParallelLine extends Electric{
    ArrayList<ElementLine> TLine = new ArrayList<>();
    ParallelLine(){}
    ParallelLine(String name){super(name);}
}
这是各种类的具体设计

1、电路设备类:描述所有电路设备的公共特征。

2、受控设备类、控制设备类:对应受控、控制设备

3、串联电路类:一条由多个电路设备构成的串联电路,也看成是一个独立的电路设备

4、并联电路类:继承电路设备类,也看成是一个独立的电路设备

  String name=str.substring(0,str.indexOf(":"));
  ElementLine eleLine=null;
  str=str.substring(str.indexOf(":")+1);
  String pat = "\\[(.+?)\\]";
  Pattern pattern = Pattern.compile(pat);
  Matcher m = pattern.matcher(str);
  if(name.startsWith("T")) {
      boolean mainLine = false;
      while (m.find()) {
          String[] a = m.group(1).split(" ");
          for (int i = 0; i < a.length; i++) {
              if (a[i].equals("IN")) {
                  eleLine = new ElementLine(name);
                  TLine.add(eleLine);
                  continue;
              } else if (a[i].equals("OUT")) {
                  continue;
              } else if (a[i].equals("VCC")) {
                  mainLine = true;
                  elementLine = new ElementLine(name);
                  continue;
              } else if (a[i].equals("GND")) {
                  continue;
              } else {
                  String[] st = a[i].split("-");
                  if (st[1].equals("1")) {
                      Electric elec = null;
                      boolean anew=false;
                      if (st[0].startsWith("K")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new KSwitch(st[0]);
                              anew=true;
                          }
                      } else if (st[0].startsWith("F")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new FGovernor(st[0]);
                              anew=true;
                          }
                      } else if (st[0].startsWith("L")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new LGovernor(st[0]);
                              anew=true;
                          }
                      } else if (st[0].startsWith("B")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new BLamp(st[0]);
                              anew=true;
                          }
                      } else if (st[0].startsWith("R")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new RLamp(st[0]);
                              anew=true;
                          }
                      } else if (st[0].startsWith("D")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new DFan(st[0]);
                              anew=true;
                          }
                      } else if (st[0].startsWith("A")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new AFan(st[0]);
                              anew=true;
                          }
                      } else if (st[0].startsWith("H")){
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new HSwitch(st[0]);
                              anew=true;
                          }
                      } else if (st[0].startsWith("S")){
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new SCurtain(st[0]);
                              anew=true;
                          }

                      } else if(st[0].startsWith("P")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])) {
                                  elec=electric.get(j);
                                  break;
                              }
                          }
                          if(j==electric.size()) {
                              elec = new PDiode(st[0],"conduction");
                              anew=true;
                          }
                      }
                      if(anew)
                          electric.add(elec);
                      if (mainLine) {
                          elementLine.ele.add(elec);
                          elementLine.setResistance(elementLine.getResistance() + elec.getResistance());
                      } else {
                          eleLine.ele.add(elec);
                          eleLine.setResistance(eleLine.getResistance() + elec.getResistance());
                      }
                  }else if((st[1].equals("2")||st[1].equals("3"))&&st[0].startsWith("H")){
                      int j;
                      for(j=0;j<electric.size();j++){
                          if(electric.get(j).getName().equals(st[0])){
                              electric.get(j).pin.put(st[1],name);
                              break;
                          }
                      }
                      if(j==electric.size()){
                          Electric elec=new HSwitch(st[0]);
                          elec.pin.put(st[1],name);
                          elec.setInversion(true);
                          electric.add(elec);
                      }
                  }else if(st[1].equals("2")&&st[0].startsWith("P")){
                      int j;
                      for(j=0;j<electric.size();j++){
                          if(electric.get(j).getName().equals(st[0])) {
                              break;
                          }
                      }
                      if(j==electric.size()) {
                          electric.add(new PDiode(st[0],"cutoff"));
                      }
                  }
                  else if(st[1].equals("2")){
                      if (st[0].startsWith("K")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])){
                                  break;
                              }
                          }
                          if(j==electric.size()){
                              Electric elec=new KSwitch(st[0]);
                              elec.setInversion(true);
                              electric.add(elec);
                          }
                      } else if (st[0].startsWith("F")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])){
                                  break;
                              }
                          }
                          if(j==electric.size()){
                              Electric elec=new FGovernor(st[0]);
                              elec.setInversion(true);
                              electric.add(elec);
                          }
                      } else if (st[0].startsWith("L")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])){
                                  break;
                              }
                          }
                          if(j==electric.size()){
                              Electric elec=new LGovernor(st[0]);
                              elec.setInversion(true);
                              electric.add(elec);
                          }
                      } else if (st[0].startsWith("B")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])){
                                  break;
                              }
                          }
                          if(j==electric.size()){
                              Electric elec=new BLamp(st[0]);
                              elec.setInversion(true);
                              electric.add(elec);
                          }
                      } else if (st[0].startsWith("R")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])){
                                  break;
                              }
                          }
                          if(j==electric.size()){
                              Electric elec=new RLamp(st[0]);
                              elec.setInversion(true);
                              electric.add(elec);
                          }
                      } else if (st[0].startsWith("D")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])){
                                  break;
                              }
                          }
                          if(j==electric.size()){
                              Electric elec=new DFan(st[0]);
                              elec.setInversion(true);
                              electric.add(elec);
                          }
                      } else if (st[0].startsWith("A")) {
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])){
                                  break;
                              }
                          }
                          if(j==electric.size()){
                              Electric elec=new AFan(st[0]);
                              elec.setInversion(true);
                              electric.add(elec);
                          }
                      } else if (st[0].startsWith("S")){
                          int j;
                          for(j=0;j<electric.size();j++){
                              if(electric.get(j).getName().equals(st[0])){
                                  break;
                              }
                          }
                          if(j==electric.size()){
                              Electric elec=new SCurtain(st[0]);
                              elec.setInversion(true);
                              electric.add(elec);
                          }
                      }
                  }
                  if (st[1].equals("IN")) {
                      if(mainLine)
                          elementLine.ele.add(new Electric(st[0]));
                      else
                          eleLine.ele.add(new Electric(st[0]));
                  }
              }
          }
      }
  }
  if(name.startsWith("M")){
      MLine.add(new ParallelLine(name));
      while(m.find())
      {
          String[] a=m.group(1).split(" ");
          for(int i=0;i<a.length;i++)
          {
              for(int j=0;j<MLine.size();j++)
              {
                  if(name.equals(MLine.get(j).getName())){
                      for(int x=0;x<TLine.size();x++){
                          if(TLine.get(x).getName().equals(a[i])){
                              MLine.get(j).TLine.add(TLine.get(x));
                          }
                      }
                  }
              }
          }
      }
  }
}
static void K(String str){
        for(int i=0;i<electric.size();i++){
            if(electric.get(i).getName().equals(str)){
                electric.get(i).set("开关");
            }
        }
    }
    static void F(String str){
        String name="";
        String state="";
        if(str.contains("+")){
            name=str.substring(0,str.indexOf("+"));
            state="+";
        }
        if(str.contains("-")){
            name=str.substring(0,str.indexOf("-"));
            state="-";
        }
        for(int i=0;i<electric.size();i++){
            if(electric.get(i).getName().equals(name)){
                electric.get(i).set(state);
            }
        }
    }
    static void L(String str){
        String name=str.substring(0,str.indexOf(":"));
        String state=str.substring(str.indexOf(":")+1);
        for(int i=0;i<electric.size();i++){
            if(electric.get(i).getName().equals(name)){
                electric.get(i).set(state);
            }
        }
    }
    static void H(String str){
        for(int i=0;i<electric.size();i++){
            if(electric.get(i).getName().equals(str)){
                electric.get(i).set();
            }
        }
    }

处理输入的内容。

  for(int i=0;i<elementLine.ele.size();i++){
            if(elementLine.ele.get(i).getName().startsWith("M")){
                for(int j=0;j<MLine.size();j++){
                    if(MLine.get(j).getName().equals(elementLine.ele.get(i).getName())){
                        for(int x=0;x<MLine.get(j).TLine.size();x++){
                            for(int n=0;n<MLine.get(j).TLine.get(x).ele.size();n++)
                            {
                                if(MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("K"))
                                {
                                    MLine.get(j).TLine.get(x).setCnOfK(MLine.get(j).TLine.get(x).getCnOfK()+1);
                                    if(MLine.get(j).TLine.get(x).ele.get(n).isState())
                                        MLine.get(j).TLine.get(x).setCnOfONK(MLine.get(j).TLine.get(x).getCnOfONK()+1);
                                }
                                if(MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("H")){
                                    if(MLine.get(j).TLine.get(x).ele.get(n).getResistance()==5){
                                        if(MLine.get(j).TLine.get(x).ele.get(n).pin.containsKey("2")) {
                                            if (!MLine.get(j).TLine.get(x).ele.get(n).pin.get("2").equals(MLine.get(j).TLine.get(x).getName()))
                                                MLine.get(j).TLine.get(x).setCnOfK(MLine.get(j).TLine.get(x).getCnOfK() + 1);
                                        }else
                                            MLine.get(j).TLine.get(x).setCnOfK(MLine.get(j).TLine.get(x).getCnOfK() + 1);
                                    }
                                    if(MLine.get(j).TLine.get(x).ele.get(n).getResistance()==10){
                                        if(MLine.get(j).TLine.get(x).ele.get(n).pin.containsKey("3")) {
                                            if (MLine.get(j).TLine.get(x).ele.get(n).pin.get("3").equals(MLine.get(j).TLine.get(x).getName())) {
                                                MLine.get(j).TLine.get(x).setResistance(MLine.get(j).TLine.get(x).getResistance() + 5);
                                            } else
                                                MLine.get(j).TLine.get(x).setCnOfK(MLine.get(j).TLine.get(x).getCnOfK() + 1);
                                        }else
                                            MLine.get(j).TLine.get(x).setCnOfK(MLine.get(j).TLine.get(x).getCnOfK() + 1);
                                    }
                                }
                                if(MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("P")){
                                    if(MLine.get(j).TLine.get(x).ele.get(n).getTheState().equals("cutoff"))
                                        MLine.get(j).TLine.get(x).setCnOfK(MLine.get(j).TLine.get(x).getCnOfK()+1);
                                }
                                if(MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("M"))
                                {
                                    CalculateTR(MLine.get(j).TLine.get(x).ele.get(n).getName());
                                    MLine.get(j).TLine.get(x).setCnOfK(MLine.get(j).TLine.get(x).getCnOfK()+1);
                                    for(int y=0;y<MLine.size();y++)
                                    {
                                        if(MLine.get(y).getName().equals(MLine.get(j).TLine.get(x).ele.get(n).getName())){
                                            if(MLine.get(y).isState()) {
                                                MLine.get(j).TLine.get(x).setCnOfONK(MLine.get(j).TLine.get(x).getCnOfONK() + 1);
                                                MLine.get(y).setResistance(1/MLine.get(y).getResistance());
                                                MLine.get(j).TLine.get(x).setResistance(MLine.get(j).TLine.get(x).getResistance() + MLine.get(y).getResistance());
                                            }
                                        }
                                    }
                                }
                            }
                            if(MLine.get(j).TLine.get(x).getCnOfK()==MLine.get(j).TLine.get(x).getCnOfONK()) {
                                MLine.get(j).TLine.get(x).setState(true);
                                MLine.get(j).setState(true);
                                MLine.get(j).setResistance(MLine.get(j).getResistance()+1/MLine.get(j).TLine.get(x).getResistance());
                            }
                        }
                        elementLine.setCnOfK(elementLine.getCnOfK()+1);
                        if(MLine.get(j).isState()) {
                            elementLine.setCnOfONK(elementLine.getCnOfONK()+1);
                            MLine.get(j).setResistance(1 / MLine.get(j).getResistance());
                            elementLine.setResistance(elementLine.getResistance() + MLine.get(j).getResistance());
                        }
                    }
                }
            }
            if(elementLine.ele.get(i).getName().startsWith("T")){
                for(int j=0;j<TLine.size();j++)
                {
                    if(TLine.get(j).getName().equals(elementLine.ele.get(i).getName())){
                        for(int n=0;n<TLine.get(j).ele.size();n++){
                            if(TLine.get(j).ele.get(n).getName().startsWith("K")){
                                TLine.get(j).setCnOfK(TLine.get(j).getCnOfK()+1);
                                if(TLine.get(j).ele.get(n).isState())
                                    TLine.get(j).setCnOfONK(TLine.get(j).getCnOfONK()+1);
                            }
                            if(TLine.get(j).ele.get(n).getName().startsWith("H")){
                                if(TLine.get(j).ele.get(n).getResistance()==5){
                                    if(TLine.get(j).ele.get(n).pin.containsKey("2")) {
                                        if (!TLine.get(j).ele.get(n).pin.get("2").equals(TLine.get(j).getName()))
                                            TLine.get(j).setCnOfK(TLine.get(j).getCnOfK() + 1);
                                    }else
                                        TLine.get(j).setCnOfK(TLine.get(j).getCnOfK() + 1);
                                }
                                if(TLine.get(j).ele.get(n).getResistance()==10){
                                    if(TLine.get(j).ele.get(n).pin.containsKey("3")) {
                                        if (TLine.get(j).ele.get(n).pin.get("3").equals(TLine.get(j).getName())) {
                                            TLine.get(j).setResistance(TLine.get(j).getResistance() + 5);
                                        } else
                                            TLine.get(j).setCnOfK(TLine.get(j).getCnOfK() + 1);
                                    }else
                                        TLine.get(j).setCnOfK(TLine.get(j).getCnOfK() + 1);
                                }
                            }
                            if(TLine.get(j).ele.get(n).getName().startsWith("P")){
                                if(TLine.get(j).ele.get(n).getTheState().equals("cutoff"))
                                    TLine.get(j).setCnOfK(TLine.get(j).getCnOfK()+1);
                            }
                            if(TLine.get(j).ele.get(n).getName().startsWith("M"))
                            {
                                CalculateTR(TLine.get(j).ele.get(n).getName());
                                TLine.get(j).setCnOfK(TLine.get(j).getCnOfK()+1);
                                for(int y=0;y<MLine.size();y++)
                                {
                                    if(MLine.get(y).getName().equals(TLine.get(j).ele.get(n).getName())){
                                        if(MLine.get(y).isState()) {
                                            TLine.get(j).setCnOfONK(TLine.get(j).getCnOfONK() + 1);
                                            MLine.get(y).setResistance(1/MLine.get(y).getResistance());
                                            TLine.get(j).setResistance(TLine.get(j).getResistance() + MLine.get(y).getResistance());
                                        }
                                    }
                                }
                            }
                        }
                        if(TLine.get(j).getCnOfK()==TLine.get(j).getCnOfONK()){
                            TLine.get(j).setState(true);
                        }
                        elementLine.setCnOfK(elementLine.getCnOfK()+1);
                        if(TLine.get(j).isState()){
                            elementLine.setCnOfONK(elementLine.getCnOfONK()+1);
                            elementLine.setResistance(elementLine.getResistance() + TLine.get(j).getResistance());
                        }
                    }
                }
            }
            if(elementLine.ele.get(i).getName().startsWith("K")){
                elementLine.setCnOfK(elementLine.getCnOfK()+1);
                if(elementLine.ele.get(i).isState()){
                    elementLine.setCnOfONK(elementLine.getCnOfONK()+1);
                }
            }
            if(elementLine.ele.get(i).getName().startsWith("H")){
                if(elementLine.ele.get(i).getResistance()==5){
                    if(elementLine.ele.get(i).pin.containsKey("2")) {
                        if (!elementLine.ele.get(i).pin.get("2").equals(elementLine.getName())) {
                            elementLine.setCnOfK(elementLine.getCnOfK() + 1);
                        }
                    }else
                        elementLine.setCnOfK(elementLine.getCnOfK() + 1);
                }
                if(elementLine.ele.get(i).getResistance()==10){
                    if(elementLine.ele.get(i).pin.containsKey("3")) {
                        if (elementLine.ele.get(i).pin.get("3").equals(elementLine.getName())) {
                            elementLine.setResistance(elementLine.getResistance() + 5);
                        } else {
                            elementLine.setCnOfK(elementLine.getCnOfK() + 1);
                        }
                    }else
                        elementLine.setCnOfK(elementLine.getCnOfK() + 1);
                }
            }
        }
for (int i = 0; i < elementLine.ele.size(); i++) {
                if ( elementLine.ele.get(i).getName().startsWith("F") || elementLine.ele.get(i).getName().startsWith("L") ) {
                    elementLine.ele.get(i).setElectricity(elementLine.getElectricity());
                } else if(elementLine.ele.get(i).getName().startsWith("K") ){
                    elementLine.ele.get(i).setInVolt(V);
                    V-=elementLine.ele.get(i).getResistance()*elementLine.getElectricity();
                    elementLine.ele.get(i).setOutVolt(V);
                    elementLine.ele.get(i).setElectricity(elementLine.getElectricity());
                }else if( elementLine.ele.get(i).getName().startsWith("H")){
                    elementLine.ele.get(i).setElectricity(elementLine.getElectricity());
                    if(elementLine.ele.get(i).isInversion()){
                        if(elementLine.ele.get(i).getResistance()==5) {
                            elementLine.ele.get(i).setVolt2(V);
                            V-=elementLine.ele.get(i).getResistance()*elementLine.getElectricity();
                            elementLine.ele.get(i).setVolt1(V);
                        }else{
                            elementLine.ele.get(i).setVolt3(V);
                            V-=elementLine.ele.get(i).getResistance()*elementLine.getElectricity();
                            elementLine.ele.get(i).setVolt1(V);
                        }
                    }else{
                        if(elementLine.ele.get(i).getResistance()==5) {
                            elementLine.ele.get(i).setVolt1(V);
                            V-=elementLine.ele.get(i).getResistance()*elementLine.getElectricity();
                            elementLine.ele.get(i).setVolt2(V);
                        }else{
                            elementLine.ele.get(i).setVolt1(V);
                            V-=elementLine.ele.get(i).getResistance()*elementLine.getElectricity();
                            elementLine.ele.get(i).setVolt3(V);
                        }
                    }
                }else if (elementLine.ele.get(i).getName().startsWith("M")) {
                    for (int j = 0; j < MLine.size(); j++) {
                        if (MLine.get(j).getName().equals(elementLine.ele.get(i).getName())) {
                            MLine.get(j).setPD(elementLine.getElectricity() * MLine.get(j).getResistance());
                            for (int x = 0; x < MLine.get(j).TLine.size(); x++) {
                                if (MLine.get(j).TLine.get(x).isState()) {
                                    double volt=V;
                                    MLine.get(j).TLine.get(x).setElectricity(MLine.get(j).getPD() / MLine.get(j).TLine.get(x).getResistance());
                                    for (int n = 0; n < MLine.get(j).TLine.get(x).ele.size(); n++) {
                                        if (MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("H")) {
                                            MLine.get(j).TLine.get(x).ele.get(n).setElectricity(MLine.get(j).TLine.get(x).getElectricity());
                                            if(MLine.get(j).TLine.get(x).ele.get(n).isInversion()){
                                                if(MLine.get(j).TLine.get(x).ele.get(n).getResistance()==5) {
                                                    MLine.get(j).TLine.get(x).ele.get(n).setVolt2(volt);
                                                    volt-=MLine.get(j).TLine.get(x).getElectricity() * MLine.get(j).TLine.get(x).ele.get(n).getResistance();
                                                    MLine.get(j).TLine.get(x).ele.get(n).setVolt1(volt);
                                                }else{
                                                    MLine.get(j).TLine.get(x).ele.get(n).setVolt3(volt);
                                                    volt-=MLine.get(j).TLine.get(x).getElectricity() * MLine.get(j).TLine.get(x).ele.get(n).getResistance();
                                                    MLine.get(j).TLine.get(x).ele.get(n).setVolt1(volt);
                                                }
                                            }else{
                                                if(MLine.get(j).TLine.get(x).ele.get(n).getResistance()==5) {
                                                    MLine.get(j).TLine.get(x).ele.get(n).setVolt1(volt);
                                                    volt-=MLine.get(j).TLine.get(x).getElectricity() * MLine.get(j).TLine.get(x).ele.get(n).getResistance();
                                                    MLine.get(j).TLine.get(x).ele.get(n).setVolt2(volt);
                                                }else{
                                                    MLine.get(j).TLine.get(x).ele.get(n).setVolt1(volt);
                                                    volt-=MLine.get(j).TLine.get(x).getElectricity() * MLine.get(j).TLine.get(x).ele.get(n).getResistance();
                                                    MLine.get(j).TLine.get(x).ele.get(n).setVolt3(volt);
                                                }
                                            }
                                            continue;
                                        }else if(MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("M")){
                                            CalculateV(MLine.get(j).TLine.get(x).ele.get(n).getName(),MLine.get(j).TLine.get(x).getElectricity(),volt);
                                            for(int y=0;y<MLine.size();y++){
                                                if(MLine.get(y).getName().equals(MLine.get(j).TLine.get(x).ele.get(n).getName())){
                                                    volt-=MLine.get(y).getPD();
                                                }
                                            }
                                        }else {
                                            MLine.get(j).TLine.get(x).ele.get(n).setInVolt(volt);
                                            MLine.get(j).TLine.get(x).ele.get(n).setPD(MLine.get(j).TLine.get(x).getElectricity() * MLine.get(j).TLine.get(x).ele.get(n).getResistance());
                                            volt -= MLine.get(j).TLine.get(x).ele.get(n).getPD();
                                            MLine.get(j).TLine.get(x).ele.get(n).setOutVolt(volt);
                                            MLine.get(j).TLine.get(x).ele.get(n).set();
                                            MLine.get(j).TLine.get(x).ele.get(n).setElectricity(MLine.get(j).TLine.get(x).getElectricity());
                                        }
                                        if (MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("R")) {
                                            if (MLine.get(j).TLine.get(x).ele.get(n).getPD() != 0)
                                                elementLine.setLuminance(elementLine.getLuminance() + 180);
                                        }
                                        if (MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("B")) {
                                            if (MLine.get(j).TLine.get(x).ele.get(n).getPD() < 10)
                                                elementLine.setLuminance(elementLine.getLuminance() + 0);
                                            else if (MLine.get(j).TLine.get(x).ele.get(n).getPD() >= 10 && MLine.get(j).TLine.get(x).ele.get(n).getPD() < 220)
                                                elementLine.setLuminance(elementLine.getLuminance() + 50 + (MLine.get(j).TLine.get(x).ele.get(n).getPD() - 10) * (5.0 / 7));
                                            else
                                                elementLine.setLuminance(elementLine.getLuminance() + 200);
                                        }
                                    }
                                }else{
                                    for (int n = 0; n < MLine.get(j).TLine.get(x).ele.size(); n++){
                                        if(MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("K")){
                                            MLine.get(j).TLine.get(x).ele.get(n).setInVolt(V);
                                            if(MLine.get(j).TLine.get(x).ele.get(n).isState())
                                                MLine.get(j).TLine.get(x).ele.get(n).setOutVolt(V);
                                            else
                                                break;
                                        }else if(MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("P")) {
                                            if(MLine.get(j).TLine.get(x).ele.get(n).getTheState().equals("conduction"))
                                                MLine.get(j).TLine.get(x).ele.get(n).setInVolt(V);
                                            else {
                                                MLine.get(j).TLine.get(x).ele.get(n).setOutVolt(V);
                                                break;
                                            }
                                        }else if(MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("H")){
                                            if(MLine.get(j).TLine.get(x).ele.get(n).pin.containsKey("2")) {
                                                if(MLine.get(j).TLine.get(x).ele.get(n).pin.get("2").equals(MLine.get(j).TLine.get(x).getName())){
                                                    if(MLine.get(j).TLine.get(x).ele.get(n).isInversion()){
                                                        MLine.get(j).TLine.get(x).ele.get(n).setVolt2(V);
                                                        if(MLine.get(j).TLine.get(x).ele.get(n).getResistance()==5){
                                                            MLine.get(j).TLine.get(x).ele.get(n).setVolt1(V);
                                                        }else
                                                            break;
                                                    }else{
                                                        MLine.get(j).TLine.get(x).ele.get(n).setVolt1(V);
                                                        if(MLine.get(j).TLine.get(x).ele.get(n).getResistance()==5){
                                                            MLine.get(j).TLine.get(x).ele.get(n).setVolt2(V);
                                                        }else
                                                            break;
                                                    }
                                                }
                                            }
                                            if(MLine.get(j).TLine.get(x).ele.get(n).pin.containsKey("3")) {
                                                if(MLine.get(j).TLine.get(x).ele.get(n).pin.get("3").equals(MLine.get(j).TLine.get(x).getName())){
                                                    if(MLine.get(j).TLine.get(x).ele.get(n).isInversion()){
                                                        MLine.get(j).TLine.get(x).ele.get(n).setVolt3(V);
                                                        if(MLine.get(j).TLine.get(x).ele.get(n).getResistance()==15){
                                                            MLine.get(j).TLine.get(x).ele.get(n).setVolt1(V);
                                                        }else
                                                            break;
                                                    }else{
                                                        MLine.get(j).TLine.get(x).ele.get(n).setVolt1(V);
                                                        if(MLine.get(j).TLine.get(x).ele.get(n).getResistance()==15){
                                                            MLine.get(j).TLine.get(x).ele.get(n).setVolt3(V);
                                                        }else
                                                            break;
                                                    }
                                                }
                                            }
                                        }
                                        else if(MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("M")){
                                            setV(MLine.get(j).TLine.get(x).ele.get(n).getName(),V);
                                        }
                                        else {
                                            MLine.get(j).TLine.get(x).ele.get(n).setInVolt(V);
                                            MLine.get(j).TLine.get(x).ele.get(n).setOutVolt(V);
                                        }
                                    }
                                }
                            }
                            V-=MLine.get(j).getPD();
                        }
                    }
                } else if (elementLine.ele.get(i).getName().startsWith("T")) {
                    for (int j = 0; j < TLine.size(); j++) {
                        if (TLine.get(j).getName().equals(elementLine.ele.get(i).getName())) {
                            if (TLine.get(j).isState()) {
                                double volt=V;
                                for (int n = 0; n < TLine.get(j).ele.size(); n++) {
                                    if (TLine.get(j).ele.get(n).getName().startsWith("H")) {
                                        TLine.get(j).ele.get(n).setElectricity(elementLine.getElectricity());
                                        if(TLine.get(j).ele.get(n).isInversion()){
                                            if(TLine.get(j).ele.get(n).getResistance()==5) {
                                                TLine.get(j).ele.get(n).setVolt2(volt);
                                                volt-=elementLine.getElectricity() * TLine.get(j).ele.get(n).getResistance();
                                                TLine.get(j).ele.get(n).setVolt1(volt);
                                            }else{
                                                TLine.get(j).ele.get(n).setVolt3(volt);
                                                volt-=elementLine.getElectricity() * TLine.get(j).ele.get(n).getResistance();
                                                TLine.get(j).ele.get(n).setVolt1(volt);
                                            }
                                        }else{
                                            if(TLine.get(j).ele.get(n).getResistance()==5) {
                                                TLine.get(j).ele.get(n).setVolt1(volt);
                                                volt-=elementLine.getElectricity() * TLine.get(j).ele.get(n).getResistance();
                                                TLine.get(j).ele.get(n).setVolt2(volt);
                                            }else{
                                                TLine.get(j).ele.get(n).setVolt1(volt);
                                                volt-=elementLine.getElectricity() * TLine.get(j).ele.get(n).getResistance();
                                                TLine.get(j).ele.get(n).setVolt3(volt);
                                            }
                                        }
                                        continue;
                                    }else if(TLine.get(j).ele.get(n).getName().startsWith("M")) {
                                        CalculateV(TLine.get(j).ele.get(n).getName(),elementLine.getElectricity(),volt);
                                        for(int y=0;y<MLine.size();y++){
                                            if(MLine.get(y).getName().equals(TLine.get(j).ele.get(n).getName())){
                                                volt-=MLine.get(y).getPD();
                                            }
                                        }
                                    }else{
                                        TLine.get(j).ele.get(n).setInVolt(volt);
                                        TLine.get(j).ele.get(n).setPD(elementLine.getElectricity() * TLine.get(j).ele.get(n).getResistance());
                                        volt-=TLine.get(j).ele.get(n).getPD();
                                        TLine.get(j).ele.get(n).setOutVolt(volt);
                                        TLine.get(j).ele.get(n).set();
                                        TLine.get(j).ele.get(n).setElectricity(elementLine.getElectricity());
                                    }
                                    if (TLine.get(j).ele.get(n).getName().startsWith("R")) {
                                        if (TLine.get(j).ele.get(n).getPD() != 0)
                                            elementLine.setLuminance(elementLine.getLuminance() + 180);
                                    }
                                    if (TLine.get(j).ele.get(n).getName().startsWith("B")) {
                                        if (TLine.get(j).ele.get(n).getPD() < 10)
                                            elementLine.setLuminance(elementLine.getLuminance() + 0);
                                        else if (TLine.get(j).ele.get(n).getPD() >= 10 && TLine.get(j).ele.get(n).getPD() < 220)
                                            elementLine.setLuminance(elementLine.getLuminance() + 50 + (TLine.get(j).ele.get(n).getPD() - 10) * (5.0 / 7));
                                        else
                                            elementLine.setLuminance(elementLine.getLuminance() + 200);
                                    }
                                }
                                V-=elementLine.getElectricity()*TLine.get(j).getResistance();
                            }else{
                                for (int n = 0; n < TLine.get(j).ele.size(); n++){
                                    if(TLine.get(j).ele.get(n).getName().startsWith("K")){
                                        TLine.get(j).ele.get(n).setInVolt(V);
                                        if(TLine.get(j).ele.get(n).isState())
                                            TLine.get(j).ele.get(n).setOutVolt(V);
                                        else
                                            break;
                                    }else if(TLine.get(j).ele.get(n).getName().startsWith("P"))
                                    {
                                        if(TLine.get(j).ele.get(n).getTheState().equals("conduction")) {
                                            TLine.get(j).ele.get(n).setInVolt(V);
                                            TLine.get(j).ele.get(n).setOutVolt(V);
                                        }
                                        else {
                                            TLine.get(j).ele.get(n).setOutVolt(V);
                                            break;
                                        }
                                    }else if(TLine.get(j).ele.get(n).getName().startsWith("H")){
                                        if(TLine.get(j).ele.get(n).pin.containsKey("2")) {
                                            if(TLine.get(j).ele.get(n).pin.get("2").equals(TLine.get(j).getName())){
                                                if(TLine.get(j).ele.get(n).isInversion()){
                                                    TLine.get(j).ele.get(n).setVolt2(V);
                                                    if(TLine.get(j).ele.get(n).getResistance()==5){
                                                        TLine.get(j).ele.get(n).setVolt1(V);
                                                    }else
                                                        break;
                                                }else{
                                                    TLine.get(j).ele.get(n).setVolt1(V);
                                                    if(TLine.get(j).ele.get(n).getResistance()==5){
                                                        TLine.get(j).ele.get(n).setVolt2(V);
                                                    }else
                                                        break;
                                                }
                                            }
                                        }
                                        if(TLine.get(j).ele.get(n).pin.containsKey("3")) {
                                            if(TLine.get(j).ele.get(n).pin.get("3").equals(TLine.get(j).getName())){
                                                if(TLine.get(j).ele.get(n).isInversion()){
                                                    TLine.get(j).ele.get(n).setVolt3(V);
                                                    if(TLine.get(j).ele.get(n).getResistance()==15){
                                                        TLine.get(j).ele.get(n).setVolt1(V);
                                                    }else
                                                        break;
                                                }else{
                                                    TLine.get(j).ele.get(n).setVolt1(V);
                                                    if(TLine.get(j).ele.get(n).getResistance()==15){
                                                        TLine.get(j).ele.get(n).setVolt3(V);
                                                    }else
                                                        break;
                                                }
                                            }
                                        }
                                    }else if(TLine.get(j).ele.get(n).getName().startsWith("M"))
                                    {
                                        setV(TLine.get(j).ele.get(n).getName(),V);
                                    }
                                    else {
                                        TLine.get(j).ele.get(n).setInVolt(V);
                                        TLine.get(j).ele.get(n).setOutVolt(V);
                                    }
                                }
                            }
                        }
                    }
                } else {
                    elementLine.ele.get(i).setInVolt(V);
                    elementLine.ele.get(i).setPD(elementLine.getElectricity() * elementLine.ele.get(i).getResistance());
                    V-=elementLine.ele.get(i).getPD();
                    elementLine.ele.get(i).setOutVolt(V);
                    elementLine.ele.get(i).setElectricity(elementLine.getElectricity());
                    elementLine.ele.get(i).set();
                    if (elementLine.ele.get(i).getName().startsWith("R")) {
                        if (elementLine.ele.get(i).getPD() != 0)
                            elementLine.setLuminance(elementLine.getLuminance() + 180);
                    }
                    if (elementLine.ele.get(i).getName().startsWith("B")) {
                        if (elementLine.ele.get(i).getPD() < 10)
                            elementLine.setLuminance(elementLine.getLuminance() + 0);
                        else if (elementLine.ele.get(i).getPD() >= 10 && elementLine.ele.get(i).getPD() < 220)
                            elementLine.setLuminance(elementLine.getLuminance() + 50 + (elementLine.ele.get(i).getPD() - 10) * (5.0 / 7));
                        else
                            elementLine.setLuminance(elementLine.getLuminance() + 200);
                    }
                }
            }
for (int i = 0; i < elementLine.ele.size(); i++) {
                if (elementLine.ele.get(i).getName().startsWith("S") && elementLine.isState()) {
                    elementLine.ele.get(i).set(String.valueOf(elementLine.getLuminance()));
                }
                if (elementLine.ele.get(i).getName().startsWith("M")) {
                    for (int j = 0; j < MLine.size(); j++) {
                        if (MLine.get(j).getName().equals(elementLine.ele.get(i).getName())) {
                            for (int x = 0; x < MLine.get(j).TLine.size(); x++) {
                                if (MLine.get(j).TLine.get(x).isState()) {
                                    for (int n = 0; n < MLine.get(j).TLine.get(x).ele.size(); n++) {
                                        if (MLine.get(j).TLine.get(x).ele.get(n).getName().startsWith("S") && MLine.get(j).TLine.get(x).isState()) {
                                            MLine.get(j).TLine.get(x).ele.get(n).set(String.valueOf(elementLine.getLuminance()));
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                if (elementLine.ele.get(i).getName().startsWith("T")) {
                    for (int j = 0; j < TLine.size(); j++) {
                        if (TLine.get(j).getName().equals(elementLine.ele.get(i).getName())) {
                            if (TLine.get(j).isState()) {
                                for (int n = 0; n < TLine.get(j).ele.size(); n++) {
                                    if (TLine.get(j).ele.get(n).getName().startsWith("S") && TLine.get(j).isState()) {
                                        TLine.get(j).ele.get(n).set(String.valueOf(elementLine.getLuminance()));
                                    }
                                }
                            }
                        }
                    }
                }
            }

标签:总结,MLine,题目,get,引脚,PTA,TLine,ele,elementLine
From: https://www.cnblogs.com/theBlogForStudy/p/18276909

相关文章

  • 对7~8次pta的总结
    (1).前言:第七次pta难度很大,主要体现在互斥开关的设计上:互斥开关:互斥开关有3个引脚:1个是汇总引脚,另两个是分支引脚。开关电路示意图如图1所示,左边是汇总引脚,编号为1;右边两个是分支引脚,右上的输出引脚为2,右下输出引脚为3。图中1、2、3引脚均可以是输入引脚,当1为输入引脚时,2、......
  • 第三次学习总结
    Java,作为一门广泛应用的编程语言,已经深深地影响了软件开发领域。随着互联网技术的飞速发展,Java在服务器端、移动端、嵌入式系统等领域都发挥着重要的作用。本文将从Java的基本概念、特性、核心技术以及实际应用等方面进行总结,以期帮助初学者更好地掌握Java编程技能。Java是一种面......
  • OO题目集7~8总结
    OO题目集7~8总结​最后的两次题目集主要是对家具强电电路模拟程序的迭代设计,第7次题目集添加了电路元件互斥开关和窗帘,第8次则是添加了二极管元件,新的题目对于创新和思考能力以及思维逻辑能力要求更高了,主要是电路元件和电路系统的功能越来越复杂,比较难用代码体现一个完整的......
  • 题目集7~8的总结
    目录一.前言 nchu-software-oop-2024-上-7~知识点 nchu-software-oop-2024-上-6~知识点二.设计与分析一.家居强电电路模拟程序-3多个并联电路:互斥开关:二.家居强电电路模拟程序-4二极管:输出内容:三.踩坑心得1.字典序排序2.多个互斥开关3.连续调速器4.排查不周4.改进建议1.if-els......
  • PTA7-8总结
    前言知识点PTA7:这是一个模拟电路系统的Java程序,其中定义了多种电路组件(如开关、调速器、灯泡、风扇等),并模拟了它们的交互和行为。下面是对代码的详细分析:类和继承Circuit类:这是一个抽象基类,定义了所有电路组件共有的方法,如设置输入电压、显示状态等。Switch类:继承自Ci......
  • 大模型实战1年半,总结一下在企业落地的三个策略
    节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。总结链接如下:《大模型面试宝典》(2024......
  • 数据库查询总结
     select语句SELECT语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。select语句语法格式SELECT[ALL|DISTINCT]输出表达式,...[FROM表名1[,表名2].....]/*FROM子句*/[WHERE条件]/*WHERE子......
  • PTA题目集7~8的总结性Blog
    前言:对于我这种水平的学生来说本次的7-8次PTA的难度之大令我无从下手,况且之前的第6次PTA就已经让我望而止步了,更别提这两次在第6次PTA题目集之上再次进行迭代的题目了。再加上面临的期末周,大量学科等着我去复习,以至于没时间去钻磨PTA的改动,哭死,连老师都说单单是第8次题目集的题目......
  • pta java
    R7-1标识符命名方式转换:Camel2Snake分数10在程序设计语言中,标识符都不能包含空格。如果我们需要使用两个或两个以上的单词来命名标识符,目前的工程实际中有两种常用的命名方式:Snake方式和Camel方式。Snake方式是指单词用小写字母,单词间下划线(“_”)代替空格;Camel方式是指相......
  • 51 stm32开发关于keil mdk的软件配置常用设置 以及 可能会出现的报错总结
    首先左上角那个魔术棒中,是关于下载烧录软件编译的option选择我们点开他进入target需要我们配置的就两处,1:Xtal:填8.0mhz只是因为要填个数代表stm32(外部高速晶振)或(其他晶振)作为主频时钟的时钟源时的晶振大小方便烧录时对一些代码(对芯片的时钟要求高的代码)的自动编译,实际上......