在数组列表中输入数据而不在Java中使用数组

时间:2019-02-26 14:41:58

标签: java arraylist

我在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");

      }

4 个答案:

答案 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");