第三次博客作业
一:前言
这两次的题目几乎涉及我们所学过的所有知识,需要对继承,顺序表,正则表达式等运用的非常熟练,虽然只有两个题目,但是要考虑的情况比较多,类与类之间的关系要设计好,要搞清楚怎么用代码构建电路,怎么遍历电路,还涉及到了一点物理的电学,也让我知道了如何计算机领域的涉及面之广。
二:设计与心得
第七次作业

1:解释:这里把每个电器都设计成了一个类,并且都继承自equipment(方便后面都能放在顺序表里模拟成一个电路),seriesCon类是模拟串联电路,parallelCon类是模拟并联电路。这次作业新加了落地窗,会受到关照影响印象,还新加了互斥开关。
2:心得: 通过本次作业,我调整了对于断路的处理,不是把断路的电路设成很大,而是把断路标记,在计算数据时特殊处理,这样有利于对互斥开关进行处理。
第八次作业

1:解释:本次作业新加一个二极管,并且串联里有并联的情况,并且要对电器的引脚的电压进行输出,还要判断是否短路,电器是否会被烧坏。
2:心得:一开始做大作业要按照大作业的设计要求去做,不然到后面迭代要重新设计代码。
三:踩坑与心得
1:
踩坑:第八次大作业中,在迭代之前没有考虑到串联里有并联的情况,导致我在原来的代码上加串联里有并联的情况时非常麻烦,要写很多个循环而且复杂并联的情况无法解决。
例如:
else if(totalcir.seriescon.get(i).name.charAt(0)'M')
else if(parallelCons.get(j).ps.get(k).seriescon.get(l).name.charAt(0)'M')
解决方法:在一开始设计时,尽量考虑多的情况,尽量不要迭代到后面时临时加。
2:
踩坑:第八次大作业中,没有去设计方法,导致一些地方代码有很多重复。
部分代码如下:
int vp= (int) v;
for (int i = 0; i < totalcir.seriescon.size(); i++) {
if (totalcir.seriescon.get(i).name.charAt(0)'K'){
for(String key : totalcir.seriescon.get(i).pine.get(0).keySet()){
totalcir.seriescon.get(i).pine.get(0).put(key,vp);
}
if (totalcir.seriescon.get(i).state%20){
vp=0;
for(String key : totalcir.seriescon.get(i).pine.get(1).keySet()){
totalcir.seriescon.get(i).pine.get(1).put(key,vp);
}
}
else {
for(String key : totalcir.seriescon.get(i).pine.get(1).keySet()){
totalcir.seriescon.get(i).pine.get(1).put(key,vp);
}
}
}
else if (totalcir.seriescon.get(i).name.charAt(0)'P'){
for(String key : totalcir.seriescon.get(i).pine.get(0).keySet()){
totalcir.seriescon.get(i).pine.get(0).put(key,vp);
}
if (totalcir.seriescon.get(i).pine.get(0).containsKey("2")&&totalcir.seriescon.get(i).pine.get(1).containsKey("1")){
vp=0;
for(String key : totalcir.seriescon.get(i).pine.get(1).keySet()){
totalcir.seriescon.get(i).pine.get(1).put(key,vp);
}
}
else {
for(String key : totalcir.seriescon.get(i).pine.get(1).keySet()){
totalcir.seriescon.get(i).pine.get(1).put(key,vp);
}
}
}
else if (totalcir.seriescon.get(i).name.charAt(0)'H'){
for(String key : totalcir.seriescon.get(i).pine.get(0).keySet()){
totalcir.seriescon.get(i).pine.get(0).put(key,vp);
}
if(totalcir.seriescon.get(i).state%20&&(totalcir.seriescon.get(i).pine.get(0).containsKey("2")||totalcir.seriescon.get(i).pine.get(1).containsKey("2"))){
if (totalcir.isaccessable) {
vp = (int) (vp - totalcir.seriescon.get(i).volt);
for (String key : totalcir.seriescon.get(i).pine.get(1).keySet()) {
totalcir.seriescon.get(i).pine.get(1).put(key, vp);
}
}
else {
for (String key : totalcir.seriescon.get(i).pine.get(1).keySet()) {
totalcir.seriescon.get(i).pine.get(1).put(key, vp);
}
}
}
else if(totalcir.seriescon.get(i).state%2!=0&&(totalcir.seriescon.get(i).pine.get(0).containsKey("3")||totalcir.seriescon.get(i).pine.get(1).containsKey("3"))){
if (totalcir.isaccessable) {
vp = (int) (vp - totalcir.seriescon.get(i).volt);
for (String key : totalcir.seriescon.get(i).pine.get(1).keySet()) {
totalcir.seriescon.get(i).pine.get(1).put(key, vp);
}
}
else {
for (String key : totalcir.seriescon.get(i).pine.get(1).keySet()) {
totalcir.seriescon.get(i).pine.get(1).put(key, vp);
}
}
}
else{
vp=0;
for(String key : totalcir.seriescon.get(i).pine.get(1).keySet()){
totalcir.seriescon.get(i).pine.get(1).put(key,vp);
}
}
}
else if(totalcir.seriescon.get(i).name.charAt(0)'M'){
for (int j = 0; j < parallelCons.size(); j++) {
if (totalcir.seriescon.get(i).name.equals(parallelCons.get(j).name)){
for (int k = 0; k < parallelCons.get(j).ps.size(); k++) {
int vt =vp;
for (int l = 0; l < parallelCons.get(j).ps.get(k).seriescon.size(); l++) {
if (parallelCons.get(j).ps.get(k).seriescon.get(l).name.charAt(0)'K'){
for (String key:parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).keySet()){
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).put(key,vt);
}
if (parallelCons.get(j).ps.get(k).seriescon.get(l).state%20){
vt=0;
for (String key:parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()){
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key,vt);
}
}
else{
for (String key:parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()){
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key,vt);
}
}
}
else if(parallelCons.get(j).ps.get(k).seriescon.get(l).name.charAt(0)'P'){
for (String key:parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).keySet()){
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).put(key,vt);
}
if (parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).containsKey("2")&¶llelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).containsKey("1")){
vt=0;
for (String key:parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()){
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key,vt);
}
}
else {
for (String key:parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()){
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key,vt);
}
}
}
else if(parallelCons.get(j).ps.get(k).seriescon.get(l).name.charAt(0)'H'){
for (String key:parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).keySet()){
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).put(key,vt);
}
if (parallelCons.get(j).ps.get(k).seriescon.get(l).state%20&&(parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).containsKey("2")||parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).containsKey("2"))){
if (parallelCons.get(j).ps.get(k).isaccessable) {
vt = (int) (vt - parallelCons.get(j).ps.get(k).seriescon.get(l).volt);
for (String key : parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()) {
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key, vt);
}
}
else{
for (String key : parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()) {
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key, vt);
}
}
}
else if(parallelCons.get(j).ps.get(k).seriescon.get(l).state%2!=0&&(parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).containsKey("3")||parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).containsKey("3"))){
if (parallelCons.get(j).ps.get(k).isaccessable) {
vt = (int) (vt - parallelCons.get(j).ps.get(k).seriescon.get(l).volt);
for (String key : parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()) {
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key, vt);
}
}
else{
for (String key : parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()) {
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key, vt);
}
}
}
else{
vt=0;
for (String key:parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()){
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key,vt);
}
}
}
else if(parallelCons.get(j).ps.get(k).seriescon.get(l).name.charAt(0)'M'){
for (int m = 0; m < parallelCons.size(); m++) {
if (parallelCons.get(j).ps.get(k).seriescon.get(l).name.equals(parallelCons.get(m).name)){
for (int n = 0; n < parallelCons.get(m).ps.size(); n++) {
int vtt=vt;
for (int o = 0; o < parallelCons.get(m).ps.get(n).seriescon.size(); o++) {
if (parallelCons.get(m).ps.get(n).seriescon.get(o).name.charAt(0)'K'){
for (String key:parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).keySet()){
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).put(key,vtt);
}
if (parallelCons.get(m).ps.get(n).seriescon.get(o).state%20){
vtt=0;
for (String key:parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()){
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key,vtt);
}
}
else {
for (String key:parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()){
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key,vtt);
}
}
}
else if (parallelCons.get(m).ps.get(n).seriescon.get(o).name.charAt(0)'P'){
for (String key:parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).keySet()){
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).put(key,vtt);
}
if (parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).containsKey("2")&¶llelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).containsKey("1")){
vtt=0;
for (String key:parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()){
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key,vtt);
}
}
else{
for (String key:parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()){
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key,vtt);
}
}
}
else if(parallelCons.get(m).ps.get(n).seriescon.get(o).name.charAt(0)'H'){
for (String key:parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).keySet()){
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).put(key,vtt);
}
if (parallelCons.get(m).ps.get(n).seriescon.get(o).state%2==0&&(parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).containsKey("2")||parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).containsKey("2"))){
if (parallelCons.get(m).ps.get(n).isaccessable) {
vtt = (int) (vtt - parallelCons.get(m).ps.get(n).seriescon.get(o).volt);
for (String key : parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()) {
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key, vtt);
}
}
else {
for (String key : parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()) {
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key, vtt);
}
}
}
else if(parallelCons.get(m).ps.get(n).seriescon.get(o).state%2!=0&&(parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).containsKey("3")||parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).containsKey("3"))){
if (parallelCons.get(m).ps.get(n).isaccessable) {
vtt = (int) (vtt - parallelCons.get(m).ps.get(n).seriescon.get(o).volt);
for (String key : parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()) {
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key, vtt);
}
}
else {
for (String key : parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()) {
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key, vtt);
}
}
}
else{
vtt=0;
for (String key:parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()){
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key,vtt);
}
}
}
else {
for (String key:parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).keySet()){
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(0).put(key,vtt);
}
if (parallelCons.get(m).ps.get(n).isaccessable) {
vtt = (int) (vtt - parallelCons.get(m).ps.get(n).seriescon.get(o).volt);
for (String key : parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()) {
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key, vtt);
}
}
else {
for (String key : parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).keySet()) {
parallelCons.get(m).ps.get(n).seriescon.get(o).pine.get(1).put(key, vtt);
}
}
}
}
}
}
}
}
else {
for (String key:parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).keySet()){
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(0).put(key,vt);
}
if (parallelCons.get(j).ps.get(k).isaccessable) {
vt = (int) (vt - parallelCons.get(j).ps.get(k).seriescon.get(l).volt);
for (String key : parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()) {
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key, vt);
}
}
else {
for (String key : parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).keySet()) {
parallelCons.get(j).ps.get(k).seriescon.get(l).pine.get(1).put(key, vt);
}
}
}
}
}
}
}
}
else{
for(String key : totalcir.seriescon.get(i).pine.get(0).keySet()){
totalcir.seriescon.get(i).pine.get(0).put(key,vp);
}
if (totalcir.isaccessable) {
vp = (int) (vp - totalcir.seriescon.get(i).volt);
for (String key : totalcir.seriescon.get(i).pine.get(1).keySet()) {
totalcir.seriescon.get(i).pine.get(1).put(key, vp);
}
}
else {
for (String key : totalcir.seriescon.get(i).pine.get(1).keySet()) {
totalcir.seriescon.get(i).pine.get(1).put(key, vp);
}
}
}
}
解决方法:尽量写一些方法,减少代码重复。
3:
踩坑:一开始设计代码时,没有设计引脚这个东西,导致第八次大作业中要加好多东西,加的过程中还出了很多问题。
解决方法:在一开始设计代码时,要按照题目要求去设计。
四:改进建议
对于第八次大作业,在对引脚电压的计算赋值这块,可以设计一个方法,可以减少代码的重复。在计算电器的电压时,可以利用引脚电压的差值。
五:总结
在这两次大作业中,我明白了提前将整体框架搭建好很重要,代码设计要按照题目要求去设计,要多写方法。

浙公网安备 33010602011771号