【问题标题】:Strange output for return array method返回数组方法的奇怪输出
【发布时间】:2013-11-15 13:26:47
【问题描述】:

以下是工作代码的“主要”主体:

public class ArrayFunHouse
{
    //instance variables and constructors could be used, but are not really needed

    //getSum() will return the sum of the numbers from start to stop, not including stop
    public static int getSum(int[] numArray, int start, int stop)
    {
        int sum = 0;

        for(int count = start; count <= stop; count++) {
            sum += numArray[count];
        }
        return sum;
    }

    //getCount() will return number of times val is present
    public static int getCount(int[] numArray, int val)
    {
        int present = 0;

        for(int count = 0; count < numArray.length; count++) {
            if(numArray[count] == val) {
                present++;
            }
        }
        return present;
    }

    public static int[] removeVal(int[] numArray, int val)
    {
        int[] removal = new int[numArray.length - getCount(numArray, val)];
        int arbitrary = 0;

        for(int count = 0; count < removal.length; count++) {
            if(numArray[count] == val) {
                arbitrary++;
            } else {
                removal[count - arbitrary] = numArray[count];
            }
        }

        return removal;
    }
}

还有跑步者类:

import java.util.Arrays;

public class ArrayFunHouseRunner
{
public static void main( String args[] )
{
    int[] one = {4,10,0,1,7,6,5,3,2,9};

    System.out.println(Arrays.toString(one));
    System.out.println("sum of spots 3-6  =  " + ArrayFunHouse.getSum(one,3,6));
    System.out.println("sum of spots 2-9  =  " + ArrayFunHouse.getSum(one,2,9));
    System.out.println("# of 4s  =  " + ArrayFunHouse.getCount(one,4));
    System.out.println("# of 9s  =  " + ArrayFunHouse.getCount(one,9));
    System.out.println("# of 7s  =  " + ArrayFunHouse.getCount(one,7));
    System.out.println("new array with all 7s removed = "+     ArrayFunHouse.removeVal(one, 7));


}
}

返回我在尝试打印没有 toString 的类时所期望的内容,即:

[4, 10, 0, 1, 7, 6, 5, 3, 2, 9]
sum of spots 3-6  =  19
sum of spots 2-9  =  33
number of 4s  =  1
number of 9s  =  1
number of 7s  =  1
new array with all 7s removed = [I@56f7ce53

我知道我在跑步者中正确调用了它,没有太多可搞砸的地方,无法查明问题,有什么建议吗?

最终编辑:这很尴尬。问题实际上出在跑步者身上,而不是调用 Arrays.toString。

【问题讨论】:

  • 您如何打印该值?
  • 向我们展示您调用该方法并使用其返回值的代码。你可能认为你没有把那部分搞砸,但所有证据都表明你确实做到了。
  • 使用Arrays.toString(array)
  • "返回我在尝试打印没有 toString 的类时所期望的内容,即:[I@56f7ce53" - 完全正确。数组不会覆盖toString

标签: java arrays output


【解决方案1】:

打印

System.out.println(Arrays.toString(array));

如果你的数组里面有数组。

System.out.println(Arrays.deepToString(array));

【讨论】:

    【解决方案2】:

    正如您所说,您正在打印返回数组的toString()。但是,在 Java 中,数组不会覆盖 toString(),因此您会得到输出。 不只是打印返回的值,而是使用Arrays.toString(int[]) 来打印它的值 - 这应该会为您提供所需的输出。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2013-12-21
      • 1970-01-01
      • 2012-12-21
      • 2014-11-26
      相关资源
      最近更新 更多