通过命令行字符串循环打印出单词

时间:2014-03-02 17:24:40

标签: java string for-loop command-line-arguments

我必须在命令行中循环一个字符串,例如(java Lab2“HELLO WORLD”)并使用循环打印出子串[HELLO]和[WORLD]。这是我到目前为止所拥有的。

public static void main(String argv[])
{
    if (argv.length() == 0)
    {
        System.out.println("Type in string");
    }

    String Input = argv[0];
    String sub;

    for (int end = 0; end < Input.length(); end++)
    {
        end = Input.indexOf(' ');
        sub = Input.substring(0, end);
        System.out.println("sub = [" + sub + "]");


        if(end > 0)
        {   
            int start = end +1;
            end = Input.indexOf(' ');  
            sub = Input.substring(start,end);
            System.out.println("sub = [" + sub + "]");
        }
    }
}
}

输入中的第一个单词将打印出来。然后,我将获得一个无限循环或我将抛出一个索引数组超出边界异常。例外是指for循环中的if语句。

3 个答案:

答案 0 :(得分:0)

通过尝试自己拆分字符串,您似乎过于复杂了。 像Java这样的大多数编程语言都有一个split()函数,它会将一个字符串拆分成一个数组,在该字符串中,它会看到某个子字符串(在您的情况下为" ")。然后,您可以使用foreach语句来遍历此数组。在Java中,foreach就像:

for (String current : String[] array) { }

对于拆分,你需要做:

String[] elements = Input.split(" ");

总而言之,你可以这样做:

String[] elements = Input.split(" ");

for (String sub : elements) {
    System.out.println("sub = [" + sub + "]");
}

答案 1 :(得分:0)

在行中,

int start = end + 1;

if(end> 0){

如果start是6,那么end将是5 ..然后 Input.sub字符串(6,5)肯定是错误的,因为起始索引应始终小于结束索引,反之亦然

答案 2 :(得分:0)

这是一种方法:

if (argv.length == 0) // Length it not a method
{
    System.out.println("Type in string");
    return; // the code should be stopped when it happens
}

String input = argv[0];// Avoid use this kind of name

int idx;
int lastIndex = 0;

// indexOf returns the index of the space
while ((idx = input.indexOf(' ', lastIndex)) != -1)
{
    System.out.println("[" + input.substring(lastIndex, idx) + "]");
    lastIndex = idx + 1;
}

System.out.println("[" + input.substring(lastIndex, input.length()) + "]");

我使用indexOf来知道字符串中每个空格的索引..最后一行是必需的,因为它无法找到最后一个单词。 解决它的一种方法是:

if (argv.length == 0) // Length it not a method

{
    System.out.println("Type in string");
    return; // the code should be stopped when it happens
}

String input = argv[0] + " ";// Avoid use this kind of name

int idx;
int lastIndex = 0;

// indexOf returns the index of the space
while ((idx = input.indexOf(' ', lastIndex)) != -1)
{
    System.out.println("[" + input.substring(lastIndex, idx) + "]");
    lastIndex = idx + 1;
}

我想你注意到+ " ";

中的input