Reputation: 321
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
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
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
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