我的程序没有计算出正确的输出,我不知道为什么

时间:2012-11-07 21:35:28

标签: java arrays eclipse class jgrasp

我已经盯着这个节目好几个小时了,也许第二个视角可能有所帮助。

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

3 个答案:

答案 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)