2014-03-02 55 views
0

以下是我正在尝试解决的问题。我必须返回Vector作为输出,但它返回Vector地址。我无法找出我在代码中做了什么错误。如何获得矢量输出?

给定一个字符串,返回一个整数的向量,其中包含段中所有不同的数字。字符串中的数字用空格分隔。如果段为“88 99 22 33 44 55 88 22 55 100″,则输出矢量由数字组成 - 88,99,22,33,44,55,100

public class Numbers { 

    public String num; 

    public Numbers(String splitArray){ 
     this.num=splitArray; 
    } 
} 


import java.util.Vector; 

public class DistinctNumbersInStrings { 

    public static Numbers[] distinctNumbersInStrings(String str) { 
     String[] splitArray = str.split(" "); 
     Numbers[] number = new Numbers[splitArray.length]; 

     for (int i = 0; i < splitArray.length; i++) { 
      number[i] = new Numbers(splitArray[i]); 
     } 
     return number; 
    } 

    public static void main(String[] args) { 
     Numbers[] number = distinctNumbersInStrings("99 88 77 66 55 44 33 22 11"); 
     Vector v= new Vector(10); 
     v.addElement(number); 
     System.out.println(v); 
    } 
} 
+4

为什么'矢量'在2014年?除非你使用一个仍然需要使用'Vector'的API,否则不要使用它! – fge

+0

Sry但我只能使用它。 –

+0

您正在打印一个'Vector'。这就是你从'toString()'方法得到的。如果这不是你想要的,你需要......做一些不同的事情。 –

回答

4

问题是,您将Numbers作为向量的元素添加。我想你想所有的号码添加到它:

Vector v= new Vector(10); 

for (Numbers n : numbers) { 
    v.addElement(n); 
} 
System.out.println(v); 

顺便说一句,如果我是你,我会因为它代表了一个数字改变你的类名NumbersNumber。例如:

public class Number { 

    private String number; 

    public Number(String number){ 
     this.number = number; 
    } 

    public String toString() { 
     return this.number; 
    } 
} 
+0

非常感谢你的帮助... –

0

修改我的帖子。 这也会起作用。

public class DistinctNumbersInStrings { 
    public static Numbers[] distinctNumbersInStrings(String str){ 
     String[] splitArray = str.split(" "); 
     Numbers[] number = new Numbers[splitArray.length]; 
     for (int i = 0; i < splitArray.length; i++){ 
      number[i] = new Numbers(splitArray[i]); 
     } 
     return number; 
    } 

    public static void main(String[] args){ 
     Numbers[] number = distinctNumbersInStrings("99 88 77 66 55 44 33 22 11"); 
     Vector<String> v = new Vector<String>(); 
     for(Numbers n : number){ 
      v.addElement(n.num); 
     } 
     System.out.print(v); 
    } 
} 
+0

是啊,尝试过,输出相同 –

+0

@BrianRoach'vtoString()'返回一个字符串! –

+0

@AlvinBunk当你传递一个对象到'println()'这**完全是**会发生什么**;该对象的'toString()'方法被调用。 –

1

试着用这种方法做。

public static void main(String[] args){ 
     Numbers[] number = distinctNumbersInStrings("99 88 77 66 55 44 33 22 11"); 
     Vector v= new Vector(10); 
     v.addElement(number); 
     displayAllNumbers(number); 
    } 

    private static void displayAllNumbers(Numbers[] number) { 
     for(int i=0;i<number.length;i++) 
     { 
      if(i!=number.length-1) 
      System.out.print(number[i].num + ","); 
      else 
       System.out.print(number[i].num); 
     } 
     System.out.println(); 
    } 

或者这样做。

public static void main(String[] args){ 
     Numbers[] number = distinctNumbersInStrings("99 88 77 66 55 44 33 22 11"); 
     Vector<Numbers> v= new Vector<Numbers>(10); 
     for(Numbers n : number) 
     { 
      v.add(n); 
     } 
     for(Numbers n : v){ 
      System.out.print(n.num); 
     } 
     System.out.println(); 
    } 
+0

感谢这真的是一个很大的帮助... –

+0

Thansk友好的话。如果我帮助你,请接受这个答案,提前致谢。 – RMachnik

+0

你确定这是你想要的吗?对于每个唯一号码,我只会在'Vector'中只有一个条目,而不是一个条目。 – Trein