繁体   English   中英

使用Android Java的java.lang.NullPointerException

[英]java.lang.NullPointerException with Android Java

显然问题在于第62行。如果您对第63行进行评论,依此类推。 我也试过一个非数组,它的工作原理。

我看不出任何变量也是无效的。 Logcat说问题是: java.lang.NullPointerException

到目前为止,这是我的代码:

package com.zxz.zxcdnd;

import java.util.Random;
import android.os.Bundle;
import android.app.Activity;
import android.widget.*;

public class MainActivity extends Activity
{

    //Player statistics
    int playerStatistics[];

    //Room statistics
    String roomStatistics[];
    int type = 1;

    //Player inventory
    int inventorySlot = 1;
    int playerInventoryNumbers[];
    String playerInventoryNames[];
    String playerInventoryAffectedStats[];

    //Index representation variables
    int name = 1,roomsConquered = 2,goldCoins = 3,stamina = 4,damage = 5,luck = 6,difficulty=3;

    //Random generator
    Random r = new Random();
    int dice;

    //List of available items
    int itemNumbers[] = {1,1,2,2,3,3,4,4,5,5};

    String itemAffectedStats[] = {"stamina","damage",
                                  "luck","damage",
                                  "stamina","damage",
                                  "damage","luck",
                                  "damage","stamina"};

    String itemNames[] = {"lemon","app",
                                   "ist","Bms",
                                   "Hateech","Lasacsyrup",
                                   "Picagger","Hompa",
                                   "Bori","Offipenser"};

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Initialize important player variables
        startUp();

        //Create room
        initializeRoom();
    }

    void startUp()
    {
        //Initialize stamina, damage and luck
        playerStatistics[stamina] = r.nextInt(7-1) + 1; //LINE 62
        playerStatistics[damage] = r.nextInt(7-1) + 1; //LINE 63
        playerStatistics[luck] = r.nextInt(7-1) + 1;

        //Initialize player inventory
        playerInventoryNumbers[inventorySlot] = itemNumbers[r.nextInt(11-1) + 1];
        playerInventoryNames[inventorySlot] = itemNames[r.nextInt(11-1) + 1];
        playerInventoryAffectedStats[inventorySlot] = itemAffectedStats[r.nextInt(11-1) + 1];

        playerStatistics[damage] = playerStatistics[damage] + playerInventoryNumbers[inventorySlot];
        inventorySlot++;
    }

提前致谢! 我欠了很多。

你声明但没有初始化你的playerStatistics数组,所以它是null 尝试将其声明为:

int playerStatistics[] = new int[7];

或者比你最大的索引多一个。

您将需要执行与其他阵列类似的操作,这些阵列似乎也未初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM