【发布时间】:2014-07-31 00:59:16
【问题描述】:
以下代码:
public class NewClass1 {
public static String mus = "";
public static String musCal(String[] signal, int[] time) {
int i = 0;
while (i < signal.length) {
switch (signal[i]) {
case "x": {
// System.out.print("x = ");
mus = mus + "x";
int sum = time[i];
if (signal[i + 1] == "C") {
i++;
while (i < signal.length && signal[i] == "C") {
sum += time[i];
i++;
}
} else
i++;
// System.out.print(sum + " ");
mus = sum + " ";
break;
}
case "y": {
// System.out.print("y = ");
mus = mus + "y ";
int sum = time[i];
if (signal[i + 1] == "C") {
i++;
while (i < signal.length && signal[i] == "C") {
sum += time[i];
i++;
}
} else
i++;
// System.out.print(sum + " ");
mus = sum + " ";
break;
}
case "z": {
// System.out.print("z = ");
mus = mus + "z ";
int sum = time[i];
if (signal[i + 1] == "C") {
i++;
while (i < signal.length && signal[i] == "C") {
sum += time[i];
i++;
}
} else
i++;
// System.out.print(sum + " ");
mus = sum + " ";
break;
}
}
}
return mus;
}
public static void main(String[] args) {
String signal[] = { "x", "y", "y", "C", "C", "z", "C", "C", "x", "C" };
int time[] = { 2, 5, 1, 4, 7, 8, 2, 6, 4, 3 };
musCal(signal, time);
System.out.print(mus);
}
}
代码的预期输出是:
x=2 y=5 y=12 z=16 x=7
如果 cmets 符号 // 被删除以激活 System.out.print 语句,则代码给出预期的输出。但是当我试图以“String mus”的形式收集这个输出时,如代码所示,我只得到了输出字符串的最后一个元素,即 7。作为 Java 和编程的新手,我需要你的帮助。请帮助我更正 return 语句,以便我可以通过连接或任何其他合适的方法获得正确的输出为 String 'mus'。
【问题讨论】: