diya-ing
diya-ing

Reputation: 13

Why is there no output getting displayed? Here I am trying to display two strings in alternate positions

In the below code I am trying to print two strings in a single char array in alternate positions, where second string should be stored in the reverse order. For example: str1="happy" str2= "sadly" arr="hyalpdpays", where both strings should be of the same size.

import java.util.*;

//*class Main declaration done here*
class Main{
public static void main (String args[])
{
    char[] arr=new char[100];  
    int flen=0;
    Scanner sc=new Scanner(System.in);
    String str1=sc.nextLine();
    String str2=sc.nextLine();
    if(str1.length()==str2.length())
    {
        flen = str1.length()+str2.length();
        for(int i=0, j=flen, k=0; i<(flen/2) && j>=0 && k<flen; i=i+2 , j=j-2, k++)
        {
            arr[k]=str1.charAt(i);
            k=k+1;
            arr[k]=str2.charAt(i);
        }
    }
    for(int i=0; i<flen; i++)
    {
        System.out.println(arr[i]);
    }
}
}

Upvotes: 1

Views: 70

Answers (2)

Arwa
Arwa

Reputation: 166

I did some changes to your code this works fine with me

if(str1.length()==str2.length())
{
    flen = str1.length()+str2.length();
    int lastIndex = (str2.length()-1);
    for(int i=0, j=lastIndex, k=0; i<flen; j--, k++,i++)
    {
        arr[i]=str1.charAt(k);
        i++;
        arr[i]=str2.charAt(j);
     
    }
}
for(int i=0; i<flen; i++)
{
    System.out.print(arr[i]);
}

so it would start in the index 0 of string 1 then the last index of string 2 and so on. the output will be as u mentioned "hyalpdpays".

Upvotes: 2

Arvind Kumar Avinash
Arvind Kumar Avinash

Reputation: 79055

You can do it simply as follows:

public class Main {
    public static void main(String[] args) {
        String str1 = "happy";
        String str2 = "sadly";
        StringBuilder sb = new StringBuilder();
        if (str1.length() == str2.length()) {
            for (int i = 0; i < str1.length(); i++) {
                sb.append(str1.charAt(i));// Chars of str1 from beginning
                sb.append(str2.charAt(str2.length() - i - 1));// Chars of str2 from end
            }
        } else {
            System.out.println("Strings are of different lengths");
        }

        System.out.println(sb);
    }
}

Output:

hyalpdpays

Upvotes: 1

Related Questions