我必须在命令行中循环一个字符串,例如(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语句。
答案 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