方法不能应用于给定类型。希望得到帮助
Posted
技术标签:
【中文标题】方法不能应用于给定类型。希望得到帮助【英文标题】:Method cannot be applied to given types. Hope for assistance 【发布时间】:2013-10-07 05:57:59 【问题描述】:我对@987654322@ 还很陌生,我正在使用BlueJ
。我不断收到错误:
method find in class Catalog cannot be applied to given types;
required: int
found: Item
reason: actual argument Item cannot be converted to int by method invocation conversion
我很困惑,不知道如何解决这个问题。希望有人可以帮助我。提前谢谢你。
这是我的 Program2 课程:
import java.util.*;
public class Program2
public static void main(String[] args)
Scanner kbd = new Scanner(System.in);
Catalog store = new Catalog(3);
int itemnum;
Item item;
try
store.insert
(new Music(1111, "Gold", 12.00, "Abba"));
store.insert
(new Movie(2222, "Mamma Mia", 16.00, "Meryl Streep"));
store.insert
(new Book(3333, "DaVinci Code", 8.00, "Dan Brown"));
store.insert
(new Music(4444, "Legend", 15.00, "Bob Marley"));
catch (CatalogFull exc)
System.out.println(exc);
// Insert code here to perform a sequence of
// interactive transactions with the user.
// The user enters an item number and the program
// either displays the item or prints an error message
// if the item is not found. The program terminates
// when the user enters zero as the item number.
while (!item.equals("0"))
itemnum = store.find(item); //Getting error on ".find"
if (itemnum != null)
System.out.print(itemnum);
else
System.out.printf("%s was not found.%n", item);
System.out.println();
System.out.print("Player (0 to exit)? ");
item = kbd.next();
作为参考,这里也是class Catalog
:
public class Catalog
private Item[] list;
private int size;
// Construct an empty catalog with the specified capacity.
public Catalog(int max)
list = new Item[max];
size = 0;
// Insert a new item into the catalog.
// Throw a CatalogFull exception if the catalog is full.
public void insert(Item obj) throws CatalogFull
if (list.length == size)
throw new CatalogFull();
list[size] = obj;
++size;
// Search the catalog for the item whose item number
// is the parameter id. Return the matching object
// if the search succeeds. Throw an ItemNotFound
// exception if the search fails.
public Item find(int id) throws ItemNotFound
for (int pos = 0; pos < size; ++pos)
if (id == list[pos].getItemNumber())
return list[pos];
throw new ItemNotFound(id);
【问题讨论】:
您尝试将Item
设为int
,那么Item
的定义在哪里?我确定它应该类似于 store.find(item.getId())
或 store.find(item.id)
Constructor in class cannot be applied to given types. Hope for assistance 的可能重复项
@SubirKumarSao 我有点不同意。两者都是不同的问题:)
【参考方案1】:
你的find()
方法签名在这里
public Item find(int id) throws ItemNotFound
接收 int 作为参数。但是您传递的是 Item
对象
itemnum = store.find(item);
你只需要反转它
item= store.find(itemnum);
意思是
item
是通过 ID 为 itemnum
的查找分配的,因为您的查找方法返回 Item
对象。
【讨论】:
【参考方案2】:将itemnum = store.find(item)
更改为item = store.find(itemnum)
。
【讨论】:
以上是关于方法不能应用于给定类型。希望得到帮助的主要内容,如果未能解决你的问题,请参考以下文章
错误:类 SpotsDialog 中的构造函数 SpotsDialog 不能应用于给定类型;
接口 java.util.stream.Stream<T> 中的方法映射不能应用于给定类型;
firebasex 错误:类 Builder 中的构造函数 Builder 不能应用于给定类型
android:如何修复类 CardsActivity.CardPagerAdapter 中的错误构造函数 CardPagerAdapter 不能应用于给定类型