我在尝试根据这些指令编写方法时出现了不兼容的类型错误:“一个采用int参数的方法,并在屏幕上显示Cat的详细信息(姓名,出生年份等)存储在该索引位置。此方法必须确保参数是有效的索引位置,如果不是则显示错误消息。“ (程序中有两个相互使用的类别)。我已经评论了下面我收到错误的地方。我将不胜感激。感谢。
import java.util.ArrayList;
public class Cattery
{
// instance variables - replace the example below with your own
private ArrayList <Cat> cats;
private String businessName;
/**
* Constructor for objects of class Cattery
*/
public Cattery(String NewBusinessName)
{
cats = new ArrayList <Cat>();
NewBusinessName = businessName;
}
public void addCat(Cat newCat){
cats.add(newCat);
}
public void indexDisplay(int index) {
if((index >= 0) && (index <= cats.size()-1)) {
index = cats.get(index); //incompatible types?
System.out.println(index);
}
else{
System.out.println("Invalid index position!");
}
}
public void removeCat(int indexremove){
if((indexremove >= 0) && (indexremove <= cats.size()-1)) {
cats.remove(indexremove);
}
else{
System.out.println("Invalid index position!");
}
}
public void displayNames(){
System.out.println("The current guests in Puss in Boots Cattery:");
for(Cat catNames : cats ){
System.out.println(catNames.getName());
}
}
}
答案 0 :(得分:2)
因为你已经定义了这样的猫:
cats = new ArrayList <Cat>();
这将返回位置index
的猫:
cats.get(index);
但是您已将index定义为int并为其分配了一只猫:
index = cats.get(index);
从列表中获取项目的正确方法是:
Cat cat = cats.get(index);
要打印检索到的猫的名称,只需运行:
System.out.println(cat.getName());
答案 1 :(得分:2)
本声明中的问题:
index = cats.get(index);
cats.get(index)返回一个cat对象。其中index是int类型。 cat对象不能分配给int类型变量。因此它显示类型不兼容。
一种解决方案是:
Cat cat = cats.get(index);
要打印上述语句返回的cat,您可以覆盖Cat类中的toString()
执行以下操作:
public String toString()
{
return "cat name: " + this.getName();
}
在您的Cattery类中打印Cat的信息,请使用以下声明
System.out.println(cat);
答案 2 :(得分:1)
cats.get()
返回Cat
,您尝试将结果分配给int
:
index = cats.get(index); //incompatible types?
目前还不清楚该功能的用途是什么,但您可以将cats.get()
的结果存储起来:
Cat cat = cats.get(index);
答案 3 :(得分:1)
好的,所以在这一行:
index = cats.get(index);
你期待什么 cats.get(index)
返回? cats
的类型为ArrayList<Cat>
- 因此您应找到ArrayList<E>
的文档,然后导航到get
方法,并看到它的声明如下:
public E get(int index)
因此,在ArrayList<Cat>
中,get
方法将返回Cat
。
所以你想要:
Cat cat = cats.get(index);
答案 4 :(得分:0)
声明
index = cats.get(index);
将返回Cat项,它不会返回int值 这里你将Cat项目分配给int类型,以便获得正确的输出u hava change code as
Cat cat=cats.get(index);