gpt4 book ai didi

java - 输出在 Java 循环的开始和结束时出现偏差

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:19:03 25 4
gpt4 key购买 nike

我正在编写将信号从一种形式转换为另一种形式的代码。我的代码运行良好,但最终失败了。

INPUT: String [] test = {"B","100","B","B","2","3","100","B","200","B","3","17","B","10" };

要求输出:B/101 B/1 B/106 B/201 B/21 B/11

得到输出:B/1 B/101 B/1 B/106 B/201 B/21

所需输出与得到的输出比较
got 输出中不需要第一项 B/1。 所需输出的末尾缺少 B/11。

算法:“B”被“B/”替换,然后添加字符串中出现的数字,如“2”、“3”、“100”,得到 105 和“1” 将添加“B”,因此为 106,最终结果变为“B/106”。

我是 Java 和编程的新手。我需要帮助才能获得所需的输出。

这是我的代码:

public class SignalConversion { 

public static void main(String args[]) {

String [] test ={"B","100","B","B","2","3","100","B","200","B","3","17","B","10" };

int i=0; int x=test.length;

String netSignal="";
int total=0;

while(!(x==0)){

StringBuilder sb_matra= new StringBuilder();
StringBuilder sb_sur= new StringBuilder();

if(!test[i].equals("B")) {

total=total+(Integer.valueOf(test[i]));
}
else {
total=total+1;
sb_sur.append(test[i]+"/"+Integer.toString(total)+" " );
total=0;
}

netSignal=sb_sur.toString()+sb_matra.toString();

System.out.printf(netSignal);
i++;
x--;
}
}
}

最佳答案

当遇到一个“B”时,应该开始对它后面的数字求和,但只有在遇到下一个“B”时才输出结果。这就是为什么你最后有问题。遇到它时打印第一个“B”,然后再计算它应该附带的数字。

同样,在循环结束时,您应该添加一个额外的 B 和最后的总和。

这是一种可行的方法(我认为这个循环比你的更简单):

StringBuilder sb_sur= new StringBuilder(); 
boolean first = true;
for (int i = 0; i < test.length; i++) {
if(!test[i].equals("B")) {
total=total+(Integer.valueOf(test[i]));
} else {
if (!first) {
total=total+1;
sb_sur.append("B/"+Integer.toString(total)+" " );
total=0;
}
first = false;
}
}
total=total+1;
// account for the last B
sb_sur.append("B/"+Integer.toString(total)+" " );

关于java - 输出在 Java 循环的开始和结束时出现偏差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31177314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com