OOP 7-8次作业总结

news/2024/10/4 21:37:09/文章来源:https://www.cnblogs.com/zaizy14/p/18274917

23201636-曾繁榕
目录

  1. 前言
  2. 设计与分析
  3. 踩坑心得
  4. 改进建议
  5. 总结
    前言
    本次作业知识点:类与对象的复杂使用,继承的进阶使用,各种接口的实现,复杂电路的处理,一个对象多个数据的储存输出,还主要考察了正则表达式的运用,字符串的提取分割;
    个人体会:本次作业难度较难,题量适中,但有些比较复杂的类设计上容易出现错误;第八次作业加上两端引脚电压以及复杂电路处理,难度大大提升
    大题源码
    第七次作业
    家具电路模拟程序-3
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Collections;
import java.util.Comparator;
class Device{protected String id;protected int state;double vt;int gear;double gea;double r;int brightness;int bri;public Device(String id) {this.id = id;this.state = 0;}public void updateState(){}public String getStatus(){return "";}
}class Switch extends Device {public Switch(String id) {super(id);}public void updateState() {state = state == 0 ? 1 : 0;}public String getStatus() {return state == 0 ? "turned on" : "closed";}
}
class Hswitch extends Device {public Hswitch(String id) {super(id);state = 1;}public void updateState() {state = state == 0 ? 1 : 0;}public void setR(){if(gear==2)r = 5;else{r = 10;}}public String getStatus() {return state == 0 ? "turned on" : "closed";}
}class Fcontrol extends Device {private final int maxGear;public Fcontrol(String id, int maxGear) {super(id);this.maxGear = maxGear;}public void updateState() {if(gear<maxGear&&state==1)gear++;else if(gear>0&&state==0)gear--;}public String getStatus() {return String.valueOf(gear);}
}class Lcontrol extends Device {private double gear;public Lcontrol(String id) {super(id);}public void updateState() {gear = gea;}public String getStatus() {return String.format("%.2f", gear);}
}class Blight extends Device {// private int brightness;public Blight(String id) {super(id);r = 10;}public void updateState() {if(vt<10)this.brightness = 0;else if(vt<220)this.brightness = 50 + (int) (5.0/7.0*(vt-10));else if(vt>=220)this.brightness = 200;}public String getStatus() {return String.valueOf(brightness);}
}
class Light extends Device {// private int brightness;public Light(String id) {super(id);r = 5;}public void updateState() {if(vt==0)this.brightness = 0;else this.brightness = 180;}public String getStatus() {return String.valueOf(brightness);}
}
class Scurtain extends Device {String sta;public Scurtain(String id) {super(id);r = 15;}public void updateState() {if(vt<50){sta = "100%";}else{if(bri<50)sta = "100%";else if(bri<100)sta = "80%";else if(bri<200)sta = "60%";else if(bri<300)sta = "40%";else if(bri<400)sta = "20%";elsesta = "0%";}}public String getStatus() {return sta;}
}
class Fan extends Device {int speed;public Fan(String id) {super(id);r = 20;}public void updateState() {if(vt<80)this.speed = 0;else if(vt<150)this.speed = 80 + (int) (4*(vt-80));else if(vt>=150)this.speed = 360;}public String getStatus() {return String.valueOf(speed);}
}
class Afan extends Device {int speed;public Afan(String id) {super(id);r = 20;}public void updateState() {if(vt<80)this.speed = 0;else if(vt<100)this.speed = 80;else if(vt<120)this.speed = 160;else if(vt<140)this.speed = 260;else if(vt>=140)this.speed = 360;}public String getStatus() {return String.valueOf(speed);}
}
class M {double r;String id;List<T> ts;public M(String id) {this.id = id;ts = new ArrayList<>();}public void add(T t) {ts.add(t);}public void computeR(){double sum = 0;for(T t : ts){// System.out.println(1.0/t.r);if(t.isClosed()){sum = sum + 1.0/t.r;}}this.r = (1.0/sum);}
}
class T {double r;String id;int bri;double vt;List<M> ms;List<T> ts;List<Device> devices; // 存储电路中的设备public T(String id) {this.id = id;devices = new ArrayList<>();ms = new ArrayList<>();ts = new ArrayList<>();}public void add(Device device) {devices.add(device);}public void addm(M m) {ms.add(m);}public void addt(T t){ts.add(t);}public void updateState(){for(Device device : devices){if(device instanceof Fan){device.vt = 1.0*device.r/r*vt;device.updateState();}else if(device instanceof Afan){device.vt = 1.0*device.r/r*vt;device.updateState();}else if(device instanceof Blight){device.vt = 1.0*device.r/r*vt;device.updateState();// brisum = brisum+device.brightness;}else if(device instanceof Light){device.vt = 1.0*device.r/r*vt;device.updateState();// brisum = brisum+device.brightness;}else if(device instanceof Scurtain){device.vt = 1.0*device.r/r*vt;}}}public boolean isClosed(){for (Device device : devices){if(device instanceof Switch){if(device.state==0)return false;}else if(device instanceof Hswitch){if(device.state == 0&&device.gear==2||device.state == 1&&device.gear==3)return false;}}return true;}public void computeR(){for (Device device : devices){this.r = this.r + device.r;}for (M m : ms)this.r = this.r + m.r;for(T t : ts)this.r = this.r + t.r;}
}
class Circuit {List<Device> devices; // 存储电路中的设备public Circuit() {devices = new ArrayList<>();}public void add(Device device) {devices.add(device);}public void updateState(String control) {}public void getStatus() {StringBuilder sb = new StringBuilder();ArrayList<String> names = new ArrayList<>();int sum = 0;devices.sort(new Comparator<Device>(){@Overridepublic int compare(Device d1,Device d2){String id1 = d1.id;String id2 = d2.id;return id1.compareTo(id2);}});for (Device device : devices) {if(device instanceof Switch){sum++;// if(sum<=devices.size()-1)//     sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");// else//     sb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus());}}for (Device device : devices) {if(device instanceof Fcontrol){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus());}}for (Device device : devices) {if(device instanceof Lcontrol){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus());}}for (Device device : devices) {if(device instanceof Blight){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus());}}for (Device device : devices) {if(device instanceof Light){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus());}}for (Device device : devices) {if(device instanceof Fan){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus());}}for (Device device : devices) {if(device instanceof Afan){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus());}}for (Device device : devices) {if(device instanceof Hswitch&&device.gear==2){sum++;names.add(device.id);if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus());}else if(device instanceof Hswitch&&device.gear==3){int x=0;sum++;for(int i=0;i<names.size();i++){if(device.id.equals(names.get(i))){x=1;}}if(sum<=devices.size()-1&&x==0)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");else if(sum<=devices.size()&&x==0)sb.append("@").append(device.id).append(":").append(device.getStatus());if(x==0)System.out.println("@"+device.id+":"+device.getStatus());}}for (Device device : devices) {if(device instanceof Scurtain){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus());}}// System.out.println(devices.size());// return sb.toString();}
}public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Circuit circuit = new Circuit();T t[] = new T[10];M m[] = new M[10];int tn = 0;int mn = 0;String regex = "K\\d+-\\d+";String regex1 = "F\\d+-\\d+";String regex2 = "L\\d+-\\d+";String regex3 = "B\\d+-\\d+";String regex4 = "R\\d+-\\d+";String regex5 = "D\\d+-\\d+";String regex6 = "#K\\d+";String regex7 = "#F\\d+\\+";String regex8 = "#F\\d+-";String regex9 = "#L\\d+:.+";String regex10 = "#T\\d+:.*";String regex10_ = "T\\d+-IN";String regex11 = "#M\\d+:.*";String regex12 = "M\\d+-IN";String regex13 = "A\\d+-\\d+";String regex14 = "S\\d+-\\d+";String regex15 = "H\\d+-\\d+";String regex16 = "#H\\d+";Pattern pattern = Pattern.compile("\\[([^\\[\\]]|\\[.*?\\])*\\]");while (sc.hasNext()) {String s = sc.nextLine();if (s.equals("end")) {break;}if(Pattern.matches(regex10,s)){String sstr[] = s.split(":");String id = sstr[0].replace("#","");t[tn] = new T(id);Matcher matcher = pattern.matcher(s);List<String> matchs = new ArrayList<>();while (matcher.find()){String match = matcher.group(0);match = match.trim();matchs.add(match);}for(String match : matchs){// System.out.println(match);s = match;s = s.replace("[","");s = s.replace("]","");String str[] = s.split(" ");if(str.length>1&&Pattern.matches(regex15,str[0])){String str1[] = str[0].split("-");if(Integer.parseInt(str1[1])!=1){Hswitch a = new Hswitch(str1[0]);circuit.add(a);t[tn].add(a);a.gear = Integer.parseInt(str1[1]);a.setR();}}if(str.length>1&&Pattern.matches(regex,str[1])){String str1[] = str[1].split("-");Switch k = new Switch(str1[0]);circuit.add(k);t[tn].add(k);}else if(str.length>1&&Pattern.matches(regex1,str[1])){String str1[] = str[1].split("-");Fcontrol f = new Fcontrol(str1[0],3);circuit.add(f);t[tn].add(f);}else if(str.length>1&&Pattern.matches(regex2,str[1])){String str1[] = str[1].split("-");Lcontrol l = new Lcontrol(str1[0]);circuit.add(l);t[tn].add(l);}else if(str.length>1&&Pattern.matches(regex3,str[1])){String str1[] = str[1].split("-");Blight b = new Blight(str1[0]);circuit.add(b);t[tn].add(b);}else if(str.length>1&&Pattern.matches(regex4,str[1])){String str1[] = str[1].split("-");Light r = new Light(str1[0]);circuit.add(r);t[tn].add(r);}else if(str.length>1&&Pattern.matches(regex5,str[1])){String str1[] = str[1].split("-");Fan d = new Fan(str1[0]);circuit.add(d);t[tn].add(d);}else if(str.length>1&&Pattern.matches(regex13,str[1])){String str1[] = str[1].split("-");Afan a = new Afan(str1[0]);circuit.add(a);t[tn].add(a);}else if(str.length>1&&Pattern.matches(regex14,str[1])){String str1[] = str[1].split("-");Scurtain a = new Scurtain(str1[0]);circuit.add(a);t[tn].add(a);}else if(str.length>1&&Pattern.matches(regex15,str[1])){String str1[] = str[1].split("-");if(Integer.parseInt(str1[1])!=1){Hswitch a = new Hswitch(str1[0]);circuit.add(a);t[tn].add(a);a.gear = Integer.parseInt(str1[1]);a.setR();}}else if(str.length>1&&Pattern.matches(regex12,str[1])){String str1[] = str[1].split("-");for(int i=0;i<mn;i++){if(m[i].id.equals(str1[0]))t[tn].addm(m[i]);}}else if(str.length>1&&Pattern.matches(regex10_,str[1])){String str1[] = str[1].split("-");for(int i=0;i<tn;i++){if(t[i].id.equals(str1[0]))t[tn].addt(t[i]);}}}// System.out.println(t[tn].r);tn++;}else if(Pattern.matches(regex11,s)){String str[] = s.split(":");String id = str[0].replace("#","");m[mn] = new M(id);s = str[1].replace("[","");s = s.replace("]","");String sstr[] = s.split(" ");for(int i=0;i<sstr.length;i++){for(int j=0;j<tn;j++){if(sstr[i].equals(t[j].id)){m[mn].add(t[j]);}}}mn++;}s = s.replace("[","");s = s.replace("]","");String str[] = s.split(" ");if(str.length==1&&Pattern.matches(regex6,str[0])){String ss = str[0].replace("#","");for(int i=0;i<circuit.devices.size();i++){if(ss.equals(circuit.devices.get(i).id))circuit.devices.get(i).updateState();}// for(int i=0;i<t[tn-1].devices.size();i++){//     if(ss.equals(t[tn-1].devices.get(i).id))//         t[tn-1].devices.get(i).updateState();// }}else if(str.length==1&&Pattern.matches(regex16,str[0])){String ss = str[0].replace("#","");for(int i=0;i<circuit.devices.size();i++){if(ss.equals(circuit.devices.get(i).id))circuit.devices.get(i).updateState();}}else if(str.length==1&&Pattern.matches(regex7,str[0])){String ss = str[0].replace("#","");ss = ss.replace("+","");for(int i=0;i<circuit.devices.size();i++){if(ss.equals(circuit.devices.get(i).id)){circuit.devices.get(i).state = 1;circuit.devices.get(i).updateState();}}// for(int i=0;i<t[tn-1].devices.size();i++){//     if(ss.equals(t[tn-1].devices.get(i).id)){//         t[tn-1].devices.get(i).state = 1;//         t[tn-1].devices.get(i).updateState();//     }// }}else if(str.length==1&&Pattern.matches(regex8,str[0])){String ss = str[0].replace("#","");ss = ss.replace("-","");for(int i=0;i<circuit.devices.size();i++){if(ss.equals(circuit.devices.get(i).id)){circuit.devices.get(i).state = 0;circuit.devices.get(i).updateState();}}// for(int i=0;i<t[tn-1].devices.size();i++){//     if(ss.equals(circuit.devices.get(i).id)){//         t[tn-1].devices.get(i).state = 0;//         t[tn-1].devices.get(i).updateState();//     }// }}else if(str.length==1&&Pattern.matches(regex9,str[0])){String ss[] = str[0].split(":");double gear = Double.parseDouble(ss[1]);String sss = ss[0].replace("#","");for(int i=0;i<circuit.devices.size();i++){if(sss.equals(circuit.devices.get(i).id)){circuit.devices.get(i).gea = gear;circuit.devices.get(i).updateState();}}// for(int i=0;i<t[tn-1].devices.size();i++){//     if(sss.equals(t[tn-1].devices.get(i).id)){//         t[tn-1].devices.get(i).gea = gear;//         t[tn-1].devices.get(i).updateState();//     }// }}// 根据输入的控制信息更新电路状态// 这里需要根据实际输入的控制信息来更新电路状态}for(int i=0;i<tn-1;i++){t[i].computeR();// System.out.println(t[i].r);}for(int i=0;i<mn;i++){m[i].computeR();}// System.out.println(m.r);t[tn-1].computeR();// System.out.println(t[tn-1].r);double vt = 220;for(int i=0;i<t[tn-1].devices.size();i++){if(t[tn-1].devices.get(i) instanceof Fcontrol){if(t[tn-1].devices.get(i).gear==0)vt = 0;else if(t[tn-1].devices.get(i).gear==1)vt = (0.3 * vt);else if(t[tn-1].devices.get(i).gear==2)vt = (0.6 * vt);else if(t[tn-1].devices.get(i).gear==3)vt = (0.9 * vt);}else if(t[tn-1].devices.get(i) instanceof Lcontrol){vt = (t[tn-1].devices.get(i).gea * vt);}else if(t[tn-1].devices.get(i) instanceof Switch){if(t[tn-1].devices.get(i).state == 0)vt = 0;}else if(t[tn-1].devices.get(i) instanceof Hswitch){if(t[tn-1].devices.get(i).state == 0&&t[tn-1].devices.get(i).gear==2||t[tn-1].devices.get(i).state == 1&&t[tn-1].devices.get(i).gear==3)vt = 0;}}for(int i=0;i<t[tn-1].ts.size();i++){if(!t[tn-1].ts.get(i).isClosed())vt = 0;}int brisum = 0;for(int i=0;i<t[tn-1].ts.size();i++){t[tn-1].ts.get(i).vt = t[tn-1].ts.get(i).r/t[tn-1].r*vt;t[tn-1].ts.get(i).updateState();}for(int j=0;j<mn;j++){for(int i=0;i<m[j].ts.size();i++){if(m[j].ts.get(i).isClosed()){for(Device device : m[j].ts.get(i).devices){if(device instanceof Fan){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;device.updateState();}else if(device instanceof Afan){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;device.updateState();}else if(device instanceof Blight){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;device.updateState();brisum = brisum+device.brightness;}else if(device instanceof Light){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;device.updateState();brisum = brisum+device.brightness;}else if(device instanceof Scurtain){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;}}}}}for(Device device : t[tn-1].devices){if(device instanceof Fan){device.vt = 1.0*device.r/t[tn-1].r*vt;device.updateState();}else if(device instanceof Afan){device.vt = 1.0*device.r/t[tn-1].r*vt;device.updateState();}else if(device instanceof Blight){device.vt = 1.0*device.r/t[tn-1].r*vt;device.updateState();brisum = brisum+device.brightness;}else if(device instanceof Light){device.vt = 1.0*device.r/t[tn-1].r*vt;device.updateState();brisum = brisum+device.brightness;}else if(device instanceof Scurtain){device.vt = 1.0*device.r/t[tn-1].r*vt;}}for(int j=0;j<mn;j++){for(int i=0;i<m[j].ts.size();i++){if(m[j].ts.get(i).isClosed()){for(Device device : m[j].ts.get(i).devices){if(device instanceof Scurtain){device.bri = brisum;device.updateState();}}}else{for(Device device : m[j].ts.get(i).devices){if(device instanceof Scurtain){device.bri = 0;device.updateState();}}}}}for(Device device : t[tn-1].devices){if(device instanceof Scurtain){device.bri = brisum;device.updateState();}}circuit.getStatus();}
}

第八次作业
家居电路模拟程序-4

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.util.Collections;
import java.util.Comparator;
class Device{protected String id;protected int state;double mi;double i;double vt;double vt1;double vt2;double vt3;int gear;double gea;double r;int brightness;int bri;public Device(String id) {this.id = id;this.state = 0;}public void SetVt1(double vt1) {this.vt1 = vt1;}public void SetVt2(double vt2) {this.vt2 = vt2;}public void updateState(){}public String getStatus(){return "";}public String iLimit() {if(this.i>this.mi)return " exceeding current limit error";elsereturn "";}
}class Switch extends Device {public Switch(String id) {super(id);mi = 20;}public void updateState() {state = state == 0 ? 1 : 0;}public String getStatus() {return state == 0 ? "turned on" : "closed";}
}
class Hswitch extends Device {public Hswitch(String id) {super(id);state = 1;mi = 20;}public void updateState() {state = state == 0 ? 1 : 0;}public void setR(){if(gear==2)r = 5;else{r = 10;}}public String getStatus() {return state == 0 ? "turned on" : "closed";}
}class Fcontrol extends Device {private final int maxGear;public Fcontrol(String id, int maxGear) {super(id);this.maxGear = maxGear;mi = 18;}public void updateState() {if(gear<maxGear&&state==1)gear++;else if(gear>0&&state==0)gear--;}public String getStatus() {return String.valueOf(gear);}
}class Lcontrol extends Device {private double gear;public Lcontrol(String id) {super(id);mi = 18;}public void updateState() {gear = gea;}public String getStatus() {return String.format("%.2f", gear);}
}class Blight extends Device {// private int brightness;public Blight(String id) {super(id);r = 10;mi = 9;}public void updateState() {if(vt<10)this.brightness = 0;else if(vt<220)this.brightness = 50 + (int) (5.0/7.0*(vt-10));else if(vt>=220)this.brightness = 200;}public String getStatus() {return String.valueOf(brightness);}
}
class Light extends Device {// private int brightness;public Light(String id) {super(id);r = 5;mi = 5;}public void updateState() {if(vt==0)this.brightness = 0;else this.brightness = 180;}public String getStatus() {return String.valueOf(brightness);}
}
class Scurtain extends Device {String sta;public Scurtain(String id) {super(id);r = 15;mi = 12;}public void updateState() {if(vt<50){sta = "100%";}else{if(bri<50)sta = "100%";else if(bri<100)sta = "80%";else if(bri<200)sta = "60%";else if(bri<300)sta = "40%";else if(bri<400)sta = "20%";elsesta = "0%";}}public String getStatus() {return sta;}
}
class Fan extends Device {int speed;public Fan(String id) {super(id);r = 20;mi = 12;}public void updateState() {if(vt<80)this.speed = 0;else if(vt<150)this.speed = 80 + (int) (4*(vt-80));else if(vt>=150)this.speed = 360;}public String getStatus() {return String.valueOf(speed);}
}
class Afan extends Device {int speed;public Afan(String id) {super(id);r = 20;mi = 14;}public void updateState() {if(vt<80)this.speed = 0;else if(vt<100)this.speed = 80;else if(vt<120)this.speed = 160;else if(vt<140)this.speed = 260;else if(vt>=140)this.speed = 360;}public String getStatus() {return String.valueOf(speed);}
}
class P extends Device {public P(String id) {super(id);mi = 8;}public void updateState() {}public void setR(){if(gear==1)r = 0;else{r = 100000000;}}public String getStatus() {if(gear==1)return "conduction";elsereturn "cutoff";}
}
class Stm { double r;public void computeR() {}
}
class M extends Stm {double vt1;double vt2;double vt;double i;String id;List<T> ts;public M(String id) {this.id = id;ts = new ArrayList<>();}public void add(T t) {ts.add(t);}public void computeR(){double sum = 0;for(T t : ts){// System.out.println(1.0/t.r);if(t.isClosed()){sum = sum + 1.0/t.r;}}this.r = (1.0/sum);}
}
class T extends Stm {double vt1;double vt2;String id;int bri;double vt;double i;List<M> ms;List<T> ts;List<Device> devices; // 存储电路中的设备List<Object> obj;public T(String id) {this.id = id;devices = new ArrayList<>();ms = new ArrayList<>();ts = new ArrayList<>();obj = new ArrayList<>();}public void add(Device device) {devices.add(device);}public void addm(M m) {ms.add(m);}public void addt(T t){ts.add(t);}public void addo(Object o){obj.add(o);}public void updateState(){for(Device device : devices){if(device instanceof Fan){device.vt = 1.0*device.r/r*vt;device.updateState();}else if(device instanceof Afan){device.vt = 1.0*device.r/r*vt;device.updateState();}else if(device instanceof Blight){device.vt = 1.0*device.r/r*vt;device.updateState();// brisum = brisum+device.brightness;}else if(device instanceof Light){device.vt = 1.0*device.r/r*vt;device.updateState();// brisum = brisum+device.brightness;}else if(device instanceof Scurtain){device.vt = 1.0*device.r/r*vt;}}}public boolean isClosed(){for (Device device : devices){if(device instanceof Switch){if(device.state==0)return false;}else if(device instanceof Hswitch){if(device.state == 0&&device.gear==2||device.state == 1&&device.gear==3)return false;}else if(device instanceof P){if(device.state==2)return false;}}return true;}public void computeR(){for (Device device : devices){this.r = this.r + device.r;}for (M m : ms)this.r = this.r + m.r;for(T t : ts)this.r = this.r + t.r;}
}
class Circuit {List<Device> devices; // 存储电路中的设备public Circuit() {devices = new ArrayList<>();}public void add(Device device) {devices.add(device);}public void getStatus() {StringBuilder sb = new StringBuilder();ArrayList<String> names = new ArrayList<>();int sum = 0;devices.sort(new Comparator<Device>(){@Overridepublic int compare(Device d1,Device d2){String id1 = d1.id;String id2 = d2.id;return id1.compareTo(id2);}});for (Device device : devices) {if(device instanceof Switch){sum++;// if(sum<=devices.size()-1)//     sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");// else//     sb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+device.iLimit());
//                +" "+(int)(device.v1)+"-"+(int)(device.v2)}}for (Device device : devices) {if(device instanceof Fcontrol){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+device.iLimit());}}for (Device device : devices) {if(device instanceof Lcontrol){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+device.iLimit());}}for (Device device : devices) {if(device instanceof Blight){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+device.iLimit());}}for (Device device : devices) {if(device instanceof Light){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+device.iLimit());}}for (Device device : devices) {if(device instanceof Fan){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+device.iLimit());}}for (Device device : devices) {if(device instanceof Afan){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+device.iLimit());}}for (Device device : devices) {if(device instanceof Hswitch&&device.gear==2){sum++;names.add(device.id);if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+"-"+(int)(device.vt3)+device.iLimit());}else if(device instanceof Hswitch&&device.gear==3){int x=0;sum++;for(int i=0;i<names.size();i++){if(device.id.equals(names.get(i))){x=1;}}if(sum<=devices.size()-1&&x==0)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");else if(sum<=devices.size()&&x==0)sb.append("@").append(device.id).append(":").append(device.getStatus());if(x==0)System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+"-"+(int)(device.vt3)+device.iLimit());}}for (Device device : devices) {if(device instanceof Scurtain){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+device.iLimit());}}for (Device device : devices) {if(device instanceof P){sum++;if(sum<=devices.size()-1)sb.append("@").append(device.id).append(":").append(device.getStatus()).append("\n");elsesb.append("@").append(device.id).append(":").append(device.getStatus());System.out.println("@"+device.id+":"+device.getStatus()+" "+(int)(device.vt1)+"-"+(int)(device.vt2)+device.iLimit());}}// System.out.println(devices.size());// return sb.toString();}
}public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);Circuit circuit = new Circuit();T t[] = new T[10];M m[] = new M[10];ArrayList<Stm> stm = new ArrayList<>();int tn = 0;int mn = 0;String regex = "K\\d+-\\d+";String regex1 = "F\\d+-\\d+";String regex2 = "L\\d+-\\d+";String regex3 = "B\\d+-\\d+";String regex4 = "R\\d+-\\d+";String regex5 = "D\\d+-\\d+";String regex6 = "#K\\d+";String regex7 = "#F\\d+\\+";String regex8 = "#F\\d+-";String regex9 = "#L\\d+:.+";String regex10 = "#T\\d+:.*";String regex10_ = "T\\d+-IN";String regex11 = "#M\\d+:.*";String regex12 = "M\\d+-IN";String regex13 = "A\\d+-\\d+";String regex14 = "S\\d+-\\d+";String regex15 = "H\\d+-\\d+";String regex16 = "#H\\d+";String regex17 = "P\\d+-\\d+";Pattern pattern = Pattern.compile("\\[([^\\[\\]]|\\[.*?\\])*\\]");while (sc.hasNext()) {String s = sc.nextLine();if (s.equals("end")) {break;}if(Pattern.matches(regex10,s)){String sstr[] = s.split(":");String id = sstr[0].replace("#","");t[tn] = new T(id);Matcher matcher = pattern.matcher(s);List<String> matchs = new ArrayList<>();while (matcher.find()){String match = matcher.group(0);match = match.trim();matchs.add(match);}for(String match : matchs){// System.out.println(match);s = match;s = s.replace("[","");s = s.replace("]","");String str[] = s.split(" ");if(str.length>1&&Pattern.matches(regex15,str[0])){String str1[] = str[0].split("-");if(Integer.parseInt(str1[1])!=1){Hswitch a = new Hswitch(str1[0]);circuit.add(a);t[tn].add(a);t[tn].addo(a);a.gear = Integer.parseInt(str1[1]);a.setR();}}if(str.length>1&&Pattern.matches(regex,str[1])){String str1[] = str[1].split("-");Switch k = new Switch(str1[0]);circuit.add(k);t[tn].add(k);t[tn].addo(k);}else if(str.length>1&&Pattern.matches(regex1,str[1])){String str1[] = str[1].split("-");Fcontrol f = new Fcontrol(str1[0],3);circuit.add(f);t[tn].add(f);t[tn].addo(f);}else if(str.length>1&&Pattern.matches(regex2,str[1])){String str1[] = str[1].split("-");Lcontrol l = new Lcontrol(str1[0]);circuit.add(l);t[tn].add(l);t[tn].addo(l);}else if(str.length>1&&Pattern.matches(regex3,str[1])){String str1[] = str[1].split("-");Blight b = new Blight(str1[0]);circuit.add(b);t[tn].add(b);t[tn].addo(b);}else if(str.length>1&&Pattern.matches(regex4,str[1])){String str1[] = str[1].split("-");Light r = new Light(str1[0]);circuit.add(r);t[tn].add(r);t[tn].addo(r);}else if(str.length>1&&Pattern.matches(regex5,str[1])){String str1[] = str[1].split("-");Fan d = new Fan(str1[0]);circuit.add(d);t[tn].add(d);t[tn].addo(d);}else if(str.length>1&&Pattern.matches(regex13,str[1])){String str1[] = str[1].split("-");Afan a = new Afan(str1[0]);circuit.add(a);t[tn].add(a);t[tn].addo(a);}else if(str.length>1&&Pattern.matches(regex14,str[1])){String str1[] = str[1].split("-");Scurtain a = new Scurtain(str1[0]);circuit.add(a);t[tn].add(a);t[tn].addo(a);}else if(str.length>1&&Pattern.matches(regex15,str[1])){String str1[] = str[1].split("-");if(Integer.parseInt(str1[1])!=1){Hswitch a = new Hswitch(str1[0]);circuit.add(a);t[tn].add(a);t[tn].addo(a);a.gear = Integer.parseInt(str1[1]);a.setR();}}else if(str.length>1&&Pattern.matches(regex17,str[1])){String str1[] = str[1].split("-");if(Integer.parseInt(str1[1])!=3){P a = new P(str1[0]);circuit.add(a);t[tn].add(a);t[tn].addo(a);a.gear = Integer.parseInt(str1[1]);a.setR();}}else if(str.length>1&&Pattern.matches(regex12,str[1])){String str1[] = str[1].split("-");for(int i=0;i<mn;i++){if(m[i].id.equals(str1[0]))t[tn].addm(m[i]);t[tn].addo(m[i]);}}else if(str.length>1&&Pattern.matches(regex10_,str[1])){String str1[] = str[1].split("-");for(int i=0;i<tn;i++){if(t[i].id.equals(str1[0]))t[tn].addt(t[i]);t[tn].addo(t[i]);}}}// System.out.println(t[tn].r);stm.add(t[tn]);tn++;}else if(Pattern.matches(regex11,s)){String str[] = s.split(":");String id = str[0].replace("#","");m[mn] = new M(id);s = str[1].replace("[","");s = s.replace("]","");String sstr[] = s.split(" ");for(int i=0;i<sstr.length;i++){for(int j=0;j<tn;j++){if(sstr[i].equals(t[j].id)){m[mn].add(t[j]);}}}stm.add(m[mn]);mn++;}s = s.replace("[","");s = s.replace("]","");String str[] = s.split(" ");if(str.length==1&&Pattern.matches(regex6,str[0])){String ss = str[0].replace("#","");for(int i=0;i<circuit.devices.size();i++){if(ss.equals(circuit.devices.get(i).id))circuit.devices.get(i).updateState();}// for(int i=0;i<t[tn-1].devices.size();i++){//     if(ss.equals(t[tn-1].devices.get(i).id))//         t[tn-1].devices.get(i).updateState();// }}else if(str.length==1&&Pattern.matches(regex16,str[0])){String ss = str[0].replace("#","");for(int i=0;i<circuit.devices.size();i++){if(ss.equals(circuit.devices.get(i).id))circuit.devices.get(i).updateState();}}else if(str.length==1&&Pattern.matches(regex7,str[0])){String ss = str[0].replace("#","");ss = ss.replace("+","");for(int i=0;i<circuit.devices.size();i++){if(ss.equals(circuit.devices.get(i).id)){circuit.devices.get(i).state = 1;circuit.devices.get(i).updateState();}}// for(int i=0;i<t[tn-1].devices.size();i++){//     if(ss.equals(t[tn-1].devices.get(i).id)){//         t[tn-1].devices.get(i).state = 1;//         t[tn-1].devices.get(i).updateState();//     }// }}else if(str.length==1&&Pattern.matches(regex8,str[0])){String ss = str[0].replace("#","");ss = ss.replace("-","");for(int i=0;i<circuit.devices.size();i++){if(ss.equals(circuit.devices.get(i).id)){circuit.devices.get(i).state = 0;circuit.devices.get(i).updateState();}}// for(int i=0;i<t[tn-1].devices.size();i++){//     if(ss.equals(circuit.devices.get(i).id)){//         t[tn-1].devices.get(i).state = 0;//         t[tn-1].devices.get(i).updateState();//     }// }}else if(str.length==1&&Pattern.matches(regex9,str[0])){String ss[] = str[0].split(":");double gear = Double.parseDouble(ss[1]);String sss = ss[0].replace("#","");for(int i=0;i<circuit.devices.size();i++){if(sss.equals(circuit.devices.get(i).id)){circuit.devices.get(i).gea = gear;circuit.devices.get(i).updateState();}}// for(int i=0;i<t[tn-1].devices.size();i++){//     if(sss.equals(t[tn-1].devices.get(i).id)){//         t[tn-1].devices.get(i).gea = gear;//         t[tn-1].devices.get(i).updateState();//     }// }}// 根据输入的控制信息更新电路状态// 这里需要根据实际输入的控制信息来更新电路状态}
//        for(int i=0;i<tn-1;i++)
//        {
//            t[i].computeR();
//            // System.out.println(t[i].r);
//        }
//        for(int i=0;i<mn;i++){
//            m[i].computeR();
//        }
//        // System.out.println(m.r);
//        t[tn-1].computeR();for(int i=0;i<stm.size();i++) {stm.get(i).computeR();}double vt0 = 220;double vt = 220;for(int i=0;i<t[tn-1].devices.size();i++){if(t[tn-1].devices.get(i) instanceof Fcontrol){if(t[tn-1].devices.get(i).gear==0)vt = 0;else if(t[tn-1].devices.get(i).gear==1)vt = (0.3 * vt);else if(t[tn-1].devices.get(i).gear==2)vt = (0.6 * vt);else if(t[tn-1].devices.get(i).gear==3)vt = (0.9 * vt);}else if(t[tn-1].devices.get(i) instanceof Lcontrol){vt = (t[tn-1].devices.get(i).gea * vt);}else if(t[tn-1].devices.get(i) instanceof Switch){if(t[tn-1].devices.get(i).state == 0)vt = 0;}else if(t[tn-1].devices.get(i) instanceof Hswitch){if(t[tn-1].devices.get(i).state == 0&&t[tn-1].devices.get(i).gear==2||t[tn-1].devices.get(i).state == 1&&t[tn-1].devices.get(i).gear==3)vt = 0;}}for(int i=0;i<t[tn-1].devices.size();i++){if(t[tn-1].devices.get(i) instanceof Fcontrol){if(t[tn-1].devices.get(i).gear==0)vt = 0;else if(t[tn-1].devices.get(i).gear==1)vt0 = (0.3 * vt0);else if(t[tn-1].devices.get(i).gear==2)vt0 = (0.6 * vt0);else if(t[tn-1].devices.get(i).gear==3)vt0 = (0.9 * vt0);}else if(t[tn-1].devices.get(i) instanceof Lcontrol){vt0 = (t[tn-1].devices.get(i).gea * vt0);}}for(int i=0;i<t[tn-1].ts.size();i++){if(!t[tn-1].ts.get(i).isClosed())vt = 0;}int brisum = 0;for(int i=0;i<t[tn-1].devices.size();i++) {t[tn-1].devices.get(i).i = vt/t[tn-1].r;}for(int i=0;i<t[tn-1].ts.size();i++){t[tn-1].ts.get(i).vt = t[tn-1].ts.get(i).r/t[tn-1].r*vt;t[tn-1].ts.get(i).i = t[tn-1].ts.get(i).vt/t[tn-1].ts.get(i).r;t[tn-1].ts.get(i).updateState();}for(int i=0;i<t[tn-1].ms.size();i++) {t[tn-1].ms.get(i).vt = t[tn-1].ms.get(i).r/t[tn-1].r*vt;for(int j=0;j<t[tn-1].ms.get(i).ts.size();j++) {if(t[tn-1].ms.get(i).ts.get(j).isClosed()) {t[tn-1].ms.get(i).ts.get(j).vt = t[tn-1].ms.get(i).vt;t[tn-1].ms.get(i).ts.get(j).i = t[tn-1].ms.get(i).vt/t[tn-1].ms.get(i).ts.get(j).r;}for(int k=0;k<t[tn-1].ms.get(i).ts.get(j).devices.size();k++) {t[tn-1].ms.get(i).ts.get(j).devices.get(k).vt = t[tn-1].ms.get(i).ts.get(j).devices.get(k).r/t[tn-1].ms.get(i).ts.get(j).r*t[tn-1].ms.get(i).ts.get(j).vt;t[tn-1].ms.get(i).ts.get(j).devices.get(k).i = t[tn-1].ms.get(i).ts.get(j).i;}for(int k=0;k<t[tn-1].ms.get(i).ts.get(j).ms.size();k++) {t[tn-1].ms.get(i).ts.get(j).ms.get(k).vt = t[tn-1].ms.get(i).ts.get(j).ms.get(k).r/t[tn-1].ms.get(i).ts.get(j).r*t[tn-1].ms.get(i).vt;for(int p=0;p<t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.size();p++) {if(t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).isClosed()) {t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).vt = t[tn-1].ms.get(i).ts.get(j).ms.get(k).vt;t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).i = t[tn-1].ms.get(i).ts.get(j).ms.get(k).vt/t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).r;}for(int pp=0;pp<t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).devices.size();pp++) {t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).devices.get(pp).vt = t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).devices.get(pp).r/t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).r*t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).vt;t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).devices.get(pp).i = t[tn-1].ms.get(i).ts.get(j).ms.get(k).ts.get(p).i;}}}}}for(int j=0;j<mn;j++){for(int i=0;i<m[j].ts.size();i++){if(m[j].ts.get(i).isClosed()){for(Device device : m[j].ts.get(i).devices){if(device instanceof Fan){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;device.updateState();}else if(device instanceof Hswitch){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;}else if(device instanceof Afan){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;device.updateState();}else if(device instanceof Blight){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;device.updateState();brisum = brisum+device.brightness;}else if(device instanceof Light){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;device.updateState();brisum = brisum+device.brightness;}else if(device instanceof Scurtain){device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;}else if(device instanceof P)device.vt = 1.0*(device.r/m[j].ts.get(i).r)*m[j].r/t[tn-1].r*vt;}}}}for(Device device : t[tn-1].devices){if(device instanceof Switch) {if(device.state==1)device.vt = 0;elsedevice.vt = vt0;}else if(device instanceof Fcontrol||device instanceof Lcontrol) {device.vt = 220-vt;}else if(device instanceof Hswitch){device.vt = 1.0*device.r/t[tn-1].r*vt;}else if(device instanceof Fan){device.vt = 1.0*device.r/t[tn-1].r*vt;device.updateState();}else if(device instanceof Afan){device.vt = 1.0*device.r/t[tn-1].r*vt;device.updateState();}else if(device instanceof Blight){device.vt = 1.0*device.r/t[tn-1].r*vt;device.updateState();brisum = brisum+device.brightness;}else if(device instanceof Light){device.vt = 1.0*device.r/t[tn-1].r*vt;device.updateState();brisum = brisum+device.brightness;}else if(device instanceof Scurtain){device.vt = 1.0*device.r/t[tn-1].r*vt;}else if(device instanceof P)device.vt = 1.0*device.r/t[tn-1].r*vt;}for(int j=0;j<mn;j++){for(int i=0;i<m[j].ts.size();i++){if(m[j].ts.get(i).isClosed()){for(Device device : m[j].ts.get(i).devices){if(device instanceof Scurtain){device.bri = brisum;device.updateState();}}}else{for(Device device : m[j].ts.get(i).devices){if(device instanceof Scurtain){device.bri = 0;device.updateState();}}}}}for(Device device : t[tn-1].devices){if(device instanceof Scurtain){device.bri = brisum;device.updateState();}}for(int i=0;i<t[tn-1].obj.size();i++) {Object o = t[tn-1].obj.get(i); Object o1 = null;Object o2 = null;Object o3 = null;
//        	Object o4 = null;
//        	Object o5 = null;if(i>0)o1 = t[tn-1].obj.get(i-1); if(i==0) {        	if(o instanceof Hswitch) {}else if(o instanceof Switch) {Device b = (Device) o;if(b.state==0) {b.vt1 = vt0;b.vt2 = 0;}else {b.vt1 = vt0;b.vt2 = vt0;}t[tn-1].obj.set(i, b);}else if(o instanceof P) {Device b = (Device) o;b.vt2 = vt0;b.vt1 = vt0-b.vt;t[tn-1].obj.set(i, b);}else if(o instanceof Device){Device b = (Device) o;b.vt1 = vt0;b.vt2 = vt0-b.vt;t[tn-1].obj.set(i, b);}else if(o instanceof T) {T b = (T) o;b.vt1 = vt0;b.vt2 = vt0-b.vt;for(int j=0;j<b.obj.size();j++) {o2 = b.obj.get(j);if(j>0)o3 = b.obj.get(j-1);if(j==0) {if(o2 instanceof Hswitch) {}else if(o2 instanceof Switch){Device d = (Device) o2;if(d.state==0) {d.vt1 = b.vt1;d.vt2 = 0;}else {d.vt1 = b.vt1;d.vt2 = b.vt1;}b.obj.set(j, d);}else if(o2 instanceof P) {Device d = (Device) o2;d.vt2 = b.vt1;d.vt1 = b.vt1-d.vt;b.obj.set(j, d);}else if(o2 instanceof Device){Device d = (Device) o2;d.vt1 = b.vt1;d.vt2 = b.vt1-d.vt;b.obj.set(j, d);}else if(o2 instanceof T) {T d = (T) o2;d.vt1 = b.vt1;d.vt2 = b.vt1-d.vt;b.obj.set(j, d);}else if(o2 instanceof M) {M d = (M) o2;d.vt1 = b.vt1;d.vt2 = b.vt1-d.vt;b.obj.set(j, d);}}else {}}t[tn-1].obj.set(i, b);}else if(o instanceof M) {M b = (M) o;b.vt1 = vt0;b.vt2 = vt0-b.vt;for(int j=0;j<b.ts.size();j++) {for(int k=0;k<tn;k++) {if(t[k].id.equals(b.ts.get(j).id)) {for(int p=0;p<t[k].obj.size();p++) {o2 = t[k].obj.get(p);if(p>0)o3 = t[k].obj.get(p-1);if(p==0) {if(o2 instanceof Hswitch) {}else if(o2 instanceof Switch){Device d = (Device) o2;if(d.state==0) {d.vt1 = b.vt1;d.vt2 = 0;}else {d.vt1 = b.vt1;d.vt2 = b.vt1;}t[k].obj.set(p, d);}else if(o2 instanceof P) {Device d = (Device) o2;d.vt2 = b.vt1;d.vt1 = b.vt1-d.vt;t[k].obj.set(p, d);}else if(o2 instanceof Device){Device d = (Device) o2;d.vt1 = b.vt1;d.vt2 = b.vt1-d.vt;t[k].obj.set(p, d);}else if(o2 instanceof T) {T d = (T) o2;d.vt1 = b.vt1;d.vt2 = b.vt1-d.vt;t[k].obj.set(p, d);}else if(o2 instanceof M) {M d = (M) o2;d.vt1 = b.vt1;d.vt2 = b.vt1-d.vt;t[k].obj.set(p, d);}}else {}}}}}t[tn-1].obj.set(i, b);}}else{if(o instanceof Hswitch) {}else if(o instanceof P) {Device d = null;T tt = null;M mm = null;if(o1 instanceof P) {d = (Device) o1;Device b = (Device) o;b.vt2 = d.vt1;b.vt1 = d.vt1-b.vt;t[tn-1].obj.set(i, b);}else if(o1 instanceof Device) {d = (Device) o1;Device b = (Device) o;b.vt2 = d.vt2;b.vt1 = d.vt2-b.vt;t[tn-1].obj.set(i, b);}else if(o1 instanceof T) {tt = (T) o1;Device b = (Device) o;b.vt2 = tt.vt2;b.vt1 = tt.vt2-b.vt;t[tn-1].obj.set(i, b);}else if(o1 instanceof M) {mm = (M) o1;Device b = (Device) o;b.vt2 = mm.vt2;b.vt1 = mm.vt2-b.vt;t[tn-1].obj.set(i, b);}}else if(o instanceof Device){Device d = null;T tt = null;M mm = null;if(o1 instanceof P) {d = (Device) o1;Device b = (Device) o;b.vt1 = d.vt1;b.vt2 = b.vt1-b.vt;t[tn-1].obj.set(i, b);}else if(o1 instanceof Device) {d = (Device) o1;Device b = (Device) o;b.vt1 = d.vt2;b.vt2 = d.vt2-b.vt;t[tn-1].obj.set(i, b);}else if(o1 instanceof T) {tt = (T) o1;Device b = (Device) o;b.vt1 = tt.vt2;b.vt2 = tt.vt2-b.vt;t[tn-1].obj.set(i, b);}else if(o1 instanceof M) {mm = (M) o1;Device b = (Device) o;b.vt1 = mm.vt2;b.vt2 = mm.vt2-b.vt;t[tn-1].obj.set(i, b);}}else if(o instanceof T) {Device d = null;T tt = null;M mm = null;if(o1 instanceof P) {d = (Device) o1;T b = (T) o;b.vt1 = d.vt1;b.vt2 = b.vt1-b.vt;for(int j=0;j<b.obj.size();j++) {o2 = b.obj.get(j);if(j>0)o3 = b.obj.get(j-1);if(j==0) {if(o2 instanceof Hswitch) {}else if(o2 instanceof Switch){Device dd = (Device) o2;if(dd.state==0) {dd.vt1 = b.vt1;dd.vt2 = 0;}else {dd.vt1 = b.vt1;dd.vt2 = b.vt1;}b.obj.set(j, dd);}else if(o2 instanceof P) {Device dd = (Device) o2;dd.vt2 = b.vt1;dd.vt1 = b.vt1-dd.vt;b.obj.set(j, dd);}else if(o2 instanceof Device){Device dd = (Device) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;b.obj.set(j, dd);}else if(o2 instanceof T) {T dd = (T) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;b.obj.set(j, dd);}else if(o2 instanceof M) {M dd = (M) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;b.obj.set(j, dd);}}else {if(o2 instanceof Hswitch) {}else if(o2 instanceof P) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt2;b1.vt1 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt2 = tt1.vt2;b1.vt1 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt2 = mm1.vt2;b1.vt1 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}else if(o2 instanceof Device) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}else if(o2 instanceof T) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;T b1 = (T) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;T b1 = (T) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}else if(o2 instanceof M) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;T b1 = (T) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;T b1 = (T) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}}}t[tn-1].obj.set(i, b);}else if(o1 instanceof Device) {d = (Device) o1;T b = (T) o;b.vt1 = d.vt2;          b.vt2 = d.vt2-b.vt;for(int j=0;j<b.obj.size();j++) {o2 = b.obj.get(j);if(j>0)o3 = b.obj.get(j-1);if(j==0) {if(o2 instanceof Hswitch) {}else if(o2 instanceof Switch){Device dd = (Device) o2;if(dd.state==0) {dd.vt1 = b.vt1;dd.vt2 = 0;}else {  dd.vt1 = b.vt1;dd.vt2 = b.vt1;}b.obj.set(j, dd);}else if(o2 instanceof P) {Device dd = (Device) o2;dd.vt2 = b.vt1;dd.vt1 = b.vt1-dd.vt;b.obj.set(j, dd);}else if(o2 instanceof Device){Device dd = (Device) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;b.obj.set(j, dd);}else if(o2 instanceof T) {T dd = (T) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;b.obj.set(j, dd);}else if(o2 instanceof M) {M dd = (M) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;b.obj.set(j, dd);}}else {if(o2 instanceof Hswitch) {}else if(o2 instanceof P) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt2;b1.vt1 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt2 = tt1.vt2;b1.vt1 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt2 = mm1.vt2;b1.vt1 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}else if(o2 instanceof Device) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}else if(o2 instanceof T) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;T b1 = (T) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;T b1 = (T) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}else if(o2 instanceof M) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;T b1 = (T) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;T b1 = (T) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}}}t[tn-1].obj.set(i, b);}else if(o1 instanceof T) {tt = (T) o1;T b = (T) o;b.vt1 = tt.vt2;b.vt2 = tt.vt2-b.vt;for(int j=0;j<b.obj.size();j++) {o2 = b.obj.get(j);if(j>0)o3 = b.obj.get(j-1);if(j==0) {if(o2 instanceof Hswitch) {}else if(o2 instanceof Switch){Device dd = (Device) o2;if(dd.state==0) {dd.vt1 = b.vt1;dd.vt2 = 0;}else {dd.vt1 = b.vt1;dd.vt2 = b.vt1;}b.obj.set(j, dd);}else if(o2 instanceof P) {Device dd = (Device) o2;dd.vt2 = b.vt1;dd.vt1 = b.vt1-dd.vt;b.obj.set(j, dd);}else if(o2 instanceof Device){Device dd = (Device) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;b.obj.set(j, dd);}else if(o2 instanceof T) {T dd = (T) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;b.obj.set(j, dd);}else if(o2 instanceof M) {M dd = (M) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;b.obj.set(j, dd);}}else {if(o2 instanceof Hswitch) {}else if(o2 instanceof P) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt2;b1.vt1 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt2 = tt1.vt2;b1.vt1 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt2 = mm1.vt2;b1.vt1 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}else if(o2 instanceof Device) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}else if(o2 instanceof T) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;T b1 = (T) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;T b1 = (T) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}else if(o2 instanceof M) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof T) {tt1 = (T) o3;T b1 = (T) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;b.obj.set(j, b1);}else if(o3 instanceof M) {mm1 = (M) o3;T b1 = (T) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;b.obj.set(j, b1);}}}}t[tn-1].obj.set(i, b);}}else if(o instanceof M) {Device d = null;T tt = null;M mm = null;M b = (M) o;if(o1 instanceof P) {d = (Device) o1;b.vt1 = d.vt1;b.vt2 = b.vt1-b.vt;for(int j=0;j<b.ts.size();j++) {for(int k=0;k<tn;k++) {if(t[k].id.equals(b.ts.get(j).id)) {for(int p=0;p<t[k].obj.size();p++) {o2 = t[k].obj.get(p);if(p>0)o3 = t[k].obj.get(p-1);if(p==0) {if(o2 instanceof Hswitch) {}else if(o2 instanceof Switch){Device dd = (Device) o2;if(dd.state==0) {dd.vt1 = b.vt1;dd.vt2 = 0;}else {dd.vt1 = b.vt1;dd.vt2 = b.vt1;}t[k].obj.set(p, dd);}else if(o2 instanceof P) {Device dd = (Device) o2;dd.vt2 = b.vt1;dd.vt1 = b.vt1-dd.vt;t[k].obj.set(p, dd);}else if(o2 instanceof Device){Device dd = (Device) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;t[k].obj.set(p, dd);}else if(o2 instanceof T) {T dd = (T) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;t[k].obj.set(p, dd);}else if(o2 instanceof M) {M dd = (M) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;t[k].obj.set(p, dd);}}else {if(o2 instanceof Hswitch) {}else if(o2 instanceof P) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt2;b1.vt1 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt2 = tt1.vt2;b1.vt1 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt2 = mm1.vt2;b1.vt1 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}else if(o2 instanceof Device) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt2;b1.vt1 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt2 = tt1.vt2;b1.vt1 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt2 = mm1.vt2;b1.vt1 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}else if(o2 instanceof T) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;T b1 = (T) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;T b1 = (T) o2;b1.vt2 = d1.vt2;b1.vt1 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;T b1 = (T) o2;b1.vt2 = tt1.vt2;b1.vt1 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;T b1 = (T) o2;b1.vt2 = mm1.vt2;b1.vt1 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}else if(o2 instanceof M) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;M b1 = (M) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;M b1 = (M) o2;b1.vt2 = d1.vt2;b1.vt1 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;M b1 = (M) o2;b1.vt2 = tt1.vt2;b1.vt1 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;M b1 = (M) o2;b1.vt2 = mm1.vt2;b1.vt1 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}}}b.ts.set(j, t[k]);}}}t[tn-1].obj.set(i, b);}else if(o1 instanceof Device) {d = (Device) o1;b.vt1 = d.vt2;b.vt2 = d.vt2-b.vt;for(int j=0;j<b.ts.size();j++) {for(int k=0;k<tn;k++) {if(b.ts.get(j).id.equals(t[k].id)) {for(int p=0;p<t[k].obj.size();p++) {o2 = t[k].obj.get(p);if(p>0)o3 = t[k].obj.get(p-1);if(p==0) {if(o2 instanceof Hswitch) {}else if(o2 instanceof Switch){Device dd = (Device) o2;if(dd.state==0) {dd.vt1 = b.vt1;dd.vt2 = 0;}else {dd.vt1 = b.vt1;dd.vt2 = b.vt1;}t[k].obj.set(p, dd);}else if(o2 instanceof P) {Device dd = (Device) o2;dd.vt2 = b.vt1;dd.vt1 = b.vt1-dd.vt;t[k].obj.set(p, dd);}else if(o2 instanceof Device){Device dd = (Device) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;t[k].obj.set(p, dd);}else if(o2 instanceof T) {T dd = (T) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;t[k].obj.set(p, dd);}else if(o2 instanceof M) {M dd = (M) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;t[k].obj.set(p, dd);}}else {if(o2 instanceof Hswitch) {}else if(o2 instanceof P) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt2;b1.vt1 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt2 = tt1.vt2;b1.vt1 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt2 = mm1.vt2;b1.vt1 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}else if(o2 instanceof Device) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {System.out.println(1);d1 = (Device) o3;Device b1 = (Device) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}else if(o2 instanceof T) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;T b1 = (T) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;T b1 = (T) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;T b1 = (T) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}else if(o2 instanceof M) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;M b1 = (M) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;M b1 = (M) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;M b1 = (M) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;M b1 = (M) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}}}b.ts.set(j, t[k]);}}}t[tn-1].obj.set(i, b);}else if(o1 instanceof M) {mm = (M) o1;b.vt1 = mm.vt2;b.vt2 = mm.vt2-b.vt;for(int j=0;j<b.ts.size();j++) {for(int k=0;k<tn;k++) {if(t[k].id.equals(b.ts.get(j).id)) {for(int p=0;p<t[k].obj.size();p++) {o2 = t[k].obj.get(p);if(p>0)o3 = t[k].obj.get(p-1);if(p==0) {if(o2 instanceof Hswitch) {}else if(o2 instanceof Switch){Device dd = (Device) o2;if(dd.state==0) {dd.vt1 = b.vt1;dd.vt2 = 0;}else {dd.vt1 = b.vt1;dd.vt2 = b.vt1;}t[k].obj.set(p, dd);}else if(o2 instanceof P) {Device dd = (Device) o2;dd.vt2 = b.vt1;dd.vt1 = b.vt1-dd.vt;t[k].obj.set(p, dd);}else if(o2 instanceof Device){Device dd = (Device) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;t[k].obj.set(p, dd);}else if(o2 instanceof T) {T dd = (T) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;t[k].obj.set(p, dd);}else if(o2 instanceof M) {M dd = (M) o2;dd.vt1 = b.vt1;dd.vt2 = b.vt1-dd.vt;t[k].obj.set(p, dd);}}else {if(o2 instanceof Hswitch) {}else if(o2 instanceof P) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt1;b1.vt1 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt2 = d1.vt2;b1.vt1 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt2 = tt1.vt2;b1.vt1 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt2 = mm1.vt2;b1.vt1 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}else if(o2 instanceof Device) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;Device b1 = (Device) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;Device b1 = (Device) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;Device b1 = (Device) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}else if(o2 instanceof T) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;T b1 = (T) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;T b1 = (T) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;T b1 = (T) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}else if(o2 instanceof M) {Device d1 = null;T tt1 = null;M mm1 = null;if(o3 instanceof P) {d1 = (Device) o3;M b1 = (M) o2;b1.vt1 = d1.vt1;b1.vt2 = d1.vt1-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof Device) {d1 = (Device) o3;M b1 = (M) o2;b1.vt1 = d1.vt2;b1.vt2 = d1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof T) {tt1 = (T) o3;M b1 = (M) o2;b1.vt1 = tt1.vt2;b1.vt2 = tt1.vt2-b1.vt;t[k].obj.set(p, b1);}else if(o3 instanceof M) {mm1 = (M) o3;M b1 = (M) o2;b1.vt1 = mm1.vt2;b1.vt2 = mm1.vt2-b1.vt;t[k].obj.set(p, b1);}}}}b.ts.set(j, t[k]);}}	}t[tn-1].obj.set(i, b);}}}}for(Device device : t[tn-1].devices){if(device instanceof Switch) {device.vt = 0;}}if(t[tn-1].r == 0) {System.out.println("short circuit error");}elsecircuit.getStatus();}
}

设计与分析
第五次作业
家居电路模拟程序-1

本次作业新加入两个类,分别是受控窗帘与互斥开关类,皆继承自电器类;
第六次作业
家居电路模拟系统-2

本次作业新加入了二极管类,类间嵌套关系更加复杂,串联电路中有串联和并联,并联中可能也有串联和并联;

踩坑心得
第七次作业
家居电路模拟程序-3
本次作业为家居电路第三次作业,作业难度进一步增大,加入了多个并联,多个串联等情况,以及受控窗帘,互斥开关两种新设备;
第八次作业
家居电路模拟系统-4
本次作业较难,问题主要对复杂电路的处理以及对引脚电压的计算,本次作业电路复杂,出现并联中含有并联的情况,另加入二极管设备;

改进建议
1.使用接口和抽象类:
接口: 可以定义一些共通的方法,比如电器设备的开关、更新状态等,通过实现接口,不同电器可以有自己的实现方式,同时也便于扩展新的设备类型。
抽象类: 可以用于定义一些共通的属性和方法,但不一定需要每个子类都实现。例如,可以定义一个电子设备抽象类,包含电压、电流等属性,以及一些基本的开关方法。具体的电器类可以继承这个抽象类并实现特定的功能。
2.优化类的设计:
减少冗余属性: 检查每个类的属性,确保没有多余的属性。如果某个属性只在少数几个子类中使用,可以考虑将这些属性移到对应的子类中。
使用组合代替继承: 当两个类之间关系不是“is-a”而是“has-a”时,应该使用组合而不是继承。例如,一个电路可以有多个设备,而不是设备继承自电路类。
优化数据存储:
3.使用HashMap存储引脚电压: 可以使用HashMap来存储每个设备的不同引脚电压,这样可以更灵活地处理引脚问题,同时代码也会更加清晰。
利用集合类: 使用ArrayList、HashSet等集合类来存储相关联的对象,比如电路中的设备、设备中的引脚等。
4.增加注释和文档:
注释: 对关键的类、方法、变量增加详细的注释,说明其用途、实现逻辑等。
文档: 编写项目文档,包括设计思路、类结构、接口说明等,方便团队成员理解和维护代码。
5.增强错误处理和日志记录:
错误处理: 在关键的操作点增加错误处理逻辑,比如电路短路、电流超限等情况,给出明确的错误提示。
日志记录: 记录关键的操作和状态变化,便于调试和追踪问题。
6.优化算法和性能:
算法优化: 检查当前的算法实现,看是否有更高效的实现方式。例如,电路的电压和电流计算可以通过更优化的算法来减少计算量。
性能优化: 对于大数据量或复杂电路的情况,考虑使用更高效的数据结构和算法,或者通过多线程、异步处理等方式来优化性能。
7.代码重构:
模块化: 将代码拆分成多个模块,每个模块负责一个相对独立的功能。这样可以降低代码间的耦合度,提高代码的可维护性。
重构: 定期对代码进行重构,删除无用的代码、优化代码结构、简化复杂逻辑等。

总结
1.面向对象编程的深入理解:通过设计和实现多个类(如设备类、开关类、电路类等),深刻理解了面向对象编程的核心概念,包括封装、继承和多态。这些概念在解决实际问题时非常有用,能够使得代码更加模块化、易于理解和维护。
2.复杂问题的分解与解决:面对复杂的电路模拟问题,学会了将大问题分解成若干个小问题来解决。通过定义不同的类来表示不同的设备和电路组件,以及通过组合和继承来构建复杂的电路结构,成功地将复杂问题简化为一系列可管理的任务。
3.算法和逻辑的实现:在实现设备状态更新、电路电压和电流计算等功能时,锻炼了算法设计和逻辑实现的能力。需要仔细考虑各种边界条件和异常情况,确保程序的健壮性和正确性。
4.错误处理和日志记录:意识到在复杂系统中错误处理和日志记录的重要性。通过添加错误处理和日志记录机制,能够及时发现和解决问题,提高系统的稳定性和可维护性。
5.性能优化的考虑:在处理大数据量或复杂电路时,开始关注程序的性能问题。思考如何通过优化算法、使用更高效的数据结构或采用多线程等方式来提高程序的执行效率。
6.团队合作与代码规范:虽然本次作业可能是个人完成,但在实际项目中团队合作和代码规范同样重要。意识到编写清晰、可读的代码,以及遵循统一的编码规范和风格,对于团队协作和代码维护至关重要。
7.持续学习和改进:认识到编程是一个不断学习和改进的过程。通过本次作业发现了自己在某些方面的不足,如接口和抽象类的使用、代码注释的缺失等。未来将继续努力提升自己的编程能力,学习更多的新技术和方法,以更好地应对各种挑战。
综上所述,本次作业不仅是一次对面向对象编程和算法设计的实践,更是一次对自我能力和态度的提升。通过总结经验和教训,相信在未来的学习和工作中能够取得更大的进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/733508.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DHCP

DHCP Discover:由客户端发出广播,用来发现DHCP服务器。 DHCP Offer:由DHCP服务器发出,告诉客户端,我可以提供IP地址。 DHCP Request:由客户端发出的广播,告诉对应的DHCP服务器,我需要IP地址。 DHCP ACK:由DHCP服务器发出,提供客户端响应的IP地址,DNS,租期,掩码,网…

基于cifar数据集合成含开集、闭集噪声的数据集

前言 噪声标签学习下的一个任务是:训练集上存在开集噪声和闭集噪声;然后在测试集上对闭集样本进行分类。 训练集中被加入的开集样本,会被均匀得打上闭集样本的标签充当开集噪声;而闭集噪声的设置与一般的噪声标签学习一致,分为对称噪声:随机将闭集样本的标签替换为其他类…

AbpVnext系列四 用户表设计

一、一个系统中,最开始要设计的是用户表,先简单的设计如下图。 二、类的实体/// <summary>/// /// </summary>/// <param name="id"></param>public User(long id){Id = id;Status = NormalLockedStatus.Normal;}/// <summary>/// …

oop第7~8次作业总结(第三次Blog)

oop第7~8次作业总结(第三次Blog) 一、前言 二、设计与分析 三、踩坑心得 四、改进建议 五、总结 一、前言 1、第七次作业 第六次作业只有一道题,与上次相比,本次迭代考虑多个并联电路串联在一起的情况,考虑一条串联电路中包含其他串联电路的情况。增加了互斥开关和受控窗帘…

Profinet IO从站数据 转EtherCAT项目案例

目录 1 案例说明 1 2 VFBOX网关工作原理 1 3 准备工作 2 4 使用PRONETA软件获取PROFINET IO从站的配置信息 2 5 设置网关采集PROFINETIO从站设备数据 5 6 启动ETHERCAT从站转发采集的数据 8 7 选择槽号和数据地址 9 8 选择子槽号 11 9 案例总结 12 1 案例说明设置网关采集Profi…

题目集7~8总结性blog

前言在我看来,题目集7~8知识点在于类的使用,方法的调用,通过不同类的ArrayList的使用将所有元件信息录入,通过连接方式将其变成一条电路,从而进行计算和使用,题量不大,只有一道题,在精不在多,难度适中,可以接受并且能够编程写出,完成功能的实现。设计与分析题目集七…

【日记】现在的孩子真是不怕大人呢(1975 字)

正文时间太晚了,而且想写的内容有点多,就不写在日记本上了。不过说内容多,其实也只有两件事情。其他的就一笔带过吧。一件关于灵,另一件事关于遇见的孩子。首先说说工作,今天真的如昨天预料的那样,特别忙。开一个户,上午就没了。倒不是因为有多难,也不是因为只有我一个…

OOP7-8次作业

OOP7-8次作业 一.前言: 1.第七次PTA: 根据之前的内容在,之前的内容上进行修改和扩增。 ①题目理解: 1.增加了互斥开关,互斥开关的难点在于他可以转换每条路的通路和断路,而且你切换的两个引脚他的电阻也是不一样的,这就增加了你获得电路电阻的难度。 2.对于在电路的获得…

修复Win10上ListView样式不正确的问题

在Windows 11下,使用WinUI2.6以上版本的ListView长这样:然而到了Win10上,尽管其他控件的样式没有改变,但ListViewItem变成了默认样式(初代Fluent) 最重大的问题是,Win10上的HorizontalAlignment未被设置成Stretch,可能造成严重的UI错位(隔壁livelyweather也有这个问题…

Asp.Net Core 使用IBrowserFile完成图片上传

Asp.Net Core 使用IBrowserFile完成图片上传 写在开头 前几天弄自己的项目时遇到的问题,发现了asp.net core 新增的IBrowserFile接口,事实上他可以满足大多数文件的上传,此处我仅以图片作为示例。 实现 添加一个帮助类FileHelper,遵循一种规范,即将静态文件资源存放至wwwro…

Transformer 能代替图神经网络吗?

当Transformer模型发布时,它彻底革新了机器翻译领域。虽然最初是为特定任务设计的,但这种革命性的架构显示出它可以轻松适应不同的任务。随后成为了Transformer一个标准,甚至用于它最初设计之外的数据(如图像和其他序列数据)。 然后人们也开始优化和寻找替代方案,主要是为…

从零开始的 DP 学习记录

为了补上我dp的短板(其实说真的dp约等于没学过,板都没有的那种),也为了以后复习dp不会再忘记dp怎么写,dp的各种思想是怎么来的,从零开始学习 dp ,并记录在此博客。 因为要补的东西也挺多的,就不多开文章了,直接在这里记录了。 当然也会记录日常生活 大概是首发于洛谷博…