Arrays.toString,没有库

时间:2017-12-13 17:39:31

标签: java tostring

我的Java任务正在疯狂。我对方法很陌生,我似乎无法理解这个方法。你能给我一个指导手吗?

我正在尝试将int数组转换为字符串并使用。
toString方法打印它。我们不允许使用某些库。我从代码中获得的只是'stack overflow'...

代码:

public static void main(String[] args) {
    int[] arr = {3,4,5,6,7};

    String str = toString(arr);
    System.out.println("arr = " + str);
}

private static String toString(int[] arr) {
    String str = Arrays.toString(arr);
    return str;
}

到目前为止,这是我的程序的完整代码:

public class Arrays {

public static void main(String[] args) {
    int[] arr = {3,4,5,6,7};

    int result = sum(arr);
    System.out.println(result);

    String str = toString(arr);
    System.out.println("arr = " + str);
}

private static int sum(int[] arr) {
    int result = 0;
    for (int i = 0; i < arr.length; i++) {
        result += arr[i];
    }
    return result;
}

private static String toString(int[] arr) {
    String str = Arrays.toString(arr);
    return str;
}


}

我的控制台中的结果:

25
Exception in thread "main" java.lang.StackOverflowError
  at tb222kc_lab3.Arrays.toString(Arrays.java:24)
  at tb222kc_lab3.Arrays.toString(Arrays.java:24)
  at tb222kc_lab3.Arrays.toString(Arrays.java:24).....

3 个答案:

答案 0 :(得分:8)

Arrays.toString(arr)方法中的toString更改为java.util.Arrays.toString(arr)

您的代码已进入递归调用,因为您已将类命名为Arrays

答案 1 :(得分:2)

然后我会像这样创建自己的toString

public String toString(int[] arr) {
    StringBuilder result = new StringBuilder();
    result.append("[");
    for (int a : arr) {
        result.append(a);
    }
    result.append("]");
    return result.toString();
}

答案 2 :(得分:1)

你的toString()方法应如下所示:

private static String toString(int[] arr) {
    String str = "[";
    for (int index = 0; index < arr.length; index++) {
        // Concat the string with the int value.
        str += arr[index];

        // Add delimiter only if we're not at the last index.
        if (index < arr.length - 1) {
          str += ", ";
        }
    }
    str += "]";
    return str;
}

我只想补充一点,大学教授因为给学生的要求与现实生活无关(比如不使用图书馆)而臭名昭着。