1

ArrayList を返そうとしていますが、最後にエラーが発生します: シンボルが見つかりません。リストにいくつかの Strings と Doubles を追加し、それを呼び出したものに戻しています。

エラー:

./Sample.java:55: error: cannot find symbol
        return placeMatch;
               ^
  symbol:   variable placeMatch
  location: class Sample
1 error

try catch について言及されていることを考慮して、宣言ステートメントを一番上に移動すると、次のようになります。

./Sample.java:54: エラー: 互換性のない型が placeMatch を返します。^ 必須: 見つかった文字列: ArrayList

実際のコード:

import java.util.ArrayList;
//...other imports

public class Sample
  extends UnicastRemoteObject
  implements SampleInterface {



    public Sample() throws RemoteException {

    }

    public String invert(String city, String state) throws RemoteException {
        try{


 ArrayList<Object> placeMatch = new ArrayList<Object>();
        // Read the existing address book.
        PlaceList place =
        PlaceList.parseFrom(new FileInputStream("places-proto.bin"));

        // Iterates though all people in the AddressBook and prints info about them.

        for (Place Placeplace: place.getPlaceList()) {
        //System.out.println("STATE: " + Placeplace.getState());
            if(Placeplace.getName().startsWith(city)){
                placeMatch.add(Placeplace.getName());
                placeMatch.add(Placeplace.getState());
                placeMatch.add(Placeplace.getLat());
                placeMatch.add(Placeplace.getLon());
                break;
            }


          }

        }catch(Exception e){
               System.out.println("opening .bin failed:" + e.getMessage());
        }
        return placeMatch;
    }

}

4

2 に答える 2

8

次のことを宣言する必要があります。

ArrayList<Object> placeMatch = new ArrayList<Object>();

try ブロックの外側。

2 番目の質問:

メソッドの戻り値の型はString. 返品はできませんArrayList<Object>

解決策は、何をする必要があるかによって異なります。戻り値の型を変更できます:

public List<Object> invert(String city, String state) throws RemoteException {
于 2013-10-31T14:21:58.393 に答える
1

パラメータ placeMatch は、try ブロックでのみ表示されます。したがって、このパラメーターを初期化して try ブロックで宣言する場合は、このパラメーターを try ブロックの下部で返し、catch ブロックで null または何かを返す必要があります。しかし!可能であれば、このパラメーターを try ブロックの外側でインスタンス変数として宣言してください。

于 2013-10-31T14:25:08.947 に答える