我想在 java 中使用 toString() 方法打印一个数组,但不带方括号和逗号(因此,不使用 Arrays.toString())

I want to print an array with a toString() method in java, but without brackets and commas (so, not with Arrays.toString())

我有一个 toString() 方法,它通过一个 for 循环并应该打印数组中的每个元素,但是当我调用 toString() 方法时我仍然获取位置。我该如何解决这个问题?

public void toString(String[] num) {        
    for (int index = 0; index < num.length; index++) {
        System.out.println(num[index]);
    }
}

public static void main(String[] args) {
    //test negative number, output should be -10000000
    int largeNum1[] = {-2, 0, 0, 0, 0, 0, 0, 0};
    int largeNum2[] = {1, 0, 0, 0, 0, 0, 0, 0};
    int numSize1 = (largeNum1.length + largeNum2.length) + 1;
    int[] sum1 = new int[numSize1];
    int[] answer1 = sumNumbers(largeNum1, largeNum2, sum1);
    System.out.println(largeNum1.toString() + " + " + largeNum2.toString() + " = " + answer1.toString());
}

不是-20000000 + 10000000 = -10000000,我的输出是[I@182decdb + [I@26f0a63f = [I@4361bd48

largeNum1.toString() 更改为 toString(largeNum1) 以调用您的方法而不是内置的 Object.toString()

您还需要修改方法以采用 int[] 而不是 String[]

array.toString() 更改为 toString(array)。另外你的方法需要是 static 因为 main 方法是静态的。如果你想在 print 语句中使用它,那么它应该 return 一些东西。这就是为什么我将您方法的 return 类型更改为 String:

public static String toString(int[] num) { 
    String s = "";       
    for (int index = 0; index < num.length; index++) {
        s += num[index];
    }
    return s;
}

public static void main(String[] args) {
    //test negative number, output should be -10000000
    int largeNum1[] = {-2, 0, 0, 0, 0, 0, 0, 0};
    int largeNum2[] = {1, 0, 0, 0, 0, 0, 0, 0};
    int numSize1 = (largeNum1.length + largeNum2.length) + 1;
    int[] sum1 = new int[numSize1];
    int[] answer1 = sumNumbers(largeNum1, largeNum2, sum1);
    System.out.println((toString(largeNum1)) + " + " + (toString(largeNum2)) + " = " + (toString(answer1)));
}

您想使用 .toString() 方法。在 java 中,每个 class 都是对象 class 的直接或间接子对象。对象 class 包含 toString() 方法。我们可以使用 toString() 方法来获取对象的字符串表示形式。

如果我们没有在您的 class 中定义 toString() 方法,那么将调用 Object class toString() 方法,否则将调用我们的 implemented/Overridden toString() 方法。

现在,如果您的目标是覆盖 toString,那么您需要修改代码。

public class ToStringDemo {
    
    int[] largeNum1 ;
    int[] largeNum2;
    int numSize1;
    int[] sum1;
    int[] answer1;
    
    @Override
    public String toString() {
        return ToStringDemo.toString(largeNum1) + " + " + ToStringDemo.toString(largeNum2) + " = " + ToStringDemo.toString(answer1);
    }
    public static String toString(int[] num) {
        StringBuilder stringBuilder = new StringBuilder();
            
        for (int index = 0; index < num.length; index++) {
            stringBuilder.append(num[index]);
        }
        
        return stringBuilder.toString();
    }
    
    

    public static void main(String[] args) {
        //test negative number, output should be -10000000
        ToStringDemo toStringDemo = new ToStringDemo();
        toStringDemo.largeNum1 = new int[]{-2, 0, 0, 0, 0, 0, 0, 0};
        toStringDemo.largeNum2 = new int[]{1, 0, 0, 0, 0, 0, 0, 0};
        toStringDemo.numSize1 = (toStringDemo.largeNum1.length + toStringDemo.largeNum2.length) + 1;
        toStringDemo.sum1 = new int[toStringDemo.numSize1];
        toStringDemo.answer1 = toStringDemo.sumNumbers(toStringDemo.largeNum1, toStringDemo.largeNum2, toStringDemo.sum1);
        
        System.out.println(toStringDemo);
    }

    private int[] sumNumbers(int[] largeNum12, int[] largeNum22, int[] sum1) {
        //Your sum logic here, return your result array
        return null;
    }

}