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

Java 包含交替单词/数字的字符串-根据计数打印单词,java,alternating,Java,Alternating,我有一个Java字符串,其中包含如下互换的数字和单词: String str = "7 first 3 second 2 third 4 fourth 2 fifth" 我需要找到一个简洁的方式(如果可能的话)打印单词(第一,第二,第三,第四,第五,等等)的次数显示 预期产出为: firstfirstfirstfirstfirstfirstfirst secondsecondsecond thirdthird fourthfourthfourthfourth fifthfifth 我尝试将字

我有一个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]);

}
String[]数组={“7”、“第一”、“3”、“第二”、“2”、“第三”、“4”、“第四”、“2”、“第五”};
对于(int i=0;i

我会第一个承认我是Java的一个注意事项,因此如果这种方法完全愚蠢,请尽管笑,但提前感谢您的帮助。

将数字解析为
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();
}
String[]数组={“7”、“第一”、“3”、“第二”、“2”、“第三”、“4”、“第四”、“2”、“第五”};
对于(int i=0;i

count
将获得值7、3、2等。

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

    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();
    }
String initialString=“7第一个3秒2第三个4第四个2第五个”;
String splittedStrings[]=initialString.split(“”);
for(int i=0;i

希望有帮助

您肯定不想要嵌套循环。这将提供数字和单词的所有组合。所以你会得到7x
第一个
,7x
第二个
7x
第三个
,…,3x
第一个
,3x
第二个
,依此类推。相反,请注意,当
i
为0时,您唯一关心的单词是at
j=1
。当
i
为2时,您唯一关心的单词是
j=3
。因此,从取出内部for循环开始,只使用
i+1
作为单词的索引。为了澄清:您不希望两个循环都通过数组的嵌套循环。TDG的答案有一个嵌套循环,但目的不同。@Jarrod Roberson-我不认为它是重复的,因为除了将字符串转换为int之外,这里还有另一个问题:OP以错误的方式使用嵌套循环,因此即使他以某种方式获得int,他也不会获得所需的输出。完全有道理!我忘了在我的代码中显示我正在使用
parseInt
,但不管怎样,你的回答都涵盖了它。我很快会测试的。非常感谢洛伦佐!因为两个答案都被更正了,但上面的答案是第一个,同样简洁,所以我同意了。不过我还是投了你的票。对不起,我想把你的答对,但只有一个是:|是的,我想我们几乎同时回答了。没问题:)重要的是你解决了你的问题!谢谢你的投票!:-)--完全正确。我宁愿给你,因为你的排名较低,但这就是生活。谢谢你的理解!我将很快尝试并报告。谢谢TDG,这很好用。谢谢标记为正确答案,因为它是首先提供的。