包含交替单词/数字的字符串 - 根据计数打印单词

时间:2016-06-12 02:03:48

标签: java alternating

我有一个Java字符串,其中包含数字和单词互换,如下所示:

String str = "7 first 3 second 2 third 4 fourth 2 fifth"

我需要找到一种简洁的方法(如果可能的话)来打印所显示的单词(第一,第二,第三,第四,第五等)。

预期输出为:

firstfirstfirstfirstfirstfirstfirst
secondsecondsecond
thirdthird
fourthfourthfourthfourth
fifthfifth

我试图将字符串拆分成一个数组,然后使用for循环迭代其他所有数字(在我的外部循环中)和内部循环中的每个其他单词,但我没有成功。

这是我尝试过的,但我怀疑这不是正确的方法,或者至少不是最简洁的方法:

String[] array = {"7", "first", "3", "second", "2", "third", "4", "fourth", "2", "fifth"};

for (int i=0; i < array.length; i+=2)
{
   // i contains the number of times (1st, 3rd, 5th, etc. element)

   for (int j=1; j < array.length; j+=2)

   // j contains the words (first, second, third, fourth, etc. element)    
       System.out.print(array[j]);

}

我将是第一个承认我非常关注Java的人,所以如果这种方法完全是asinine请随意笑,但请提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

考虑到您的解决方案,主要问题在于您不需要考虑内部循环内的初始字符串数组进行迭代。相反,您应该读取数字并迭代将其视为限制。如下,例如:

    String initialString = "7 first 3 second 2 third 4 fourth 2 fifth"; 
    String splittedStrings[] = initialString.split(" ");
    for(int i = 0; i < splittedStrings.length; i = i + 2){
        int times = Integer.parseInt(splittedStrings[i]);
        String number = splittedStrings[i+1]; 
        for(int j = 0; j < times; j++){
            System.out.print(number);
        }
        System.out.println();
    }

希望它有所帮助!

答案 1 :(得分:0)

将数字解析为int,然后使用此值根据需要多次打印该字词:

String[] array = {"7", "first", "3", "second", "2", "third", "4", "fourth", "2", "fifth"};
for (int i=0; i < array.length; i+=2)
{
   int count = Integer.parseInt(array[i]);
   for (int j=0; j < count; j++) {
       System.out.print(array[i+1]);
   }
   System.out.println();
}

count将获得值7,3,2等