0

次の手順に基づいてメソッドを作成しようとすると、互換性のないタイプのエラーが発生します。「intパラメータを受け取り、そこに保存されている猫の詳細(名前、生年月日など)を画面に表示するメソッドインデックス位置。このメソッドは、パラメータが有効なインデックス位置であることを確認し、有効でない場合はエラーメッセージを表示する必要があります。」(プログラムには、相互に使用する2つのクラスがあります)。以下のエラーが発生している場所についてコメントしました。助けていただければ幸いです。ありがとう。

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());

 }
 }
 }
4

5 に答える 5

2

次のように猫を定義したためです。

 cats = new ArrayList <Cat>();

これは位置の猫を返しindexます:

cats.get(index);

しかし、インデックスを int として定義し、それに cat を割り当てています。

 index = cats.get(index);

リストからアイテムを取得する正しい方法は次のとおりです。

Cat cat = cats.get(index);

取得した猫の名前を表示するには、次のコマンドを実行するだけです:

System.out.println(cat.getName());
于 2013-03-04T09:05:14.150 に答える
2

このステートメントの問題:

index = cats.get(index);

cats.get(index) は猫オブジェクトを返します。index は int 型です。cat オブジェクトは int 型の変数に代入できません。したがって、Types Incompatible が表示されます。

1つの解決策は、これを行うことです:

Cat cat = cats.get(index);

上記のステートメントによって返された猫を出力するには、 Cat クラスでtoString()をオーバーライドできます

以下をせよ :

public String toString()
{
    return "cat name: " + this.getName();
}

Catter クラスの Cat の情報を出力するには、以下のステートメントを使用します

System.out.println(cat);
于 2013-03-04T09:05:56.850 に答える
1

cats.get()を返しCat、結果をに代入しようとしていますint:

    index = cats.get(index);                       //incompatible types?

関数の目的が不明ですが、次のcats.get()ように結果を保存できます。

    Cat cat = cats.get(index);
于 2013-03-04T09:05:20.133 に答える
1

さて、この行では:

index = cats.get(index);      

あなたは何を返すことを期待していますか? はタイプです - したがって、 のドキュメントを見つけてからメソッドに移動し、次のように宣言されていることを確認してください。cats.get(index)catsArrayList<Cat>ArrayList<E>get

public E get(int index)

したがってArrayList<Cat>getメソッドは を返しCatます。

あなたが望んでいるのは:

Cat cat = cats.get(index);
于 2013-03-04T09:05:59.300 に答える
0

ステートメント

 index = cats.get(index);

Catアイテムを返します。ここではint値を返しません。Catアイテムをint型に割り当てているため、正しい出力を取得するためにコードを次のように変更します

Cat cat=cats.get(index);
于 2013-03-04T09:11:30.073 に答える