Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在另一个java类中调用数组列表_Java_Arrays_Arraylist_Return - Fatal编程技术网

如何在另一个java类中调用数组列表

如何在另一个java类中调用数组列表,java,arrays,arraylist,return,Java,Arrays,Arraylist,Return,我需要编写一个代码来检查数组列表中的所有单词,并告诉我其中有多少具有特定长度。我知道如何做到这一点,但我不知道如何使ArrayList在第二个类中读取,以便在程序中应用它 MAIN import java.util.Scanner; class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); java.util.ArrayList myList = new

我需要编写一个代码来检查数组列表中的所有单词,并告诉我其中有多少具有特定长度。我知道如何做到这一点,但我不知道如何使
ArrayList
在第二个类中读取,以便在程序中应用它

MAIN

import java.util.Scanner;
class Main {
  public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    java.util.ArrayList myList = new java.util.ArrayList();
    myList.add("cat");
    myList.add("mouse");
    myList.add("frog");
    myList.add("dog");
    myList.add("dog");
    int len = in.nextInt();
    WordList wl = new WordList();
    wl.numWordsOfLength(len);
  }
}
二等舱

public class WordList{
  public int numWordsOfLength(int len){
    int count = 0;
    for(int i=0;i<len;i++){

      if(((String)myList.get(i)).length()==len){
        count++;
      }
    }
    return count;
  }
}
公共类单词列表{
公共整数长度(整数长度){
整数计数=0;

对于(int i=0;i您需要将列表作为参数传递:

  public int numWordsOfLength(int len, List<String> myList){
    int count = 0;
    for(int i=0;i<myList.size;i++){

      if((myList.get(i)).length()==len){
        count++;
      }
    }
    return count;
  }
侧节点,而不是:

    java.util.ArrayList myList = new java.util.ArrayList();
只要做:

   import java.util.List;
   ....
   List<String> myList = new ArrayList();
import java.util.List;
....
List myList=new ArrayList();
完整运行示例:

public class Test {

    public static class WordList{

        private final List<String> myList;
        WordList(List<String> myList){
            this.myList = myList;
        }
        public int numWordsOfLength(int len){
            int count = 0;
            for (String s : myList) {
                if (s.length() == len) {
                    count++;
                }
            }
            return count;
        }
    }


        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            List<String> myList = new ArrayList<>();
            myList.add("cat");
            myList.add("mouse");
            myList.add("frog");
            myList.add("dog");
            myList.add("dog");
            int len = in.nextInt();
            WordList wl = new WordList(myList);
            System.out.println(wl.numWordsOfLength(len));
        }
}
公共类测试{
公共静态类词表{
私人最终名单;
单词列表(列表myList){
this.myList=myList;
}
公共整数长度(整数长度){
整数计数=0;
for(字符串s:myList){
如果(s.length()==len){
计数++;
}
}
返回计数;
}
}
公共静态void main(字符串[]args){
扫描仪输入=新扫描仪(系统输入);
List myList=new ArrayList();
myList.添加(“cat”);
myList.add(“鼠标”);
myList.添加(“青蛙”);
我的列表。添加(“狗”);
我的列表。添加(“狗”);
int len=in.nextInt();
单词列表wl=新单词列表(myList);
系统输出打印长度(wl.numWordsOfLength(len));
}
}

这取决于你对“第二课堂阅读”的理解

我的猜测是,您希望第二个类将“myList”作为私有变量,这样,当您调用numWordsOfLength()函数时,代码就可以工作了

为此,您应该将构建的数组作为依赖项传递给WordList。通常有两种方法为对象提供依赖项。创建对象时(基于构造函数)或稍后通过调用方法(setters)

因此,总体而言,您的目标是:

WordList wl = new WordList();
wl.setList(myList)
wl.numWordsOfLength(len);
或:

无论哪种方式,您都必须在WordList中添加“myList”变量,然后通过单独的setter方法(setList)或构造函数本身公开它

在这种情况下,我更喜欢构造函数,因为类“WordList”的名称意味着它是一个事物列表,因此应该封装它本身

i、 e

公共类单词列表{
私人名单;
公共单词列表(单词列表){
this.myList=listOfWords;
}
公共整数numWordsOfLength。。。。
}

如果使用Java 8+,则根本不需要第二个类:

    ...
    java.util.ArrayList<String> myList = new java.util.ArrayList();
    myList.add("cat");
    myList.add("mouse");
    myList.add("frog");
    myList.add("dog");
    myList.add("dog");
    int len = in.nextInt();
    int count = myList.stream().map(String::length).filter(c->c==len).count(); <--that's your answer
    ...
WordList wl = new WordList(myList);
wl.numWordsOfLength(len);
public class WordList{

  private List<String> myList;

  public WordList(List<String> listOfWords) {
    this.myList = listOfWords;
  }
  
  public int numWordsOfLength....
}
    ...
    java.util.ArrayList<String> myList = new java.util.ArrayList();
    myList.add("cat");
    myList.add("mouse");
    myList.add("frog");
    myList.add("dog");
    myList.add("dog");
    int len = in.nextInt();
    int count = myList.stream().map(String::length).filter(c->c==len).count(); <--that's your answer
    ...
 public int numWordsOfLength(int len, List<String> list){
    int count = 0;
    for(int i=0;i<list.size();i++){
      if(list.get(i).length()==len){
        count++;
      }
    }
    return count;
  }