我已经盯着这个节目好几个小时了,也许第二个视角可能有所帮助。
import java.util.Arrays;
import java.util.Random;
public class Examples
{
private int numbers[];
private String result;
public Examples()
{
numbers = new int[10];
Arrays.fill(numbers, 42);
}
public Examples(int[] array)
{
numbers = Arrays.copyOf(array, array.length);
}
public void setNumbers (int numbers)
{
this.numbers = new int[numbers];
}
public int [] getNumbers()
{
return numbers;
}
public String toString()
{
String result = new String();
int i;
for (i = 0; i < numbers.length; i++)
result = numbers + "\t";
return result;
}
我应该创建一个存储整数的类,然后打印出一定的输出,具体取决于我提供的静态void main方法。我目前所在的是,
{
public static void main( String [] args )
{
int i;
FunkyNumbers funNumbers, moreFun;
System.out.println("FunkyClientA:");
System.out.println("Test default constructor and toString method");
System.out.println();
funNumbers = new FunkyNumbers();
System.out.println("toString result from funNumbers:");
System.out.println( funNumbers.toString() );
System.out.println();
moreFun = new FunkyNumbers();
System.out.println("toString result from moreFun:");
System.out.println( moreFun.toString() );
} // end of method main
} //
结果应该是 测试默认构造函数和toString方法
来自funNumbers的toString结果: 42 42 42 42 42 42 42 42 42 42
来自moreFun的toString结果: 42 42 42 42 42 42 42 42 42 42
然而,我得到了, 测试默认构造函数和toString方法 来自funNumbers的toString结果: [I @ 6e1408
来自moreFun的toString结果: [我@ e53108
答案 0 :(得分:2)
问题:您始终为result
分配新值而不附加。
最好将StringBuilder
用作:
StringBuilder result = new StringBuilder();
for (int i = 0; i < numbers.length; i++)
result.append(numbers + "\t");
return result.toString();
如果不想使用StringBuilder
那么
String result = new String();
for (int i = 0; i < numbers.length; i++)
result = result + numbers + "\t";//append in result
return result;
还要确保该方法在FunkyNumbers
课程中可用。如果那里无法访问,那么移动/复制那里。
答案 1 :(得分:1)
试
result += numbers[i] + "\t";
您的ToString()
方法中的
将代码包含在FunkyNumbers
课程中,我可能会提供更好的反馈。
答案 2 :(得分:0)
java中的数组是一个对象。因此,变量funNumbers的值不是数组,而是指向数组所在内存中的地址的引用。使用toString()
时,在屏幕上打印此内存地址而不是字符串。您应该使用StringBuffer
来将数组“转换”为String。
private static String convertArrayToString(int[] a) {
StringBuffer sb = new StringBuffer();
for(int i=0; i<a.length; i++)
sb.append(a[i]);
return sb.toString();
}
您还可以使用Arrays.toString(arg)
将数组“转换”为String。作为参数,您可以为数组提供数组,然后获得数组的String表示形式。如果您的数组是多维的,请改为使用Arrays.deepToString(arg)
。