gpt4 book ai didi

java - 开始Java接口(interface)程序收集字符串和打印

转载 作者:行者123 更新时间:2023-12-01 14:20:28 28 4
gpt4 key购买 nike

我正在尝试编写一个程序,从用户输入的扫描仪中读取所有单词,将它们放入 ArrayList 中,调用一个方法,并打印长度小于 5 的所有单词的列表。是的,我可以在单个程序中编写它,但分配的目的是使用接口(interface)和继承。我编写了一个程序,将用户输入循环到对象数组中。我编写了一个接口(interface)(这是无法更改的),并且实现了一个类,该类扫描数组中的单词并根据该单词是少于五个还是多于五个字母给出一个 boolean 值。我编写了一个方法,它从类中获取答案并创建一个新的对象 ArrayList。如果该单词少于五个字母,则将其添加到数组中。我试图将该方法调用到我的 main 中,但出现“过滤器是抽象的”“无法实例化”错误...但我的接口(interface)不是抽象的?我不知道如何解决它,它让我发疯......非常感谢任何帮助。谢谢!

public interface Filters
{
boolean accept(Object x);
//this interface cannot be changed.
}

public class SWordFilter implements Filters
{
//This is my subclass for the interface
public boolean accept(Object x)
{
String y =(String) x;
boolean accept=false;

if (y.length()< 5)
accept=true;
return accept;
}
}



import java.util.ArrayList;
import java.util.Scanner;

public class MyHomework
{
//this is my main and my method. I cannot call the method.
public static void main(String[] args)
{

ArrayList<Object> names=new ArrayList<Object>();
Scanner in=new Scanner(System.in);

int i=0;
while(i<5)
{
System.out.println("Enter the words");
names.add(in.next());
i++;
}
Filters tran= new Filters(names);
Object result=collectAll(names,tran);
}


public static ArrayList<Object> collectAll (ArrayList<Object> list, Filters f)

{
ArrayList<Object> result= new ArrayList<Object>();

for (int x=0; x<5; x++)
{
if (f.accept(list.get(x)))
{
result.add(list.get(x));
}
else
{
System.out.print("the word is too long");
}
//SWordFilter julie= new SWordFilter();
//System.out.print(julie.accept(names.get(j)));
}
return result;
}
}

最佳答案

问题出在这一行

Filters tran= new Filters(names);

由于Filters是一个接口(interface),而接口(interface)抽象类无法实例化,只能声明它(分配它)用于获取对象的内存。

所有成员函数(方法)都是抽象的,但您可以将其分配给实现此接口(interface)的类之一的新对象:

Filters tran = new SWordFilter();

理解这样的接口(interface):

您有一些类需要有一个基类,例如 java.util.Listjava.util.ArrayListjava 的基类.util.LinkedList,您无法实例化 List,但可以将其分配给 ArrayListLinkedList,因为摘要是专门设计的为了不被实例化,它们具有某些类的共同行为。

关于java - 开始Java接口(interface)程序收集字符串和打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17624404/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com