Java: How to get nth letter of words in a String array

user430574 :

I am required to write up a static method named getSuccessiveLetters(words) that takes a string array and returns a single String. If the String array is {"hello", "world"}, then the program should return "ho". "h" is from the first word, "o" is the 2nd letter from the 2nd word and so on.

I managed to get the correct return value for {"hello", "world"}, but if the String array contains, for example,{"1st", "2nd", "3rd", "4th", "fifth"} it goes out of range it struggles.

public class Template01 {
    public static void main(String[] args) {
        System.out.println(getSuccessiveLetters(new String[]{"1st", "2nd", "3rd", "4th", "fifth"})); 
    }

public static String getSuccessiveLetters(String[] words) {
    char Str[] = new char[words.length];
    String successive;
    for(int i = 0; i < words.length; i++){
        successive = words[i];
        if (i < successive.length()){  
            Str[i] = successive.charAt(i);
        }
        else
        {
            break;
        }
    }
    successive = new String(Str);
    return successive;
}

I expected the return value to be 1nd, but the actual output is 1nd\x00\x00.

Kartik :

This is happening because when you initialize a char array, it fills the array with the default char value.
You can use StringBuilder or List<Character> to grow your "array" with each addition.

Change

char[] str = new char[words.length];

to

StringBuilder str = new StringBuilder();

and

str[i] = successive.charAt(i);

to

str.append(successive.charAt(i));

and then at the end successive = str.toString();.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=311240&siteId=1