对于我的Java作业,我需要创建一个返回字符串中第一个单词的脚本,作为第二部分,我还需要返回第二个单词。我目前正在开发第一部分,我想我已经接近了,但我也想知道我是否过度复杂化了我的代码。
public static void statements(){
Scanner userInput = new Scanner(System.in);
char [] sentenceArray;
String userSentence;
char sentenceResult;
System.out.print("Enter a complete sentence: ");
userSentence = userInput.nextLine();
for(int x = 0; x < userSentence.length(); x++){
sentenceResult = userSentence.charAt(x);
sentenceArray = new char[userSentence.length()];
sentenceArray[x] = sentenceResult;
if(sentenceArray[x] != ' '){
System.out.print(sentenceArray[x]);
//break; This stops the code at the first letter due to != ' '
}
}
}
我想我差不多了。目前,我需要工作的是,一旦识别出存在空间,就会退出for循环,但无论如何都打印出整个消息。我只是好奇这是否可以做得更简单一些,也许还有一些我可以做的事情,或者如何完成。
编辑:我能够通过使用split方法完成任务。这就是它现在的样子
public static void statements(){
Scanner userInput = new Scanner(System.in);
String userSentence;
System.out.print("Enter a complete sentence: ");
userSentence = userInput.nextLine();
String [] sentenceArray = userSentence.split(" ");
System.out.println(sentenceArray[0]);
System.out.println(sentenceArray[1]);
}
}
答案 0 :(得分:1)
就个人而言,我认为你是在思考它。为什么不读取整行并用空格分割字符串?这不是一个完整的解决方案,只是建议你如何获得这些词语。
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter a complete sentence: ");
try {
String userSentence = reader.readLine();
String[] words = userSentence.split(" ");
System.out.println(words[0]);
System.out.println(words[1]);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
答案 1 :(得分:1)
由于这是你的作业,我觉得很难给你代码并为你解决。
似乎你真的过于复杂,而且你知道,所以这是好兆头。
我需要创建一个返回字符串中第一个单词的脚本, 而且,作为第二部分,我还需要返回第二个单词
所以,你有一个String
个对象,然后检查一下该类的 methods 。
可以用2行代码解决它,但是:
split
为你的字符串space
string
后,你应该得到一个数组,只需要first
second
元素来访问数组{/ 1}}就足够了答案 2 :(得分:0)
以下是我的表现。为什么不返回所有字样?
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* Add something descriptive here.
* User: MDUFFY
* Date: 8/31/2017
* Time: 4:58 PM
* @link https://stackoverflow.com/questions/45989774/am-i-over-complicating-a-simple-solution
*/
public class WordSplitter {
public static void main(String[] args) {
for (String arg : args) {
System.out.println(String.format("Sentence: %s", arg));
List<String> words = getWords(arg);
System.out.println(String.format("# words : %d", words.size()));
System.out.println(String.format("words : %s", words));
}
}
public static List<String> getWords(String sentence) {
List<String> words = new ArrayList<>();
if ((sentence != null) && !"".equalsIgnoreCase(sentence.trim())) {
sentence = sentence.replaceAll("[.!?\\-,]", "");
String [] tokens = sentence.split("\\s+");
words = Arrays.asList(tokens);
}
return words;
}
}
当我在命令行上使用此输入运行它时:
"The quick, agile, beautiful fox jumped over the lazy, fat, slow dog!"
这是我得到的结果:
Sentence: The quick, agile, beautiful fox jumped over the lazy, fat, slow dog!
# words : 12
words : [The, quick, agile, beautiful, fox, jumped, over, the, lazy, fat, slow, dog]
Process finished with exit code 0