我的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).....
答案 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;
}
我只想补充一点,大学教授因为给学生的要求与现实生活无关(比如不使用图书馆)而臭名昭着。