-1

私はアプリケーションを開発しようとしています..以下はスニペットです

class metro_nodes {
public String station;
public GeoPoint point; }

public class mainscreen extends MapActivity {
/** Called when the activity is first created. */

MapController controller;
double latitude,longitude;
LocationManager loc;
Location lastknownloc;
LocationListener loclistener;
List<GeoPoint> geopoints = new ArrayList<GeoPoint>();
MapView mapView;
private LinkedList<metro_nodes> station_location = new LinkedList<metro_nodes>();
metro_nodes anand_nagar;
anand_nagar.station = "anand_nagar";
    }

最後から 2 番目の行で、「トークン "駅" の構文エラー、このトークンの後に VariableDeclaratorId が必要です」と表示されます。

このステートメントを中括弧で囲むと、エラーが削除されます..しかし、Java lang nullポインタ例外が発生します...問題は何ですか??

4

3 に答える 3

1

そこにクラスフィールド宣言があり、最後から2番目の行は、変数宣言セクションに属していないステートメントです。メソッド/コンストラクターの一部として実行する必要があります。

中括弧で囲むと、実際にはクラス初期化ブロックが作成されますが、インスタンスを割り当てる前にanand_nagar変数にアクセスしようとすると、NPEになります。オースティンは正しいです-あなたはいくつかの基本的なJavaプログラミングの知識を欠いているようです、それでおそらくあなたは最初にいくつかのJavaチュートリアルから始めるべきです:http://docs.oracle.com/javase/tutorial/

于 2012-06-16T20:26:11.973 に答える
0

ヌルポインターの有効期限は、変数anand_nagarのmetro_nodesのインスタンスをnewを使用して作成していないためです。

metro_nodes anand_nagar;
anand_nagar = new metro_nodes();//<----------------need this line to avoid NPE 
anand_nagar.station = "anand_nagar";

また、クラス名はJavaのMetroNodeのようにする必要があるなどの標準にも従ってください。

public class MainScreen extends MapActivity {


    private MapController mController;
    private double mLatitude,mLongitude;
    private LocationManager mLoc;
    private Location mLastknownloc;
    private LocationListener mLoclistener;

    private MapView mMapView;
    private LinkedList<MetroNode> mStationLocations;
    MetroNode mAnandNagar;


    //in general we use cunstructor for initliaztion but in android we usesonCreate
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // ..other code ..............

        List<GeoPoint> geoPoints = new ArrayList<GeoPoint>();
        mStationLocations = new LinkedList<MetroNode>();
        mAnandNagar = new MetroNode();
        mAnandNagar.setStation("anand_nagar");
    }
}

class MetroNode {
    private  String station;
    private  GeoPoint point;

    public MetroNode(){
        super();    
    }

    public MetroNode(String station, GeoPoint point) {
        super();
        this.station = station;
        this.point = point;
    }

    public String getStation() {
        return station;
    }
    public void setStation(String station) {
        this.station = station;
    }
    public GeoPoint getPoint() {
        return point;
    }
    public void setPoint(GeoPoint point) {
        this.point = point;
    }




}
于 2012-06-16T20:23:19.663 に答える
0

構文エラーを与えるコードを投稿していません...しかし、「metro_nodes」オブジェクトを初期化したことがないため、nullポインター例外が発生していると思います。

例えば:

// This is a helper class
class MetroNode {
  public String station;
  public GeoPoint point; 

  public MetroNode (String station, GeoPoint point) {
    this.station = station;
    this.point = point;
  }
}

// This is the module's main class
public class MainScreen extends MapActivity {

  // This is public and private data for each class instance
  private LinkedList<MetroNode> station_location = null;

  // This is the activity's initialization
  public void onCreate(Bundle savedInstanceState) 
    station_locations = new LinkedList<MetroNode>();
    MetroNode metroNode = new MetroNode ("anand_nagar", new GeoPoint (1.00, 2.00));
    station_locations.add (metroNode);
  ...
于 2012-06-16T20:27:23.577 に答える