这是我正在从事的项目的一些基本代码的片段:
System.out.println("ENter a paragraph:")
String input = sc.next();
String[] ArrayIn = new String[100];
ArrayIn = input.split("\\.");
然后我使用ArrayIn [i]进行基本的for循环。
for (int i = 0; i < ArrayIn.length; i++) {
System.out.println(ArrayIn[i]);
}
但是句子上的任何内容,例如我喜欢肉。我喜欢牛肉会打印出我喜欢肉,然后给我一个错误。我只是一个初学者,所以我不知道Java的所有内容。你能给我一个简单的解释吗?谢谢。
答案 0 :(得分:1)
更改您的for loop
,使用此
// split phrases by '.'
String[] sentences= input.split("\\.");
for(int i = 0; i < sentences.length; i++) {
System.out.println(sentences[i]);
}
您的问题是您正在使用sc.next()
。这意味着,当您的输入为hello world. bye
时,它将把它当作3个不同的输入,并用空格['hello', 'world.', 'bye']
隔开。您应该改用sc.nextLine()
。那么完整的代码将是
Scanner sc = new Scanner(System.in);
System.out.println("ENter a paragraph:");
String input = sc.nextLine();
String[] sentences = input.split("\\.");
for (int i = 0; i < sentences.length; i++) {
System.out.println(sentences[i]);
}
答案 1 :(得分:0)
代码中唯一的问题是这一行:
String input = sc.next();
应更改为:
String input = sc.nextLine();
因为您想分割整行。
这些行:
String[] ArrayIn = new String[100];
ArrayIn = input.split("\\.");
不产生任何错误,但可以合并到:
String[] ArrayIn = input.split("\\.");
所以我看不到为什么您发布的代码有任何错误。
也许这不是全部代码。
答案 2 :(得分:0)
next()只能读取输入,直到空格为止。它无法读取两个用空格隔开的单词。另外,next()在读取输入后将光标置于同一行。
nextLine()读取包含单词之间的空格的输入(即,读取直到\ n行的末尾)。读取输入后,nextLine()会将光标置于下一行。
这就是为什么使用: sc.nextLine()