我想在 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;
}
}
我有一个 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;
}
}