在Java中不使用array.toString以字符串形式打印数组
我正在尝试使用Arrays.toString函数以字符串形式用oput打印确定的数组。我尝试了以下方法,但结果是找不到toString方法,我不知道我真正缺少了什么。我很难理解Java背后的整个思维过程,所以如果您能详细解释一下每一步的进展情况,那就太好了。提前多谢在Java中不使用array.toString以字符串形式打印数组,java,arrays,string,Java,Arrays,String,我正在尝试使用Arrays.toString函数以字符串形式用oput打印确定的数组。我尝试了以下方法,但结果是找不到toString方法,我不知道我真正缺少了什么。我很难理解Java背后的整个思维过程,所以如果您能详细解释一下每一步的进展情况,那就太好了。提前多谢 class RandomIntArray { public static String toString(int[] a) { int[] array = {1, 2, 3, 4}; System.ou
class RandomIntArray {
public static String toString(int[] a) {
int[] array = {1, 2, 3, 4};
System.out.print("[" + array[0]);
for (int i = 1; i < array.length; i++) {
System.out.print(", " + a[i]);
System.out.println("]");
}
}
public static void main (String[]args){
System.out.println(toString[i]);
}
}
类随机数组{
公共静态字符串toString(int[]a){
int[]数组={1,2,3,4};
系统输出打印(“[”+数组[0]);
for(int i=1;i
问题
不是方法调用(toString[i]
is),括号toString()
用于数组访问[]
- 您误解了数组
和array
a
- 方法
必须返回toString
,但不返回任何内容,并在方法本身内部打印所有内容字符串
解决方案
- 初始数组必须在main中定义,并传递给方法
- 方法
必须构建一个toString
并返回它String
System.out.println(toString(new int[]{1, 2, 3, 4})); // [1, 2, 3, 4]
System.out.println(toString(new int[]{})); // []
问题
不是方法调用(toString[i]
is),括号toString()
用于数组访问[]
- 您误解了数组
和array
a
- 方法
必须返回toString
,但不返回任何内容,并在方法本身内部打印所有内容字符串
解决方案
- 初始数组必须在main中定义,并传递给方法
- 方法
必须构建一个toString
并返回它String
System.out.println(toString(new int[]{1, 2, 3, 4})); // [1, 2, 3, 4]
System.out.println(toString(new int[]{})); // []
使用流API的替代解决方案:
import java.util.Arrays;
import java.util.stream.Collectors;
public class Main {
public static String toString(int[] a) {
return "[" + Arrays.stream(a).boxed().map(String::valueOf).collect(Collectors.joining(", ")) + "]";
}
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4 };
System.out.println(toString(array));
}
}
[1, 2, 3, 4]
输出:
import java.util.Arrays;
import java.util.stream.Collectors;
public class Main {
public static String toString(int[] a) {
return "[" + Arrays.stream(a).boxed().map(String::valueOf).collect(Collectors.joining(", ")) + "]";
}
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4 };
System.out.println(toString(array));
}
}
[1, 2, 3, 4]
使用流API的替代解决方案:
import java.util.Arrays;
import java.util.stream.Collectors;
public class Main {
public static String toString(int[] a) {
return "[" + Arrays.stream(a).boxed().map(String::valueOf).collect(Collectors.joining(", ")) + "]";
}
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4 };
System.out.println(toString(array));
}
}
[1, 2, 3, 4]
输出:
import java.util.Arrays;
import java.util.stream.Collectors;
public class Main {
public static String toString(int[] a) {
return "[" + Arrays.stream(a).boxed().map(String::valueOf).collect(Collectors.joining(", ")) + "]";
}
public static void main(String[] args) {
int[] array = { 1, 2, 3, 4 };
System.out.println(toString(array));
}
}
[1, 2, 3, 4]
您误解了数组
array
,a
。另外,您也不调用方法toString,而是尝试像访问数组一样访问它。您在数组之间误解了array
,a
。另外,您也不调用方法toString,而是尝试像访问数组一样访问它。添加检查1)是否为null是值得的;2) 对于包含[0]以打印空数组的[]
之前的数组长度:)@AlexRudenko我刚刚更改了它,一秒钟前:)非常感谢您的解释!很抱歉打扰您,但我真的很难理解Java的思考过程:关于您的解决方案,我有一个主要问题:您在开始使用“sb”时所做的是创建一个连接“[”的数组符号和给定数组的第一个参数,对吗?和for沿数组移动,直到在添加逗号时到达最后一个元素。对吗?在包含a[0]
打印[]之前,值得添加检查1)null;2)数组长度
对于空数组:)@AlexRudenko我刚刚更改了它,一秒钟前:)非常感谢您的解释!非常抱歉打扰您,但我真的很难理解Java的思维过程:关于您的解决方案,我有一个主要问题:您从“sb”开始做什么是否创建一个将“[”符号和给定数组的第一个参数连接在一起的数组,对吗?for将沿着数组移动,直到在添加逗号时到达最后一个元素。对吗?