我在Java方面不是很好,我正在尝试使我的代码更好。 输入句子,然后将句子拆分为单词,然后存储单词 在arraylist.after之后,我必须输入一个单词并检查该单词是否 发现到句子中。到目前为止,我已经设法做到了并且代码起作用了。 我想不使用数组就做,因为我从不使用数组 之后,所以有点多余。有没有办法让我进入 直接使用arraylist中的单词而不使用数组?
here are my codes:
public static void main(String[] args){
//the user is asked to enter a sentence
Scanner input=new Scanner(System.in);
System.out.println("enter a sentence");
String text=input.nextLine();
//the sentence is split
String[] s=text.split("[[\\s+]*|[,]*|[\\.]]");
ArrayList<String> list=new ArrayList<String>();
//the word are stored into a variable then added into the array
for(String ss:s){
list.add(ss);
}
System.out.println("enter a word");
String word=input.next();
//check if the word is in the arraylist
for(int i=0;i<list.size();i++){
if(word.equals(list.get(i))){
System.out.println("the word is found in the sentence");
System.exit(0);
}
}
System.out.println("the word is not found in the sentence");
}
答案 0 :(得分:0)
一个选择是遍历text.split()返回的数组中的所有元素。 所以:
ArrayList<String> list = new ArrayList<String>();
for(String s : text.split("[[\\s+]*|[,]*|[\\.]]")){
list.add(s);
}
答案 1 :(得分:0)
拆分字符串时创建的数组是必需的,但是可以用一行代码创建ArrayList,这将允许在运行垃圾收集器时处理该数组。
ArrayList<String> list = new ArrayList<Element>(Arrays.asList(text.split("[[\\s+]*|[,]*|[\\.]]")));
但是需要注意的重要一点是,text.split仍在创建数组。
答案 2 :(得分:0)
使用Arrays.asList(..)
根据拆分后的输入字符串创建列表。
String[] s=text.split("[[\\s+]*|[,]*|[\\.]]");
List<String> list = Arrays.asList(s);
然后只需使用List.contains(Object)
来检查输入的单词是否包含。
if(list.contains(word)){
...
}
因此最终程序将如下所示
public static void main(String[] args) {
// the user is asked to enter a sentence
Scanner input = new Scanner(System.in);
System.out.println("enter a sentence");
String text = input.nextLine();
// the sentence is split
String[] splittedSentence = text.split("[[\\s+]*|[,]*|[\\.]]");
List<String> words = Arrays.asList(splittedSentence); // the word are stored into a variable then added into the array
System.out.println("enter a word");
String word = input.next();
// check if the word is in the list
if (words.contains(word)) {
System.out.println("the word is found in the sentence");
} else {
System.out.println("the word is not found in the sentence");
}
}
答案 3 :(得分:0)
如果您真的想保留阵列本身,请查看StringTokenizer
:
new StringTokenizer(text, ", .\t\n\r");