Guddi
Guddi

Reputation: 21

Merging of one int and string array into third array

There are 2 arrays, one of int and one of Strings (words) ; sort both of them and then print it in a way that at odd places it should be words and at even numbers.

This is my code:

import java.util.*;
public class JavaApplication4 {


    public static void main(String[] args) {
        Scanner in=new Scanner(System.in);
        int num[]=new int[10];
        String str[]=new String[10];
        String str1[]=new String[20];
        for(int i=0; i<5; i++)//for taking strings
        {
            str[i]=in.next();
        }
        for(int i=0; i<5; i++)//for taking nums
        {
            num[i]=in.nextInt();
        }
        for(int i=0; i<5; i++)
        {
            System.out.println("The String are "+str[i]);
        }
        for(int i=0; i<5; i++)
        {
            System.out.println("The num are "+num[i]);
        }
         for (int i = 0; i < 5; i++) //for sorting nums
        {
            for (int j = i + 1; j < 5; j++) 
            {
                if (num[i]>(num[j])) 
                {
                    int temp = num[i];
                    num[i] = num[j];
                    num[j] = temp;
                }
            }
        }
        for (int i = 0; i < 5; i++)// for sorting strs
        {
            for (int j = i + 1; j < 5; j++) 
            {
                if (str[i].compareTo(str[j])>0) 
                {
                    String temp = str[i];
                    str[i] = str[j];
                    str[j] = temp;
                }
            }
        }
        System.out.println("The sorted strings are:");
        for(int i=0; i<10; i++)//for merging both
        {
            if((i+1)%2==0)
            {
                int k=0;
                str1[i]=String.valueOf(num[k]);
                 System.out.println("The String are "+str1[i]);
                k++;
            }
            else
            {
                int j=0;
                str1[i]=str[j];
                 System.out.println("The String are "+str1[i]);
                j++;
            }


        }
      /*   for(int i=0; i<10; i++)
        {
            System.out.println("The String are "+str1[i]);
        }
        */
    }
}

What I am getting the output:

The sorted strings are:
The String are ab
The String are 1
The String are ab
The String are 1
The String are ab
The String are 1
The String are ab
The String are 1
The String are ab
The String are 1

It's only taking the first element of both arrays.

Upvotes: 1

Views: 48

Answers (3)

ZhaoGang
ZhaoGang

Reputation: 4915

Other people has pointed the root cause. Beside this, why you initialize the arrays num[] str[] str1[] with capacity 10(and 20), which is a double of the needed capacity 5(and 10) ?

Another issue is that the name of str1[] is really bad.

Upvotes: 0

Azodious
Azodious

Reputation: 13872

You can user Arrays class to sort the arrays.

String[] strArray = new String[] {"a","z","q","p"};
Arrays.sort(strArray);

Similarly, try to 2nd array.

Now, declare another array by adding size of two arrays:

String[] newArray = new String[sum];
int j=0;
for(int i=0;i<newArray.length;i+=2)
{
    newArray[i]=strArray[j];
    newArray[i+1] = otherArray[j++];
}

Upvotes: 0

Eran
Eran

Reputation: 393831

You should initialize k and j to 0 before the loop, not inside the loop.

    int k=0;
    int j=0;
    for(int i=0; i<10; i++)//for merging both
    {
        if((i+1)%2==0)
        {
            str1[i]=String.valueOf(num[k]);
             System.out.println("The String are "+str1[i]);
            k++;
        }
        else
        {
            str1[i]=str[j];
             System.out.println("The String are "+str1[i]);
            j++;
        }
    }

Upvotes: 2

Related Questions