【问题标题】:Java code prints right but returns wrongJava 代码打印正确但返回错误
【发布时间】: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'。

【问题讨论】:

    标签: java string return


    【解决方案1】:

    您也可以将此解决方案用于:

    替换mus=sum + " "; mus += sum + " ";

    【讨论】:

      【解决方案2】:

      您在多个地方使用

      覆盖mus
      mus=sum + " ";
      

      而不是像这样连接它

      mus = mus + sum + " "
      

      另外,ifelse 并不总是使用括号,这是一种非常糟糕的代码风格,我谴责 Java 发明者如果只想执行一行就将括号设为可选。

      【讨论】:

        猜你喜欢
        • 2013-02-22
        • 1970-01-01
        • 1970-01-01
        • 2021-01-28
        • 1970-01-01
        • 1970-01-01
        • 2015-03-24
        • 2013-03-17
        • 1970-01-01
        相关资源
        最近更新 更多