-1

我已经盯着这个程序看了好几个小时,也许第二个视角会有所帮助。

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

} //

结果应该是 Test 默认构造函数和 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 结果:[I@e53108

4

3 回答 3

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课堂上可用。如果那里无法访问,则移动/复制那里。

于 2012-11-07T21:42:34.720 回答
1

尝试

        result += numbers[i] + "\t";

在你的ToString()方法中

将代码包含在您的FunkyNumbers课程中,我也许可以提供更好的反馈。

于 2012-11-07T21:39:13.957 回答
0

java中的数组是一个对象。因此,变量 funNumbers 的值不是数组,而是指向内存中数组所在地址的引用。当您使用时toString(),您在屏幕上打印此内存地址,而不是将数组打印为字符串。您应该使用 aStringBuffer来将数组“转换”为字符串。

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)将数组“转换”为字符串。作为参数,你给你的数组,你得到你数组的字符串表示。如果您的数组是多维的,请Arrays.deepToString(arg)改用。

于 2012-11-07T21:48:49.573 回答