IT_Philic
IT_Philic

Reputation: 321

How can I get a vector output?

Following is The question which I am trying to solve. I have to return Vector as output but it is returning Vector address. I am unable to find out what I did wrong in the code.

Given a string, return a vector of Integer consisting of all the distinct numbers in the para. The numbers in the string are separated by space. If para is “88 99 22 33 44 55 88 22 55 100″, the output vector consists of the numbers – 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);
    }
}

Upvotes: 0

Views: 107

Answers (3)

Alvin Bunk
Alvin Bunk

Reputation: 7764

Modified my post. This will work as well.

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);
    }
}

Upvotes: 0

RMachnik
RMachnik

Reputation: 3684

Try doing it in that way.

 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();
    }

Or do it in that way.

    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();
   }

Upvotes: 1

Trein
Trein

Reputation: 3688

The problem is that you are adding Numbers as an element of the vector. I think you want to add all the numbers to it:

Vector v= new Vector(10);

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

By the way, If I were you, I would change you class name Numbers to Number as it represents only one number. Something like:

public class Number {

    private String number;

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

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

Upvotes: 4

Related Questions